SalesforceRestClient Introduction
The SalesforceRestClient module provides an API for calling REST services with Salesforce.com.
To use this module, use "%requires SalesforceRestClient" in your code.
All the public symbols in the module are defined in the SalesforceRestClient namespace.
The main classes are:
- Example:
 %new-style
%strict-args
%require-types
%enable-all-warnings
%requires SalesforceRestClient
hash opts = (
    "client_id": ENV.SALESFORCE_CONSUMER_KEY,
    "client_secret": ENV.SALESFORCE_CONSUMER_SECRET,
    "username": ENV.SALESFORCE_USER,
    "password": ENV.SALESFORCE_PASS,
);
SalesforceRestClient rest(opts);
hash ans = rest.get("sobjects");
The composite API can be used to work with multiple objects at once as in the following example:
- Example:
 list<string> sub create_accounts(list account_list) {
    
    list<string> account_numbers = map $1.AccountNumber, account_list;
    
    account_list = map $1 + ("attributes": ("type": "Account", "referenceId": $
    
    hash<auto> info;
    on_error 
printf(
"ERROR info: %N", info);
    
    rc.post("composite/tree/Account", ("records": account_list), \info);
    log(LL_INFO, "created accounts: %y", account_numbers);
    return account_numbers;
}
Requests can also be made with the Salesforce.com Bulk REST API; the following example shows how a list of accounts can be deleted: 
- Example:
 %new-style
%strict-args
%require-types
%enable-all-warnings
%requires SalesforceRestClient
%requires json
hash<auto> opts = (
    "client_id": ENV.SALESFORCE_CONSUMER_KEY,
    "client_secret": ENV.SALESFORCE_CONSUMER_SECRET,
    "username": ENV.SALESFORCE_USER,
    "password": ENV.SALESFORCE_PASS,
);
SalesforceRestClient rest(opts);
list<hash<auto>> al = map ("Id": $1.Id), rc.get("query?q=select Id, Name from Account where Name like 'Account %%'").body.records;
hash<auto> h = rc.bulkJobCreate(BulkJobDelete, "Account", BulkJobJson).jobInfo;
printf(
"created job %y\n", h.id);
 string data = make_json(al);
rc.bulkJobAddBatch(h.id, data, BulkJobJson, \info);
rc.bulkJobClose(h.id);
- See also
 "sfrest" in the bin directory for a user-friendly command-line interface to Salesforce.com REST API functionality and a more detailed example of code using this module.
Release Notes
SalesforceRestClient v1.4
- removed the 
SalesforceRestConnection::getConstructorInfo() and SalesforceRestConnection::getConstructorInfoImpl() methods (issue 3696) 
- added support for the data provider API
 
SalesforceRestClient v1.3
- all connection clases have unified constructor
 
SalesforceRestClient v1.2
- added the 
SalesforceRestConnection::getConstructorInfo() method to allow connections to be created dynamically, potentially in another process from a network call (removed in SalesforceRestClient 1.4) (issue 2628) 
SalesforceRestClient v1.1.1
SalesforceRestClient v1.1
SalesforceRestClient v1.0
- the initial version of the SalesforceRestClient module