Table of contents
  1. ClientApi
    1. Constructors
      1. global ClientApi()
        1. Example
    2. Fields
      1. global documentLibraryIdstring
      2. global enforceSecurityboolean
      3. global namedCredentialNamestring
      4. global objectSettingsLabelstring
      5. global sharepointSiteIdstring
    3. Methods
      1. global Boolean copyItem(string itemId, string parentFolderId)
      2. global Boolean copyItem(string itemId, string parentFolderId, string destLibraryId)
      3. global Boolean copyItem(string itemId, string parentFolderId, string destLibraryId, string newFileName)
        1. Parameters
        2. Returns
        3. Example
      4. global SharePointFileInfo createFolder(string parentFolderId, string folderName)
        1. Parameters
        2. Returns
        3. Example
      5. global String createSharingLink(String itemId)
      6. global String createSharingLink(String itemId, String type)
      7. global String createSharingLink(String itemId, String type, DateTime expirationDateTime)
      8. global String createSharingLink(String itemId, String type, DateTime expirationDateTime, String password)
      9. global String createSharingLink(String itemId, String type, DateTime expirationDateTime, String password, String scope)
      10. global String createSharingLink(String itemId, String type, DateTime expirationDateTime, String password, String scope, List<string> recipients)
        1. Parameters
        2. Returns
        3. Example
      11. global SharePointFileInfo createURLFile(string parentFolderId, string itemId)
        1. Parameters
        2. Returns
        3. Example
      12. global SharePointFileInfo createURLFile(string parentFolderId, string fileName, string url)
        1. Parameters
        2. Returns
        3. Example
      13. global Boolean deleteItem(string itemId)
        1. Parameters
        2. Returns
        3. Example
      14. global ContentVersion downloadFile(string fileId)
        1. Parameters
        2. Returns
        3. Example
      15. global List<SharePointDocumentLibrary> getDocumentLibraries()
        1. Returns
        2. Example
      16. global string getDocumentLibraryRootFolderId()
        1. Returns
        2. Example
      17. global String getDownloadLink(string fileId)
        1. Parameters
        2. Returns
        3. Example
      18. global list<SharePointFileInfo> getFolderContents(string folderId, Boolean getNextPage)
        1. Parameters
        2. Returns
        3. Example
      19. global SharePointFileInfo getItemById(string itemId)
        1. Parameters
        2. Returns
        3. Example
      20. global SharePointFileInfo getItemByPath(string path)
        1. Parameters
        2. Returns
        3. Example
      21. global SharePointUrlResponse getItemBySharePointURL(string sharePointUrl)
        1. Parameters
        2. Returns
        3. Example
      22. global SharePointFileInfo getItemIdByGuid(string guid)
        1. Parameters
        2. Returns
        3. Example
      23. global string getItemPreviewUrl(string itemId)
        1. Parameters
        2. Returns
        3. Example
      24. global string getListItemIdFromLibraryId(string libraryId)
        1. Parameters
        2. Returns
        3. Example
      25. global List<SharePointSite> getSites()
        1. Returns
        2. Example
      26. global List<SharePointSite> getSites(string hostname)
        1. Parameters
        2. Returns
        3. Example
      27. global string getUploadSessionURL(string destinationFolderId, string fileName, boolean replaceFile)
        1. Parameters
        2. Returns
        3. Example
      28. global boolean morePagesAvailable()
        1. Returns
        2. Example
      29. global SharePointFileInfo moveItem(string itemId, string parentFolderId)
        1. Parameters
        2. Returns
        3. Example
      30. global SharePointFileInfo renameFile(string fileId, string newName)
        1. Parameters
        2. Returns
        3. Example
      31. global List<SharePointFileInfo> searchForItems(string searchTerm)
      32. global List<SharePointFileInfo> searchForItems(string searchTerm, string folderId, boolean searchSubfolders)
        1. Parameters
        2. Returns
        3. Example
      33. global SharepointFileInfo setupFolder(string recordId, string parentFolderId, string objectSettingsLabel)
      34. global SharepointFileInfo setupFolder(string recordId, string parentFolderId, string objectSettingsLabel, string conflictBehavior)
        1. Parameters
        2. Returns
        3. Example
      35. global SharePointFileInfo updateCustomFields(string fileId, Map<String,String> customFields)
        1. Parameters
        2. Returns
        3. Example
      36. global SharePointFileInfo uploadFile(string parentFolderId, string fileName, Blob fileContents)
      37. global SharePointFileInfo uploadFile(string parentFolderId, string fileName, Blob fileContents, string recordId, map<string,string> customFields)
      38. global SharePointFileInfo uploadFile(string parentFolderId, string fileName, Blob fileContents, string recordId, map<string,string> customFields, string conflictBehavior)
        1. Parameters
        2. Returns
        3. Example
      39. global SharePointFileInfo uploadLargeFile(string parentFolderId, string fileName, string documentVersionId)
      40. global SharePointFileInfo uploadLargeFile(string parentFolderId, string fileName, string documentVersionId, string recordId, map<string,string> customFields)
      41. global SharePointFileInfo uploadLargeFile(string parentFolderId, string fileName, string documentVersionId, string recordId, map<string,string> customFields, Boolean autodelete)
      42. global SharePointFileInfo uploadLargeFile(string parentFolderId, string fileName, string documentVersionId, string recordId, map<string,string> customFields, Boolean autodelete, Boolean replaceFile)
        1. Parameters
        2. Returns
        3. Example
      43. global void writeDebugInfo()
        1. Example
    4. Classes
      1. clientApiException

ClientApi

