linkedin

Working with Salesforce sObjects with Composite Connector Part IV – Composite Request

In this blog, we focus on the Salesforce Composite Request and explain how MuleSoft uses the Composite Connector to optimize Salesforce sObject operations. Previously, Working with Salesforce sObjects with Composite Connector Part I introduced common sObject type names in Apex for standard objects. Next, Part II examined collections, while Part III explained how developers retrieve, update, upsert, and delete records.

Now, we continue working with Salesforce sObjects using MuleSoft Salesforce integration by introducing Salesforce composite requests in more depth. With this approach, teams execute multiple REST API operations within a single call. As a result, they reduce Salesforce Platform API usage while simultaneously improving integration performance.

Because a Salesforce Composite Request executes several REST API requests together, it packages multiple operations into one payload. Consequently, the platform processes fewer API calls. Moreover, developers can reuse the output of one subrequest as input for another. For this reason, Salesforce counts the entire execution as a single API call.

Salesforce Composite Request Overview

In a Salesforce Composite Request, each individual call functions as a subrequest. Within the subrequest body, developers define a reference ID. This reference ID maps directly to the response and, therefore, can be reused in the URL or body of subsequent composite REST API calls.

As a result, MuleSoft composite connector implementations preserve data dependencies while avoiding unnecessary Salesforce API calls, which is why many teams reinforce these patterns through targeted MuleSoft Training.

Composite Request Body

This section describes a collection of subrequests that Salesforce executes using the Composite resource.

Composite Collection Input

  • allOrNone:
    • Optional
    • Specifies how Salesforce behaves when an error occurs while processing a composite subrequest
  • collateSubrequest:
    • Controls whether the Salesforce composite API collates unrelated subrequests to bulkify them (true) or executes them separately (false)
    • Subrequests that include valid HTTP headers are not collated
    Conditions to collate
    • The HTTP methods remain the same
    • The API versions of the Salesforce resources match
    • The parent resources use /sobjects endpoints
    • No more than five sObject resources exist across a grouped set of subrequests
  • compositeRequest:
    • Collection of Salesforce composite subrequests to execute
    • Contains the resource, method, headers, body, and reference ID for each subrequest

Example Composite Request

The following Salesforce Composite Request example demonstrates how MuleSoft creates an Account record and then creates a related Contact record within the same composite API call. Importantly, the Contact subrequest references the Account ID returned from the first Salesforce composite request.

{
  "allOrNone": false,
  "collateSubrequests": null,
  "compositeRequest": [
    {
      "method": "POST",
      "url": "/services/data/v49.0/sobjects/Account",
      "referenceId": "refAccount",
      "body": {
        "Name": "Sample Account"
      }
    },
    {
      "method": "POST",
      "url": "/services/data/v49.0/sobjects/Contact",
      "referenceId": "refContact",
      "body": {
        "FirstName": "Maria",
        "LastName": "Alex",
        "AccountId": "@{refAccount.id}"
      }
    }
  ]
}

By using a Salesforce composite REST API pattern, MuleSoft ensures that the platform creates dependent sObject records sequentially. At the same time, Salesforce processes the entire workflow as a single API call. Consequently, integrations remain efficient and predictable.

Composite Response Body

After execution, Salesforce returns a Composite Response Body that contains the results for each composite subrequest.

  • Collection of subsequent results
  • Each Salesforce composite subrequest result includes:

Example Composite Response

{
  "compositeResponse": [
    {
      "body": {
        "id": "0012x00001UAAL",
        "success": true,
        "errors": []
      },
      "httpHeaders": {
        "Location": "/services/data/v49.0/sobjects/Account/0012x00001UAAL"
      },
      "httpStatusCode": 201,
      "referenceId": "refAccount"
    },
    {
      "body": {
        "id": "0032x00002PKAAS",
        "success": true,
        "errors": []
      },
      "httpHeaders": {
        "Location": "/services/data/v49.0/sobjects/Contact/0032x00002PKAAS"
      },
      "httpStatusCode": 201,
      "referenceId": "refContact"
    }
  ]
}

This Salesforce composite response confirms that Salesforce created both sObject records successfully. Furthermore, each response maps clearly to its corresponding reference ID. Therefore, developers can validate results and troubleshoot MuleSoft Salesforce integrations more efficiently.