Composite Request in Salesforce

Composite API improves the REST API call performance. It avoids multiple round trips to a server. Instead, it makes a single call with multiple subrequests.

allOrNone 

The request body uses this allOrNone flag. It specifies how to roll back errors. If this flag is set to true, entire request is rolled back. If it is set to false, the remaining subrequests that don’t depend on the
failed subrequests are executed. In both the cases, the top-level request returns HTTP response as 200 and contains responses for all the subrequests.

collateSubrequests 

Use this to bulkify the subrequests. When this is set to true, the processing will be faster. But, the order of execution is not guaranteed. If this is set to false, the subrequests are processed in the order in which they are received. Use this option if there is no dependencies in the requests.

Advantages:

1. Executes a series of REST API requests in a single API call.
2. The response bodies and HTTP statuses of the requests are returned in a single response body.
3. The entire request counts as a single call towards the Salesforce API limits.For more information, check https://developer.salesforce.com/docs/atlas.en-us.api_rest.meta/api_rest/resources_composite_composite.htm

Workbench tool can be used to test the Composite Request API.

1. Path URL – /services/data/vxx.0/composite

2. HTTP Method – POST

Check the below Sample Request for example.

Sample Request:

{
  "compositeRequest": [
    {
      "method": "POST",
      "url": "/services/data/v50.0/sobjects/Account",
      "referenceId": "refAccount",
      "body": {
        "Name": "Sample Account"
      }
    },
    {
      "method": "POST",
      "url": "/services/data/v50.0/sobjects/Contact",
      "referenceId": "refContact",
      "body": {
        "LastName": "Sample Contact",
        "AccountId": "@{refAccount.id}"
      }
    },
    {
      "method": "POST",
      "url": "/services/data/v50.0/sobjects/Opportunity",
      "referenceId": "refOppty",
      "body": {
        "Name": "Sample Oppty",
        "AccountId": "@{refAccount.id}",
        "CloseDate": "2020-12-15",
        "StageName": "Prospecting"
      }
    }
  ]
}

Output:

Leave a Reply