This class allows a Salesforce Developer to leverage the sFiles application to code custom behavior. The API allows the developer to create, delete and update metadata fields for files and folders.

Constructors

global ClientApi()

Initializes the class. This class is only available to organizations with the API Access permission enabled. All method in the ClientApi class require that namedCredentialName, sharepointSiteId and documentLibraryId are all set to valid values. All methods in ClientApi will make callouts, so you cannot execute any DML operations prior to calling a method. Be sure to reserve DML operations until after ClientApi methods are complete.

In the example below, notice that these values can be pulled from either the SharePoint Settings or SharePoint Object Settings metadata types.

Example

//get auth info from the Settings MDT
fileforcem1__SharePoint_Settings__mdt orgSettings = [
SELECT fileforcem1__Named_Credential__c, fileforcem1__Document_Library_Id__c, fileforcem1__Site_Id__c
FROM fileforcem1__SharePoint_Settings__mdt
WHERE Developername = 'Default'
LIMIT 1
];
//get the root folder id for the account object
fileforcem1__SharePoint_Object_Settings__mdt objectSettings = [
SELECT fileforcem1__Root_Folder_Id__c, fileforcem1__Site_Id__c, fileforcem1__Document_Library_Id__c, fileforcem1__Named_Credential__c
FROM fileforcem1__SharePoint_Object_Settings__mdt
WHERE MasterLabel ='Account'
LIMIT 1
];
//Initialize the client object
fileforcem1.ClientApi apiClient = new fileforcem1.ClientApi();
apiClient.namedCredentialName = String.isNotBlank(objectSettings.fileforcem1__Named_Credential__c)
? objectSettings.fileforcem1__Named_Credential__c
: orgSettings.fileforcem1__Named_Credential__c;
apiClient.sharepointSiteId = objectSettings.fileforcem1__Site_Id__c;
apiClient.documentLibraryId = objectSettings.fileforcem1__Document_Library_Id__c;

//Run your sFiles API Method
try {
//sFiles Method
}
catch(fileforcem1.ApiException exc) {
System.debug('*ERROR*: '+exc.errorCode+', '+exc.httpStatusCode+' - '+exc.getMessage()+' - '+exc.methodName);
}

Fields

global documentLibraryIdstring

The Document Library Id that will be used for the SharePoint Operation. This can be pulled from one of the metadata settings or with the ID Utility. This value is required.

global enforceSecurityboolean

Whether sFiles should enforce record-level security before allowing an API action. The default value is false. When true, the Client API property, “objectSettingsLabel” must have a value. NOTE: This parameter currently only applies to the “getDownloadLink” method.

global namedCredentialNamestring

Specify which named credential to use for SharePoint operations. If the ClientApi class is called from a trigger or user-initiated action, this can be a “per user” named credential. If the code is to be called from scheduled apex, a platform event trigger or any other system-initiated process, use a “named principal” named credential that corresponds to a SharePoint user with appropriate access. This value can be pulled from one of the metadata settings or from your named credentials list. This value is required.

global objectSettingsLabelstring

The master label of the SharePoint Object Settings that sFiles should use to enforce Salesforce record-level security on an API action. This property will only apply if the Client API property “enforceSecurity” equals true. NOTE: This parameter currently only applies to the “getDownloadLink” method.

global sharepointSiteIdstring

The SharePoint site id that will be used for the SharePoint Operation. This can be pulled from one of the metadata settings or with the ID Utility. This value is required.


Methods

global Boolean copyItem(string itemId, string parentFolderId)

global Boolean copyItem(string itemId, string parentFolderId, string destLibraryId)

global Boolean copyItem(string itemId, string parentFolderId, string destLibraryId, string newFileName)

Copy a file or folder and its descendants from one folder in SharePoint to another. Use this to have a Salesforce-triggered backup or publishing of a folder, for instance.

Parameters

Param Description
itemId The SharePoint id of the file or folder that is to be copied.
parentFolderId The SharePoint folder id to copied the item to.
destLibraryId (optional) Specifies the destination document library to copied to. This document library may be in a different site then the ClientApi instance.
newFileName (optional) A new file or folder name to give the copied item. If filename, include the extension.

Returns

Type Description
Boolean A boolean that returns true if the item copied successfully and false if it did not.

Example

String sharepointItemToCopy = '015MXY7Q8392ZTTVKJHBSWAEU6NPOQD5RM'; // SharePoint Id
String parentFolderToCopyTo = '015MAB4Q6729XCYZVJTGKWEUP3LFNOS8RM'; // SharePoint Folder Id
fileforcem1__SharePoint_Object_Settings__mdt objectSettings = [
SELECT fileforcem1__Document_Library_Id__c
FROM fileforcem1__SharePoint_Object_Settings__mdt
WHERE MasterLabel = 'Account'
LIMIT 1
];
String destinationLibraryToCopyTo = objectSettings.fileforcem1__Document_Library_Id__c; // SharePoint Document Library Id
try {
Boolean copySucceeded = apiClient.copyItem(sharepointItemToCopy, parentFolderToCopyTo, destinationLibraryToCopyTo);
System.debug('Copy Succeeded: '+ copySucceeded);
} catch (fileforcem1.ApiException exc) {
System.debug('*ERROR*: '+exc.errorCode+', '+exc.httpStatusCode+' - '+exc.getMessage()+' - '+exc.methodName);
}

global SharePointFileInfo createFolder(string parentFolderId, string folderName)

Create a folder within a specified folder. The parentFolderId can be obtained from the ID utility or set from the SharePoint_Id__c field on a record.

In the example below, the client is initialized from Metadata settings shared by sFiles. After this is complete, the folder is created. The resulting SharePointFileInfo object is then utilized to record the SharePoint Folder Id on the account.

Parameters

Param Description
parentFolderId Must be an existing folder within the Site and Document Library that the user has access to.
folderName The name that you want to give the folder. Be sure to clean your string of forbidden folder name characters.

Returns

Type Description
SharePointFileInfo A SharePointFileInfo object of the new folder.

See SharePointFileInfo

Example

fileforcem1__SharePoint_Object_Settings__mdt objectSettings = [
SELECT fileforcem1__Root_Folder_Id__c
FROM fileforcem1__SharePoint_Object_Settings__mdt
WHERE MasterLabel = 'Account'
LIMIT 1
];
Account acct = [SOQL STATEMENT HERE]; // Account record
try {
fileforcem1.SharePointFileInfo acctFolder = apiClient.createFolder(objectSettings.fileforcem1__Root_Folder_Id__c, acct.Name);
acct.SharePoint_Folder_Id__c = acctFolder.Id;
update acct;
} catch (fileforcem1.ApiException exc) {
System.debug('*ERROR*: '+exc.errorCode+', '+exc.httpStatusCode+' - '+exc.getMessage()+' - '+exc.methodName);
}

global String createSharingLink(String itemId)

global String createSharingLink(String itemId, String type)

global String createSharingLink(String itemId, String type, DateTime expirationDateTime)

global String createSharingLink(String itemId, String type, DateTime expirationDateTime, String password)

global String createSharingLink(String itemId, String type, DateTime expirationDateTime, String password, String scope)

global String createSharingLink(String itemId, String type, DateTime expirationDateTime, String password, String scope, List<string> recipients)

Create a sharing link.

Parameters

Param Description  
itemId A string with the SharePoint Id of the folder or file to share.  
type (Optional) The type of sharing link to create. Defaults to “view”. (view edit)
expirationDateTime (Optional) A String with format of yyyy-MM-ddTHH:mm:ssZ of DateTime. Defaults to never expire or to default expiration policy of organization.  
password (Optional) The password of the sharing link.  
scope (Optional) The scope of the link to create. “anonymous” or “organization” or “users”. Anonymous allows anyone with link to access without signing in. Organization allows only those signed into your tenant to use the link. Users will only share the link with individual recipients and requires that the recipients list is populated  
recipients (Optional) When sharing to specific email addresses, provide the email addresses in a list of string  

Returns

Type Description
String A string of the sharing link created.

Test .com’, ‘jill

Test .com’}; try { String sharingLink = apiClient.createSharingLink( itemToCreateLinkFor, ‘view’, expirationDate, null, ‘users’, recipients); } catch (fileforcem1.ApiException exc) { System.debug(‘ERROR: ‘+exc.errorCode+’, ‘+exc.httpStatusCode+’ - ‘+exc.getMessage()+’ - ‘+exc.methodName); }

Example

String itemToCreateLinkFor = '015MXY7Q8392ZTTVKJHBSWAEU6NPOQD5RM'; // SharePoint Id
DateTime expirationDate = DateTime.now().addDays(30);
List<String> recipients = new List<String>{'jack

global SharePointFileInfo createURLFile(string parentFolderId, string itemId)

Creates a url file for a SharePoint Item.

Parameters

Param Description
parentFolderId The id of the SharePoint folder where the url file will be created.
itemId The SharePoint Item that the url file will link to.

Returns

Type Description
SharePointFileInfo A SharePointFileInfo object of the URL file created.

Example

String itemToCreateUrlFileFor = '015MXY7Q8392ZTTVKJHBSWAEU6NPOQD5RM'; // SharePoint Id
String parentFolderToCreateUrlFileIn = '015MAB4Q6729XCYZVJTGKWEUP3LFNOS8RM'; // SharePoint Folder Id
try {
fileforcem1.SharePointFileInfo urlFile = apiClient.createURLFile(parentFolderToCreateUrlFileIn, itemToCreateUrlFileFor);
} catch (fileforcem1.ApiException exc) {
System.debug('*ERROR*: '+exc.errorCode+', '+exc.httpStatusCode+' - '+exc.getMessage()+' - '+exc.methodName);
}

global SharePointFileInfo createURLFile(string parentFolderId, string fileName, string url)

Creates a url file for a link outside of SharePoint.

Parameters

Param Description
parentFolderId The id of the SharePoint folder where the url file will be created.
fileName the name of the url file ex.’My File’.
url the URL that the url file will link to.

Returns

Type Description
SharePointFileInfo A SharePointFileInfo object of the URL file created.

Example

String parentFolderToCreateUrlFileIn = '015MAB4Q6729XCYZVJTGKWEUP3LFNOS8RM'; // SharePoint Folder Id
String urlFileName = 'My Folder Link';
String urlToCreateUrlFileFor = 'https://www.google.com';
try {
fileforcem1.SharePointFileInfo urlFile = apiClient.createURLFile(parentFolderToCreateUrlFileIn, urlFileName, urlToCreateUrlFileFor);
} catch (fileforcem1.ApiException exc) {
System.debug('*ERROR*: '+exc.errorCode+', '+exc.httpStatusCode+' - '+exc.getMessage()+' - '+exc.methodName);
}

global Boolean deleteItem(string itemId)

Deletes a file or folder in SharePoint

Parameters

Param Description
fileId The Id value from a SharePointFileInfo object

Returns

Type Description
Boolean A boolean that returns true if the item deleted successfully and false if it did not.

Example

String itemToDelete = '015MXY7Q8392ZTTVKJHBSWAEU6NPOQD5RM'; // SharePoint Id
try {
Boolean deleteSucceeded = apiClient.deleteItem(itemToDelete);
} catch (fileforcem1.ApiException exc) {
System.debug('*ERROR*: '+exc.errorCode+', '+exc.httpStatusCode+' - '+exc.getMessage()+' - '+exc.methodName);
}

global ContentVersion downloadFile(string fileId)

Download file from SharePoint. This method takes a SharePoint file id and retrieves the file from SharePoint. It then saves the file in Salesforce Files as a ContentDocument. It then returns the newly created ContentVersion record which can be used in additional automation. If the file is larger than ~5MB the method will return an error, this is dependent on the heap size for executing code. The heap limit is increased if this method is called as a future or queueable. The example below shows downloading a file from SharePoint based on file Id.

Parameters

Param Description
fileId Id of existing file to download, within a Site and Document Library that the user has access to.

Returns

Type Description
ContentVersion A ContentVersion of the file downloaded from SharePoint.

Example

String fileToDownload = '015MXY7Q8392ZTTVKJHBSWAEU6NPOQD5RM'; // SharePoint File Id
try {
ContentVersion fileDownloaded = apiClient.downloadFile(fileToDownload);
} catch (fileforcem1.ApiException exc) {
System.debug('*ERROR*: '+exc.errorCode+', '+exc.httpStatusCode+' - '+exc.getMessage()+' - '+exc.methodName);
}

global List<SharePointDocumentLibrary> getDocumentLibraries()

Get a list of all document libraries in a given site that is set in the ClientApi instance.

Returns

Type Description
List<SharePointDocumentLibrary> A list of SharePointDocumentLibrary objects of the Document Libraries in the SharePoint Site.

Example

//Get Document Libraries for a given site
try {
List<fileforcem1.SharePointDocumentLibrary> myDocumentLibraries = apiClient.getDocumentLibraries();
} catch (ApiException exc) {
System.debug('*ERROR*: '+exc.errorCode+', '+exc.httpStatusCode+' - '+exc.getMessage()+' - '+exc.methodName);
}

global string getDocumentLibraryRootFolderId()

Get the Id for a document library root folder.

Returns

Type Description
string The Id of the Root Folder of the Document Library

Example

try {
String documentLibraryRootFolderId = apiClient.getDocumentLibraryRootFolderId();
} catch (fileforcem1.ApiException exc) {
System.debug('*ERROR*: '+exc.errorCode+', '+exc.httpStatusCode+' - '+exc.getMessage()+' - '+exc.methodName);
}

global String getDownloadLink(string fileId)

Download file from SharePoint. This method returns a link to download a file without a limit to file size. Optionally, you can enforce Salesforce record-level security by leveraging the ‘enforceSecurity’ and ‘objectSettingsLabel’ parameters on the client api class. See an example of this below.

Parameters

Param Description
fileId Id of existing file to download, within a specified Site and Document Library on the clientApi class that the user has access to. The Id must be of a file and not a folder.

Returns

Type Description
String A String of the link to download the file from SharePoint.

Example

apiClient.enforceSecurity = true; //Optional: check For salesforce record-level security
apiClient.objectSettingsLabel = 'account'; //Optional: If checking security, declare the SharePoint Object Settings Label to use for security.
String fileToGetDownloadLinkFor = '015MXY7Q8392ZTTVKJHBSWAEU6NPOQD5RM'; // SharePoint File Id
try {
String myDownloadedFile = apiClient.getDownloadLink(fileToGetDownloadLinkFor);
} catch (fileforcem1.ApiException exc) {
System.debug('*ERROR*: '+exc.errorCode+', '+exc.httpStatusCode+' - '+exc.getMessage()+' - '+exc.methodName);
}

global list<SharePointFileInfo> getFolderContents(string folderId, Boolean getNextPage)

Query and list the contents of a folder. This method will return a list of SharePointFileInfo objects of up to 200 results. If there are more results available after the query, morePagesAvailable will return true. To query the next page, set getNextPage to true.

Parameters

Param Description
folderId The SharePoint folder id usually pulled from a record’s SharePoint_Folder_Id__c field.
getNextPage Set to true in order to query the next page from the last query in the current running context. Set to false to get the first page.

Returns

Type Description
list<SharePointFileInfo> A list of SharePointFileInfo objects of the items in the folder.

Example

String folderToGetContentsOf = '015MAB4Q6729XCYZVJTGKWEUP3LFNOS8RM'; // SharePoint Folder Id
try {
list<fileforcem1.SharePointFileInfo> firstPageContents = apiClient.getFolderContents(folderToGetContentsOf, false);
if (apiClient.morePagesAvailable()){
list<fileforcem1.SharePointFileInfo> secondPageContents = apiClient.getFolderContents(folderToGetContentsOf, true);
}
} catch (fileforcem1.ApiException exc) {
System.debug('*ERROR*: '+exc.errorCode+', '+exc.httpStatusCode+' - '+exc.getMessage()+' - '+exc.methodName);
}

global SharePointFileInfo getItemById(string itemId)

Searches the Site/Document Library for a file by SharePoint Id

Parameters

Param Description
itemId The SharePoint Id value from a sharepoint file or folder

Returns

Type Description
SharePointFileInfo A SharePointFileInfo object of the SharePoint item found.

Example

String itemToGet = '015MAB4Q6729XCYZVJTGKWEUP3LFNOS8RM'; // SharePoint Id
try {
fileforcem1.SharePointFileInfo itemRetrieved = apiClient.getItemById(itemToGet);
} catch (fileforcem1.ApiException exc) {
System.debug('*ERROR*: '+exc.errorCode+', '+exc.httpStatusCode+' - '+exc.getMessage()+' - '+exc.methodName);
}

global SharePointFileInfo getItemByPath(string path)

Retrieves a single file or folder by specifying the path to the file in a document library. This allows automation options such as retrieval of SharePoint folder ids to set the Sharepint_Folder_Id__c on a record. In the example below, a SharePoint Folder Id is retrieved by querying its path within the document library.

Parameters

Param Description
path The path within the Document Library to a file or folder. For instance, “/Accounts/Bob’s Account” would return the “Bob’s Account” folder information. It must have the slash at the beginning. Relative folder paths such as ../ or ./ are not available.

Returns

Type Description
SharePointFileInfo A SharePointFileInfo object of the SharePoint item found.

Example

string itemToGet = '/Accounts/Bob\'s Account';
try {
fileforcem1.SharepointFileInfo folderInfo = apiClient.getItemByPath(itemToGet);
string folderId = folderInfo.Id;
} catch (fileforcem1.ApiException exc) {
System.debug('*ERROR*: '+exc.errorCode+', '+exc.httpStatusCode+' - '+exc.getMessage()+' - '+exc.methodName);
}

global SharePointUrlResponse getItemBySharePointURL(string sharePointUrl)

When provided with a URI directly from a SharePoint Location. This method Retrieves a SharePointUrlResponse class which returns the following when successful. Will throw an APIException if there is an error.

  • ID’s of the URL’s folder, document library, document library folder and site
  • SharePointFileInfo objects of the URL’s folder, document library and site

Parameters

Param Description
sharePointUrl A url that is copied from the browser location of a folder within SharePoint.

Returns

Type Description
SharePointUrlResponse A SharePointFileInfo object of the SharePoint item found.

Example

string itemToGet = 'https://yoursite.sharepoint.com/sites/yourSite/Shared%20Documents/Forms/AllItems.aspx?RootFolder=%2Fsites%2FyourSite%2FShared%20Documents%2FAccounts%2FBurlington%20Textiles%20Corp%20of%20America&FolderCTID=0x01200000DE969EFDB44E4AA3DECBD9AD27C498';
try {
SharePointUrlResponse myItem = apiClient.getItemBySharePointURL(itemToGet);
System.debug('Folder Id: ' + myItem.folderId);
} catch (fileforcem1.ApiException exc) {
System.debug('*ERROR*: '+exc.errorCode+', '+exc.httpStatusCode+' - '+exc.getMessage()+' - '+exc.methodName);
}

global SharePointFileInfo getItemIdByGuid(string guid)

Searches the Site/Document Library for a file by SharePoint GUID.

Parameters

Param Description
guid The GUID value from a SharePoint file or folder.

Returns

Type Description
SharePointFileInfo A SharePointFileInfo object of the SharePoint item found.

Example

string itemToGet = 'A1B2C3D4-9X8Y-7Z6W-5V4U-ABCDEFGHIJKLMNOP'; // SharePoint Guid
try {
fileforcem1.SharePointFileInfo itemRetrieved = apiClient.getItemByGuid(itemToGet);
} catch (fileforcem1.ApiException exc) {
System.debug('*ERROR*: '+exc.errorCode+', '+exc.httpStatusCode+' - '+exc.getMessage()+' - '+exc.methodName);
}

global string getItemPreviewUrl(string itemId)

Gets the temporary url for the preview of the file.

Parameters

Param Description
itemId The item Id.

Returns

Type Description
string A string of the temporary url to preview the file.

Example

string fileToGetPreviewUrl = '015MAB4Q6729XCYZVJTGKWEUP3LFNOS8RM'; // SharePoint File Id
try {
string previewUrl = apiClient.getItemPreviewUrl(fileToGetPreviewUrl);
} catch (fileforcem1.ApiException exc) {
System.debug('*ERROR*: '+exc.errorCode+', '+exc.httpStatusCode+' - '+exc.getMessage()+' - '+exc.methodName);
}

global string getListItemIdFromLibraryId(string libraryId)

This method takes a Document Library ID and returns a list item Id.

Parameters

Param Description
libraryId The id of the Document Library

Returns

Type Description
string The list item id of the Document Library

Example

string libraryIdToGet = 'b!9Xy_ZM7QPnl8v2KrR7JYtA3BCdmELo6TxzVWsucDf5pNqHj4G2kU98wOYhXLbZT'; // SharePoint Document Library Id
try {
string listItemIdRetrieved = apiClient.getListItemIdFromLibraryId(libraryIdToGet);
} catch (fileforcem1.ApiException exc) {
System.debug('*ERROR*: '+exc.errorCode+', '+exc.httpStatusCode+' - '+exc.getMessage()+' - '+exc.methodName);
}

global List<SharePointSite> getSites()

Get a list of all sites in the root of your SharePoint domain as specified in the “Default” custom metadata type “SharePoint Settings”.

Returns

Type Description
List<SharePointSite> A list of SharePointSite objects of each site in the domain specified in the SharePoint Settings.

Example

try {
List<fileforcem1.SharePointSite> mySites = apiClient.getSites();
} catch (fileforcem1.ApiException exc) {
System.debug('*ERROR*: '+exc.errorCode+', '+exc.httpStatusCode+' - '+exc.getMessage()+' - '+exc.methodName);
}

global List<SharePointSite> getSites(string hostname)

Get a list of all sites in a domain.

Parameters

Param Description
hostname The SharePoint hostname or site Id to get the list of sites from.

Returns

Type Description
List<SharePointSite> A list of SharePointSite objects of each site in the domain specified as a parameter.

Example

// Can either use site Id (below) or hostname only: 'myothersite.sharepoint.com'
String hostNameToGet = 'mysite.sharepoint.com,123f4bd5-678e-991e-b8c7-54e93f81d3ac,123e4e5d-678a-9f1e-1f23-45adba6789ad';
try {
List<fileforcem1.SharePointSite> mySites = apiClient.getSites(hostNameToGet);
} catch (fileforcem1.ApiException exc) {
System.debug('*ERROR*: '+exc.errorCode+', '+exc.httpStatusCode+' - '+exc.getMessage()+' - '+exc.methodName);
}

global string getUploadSessionURL(string destinationFolderId, string fileName, boolean replaceFile)

Provides a one-time url to upload a file to the specified folder. This is designed to be used with custom client-side javascript to upload a file directly to a location. This method is useful to customers only under certain conditions. Please contact support to determine if this can be used in your solution.

Parameters

Param Description
destinationFolderId The id of the folder to upload into
fileName the name of the file to be uploaded along with extension
replaceFile a boolean value of whether or not to replace a file if a file by the same specified name already exists in the destination folder.

Returns

Type Description
string A string of the one-time upload session url

Example

string destinationFolderId = '015MAB4Q6729XCYZVJTGKWEUP3LFNOS8RM'; // SharePoint Folder Id
string fileName = 'myFile.pdf'; // File name with extension
try {
string uploadSessionUrl = apiClient.getUploadSessionURL(destinationFolderId, fileName, true);
} catch (fileforcem1.ApiException exc) {
System.debug('*ERROR*: '+exc.errorCode+', '+exc.httpStatusCode+' - '+exc.getMessage()+' - '+exc.methodName);
}

global boolean morePagesAvailable()

See the documentation for getFolderContents for usage.

Returns

Type Description
boolean Returns true if more pages are available to continue the most recent query using getFolderContents.

Example

Boolean morePages = apiClient.morePagesAvailable();

global SharePointFileInfo moveItem(string itemId, string parentFolderId)

Move a file or folder and its descendants from one folder in SharePoint to another. Use this to have a Salesforce-triggered archive of files, for instance. An item can only be moved within its original document library. Use copyFile to place a file or folder in a different document library.

Parameters

Param Description
itemId The SharePoint id of the file or folder that is to be moved.
parentFolderId The SharePoint folder id to move the item to.

Returns

Type Description
SharePointFileInfo A SharePointFileInfo object of the file or folder that was moved.

Example

//Set the SharePoint Site & Document Library Id to move to in the ClientApi constructor
apiClient.sharepointSiteId = 'mysite.sharepoint.com,123f4bd5-678e-991e-b8c7-54e93f81d3ac,123e4e5d-678a-9f1e-1f23-45adba6789ad'; //SharePoint Site Id To Move To
apiClient.documentLibraryId = 'b!9Xy_ZM7QPnl8v2KrR7JYtA3BCdmELo6TxzVWsucDf5pNqHj4G2kU98wOYhXLbZT'; //SharePoint Document Library Id To Move To

//Set the SharePoint Parent Folder Id To Move To & SharePoint Item Id To Move
String parentFolderToMoveTo = '015MAB4Q6729XCYZVJTGKWEUP3LFNOS8RM'; //SharePoint Folder Id To Move To
String sharepointItemToMove = '015MXY7Q8392ZTTVKJHBSWAEU6NPOQD5RM'; //SharePoint Item Id To Move

try {
fileforcem1.SharePointFileInfo movedItem = apiClient.moveItem(sharepointItemToMove, parentFolderToMoveTo);
} catch (fileforcem1.ApiException exc) {
System.debug('*ERROR*: '+exc.errorCode+', '+exc.httpStatusCode+' - '+exc.getMessage()+' - '+exc.methodName);
}

global SharePointFileInfo renameFile(string fileId, string newName)

Changes the name of a file or folder in SharePoint

Parameters

Param Description
fileId The Id value from a SharePointFileInfo object
newName The item name with extension of the file to be renamed. Be sure to make sure that no illegal characters are in the fileName.

Returns

Type Description
SharePointFileInfo A SharePointFileInfo object of the file or folder that was renamed.

Example

String itemToRename = '015MXY7Q8392ZTTVKJHBSWAEU6NPOQD5RM'; // SharePoint Id
String newName = 'New Name';
try {
fileforcem1.SharePointFileInfo renamedItem = apiClient.renameFile(itemToRename, newName);
} catch (fileforcem1.ApiException exc) {
System.debug('*ERROR*: '+exc.errorCode+', '+exc.httpStatusCode+' - '+exc.getMessage()+' - '+exc.methodName);
}

global List<SharePointFileInfo> searchForItems(string searchTerm)

global List<SharePointFileInfo> searchForItems(string searchTerm, string folderId, boolean searchSubfolders)

Searches a document library or specified folder for all files and folders that match a search term.

Parameters

Param Description
searchTerm The keyword to search for a file/folder. NOTICE: The searchForItems function will search for this keyword not just in the name, but across all SharePoint columns.
folderId The specific SharePoint folder Id where searchForItems should search.
searchSubfolders Boolean of whether to search the subfolders of the given folderId. If false, sFiles will only return search results of items directly inside the folderId. If true, sFiles will return all matching results from all folders nested in the folderId.

Returns

Type Description
List<SharePointFileInfo> A list of SharePointFileInfo objects of the SharePoint Files/Folders that match the search term.

Example

String searchTerm = 'Burlington';
String folderToSearchIn = '015MBR2B3GJVBBHR2DNZB3L4XFNAGJTM6B'; // SharePoint Folder Id

try {
List<fileforcem1.SharePointFileInfo> mySearchResults = apiClient.searchForItems(searchTerm, folderToSearchIn, false);
} catch (fileforcem1.ApiException exc) {
System.debug('*ERROR*: '+exc.errorCode+', '+exc.httpStatusCode+' - '+exc.getMessage()+' - '+exc.methodName);
}

global SharepointFileInfo setupFolder(string recordId, string parentFolderId, string objectSettingsLabel)

global SharepointFileInfo setupFolder(string recordId, string parentFolderId, string objectSettingsLabel, string conflictBehavior)

This method mimics the UI button functionality: “Set Up in SharePoint”. Leverage this functionality to set up a folder for a given record exactly as is done in the UI. It will setup a folder according to the configuration of a specific SharePoint Object Settings record. The method will:

  • Create a folder for the record in the specified parent folder.
  • Name the folder according to the field specified in SharePoint Object Settings.
  • Set custom SharePoint fields on the new folder as specified in SharePoint Object Settings.
  • Create the child folder hierarchy as specified in SharePoint Object Settings and set SharePoint custom fields on the newly created folders.
  • Update the Salesforce record with the newly created SharePoint Folder Id.

Parameters

Param Description
recordId The Salesforce record id to create a folder for. It must correspond to the object type specified in the SharePoint Object Settings record
parentFolderId The SharePoint folder id in which to place the new folder. This can be populated from the SharePoint Object Settings record or set manually
objectSettingsLabel The label of the SharePoint Object Settings metadata record to use to set the folder up.
conflictBehavior What the method will do if a folder already exists with the same name in the root folder. The three supported conflict behaviors are ‘fail’ (sFiles will not setup the folder), ‘replace’ (sFiles will replace the existing folder) and ‘rename’ (sFiles will append a number at the end of the newly created folder to rename it). The default behavior is rename.

Returns

Type Description
SharepointFileInfo A SharePointFileInfo object of the folder that was setup.

Example

String recordId = '001fusr7347f9setfUED'; // Salesforce Record Id
String parentFolderToSetupIn = '015MAB4Q6729XCYZVJTGKWEUP3LFNOS8RM'; // SharePoint Folder Id
try {
fileforcem1.SharePointFileInfo folderSetup = apiClient.setupFolder(
recordId,
parentFolderToSetupIn,
'Account',
'fail'
);
} catch (fileforcem1.ApiException exc) {
System.debug('*ERROR*: '+exc.errorCode+', '+exc.httpStatusCode+' - '+exc.getMessage()+' - '+exc.methodName);
}

global SharePointFileInfo updateCustomFields(string fileId, Map<String,String> customFields)

Manually sets custom field/value combinations to a document or folder in SharePoint

The example below shows how to set SharePoint custom text fields “SalesforceAccountId” to a hard-coded value and “Type” to a referenced account type.

Parameters

Param Description
fileId The Id value from a SharePointFileInfo object
customFields The format for the map is that the key is the SharePoint field name and the value is the value to write to that field.

Returns

Type Description
SharePointFileInfo A SharePointFileInfo object of the file or folder that was updated.

Example

String itemToUpdate = '015MXY7Q8392ZTTVKJHBSWAEU6NPOQD5RM'; // SharePoint File Id
Map<String,String> fields = new Map<String,String>();
fields.put('SalesforceId','001fusr7347f9setfUED');
fields.put('Type',acct.Type);
try {
fileforcem1.SharePointFileInfo updatedItem = apiClient.updateCustomFields(itemToUpdate, fields);
} catch (ApiException exc) {
System.debug('*ERROR*: '+exc.errorCode+', '+exc.httpStatusCode+' - '+exc.getMessage()+' - '+exc.methodName);
}

global SharePointFileInfo uploadFile(string parentFolderId, string fileName, Blob fileContents)

global SharePointFileInfo uploadFile(string parentFolderId, string fileName, Blob fileContents, string recordId, map<string,string> customFields)

global SharePointFileInfo uploadFile(string parentFolderId, string fileName, Blob fileContents, string recordId, map<string,string> customFields, string conflictBehavior)

Upload that will also set SharePoint custom field values. This allows an upload of up to 4 MB and does not require a contentversion. This can be used to upload any blob as a file. The file will be uploaded, and upon completion, custom fields will be set in SharePoint.

Because of the 4 MB size limitation, uploadLargeFile is recommended.

Usage The example below shows querying a contentversion by ContentDocumentId and uploading the file with custom SharePoint fields. It sets the SharePoint field, “SalesforceAccountId” to a hard-coded value and “Type” to a referenced account type.

Parameters

Param Description
parentFolderId Must be an existing folder within the Site and Document Library that the user has access to.
fileName The file name with extension of the file to be uploaded. Be sure to make sure that no illegal characters are in the fileName.
fileContents A blob value for the contents of the file
recordId This is the Salesforce Record ID that is associated with the file. It is required.
customFields The format for the map is that the key is the SharePoint field name and the value is the value to write to that field.
conflictBehavior What the method will do if a file already exists with the same name in the root folder. The three supported conflict behaviors are ‘fail’ (sFiles will not upload the file), ‘replace’ (sFiles will replace the existing file) and ‘rename’ (sFiles will append a number at the end of the newly created file to rename it). The default behavior is replace.

Returns

Type Description
SharePointFileInfo A SharePointFileInfo object of the file that was uploaded.

Example

//Get the file version to upload
ContentVersion fileVersionToUpload = [
SELECT Id, Title, FileExtension, VersionData, ContentDocumentId
FROM ContentVersion
WHERE ContentDocumentId = : ContentDocumentId
LIMIT 1
];

//Set Parameters
string folderToUploadTo = '015MAB4Q6729XCYZVJTGKWEUP3LFNOS8RM'; // SharePoint Folder Id
string newFileName = fileVersionToUpload.Title + '.' + fileVersionToUpload.FileExtension;
Blob fileContents = fileVersionToUpload.VersionData;
string recordId = '001fusr7347f9setfUED'; // Salesforce Record Id
Map<String,String> fields = new Map<String,String>();
fields.put('SalesforceId', recordId);
string conflictBehavior = 'fail'; //fail, replace, or rename

//Upload the file
try {
fileforcem1.SharePointFileInfo uploadedFile = apiClient.uploadFile(
folderToUploadTo,
newFileName,
fileContents,
recordId,
fields,
conflictBehavior
);
} catch (fileforcem1.ApiException exc) {
System.debug('*ERROR*: '+exc.errorCode+', '+exc.httpStatusCode+' - '+exc.getMessage()+' - '+exc.methodName);
}

global SharePointFileInfo uploadLargeFile(string parentFolderId, string fileName, string documentVersionId)

Upload a file up to 11 MB but requires a ContentVersionId This method will not set SharePoint fields.

global SharePointFileInfo uploadLargeFile(string parentFolderId, string fileName, string documentVersionId, string recordId, map<string,string> customFields)

Upload up to 11 MB that will also set SharePoint custom field values.

global SharePointFileInfo uploadLargeFile(string parentFolderId, string fileName, string documentVersionId, string recordId, map<string,string> customFields, Boolean autodelete)

This signature allows the ability to retain the ContentVersion after the file is uploaded to SharePoint.

global SharePointFileInfo uploadLargeFile(string parentFolderId, string fileName, string documentVersionId, string recordId, map<string,string> customFields, Boolean autodelete, Boolean replaceFile)

Upload a file up to 11 MB but requires a ContentVersionId The file will be uploaded as a

Parameters

Param Description
parentFolderId Must be an existing folder within the Site and Document Library that the user has access to.
fileName The file name with extension of the file to be uploaded. Be sure to make sure that no illegal characters are in the fileName.
documentVersionId The ContentVersion Id of the file
recordId This is the Salesforce Record ID that is associated with the file. It is used by future methods to set custom fields on the record.
customFields The format for the map: the key is the SharePoint field name and the value is the value to write to that field.
autodelete (Optional) Boolean that determines whether ContentVersion created when uploading file to SharePoint is automatically deleted or not. Defaults to true (will automatically delete ContentVersion upon upload).
replaceFile (Optional) Boolean that determines whether the file uploaded will be replaced or renamed if another file with the same name exists.

Returns

Type Description
SharePointFileInfo A SharePointFileInfo object of the file that was uploaded.

Future method. Upon completion, custom fields will be set in SharePoint and a File_Uploaded_Community__e platform event will be fired. Code can be written to subscribe to the platform event to further extend functionality. All fields are required in order to set custom fields upon upload.

This method always returns null.

Usage The example below shows querying a contentversion by ContentDocumentId and uploading the file with custom SharePoint fields. It sets the SharePoint field, “SalesforceAccountId” to a hard-coded value and “Type” to a referenced account type. apiClient.uploadLargeFile(ParentFolderId, fileName,fileVersionToUpload.Id,acct.Id,fields);}

Example

//Get the file version to upload
ContentVersion fileVersionToUpload = [
SELECT Id, Title, FileExtension, VersionData, ContentDocumentId
FROM ContentVersion
WHERE ContentDocumentId = : ContentDocumentId
LIMIT 1
];

//Set Parameters
string folderToUploadTo = '015MAB4Q6729XCYZVJTGKWEUP3LFNOS8RM'; // SharePoint Folder Id
string newFileName = fileVersionToUpload.Title + '.' + fileVersionToUpload.FileExtension;
Blob fileContents = fileVersionToUpload.VersionData;
string recordId = '001fusr7347f9setfUED'; // Salesforce Record Id
Map<String,String> fields = new Map<String,String>();
fields.put('SalesforceId',recordId);

//Upload the file
try {
fileforcem1.SharePointFileInfo uploadedFile = apiClient.uploadLargeFile(
folderToUploadTo,
newFileName,
fileVersionToUpload.Id,
recordId,
fields,
false,
false
);
} catch (fileforcem1.ApiException exc) {
System.debug('*ERROR*: '+exc.errorCode+', '+exc.httpStatusCode+' - '+exc.getMessage()+' - '+exc.methodName);
}

global void writeDebugInfo()

This method will log sFiles Debug information in the sFiles Debug Log Object. The following must be in place for this method to work: • The log level in SharePoint Settings (Setup > Custom Metadata Types > SharePoint Setttings > Default) must be set to a value other than “None”. • This method must be called after all sFiles methods and DML operations are complete. • NOTE: Return the log level in step 1 to “None” when not in use to avoid unnecessary operations.

Example

try {
//Example sFiles Method to capture debug information
apiClient.getItemById(myFolderId);
apiClient.getFolderContents(myFolderId, false);

apiClient.writeDebugInfo(); //Captures Callout Information in sFiles Debug Log ONLY after all sFiles methods and DML operations

} catch(Exception exc) {
apiClient.writeDebugInfo(); //Captures Callout Information of failed sFiles Methods
}

Classes

clientApiException

Inheritance

clientApiException