Api Rest
Api Rest
@salesforcedocs
Last updated: May 12, 2022
© Copyright 2000–2022 salesforce.com, inc. All rights reserved. Salesforce is a registered trademark of salesforce.com, inc.,
as are other names and marks. Other marks appearing herein may be trademarks of their respective owners.
CONTENTS
Chapter 3: Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
Getting Information About My Organization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
List Available REST API Versions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
List Organization Limits . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
List Available REST Resources . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
Get a List of Objects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
Get a List of Objects If Metadata Has Changed . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
Working with Object Metadata . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
Retrieve Metadata for an Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
Get Field and Other Metadata for an Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
Get Object Metadata Changes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
Working with Records . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
Create a Record . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
Update a Record . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
Delete a Record . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
Get Field Values from a Standard Object Record . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
Get Field Values from an External Object Record by Using the Salesforce ID . . . . . . . . . . 39
Get Field Values from an External Object Record by Using the External ID Standard
Field . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
Retrieve a Record Using an External ID . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
Contents
Chapter 4: Generating an OpenAPI 3.0 Specification for sObjects REST API (Beta) . . . 103
In this chapter ... REST API provides you with programmatic access to your data in Salesforce. The flexibility and scalability
of REST API make it an excellent choice for integrating Salesforce into your applications and for performing
• What Is REST API? complex operations on a large scale.
• API Compatible
Use this guide to set up your deployment environment and learn about advanced details regarding data
Editions and
access. However, understanding and using REST API requires basic familiarity with software development,
Development
web services, and the Salesforce user interface.
Environments
• REST Resources and If you want to get right to the action, the Quick Start guide covers the basics to get you up and running.
Requests If you’re looking for more context about Salesforce APIs, check out the list of links.
• REST API Architecture
• Compression SEE ALSO:
Headers
Trailhead: Lightning Platform API Basics
• Conditional Request
Which API Do I Use?
Headers
• Send REST Requests
with cURL
• Authorization
Through Connected
Apps and OAuth 2.0
• Configure Salesforce
CORS Allowlist
• Valid Date and
DateTime Formats
• API End-of-Life
1
REST API What Is REST API?
SEE ALSO:
REST Resources and Requests
REST API Architecture
Which API Do I Use?
API Access
API access is available with Professional Edition, Performance Edition, Enterprise Edition, Unlimited Edition, and Developer Edition. For
Professional Edition, all requests for API access must be purchased and can be processed by contacting your Account Executive.
Note: If you send an API request to an org without API access, Salesforce returns a API_DISABLED_FOR_ORG error.
To protect your live data, we recommend performing all development and testing in Developer Edition, sandboxes, or scratch orgs. This
way you create a separate environment to try out things before implementing the changes.
SEE ALSO:
Get your very own Developer Edition
Scratch Orgs
Sandboxes
Salesforce DX Developer Guide
2
REST API REST Resources and Requests
URIs
The URI is the path to a resource in Salesforce. Although the URI changes from resource to resource, the basic structure remains the
same.
https://MyDomainName.my.salesforce.com/services/data/vXX.X/resource/
Note: Some parts of URIs are case-sensitive, such as IDs. Other parts of URIs aren't case-sensitive, such as object and field names.
If your requests aren't successful, check that your URI has the right letter cases by comparing the URI to the examples in this guide.
HTTP Methods
REST API supports standard HTTP request methods (HEAD, GET, POST, PATCH, PUT, and DELETE), which follow the specifications at
https://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html.
3
REST API REST API Architecture
The purpose of each method varies depending on the resource. For information on how and when to use each method, check the page
for that resource in the Reference section of this guide.
Headers
Use headers to pass parameters and customize options for HTTP requests. REST API supports several standard HTTP headers, as well as
custom headers that are specific to Salesforce.
Common headers used in the examples include:
• HTTP Accept—Indicates the format that your client accepts for the response body. Possible values are application/json
and application/xml. The default value is application/json.
• HTTP Content-type—Indicates the format of the request body that you attach to the request. Possible values are
application/json and application/xml.
• HTTP Authorization—Provides the OAuth 2.0 access token to authorize your client. REST API supports the Bearer authentication
type.
• Compression header—Compresses the request or the response. For more information, see Compression Headers on page 6.
• Conditional request header—Validates the records that you access against a precondition. For more information, see Conditional
Request Headers on page 6.
Request Bodies
A request body is a rich input that can be included in the request to provide additional information, such as field values for creating or
updating records. A request body can be in JSON or XML format.
Note: Resources accessed with the GET method don’t require you to attach a request body.
Use the HTTP Content-type header to indicate the file format of the request body. If you use cURL to send the request, attach the JSON
or XML file to the request using the —data-binary or -d option.
SEE ALSO:
Send REST Requests with cURL
https://developer.salesforce.com/docs/atlas.en-us.salesforce_developer_environment_tipsheet.meta/salesforce_developer_environment_tipsheet/salesforce_developer_environment_overview.htm
4
REST API REST API Architecture
Named resources
All resources are named using a base URI that follows your Lightning Platform endpoint. See REST Resources and Requests for details
and examples.
Layered components
Intermediaries, such as proxy servers and gateways, are allowed between the client and the resources.
In addition to the standard RESTful principles, REST API includes other key characteristics in its architecture that are important to understand
and consider as you develop your applications.
Authentication
REST API supports OAuth 2.0 (an open protocol to allow secure API authorization). See Authorize Apps with OAuth in Salesforce Help
for more details.
Support for JSON and XML
JSON is the default. You can use the HTTP ACCEPT header to select either JSON or XML, or append json or xml to the URI
(for example, /Account/001D000000INjVe.json).
The JavaScript Object Notation (JSON) format is supported with UTF-8.
XML requests are supported in UTF-8 and UTF-16, and XML responses are provided in UTF-8.
Compression
Compression reduces bandwidth loads by compressing the messages sent between REST API and your client. REST API supports
compression with gzip and deflate, as defined by the HTTP 1.1 specification. See Compression Headers.
Conditional Requests
Response caching is supported by conditional request headers that follow the standards defined by the HTTP 1.1 specification, with
a few exceptions. See Conditional Request Headers.
Cross-Origin Resource Sharing
Cross-Origin Resource Sharing (CORS) enables web browsers to request resources from origins other than their own. For example,
using CORS, JavaScript code at https://www.example.com could request a resource from https://www.salesforce.com. To access
supported Salesforce APIs, Apex REST resources, and Lightning Out from JavaScript code in a web browser, add the origin serving
the code to a Salesforce CORS allowlist. See Perform Cross-Origin Requests from Web Browsers.
Salesforce ID Length
Salesforce IDs in response bodies are always 18-character IDs. In request bodies, you can use either 15 character IDs or 18 character
IDs.
Method Overriding
To override an HTTP method if you use an HTTP library that doesn’t allow overriding or setting an arbitrary HTTP method name, use
the request parameter _HttpMethod.
POST https://instance_name/services/data/v55.0/chatter/
/chatter/users/me/conversations/03MD0000000008KMAQ
?_HttpMethod=PATCH&read=true
Note: The _HttpMethod parameter is case-sensitive. Use the correct case for all values.
HTTPS
All communication between client and server is over HTTPS.
5
REST API Compression Headers
Compression Headers
Use a compression header to compress a REST API request or response. Compression reduces the bandwidth required for a request,
although it requires more processing power at your client. In most cases, this tradeoff benefits the overall performance of your application.
REST API supports the gzip and deflate compression algorithms, as defined by the HTTP 1.1 specification. If you’re unsure about which
one to use, gzip is more common than deflate.
Tip: For better performance, we suggest that clients accept and support compression as defined by the HTTP 1.1 specification.
Request Compression
Include a Content-Encoding: gzip or Content-Encoding: deflate header to compress a request. REST API
decompresses any requests before processing.
This example request is compressed with gzip.
curl https://MyDomainName.my.salesforce.com/services/data/v55.0/sobjects/Account/ -H
"Authorization: Bearer access-token" -H "Content-Type: application/json" -H
"Content-Encoding: gzip" —data-binary @new-account.json -X POST
Response Compression
Salesforce compresses a response only if the request contains an Accept-Encoding: gzip or Accept-Encoding:
deflate header. REST API isn’t required to compress the response even if you’ve specified Accept-Encoding, but it normally does. If
compressed, the response contains a Content-Encoding header with the compression algorithm so that your client knows to decompress
it.
This example request asks for a compressed response.
curl
https://MyDomainName.my.salesforce.com/services/data/v55.0/sobjects/Account/0015e000009sS0DAAU
-H "Authorization: Bearer access-token" -H "Content-Type: application/json" -H
"Accept-Encoding: gzip" -X GET
6
REST API Conditional Request Headers
• When you include an invalid header value for If-Match, If-None-Match, or If-Unmodified-Since on a PATCH or
POST request, a 400 Bad Request status code is returned.
• The If-Range header isn’t supported.
• DELETE requests aren’t supported
ETag
The ETag header is a response header that’s returned when you access the sObject Rows resource. It’s a hash of the content that’s
used by the If-Match and If-None-Match request headers in subsequent requests to determine if the content has changed.
This header is supported by sObject Rows (Account records only) resources.
This example shows an ETag returned by REST API.
ETag: "U5iWijwWbQD18jeiXwsqxeGpZQk=-gzip"
You can find the HTTP 1.1 specification for the ETag header at www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.19 .
If-Match
The If-Match header is a request header for sObject Rows that includes a list of ETags. If the ETag of the record that you’re requesting
matches an ETag specified as a precondition in the header, the request is processed. Otherwise, a 412 Precondition Failed status code
is returned, and the request isn’t processed.
This header supports sObject Rows (Account records only) resources.
In this example an, If-Match header is included with a request.
If-Match: "Jbjuzw7dbhaEG3fd90kJbx6A0ow=-gzip", "U5iWijwWbQD18jeiXwsqxeGpZQk=-gzip"
You can find the HTTP 1.1 specification for the If-Match header at www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.24 .
If-None-Match
The If-None-Match header is a request header for sObject Rows that’s the inverse of If-Match. If the ETag of the record that
you’re requesting matches an ETag specified in the header, the request isn’t processed. A 304 Not Modified status code is returned for
GET or HEAD requests, and a 412 Precondition Failed status code is returned for PATCH requests.
This header supports sObject Rows (Account records only) resources.
In this example, an If-None-Match header is included with a request.
If-None-Match: "Jbjuzw7dbhaEG3fd90kJbx6A0ow=-gzip", "U5iWijwWbQD18jeiXwsqxeGpZQk=-gzip"
You can find the HTTP 1.1 specification for the If-None-Match header at www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.26
.
If-Modified-Since
The If-Modified-Since header is a time-based request header. The request is processed only if the data has changed since the
date and time specified in the header. Otherwise, a 304 Not Modified status code is returned, and the request isn’t processed.
This header supports sObject Rows, sObject Describe, Describe Global, and Invocable Actions resources.
7
REST API Send REST Requests with cURL
You can find the HTTP 1.1 specification for the If-Modified-Since header at
www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.25 .
If-Unmodified-Since
The If-Unmodified-Since header is a request header that’s the inverse of If-Modified-Since. If you make a request
and include the If-Unmodified-Since header, REST API processes the request only if the data hasn’t changed since the specified date.
Otherwise, a 412 Precondition Failed status code is returned, and the request isn’t processed.
This header supports sObject Rows, sObject Describe, Describe Global, and Invocable Actions resources.
In this example, an If-Unmodified-Since header is included in a request.
If-Unmodified-Since: Tue, 10 Aug 2015 00:00:00 GMT
You can find the HTTP 1.1 specification for the If-Unmodified-Since header at
www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.28 .
curl https://MyDomainName.my.salesforce.com/services/data/v55.0/sobjects/Account/ -H
"Authorization Bearer access-token" -H “Content-Type: application/json” —data-binary
@new-account.json -X POST
8
REST API Authorization Through Connected Apps and OAuth 2.0
To escape the exclamation mark in the access token, insert a backslash before it (\!) when the access token is enclosed within double
quotes. For example, the access token string in this cURL command has the exclamation mark (!) escaped.
00D50000000IehZ\!AQcAQH0dMHZfz972Szmpkb58urFRkgeBGsxL_QJWwYMfAbUeeG7c1E6LYUfiDUkWe6H34r1AAwOR8B8fLEz6n04NPGRrq0FM"
Or, you can enclose the access token within single quotes.
00D50000000IehZ!AQcAQH0dMHZfz972Szmpkb58urFRkgeBGsxL_QJWwYMfAbUeeG7c1E6LYUfiDUkWe6H34r1AAwOR8B8fLEz6n04NPGRrq0FM'
SEE ALSO:
https://developer.salesforce.com/docs/atlas.en-us.salesforce_developer_environment_tipsheet.meta/salesforce_developer_environment_tipsheet/salesforce_developer_environment_overview.htm
More Resources
Salesforce offers the following resources to help you navigate connected apps and OAuth:
• Salesforce Help: Connected Apps
• Salesforce Help: Authorize Apps with OAuth
• Salesforce Help: OpenID Connect Token Introspection
9
REST API Configure Salesforce CORS Allowlist
Tip: The origin URL pattern doesn’t always match the URL that appears in your browser's address bar.
10
REST API Valid Date and DateTime Formats
can also occur if the resource doesn’t exist. A CORS preflight confirms if resources can be passed between servers, but doesn’t check if
a specific resource exists or not. CORS preflight requests are typically issued automatically by a browser.
Note: To access certain OAuth endpoints with CORS, other requirements apply. See Enable CORS for OAuth Endpoints.
dateTime
Use the yyyy-MM-ddTHH:mm:ss.SSS+/-HH:mm or yyyy-MM-ddTHH:mm:ss.SSSZ formats to specify dateTime
fields.
• yyyy is the four-digit year
• MM is the two-digit month (01-12)
• dd is the two-digit day (01-31)
• 'T' is a separator indicating that time-of-day follows
• HH is the two-digit hour (00-23)
• mm is the two-digit minute (00-59)
• ss is the two-digit seconds (00-59)
• SSS is the optional three-digit milliseconds (000-999)
• +/-HH:mm is the Zulu (UTC) time zone offset
• 'Z' is the reference UTC timezone
When a timezone is added to a UTC dateTime, the result is the date and time in that timezone. For example, 2002-10-10T12:00:00+05:00
is 2002-10-10T07:00:00Z and 2002-10-10T00:00:00+05:00 is 2002-10-09T19:00:00Z. See W3C XML Schema Part 2: DateTime Datatype.
date
Use the yyyy-MM-dd format to specify date fields.
API End-of-Life
Salesforce is committed to supporting each API version for a minimum of three years from the date of first release. In order to mature
and improve the quality and performance of the API, versions that are more than three years old might cease to be supported.
When an API version is to be deprecated, advance notice is given at least one year before support ends. Salesforce will directly notify
customers using API versions planned for deprecation.
11
REST API API End-of-Life
Versions 7.0 through 20.0 As of Summer ‘22, these versions are retired Salesforce Platform API Versions 7.0 through 20.0
and unavailable. Retirement
If you request any resource or use an operation from a retired API version, REST API returns 410:GONE error code.
To identify requests made from old or unsupported API versions of REST API, access the free API Total Usage event type.
12
CHAPTER 2 Quick Start
In this chapter ... Get up and running with REST API by sending a few basic requests to Salesforce. This quick start takes
you from setting up a basic environment to updating a record using REST API. You can set up and use
• Quick Start REST API in many ways, but here we show you how to use a free Developer Edition org and cURL.
Prerequisites
Before using this quick start, complete all the prerequisites to avoid running into issues later.
• Step One: Set Up
Authorization
• Step Two: Walk
Through the Sample
Code
• Using Other Tools
13
Quick Start Quick Start Prerequisites
Warning: Don’t use a production org that hosts live data to complete this quick start.
Sign up for Developer Edition at https://developer.salesforce.com/signup. After signing up, you receive an email with password information.
Note: In your connected app, make sure that the Permitted Users setting has All users may self-authorize selected. Follow the
instructions in Manage OAuth Access Policies for a Connected App in Salesforce Help.
14
Quick Start Step One: Set Up Authorization
Important: Use the username-password authorization flow only if you’re handling your own credentials. Review the
recommendations and restrictions for this authorization flow in OAuth 2.0 Username-Password Flow for Special Scenarios in
Salesforce Help.
Before you obtain an access token, make sure that you’ve completed all the prerequisites listed in this quick start.
Send a request to the Salesforce OAuth endpoint using this cURL template:
Replace MyDomainName with the domain for your Salesforce org. Replace consumer-key and consumer-secret with the
consumer key and consumer secret of your connected app, which you obtained in the prerequisite steps. Replace
[email protected] and my-password with your login credentials for your Salesforce org.
If the request was unsuccessful and you’re unable to log in, see Troubleshoot Login Issues in Salesforce Help.
If the request was successful, the response contains an access token that you can use in other requests to access your data in Salesforce.
For example:
{"access_token":"00D5e000001N20Q!ASAAQEDBeG8bOwPu8NWGsvFwWNfqHOp5ZcjMpFsU6yEMxTKdBuRXNzSZ8xGVyAiY8xoy1KYkaadzRlA2F5Zd3JXqLVitOdNS",
"instance_url":"https://MyDomainName.my.salesforce.com",
"id":"https://login.salesforce.com/id/00D5e000001N20QEAS/0055e000003E8ooAAC",
"token_type":"Bearer",
"issued_at":"1627237872637",
"signature":"jmaZOgQyqUxFKAesVPsqVfAWxI62O+aH/mJhDrc8KvQ="}
SEE ALSO:
Salesforce Help: Authorize Apps with OAuth
15
Quick Start Step Two: Walk Through the Sample Code
curl https://MyDomainName.my.salesforce.com/services/data/
Here’s the output from this request, including the response header. The output specifies all valid versions (your result can include more
than one value).
Content-Length: 88
Content-Type: application/json;
charset=UTF-8 Server:
[
{
"label":"Spring '11",
"url":"/services/data/v21.0",
"version":"21.0"
}
...
]
Here’s the output from this request. You can see that sobjects is one of the available resources in Salesforce version 55.0.
{
"sobjects" : "/services/data/v55.0/sobjects",
"search" : "/services/data/v55.0/search",
"query" : "/services/data/v55.0/query",
"recent" : "/services/data/v55.0/recent"
}
Use this resource in the next request to retrieve the available objects.
16
Quick Start Step Two: Walk Through the Sample Code
Here’s the output from this request. You can see that the Account object is available.
Transfer-Encoding: chunked
Content-Type: application/json;
charset=UTF-8 Server:
{
"encoding" : "UTF-8",
"maxBatchSize" : 200,
"sobjects" : [ {
"name" : "Account",
"label" : "Account",
"custom" : false,
"keyPrefix" : "001",
"updateable" : true,
"searchable" : true,
"labelPlural" : "Accounts",
"layoutable" : true,
"activateable" : false,
"urls" : { "sobject" : "/services/data/v55.0/sobjects/Account",
"describe" : "/services/data/v55.0/sobjects/Account/describe",
"rowTemplate" : "/services/data/v55.0/sobjects/Account/{ID}" },
"createable" : true,
"customSetting" : false,
"deletable" : true,
"deprecatedAndHidden" : false,
"feedEnabled" : false,
"mergeable" : true,
"queryable" : true,
"replicateable" : true,
"retrieveable" : true,
"undeletable" : true,
"triggerable" : true },
},
...
You can get more information about the Account object in the next steps.
curl https://MyDomainName.my.salesforce.com/services/data/v55.0/sobjects/Account/ -H
"Authorization: Bearer access_token" -H "X-PrettyPrint:1"
17
Quick Start Step Two: Walk Through the Sample Code
Here’s the output from this request. You can see some basic attributes of the Account object, such as its name and label, and a list of
the most recently used accounts.
{
"objectDescribe" :
{
"name" : "Account",
"updateable" : true,
"label" : "Account",
"keyPrefix" : "001",
...
"replicateable" : true,
"retrieveable" : true,
"undeletable" : true,
"triggerable" : true
},
"recentItems" :
[
{
"attributes" :
{
"type" : "Account",
"url" : "/services/data/v55.0/sobjects/Account/001D000000INjVeIAL"
},
"Id" : "001D000000INjVeIAL",
"Name" : "asdasdasd"
},
...
]
}
The next step retrieves more detailed information about the fields in the Account object, such as field lengths and default values.
curl https://MyDomainName.my.salesforce.com/services/data/v55.0/sobjects/Account/describe/
-H "Authorization: Bearer access_token" -H "X-PrettyPrint:1"
Here’s the output from this request. You can see much more detailed information about the Account object, such as its field attributes
and child relationships.
{
"name" : "Account",
"fields" :
[
{
"length" : 18,
"name" : "Id",
"type" : "id",
18
Quick Start Step Two: Walk Through the Sample Code
"createable" : true,
"customSetting" : false,
...
}
Now you have enough information to construct useful queries and updates for the Account objects in your org, which you do in the
next steps.
The output lists the available Account names, and each name’s preceding attributes include the Account IDs.
{
"done" : true,
"totalSize" : 14,
"records" :
[
{
19
Quick Start Using Other Tools
"attributes" :
{
"type" : "Account",
"url" : "/services/data/v55.0/sobjects/Account/001D000000IRFmaIAH"
},
"Name" : "Test 1"
},
{
"attributes" :
{
"type" : "Account",
"url" : "/services/data/v55.0/sobjects/Account/001D000000IomazIAB"
},
"Name" : "Test 2"
},
...
]
}
In the next step, you use this information to update one of the accounts.
Note: You can find more information about SOQL in the Salesforce SOQL and SOSL Reference Guide.
Specify this JSON file in the REST request. The cURL notation requires the —d option when specifying data. For more information, see
http://curl.haxx.se/docs/manpage.html.
Also, specify the PATCH method, which is used for updating a REST resource. The following cURL command retrieves the specified
Account object using its ID field and updates its billing city.
curl
https://MyDomainName.my.salesforce.com/services/data/v55.0/sobjects/Account/001D000000IroHJ
-H "Authorization: Bearer access_token" -H "X-PrettyPrint:1" -H "Content-Type:
application/json" --data-binary @patchaccount.json -X PATCH
Refresh the page on the account to see that the billing address has changed to Fremont.
20
Quick Start Using Other Tools
If you don’t want to use CURL, you can use other tools to exercise the API. Possible choices include:
• Salesforce CLI.
• Postman (a third-party tool). For more information, see the Postman API Client Trailhead module.
These tools provide functionality that simplifies the process of creating and sending many API requests.
21
CHAPTER 3 Examples
In this chapter ... This section provides examples of using REST API resources to do a variety of different tasks, including
working with objects, organization information, and queries.
• Getting Information
About My
For complete reference information on REST API resources, see Reference on page 106.
Organization
• Working with Object
Metadata
• Working with
Records
• Delete Lightning
Experience Event
Series
• Working with
Searches and
Queries
• Get an Image from a
Rich Text Area Field
• Insert or Update Blob
Data
• Retrieve Blob Data
• Working with
Recently Viewed
Information
• Managing User
Passwords
• Working with
Approval Processes
and Process Rules
• Using Event
Monitoring
• Using Composite
Resources
22
Examples Getting Information About My Organization
IN THIS SECTION:
List Available REST API Versions
Use the Versions resource to list summary information about each REST API version currently available, including the version, label,
and a link to each version's root. You don’t need authentication to retrieve the list of versions.
List Organization Limits
Use the Limits resource to list your org limits.
List Available REST Resources
Use the Resources by Version resource to list the resources available for the specified API version. This provides the name and URI
of each additional resource.
Get a List of Objects
Use the Describe Global resource to list the objects available in your org and available to the logged-in user. This resource also returns
the org encoding, as well as maximum batch size permitted in queries.
Get a List of Objects If Metadata Has Changed
Use the Describe Global resource and the If-Modified-Since HTTP header to determine if an object’s metadata has changed.
23
Examples List Organization Limits
"version" : "23.0"
}
...
]
SEE ALSO:
Versions
curl https://MyDomainName.my.salesforce.com/services/data/v55.0/limits/ -H
"Authorization: Bearer token" -H "X-PrettyPrint:1"
24
Examples List Organization Limits
},
"BOZosCalloutHourlyLimit": {
"Max": 20000,
"Remaining": 20000
},
"ConcurrentAsyncGetReportInstances": {
"Max": 200,
"Remaining": 200
},
"ConcurrentEinsteinDataInsightsStoryCreation": {
"Max": 5,
"Remaining": 5
},
"ConcurrentEinsteinDiscoveryStoryCreation": {
"Max": 2,
"Remaining": 2
},
"ConcurrentSyncReportRuns": {
"Max": 20,
"Remaining": 20
},
"DailyAnalyticsDataflowJobExecutions": {
"Max": 60,
"Remaining": 60
},
"DailyAnalyticsUploadedFilesSizeMB": {
"Max": 51200,
"Remaining": 51200
},
"DailyFunctionsApiCallLimit" : {
"Max" : 235000,
"Remaining" : 235000
},
"DailyApiRequests": {
"Max": 5000,
"Remaining": 4937
},
"DailyAsyncApexExecutions": {
"Max": 250000,
"Remaining": 250000
},
"DailyBulkApiBatches": {
"Max": 15000,
"Remaining": 15000,
"API Test": {
"Max": 0,
"Remaining": 0
},
"SalesforceDX Namespace Registry": {
"Max": 0,
"Remaining": 0
}
},
"DailyBulkV2QueryFileStorageMB": {
25
Examples List Organization Limits
"Max": 976562,
"Remaining": 976562
},
"DailyBulkV2QueryJobs": {
"Max": 10000,
"Remaining": 10000
},
"DailyDurableGenericStreamingApiEvents": {
"Max": 10000,
"Remaining": 10000
},
"DailyDurableStreamingApiEvents": {
"Max": 10000,
"Remaining": 10000
},
"DailyEinsteinDataInsightsStoryCreation": {
"Max": 1000,
"Remaining": 1000
},
"DailyEinsteinDiscoveryPredictAPICalls": {
"Max": 50000,
"Remaining": 50000
},
"DailyEinsteinDiscoveryPredictionsByCDC": {
"Max": 5000000,
"Remaining": 5000000
},
"DailyEinsteinDiscoveryStoryCreation": {
"Max": 100,
"Remaining": 100
},
"DailyGenericStreamingApiEvents": {
"Max": 10000,
"Remaining": 10000,
"API Test": {
"Max": 0,
"Remaining": 0
},
"SalesforceDX Namespace Registry": {
"Max": 0,
"Remaining": 0
}
},
"DailyScratchOrgs": {
"Max": 6,
"Remaining": 6
},
"DailyStandardVolumePlatformEvents": {
"Max": 10000,
"Remaining": 10000
},
"DailyStreamingApiEvents": {
"Max": 10000,
"Remaining": 10000,
26
Examples List Organization Limits
"API Test": {
"Max": 0,
"Remaining": 0
},
"SalesforceDX Namespace Registry": {
"Max": 0,
"Remaining": 0
}
},
"DailyWorkflowEmails": {
"Max": 100000,
"Remaining": 100000
},
"DataStorageMB": {
"Max": 1024,
"Remaining": 1024
},
"DurableStreamingApiConcurrentClients": {
"Max": 20,
"Remaining": 20
},
"FileStorageMB": {
"Max": 1024,
"Remaining": 1024
},
"HourlyAsyncReportRuns": {
"Max": 1200,
"Remaining": 1200
},
"HourlyDashboardRefreshes": {
"Max": 200,
"Remaining": 200
},
"HourlyDashboardResults": {
"Max": 5000,
"Remaining": 5000
},
"HourlyDashboardStatuses": {
"Max": 999999999,
"Remaining": 999999999
},
"HourlyLongTermIdMapping": {
"Max": 100000,
"Remaining": 100000
},
"HourlyManagedContentPublicRequests": {
"Max": 50000,
"Remaining": 50000
},
"HourlyODataCallout": {
"Max": 20000,
"Remaining": 20000
},
"HourlyPublishedPlatformEvents": {
27
Examples List Organization Limits
"Max": 50000,
"Remaining": 50000
},
"HourlyPublishedStandardVolumePlatformEvents": {
"Max": 1000,
"Remaining": 1000
},
"HourlyShortTermIdMapping": {
"Max": 100000,
"Remaining": 100000
},
"HourlySyncReportRuns": {
"Max": 500,
"Remaining": 500
},
"HourlyTimeBasedWorkflow": {
"Max": 1000,
"Remaining": 1000
},
"MassEmail": {
"Max": 5000,
"Remaining": 5000
},
"MonthlyEinsteinDiscoveryStoryCreation": {
"Max": 500,
"Remaining": 500
},
"MonthlyPlatformEventsUsageEntitlement": {
"Max": 3750000,
"Remaining": 3750000
},
"Package2VersionCreates": {
"Max": 6,
"Remaining": 6
},
"Package2VersionCreatesWithoutValidation": {
"Max": 500,
"Remaining": 500
},
"PermissionSets": {
"Max": 1500,
"Remaining": 1499,
"CreateCustom": {
"Max": 1000,
"Remaining": 999
}
},
"PrivateConnectOutboundCalloutHourlyLimitMB": {
"Max": 0,
"Remaining": 0
},
"SingleEmail": {
"Max": 5000,
"Remaining": 5000
28
Examples List Available REST Resources
},
"StreamingApiConcurrentClients": {
"Max": 20,
"Remaining": 20
}
}
29
Examples List Available REST Resources
"limits" : "/services/data/v55.0/limits",
"process" : "/services/data/v55.0/process",
"dedupe" : "/services/data/v55.0/dedupe",
"async-queries" : "/services/data/v55.0/async-queries",
"query" : "/services/data/v55.0/query",
"jobs" : "/services/data/v55.0/jobs",
"localizedvalue" : "/services/data/v55.0/localizedvalue",
"mobile" : "/services/data/v55.0/mobile",
"emailConnect" : "/services/data/v55.0/emailConnect",
"consent" : "/services/data/v55.0/consent",
"tokenizer" : "/services/data/v55.0/tokenizer",
"compactLayouts" : "/services/data/v55.0/compactLayouts",
"sobjects" : "/services/data/v55.0/sobjects",
"actions" : "/services/data/v55.0/actions",
"support" : "/services/data/v55.0/support"
}
30
Examples Get a List of Objects
<dedupe>/services/data/v55.0/dedupe</dedupe>
<async-queries>/services/data/v55.0/async-queries</async-queries>
<query>/services/data/v55.0/query</query>
<jobs>/services/data/v55.0/jobs</jobs>
<localizedvalue>/services/data/v55.0/localizedvalue</localizedvalue>
<mobile>/services/data/v55.0/mobile</mobile>
<emailConnect>/services/data/v55.0/emailConnect</emailConnect>
<consent>/services/data/v55.0/consent</consent>
<tokenizer>/services/data/v55.0/tokenizer</tokenizer>
<compactLayouts>/services/data/v55.0/compactLayouts</compactLayouts>
<sobjects>/services/data/v55.0/sobjects</sobjects>
<actions>/services/data/v55.0/actions</actions>
<support>/services/data/v55.0/support</support>
</urls>
Further Information
For information about the identity resource, see Identity URLs.
For the other resources, see Reference .
curl https://MyDomainName.my.salesforce.com/services/data/v55.0/sobjects/ -H
"Authorization: Bearer token"
31
Examples Get a List of Objects If Metadata Has Changed
"replicateable" : true,
"retrieveable" : true,
"searchable" : true,
"triggerable" : true,
"undeletable" : true,
"updateable" : true,
"urls" : {
"sobject" : "/services/data/v55.0/sobjects/Account",
"describe" : "/services/data/v55.0/sobjects/Account/describe",
"rowTemplate" : "/services/data/v55.0/sobjects/Account/{ID}"
},
},
...
]
}
If changes to an object were made after March 23, 2015, the response body contains metadata for all available objects. For an example,
see Get a List of Objects.
IN THIS SECTION:
Retrieve Metadata for an Object
Use the sObject Basic Information resource to retrieve metadata for an object.
32
Examples Retrieve Metadata for an Object
curl https://MyDomainName.my.salesforce.com/services/data/v55.0/sobjects/Account/ -H
"Authorization: Bearer token"
...
"replicateable" : true,
"retrieveable" : true,
"undeletable" : true,
"triggerable" : true
},
"recentItems" :
[
{
"attributes" :
{
"type" : "Account",
"url" : "/services/data/v55.0/sobjects/Account/001D000000INjVeIAL"
},
"Id" : "001D000000INjVeIAL",
"Name" : "asdasdasd"
},
...
]
}
To get a complete description of an object, including field names and their metadata, see Get a List of Objects.
33
Examples Get Field and Other Metadata for an Object
...
],
"updateable" : true,
"label" : "Account",
"keyPrefix" : "001",
"custom" : false,
...
"urls" :
{
"uiEditTemplate" : "https://MyDomainName.my.salesforce.com/{ID}/e",
"sobject" : "/services/data/v55.0/sobjects/Account",
"uiDetailTemplate" : "https://MyDomainName.my.salesforce.com/{ID}",
...
},
"childRelationships" :
[
{
"field" : "ParentId",
"deprecatedAndHidden" : false,
...
34
Examples Get Object Metadata Changes
},
....
],
"createable" : true,
"customSetting" : false,
...
}
For more information about the items in the request body, see DescribesObjectResult in the SOAP API Developers Guide.
If there were changes to Merchandise__c made after July 3rd, 2013, the response body would contain the metadata for Merchandise__c.
See Get Field and Other Metadata for an Object for an example.
IN THIS SECTION:
Create a Record
Use the sObject Basic Information resource to create new records. You supply the required field values in the request data, and send
the request using the POST HTTP method. The response body contains the ID of the new record if the call is successful.
35
Examples Create a Record
Update a Record
You use the sObject Rows resource to update records. Provide the updated record information in your request data and use the
PATCH method of the resource with a specific record ID to update that record. Records in a single file must be of the same object
type.
Delete a Record
Use the sObject Rows resource to delete records. Specify the record ID and use the DELETE method of the resource to delete a record.
Get Field Values from a Standard Object Record
You use the GET method of the sObject Rows resource to retrieve field values from a record.
Get Field Values from an External Object Record by Using the Salesforce ID
You use the sObject Rows resource to retrieve field values from a record. Specify the fields you want to retrieve in the fields
parameter and use the GET method of the resource.
Get Field Values from an External Object Record by Using the External ID Standard Field
You use the sObject Rows resource to retrieve field values from a record. Specify the fields you want to retrieve in the fields
parameter and use the GET method of the resource.
Retrieve a Record Using an External ID
You can use the GET method of the sObject Rows by External ID resource to retrieve records with a specific external ID.
Insert or Update (Upsert) a Record Using an External ID
You can use the sObject Rows by External ID resource to create records or update existing records (upsert) based on the value of a
specified external ID field.
Traverse Relationships with Friendly URLs
You can traverse relationship fields in standard and custom objects by constructing friendly URLs using the sObject Relationship
resource. This approach allows you to directly access records associated by relationships. Using friendly URLs is an easier alternative
to accessing records by obtaining object IDs from relationship fields and then inspecting the associated object ID record.
Get a List of Deleted Records Within a Given Timeframe
Use the sObject Get Deleted resource to get a list of deleted records for the specified object. Specify the date and time range within
which the records for the given object were deleted. Deleted records are written to a delete log (that is periodically purged), and
will be filtered out of most operations, such as sObject Rows or Query (although QueryAll will include deleted records in results).
Get a List of Updated Records Within a Given Timeframe
Use the sObject Get Updated resource to get a list of updated (modified or added) records for the specified object. Specify the date
and time range within which the records for the given object were updated.
Create a Record
Use the sObject Basic Information resource to create new records. You supply the required field values in the request data, and send the
request using the POST HTTP method. The response body contains the ID of the new record if the call is successful.
The following example request creates a new Account record, with the field values for the new record provided in newaccount.json.
Only the name field is specified in this example, but you could also provide values for other Account fields.
Example for creating a new Account
curl https://MyDomainName.my.salesforce.com/services/data/v55.0/sobjects/Account/ -H
"Authorization: Bearer token" -H "Content-Type: application/json" -d "@newaccount.json"
36
Examples Update a Record
Update a Record
You use the sObject Rows resource to update records. Provide the updated record information in your request data and use the PATCH
method of the resource with a specific record ID to update that record. Records in a single file must be of the same object type.
In the following example, the Billing City within an Account is updated. The updated record information is provided in
patchaccount.json.
Example for updating an Account object
curl
https://MyDomainName.my.salesforce.com/services/data/v55.0/sobjects/Account/001D000000INjVe
-H "Authorization: Bearer token" -H "Content-Type: application/json" -d
@patchaccount.json -X PATCH
Example request body patchaccount.json file for updating fields in an Account object
{
"BillingCity" : "San Francisco"
}
37
Examples Delete a Record
"application/json", "UTF-8"));
If you use an HTTP library that doesn't allow overriding or setting an arbitrary HTTP method name, you can send a POST request and
provide an override to the HTTP method via the query string parameter _HttpMethod. In the PATCH example, you can replace the
PostMethod line with one that doesn't use override:
PostMethod m = new PostMethod(url + "?_HttpMethod=PATCH");
SEE ALSO:
sObject Rows
Delete a Record
Use the sObject Rows resource to delete records. Specify the record ID and use the DELETE method of the resource to delete a record.
Example for deleting an Account record
curl
https://MyDomainName.my.salesforce.com/services/data/v55.0/sobjects/Account/001D000000INjVe
-H "Authorization: Bearer token" -X DELETE
38
Examples Get Field Values from an External Object Record by Using the
Salesforce ID
If you don’t use the fields parameter, the request retrieves all standard and custom fields from the record. These retrieved fields are
the same as the fields returned by an sObject Describe request for the object. Fields that are inaccessible to you by field-level security
are not returned in the response body.
In the following example, the Account Number and Billing Postal Code are retrieved from an Account.
Example for retrieving values from fields on an Account object
curl
https://MyDomainName.my.salesforce.com/services/data/v55.0/sobjects/Account/001D000000INjVe
?fields=AccountNumber,BillingPostalCode -H "Authorization: Bearer token"
Get Field Values from an External Object Record by Using the Salesforce
ID
You use the sObject Rows resource to retrieve field values from a record. Specify the fields you want to retrieve in the fields parameter
and use the GET method of the resource.
In the following example, the Country__c custom field is retrieved from an external object that’s associated with a
non-high-data-volume external data source.
Example for retrieving values from fields on the Customer external object
curl
https://MyDomainName.my.salesforce.com/services/data/v55.0/sobjects/Customer__x/x01D0000000002RIAQ?fields=Country__c
-H "Authorization: Bearer token"
39
Examples Get Field Values from an External Object Record by Using the
External ID Standard Field
Get Field Values from an External Object Record by Using the External ID
Standard Field
You use the sObject Rows resource to retrieve field values from a record. Specify the fields you want to retrieve in the fields parameter
and use the GET method of the resource.
In the following example, the Country__c custom field is retrieved from an external object. Notice that the id (CACTU) isn’t a
Salesforce ID. Instead, it’s the External ID standard field of the external object.
Example for retrieving values from fields on the Customer external object
curl
https://MyDomainName.my.salesforce.com/services/data/v55.0/sobjects/Customer__x/CACTU?fields=Country__c
-H "Authorization: Bearer token"
40
Examples Insert or Update (Upsert) a Record Using an External ID
"CreatedById" : "005D0000001KyEIIA0",
"LastModifiedDate" : "2012-07-12T17:49:01.000+0000",
"LastModifiedById" : "005D0000001KyEIIA0",
"SystemModstamp" : "2012-07-12T17:49:01.000+0000",
"Description__c" : "Merch with external ID",
"Price__c" : 10.0,
"Total_Inventory__c" : 100.0,
"Distributor__c" : null,
"MerchandiseExtID__c" : 123.0
}
Important: Where possible, we changed noninclusive terms to align with our company value of Equality. We maintained certain
terms to avoid any effect on customer implementations.
• If the external ID isn’t matched, then a new record is created according to the request body.
• If the external ID is matched one time, then the record is updated according to the request body.
• If the external ID is matched multiple times, then a 300 error is reported, and the record isn’t created or updated.
The following sections show you how to work with the external ID resource to retrieve records by external ID and upsert records.
Note: In REST API, upsert uses external ids, not record ids. In Apex, however, upsert can be used with both external ids and record
ids. Be aware of the difference if you use both REST API and Apex.
41
Examples Insert or Update (Upsert) a Record Using an External ID
"created": true
}
Note: The created parameter is present in the response in API version 46.0 and later. It doesn't appear in earlier versions.
Error responses
Incorrect external ID field:
{
"message" : "The requested resource does not exist",
"errorCode" : "NOT_FOUND"
}
For more information, see Status Codes and Error Responses on page 345.
curl https://MyDomainName.my.salesforce.com/services/data/v55.0/sobjects/Account/Id -H
"Authorization: Bearer token" -H "Content-Type: application/json" -d @newrecord.json
-X POST
Note: The created parameter is present in the response in API version 46.0 and later. It doesn't appear in earlier versions.
42
Examples Insert or Update (Upsert) a Record Using an External ID
In API version 45.0 and earlier, the HTTP status code is 204 (No Content) and there isn’t a response body.
Error responses
If the external ID value isn't unique, an HTTP status code 300 is returned, plus a list of the records that matched the query. For more
information about errors, see Status Codes and Error Responses on page 345.
If the external ID field doesn't exist, an error message and code is returned:
{
"message" : "The requested resource does not exist",
"errorCode" : "NOT_FOUND"
}
43
Examples Insert or Update (Upsert) a Record Using an External ID
Note: The created parameter is present in the response in API version 46.0 and later. It doesn't appear in earlier versions.
Error responses
If the external ID value isn't unique, an HTTP status code 300 is returned, plus a list of the records that matched the query. For more
information about errors, see Status Codes and Error Responses on page 345.
If the external ID field doesn't exist, an error message and code is returned:
{
"message" : "The requested resource does not exist",
"errorCode" : "NOT_FOUND"
}
You can also use this approach to update existing records. For example, if you created the Line_Item__c shown in the example above,
you can try to update the related Merchandise__c using another request.
Example for updating a record
curl
https://MyDomainName.my.salesforce.com/services/data/v55.0/sobjects/Line_Item__c/LineItemExtID__c/456
-H "Authorization: Bearer token" -H "Content-Type: application/json" -d @updates.json
-X PATCH
44
Examples Traverse Relationships with Friendly URLs
In API version 45.0 and earlier, the HTTP status code is 204 (No Content) and there isn’t a response body.
If the relationship type is master-detail and the relationship is set to not allow reparenting, and you try to update the parent external ID,
you get an HTTP status code 400 error with an error code of INVALID_FIELD_FOR_INSERT_UPDATE.
SEE ALSO:
sObject Rows by External ID
Important: Where possible, we changed noninclusive terms to align with our company value of Equality. We maintained certain
terms to avoid any effect on customer implementations.
Relationship names follow certain conventions that depend on the direction (parent to child, or child to parent) of the relationship and
the name of the related object. The conventions are described in Understanding Relationship Names in the SOQL and SOSL Reference.
There are limits to the number of relationship traversals you can make in a single REST API call. These limits are the same as the limits
for SOQL, as described in Understanding Relationship Query Limitations in the SOQL and SOSL Reference. Keep the following limitations
in mind when traversing relationships.
• When specifying child-to-parent relationships, no more than five levels can be traversed. The following traverses two child-to-parent
relationships.
https://MyDomainName.my.salesforce.com/services/data/v55.0/sobjects/ChildOfChild__c/record
id/Child__r/ParentOfChild__r
• When specifying parent-to-child relationships, no more than one level can be traversed. The following traverses one parent-to-child
relationship.
https://MyDomainName.my.salesforce.com/services/data/v55.0/sobjects/ParentOfChild__c/record
id/Child__r
45
Examples Traverse Relationships with Friendly URLs
46
Examples Traverse Relationships with Friendly URLs
"CreatedDate" : "2011-12-16T17:43:01.000+0000",
"CreatedById" : "005D0000001KyEIIA0",
"LastModifiedDate" : "2011-12-16T17:43:01.000+0000",
"LastModifiedById" : "005D0000001KyEIIA0",
"SystemModstamp" : "2011-12-16T17:43:01.000+0000",
"Location__c" : "San Francisco"
}
If no related record is associated with the relationship name, the REST API call fails, because the relationship can’t be traversed. Using
the previous example, if the Distributor__c field in the Merchandise__c record was set to null, the GET call would return a 404 error
response.
You can traverse multiple relationships within the same relationship hierarchy in a single REST API call as long as you don’t exceed the
relationship query limits. If a Line_Item__c custom object is the child in a relationship to a Merchandise__c custom object, and
Merchandise__c also has a child Distributor__c custom object, you can access the Distributor__c record starting from the Line_Item__c
record using something like the following.
curl
https://MyDomainName.my.salesforce.com/services/data/v55.0/sobjects/Line_Item__c/a02D0000006YL7XIAW/Merchandise__r/Distributor__r
-H "Authorization: Bearer token"
Relationship traversal also supports PATCH and DELETE methods for relationships that resolve to a single record. Using the PATCH
method, you can update the related record.
Example of using PATCH to update a relationship record
curl
https://MyDomainName.my.salesforce.com/services/data/v55.0/sobjects/Merchandise__c/a01D000000INjVe/Distributor__r
-H "Authorization: Bearer token" -d @update_info.json -X PATCH
Example JSON request body for updating a relationship record contained in update_info.json
{
"Location__c" : "New York"
}
47
Examples Traverse Relationships with Friendly URLs
},
"Id" : "a02D0000006YL7XIAW",
"IsDeleted" : false,
"Name" : "LineItem1",
"CreatedDate" : "2011-12-16T17:44:07.000+0000",
"CreatedById" : "005D0000001KyEIIA0",
"LastModifiedDate" : "2011-12-16T17:44:07.000+0000",
"LastModifiedById" : "005D0000001KyEIIA0",
"SystemModstamp" : "2011-12-16T17:44:07.000+0000",
"Unit_Price__c" : 9.75,
"Units_Sold__c" : 10.0,
"Merchandise__c" : "a00D0000008oLnXIAU",
"Invoice_Statement__c" : "a01D000000D85hkIAB"
},
{
"attributes" :
{
"type" : "Line_Item__c",
"url" : "/services/data/v55.0/sobjects/Line_Item__c/a02D0000006YL7YIAW"
},
"Id" : "a02D0000006YL7YIAW",
"IsDeleted" : false,
"Name" : "LineItem2",
"CreatedDate" : "2011-12-16T18:53:59.000+0000",
"CreatedById" : "005D0000001KyEIIA0",
"LastModifiedDate" : "2011-12-16T18:53:59.000+0000",
"LastModifiedById" : "005D0000001KyEIIA0",
"SystemModstamp" : "2011-12-16T18:54:00.000+0000",
"Unit_Price__c" : 8.5,
48
Examples Traverse Relationships with Friendly URLs
"Units_Sold__c" : 8.0,
"Merchandise__c" : "a00D0000008oLnXIAU",
"Invoice_Statement__c" : "a01D000000D85hkIAB"
}
]
}
The serialized structure for the result data is the same format as result data from executing a SOQL query via REST API. See Query on
page 231 for more details on executing SOQL queries via REST API
If no related records are associated with the relationship name, the REST API call returns a 200 response with no record data in the
response body. This result is in contrast to the results when traversing an empty relationship to a single record, which returns a 404 error
response. This behavior is because the single record case resolves to a REST resource that can be used with PATCH or DELETE methods.
In contrast, the multiple record case can only be queried.
If an initial GET request for a relationship with multiple records returns only part of the results, the end of the response contains the field
nextRecordsUrl. For example, you could get a field like the following at the end of your response.
"nextRecordsUrl" : "/services/data/v55.0/query/01gD0000002HU6KIAW-2000"
You can request the next batch of records using the provided URL with your instance and session information, and repeat until all records
have been retrieved. These requests use nextRecordsUrl and don’t include any parameters. The final batch of records doesn’t
have a nextRecordsUrl field.
Example usage for retrieving the remaining results
curl
https://MyDomainName.my.salesforce.com/services/data/v55.0/query/01gD0000002HU6KIAW-2000
-H "Authorization: Bearer token"
49
Examples Get a List of Deleted Records Within a Given Timeframe
"type" : "Distributor__c",
"url" : "/services/data/v55.0/sobjects/Distributor__c/a03D0000003DUhhIAG"
},
"Location__c" : "Chicago",
}
Similarly, for requests that result in multiple records, you can use a list of fields to specify the fields returned in the record set. For example,
assume you have a relationship that was associated with two Line_Item__c records. You want just the Name and Units_Sold__c fields
from those records. You could use the following call.
curl
https://MyDomainName.my.salesforce.com/services/data/v55.0/sobjects/Merchandise__c/a01D000000INjVe/Line_Items__r?fields=Name,Units_Sold__c
-H "Authorization: Bearer token"
If any field listed in the fields parameter set isn’t visible to the active user, the REST API call fails. In the previous example, if the Units_Sold_c
field was hidden from the active user by field-level security, the call would return a 400 error response.
50
Examples Get a List of Updated Records Within a Given Timeframe
Example usage for getting a list of Merchandise__c records that were deleted between May 5th, 2013 and May 10th, 2013
curl https://MyDomainName.my/services/data/v55.0/sobjects/Merchandise__c/deleted/
?start=2013-05-05T00%3A00%3A00%2B00%3A00&end=2013-05-10T00%3A00%3A00%2B00%3A00 -H
"Authorization: Bearer token"
51
Examples Delete Lightning Experience Event Series
"a00D0000008pQRGIA2",
"a00D0000008pQRFIA2"
],
"latestDateCovered" : "2013-05-08T21:20:00.000+0000"
}
52
Examples Working with Searches and Queries
Considerations
Deleting from an event onwards doesn’t support calls from events that:
• Occurred before the original value of Recurrence2PatternStartDate.
• Are defined as child events.
If the event series originated outside of Salesforce and the event ID of the first occurrence is unavailable, you can’t delete all events in a
series. Instead, delete events from a specific occurrence onwards.
IN THIS SECTION:
Execute a SOQL Query
Use the Query resource to execute a SOQL query that returns all the results in a single response, or if needed, returns part of the
results and an identifier used to retrieve the remaining results.
Execute a SOQL Query that Includes Deleted Items
Use the QueryAll resource to execute a SOQL query that includes information about records that have been deleted because of a
merge or delete. Use QueryAll rather than Query, because the Query resource will automatically filter out items that have been
deleted.
Get Feedback on Query Performance
To get feedback on how Salesforce executes your query, report, or list view, use the Query resource along with the explain
parameter. Salesforce analyzes each query to find the optimal approach to obtain the query results. Depending on the query and
query filters, Salesforce uses an index or internal optimization. To return details on how Salesforce optimizes your query, without
actually running the query, use the explain parameter. Based on the response, decide whether to fine-tune the performance of
your query, like adding filters to make the query more selective.
Search for a String
Use the Search resource to execute a SOSL search or use the Parameterized Search resource to execute a simple RESTful search
without SOSL.
Get the Default Search Scope and Order
Use the Search Scope and Order resource to retrieve the default global search scope and order for the logged-in user, including any
pinned objects in the user’s search results page.
Get Search Result Layouts for Objects
Use the Search Result Layouts resource to retrieve the search result layout configuration for each object specified in the query string.
View Relevant Items
Use the Relevant Items resource to get a list of relevant records.
53
Examples Execute a SOQL Query
The following query requests the value from name fields from all Account records.
Example usage for executing a query
curl
https://MyDomainName.my.salesforce.com/services/data/v55.0/query/?q=SELECT+name+from+Account
-H "Authorization: Bearer token"
...
]
}
In such cases, request the next batch of records and repeat until all records have been retrieved. These requests use nextRecordsUrl,
and do not include any parameters.
Example usage for retrieving the remaining query results
curl
https://MyDomainName.my.salesforce.com/services/data/v55.0/query/01gD0000002HU6KIAW-2000
-H "Authorization: Bearer token"
54
Examples Execute a SOQL Query that Includes Deleted Items
},
"Name" : "Merchandise 1"
},
]
}
55
Examples Get Feedback on Query Performance
In such cases, request the next batch of records and repeat until all records have been retrieved. These requests use nextRecordsUrl,
and do not include any parameters.
Though the nextRecordsUrl has query in the URL, it still provides remaining results from the initial QueryAll request. The
remaining results include deleted records that matched the initial query.
Example usage for retrieving the remaining results
curl
https://MyDomainName.my.salesforce.com/services/data/v55.0/query/01gD0000002HU6KIAW-2000
-H "Authorization: Bearer token"
Note: Using explain with the Query resource is a beta feature. There’s no support for this beta feature. For more information,
contact Salesforce.
The response contains one or more query execution plans, sorted from most optimal to least optimal. The most optimal plan is the plan
that’s used when the query, report, or list view is executed.
For more details on the fields returned when using explain, see the explain parameter in Query Options Headers. For more
information on making queries more selective, see Working with Very Large SOQL Queries in the Apex Developer Guide.
curl https://MyDomainName.my.salesforce.com/services/data/v55.0/query/?explain=
SELECT+Name+FROM+Merchandise__c+WHERE+CreatedDate+=+TODAY+AND+Price__c+>+10.0
The response body for a performance feedback query looks like this:
{
"plans" : [ {
"cardinality" : 1,
"fields" : [ "CreatedDate" ],
"leadingOperationType" : "Index",
"notes" : [ {
"description" : "Not considering filter for optimization because unindexed",
56
Examples Search for a String
"fields" : [ "IsDeleted" ],
"tableEnumOrId" : "Merchandise__c"
} ],
"relativeCost" : 0.0,
"sobjectCardinality" : 3,
"sobjectType" : "Merchandise__c"
}, {
"cardinality" : 1,
"fields" : [ ],
"leadingOperationType" : "TableScan",
"notes" : [ {
"description" : "Not considering filter for optimization because unindexed",
"fields" : [ "IsDeleted" ],
"tableEnumOrId" : "Merchandise__c"
} ],
"relativeCost" : 0.65,
"sobjectCardinality" : 3,
"sobjectType" : "Merchandise__c"
} ]
}
This response indicates that Salesforce found two possible execution plans for this query. The first plan uses the CreatedDate index field
to improve the performance of this query. The second plan scans all records without using an index. If the query is executed, the first
plan is used. Both plans note that there’s no secondary optimization for filtering out records marked as deleted because the IsDeleted
field isn’t indexed.
curl https://MyDomainName.my.salesforce.com/services/data/v55.0/search/?q=FIND+%7BAcme%7D
-H "Authorization: Bearer token"
57
Examples Search for a String
"type" : "Account",
"url" : "/services/data/v55.0/sobjects/Account/001D000000IomazIAB"
},
"Id" : "001D000000IomazIAB",
} ]
}
Account search for results containing Acme, returning the id and name fields
curl
https://MyDomainName.my.salesforce.com/services/data/v55.0/parameterizedSearch/?q=Acme&sobject=Account&Account.fields=id,name&Account.limit=10
-H "Authorization: Bearer token"
Note: The metadata parameter is only returned if the request specified metadata=LABELS.
{
"searchRecords" : [ {
"attributes" : {
"type" : "Account",
"url" : "/services/data/v55.0/sobjects/Account/001D000000IqhSLIAZ"
},
"Id" : "001D000000IqhSLIAZ",
58
Examples Search for a String
}, {
"attributes" : {
"type" : "Account",
"url" : "/services/data/v55.0/sobjects/Account/001D000000IomazIAB"
},
"Id" : "001D000000IomazIAB",
} ],
"metadata" : {
"entityetadata" : [ {
"entityName" : "Account",
"fieldMetadata" : [ {
"name" : "Name",
"label" : "Account Name"
} ]
} ]
}
}
curl https://MyDomainName.my.salesforce.com/services/data/v55.0/parameterizedSearch
"Authorization: Bearer token" -H "Content-Type: application/json” -d "@search.json”
{
"q":"Smith",
"fields" : ["id", "firstName", "lastName"],
"sobjects":[{"fields":["id", "NumberOfEmployees"],
"name": "Account",
"limit":20},
{"name": "Contact"}],
"in":"ALL",
"overallLimit":100,
"defaultLimit":10
}
59
Examples Get the Default Search Scope and Order
"LastName" : "Johnson"
}, {
"attributes" : {
"type" : "Account",
"url" : "/services/data/v55.0/sobjects/Account/001xx000003DHXnAAO"
},
"Id" : "001xx000003DHXnAAO",
"NumberOfEmployees" : 100
} ]
}
SEE ALSO:
Search
Parameterized Search
curl https://MyDomainName.my.salesforce.com/services/data/v55.0/search/scopeOrder -H
"Authorization: Bearer token"
60
Examples Get Search Result Layouts for Objects
{
"type":"User",
"url":"/services/data/v55.0/sobjects/User/describe"
}
]
61
Examples Get Search Result Layouts for Objects
"name" : "Account.Name"
},
{ "field" : "Account.Site",
"format" : null,
"label" : "Account Site",
"name" : "Account.Site"
},
{ "field" : "Contact.Phone",
"format" : null,
"label" : "Phone",
"name" : "Phone"
},
{ "field" : "Contact.Email",
"format" : null,
"label" : "Email",
"name" : "Email"
},
{ "field" : "User.Alias",
"format" : null,
"label" : "Contact Owner Alias",
"name" : "Owner.Alias"
}
]
},
{ "label" : "Search Results",
"limitRows" : 25,
"searchColumns" : [ { "field" : "Lead.Name",
"format" : null,
"label" : "Name",
"name" : "Name"
},
{ "field" : "Lead.Title",
"format" : null,
"label" : "Title",
"name" : "Title"
},
{ "field" : "Lead.Phone",
"format" : null,
"label" : "Phone",
"name" : "Phone"
},
{ "field" : "Lead.Company",
"format" : null,
"label" : "Company",
"name" : "Company"
},
{ "field" : "Lead.Email",
"format" : null,
"label" : "Email",
"name" : "Email"
},
{ "field" : "Lead.Status",
"format" : null,
"label" : "Lead Status",
62
Examples View Relevant Items
"name" : "toLabel(Status)"
},
{ "field" : "Name.Alias",
"format" : null,
"label" : "Owner Alias",
"name" : "Owner.Alias"
}
]
},
]
curl https://MyDomainName.my.salesforce.com/services/data/v55.0/sobjects/relevantItems
-H "Authorization: Bearer token"
63
Examples View Relevant Items
Example usage for comparing the user’s current list of relevant records to a previous version
curl
https://MyDomainName.my.salesforce.com/services/data/v55.0/sobjects/relevantItems?lastUpdatedId=102959935
-H "Authorization: Bearer token"
64
Examples Get an Image from a Rich Text Area Field
Example usage for comparing the user’s current list of relevant records to a previous version for a particular object
curl
https://MyDomainName.my.salesforce.com/services/data/v55.0/sobjects/relevantItems?mode=MRU&sobjects=Account,Contact&Account.lastUpdatedId=102959935
-H "Authorization: Bearer token"
SEE ALSO:
sObject Relevant Items
...
65
Examples Insert or Update Blob Data
You can see from the LeadPhotoRichText__c field that the refid of the image is 0EM5e000000B9LQ. Use this value in the next
step to retrieve the image.
curl
https://MyDomainName.my.salesforce.com/services/data/v55.0/sobjects/Lead/00Q112222233333/richTextImageFields/LeadPhotoRichText__c/0EMR00000000A8V
-H "Authorization: Bearer token" --output "LeadPhoto.jpeg"
Note: You can insert or update blob data using a non-multipart message, but you are limited to 50 MB of text data or 37.5 MB
of base64–encoded data.
These sections provide examples of how to insert or update blob data using a multipart content-type request. The request bodes for
these examples use JSON formatting.
Tip: After you successfully send the request, you can view the new Document in Salesforce Classic. Salesforce Lightning doesn’t
display Documents in the user interface.
66
Examples Insert or Update Blob Data
curl https://MyDomainName.my.salesforce.com/services/data/v55.0/sobjects/Document/ -H
"Authorization: Bearer token" -H "Content-Type: multipart/form-data;
boundary=\"boundary_string\"" --data-binary @NewDocument.json
{
"Description" : "Marketing brochure for Q1 2011",
"Keywords" : "marketing,sales,update",
"FolderId" : "005D0000001GiU7",
"Name" : "Marketing Brochure Q1",
"Type" : "pdf"
}
--boundary_string
Content-Type: application/pdf
Content-Disposition: form-data; name="Body"; filename="2011Q1MktgBrochure.pdf"
--boundary_string--
67
Examples Insert or Update Blob Data
{
"Name" : "Marketing Brochure Q1 - Sales",
"Keywords" : "sales, marketing, first quarter"
}
--boundary_string
Content-Type: application/pdf
Content-Disposition: form-data; name="Body"; filename="2011Q1MktgBrochure.pdf"
--boundary_string--
Inserting a ContentVersion
This example inserts a new ContentVersion. In addition to the binary data of the file itself, this code also provides values for other fields,
such as the ReasonForChange and PathOnClient. This message contains the ContentDocumentId because a
ContentVersion is always associated with a ContentDocument.
Tip: The ContentVersion object doesn’t support updates. Therefore, you can’t update a ContentVersion. You can only insert a new
ContentVersion. You can see the results of your changes on the Content tab.
Example usage for inserting a ContentVersion
curl https://MyDomainName.my.salesforce.com/services/data/v55.0/sobjects/ContentVersion
-H "Authorization: Bearer token" -H "Content-Type: multipart/form-data;
boundary=\"boundary_string\"" --data-binary @NewContentVersion.json
68
Examples Insert or Update Blob Data
{
"ContentDocumentId" : "069D00000000so2",
"ReasonForChange" : "Marketing materials updated",
"PathOnClient" : "Q1 Sales Brochure.pdf"
}
--boundary_string
Content-Type: application/octet-stream
Content-Disposition: form-data; name="VersionData"; filename="Q1 Sales Brochure.pdf"
--boundary_string--
Tip: After you successfully send the request, you can view the new Document in Salesforce Classic. Salesforce Lightning doesn’t
display Documents in the user interface.
Attributes
If you’re using sObject Collections with blob data, you must specify certain attribute values in addition to type in the request
body’s attributes map.
Parameter Description
binaryPartName Required for blob data. A unique identifier for the binary part.
binaryPartNameAlias Required for blob data. The name of the field in which the binary data is inserted or
updated.
69
Examples Insert or Update Blob Data
curl https://MyDomainName.my.salesforce.com/services/data/v55.0/composite/sobjects/ -H
"Authorization: Bearer token" -H "Content-Type: multipart/form-data;
boundary=\"boundary_string\"" --data-binary @newdocuments.json
{
"allOrNone" : false,
"records" :
[
{
"attributes" :
{
"type" : "Document",
"binaryPartName": "binaryPart1",
"binaryPartNameAlias": "Body"
},
"Description" : "Marketing Brochure",
"FolderId" : "005xx000001Svs4AAC",
"Name" : "Brochure",
"Type" : "pdf"
},
{
"attributes" :
{
"type" : "Document",
"binaryPartName": "binaryPart2",
"binaryPartNameAlias": "Body"
},
"Description" : "Pricing Overview",
"FolderId" : "005xx000001Svs4AAC",
"Name" : "Pricing",
"Type" : "pdf"
}
]
}
--boundary_string
Content-Disposition: form-data; name="binaryPart1"; filename="Brochure.pdf"
Content-Type: application/pdf
--boundary_string
Content-Disposition: form-data; name="binaryPart2"; filename="Pricing.pdf"
Content-Type: application/pdf
70
Examples Insert or Update Blob Data
--boundary_string--
• Must contain a filename attribute for the binary part that represents the name of the local file.
Content-Type Header
• Required in each part of the multipart request body.
71
Examples Retrieve Blob Data
• Supports the application/json and application/xml content types for the non-binary part of the multipart
request body.
• Supports any content type for the binary part of the multipart request body.
New Line
A new line must be added between the header and the data for each part of the multipart request body. As you can see in the
examples, a new line separates the Content-Type and Content-Disposition headers from the JSON or binary data.
SEE ALSO:
sObject Basic Information
sObject Rows
sObject Collections
Retrieve Blob Data
Note: Only certain standard objects have blob fields, such as Attachment, ContentDocument, ContentNote, Document, Folder,
and Note. To see which standard objects contain blob data, see Working with Blob Data.
The following example retrieves the blob data for the Document record that was created in Insert or Update Blob Data on page 66.
SEE ALSO:
Insert or Update Blob Data
72
Examples View Recently Viewed Records
IN THIS SECTION:
View Recently Viewed Records
Use the Recently Viewed Items resource to get a list of recently viewed records.
Mark Records as Recently Viewed
To mark a record as recently viewed using REST API, use the Query resource with a FOR VIEW or FOR REFERENCE clause. Use
SOQL to mark records as recently viewed to ensure that information such as the date and time the record was viewed is correctly
set.
curl https://MyDomainName.my.salesforce.com/services/data/v55.0/recent/?limit=2 -H
"Authorization: Bearer token"
73
Examples Managing User Passwords
Example usage for executing a query that marks one Account record as recently viewed
curl
https://MyDomainName.my.salesforce.com/services/data/v55.0/query/?q=SELECT+Name+FROM+Account+LIMIT+1+FOR+VIEW
-H "Authorization: Bearer token"
]
}
SEE ALSO:
Query
IN THIS SECTION:
Manage User Passwords
Use the sObject User Password resource to set, reset, or get information about a user password. Use the HTTP GET method to get
password expiration status, the HTTP POST method to set the password, and the HTTP DELETE method to reset the password.
74
Examples Manage User Passwords
Here is an example of retrieving the current password expiration status for a user:
Example usage for getting current password expiration status
curl
https://MyDomainName.my.salesforce.com/services/data/v55.0/sobjects/User/005D0000001KyEIIA0/password
-H "Authorization: Bearer token"
XML example response body for getting current password expiration status
<Password>
<isExpired>false</isExpired>
</Password>
75
Examples Working with Approval Processes and Process Rules
SEE ALSO:
sObject User Password
IN THIS SECTION:
Get a List of All Approval Processes
Use the Process Approvals resource to get information about approvals.
Submit a Record for Approval
Use the Process Approvals resource to submit a record or a collection of records for approval. Each call takes an array of requests.
Approve a Record
Use the Process Approvals resource to approve a record or a collection of records. Each call takes an array of requests. The current
user must be an assigned approver.
Reject a Record
Use the Process Approvals resource to reject a record or a collection of records. Each call takes an array of requests. The current user
must be an assigned approver.
Bulk Approvals
Use the Process Approvals resource to do bulk approvals. You can specify a collection of different Process Approvals requests to have
them all executed in bulk.
Get a List of Process Rules
Use the Process Rules resource to get information about process rules.
Get a Particular Process Rule
Use the Process Rules resource and specify thesObjectName and workflowRuleId of the rule you want to get the metadata
for.
76
Examples Get a List of All Approval Processes
curl https://MyDomainName.my.salesforce.com/services/data/v55.0/process/approvals/ -H
"Authorization: Bearer token"
curl https://MyDomainName.my.salesforce.com/services/data/v55.0/process/approvals/ -H
"Authorization: Bearer token" -H "Content-Type: application/json" -d @submit.json"
77
Examples Approve a Record
[ {
"actorIds" : [ "005D00000015rY9IAI" ],
"entityId" : "001D000000I8mImIAJ",
"errors" : null,
"instanceId" : "04gD0000000Cvm5IAC",
"instanceStatus" : "Pending",
"newWorkitemIds" : [ "04iD0000000Cw6SIAS" ],
"success" : true } ]
Approve a Record
Use the Process Approvals resource to approve a record or a collection of records. Each call takes an array of requests. The current user
must be an assigned approver.
Example usage
curl https://MyDomainName.my.salesforce.com/services/data/v55.0/process/approvals/ -H
"Authorization: Bearer token" -H "Content-Type: application/json" -d @approve.json"
[ {
"actorIds" : null,
"entityId" : "001D000000I8mImIAJ",
"errors" : null,
"instanceId" : "04gD0000000CvmAIAS",
"instanceStatus" : "Approved",
"newWorkitemIds" : [ ],
"success" : true
} ]
Reject a Record
Use the Process Approvals resource to reject a record or a collection of records. Each call takes an array of requests. The current user
must be an assigned approver.
Example usage
curl https://MyDomainName.my.salesforce.com/services/data/v55.0/process/approvals/ -H
"Authorization: Bearer token" -H "Content-Type: application/json" -d @reject.json"
78
Examples Bulk Approvals
[ {
"actorIds" : null,
"entityId" : "001D000000I8mImIAJ",
"errors" : null,
"instanceId" : "04gD0000000CvmFIAS",
"instanceStatus" : "Rejected",
"newWorkitemIds" : [ ],
"success" : true
} ]
Bulk Approvals
Use the Process Approvals resource to do bulk approvals. You can specify a collection of different Process Approvals requests to have
them all executed in bulk.
Example usage
curl https://MyDomainName.my.salesforce.com/services/data/v55.0/process/approvals/ -H
"Authorization: Bearer token" -H "Content-Type: application/json" -d @bulk.json"
79
Examples Get a List of Process Rules
[ {
"actorIds" : null,
"entityId" : "001D000000I8mImIAJ",
"errors" : null,
"instanceId" : "04gD0000000CvmZIAS",
"instanceStatus" : "Approved",
"newWorkitemIds" : [ ],
"success" : true
}, {
"actorIds" : null,
"entityId" : "003D000000QBZ08IAH",
"errors" : null,
"instanceId" : "04gD0000000CvmeIAC",
"instanceStatus" : "Approved",
"newWorkitemIds" : [ ],
"success" : true
}, {
"actorIds" : [ "005D00000015rY9IAI" ],
"entityId" : "001D000000JRWBdIAP",
"errors" : null,
"instanceId" : "04gD0000000CvmfIAC",
"instanceStatus" : "Pending",
"newWorkitemIds" : [ "04iD0000000Cw6wIAC" ],
"success" : true
} ]
curl https://MyDomainName.my.salesforce.com/services/data/v55.0/process/rules/ -H
"Authorization: Bearer token"
{
"rules" : {
"Account" : [ {
"actions" : [ {
"id" : "01VD0000000D2w7",
"name" : "ApprovalProcessTask",
"type" : "Task"
} ],
"description" : null,
"id" : "01QD0000000APli",
"name" : "My Rule",
80
Examples Get a Particular Process Rule
"namespacePrefix" : null,
"object" : "Account"
} ]
}
}
{
"actions" : [ {
"id" : "01VD0000000D2w7",
"name" : "ApprovalProcessTask",
"type" : "Task"
} ],
"description" : null,
"id" : "01QD0000000APli",
"name" : "My Rule",
"namespacePrefix" : null,
"object" : "Account"
}
curl https://MyDomainName.my.salesforce.com/services/data/v55.0/process/rules/ -H
"Authorization: Bearer token" -H "Content-Type: application/json" -d @rules.json"
81
Examples Using Event Monitoring
{
"errors" : null,
"success" : true
}
Note: For the supported event types that you can use with event monitoring, see Object Reference for Salesforce and Lightning
Platform: EventLogFile Object.
When using event monitoring, keep the following in mind.
• In the unlikely case in which no log files are generated for 24 hours, contact Salesforce Customer Support.
• Log data is read only. You can’t insert, update, or delete log data.
• Use the EventType field to determine which files were generated for your org.
• An event generates log data in real time. However, daily log files are generated during nonpeak hours the day after an event takes
place. Therefore, daily log file data is unavailable for at least one day after an event. For hourly log files, depending on event delivery
and final processing time, an event is expected to take three to six hours from the time of the event to be available in the log file.
However, it can take longer.
• Log files are generated only when at least one event of a type (represented by the EventType field) occurs for the day or hour.
If no events took place, the file isn’t generated.
• Log files are available for 30 days after their CreatedDatein orgs with Event Monitoring licenses, after which they are automatically
deleted. In all Developer Edition orgs, log files are available for one day.
• All event monitoring logs are exposed to the API through the EventLogFile object. However, there is no access through the user
interface, except through the Event Monitoring Analytics app.
• Log files don’t count towards your org’s data or file storage allocations.
• Event Monitoring log files aren’t a system of record for user activity. They are a source of truth, but aren’t durable. During Salesforce
site switches, instance refreshes, or unplanned system outages, data loss can occur. For example, if Salesforce moves your production
org instance, your event log files might have a gap in data. Salesforce makes commercially reasonable efforts to preserve event log
file data integrity and avoid data loss. When Salesforce performs a site switch or instance refresh, it uses an automated process to
replicate event logs.
• Hourly event log files are provided for you to review events in your orgs on an accelerated basis. However, it’s possible that you don’t
get all event log data in hourly event log files, especially during site switches, instance refreshes, or unplanned system outages. For
complete data, use the daily log files.
• If event transmission failures take too long to recover from, log files are retransmitted to ensure that they are delivered at least once.
As a result, latent log files can sometimes contain duplicate event data. When your application consumes latent log files, make sure
that your application handles duplicate event delivery.
• We recommend that you always query the EventLogFile object for new log files to ensure that you also include latent ones. Use the
EventLogFile CreatedDate field to identify newly created log files. Hourly and daily incremental logs are delivered differently.
See Differences Between Hourly and 24-Hour Event Logs for details.
82
Examples Describe Event Monitoring Using REST
All queries and examples in this section require the View Event Log Files and API Enabled user permissions. Users with the View All Data
permission can also view event monitoring data.
IN THIS SECTION:
Describe Event Monitoring Using REST
Use the sObject Describe resource to retrieve all metadata for an object, including information about fields, URLs, and child relationships.
Query Event Monitoring Data with REST
Use the Query resource to retrieve field values from a record. Specify the fields you want to retrieve in the fields parameter and use
the GET method of the resource.
Get Event Monitoring Content from a Record
Use the sObject Blob Retrieve resource to retrieve BLOB data for a given record.
Download Large Event Log Files Using cURL with REST
You might have some event log files that are larger than your tool can handle. A command line tool such as cURL is one method to
download files larger than 100 MB using the sObject Blob Retrieve object
Delete Event Monitoring Data
You can delete event log files that contain a user’s log data. Deleting log files helps you comply with data protection and privacy
regulations and controls the information that others can access. You can’t delete individual rows from event logs. Instead, you must
delete the entire log file that contains the user activity.
Query or View Hourly Event Log Files
To review events in your org on an accelerated basis, get event log files in hourly increments for recent activity. Hourly event log
files can give you quicker visibility into security anomalies and custom code performance issues.
83
Examples Query Event Monitoring Data with REST
"calculated" : false,
"calculatedFormula" : null,
"cascadeDelete" : false,
"caseSensitive" : false,
"controllerName" : null,
"createable" : false,
...
}
"LogDate" : "2014-03-14T00:00:00.000+0000",
"LogFileLength" : 2692.0
}, {
"attributes" : {
"type" : "EventLogFile",
"url" : "/services/data/v55.0/sobjects/EventLogFile/0ATD000000001SdOAI" },
"Id" : "0ATD000000001SdOAI",
"EventType" : "API",
"LogFile" :
"/services/data/v55.0/sobjects/EventLogFile/0ATD000000001SdOAI/LogFile",
"LogDate" : "2014-03-13T00:00:00.000+0000",
"LogFileLength" : 1345.0
}, {
"attributes" : {
"type" : "EventLogFile",
"url" : "/services/data/v55.0/sobjects/EventLogFile/0ATD000000003p1OAA" },
"Id" : "0ATD000000003p1OAA",
"EventType" : "API",
"LogFile" :
84
Examples Get Event Monitoring Content from a Record
"/services/data/v55.0/sobjects/EventLogFile/0ATD000000003p1OAA/LogFile",
"LogDate" : "2014-06-21T00:00:00.000+0000",
"LogFileLength" : 605.0 },
{ "attributes" : {
"type" : "EventLogFile",
"url" : "/services/data/v55.0/sobjects/EventLogFile/0ATD0000000055eOAA" },
"Id" : "0ATD0000000055eOAA",
"EventType" : "API",
"LogFile" :
"/services/data/v55.0/sobjects/EventLogFile/0ATD0000000055eOAA/LogFile",
"LogDate" : "2014-07-03T00:00:00.000+0000",
"LogFileLength" : 605.0
} ]
}
85
Examples Delete Event Monitoring Data
Example: Use the “X-PrettyPrint” header and the “-o” flag to output large files to .csv formats
This command downloads a file onto your machine into your downloads folder.
curl
https://MyDomainName.my.salesforce.com/services/data/v55.0/sobjects/EventLogFile/0AT30000000000uGAA/LogFile
-H "Authorization: Bearer token" -H "X-PrettyPrint:1" -o ~/downloads/outputLogFile.csv
We recommend using compression when downloading large event log files. See Compression Headers.
Note: You can’t delete individual rows from event logs. Because event logs are stored in blob format in the database, you must
delete the entire log file that contains the user activity.
1. In Setup, in the Quick Find box, enter Event, and then select Event Monitoring Settings.
2. Enable deletion of event monitoring data. This action is recorded in Setup Audit Trail.
The Delete Event Monitoring Records user permission is now available to assign to a permission set. (Alternatively, you can assign
the user permission to a custom profile.)
3. In Setup, in the Quick Find box, enter Permission, and then select Permission Sets.
4. Create a permission set that includes the Delete Event Monitoring Records user permission, and save the permission set.
5. In Setup, in the Quick Find box, enter users, and then select Users.
6. Select the user you want to grant permission to delete event monitoring data.
7. In the Permission Set Assignment section for this user, assign the permission set, and click Save. This action is recorded in Setup
Audit Trail.
Users assigned this permission set (or any custom profile that includes the Delete Event Monitoring Records user permission) can
now delete event monitoring data. The next steps show you how to use the API to delete the data.
8. To locate the logs containing the user activity that you want to delete, query the EventLogFile object. For details, see Query Event
Monitoring Data with REST on page 84.
86
Examples Query or View Hourly Event Log Files
• Depending on event delivery and final processing time, an event is expected to take three to
six hours from the time of the event to be available in the log file. However, it can take longer.
• When delays in processing occur and event logs for a particular hour arrive later, a new log file is created for the event/date/hour
and lists only the new events. Use the creation date and an incremental sequence number to identify a new log file. Always use the
most recently processed event log file for a particular date. However, if event log files have already been pulled into a third-party
application, they could require deduplication in that application.
If both hourly and daily logs are enabled, daily logs always have a sequence number of 0 because there is only one file per daily
interval. CreatedDate indicates when the file was generated. If CreatedDate is after the last event log file download, there are new
events to be processed.
For best practices, use CreatedDate in the WHERE clause to select logs created after the last downloaded event log file. For example,
if the last downloaded file was at 12PM 2/1/2018, to find the next log file, use +CreatedDate+>+"2018-02-01T12:00:00Z" in the
WHERE clause.
• Your event log files may show a gap in data during site switches, instance refreshes, or unplanned system outages. However, during
site switches and instance refreshes, Salesforce makes a commercially reasonable effort to avoid such data loss by using an automated
process to replicate event logs.
• In the unlikely case in which no log files are generated for 24 hours, contact Salesforce Support.
IN THIS SECTION:
Query Hourly Event Log Files
You query hourly event log files in the same way you query 24-hour log files.
Differences Between Hourly and 24-Hour Event Logs
You receive event log files approximately every hour in addition to 24-hour log files. Review the differences between the two logs
so that you can filter your files to analyze the event data you want.
87
Examples Query or View Hourly Event Log Files
If your sandbox org has URI events, you see log file records in your query results. You can also download the event log files to review the
data in a CSV file. For more information, see Trailhead: Download and Visualize Event Log Files.
Available in the API. You can manually import data into third-party Available in the API and integrated with the Event Monitoring
visualization apps. Analytics app and third-party visualization apps.
Key values in the EventLogFile object are: Key values in the EventLogFile object are:
• Interval—Hourly • Interval—Daily
• CreatedDate—Timestamp of when the log file was • CreatedDate—Timestamp of when the log file was
created. Use this field to identify new files. created. Use this field to identify new files.
• LogDate—Timestamp that marks the beginning of the • LogDate—Timestamp that marks the beginning of the
interval when the events occurred. For example, for events interval when the events occurred. For example, for events
that occurred between 11:00 AM and 12:00 PM on 3/7/2016, that occurred on 3/7/2016, this field’s value is
this field’s value is 2016-03-07T11:00:00.000Z. 2016-03-07T00:00:00.000+0000.
• Sequence—1+. This value increases by 1 when events are • Sequence—0
added in the same hour after the latest event log file is created.
The value resets to 1 in the subsequent hour.
See also these Considerations regarding hourly event logs.
When an hourly incremental log file is delivered, a file with new When a daily incremental log file is delivered, a new file replaces
logs for that hour is created. The Sequence field is incremented the original file with the full set of available logs for that date. The
for each new file. CreatedDate field is updated.
Note: Like with 24-hour event monitoring, hourly event log data is available for the past 30 days.
88
Examples Using Composite Resources
IN THIS SECTION:
Execute Dependent Requests in a Single API Call
The following example uses the Composite resource to execute several dependent requests all in a single call. First, it creates an
account and retrieves its information. Next it uses the account data and the Composite resource’s reference ID functionality to create
a contact and populate its fields based on the account data. Then it retrieves specific information about the account’s owner by
using query parameters in the request string. Finally, if the metadata has been modified since a certain date, it retrieves account
metadata. The composite.json file contains the composite request and subrequest data.
Update an Account, Create a Contact, and Link Them with a Junction Object
The following example uses the Composite resource to update some fields on an account, create a contact, and link the two records
with a junction object called AccountContactJunction. All these requests are executed in a single call. The
composite.json file contains the composite request and subrequest data.
Update a Record and Get Its Field Values in a Single Request
Use the Composite Batch resource to execute multiple requests in a single API call.
Upsert an Account and Create a Contact
The following example uses the Composite resource to upsert an account and create a contact that is linked to the account. All these
requests are executed in a single call. The composite.json file contains the composite request and subrequest data.
Create Nested Records
Use the sObject Tree resource to create nested records that share a root record type. For example, in a single request, you can create
an account along with its child contacts, and a second account along with its child accounts and contacts. Once the request is
processed, the records are created and parents and children are automatically linked by ID. In the request data, you supply the record
hierarchies, required and optional field values, each record’s type, and a reference ID for each record, and then use the POST method
of the resource. The response body will contain the IDs of the created records if the request is successful. Otherwise, the response
contains only the reference ID of the record that caused the error and the error information.
Create Multiple Records
While the sObject Tree resource can be used to create nested records, you can also create multiple, unrelated records of the same
type. In a single request, you can create up to two hundred records. In the request data, you supply the required and optional field
values for each record, each record’s type, and a reference ID for each record, and then use the POST method of the resource. The
response body will contain the IDs of the created records if the request is successful. Otherwise, the response contains only the
reference ID of the record that caused the error and the error information.
Using a Composite Graph
This example shows how to use a composite graph. It also demonstrates how one request can use more than one composite graph.
89
Examples Execute Dependent Requests in a Single API Call
curl https://yourInstance.salesforce.com/services/data/v55.0/composite/ -H
"Authorization: Bearer token -H "Content-Type: application/json" -d "@composite.json"
},{
"method" : "GET",
"referenceId" : "AccountMetadata",
"url" : "/services/data/v55.0/sobjects/Account/describe",
"httpHeaders" : {
"If-Modified-Since" : "Tue, 31 May 2016 18:13:37 GMT"
}
}]
}
90
Examples Execute Dependent Requests in a Single API Call
91
Examples Update an Account, Create a Contact, and Link Them with
a Junction Object
"ETag" : "\"f2293620\"",
"Last-Modified" : "Fri, 22 Jul 2016 18:45:56 GMT"
},
"httpStatusCode" : 304,
"referenceId" : "AccountMetadata"
}]
}
Update an Account, Create a Contact, and Link Them with a Junction Object
The following example uses the Composite resource to update some fields on an account, create a contact, and link the two records
with a junction object called AccountContactJunction. All these requests are executed in a single call. The composite.json
file contains the composite request and subrequest data.
Update an account, create a contact, and link them with a junction object
curl https://yourInstance.salesforce.com/services/data/v55.0/composite/ -H
"Authorization: Bearer token -H "Content-Type: application/json" -d "@composite.json"
92
Examples Update a Record and Get Its Field Values in a Single Request
curl https://yourInstance.salesforce.com/services/data/v55.0/composite/batch/ -H
"Authorization: Bearer token -H "Content-Type: application/json" -d "@batch.json"
93
Examples Upsert an Account and Create a Contact
"method" : "GET",
"url" : "v55.0/sobjects/account/001D000000K0fXOIAZ?fields=Name,BillingPostalCode"
}]
}
SEE ALSO:
Composite Batch
curl https://yourInstance.salesforce.com/services/data/v55.0/composite/ -H
"Authorization: Bearer token -H "Content-Type: application/json" -d "@composite.json"
94
Examples Create Nested Records
"body" : {
"LastName" : "Harrison",
"AccountId" : "@{NewAccount.id}"
}
}]
}
SEE ALSO:
sObject Rows by External ID
95
Examples Create Nested Records
Example for creating two new accounts and their child records
curl https://yourInstance.salesforce.com/services/data/v55.0/composite/tree/Account/
-H "Authorization: Bearer token -H "Content-Type: application/json" -d "@newrecords.json"
Example request body newrecords.json file for creating two new Accounts and their child records
{
"records" :[{
"attributes" : {"type" : "Account", "referenceId" : "ref1"},
"name" : "SampleAccount1",
"phone" : "1234567890",
"website" : "www.salesforce.com",
"numberOfEmployees" : "100",
"industry" : "Banking",
"Contacts" : {
"records" : [{
"attributes" : {"type" : "Contact", "referenceId" : "ref2"},
"lastname" : "Smith",
"Title" : "President",
"email" : "[email protected]"
},{
"attributes" : {"type" : "Contact", "referenceId" : "ref3"},
"lastname" : "Evans",
"title" : "Vice President",
"email" : "[email protected]"
}]
}
},{
"attributes" : {"type" : "Account", "referenceId" : "ref4"},
"name" : "SampleAccount2",
"phone" : "1234567890",
"website" : "www.salesforce.com",
"numberOfEmployees" : "52000",
"industry" : "Banking",
"childAccounts" : {
"records" : [{
"attributes" : {"type" : "Account", "referenceId" : "ref5"},
"name" : "SampleChildAccount1",
"phone" : "1234567890",
"website" : "www.salesforce.com",
"numberOfEmployees" : "100",
"industry" : "Banking"
}]
},
"Contacts" : {
"records" : [{
"attributes" : {"type" : "Contact", "referenceId" : "ref6"},
"lastname" : "Jones",
"title" : "President",
"email" : "[email protected]"
}]
}
}]
}
96
Examples Create Multiple Records
Once the request is processed, all six records are created with the parent-child relationships specified in the request.
SEE ALSO:
sObject Tree
curl https://yourInstance.salesforce.com/services/data/v55.0/composite/tree/Account/
-H "Authorization: Bearer token -H "Content-Type: application/json" -d "@newrecords.json"
Example request body newrecords.json file for creating four new accounts
{
"records" :[{
"attributes" : {"type" : "Account", "referenceId" : "ref1"},
"name" : "SampleAccount1",
"phone" : "1111111111",
"website" : "www.salesforce.com",
"numberOfEmployees" : "100",
97
Examples Using a Composite Graph
"industry" : "Banking"
},{
"attributes" : {"type" : "Account", "referenceId" : "ref2"},
"name" : "SampleAccount2",
"phone" : "2222222222",
"website" : "www.salesforce2.com",
"numberOfEmployees" : "250",
"industry" : "Banking"
},{
"attributes" : {"type" : "Account", "referenceId" : "ref3"},
"name" : "SampleAccount3",
"phone" : "3333333333",
"website" : "www.salesforce3.com",
"numberOfEmployees" : "52000",
"industry" : "Banking"
},{
"attributes" : {"type" : "Account", "referenceId" : "ref4"},
"name" : "SampleAccount4",
"phone" : "4444444444",
"website" : "www.salesforce4.com",
"numberOfEmployees" : "2500",
"industry" : "Banking"
}]
}
SEE ALSO:
sObject Tree
98
Examples Using a Composite Graph
• Composite graphs extend this by allowing you to assemble a more complicated and complete series of related objects and records.
• Composite graphs also enable you to ensure that the steps in a given set of operations are either all completed or all not completed.
This avoids requiring you to check for a mix of successful and unsuccessful results.
• Regular composite requests have a limit of 25 subrequests. Composite graphs increase this limit to 500. This gives a single API call
much greater power.
Create a request:
curl --request POST \
--header "Authorization: Bearer token" \
--header "Content-Type: application/json" \
--data @data.json \
instance.salesforce.com/services/data/vXX.X/composite/graph
where the file data.json contains the JSON definition of the graphs. The general format for the JSON is:
{
"graphs": [
{
"graphId": "graphId",
"compositeRequest": [
compositeSubrequest,
compositeSubrequest,
...
]
},
{
"graphId": "graphId",
"compositeRequest": [
compositeSubrequest,
compositeSubrequest,
...
]
},
...
]
}
99
Examples Using a Composite Graph
{
"url" : "/services/data/v50.0/sobjects/Contact/",
"body" : {
"FirstName" : "Nellie",
"LastName" : "Cashman",
"AccountId" : "@{reference_id_account_1.id}"
},
"method" : "POST",
"referenceId" : "reference_id_contact_1"
},
{
"url" : "/services/data/v50.0/sobjects/Opportunity/",
"body" : {
"CloseDate" : "2024-05-22",
"StageName" : "Prospecting",
"Name" : "Opportunity 1",
"AccountId" : "@{reference_id_account_1.id}"
},
"method" : "POST",
"referenceId" : "reference_id_opportunity_1"
}
]
},
{
"graphId" : "2",
"compositeRequest" : [
{
"url" : "/services/data/v50.0/sobjects/Account/",
"body" : {
"name" : "Easy Spaces"
},
"method" : "POST",
"referenceId" : "reference_id_account_2"
},
{
"url" : "/services/data/v50.0/sobjects/Contact/",
"body" : {
"FirstName" : "Charlie",
"LastName" : "Dawson",
"AccountId" : "@{reference_id_account_2.id}"
},
"method" : "POST",
"referenceId" : "reference_id_contact_2"
}
]
}
]
}
100
Examples Using a Composite Graph
"graphResponse" : {
"compositeResponse" : [
{
"body" : {
"id" : "001R00000064wc7IAA",
"success" : true,
"errors" : [ ]
},
"httpHeaders" : {
"Location" : "/services/data/v50.0/sobjects/Account/001R00000064wc7IAA"
},
"httpStatusCode" : 201,
"referenceId" : "reference_id_account_1"
},
{
"body" : {
"id" : "003R000000DDMlTIAX",
"success" : true,
"errors" : [ ]
},
"httpHeaders" : {
"Location" : "/services/data/v50.0/sobjects/Contact/003R000000DDMlTIAX"
},
"httpStatusCode" : 201,
"referenceId" : "reference_id_contact_1"
},
{
"body" : {
"id" : "006R0000003FPYxIAO",
"success" : true,
"errors" : [ ]
},
"httpHeaders" : {
"Location" :
"/services/data/v50.0/sobjects/Opportunity/006R0000003FPYxIAO"
},
"httpStatusCode" : 201,
"referenceId" : "reference_id_opportunity_1"
}
]
},
"isSuccessful" : true
},
{
"graphId" : "2",
"graphResponse" : {
"compositeResponse" : [
{
"body" : {
"id" : "001R00000064wc8IAA",
"success" : true,
"errors" : [ ]
101
Examples Using a Composite Graph
},
"httpHeaders" : {
"Location" : "/services/data/v50.0/sobjects/Account/001R00000064wc8IAA"
},
"httpStatusCode" : 201,
"referenceId" : "reference_id_account_2"
},
{
"body" : {
"id" : "003R000000DDMlUIAX",
"success" : true,
"errors" : [ ]
},
"httpHeaders" : {
"Location" : "/services/data/v50.0/sobjects/Contact/003R000000DDMlUIAX"
},
"httpStatusCode" : 201,
"referenceId" : "reference_id_contact_2"
}
]
},
"isSuccessful" : true
}
]
}
102
CHAPTER 4 Generating an OpenAPI 3.0 Specification
for sObjects REST API (Beta)
In this Beta, you can generate an OpenAPI specification for the sObjects REST API.
Note: This feature is a Beta Service. Customer may opt to try such Beta Service in its sole discretion.
Any use of the Beta Service is subject to the applicable Beta Services Terms provided at Agreements
and Terms.
This Beta feature enables you to generate an OpenAPI specification that represents four sObjects REST
API resources reflecting the customizations and configurations in your org.
Supported Editions
This Beta feature is available to Developer Editions, Partner Developer Editions, sandboxes, and scratch
orgs that have API Enabled.
Note: This Beta specification is subject to change. Don’t build production integrations based on
this specification.
2. /services/data/vXX.X/sobjects/sObject/
• Describes the individual metadata for the specified object. Can also be used to create a new
record for a given object. For example, this can be used to retrieve the metadata for the Account
object using the GET method, or create a new Account object using the POST method.
• See sObject Basic Information.
3. /services/data/vXX.X/sobjects/sObject/describe/
• Completely describes the individual metadata at all levels for the specified object. For example,
this can be used to retrieve the fields, URLs, and child relationships for the Account object.
• See sObject Describe.
103
Generating an OpenAPI 3.0 Specification for sObjects REST
API (Beta)
4. /services/data/vXX.X/sobjects/sObject/id/
• Accesses records based on the specified object ID. Retrieves, updates, or deletes records. This
resource can also be used to retrieve field values. Use the GET method to retrieve records or
fields, the DELETE method to delete records, and the PATCH method to update records.
• See sObject Rows.
Note: Selecting this item asserts that you accept the Beta Services Terms provided at the
Agreements and Terms.
3. Click Save.
https://MyDomainName.my.salesforce.com/services/data/v55.0/async/specifications/oas3
3. Assuming the request can be parsed without errors, the server responds with JSON that contains a
URI where the specification can be obtained. For example:
{
"href" :
"/v55.0/async/specifications/oas3/NTByUjAwMDAwMDAwMDBh"
}
The last part of this URI (NTByUjAwMDAwMDAwMDBh in this example) is referred to as the locator
ID for the specification.
4. Send a GET request to the same URI with the locator ID appended. For example:
https://MyDomainName.my.salesforce.com/services/data/v55.0/async/
specifications/oas3/NTByUjAwMDAwMDAwMDBh
104
Generating an OpenAPI 3.0 Specification for sObjects REST
API (Beta)
a. If the server hasn’t finished preparing the specification yet, it responds with a 202 (Accepted)
status code and a status message of “Not Started” or “In Progress”. For example:
HTTP/1.1 202 Accepted
{
"status" : "Not Started"
}
b. If the server has finished, it responds with a 200 (OK) status and returns the specification in the
response body. For example:
HTTP/1.1 200 OK
{
"openapi" : "3.0.1",
"info" : {
"title" : "Lightning Platform REST API",
"description" : "REST API provides a powerful, convenient,
and simple API for interacting with Lightning Platform. Its
advantages
include ease of integration and development, and it's an
excellent choice
of technology for use with mobile applications and Web 2.0
projects. If you
have many records to process, consider using Bulk API, which
is based on
REST principles and optimized for large sets of data.",
"version" : "55.0"
},
…
}
After the specification has been generated, you can retrieve the specification again (using the same
locator ID) for 48 hours. After 48 hours, using that locator ID results in a 404 (Not Found) error.
A new specification can only be generated every 6 hours per user. If you call
/async/specifications/oas3 again within 6 hours of the last generation, the API returns
the same locator ID.
Giving Feedback
To give us your feedback, log in to Trailhead and then join the OpenAPI Specs for Salesforce REST APIs
Trailblazer Community.
Your feedback is valuable and can help us find existing problems and inspire future change. We’re looking
for general impressions, improvement suggestions, bugs, and feedback about how well this specification
aligns with your OpenAPI use cases.
105
CHAPTER 5 Reference
The following table lists supported REST resources in the API and provides a brief description for each. In each case, the URI for the
resource follows the base URI, https://MyDomainName.my.salesforce.com.
For example, to retrieve basic information about an Account object in version 55.0 use
https://MyDomainName.my.salesforce.com/services/data/v55.0/sobjects/Account.
Some of these resources are only available if you have the corresponding package installed or have the corresponding feature enabled.
Note: Some parts of request URIs are case-sensitive, such as IDs. Other parts of URIs aren't case-sensitive, such as object and field
names. If your requests aren't successful, check that your URI has the right letter cases by comparing the URI to the reference and
examples in this guide.
Analytics /services/data/vXX.X/analytics
(Accesses Reports and Accesses Reports and Dashboards REST API resources. See the Salesforce Reports and Dashboards
Dashboards REST API) REST API Developer Guide.
AppMenu /services/data/vXX.X/appMenu/AppSwitcher
/services/data/vXX.X/appMenu/Salesforce1
Returns a list of items in either the Salesforce app drop-down menu or the Salesforce for Android,
iOS, and mobile web navigation menu.
106
Reference
Chatter /services/data/vXX.X/chatter
(Connect REST API) Accesses features in the Connect REST API. See the Connect REST API Developer Guide.
Commerce /services/data/vXX.X/commerce
(Place Order REST API) Accesses features in the Place Order REST API. See the Place Order REST API Developer Guide.
Composite /services/data/vXX.X/composite
Executes a series of REST API requests in a single POST request, or retrieves a list of other composite
resources with a GET request.
Manufacturing /services/data/vXX.X/connect/manufacturing
Accesses Manufacturing Cloud objects. See the Manufacturing Cloud Developer Guide.
107
Reference
Consent /services/data/vXX.X/consent
Tracks users’ consent preferences.
Dedupe /services/data/vXX.X/dedupe
Lists duplicate resources, job definitions, and jobs. See the Connect REST API Developer Guide.
Domino /services/data/vXX.X/domino
For internal use only.
Eclair /services/data/vXX.X/eclair
(geodata) Accesses geodata definitions. See Charts Geodata Resource in the Analytics REST API Developer Guide.
Folders /services/data/vXX.X/folders
Use the Analytics Folders API to perform operations on report and dashboard folders. See Folders in
the Reports and Dashboards REST API Developer Guide.
IoT /services/data/vXX.X/iot
Accesses features in the IoT REST API. See the IoT REST API Getting Started Guide.
Jobs /services/data/vXX.X/jobs
(Bulk API 2.0) Accesses jobs in the Bulk API 2.0. See the Bulk API 2.0 and Bulk API Developer Guide.
jsonxform /services/data/vXX.X/jsonxform
(Analytics REST API) Tests the results of a rule in a Tableau template. See Rules Testing with jsonxform/transformation
endpoint the Analytics Templates Developer Guide.
108
Reference
Licensing /services/data/vXX.X/licensing
For internal use only.
Limits /services/data/vXX.X/limits
Lists information about limits in your org. For each limit, this resource returns the maximum allocation
and the remaining allocation based on usage.
Metadata /services/data/vXX.X/metadata
Accesses features in the Metadata API. See the Metadata API Developer Guide.
Payments /services/data/vXX.X/payments
For internal use only.
Query /services/data/vXX.X/query/?q=soql
(SOQL) Executes the specified SOQL query.
QueryAll /services/data/vXX.X/queryAll/?q=soql
(SOQL) Executes the specified SOQL query. Results can include deleted, merged and archived records.
109
Reference
Accesses Scheduler REST APIs to get appointment time slots or available service resources based on
work type groups and service territories.
Search /services/data/vXX.X/search/?q=sosl
(SOSL) Executes the specified SOSL search. The search string must be URL-encoded.
110
Reference
111
Reference
112
Reference
113
Reference Versions
Tabs /services/data/vXX.X/tabs
Returns a list of all tabs—including Lightning page tabs—available to the current user, regardless
of whether the user has chosen to hide tabs via the All Tabs (+) tab customization feature.
Themes /services/data/vXX.X/theme
Gets the list of icons and colors used by themes in the Salesforce application.
UI API /services/data/vXX.X/ui-api
Accesses features in the UI API. See the User Interface API Developer Guide.
Wave /services/data/vXX.X/wave
(Analytics REST API) Accesses features in the Analytics REST API. See the Analytics REST API Developer Guide.
Versions
Lists summary information about each Salesforce version currently available, including the version, label, and a link to each version's
root.
URI
/services/data/
114
Reference Resources by Version
Formats
JSON, XML
HTTP Method
GET
Authentication
none
Parameters
none
Example
See List Available REST API Versions on page 23.
Resources by Version
Lists available resources for the specified API version, including resource name and URI.
URI
/services/data/vXX.X/
Formats
JSON, XML
HTTP Method
GET
Authentication
Authorization: Bearer token
Parameters
none
Example
See List Available REST Resources. on page 29
Limits
Lists information about limits in your org. For each limit, this resource returns the maximum allocation and the remaining allocation
based on usage. This resource is available in REST API version 29.0 and later for API users with the View Setup and Configuration permission.
The resource returns these limits:
ConcurrentAsyncGetReportInstances Concurrent REST API requests for results of asynchronous report runs
115
Reference Limits
MassEmail Daily number of mass emails that are sent to external email addresses via Apex
or APIs
SingleEmail Daily number of single emails that are sent to external email addresses
Note: For orgs created before Spring ’19, the daily limit is enforced
only for emails sent via Apex and Salesforce APIs except for the REST
API. For orgs created in Spring ’19 and later, the daily limit is also
enforced for email alerts, simple email actions, Send Email actions in
flows, and REST API. If one of the newly counted emails can’t be sent
because your org has reached the limit, we notify you by email and
add an entry to the debug logs.
DailyBulkApiBatches (API version 49.0 and Daily Bulk API and Bulk API 2.0 batches.
later) or DailyBulkApiRequests (API version
48.0 and earlier) In Bulk API, batches are used by both ingest and query operations. In Bulk API
2.0, batches are used only by ingest operations.
DailyBulkV2QueryFileStorageMB Daily storage for queries in Bulk API 2.0 (measured in MB). This limit is available
in API version 47.0 and later.
DailyBulkV2QueryJobs Daily number of query jobs in Bulk API 2.0. This limit is available in API version
47.0 and later.
Platform Events
The following values apply only to platform events. They don’t apply to Change Data Capture events.
116
Reference Limits
MonthlyPlatformEvents (API version 47.0 and Org Without Add-On License: Daily Default Allocation
earlier)
If your org doesn’t have the high-volume platform event or Change Data
Capture add-on, use MonthlyPlatformEvents. This value contains
the default allocation and usage for event delivery to CometD clients and is
incremented for each client. This value doesn’t apply to non-CometD
subscribers, such as Apex triggers, flows, and processes. To get the limit that
is enforced daily, divide the monthly value returned by 30.
MonthlyPlatformEvents includes usage for both high-volume
platform events and Change Data Capture events.
Usage tracking frequency: MonthlyPlatformEvents is updated within
a few minutes after event delivery.
Private Connect
PrivateConnectOutboundCalloutHourlyLimitMB Maximum amount of data in bytes that can be transferred per hour via
outbound private connections.
Salesforce Connect
117
Reference Limits
Salesforce Functions
DailyFunctionsApiCallLimit (API version Daily API calls in an org with Functions. Values are visible only if Salesforce
53.0 and later) Functions is enabled. For more information, see Functions Limits.
Storage
DailyDurableGenericStreamingApiEvents Generic events notifications delivered in the past 24 hours to all CometD
clients
DailyDurableStreamingApiEvents PushTopic event notifications delivered in the past 24 hours to all CometD
clients
DurableStreamingApiConcurrentClients Concurrent CometD clients (subscribers) across all channels and for all event
types
DailyGenericStreamingApiEvents Generic events notifications delivered in the past 24 hours to all CometD
clients
DailyStreamingApiEvents PushTopic event notifications delivered in the past 24 hours to all CometD
clients
StreamingApiConcurrentClients Concurrent CometD clients (subscribers) across all channels and for all event
types
Workflows
URI
/services/data/vXX.X/limits/
Formats
JSON, XML
HTTP Method
GET
118
Reference Describe Global
Authentication
Authorization: Bearer token
Example
See List Organization Limits.
Describe Global
Lists the available objects and their metadata for your organization’s data. In addition, it provides the organization encoding, as well as
the maximum batch size permitted in queries. For more information on encoding, see Internationalization and Character Sets.
You can use the If-Modified-Since or If-Unmodified-Since header with this resource. When using the
If-Modified-Since header, if no available object’s metadata has changed since the provided date, a 304 Not Modified
status code is returned with no response body.
Note: The If-Modified-Since and If-Unmodified-Since headers check for more than object-specific metadata
changes. They also check for org-wide events, such as changes to permissions, profiles, or field labels.
URI
/services/data/vXX.X/sobjects/
Formats
JSON, XML
HTTP Method
GET
Authentication
Authorization: Bearer token
Parameters
Parameter Description
If-Modified-Since An optional header specifying a date and time. The request returns records that have
been modified after that date and time.
The format is EEE, dd MMM yyyy HH:mm:ss z. For example:
If-Modified-Since: Mon, 30 Nov 2020 08:34:54 MST.
If-Unmodified-Since An optional header specifying a date and time. The request returns records that have
not been modified after that date and time.
The format is EEE, dd MMM yyyy HH:mm:ss z. For example:
If-Unmodified-Since: Mon, 30 Nov 2020 08:34:54 MST.
Example
See Get a List of Objects on page 31.
Error responses
See Status Codes and Error Responses on page 345.
119
Reference sObject Basic Information
IN THIS SECTION:
Retrieve Object Metadata Using sObject Basic Information
Retrieves basic metadata for a specified object, including some object properties, recent items, and URIs for other resources related
to the object.
Create Records Using sObject Basic Information
Creates a new record for a specified object based on field values in the request body.
Parameter Description
sObject The name of the object. For example, Account.
A required path parameter.
Examples
• For an example of retrieving metadata for an object, see Retrieve Metadata for an Object on page 33.
120
Reference sObject Describe
Formats
JSON, XML
HTTP Method
POST
Authentication
Authorization: Bearer token
Parameters
Parameter Description
Content-Type An optional header, specifying the format for the request and response. Possible choices
are:
• Content-Type: application/json
• Content-Type: application/xml
Examples
• For an example of creating a new record using POST, see Create a Record on page 36.
• For an example of create a new record along with providing blob data for the record, see Insert or Update Blob Data on page
66.
sObject Describe
Completely describes the individual metadata at all levels for the specified object. For example, this can be used to retrieve the fields,
URLs, and child relationships for the Account object.
For more information about the metadata that is retrieved, see DescribesObjectResult in the SOAP API Developers Guide.
You can use the If-Modified-Since or If-Unmodified-Since header with this resource. When using the
If-Modified-Since header, if no available object’s metadata has changed since the provided date, a 304 Not Modified
status code is returned with no response body.
URI
/services/data/vXX.X/sobjects/sObject/describe/
Formats
JSON, XML
HTTP Method
GET
Authentication
Authorization: Bearer token
121
Reference sObject Get Deleted
Parameters
Parameter Description
sObject The name of the object. For example, Account.
A required path parameter.
If-Modified-Since An optional header specifying a date and time. The request returns records that have
been modified after that date and time.
The format is EEE, dd MMM yyyy HH:mm:ss z. For example:
If-Modified-Since: Mon, 30 Nov 2020 08:34:54 MST.
If-Unmodified-Since An optional header specifying a date and time. The request returns records that have
not been modified after that date and time.
The format is EEE, dd MMM yyyy HH:mm:ss z. For example:
If-Unmodified-Since: Mon, 30 Nov 2020 08:34:54 MST.
Example
See Get Field and Other Metadata for an Object. For an example that uses the If-Modified-Since HTTP header, see Get
Object Metadata Changes.
122
Reference sObject Get Updated
Parameters
Parameter Description
start Starting date/time (Coordinated Universal Time (UTC)—not local— timezone) of the
timespan for which to retrieve the data. The API ignores the seconds portion of the
specified dateTime value (for example, 12:30:15 is interpreted as 12:30:00 UTC). The
date and time must be formatted as described in Valid Date and DateTime Formats.
The date/time value for start must chronologically precede end. This parameter
should be URL-encoded.
end Ending date/time (Coordinated Universal Time (UTC)—not local— timezone) of the
timespan for which to retrieve the data. The API ignores the seconds portion of the
specified dateTime value (for example, 12:35:15 is interpreted as 12:35:00 UTC). The
date and time must be formatted as described in Valid Date and DateTime Formats.
This parameter should be URL-encoded
Response format
earliestDateAvailable String ISO 8601 format timestamp (Coordinated Universal Time (UTC)—not local—
timezone) of the last physically deleted object.
latestDateCovered String ISO 8601 format timestamp (Coordinated Universal Time (UTC)—not local—
time zone) of the last date covered in the request.
Example
For an example of getting a list of deleted items, see Get a List of Deleted Records Within a Given Timeframe.
123
Reference sObject Named Layouts
URI
/services/data/vXX.X/sobjects/sObject/updated/?start=startDateAndTime&end=endDateAndTime
Formats
JSON, XML
HTTP Method
GET
Authentication
Authorization: Bearer token
Parameters
Parameter Description
start Starting date/time (Coordinated Universal Time (UTC) time zone—not local— timezone)
of the timespan for which to retrieve the data. The API ignores the seconds portion of
the specified dateTime value (for example, 12:30:15 is interpreted as 12:30:00 UTC).
The date and time must be formatted as described in Valid Date and DateTime Formats.
The date/time value for start must chronologically precede end. This parameter
should be URL-encoded
end Ending date/time (Coordinated Universal Time (UTC) time zone—not local— timezone)
of the timespan for which to retrieve the data. The API ignores the seconds portion of
the specified dateTime value (for example, 12:35:15 is interpreted as 12:35:00 UTC).
The date and time must be formatted as described in Valid Date and DateTime Formats.
This parameter should be URL-encoded
Response format
latestDateCovered String ISO 8601 format timestamp (Coordinated Universal Time (UTC)—not local—
time zone) of the last date covered in the request.
Example
For an example of getting a list of updated deleted items, see Get a List of Updated Records Within a Given Timeframe.
Syntax
URI
/services/data/vXX.X/sobjects/Object/describe/namedLayouts/layoutName
124
Reference sObject Rows
Example
/services/data/v55.0/sobjects/User/describe/namedLayouts/UserAlt
This example retrieves information on the “UserAlt” named layout for User.
Usage
Use this resource to get information on a named layout for a given object. You must provide a valid named layout name as part of the
resource URI.
To get a list of named layouts for a given object, use the sObject Describe resource and look for the “namedLayoutInfos” field in the
response body.
sObject Rows
Accesses records based on a specified object and record ID. Retrieves, updates, or deletes records based on the HTTP method. Use the
GET method to retrieve records or specific field values, the DELETE method to delete records, or the PATCH method to update records.
To create new records, use the sObject Basic Information or sObject Rows by External ID resources.
IN THIS SECTION:
Retrieve Records Using sObject Rows
Retrieves a record based on the specified object and record ID. The fields and field values of the record are returned in the response
body.
Update Records Using sObject Rows
Updates a record based on the specified object and record ID. Field values provided in the request body replace the existing values
in the record.
Delete Records Using sObject Rows
Deletes records based on the specified object and record ID.
125
Reference Retrieve Records Using sObject Rows
URI
/services/data/vXX.X/sobjects/sObject/id/
Formats
JSON, XML
HTTP Method
GET
Authentication
Authorization: Bearer token
Parameters
Parameter Description
sObject The name of the object. For example, Account.
fields A comma-delimited list of fields specifying the fields and values returned in the response
body. For example,
?fields=name,description,numberofemployees,industry.
If-Match An optional header specifying a comma-delimited list of one or more ETags. This only
has an effect when used with Account objects. The request is only processed if the
Account’s ETag matches one of the ETags in the list.
For example: If-Match:
"94C83JSreaVMGpL+lUzv8Dr3inI0kCvuKATVJcTuApA=--gzip",
"ddpAdaTHz+GcV35e7NLJ9iKD3XXVqAzXT1Sl2ykkP7g=--gzip".
If-None-Match An optional header specifying a comma-delimited list of one or more ETags. This only
has an effect when used with Account objects. The request is only processed if the
Account’s ETag does not match one of the ETags in the list.
For example: If-None-Match:
"94C83JSreaVMGpL+lUzv8Dr3inI0kCvuKATVJcTuApA=--gzip",
"ddpAdaTHz+GcV35e7NLJ9iKD3XXVqAzXT1Sl2ykkP7g=--gzip".
If-Modified-Since An optional header specifying a date and time. The request returns records that have
been modified after that date and time.
The format is EEE, dd MMM yyyy HH:mm:ss z
For example: If-Modified-Since: Mon, 30 Nov 2020 08:34:54
MST.
If-Unmodified-Since An optional header specifying a date and time. The request returns records that have
not been modified after that date and time.
The format is EEE, dd MMM yyyy HH:mm:ss z
126
Reference Update Records Using sObject Rows
Parameter Description
For example: If-Unmodified-Since: Mon, 30 Nov 2020 08:34:54
MST.
Usage
This resource can be used with external objects in API version 32.0 and later.
External objects that are associated with non-high-data-volume external data sources use the 18-character Salesforce ID for the id.
Otherwise, external objects use the External ID standard field of the external object for the id.
For information about the items in the response body, see DescribeSObjectResult in the SOAP API Developer’s Guide.
If the object is an Account object, the response also contains an ETag header. For example: ETag:
"ddpAdaTHz+GcV35e7NLJ9iKD3XXVqAzXT1Sl2ykkP7g=--gzip" This ETag can be used with the If-Match
and If-None-Match headers. For more information, see Conditional Request Headers.
Examples
For examples of retrieving field values using GET, see Get Field Values from a Standard Object Record.
Parameter Description
Content-Type An optional header that specifies the format for the request and response. The possible
header values are:
• Content-Type: application/json
• Content-Type: application/xml
sObject The name of the object. For example, Account and CustomObject__c.
127
Reference Delete Records Using sObject Rows
Parameter Description
If-Match An optional header specifying a comma-delimited list of one or more ETags. This only
has an effect when used with Account objects. The request is only processed if the
Account’s ETag matches one of the ETags in the list.
For example: If-Match:
"94C83JSreaVMGpL+lUzv8Dr3inI0kCvuKATVJcTuApA=--gzip",
"ddpAdaTHz+GcV35e7NLJ9iKD3XXVqAzXT1Sl2ykkP7g=--gzip".
If-None-Match An optional header specifying a comma-delimited list of one or more ETags. This only
has an effect when used with Account objects. The request is only processed if the
Account’s ETag does not match one of the ETags in the list.
For example: If-None-Match:
"94C83JSreaVMGpL+lUzv8Dr3inI0kCvuKATVJcTuApA=--gzip",
"ddpAdaTHz+GcV35e7NLJ9iKD3XXVqAzXT1Sl2ykkP7g=--gzip".
If-Modified-Since An optional header specifying a date and time. The request returns records that have
been modified after that date and time.
The format is EEE, dd MMM yyyy HH:mm:ss z
For example: If-Modified-Since: Mon, 30 Nov 2020 08:34:54
MST.
If-Unmodified-Since An optional header specifying a date and time. The request returns records that have
not been modified after that date and time.
The format is EEE, dd MMM yyyy HH:mm:ss z
For example: If-Unmodified-Since: Mon, 30 Nov 2020 08:34:54
MST.
Usage
This resource can be used with external objects in API version 32.0 and later.
External objects that are associated with non-high-data-volume external data sources use the 18-character Salesforce ID for the id.
Otherwise, external objects use the External ID standard field of the external object for the id.
For information about the items in the response body, see DescribeSObjectResult in the SOAP API Developer Guide.
If the object is an Account object, the response also contains an ETag header. For example: ETag:
"ddpAdaTHz+GcV35e7NLJ9iKD3XXVqAzXT1Sl2ykkP7g=--gzip" This ETag can be used with the If-Match
and If-None-Match headers. For more information, see Conditional Request Headers.
Examples
For an example of updating a record using PATCH, see Update a Record.
128
Reference Delete Records Using sObject Rows
URI
/services/data/vXX.X/sobjects/sObject/id/
Formats
JSON, XML
HTTP Method
DELETE
Authentication
Authorization: Bearer token
Parameters
Parameter Description
sObject The name of the object. For example, Account.
If-Match An optional header specifying a comma-delimited list of one or more ETags. This only
has an effect when used with Account objects. The request is only processed if the
Account’s ETag matches one of the ETags in the list.
For example: If-Match:
"94C83JSreaVMGpL+lUzv8Dr3inI0kCvuKATVJcTuApA=--gzip",
"ddpAdaTHz+GcV35e7NLJ9iKD3XXVqAzXT1Sl2ykkP7g=--gzip".
If-None-Match An optional header specifying a comma-delimited list of one or more ETags. This only
has an effect when used with Account objects. The request is only processed if the
Account’s ETag does not match one of the ETags in the list.
For example: If-None-Match:
"94C83JSreaVMGpL+lUzv8Dr3inI0kCvuKATVJcTuApA=--gzip",
"ddpAdaTHz+GcV35e7NLJ9iKD3XXVqAzXT1Sl2ykkP7g=--gzip".
If-Modified-Since An optional header specifying a date and time. The request returns records that have
been modified after that date and time.
The format is EEE, dd MMM yyyy HH:mm:ss z
For example: If-Modified-Since: Mon, 30 Nov 2020 08:34:54
MST.
If-Unmodified-Since An optional header specifying a date and time. The request returns records that have
not been modified after that date and time.
The format is EEE, dd MMM yyyy HH:mm:ss z
For example: If-Unmodified-Since: Mon, 30 Nov 2020 08:34:54
MST.
129
Reference sObject Rows by External ID
Usage
This resource can be used with external objects in API version 32.0 and later.
External objects that are associated with non-high-data-volume external data sources use the 18-character Salesforce ID for the id.
Otherwise, external objects use the External ID standard field of the external object for the id.
If the object is an Account object, the response also contains an ETag header. For example: ETag:
"ddpAdaTHz+GcV35e7NLJ9iKD3XXVqAzXT1Sl2ykkP7g=--gzip" This ETag can be used with the If-Match
and If-None-Match headers. For more information, see Conditional Request Headers.
Examples
For an example of deleting a record using DELETE, see Delete a Record.
IN THIS SECTION:
Retrieve Records Using sObject Rows by External ID
Retrieves a record based on the value of the specified external ID field.
Create Records Using sObject Rows by External ID
Creates a new record based on the field values included in the request body. This resource does not require the use of an external
ID field.
Upsert Records Using sObject Rows by External ID
Upserts a record based on the value of the specified external ID field. Based on whether the value of the external ID already exists,
the request either creates a new record or updates an existing one.
Delete Records Using sObject Rows by External ID
Deletes a record based on the value of the specified external ID field.
Return Headers Using sObject Rows by External ID
Returns only the headers that are returned by sending a GET request to the sObject Rows by External ID resource. This gives you a
chance to see returned header values of the GET request before retrieving the content itself.
Note: For security reasons, some Top Level Domains (TLD) may conflict with certain file format extensions. Adjust your
implementation to work around such cases. For example, when an email address is used as the External ID in the request URL, and
the TLD ".inc" is used as part of the field value, the request returns a “404 not found” error.
For example,
curl
https://MyDomainName.my.salesforce.com/services/data/v55.0/sobjects/Lead/Email/[email protected]
-H "Authorization: Bearer token"
130
Reference Create Records Using sObject Rows by External ID
URI
/services/data/vXX.X/sobjects/sObjectName/fieldName/fieldValue
Formats
JSON, XML
HTTP Method
GET
Authentication
Authorization: Bearer token
Parameters
None
Examples
• For an example of retrieving a record based on an external ID, see Retrieve a Record Using an External ID on page 40.
Note: Do not specify Id or an external ID field in the request body or an error is generated.
Note: For security reasons, some Top Level Domains (TLD) may conflict with certain file format extensions. Adjust your
implementation to work around such cases. For example, when an email address is used as the External ID in the request URL, and
the TLD ".inc" is used as part of the field value, the request returns a “404 not found” error.
For example,
curl
https://MyDomainName.my.salesforce.com/services/data/v55.0/sobjects/Lead/Email/[email protected]
-H "Authorization: Bearer token" -X POST
131
Reference Upsert Records Using sObject Rows by External ID
URI
/services/data/vXX.X/sobjects/sObjectName/Id
Formats
JSON, XML
HTTP Method
POST
Authentication
Authorization: Bearer token
Parameters
None
Usage
As a special case, in API version 37.0 and later, you can create a record with a POST request to
/services/data/vXX.X/sobjects/sObjectName/Id. Because Id has a null value, it is omitted from the request,
and the record is created according to the request body. Creating records with this resource is useful because you can use the same
URI in each POST request for each new record. In this case, you are not required to specify an external ID to create a record.
Note: Do not specify Id or an external ID field in the request body or an error is generated.
Note: For security reasons, some Top Level Domains (TLD) may conflict with certain file format extensions. Adjust your
implementation to work around such cases. For example, when an email address is used as the External ID in the request URL, and
the TLD ".inc" is used as part of the field value, the request returns a “404 not found” error.
For example,
curl
https://MyDomainName.my.salesforce.com/services/data/v55.0/sobjects/Lead/Email/[email protected]
-H "Authorization: Bearer token" -X PATCH
132
Reference Delete Records Using sObject Rows by External ID
URI
/services/data/vXX.X/sobjects/sObjectName/fieldName/fieldValue
Formats
JSON, XML
HTTP Method
PATCH
Authentication
Authorization: Bearer token
Parameters
None
Usage
If you are upserting a record for an object that has a custom field with both the External ID and Unique attributes selected
(a unique index), you do not need any special permissions. The Unique attribute prevents the creation of duplicates. If you are
upserting a record for an object that has the External ID attribute selected but not the Unique attribute selected, (a non-unique
index) your client application must have the permission “View All Data” to execute this call.
Examples
• For examples of creating and updating records based on external IDs, see Insert or Update (Upsert) a Record Using an External
ID on page 41.
Note: For security reasons, some Top Level Domains (TLD) may conflict with certain file format extensions. Adjust your
implementation to work around such cases. For example, when an email address is used as the External ID in the request URL, and
the TLD ".inc" is used as part of the field value, the request returns a “404 not found” error.
For example,
curl
https://MyDomainName.my.salesforce.com/services/data/v55.0/sobjects/Lead/Email/[email protected]
-H "Authorization: Bearer token" -X DELETE
URI
/services/data/vXX.X/sobjects/sObjectName/fieldName/fieldValue
Formats
JSON, XML
133
Reference Return Headers Using sObject Rows by External ID
HTTP Method
DELETE
Authentication
Authorization: Bearer token
Parameters
None
Note: For security reasons, some Top Level Domains (TLD) may conflict with certain file format extensions. Adjust your
implementation to work around such cases. For example, when an email address is used as the External ID in the request URL, and
the TLD ".inc" is used as part of the field value, the request returns a “404 not found” error.
For example,
curl
https://MyDomainName.my.salesforce.com/services/data/v55.0/sobjects/Lead/Email/[email protected]
-H "Authorization: Bearer token" -X HEAD
URI
/services/data/vXX.X/sobjects/sObjectName/fieldName/fieldValue
Formats
JSON, XML
HTTP Method
HEAD
Authentication
Authorization: Bearer token
Parameters
None
134
Reference sObject ApprovalLayouts
Note: Only certain standard objects have blob fields, such as Attachment, ContentDocument, ContentNote, Document, Folder,
and Note.
URI
/services/data/vXX.X/sobjects/sObject/id/blobField
Formats
Binary data
HTTP Method
GET
Authentication
Authorization: Bearer token
Parameters
none required
Example
For an example of retrieving blob data from a Document, see Retrieve Blob Data on page 72.
Error responses
See Status Codes and Error Responses on page 345.
sObject ApprovalLayouts
Returns a list of approval layouts for a specified object. Specify a particular approval process name to limit the return value to one specific
approval layout. This resource is available in REST API version 30.0 and later.
Syntax
URI
To get an approval layout description for a specified object, use
/services/data/vXX.X/sobjects/sObject/describe/approvalLayouts/
To get an approval layout description for a particular approval process, use
/services/data/vXX.X/sobjects/sObject/describe/approvalLayouts/approvalProcessName
Formats
JSON, XML
HTTP methods
HEAD, GET
Authentication
Authorization: Bearer token
Request parameters
None required
135
Reference sObject CompactLayouts
Example
Getting all approval layouts for an sObject
curl
https://MyDomainName.my.salesforce.com/services/data/v55.0/sobjects/Account/describe/approvalLayouts/
-H "Authorization: Bearer token"
If you haven’t defined any approval layouts for an object, the response is {"approvalLayouts" : [ ]}.
Getting the approval layout for a particular approval process
curl
https://MyDomainName.my.salesforce.com/services/data/v55.0/sobjects/Account/describe/approvalLayouts/MyApprovalProcessName
-H "Authorization: Bearer token"
sObject CompactLayouts
Returns a list of compact layouts for a specific object. This resource is available in REST API version 29.0 and later.
Syntax
URI
For a compact layout description for a specific object, use
/services/data/vXX.X/sobjects/sObject/describe/compactLayouts/
136
Reference sObject CompactLayouts
Formats
JSON, XML
HTTP methods
HEAD, GET
Authentication
Authorization: Bearer token
Request parameters
None required
Example
Getting compact layouts
/services/data/v55.0/sobjects/Account/describe/compactLayouts
{
"compactLayouts" : [ {
"actions" : [ {
"custom" : false,
"icons" : null,
"label" : "Call",
"name" : "CallHighlightAction"
}, {
"custom" : false,
"icons" : null,
"label" : "Send Email",
"name" : "EmailHighlightAction"
}, {
"custom" : false,
"icons" : null,
"label" : "Map",
"name" : "MapHighlightAction"
}, {
"custom" : false,
"icons" : null,
"label" : "Read News",
"name" : "NewsHighlightAction"
}, {
"custom" : false,
"icons" : null,
"label" : "View Website",
"name" : "WebsiteHighlightAction"
} ],
"fieldItems" : [ {
"editable" : false,
"label" : "Account Name",
137
Reference sObject CompactLayouts
"layoutComponents" : [ {
"components" : [ ],
"details" : {
"autoNumber" : false,
"byteLength" : 765,
"calculated" : false,
"calculatedFormula" : null,
"cascadeDelete" : false,
"caseSensitive" : false,
"controllerName" : null,
"createable" : true,
"custom" : false,
"defaultValue" : null,
"defaultValueFormula" : null,
"defaultedOnCreate" : false,
"dependentPicklist" : false,
"deprecatedAndHidden" : false,
"digits" : 0,
"displayLocationInDecimal" : false,
"externalId" : false,
"extraTypeInfo" : null,
"filterable" : true,
"groupable" : true,
"htmlFormatted" : false,
"idLookup" : false,
"inlineHelpText" : null,
"label" : "Account Name",
"length" : 255,
"mask" : null,
"maskType" : null,
"name" : "Name",
"nameField" : true,
"namePointing" : false,
"nillable" : false,
"permissionable" : false,
"picklistValues" : [ ],
"precision" : 0,
"queryByDistance" : false,
"referenceTo" : [ ],
"relationshipName" : null,
"relationshipOrder" : null,
"restrictedDelete" : false,
"restrictedPicklist" : false,
"scale" : 0,
"soapType" : "xsd:string",
"sortable" : true,
"type" : "string",
"unique" : false,
"updateable" : true,
"writeRequiresMasterRead" : false
},
"displayLines" : 1,
"tabOrder" : 2,
"type" : "Field",
138
Reference sObject CompactLayouts
"value" : "Name"
} ],
"placeholder" : false,
"required" : false
}, {
"editable" : false,
"label" : "Phone",
"layoutComponents" : [ {
"components" : [ ],
"details" : {
"autoNumber" : false,
"byteLength" : 120,
"calculated" : false,
"calculatedFormula" : null,
"cascadeDelete" : false,
"caseSensitive" : false,
"controllerName" : null,
"createable" : true,
"custom" : false,
"defaultValue" : null,
"defaultValueFormula" : null,
"defaultedOnCreate" : false,
"dependentPicklist" : false,
"deprecatedAndHidden" : false,
"digits" : 0,
"displayLocationInDecimal" : false,
"externalId" : false,
"extraTypeInfo" : null,
"filterable" : true,
"groupable" : true,
"htmlFormatted" : false,
"idLookup" : false,
"inlineHelpText" : null,
"label" : "Account Phone",
"length" : 40,
"mask" : null,
"maskType" : null,
"name" : "Phone",
"nameField" : false,
"namePointing" : false,
"nillable" : true,
"permissionable" : true,
"picklistValues" : [ ],
"precision" : 0,
"queryByDistance" : false,
"referenceTo" : [ ],
"relationshipName" : null,
"relationshipOrder" : null,
"restrictedDelete" : false,
"restrictedPicklist" : false,
"scale" : 0,
"soapType" : "xsd:string",
"sortable" : true,
"type" : "phone",
139
Reference sObject CompactLayouts
"unique" : false,
"updateable" : true,
"writeRequiresMasterRead" : false
},
"displayLines" : 1,
"tabOrder" : 3,
"type" : "Field",
"value" : "Phone"
} ],
"placeholder" : false,
"required" : false
} ],
"id" : "0AHD000000000AbOAI",
"imageItems" : [ {
"editable" : false,
"label" : "Photo URL",
"layoutComponents" : [ {
"components" : [ ],
"details" : {
"autoNumber" : false,
"byteLength" : 765,
"calculated" : false,
"calculatedFormula" : null,
"cascadeDelete" : false,
"caseSensitive" : false,
"controllerName" : null,
"createable" : false,
"custom" : false,
"defaultValue" : null,
"defaultValueFormula" : null,
"defaultedOnCreate" : false,
"dependentPicklist" : false,
"deprecatedAndHidden" : false,
"digits" : 0,
"displayLocationInDecimal" : false,
"externalId" : false,
"extraTypeInfo" : "imageurl",
"filterable" : true,
"groupable" : true,
"htmlFormatted" : false,
"idLookup" : false,
"inlineHelpText" : null,
"label" : "Photo URL",
"length" : 255,
"mask" : null,
"maskType" : null,
"name" : "PhotoUrl",
"nameField" : false,
"namePointing" : false,
"nillable" : true,
"permissionable" : false,
"picklistValues" : [ ],
"precision" : 0,
"queryByDistance" : false,
140
Reference sObject Describe Layouts
"referenceTo" : [ ],
"relationshipName" : null,
"relationshipOrder" : null,
"restrictedDelete" : false,
"restrictedPicklist" : false,
"scale" : 0,
"soapType" :
"xsd:string",
"sortable" : true,
"type" : "url",
"unique" : false,
"updateable" : false,
"writeRequiresMasterRead" : false
},
"displayLines" : 1,
"tabOrder" : 1,
"type" : "Field",
"value" : "PhotoUrl"
} ],
"placeholder" : false,
"required" : false
} ],
"label" : "Custom Account Compact Layout",
"name" : "Custom_Account_Compact_Layout"
} ],
"defaultCompactLayoutId" : "0AHD000000000AbOAI",
"recordTypeCompactLayoutMappings" : [ {
"available" : true,
"compactLayoutId" : "0AHD000000000AbOAI",
"compactLayoutName" : "Custom_Account_Compact_Layout",
"recordTypeId" : "012000000000000AAA",
"recordTypeName" : "Master",
"urls" : {
"compactLayout" :
"/services/data/v55.0/sobjects/Account/describe/compactLayouts/012000000000000AAA"
}
} ],
"urls" : {
"primary" : "/services/data/v55.0/sobjects/Account/describe/compactLayouts/primary"
}
}
If you haven’t defined any compact layouts for an object, the compactLayoutId returns as Null.
141
Reference sObject Describe Layouts
URI
To return descriptions of all global publisher layouts, the URI is:
/services/data/vXX.X/sobjects/Global/describe/layouts/
For a layout description for a specific object, use /services/data/vXX.X/sobjects/Object/describe/layouts/
For a layout description for objects that have more than one record type defined, use
/services/data/vXX.X/sobjects/Object/describe/layouts/<recordTypeId>. For example, the
following URI requests the layout for a specific Contact record ID:
/services/data/vXX.X/sobjects/Contact/describe/layouts/012xx00000024x5AAA. A GET request
for objects that have more than one record type defined returns null for the layouts section of the response.
Formats
JSON, XML
HTTP Method
HEAD, GET
Authentication
Authorization: Bearer token
Parameters
None required
Example for getting global publisher layouts
curl
https://MyDomainName.my.salesforce.com/services/data/v55.0/sobjects/Global/describe/layouts/
-H "Authorization: Bearer token"
142
Reference sObject Describe Layouts
143
Reference sObject PlatformAction
{ "field" : "Lead.Email",
"format" : null,
"label" : "Email",
"name" : "Email"
},
{ "field" : "Lead.Status",
"format" : null,
"label" : "Lead Status",
"name" : "toLabel(Status)"
},
{ "field" : "Name.Alias",
"format" : null,
"label" : "Owner Alias",
"name" : "Owner.Alias"
}
]
},
]
sObject PlatformAction
PlatformAction is a virtual read-only object. It enables you to query for actions displayed in the UI, given a user, a context, device format,
and a record ID. Examples include standard and custom buttons, quick actions, and productivity actions.
Returns the description of the PlatformAction.
Syntax
URI
Use /services/data/vXX.X/sobjects/PlatformAction
Available since release
This resource is available in API version 33.0 and later.
Formats
JSON, XML
HTTP methods
GET
Authentication
Authorization: Bearer token
Request body
None.
Usage
The only thing you can do with this resource is Query it.
144
Reference sObject Quick Actions
"contextId" : "001D000000JRSGf",
"record" : { "LastName" : "Smith" }
145
Reference sObject Rich Text Image Retrieve
Considerations
• The resources return all actions—both global and standard—in addition to the ones requested.
Parameter Description
sObjectName Indicates the name of the standard object of the record.
contentReferenceId The reference ID that uniquely identifies an image within a rich text area field.
You can obtain the reference by retrieving information for the object. The description
shows the contents of the rich text area field. For example:
{
"attributes" : {
"type" : "Lead",
"url" :
"/services/data/v55.0/sobjects/Lead/00QRM000003ZfDb2AK"
},
"Id" : "00QRM000003ZfDb2AK",
...
"ContactPhoto__c" :
"Sarah Loehr and her two dogs.
<img alt=\"Sarah Loehr.\"
src=\"https://MyDomainName.file.force.com/servlet/rtaImage?
eid=00QRM000003ZfDb&
feoid=00NRM000001E73j&
refid=0EMRM00000002Ip\"></img>"
}
146
Reference sObject Relationships
Parameter Description
The refid parameter of the image (0EMRM00000002Ip in this example) is the
contentReferenceId.
Note: If you’re not using enhanced domains, your org’s My Domain URLs are
different. For details, see My Domain URL Formats in Salesforce Help.
Example
For an example of retrieving the blob data from a rich text area field, see Get an Image from a Rich Text Area Field on page 65.
Error responses
See Status Codes and Error Responses on page 345.
sObject Relationships
Accesses records by traversing object relationships via friendly URLs. You can retrieve, update, or delete the record associated with the
traversed relationship field. If there are multiple related records, you can retrieve the complete set of associated records. This resource
is available in REST API version 36.0 and later.
URI
/services/data/vXX.X/sobjects/sObject/id/relationship field name
Formats
JSON, XML
HTTP Methods
GET, PATCH, DELETE
Authentication
Authorization: Bearer token
Parameters
Parameter Description
fields Optional for GET. A list of fields in the associated relationship record to return. Fields
are separated by commas. For example:
/services/data/v55.0/sobjects/sObject/id/relationship
field?fields=field1,field2
Response Body
For retrievals via GET, the response body is the contents of the record associated with the relationship field. Here is an example of a
request and JSON response body for a simple relationship traversal that returns the Distributor__c record associated with a relationship
field on custom object Merchandise__c.
https://MyDomainName.my.salesforce.com/services/data/v55.0/sobjects/Merchandise__c/a01D000000INjVe/Distributor__r
{
"attributes" :
147
Reference sObject Suggested Articles
{
"type" : "Distributor__c",
"url" : "/services/data/v55.0/sobjects/Distributor__c/a03D0000003DUhcIAG"
},
"Id" : "a03D0000003DUhcIAG",
"OwnerId" : "005D0000001KyEIIA0",
"IsDeleted" : false,
"Name" : "Distributor1",
"CreatedDate" : "2011-12-16T17:43:01.000+0000",
"CreatedById" : "005D0000001KyEIIA0",
"LastModifiedDate" : "2011-12-16T17:43:01.000+0000",
"LastModifiedById" : "005D0000001KyEIIA0",
"SystemModstamp" : "2011-12-16T17:43:01.000+0000",
"Location__c" : "San Francisco"
}
A response body isn’t returned for updates via PATCH and deletions via DELETE.
Error Responses
If no record is associated with a relationship field, a 404 error response is returned. If the relationship field normally resolves to multiple
records and no relationship set exists, a 200 response is returned. If the fields parameter is used with fields that don’t exist or
aren’t visible to the consumer by field-level security, a 400 error response is returned. For other error messages, see Status Codes
and Error Responses on page 345.
Example
For examples of using sObject Relationships to access relationship fields, see Traverse Relationships with Friendly URLs on page 45.
Syntax
URI
To return suggested articles for a case, work order, or work order line item that is being created, use
/services/data/vXX.X/sobjects/sObject/suggestedArticles
?language=articleLanguage&subject=subject&description=description. The sObject can be
Case, WorkOrder, or WorkOrderLineItem. Suggestions are based on common keywords in the title, description, and
other information that’s entered before the record has been saved and assigned an ID.
For example:
/services/data/vXX.X/sobjects/Case/suggestedArticles?language=articleLanguage&subject=subject&description=description
or
vXX.X/sobjects/WorkOrder/suggestedArticles?language=articleLanguage&subject=subject&description=description.
To return suggested articles for an existing record with an ID, use
/services/data/vXX.X/sobjects/sObject/ID/suggestedArticles?language=articleLanguage
Available since release
30.0
Formats
JSON, XML
148
Reference sObject Suggested Articles
HTTP methods
GET
Authentication
Authorization: Bearer token
Request body
None required
Request parameters
Parameter Description
articleTypes Optional. Three-character ID prefixes indicating the desired article types. You can specify
multiple values for this parameter in a single REST call, by repeating the parameter
name for each value. For example, articleTypes=ka0&articleTypes=ka1.
categories Optional. The name of the data category group and the data category API name (not
category title) for desired articles. The syntax is
categories={"Group":"Category"}. Characters in the URL might need
to be encoded. For example:
categories=%7B%22Regions%22%3A%22Asia%22%2C%22
Products%22%3A%22Laptops%22%7D
The same data category group can’t be specified more than once. However, you can
specify multiple data category group and data category pairs. For example,
categories={"Regions":"Asia","Products":"Laptops"}.
description Text of the description. Valid only for new records without an existing ID and required
if subject is null. Article suggestions are based on common keywords in the subject,
description, or both.
subject Text of the subject. Valid only for new records without an existing ID and required if
description is null. Article suggestions are based on common keywords in the
subject, description, or both.
149
Reference sObject User Password
Example for getting suggested articles for a case that’s being created
curl
https://MyDomainName.my.salesforce.com/services/data/v55.0/sobjects/Case/suggestedArticles?
language=en_US&subject=orange+banana&articleTypes=ka0&articleTypes=ka1
-H "Authorization: Bearer token"
Usage
Salesforce Knowledge must be enabled in your organization. The user must have the “View Articles” permission enabled. The articles
suggested include only the articles the user can access, based on the data categories and article types the user has permissions to view.
Articles are suggested based on a relevance algorithm. The suggestedArticles resource is designed to get the IDs of articles
relevant to a case, work order, or work order line item. It’s intended to be used with other services that then use the IDs to get article
data for display.
150
Reference Platform Event Schema by Event Name
Example
For examples of getting password information, setting a password, and resetting a password, see Manage User Passwords on page
74.
Considerations
• If the session does not have permission to access the user information, an INSUFFICIENT_ACCESS error will be returned.
• When using this resource to set a new password, the new password must conform to the password policies for the organization,
otherwise you will get an INVALID_NEW_PASSWORD error response.
• You can only set one password per request.
• When you use the DELETE method of this resource, Salesforce will reset the user password to an auto-generated password,
which will be returned in the response.
Syntax
URI
/services/data/vXX.X/sobjects/eventName/eventSchema
Available since release
40.0
Formats
JSON
HTTP methods
GET
Authentication
Authorization: Bearer token
Parameters
Parameter Description
payloadFormat (Optional query parameter. Available in API version 43.0 and later.) The format of the returned event
schema. This parameter can take one of the following values.
• EXPANDED—The JSON representation of the event schema, which is the default format when
payloadFormat is not specified in API version 43.0 and later.
• COMPACT—A format that adheres to the open-source Apache Avro specification for the record
complex type (see Apache Avro Format). Subscribers use the compact schema format to
deserialize compact events received in binary form.
151
Reference Platform Event Schema by Event Name
Error Codes
400 Bad Request Description
In API version 43.0 The request was formatted incorrectly—an invalid value was passed for the payloadFormat parameter
and later in the URI.
In API version 42.0 The request was formatted incorrectly—the payloadFormat parameter was passed in the URI but this
and earlier API version doesn’t support this parameter.
Or:
/services/data/v55.0/sobjects/Low_Ink__e/eventSchema?payloadFormat=EXPANDED
The returned response for the expanded format looks like the following in API version 43.0.
{
"name" : "Low_Ink__e",
"namespace" : "com.sforce.eventbus",
"type" : "expanded-record",
"fields" : [ {
"name" : "data",
"type" : {
"type" : "record",
"name" : "Data",
"namespace" : "",
"fields" : [ {
"name" : "schema",
"type" : "string"
}, {
"name" : "payload",
"type" : {
"type" : "record",
"name" : "Payload",
"doc" : "",
"fields" : [ {
"name" : "CreatedDate",
"type" : "string",
"doc" : "CreatedDate:DateTime"
}, {
"name" : "CreatedById",
"type" : "string",
"doc" : "CreatedBy:EntityId"
}, {
"name" : "Printer_Model__c",
"type" : [ "null", "string" ],
"doc" : "Data:Text",
152
Reference Platform Event Schema by Event Name
"default" : null
}, {
"name" : "Serial_Number__c",
"type" : [ "null", "string" ],
"doc" : "Data:Text",
"default" : null
}, {
"name" : "Ink_Percentage__c",
"type" : [ "null", "double" ],
"doc" : "Data:Double",
"default" : null
} ]
}
}, {
"name" : "event",
"type" : {
"type" : "record",
"name" : "Event",
"fields" : [ {
"name" : "replayId",
"type" : "long"
} ]
}
} ]
}
}, {
"name" : "channel",
"type" : "string"
} ]
}
To get the compact (Apache Avro) format, use the following URI.
/services/data/v55.0/sobjects/Low_Ink__e/eventSchema?payloadFormat=COMPACT
The returned response for the compact format looks like the following in API version 55.0.
{
"name" : "Low_Ink__e",
"namespace" : "com.sforce.eventbus",
"doc" : "55.0",
"type" : "record",
"fields" : [ {
"name" : "CreatedDate",
"type" : "long",
"doc" : "CreatedDate:DateTime"
}, {
"name" : "CreatedById",
"type" : "string",
"doc" : "CreatedBy:EntityId"
}, {
"name" : "Printer_Model__c",
"type" : [ "null", "string" ],
"doc" : "Data:Text",
"default" : null
153
Reference Platform Event Schema by Event Name
}, {
"name" : "Serial_Number__c",
"type" : [ "null", "string" ],
"doc" : "Data:Text",
"default" : null
}, {
"name" : "Ink_Percentage__c",
"type" : [ "null", "double" ],
"doc" : "Data:Double",
"default" : null
} ],
"uuid" : "5E5OtZj5_Gm6Vax9XMXH9A"
}
Note: The compact schema doesn’t include the replayId or channel fields because these fields are not necessary for
deserializing the compact event received.
Note: This format is what the API returns in API version 43.0 and later when appending the ?payloadFormat=COMPACT
parameter.
/services/data/v42.0/sobjects/Low_Ink__e/eventSchema
The returned response looks like the following in API version 42.0.
{
"name" : "Low_Ink__e",
"namespace" : "com.sforce.eventbus",
"doc" : "42.0",
"type" : "record",
"fields" : [ {
"name" : "CreatedDate",
"type" : "long",
"doc" : "CreatedDate:DateTime"
}, {
"name" : "CreatedById",
"type" : "string",
"doc" : "CreatedBy:EntityId"
}, {
"name" : "Printer_Model__c",
"type" : [ "null", "string" ],
"doc" : "Data:Text",
"default" : null
}, {
"name" : "Serial_Number__c",
"type" : [ "null", "string" ],
"doc" : "Data:Text",
"default" : null
}, {
"name" : "Ink_Percentage__c",
"type" : [ "null", "double" ],
154
Reference Platform Event Schema by Schema ID
"doc" : "Data:Double",
"default" : null
} ],
"uuid" : "5E5OtZj5_Gm6Vax9XMXH9A"
}
Note: When you change the definition of a platform event, the schema ID for this platform event changes.
The response also includes the uuid field, which contains the schema’s ID. The ID is the MD5 fingerprint of the normalized Avro schema
encoded as a base-64 URL variant. You can append this ID to the /vXX.X/event/eventSchema/ URI to retrieve the schema.
Syntax
URI
/services/data/vXX.X/event/eventSchema/schemaId
Available since release
40.0
Formats
JSON
HTTP methods
GET
Authentication
Authorization: Bearer token
155
Reference Platform Event Schema by Schema ID
Parameters
Parameter Description
payloadFormat (Optional query parameter. Available in API version 43.0 and later.) The format of the returned event
schema. This parameter can take one of the following values.
• EXPANDED—The JSON representation of the event schema, which is the default format when
payloadFormat is not specified in API version 43.0 and later.
• COMPACT—A format that adheres to the open-source Apache Avro specification for the record
complex type (see Apache Avro Format). Subscribers use the compact schema format to
deserialize compact events received in binary form.
Error Codes
400 Bad Request Description
In API version 43.0 The request was formatted incorrectly—an invalid value was passed for the payloadFormat parameter
and later in the URI.
In API version 42.0 The request was formatted incorrectly—the payloadFormat parameter was passed in the URI but this
and earlier API version doesn’t support this parameter.
Or:
/services/data/v55.0/event/eventSchema/5E5OtZj5_Gm6Vax9XMXH9A?payloadFormat=EXPANDED
In API version 43.0 and later, the response format is the JSON representation of the event schema by default. The returned response
looks like the following in API version 55.0.
{
"name" : "Low_Ink__e",
"namespace" : "com.sforce.eventbus",
"type" : "expanded-record",
"fields" : [ {
"name" : "data",
"type" : {
"type" : "record",
"name" : "Data",
"namespace" : "",
"fields" : [ {
"name" : "schema",
"type" : "string"
}, {
156
Reference Platform Event Schema by Schema ID
"name" : "payload",
"type" : {
"type" : "record",
"name" : "Payload",
"doc" : "",
"fields" : [ {
"name" : "CreatedDate",
"type" : "string",
"doc" : "CreatedDate:DateTime"
}, {
"name" : "CreatedById",
"type" : "string",
"doc" : "CreatedBy:EntityId"
}, {
"name" : "Printer_Model__c",
"type" : [ "null", "string" ],
"doc" : "Data:Text",
"default" : null
}, {
"name" : "Serial_Number__c",
"type" : [ "null", "string" ],
"doc" : "Data:Text",
"default" : null
}, {
"name" : "Ink_Percentage__c",
"type" : [ "null", "double" ],
"doc" : "Data:Double",
"default" : null
} ]
}
}, {
"name" : "event",
"type" : {
"type" : "record",
"name" : "Event",
"fields" : [ {
"name" : "replayId",
"type" : "long"
} ]
}
} ]
}
}, {
"name" : "channel",
"type" : "string"
} ]
}
To get the compact (Apache Avro) format, use the following URI.
/services/data/v55.0/event/eventSchema/5E5OtZj5_Gm6Vax9XMXH9A?payloadFormat=COMPACT
157
Reference Platform Event Schema by Schema ID
The returned response for the compact format looks like the following in API version 55.0.
{
"name" : "Low_Ink__e",
"namespace" : "com.sforce.eventbus",
"doc" : "55.0",
"type" : "record",
"fields" : [ {
"name" : "CreatedDate",
"type" : "long",
"doc" : "CreatedDate:DateTime"
}, {
"name" : "CreatedById",
"type" : "string",
"doc" : "CreatedBy:EntityId"
}, {
"name" : "Printer_Model__c",
"type" : [ "null", "string" ],
"doc" : "Data:Text",
"default" : null
}, {
"name" : "Serial_Number__c",
"type" : [ "null", "string" ],
"doc" : "Data:Text",
"default" : null
}, {
"name" : "Ink_Percentage__c",
"type" : [ "null", "double" ],
"doc" : "Data:Double",
"default" : null
} ],
"uuid" : "5E5OtZj5_Gm6Vax9XMXH9A"
}
Note: The compact schema doesn’t include the replayId or channel fields because these fields are not necessary for
deserializing the compact event received.
Note: This format is what the API returns in API version 43.0 and later when appending the ?payloadFormat=COMPACT
parameter.
This URI gets the schema of a platform event whose schema ID is 5E5OtZj5_Gm6Vax9XMXH9A. This schema ID is a sample ID.
Replace it with a valid schema ID for your event.
/services/data/v42.0/event/eventSchema/5E5OtZj5_Gm6Vax9XMXH9A
The returned response looks like the following in API version 42.0.
{
"name" : "Low_Ink__e",
"namespace" : "com.sforce.eventbus",
"doc" : "42.0",
158
Reference Platform Event Schema by Schema ID
"type" : "record",
"fields" : [ {
"name" : "CreatedDate",
"type" : "long",
"doc" : "CreatedDate:DateTime"
}, {
"name" : "CreatedById",
"type" : "string",
"doc" : "CreatedBy:EntityId"
}, {
"name" : "Printer_Model__c",
"type" : [ "null", "string" ],
"doc" : "Data:Text",
"default" : null
}, {
"name" : "Serial_Number__c",
"type" : [ "null", "string" ],
"doc" : "Data:Text",
"default" : null
}, {
"name" : "Ink_Percentage__c",
"type" : [ "null", "double" ],
"doc" : "Data:Double",
"default" : null
} ],
"uuid" : "5E5OtZj5_Gm6Vax9XMXH9A"
}
Note: When you change the definition of a platform event, the schema ID for this platform event changes.
If you don’t have the schema ID, you can get the schema by supplying the platform event name. Make a GET request to
/services/data/vXX.X/sobjects/eventName/eventSchema. See Platform Event Schema by Event Name.
The response also includes the uuid field, which contains the schema’s ID. The ID is the MD5 fingerprint of the normalized Avro schema
encoded as a base-64 URL variant. You can append this ID to the /vXX.X/event/eventSchema/ URI to retrieve the schema.
159
Reference AppMenu
AppMenu
Returns a list of items in either the Salesforce app drop-down menu or the Salesforce for Android, iOS, and mobile web navigation menu.
Syntax
URI
To return a list of the Salesforce app drop-down menu items, the URI is:
/services/data/vXX.X/appMenu/AppSwitcher/
To return a list of the Salesforce for Android, iOS, and mobile web navigation menu items, the URI is:
/services/data/vXX.X/appMenu/Salesforce1/
Available since release
29.0
Formats
JSON, XML
HTTP methods
GET, HEAD
Authentication
Authorization: Bearer token
Request body
None
Request parameters
None required
Example
Getting appMenu types
curl https://MyDomainName.my.salesforce.com/services/data/v55.0/appMenu/ -H
"Authorization: Bearer token"
160
Reference AppMenu
}, {
"type" : "Tabset",
"content" : null,
"icons" : null,
"colors" : null,
"label" : "Marketing",
"url" : "/home/home.jsp?tsid=02uxx00000056St"
}, {
"type" : "Tabset",
"content" : null,
"icons" : null,
"colors" : null,
"label" : "Salesforce Chatter",
"url" : "/home/home.jsp?tsid=02uxx00000056Su"
}, {
"type" : "Tabset",
"content" : null,
"icons" : null,
"colors" : null,
"label" : "Community",
"url" : "/home/home.jsp?tsid=02uxx00000056Sw"
}, {
"type" : "Tabset",
"content" : null,
"icons" : null,
"colors" : null,
"label" : "App Launcher",
"url" : "/app/mgmt/applauncher/appLauncher.apexp?tsid=02uxx00000056Sx"
} ]
}
161
Reference AppMenu
}, {
"type" : "Standard.Dashboards",
"content" : null,
"icons" : null,
"colors" : null,
"label" : "Dashboards",
"url" : "/dashboards"
}, {
"type" : "Tab.flexiPage",
"content" : "MySampleFlexiPage",
"icons" : [ {
"contentType" : "image/png",
"width" : 32,
"height" : 32,
"theme" : "theme3",
"url" : "http://myorg.com/img/icon/custom51_100/bell32.png"
}, {
"contentType" : "image/png",
"width" : 16,
"height" : 16,
"theme" : "theme3",
"url" : "http://myorg.com/img/icon/custom51_100/bell16.png"
}, {
"contentType" : "image/svg+xml",
"width" : 0,
"height" : 0,
"theme" : "theme4",
"url" : "http://myorg.com/img/icon/t4/custom/custom53.svg"
}, {
"contentType" : "image/png",
"width" : 60,
"height" : 60,
"theme" : "theme4",
"url" : "http://myorg.com/img/icon/t4/custom/custom53_60.png"
}, {
"contentType" : "image/png",
"width" : 120,
"height" : 120,
"theme" : "theme4",
"url" : "http://myorg.com/img/icon/t4/custom/custom53_120.png"
} ],
"colors" : [ {
"context" : "primary",
"color" : "FC4F59",
"theme" : "theme4"
}, {
"context" : "primary",
"color" : "FC4F59",
"theme" : "theme3"
} ],
"label" : "My App Home Page",
"url" : "/servlet/servlet.Integration?lid=01rxx0000000Vsd&ic=1"
}, {
"type" : "Tab.apexPage",
162
Reference Compact Layouts
"content" : "/apex/myapexpage",
"icons" : [ {
"contentType" : "image/png",
"width" : 32,
"height" : 32,
"theme" : "theme3",
"url" : "http://myorg.com/img/icon/cash32.png"
}, {
"contentType" : "image/png",
"width" : 16,
"height" : 16,
"theme" : "theme3",
"url" : "http://myorg.com/img/icon/cash16.png"
}, {
"contentType" : "image/svg+xml",
"width" : 0,
"height" : 0,
"theme" : "theme4",
"url" : "http://myorg.com/img/icon/t4/custom/custom41.svg"
}, {
"contentType" : "image/png",
"width" : 60,
"height" : 60,
"theme" : "theme4",
"url" : "http://myorg.com/img/icon/t4/custom/custom41_60.png"
}, {
"contentType" : "image/png",
"width" : 120,
"height" : 120,
"theme" : "theme4",
"url" : "http://myorg.com/img/icon/t4/custom/custom41_120.png"
} ],
"colors" : [ {
"context" : "primary",
"color" : "3D8D8D",
"theme" : "theme4"
}, {
"context" : "primary",
"color" : "3D8D8D",
"theme" : "theme3"
} ],
"label" : "label",
"url" : "/servlet/servlet.Integration?lid=01rxx0000000Vyb&ic=1"
} ]
}
Compact Layouts
Returns a list of compact layouts for multiple objects. This resource is available in REST API version 31.0 and later.
This resource returns the primary compact layout for a set of objects. The set of objects is specified using a query parameter. Up to 100
objects can be queried at once.
163
Reference Compact Layouts
Note: PersonAccount isn’t supported for bulk queries. If you want to get the primary compact layout for PersonAccount, get it
directly from
/services/data/v55.0/sobjects/Account/describe/compactLayouts/primaryPersonAccount.
Syntax
URI
/services/data/vXX.X/compactLayouts?q=object_list
Available since release
31.0
Formats
JSON, XML
HTTP methods
GET
Authentication
Authorization: Bearer token
Request parameters
Parameter Description
q A comma-delimited list of objects. The primary compact layout for each object in this
list will be returned in the response of this resource.
Example
Request for getting compact layouts for multiple objects
/services/data/v55.0/compactLayouts?q=Account,Contact,CustomObj__c
164
Reference Compact Layouts
"toolbar" : false,
"url" : null,
"width" : null,
"windowPosition" : null
},
...
"id" : "0AHD000000000AbOAI",
"label" : "Custom Account Compact Layout",
"name" : "Custom_Account_Compact_Layout"
},
"Contact" : {
"actions" : [ {
"behavior" : null,
"content" : null,
"contentSource" : null,
"custom" : false,
"encoding" : null,
"height" : null,
"icons" : null,
"label" : "Call",
"menubar" : false,
"name" : "CallHighlightAction",
"overridden" : false,
"resizeable" : false,
"scrollbars" : false,
"showsLocation" : false,
"showsStatus" : false,
"toolbar" : false,
"url" : null,
"width" : null,
"windowPosition" : null
},
...
"id" : null,
"label" : "System Default",
"name" : "SYSTEM"
}
"CustomObj__c" : {
"actions" : [ {
"behavior" : null,
"content" : null,
"contentSource" : null,
"custom" : false,
"encoding" : null,
"height" : null,
"icons" : null,
"label" : "Call",
"menubar" : false,
"name" : "CallHighlightAction",
"overridden" : false,
"resizeable" : false,
"scrollbars" : false,
"showsLocation" : false,
"showsStatus" : false,
165
Reference Consent
"toolbar" : false,
"url" : null,
"width" : null,
"windowPosition" : null
},
...
"id" : null,
"imageItems" : null,
"label" : "System Default",
"name" : "SYSTEM"
}
}
Consent
Your users can store consent preferences in different locations and possibly inconsistently. You can locate your customers’ preferences
for consent across multiple records when using API version 44.0 and later. Tracking consent preferences helps you and your users respect
the most restrictive requests. You can use the Consent API with specific Salesforce CDP parameters with API version 50.0 and later. See
the syntax and parameters for Salesforce CDP in the following section.
Consent API aggregates consent settings across the Contact, Contact Point Type Consent, Data Use Purpose, Individual, Lead, Person
Account, and User objects when the records have a lookup relationship. The Consent API can't locate records in which the email address
field is protected by Platform Encryption.
The API returns consent details based on a single action, like email or track. Starting with API version 45.0, the multiaction endpoint
allows you to request multiple actions in a single API call.
You can use the Consent API with specific Salesforce CDP parameters with API version 50.0 and later. Syntax and parameters for Salesforce
CDP are at the end of this topic.
166
Reference Consent
Request parameters
Parameter Description
actions Comma-separated list of proposed actions. This required parameter applies only to
the multiaction endpoint.
This parameter is available in API version 45.0 and later.
If this parameter is used, action can't be used.
datetime Optional. The timestamp for which consent is determined. The value is converted to
the UTC timezone and must be formatted as described in Valid Date and DateTime
Formats. If not specified, defaults to the current date and time.
ids Required. Comma-separated list of IDs. The ID can be the record ID or the email address
listed on the record.
verbose Optional: true or false. verbose is the same as verbose=true. Verbose responses
are slower than non-verbose responses. See the examples for a verbose response.
Action
Allowed values are:
• email
• fax
• geotrack
• mail
• phone
• portability
• process
• profile
• shouldforget
• social
• solicit
• storepiielsewhere
• track
167
Reference Consent
• web
If action is used, actions can't be used.
Note: When you select email as the action, the API only aggregates consent for records that contain the same email address.
If the record ID specified in the URI is associated with a record that contains a different email address, the consent settings of
the associated record aren’t included in the API response.
Examples
Simple URI structure
/services/data/v55.0/consent/action/track?ids=003xx000004TxyY,00Qxx00000syyO,003zz000004zzZ
Email addresses as IDs, specified purpose and timespan, and a verbose response
/services/data/v55.0/consent/action/[email protected],[email protected]&datetime=2018-12-12T00:00:00Z&purpose=billing&verbose=true
Response
{
"[email protected]" : {
"result" : "Success",
"proceed" : {
"email" : "true"
"emailResult" : "Success"
},
"explanation" : [ {
"objectConsulted" : "ContactTypePointConsent",
"status" : "opt_in",
"purpose" : "billing",
"recordId" : "003xx000004TxyY",
"value" : "true"
},{
"objectConsulted" : "Contact",
"field" : "HasOptedOutOfTracking",
"recordId" : "1",
"value" : "true"
}]
},
"[email protected]" : {
"result" : "Success",
"proceed" : {
"email" : "false"
"emailResult" : "Success"
},
"explanation" : [ {
"objectConsulted" : "Contact",
"field" : "HasOptedOutOfEmail",
"recordId" : "00Qxx00000skwO",
"value" : "true"
} ]
168
Reference Consent
}
}
Security
To call Consent API, you must have either the View All Data or the Allow User Access to Privacy Data user permission. Requiring a perm
ensures that the System Administrator gives explicit permission. This API accesses org-wide consent data, such as links between records
and the value of consent flags, not just records to which the user ordinarily has access.
Usage
The following table shows how the API responses are determined. If the consulted fields find conflicting consent preferences, the response
returns the least permissive preference. For example, if Contact.HasOptedOutOfEmail is false, but Lead.HasOptedOutOfEmail is true,
the response indicates that you can’t proceed with emailing the user.
When you select email as the action, the API only aggregates consent for records that contain the same email address. If the record ID
specified in the URI is associated with a record that contains a different email address, the consent settings of the associated record aren’t
included in the API response.
Note: When the API compares consent settings across records, it doesn’t incorporate settings from converted leads.
169
Reference Consent
170
Reference Consent
"proceed" : { "portabilityResult" :
"<Success/errormessage>", "portability" : "<true/false>"
}
}
}
171
Reference Consent
172
Reference Use the Consent API with Salesforce CDP
Required Permissions
To use the Salesforce CDP parameters for the Consent API, you must have either the ModifyAllData or the ConsentApiUpdate user
permission. Requiring a perm ensures that the Salesforce admin gives explicit permission. These parameters write org-wide consent
data, such as links between records and the value of consent flags, which are usually inaccessible to non-admin users.
Action Description
Processing This action is used to restrict processing of data in CDP processes such as query, segmentation and
so on.
Shouldforget This action indicates right to be forgotten, which means delete my PII (Personally Identifiable
Information) data and any related records.
Syntax
HTTP method
GET
Available since release:
48.0
173
Reference Use the Consent API with Salesforce CDP
URI
Note: You can access the consent API using three different URIs based on the Action. The Actions supported are processing,
portability, and shouldforget.
/services/data/vXX.X/consent/action/processing?ids=<list_of_ids>&mode=<cdp>
/services/data/vXX.X/consent/action/portability?ids=<list_of_ids>&mode=<cdp>
/services/data/vXX.X/consent/action/shouldforget?ids=<list_of_ids>&mode=<cdp>
Request parameters
Parameter Description
ids Required. Comma-separated list of IDs. The ID can be the record ID or the email address
listed on the record. When mode is set to cdp, the ids value is a string equal to the
Individual ID attribute. This is the email address used to sync consent.
mode Optional. Default is normal. Valid value to retrieve a CDP profile is cdp.
Note: You can update your consent information with the consent API using three different URIs. The URIs are based on the action
that is to be performed on the CDP profile. The actions supported are processing, portability, and shouldforget.
Syntax
HTTP method
PATCH
Available since release
50.0
URI when action is processing
/services/data/vXX.X/consent/action/processing?ids=list_of_ids&mode=cdp&status=optin
or optout
174
Reference Use the Consent API with Salesforce CDP
Parameter Description
ids Required. Comma-separated list of IDs. The ID can be the record ID or the email address
listed on the record. When mode is cdp, the ids value is a string equal to the Individual
ID attribute. This is the email address used to sync consent.
mode Optional. Default is normal. Valid value to use for updating a CDP profile is cdp.
status Required. Status of the consent. Allowed values are optin or optout. However, when
action is processing use status as optout.
Parameter Description
ids Required. Comma-separated list of IDs. The ID can be the record ID or the email address
listed on the record. When mode is cdp, the ids value is a string equal to the Individual
ID attribute. This is the email address used to sync consent.
mode Optional. Default is normal. Valid value to use for updating a CDP profile is cdp.
status Required. Status of the consent. Allowed values are optin or optout. However, when
action is portability use status as optout.
Parameter Description
ids Required. Comma-separated list of IDs. The ID can be the record ID or the email address
listed on the record. When mode is cdp, the ids value is a string equal to the Individual
ID attribute. This is the email address used to sync consent.
mode Optional. Default is normal. Valid value to use for updating a CDP profile is cdp.
status Required. Status of the consent. Allowed values are optin or optout. When Action is
portability use status as optin.
aws_s3_bucket_id Required only when mode is 'cdp' and the action is 'portability'. This parameter must
be passed in as part of the PATCH request body. This parameter is used to pass the S3
bucket location for portability requests to Salesforce CDP.
175
Reference Consent Write
Parameter Description
aws_access_key_id Required only when mode is 'cdp' and the action is 'portability'. This parameter must
be passed in as part of the PATCH request body. This parameter is used to pass the S3
bucket access key for portability requests to Salesforce CDP.
aws_secret_access_key Required only when mode is 'cdp' and the action is 'portability'. This parameter must
be passed in as part of the PATCH request body. This parameter is used to pass the S3
bucket secret access key for portability requests to Salesforce CDP.
aws_s3_folder Required only when mode is 'cdp' and the action is 'portability'. This parameter must
be passed in as part of the PATCH request body. This parameter is used to pass the S3
bucket folder for portability requests to Salesforce CDP.
aws_region Required only when mode is 'cdp' and the action is 'portability'. This parameter must
be passed in as part of the PATCH request body. This parameter is used to pass the S3
bucket's aws region for portability requests to Salesforce CDP.
Consent Write
Your users can store consent preferences in different locations. The Consent Write API can update and write consent across multiple
records through a single API call, helping you sync consent across records or populate the new Consent data model. This API is available
with version 48.0 and later.
Consent API writes consent values across the Contact, Contact Point Type Consent, Data Use Purpose, Individual, Lead, Person Account,
and User objects when the records have a lookup relationship or share an email address. This API can also write to the Salesforce CDP
Individual record. The Consent API can't locate records in which the email address field is protected by Platform Encryption.
176
Reference Consent Write
Note: For the Spring ‘21 release, the API only takes in a single email address. Any record with a matching email address is updated
based on the parameters set in the API call.
Parameter Description
blobParam Optional. Use to pass information to Salesforce CDP, such as portability write location.
Use only for mode=cdp. This parameter must be passed in as part of the PATCH
request body.
captureDate Optional. The date and time when consent is captured. The default is the date and
time the API call is made.
captureContactPointType Optional. Describes how consent is captured (web, phone, email). Supported values
are:
• email
• phone
• web (default)
captureSource Optional. The source through which consent is captured. The default capture source
is Consent API. Max length 255 characters.
consentName Optional. Use to set the name for any new consent records. Default is: Individual
Name-Datetime (<Name> 2019-03-31T15:47:57). Max length is
255 characters.
createIndividual Optional. Boolean. If set to true and the API call includes an email address that
matches multiple records without an Individual object, then an Individual object is
created. Any consent records with an email address that match the email in the API
call are linked to the new Individual object. If multiple records are found, then any
records not linked to an Individual object is linked to the Individual object found in the
other records. If more than one Individual object is found on the matching records,
then the call is rejected.
177
Reference Consent Write
Parameter Description
doubleOptIn Optional. The date and time that the double opt-in is completed, formatted as described
in Valid Date and DateTime Formats.
effectiveFrom Optional. The date from which consent is effective, formatted as described in Valid
Date and DateTime Formats. The default is the date the API call is made.
effectiveTo Optional. The date through which consent is effective, formatted as described in Valid
Date and DateTime Formats.
ids Required. The email address used to sync consent. The ID can be the record ID or the
email address listed on the record. When mode=cdp, the ID value is a string equal
to the Individual ID attribute.
individualName Optional. The name of the person in an Individual record. If a name isn’t provided for
a new Individual record, then the local part of the passed-in email address is used. Max
length is 80 characters.
mode Optional. Default is normal. The allowed modes are: normal or cdp. With
mode=cdp, the request is passed to the Salesforce CDP data platform to get or write
consent. The mode=cdp parameter only supports the action, blobParam, and
ids parameters.
purposeName Optional. The data use purpose for which consent is provided. Must use an existing
data use purpose that you previously created. If more than one purpose with the same
name exists, only one purpose is selected.
status Required. Status of the consent (OptIn, OptOut, Seen, NotSeen.) If action exists
on an Individual object (for example, tracking or processing), the only valid values are
OptIn and OptOut.
Action
Allowed values are:
• email
• fax
• geotrack
• mailing
• phone
• portability
• process
• profile
• shouldForget
• social
• solicit
• storePiiElsewhere
• track
• web
178
Reference Embedded Service Configuration Describe
Security
To call the Consent Write API, you must have either the ModifyAllData or the ConsentApiUpdate user permission. This API writes org-wide
consent data, such as links between records and the value of consent flags, and not just records to which the user ordinarily has access.
The ConsentApiUpdate user permission grants full write permission to the user during the Consent Write API call.
Usage
All records with the email address listed are updated. If the Create Individual parameter is selected and no Individual record exists, the
API creates an Individual record. If warranted, the API also creates a Contact Point Type Consent and Contact Point Email record.
Example PATCH
URI
/services/data/v55.0/consent/action/<action>?ids=<email-OR-recordID>&status=<optout/optin/seen/notseen>&createIndividual=<true/false>
Request body
{}
Response
{
"<email-OR-recordID>" : {
"result" : "Success",
"edited" : [{
"objectType" : "<Contact, Lead, User, etc.>",
"field" : "<HasOptedOutofFax, DoNotCall,etc>",
"valueOfField" : "<true/false>",
"id" : "<recordID>"
}],
}
}
Syntax
URI
/services/data/vXX.X/support/embeddedservice/configuration/EmbeddedServiceConfigDeveloperName
Available since release
45.0
Formats
JSON
HTTP methods
GET, HEAD
179
Reference Embedded Service Configuration Describe
Authentication
You must be logged in to the account that owns the EmbeddedServiceConfigDeveloperName you are querying.
Request parameters
None
Example
Retrieving the values for the Embedded Service deployment TestOne
/services/data/v55.0/support/embeddedservice/configuration/TestOne
180
Reference Invocable Actions
"prechatEnabled" : true,
"scenario" : "Service",
"smallCompanyLogoImg" : "https://google.com/img/logoImgUrl.png",
"waitingStateBackgroundImg" : "https://google.com/img/bgImgUrl.png"
},
"shouldHideAuthDialog" : false,
"siteUrl" : "https://snapins-15f082fb956-15fbc261d27.stmfa.stm.force.com/napili2"
}
}
Invocable Actions
Represents a standard or custom invocable action.
Use actions to add more functionality to your applications. Choose from standard actions, such as posting to Chatter or sending email,
or create actions based on your company’s needs.
This resource is available in REST API version 32.0 and later.
Syntax
URI
Get a list of endpoints for each action type:
/services/data/vXX.X/actions
Formats
JSON, XML
HTTP Methods
GET, POST
Authentication
Authorization: Bearer token
Parameters
None
Example
Using GET to retrieve a list of general action types for the current organization:
/services/data/v55.0/actions
Example
Using POST to send a simple email message:
/services/data/v55.0/actions/standard/emailSimple
181
Reference Standard Invocable Actions
Standard actions return their name in actionName. The value of actionName varies for custom actions.
For more information about actions, see the Actions Developer Guide.
Syntax
URI
Get a list of standard actions:
/services/data/vXX.X/actions/standard
Formats
JSON
HTTP Methods
GET, HEAD, POST
182
Reference Standard Invocable Actions
Authentication
Authorization: Bearer token
Parameters
None
Notes
For Salesforce Omnichannel Inventory and Salesforce Order Management, you can also call the corresponding Connect REST API
endpoints or Apex ConnectApi methods. For more information, see Salesforce Omnichannel Inventory Resources and Salesforce
Order Management Resources in the Connect REST API Developer Guide, and ConnectApi Namespace in the Apex Reference Guide.
The Post to Chatter action supports the following features using a special format in the body post.
• @mentions using @[<id>]
• Topic links using #[<topicString>]
For example, the string Hi @[005000000000001], check out #[some_topic] is stored appropriately as Hi
@Joe, check out #some_topic where “@Joe” and “#some_topic” are links to the user and topic, respectively.
Examples
Retrieving a list of standard actions for the current organization
/services/data/v55.0/actions/standard
183
Reference Standard Invocable Actions
"type" : "ACTIVATE_SESSION_PERM_SET",
"url" : "/services/data/v55.0/actions/standard/activateSessionPermSet"
}, {
"label" : "Choose Price Book",
"name" : "choosePricebook",
"type" : "CHOOSE_PRICEBOOK",
"url" : "/services/data/v55.0/actions/standard/choosePricebook"
}, {
"label" : "Routing Address Verification",
"name" : "routingAddressVerification",
"type" : "ROUTING_ADDRESS_VERIFICATION",
"url" : "/services/data/v55.0/actions/standard/routingAddressVerification"
}, {
"label" : "Create Customer Contact Request",
"name" : "contactRequestAction",
"type" : "CONTACT_REQUEST_ACTION",
"url" : "/services/data/v55.0/actions/standard/contactRequestAction"
}, {
"label" : "Publish Managed Content Release",
"name" : "managedContentReleasePublish",
"type" : "MANAGED_CONTENT_RELEASE_PUBLISH",
"url" : "/services/data/v55.0/actions/standard/managedContentReleasePublish"
} ]
}
184
Reference Standard Invocable Actions
"sobjectType" : null,
"type" : "STRING"
}, {
"apexClass" : null,
"byteLength" : 0,
"description" : "Optional. Who the email is from. Defaults to the current user.",
"label" : "Sender Type",
"maxOccurs" : 1,
"name" : "senderType",
"picklistValues" : null,
"required" : false,
"sobjectType" : null,
"type" : "STRING"
}, {
"apexClass" : null,
"byteLength" : 0,
"description" : "Optional. The org-wide email address to be used as the sender.",
"label" : "Sender Address",
"maxOccurs" : 1,
"name" : "senderAddress",
"picklistValues" : null,
"required" : false,
"sobjectType" : null,
"type" : "STRING"
}, {
"apexClass" : null,
"byteLength" : 0,
"description" : "Required. The email's subject.",
"label" : "Subject",
"maxOccurs" : 1,
"name" : "emailSubject",
"picklistValues" : null,
"required" : true,
"sobjectType" : null,
"type" : "STRING"
}, {
"apexClass" : null,
"byteLength" : 0,
"description" : "Required. The body of the email in plain text.",
"label" : "Body",
"maxOccurs" : 1,
"name" : "emailBody",
"picklistValues" : null,
"required" : true,
"sobjectType" : null,
"type" : "TEXTAREA"
} ],
"label" : "Send Email",
"name" : "emailSimple",
"outputs" : [ ],
"standard" : true,
"targetEntityName" : null,
"type" : "EMAILSIMPLE"
}
185
Reference Custom Invocable Actions
Syntax
URI
Get a list of custom actions:
/services/data/vXX.X/actions/custom
Formats
JSON, XML
HTTP Methods
GET, HEAD, POST
Authentication
Authorization: Bearer token
Parameters
None
Notes
Sending email with the emailAlert action counts against your daily email limit for workflows. For more information, see “Daily
Allocations for Email Alerts” in Salesforce Help.
When invoking an Apex action using the POST method and supplying the inputs in the request, only the following primitive types
are supported as inputs:
• Blob
• Boolean
• Date
• Datetime
• Decimal
• Double
• ID
• Integer
• Long
• String
• Time
Describe and invoke for an Apex action respect the profile access for the Apex class. If you don’t have access an error is issued.
If you add an Apex action to a flow, and then remove the Invocable Method annotation from the Apex class, a runtime error in the
flow occurs.
When a flow user invokes an autolaunched flow, the active flow version runs. If there’s no active version, the latest version runs.
When a flow admin invokes a flow, the latest version always runs.
If any of these elements are used in a flow, packageable components that reference the elements aren’t automatically included in
the package.
• Apex action
186
Reference List View Describe
• Email alerts
• Post to Chatter core action
• Quick Action core action
• Send Email core action
• Submit for Approval core action
For example, if you use an email alert, manually add the email template that’s used by that email alert. To deploy the package
successfully, manually add those referenced components to the package.
Example
Retrieving a list of custom actions for the current organization:
/services/data/v55.0/actions/custom
Example:
Retrieving information about a list view
curl
https://MyDomainName.my.salesforce.com/services/data/v55.0/sobjects/Account/listviews/00BD0000005WcBeMAK/describe
-H "Authorization: Bearer token"
187
Reference List View Describe
"descendingLabel" : "A-Z",
"fieldNameOrPath" : "Name",
"hidden" : false,
"label" : "Account Name",
"selectListItem" : "Name",
"sortDirection" : "ascending",
"sortIndex" : 0,
"sortable" : true,
"type" : "string"
}, {
"ascendingLabel" : "Z-A",
"descendingLabel" : "A-Z",
"fieldNameOrPath" : "Site",
"hidden" : false,
"label" : "Account Site",
"selectListItem" : "Site",
"sortDirection" : null,
"sortIndex" : null,
"sortable" : true,
"type" : "string"
}, {
"ascendingLabel" : "Z-A",
"descendingLabel" : "A-Z",
"fieldNameOrPath" : "BillingState",
"hidden" : false,
"label" : "Billing State/Province",
"selectListItem" : "BillingState",
"sortDirection" : null,
"sortIndex" : null,
"sortable" : true,
"type" : "string"
}, {
"ascendingLabel" : "9-0",
"descendingLabel" : "0-9",
"fieldNameOrPath" : "Phone",
"hidden" : false,
"label" : "Phone",
"selectListItem" : "Phone",
"sortDirection" : null,
"sortIndex" : null,
"sortable" : true,
"type" : "phone"
}, {
"ascendingLabel" : "Low to High",
"descendingLabel" : "High to Low",
"fieldNameOrPath" : "Type",
"hidden" : false,
"label" : "Type",
"selectListItem" : "toLabel(Type)",
"sortDirection" : null,
"sortIndex" : null,
"sortable" : true,
"type" : "picklist"
}, {
188
Reference List View Describe
"ascendingLabel" : "Z-A",
"descendingLabel" : "A-Z",
"fieldNameOrPath" : "Owner.Alias",
"hidden" : false,
"label" : "Account Owner Alias",
"selectListItem" : "Owner.Alias",
"sortDirection" : null,
"sortIndex" : null,
"sortable" : true,
"type" : "string"
}, {
"ascendingLabel" : null,
"descendingLabel" : null,
"fieldNameOrPath" : "Id",
"hidden" : true,
"label" : "Account ID",
"selectListItem" : "Id",
"sortDirection" : null,
"sortIndex" : null,
"sortable" : false,
"type" : "id"
}, {
"ascendingLabel" : null,
"descendingLabel" : null,
"fieldNameOrPath" : "CreatedDate",
"hidden" : true,
"label" : "Created Date",
"selectListItem" : "CreatedDate",
"sortDirection" : null,
"sortIndex" : null,
"sortable" : false,
"type" : "datetime"
}, {
"ascendingLabel" : null,
"descendingLabel" : null,
"fieldNameOrPath" : "LastModifiedDate",
"hidden" : true,
"label" : "Last Modified Date",
"selectListItem" : "LastModifiedDate",
"sortDirection" : null,
"sortIndex" : null,
"sortable" : false,
"type" : "datetime"
}, {
"ascendingLabel" : null,
"descendingLabel" : null,
"fieldNameOrPath" : "SystemModstamp",
"hidden" : true,
"label" : "System Modstamp",
"selectListItem" : "SystemModstamp",
"sortDirection" : null,
"sortIndex" : null,
"sortable" : false,
"type" : "datetime"
189
Reference List View Results
} ],
"id" : "00BD0000005WcBe",
"orderBy" : [ {
"fieldNameOrPath" : "Name",
"nullsPosition" : "first",
"sortDirection" : "ascending"
}, {
"fieldNameOrPath" : "Id",
"nullsPosition" : "first",
"sortDirection" : "ascending"
} ],
"query" : "SELECT name, site, billingstate, phone, tolabel(type), owner.alias,
id, createddate, lastmodifieddate, systemmodstamp FROM Account WHERE CreatedDate =
THIS_WEEK ORDER BY Name ASC NULLS FIRST, Id ASC NULLS FIRST",
"scope" : null,
"sobjectType" : "Account",
"whereCondition" : {
"field" : "CreatedDate",
"operator" : "equals",
"values" : [ "THIS_WEEK" ]
}
}
Parameter Description
limit The maximum number of records to return, between 1-2000.
The default value is 25.
offset The first record to return. Use this parameter to paginate the
results. The default value is 1.
190
Reference List View Results
Example:
Retrieving results from a specific list view
curl
https://MyDomainName.my.salesforce.com/services/data/v55.0/sobjects/Account/listviews/00BD0000005WcCNMA0/results
-H "Authorization: Bearer token"
191
Reference List View Results
}, {
"ascendingLabel" : "Low to High",
"descendingLabel" : "High to Low",
"fieldNameOrPath" : "Type",
"hidden" : false,
"label" : "Type",
"selectListItem" : "toLabel(Type)",
"sortDirection" : null,
"sortIndex" : null,
"sortable" : true,
"type" : "picklist"
}, {
"ascendingLabel" : "Z-A",
"descendingLabel" : "A-Z",
"fieldNameOrPath" : "Owner.Alias",
"hidden" : false,
"label" : "Account Owner Alias",
"selectListItem" : "Owner.Alias",
"sortDirection" : null,
"sortIndex" : null,
"sortable" : true,
"type" : "string"
}, {
"ascendingLabel" : null,
"descendingLabel" : null,
"fieldNameOrPath" : "Id",
"hidden" : true,
"label" : "Account ID",
"selectListItem" : "Id",
"sortDirection" : null,
"sortIndex" : null,
"sortable" : false,
"type" : "id"
}, {
"ascendingLabel" : null,
"descendingLabel" : null,
"fieldNameOrPath" : "CreatedDate",
"hidden" : true,
"label" : "Created Date",
"selectListItem" : "CreatedDate",
"sortDirection" : null,
"sortIndex" : null,
"sortable" : false,
"type" : "datetime"
}, {
"ascendingLabel" : null,
"descendingLabel" : null,
"fieldNameOrPath" : "LastModifiedDate",
"hidden" : true,
"label" : "Last Modified Date",
"selectListItem" : "LastModifiedDate",
"sortDirection" : null,
"sortIndex" : null,
"sortable" : false,
192
Reference List View Results
"type" : "datetime"
}, {
"ascendingLabel" : null,
"descendingLabel" : null,
"fieldNameOrPath" : "SystemModstamp",
"hidden" : true,
"label" : "System Modstamp",
"selectListItem" : "SystemModstamp",
"sortDirection" : null,
"sortIndex" : null,
"sortable" : false,
"type" : "datetime"
} ],
"developerName" : "MyAccounts",
"done" : true,
"id" : "00BD0000005WcCN",
"label" : "My Accounts",
"records" : [ {
"columns" : [ {
"fieldNameOrPath" : "Name",
"value" : "Burlington Textiles Corp of America"
}, {
"fieldNameOrPath" : "Site",
"value" : null
}, {
"fieldNameOrPath" : "BillingState",
"value" : "NC"
}, {
"fieldNameOrPath" : "Phone",
"value" : "(336) 222-7000"
}, {
"fieldNameOrPath" : "Type",
"value" : "Customer - Direct"
}, {
"fieldNameOrPath" : "Owner.Alias",
"value" : "TUser"
}, {
"fieldNameOrPath" : "Id",
"value" : "001D000000JliSTIAZ"
}, {
"fieldNameOrPath" : "CreatedDate",
"value" : "Fri Aug 01 21:15:46 GMT 2014"
}, {
"fieldNameOrPath" : "LastModifiedDate",
"value" : "Fri Aug 01 21:15:46 GMT 2014"
}, {
"fieldNameOrPath" : "SystemModstamp",
"value" : "Fri Aug 01 21:15:46 GMT 2014"
} ]
}, {
"columns" : [ {
"fieldNameOrPath" : "Name",
"value" : "Dickenson plc"
}, {
193
Reference List View Results
"fieldNameOrPath" : "Site",
"value" : null
}, {
"fieldNameOrPath" : "BillingState",
"value" : "KS"
}, {
"fieldNameOrPath" : "Phone",
"value" : "(785) 241-6200"
}, {
"fieldNameOrPath" : "Type",
"value" : "Customer - Channel"
}, {
"fieldNameOrPath" : "Owner.Alias",
"value" : "TUser"
}, {
"fieldNameOrPath" : "Id",
"value" : "001D000000JliSVIAZ"
}, {
"fieldNameOrPath" : "CreatedDate",
"value" : "Fri Aug 01 21:15:46 GMT 2014"
}, {
"fieldNameOrPath" : "LastModifiedDate",
"value" : "Fri Aug 01 21:15:46 GMT 2014"
}, {
"fieldNameOrPath" : "SystemModstamp",
"value" : "Fri Aug 01 21:15:46 GMT 2014"
} ]
}, {
"columns" : [ {
"fieldNameOrPath" : "Name",
"value" : "Edge Communications"
}, {
"fieldNameOrPath" : "Site",
"value" : null
}, {
"fieldNameOrPath" : "BillingState",
"value" : "TX"
}, {
"fieldNameOrPath" : "Phone",
"value" : "(512) 757-6000"
}, {
"fieldNameOrPath" : "Type",
"value" : "Customer - Direct"
}, {
"fieldNameOrPath" : "Owner.Alias",
"value" : "TUser"
}, {
"fieldNameOrPath" : "Id",
"value" : "001D000000JliSSIAZ"
}, {
"fieldNameOrPath" : "CreatedDate",
"value" : "Fri Aug 01 21:15:46 GMT 2014"
}, {
"fieldNameOrPath" : "LastModifiedDate",
194
Reference List View Results
195
Reference List View Results
"fieldNameOrPath" : "Owner.Alias",
"value" : "TUser"
}, {
"fieldNameOrPath" : "Id",
"value" : "001D000000JliSPIAZ"
}, {
"fieldNameOrPath" : "CreatedDate",
"value" : "Fri Aug 01 21:15:46 GMT 2014"
}, {
"fieldNameOrPath" : "LastModifiedDate",
"value" : "Fri Aug 01 21:15:46 GMT 2014"
}, {
"fieldNameOrPath" : "SystemModstamp",
"value" : "Fri Aug 01 21:15:46 GMT 2014"
} ]
}, {
"columns" : [ {
"fieldNameOrPath" : "Name",
"value" : "Grand Hotels and Resorts Ltd"
}, {
"fieldNameOrPath" : "Site",
"value" : null
}, {
"fieldNameOrPath" : "BillingState",
"value" : "IL"
}, {
"fieldNameOrPath" : "Phone",
"value" : "(312) 596-1000"
}, {
"fieldNameOrPath" : "Type",
"value" : "Customer - Direct"
}, {
"fieldNameOrPath" : "Owner.Alias",
"value" : "TUser"
}, {
"fieldNameOrPath" : "Id",
"value" : "001D000000JliSWIAZ"
}, {
"fieldNameOrPath" : "CreatedDate",
"value" : "Fri Aug 01 21:15:46 GMT 2014"
}, {
"fieldNameOrPath" : "LastModifiedDate",
"value" : "Fri Aug 01 21:15:46 GMT 2014"
}, {
"fieldNameOrPath" : "SystemModstamp",
"value" : "Fri Aug 01 21:15:46 GMT 2014"
} ]
}, {
"columns" : [ {
"fieldNameOrPath" : "Name",
"value" : "Pyramid Construction Inc."
}, {
"fieldNameOrPath" : "Site",
"value" : null
196
Reference List View Results
}, {
"fieldNameOrPath" : "BillingState",
"value" : null
}, {
"fieldNameOrPath" : "Phone",
"value" : "(014) 427-4427"
}, {
"fieldNameOrPath" : "Type",
"value" : "Customer - Channel"
}, {
"fieldNameOrPath" : "Owner.Alias",
"value" : "TUser"
}, {
"fieldNameOrPath" : "Id",
"value" : "001D000000JliSUIAZ"
}, {
"fieldNameOrPath" : "CreatedDate",
"value" : "Fri Aug 01 21:15:46 GMT 2014"
}, {
"fieldNameOrPath" : "LastModifiedDate",
"value" : "Fri Aug 01 21:15:46 GMT 2014"
}, {
"fieldNameOrPath" : "SystemModstamp",
"value" : "Fri Aug 01 21:15:46 GMT 2014"
} ]
}, {
"columns" : [ {
"fieldNameOrPath" : "Name",
"value" : "sForce"
}, {
"fieldNameOrPath" : "Site",
"value" : null
}, {
"fieldNameOrPath" : "BillingState",
"value" : "CA"
}, {
"fieldNameOrPath" : "Phone",
"value" : "(415) 901-7000"
}, {
"fieldNameOrPath" : "Type",
"value" : null
}, {
"fieldNameOrPath" : "Owner.Alias",
"value" : "TUser"
}, {
"fieldNameOrPath" : "Id",
"value" : "001D000000JliSaIAJ"
}, {
"fieldNameOrPath" : "CreatedDate",
"value" : "Fri Aug 01 21:15:46 GMT 2014"
}, {
"fieldNameOrPath" : "LastModifiedDate",
"value" : "Fri Aug 01 21:15:46 GMT 2014"
}, {
197
Reference List View Results
"fieldNameOrPath" : "SystemModstamp",
"value" : "Fri Aug 01 21:15:46 GMT 2014"
} ]
}, {
"columns" : [ {
"fieldNameOrPath" : "Name",
"value" : "United Oil and Gas Corp."
}, {
"fieldNameOrPath" : "Site",
"value" : null
}, {
"fieldNameOrPath" : "BillingState",
"value" : "NY"
}, {
"fieldNameOrPath" : "Phone",
"value" : "(212) 842-5500"
}, {
"fieldNameOrPath" : "Type",
"value" : "Customer - Direct"
}, {
"fieldNameOrPath" : "Owner.Alias",
"value" : "TUser"
}, {
"fieldNameOrPath" : "Id",
"value" : "001D000000JliSZIAZ"
}, {
"fieldNameOrPath" : "CreatedDate",
"value" : "Fri Aug 01 21:15:46 GMT 2014"
}, {
"fieldNameOrPath" : "LastModifiedDate",
"value" : "Fri Aug 01 21:15:46 GMT 2014"
}, {
"fieldNameOrPath" : "SystemModstamp",
"value" : "Fri Aug 01 21:15:46 GMT 2014"
} ]
}, {
"columns" : [ {
"fieldNameOrPath" : "Name",
"value" : "United Oil and Gas, Singapore"
}, {
"fieldNameOrPath" : "Site",
"value" : null
}, {
"fieldNameOrPath" : "BillingState",
"value" : "Singapore"
}, {
"fieldNameOrPath" : "Phone",
"value" : "(650) 450-8810"
}, {
"fieldNameOrPath" : "Type",
"value" : "Customer - Direct"
}, {
"fieldNameOrPath" : "Owner.Alias",
"value" : "TUser"
198
Reference List View Results
}, {
"fieldNameOrPath" : "Id",
"value" : "001D000000JliSRIAZ"
}, {
"fieldNameOrPath" : "CreatedDate",
"value" : "Fri Aug 01 21:15:46 GMT 2014"
}, {
"fieldNameOrPath" : "LastModifiedDate",
"value" : "Fri Aug 01 21:15:46 GMT 2014"
}, {
"fieldNameOrPath" : "SystemModstamp",
"value" : "Fri Aug 01 21:15:46 GMT 2014"
} ]
}, {
"columns" : [ {
"fieldNameOrPath" : "Name",
"value" : "United Oil and Gas, UK"
}, {
"fieldNameOrPath" : "Site",
"value" : null
}, {
"fieldNameOrPath" : "BillingState",
"value" : "UK"
}, {
"fieldNameOrPath" : "Phone",
"value" : "+44 191 4956203"
}, {
"fieldNameOrPath" : "Type",
"value" : "Customer - Direct"
}, {
"fieldNameOrPath" : "Owner.Alias",
"value" : "TUser"
}, {
"fieldNameOrPath" : "Id",
"value" : "001D000000JliSQIAZ"
}, {
"fieldNameOrPath" : "CreatedDate",
"value" : "Fri Aug 01 21:15:46 GMT 2014"
}, {
"fieldNameOrPath" : "LastModifiedDate",
"value" : "Fri Aug 01 21:15:46 GMT 2014"
}, {
"fieldNameOrPath" : "SystemModstamp",
"value" : "Fri Aug 01 21:15:46 GMT 2014"
} ]
}, {
"columns" : [ {
"fieldNameOrPath" : "Name",
"value" : "University of Arizona"
}, {
"fieldNameOrPath" : "Site",
"value" : null
}, {
"fieldNameOrPath" : "BillingState",
199
Reference List Views
"value" : "AZ"
}, {
"fieldNameOrPath" : "Phone",
"value" : "(520) 773-9050"
}, {
"fieldNameOrPath" : "Type",
"value" : "Customer - Direct"
}, {
"fieldNameOrPath" : "Owner.Alias",
"value" : "TUser"
}, {
"fieldNameOrPath" : "Id",
"value" : "001D000000JliSYIAZ"
}, {
"fieldNameOrPath" : "CreatedDate",
"value" : "Fri Aug 01 21:15:46 GMT 2014"
}, {
"fieldNameOrPath" : "LastModifiedDate",
"value" : "Fri Aug 01 21:15:46 GMT 2014"
}, {
"fieldNameOrPath" : "SystemModstamp",
"value" : "Fri Aug 01 21:15:46 GMT 2014"
} ]
} ],
"size" : 12
}
List Views
Returns the list of list views for the specified sObject, including the ID and other basic information about each list view. You can also get
basic information for a specific list view by ID.
This resource is available in REST API version 32.0 and later.
URI
Get a list of list views:
/services/data/vXX.X/sobjects/sobjectType/listviews
Get basic information about one list view:
/services/data/vXX.X/sobjects/sobjectType/listviews/listViewID
Available since release
31.0
Formats
JSON, XML
HTTP Methods
GET
Authentication
Authorization: Bearer token
200
Reference List Views
Parameters
None
Example:
Retrieving a list of list views for the Account object
curl
https://MyDomainName.my.salesforce.com/services/data/v55.0/sobjects/Account/listviews
-H "Authorization: Bearer token"
201
Reference Support Knowledge with REST API
}, {
"describeUrl" :
"/services/data/v55.0/sobjects/Account/listviews/00BD0000005WcCFMA0/describe",
"developerName" : "AllAccounts",
"id" : "00BD0000005WcCFMA0",
"label" : "All Accounts",
"resultsUrl" :
"/services/data/v55.0/sobjects/Account/listviews/00BD0000005WcCFMA0/results",
"soqlCompatible" : true,
"url" : "/services/data/v55.0/sobjects/Account/listviews/00BD0000005WcCFMA0"
}, {
"describeUrl" :
"/services/data/v55.0/sobjects/Account/listviews/00BD0000005WcCNMA0/describe",
"developerName" : "MyAccounts",
"id" : "00BD0000005WcCNMA0",
"label" : "My Accounts",
"resultsUrl" :
"/services/data/v55.0/sobjects/Account/listviews/00BD0000005WcCNMA0/results",
"soqlCompatible" : true,
"url" : "/services/data/v55.0/sobjects/Account/listviews/00BD0000005WcCNMA0"
} ],
"nextRecordsUrl" : null,
"size" : 6,
"sobjectType" : "Account"
}
202
Reference Support Knowledge with REST API
Authenticated users need the UserProfile.apiEnabled permission, Knowledge enabled in the organization, read rights on
the article type, and any other knowledge specific permission or preference that controls visibility to articles.
Guest users need the Guest Access to the Support API preference enabled on the relevant Site, Knowledge enabled in
the organization, and read rights on the article type and article channel that controls the visibility for guest users.
Syntax
The root endpoint for all Knowledge support APIs that can be open to guest users.
Available since release
38.0
Method
GET
Formats
JSON, XML
Authentication
OAuth accesstoken
Endpoint
/services/data/vXX.X/support
HTTP headers
Accept: Optional. Can be either application/json or application/xml.
Input
None
Output
The following resources are related to Knowledge.
{
"dataCategoryGroups" : "/services/data/vXX.X/support/dataCategoryGroups",
"knowledgeArticles" : "/services/data/vXX.X/support/knowledgeArticles"
:
}
IN THIS SECTION:
Data Category Groups
Get data category groups that are visible to the current user.
Data Category Detail
Gets data category details and the child categories by a given category.
Articles List
Get a page of online articles for the given language and category through either search or query.
Articles Details
Gets all online article fields, accessible to the user.
203
Reference Data Category Groups
Syntax
Available since release
38.0
Method
GET
Formats
JSON, XML
Authentication
OAuth accesstoken
Endpoint
/services/data/vXX.X/support/dataCategoryGroups
HTTP headers
Accept: Optional. Can be either application/json or application/xml.
Accept-language: Optional. Language to translate the categories. Any ISO-639 language abbreviation, and an ISO-3166 country
code subtag in the HTTP Accept-Language header. Only one language accepted. If no language specified, the non-translated labels
are returned.
Input:
string sObjectName: Required. KnowledgeArticleVersion only.
boolean topCategoriesOnly: Optional. Defaults to true
• True returns only the top level categories.
• False returns the entire tree.
Output:
A list of the active data category groups that are visible to the current user in the site context. Returns id, name, label, and their top
level categories or the entire data category group tree that are visible to the current user. The labels must be translated to the given
language if they are available.
• Data Category Group List
This payload lists the active root Data Category Groups that can be used in other requests to return the data categories and
articles related to it.
{
"categoryGroups": [ Data Category Group, ....],
}
Note: Returns only the active groups that are associated to the given entity (by sObjectName). Only
KnowledgeArticleVersion is supported.
204
Reference Data Category Groups
This represents an individual data category group, and its root category.
{
"name": String, // the unique name of the category group
"label": String, // returns the translated version if it is available
"objectUsage" : String, // currently only "KnowledgeArticleVersion" is available.
Note: The URL property is a pre-calculated path to the unique resource representing this data category, in this case it is
a Data Category Detail API.
Example
Input
/services/data/v55.0/support/dataCategoryGroups?sObjectName=KnowledgeArticleVersion
Output
{
"categoryGroups" : [ {
"label" : "Doc",
"name" : "Doc",
"objectUsage" : "KnowledgeArticleVersion",
"topCategories" : [ {
"childCategories" : null,
"label" : "All",
"name" : "All",
"url" :
"/services/data/v55.0/support/dataCategoryGroups/Doc/dataCategories/All?sObjectName=KnowledgeArticleVersion"
} ]
}, {
"label" : "Manual",
"name" : "Manual",
"objectUsage" : "KnowledgeArticleVersion",
"topCategories" : [ {
"childCategories" : null,
"label" : "All",
"name" : "All",
205
Reference Data Category Detail
"url" :
"/services/data/v55.0/support/dataCategoryGroups/Manual/dataCategories/All?sObjectName=KnowledgeArticleVersion"
} ]
} ]
}
Usage
Salesforce Knowledge must be enabled in your organization. This resource can be used in API version 38.0 and later. Use the language
code format used in Which Languages Does Salesforce Support?.
Only the user’s visible data categories are returned. A user might be able to see several sub trees in the category group, therefore, the
top categories that are visible to the user in each group are returned.
Syntax
Available since release
38.0
Method
GET
Formats
JSON, XML
Authentication
OAuth accesstoken
Endpoint
/services/data/vXX.X/support/dataCategoryGroups/group/dataCategories/category
HTTP headers
Accept: Optional. Can be either application/json or application/xml.
Accept-language: Optional. Language to translate the categories. Any ISO-639 language abbreviation, and an ISO-3166 country
code subtag in the HTTP Accept-Language header. Only one language accepted. If no language specified, the non-translated labels
are returned.
Input:
string sObjectName: Required. KnowledgeArticleVersion only.
Output:
Details of the category and a list of child categories (name, label, etc.).
• Data Category Detail
Used for situations where the hierarchical representation of data categories is important. The child property contains a list of
child data categories.
{
"name": String, // the unique name of the category
206
Reference Articles List
Note: If the category isn’t visible to the current user the return is empty.
Example
Input
/services/data/v55.0/support/dataCategoryGroups/Doc/dataCategories/All?sObjectName=KnowledgeArticleVersion
Output
{
"childCategories" : [ {
"childCategories" : null,
"label" : "Help",
"name" : "Help",
"url" :
"/services/data/v55.0/support/dataCategoryGroups/Doc/dataCategories/Help?sObjectName=KnowledgeArticleVersion"
}, {
"childCategories" : null,
"label" : "QA",
"name" : "QA",
"url" :
"/services/data/v55.0/support/dataCategoryGroups/Doc/dataCategories/QA?sObjectName=KnowledgeArticleVersion"
} ],
"label" : "All",
"name" : "All",
"url" :
"/services/data/v55.0/support/dataCategoryGroups/Doc/dataCategories/All?sObjectName=KnowledgeArticleVersion"
}
Usage
Salesforce Knowledge must be enabled in your organization. This resource can be used in API version 38.0 and later. Use the language
code format used in Which Languages Does Salesforce Support?.
Articles List
Get a page of online articles for the given language and category through either search or query.
Syntax
Available since release
38.0
207
Reference Articles List
Method
GET
Formats
JSON, XML
Authentication
OAuth access token
Endpoint
/services/data/vXX.X/support/knowledgeArticles
HTTP headers
Accept: Optional. Can be either application/json or application/xml.
Accept-language: Required. The article must be an active language in the user’s organization
• If the language code isn’t valid, an error message is returned: “The language code is not valid or not supported by Knowledge.”
• If the language code is valid, but not supported by Knowledge, then an error message is returned: “Invalid language code. Check
that the language is included in your Knowledge language settings."
Input:
string q: Optional, Performs an SOSL search. If the query string is null, empty, or not given, an SOQL query runs.
The characters ? and * are used for wildcard searches. The characters (, ), and " are used for complex search terms. See
https://developer.salesforce.com/docs/atlas.en-us.soql_sosl.meta/soql_sosl/sforce_api_calls_sosl_find.htm.
string channel: Optional, defaults to user’s context. For information on channel values, see Valid channel values.
• App: Visible in the internal Salesforce Knowledge application
• Pkb: Visible in the public knowledge base
• Csp: Visible in the Customer Portal
• Prm: Visible in the Partner Portal
string categories in map json format {“group1”:”category1”,”group2”:”category2”,...} )
Optional, defaults to None. Category group must be unique in each group:category pair, otherwise you get
ARGUMENT_OBJECT_PARSE_ERROR. There is a limit of three data category conditions, otherwise you get
INVALID_FILTER_VALUE.
string queryMethod values are: AT, BELOW, ABOVE, ABOVE_OR_BELOW. Only valid when categories are specified,
defaults to ABOVE_OR_BELOW.
string sort: Optional, a sortable field name LastPublishedDate, CreatedDate, Title, ViewScore. Defaults
to LastPublishedDate for query and relevance for search.
Note: When sorting on ViewScore it is only available for query, not search, and no pagination is supported. You only get
one page of results.
string order: Optional, either ASC or DESC, defaults to DESC. Valid only when sort is valid.
integer pageSize: Optional, defaults to 20. Valid range 1 to 100.
integer pageNumber : Optional, defaults to 1.
Output:
A page of online articles in the given language and category visible to the current user.
• Article Page
208
Reference Articles List
A page of articles. The individual entries are article summaries so the size can be kept at a minimum.
{
"articles": [ Article Summary, … ], // list of articles
"currentPageUrl": URL, // the article list API with current page number
"nextPageUrl": URL, // the article list API with next page number,
which can be null if there are no more articles.
"pageNumber": Int // the current page number, starting at 1.
}
Note: The API supports paging. Each page of responses includes a URL to its page, as well as the URL to the next page
of articles.
Note: if the user input parameter has the default value, the API does not show this parameter in either
currentPageUrl or nextPageUrl.
• Article Summary
A summary of an article used in a list of article responses. It shares similar properties to the Article Detail representation, as one
is a superset of the other.
{
"id": Id, // articleId
"articleNumber": String,
"articleType": String, // apiName of the article type, available in API v44.0
and later
"title": String,
"urlName": String, // available in API v44.0 and later
"summary": String,
"url": URL, // to the Article Detail API
"viewCount": Int, // view count in the interested channel
"viewScore": double (in xxx.xxxx precision), // view score in the interested
channel.
"upVoteCount": int, // up vote count in the interested channel.
"downVoteCount": int, // down vote count in the interested channel.
"lastPublishedDate": Date // last publish date in ISO8601 format
"categoryGroups": [ Data Category Group, …. ]}
The “url” property always points to the Article Details resource endpoint. For information on valid channel values, see the channel
parameter description
209
Reference Articles List
language specified
"url": String // returns the url for the DataCategory REST API.
}
Note: The outputs of Data Category Group and Data Category Summary in Article List API are different from the Data
Category Groups API.
Example
Input
/services/data/v55.0/support/knowledgeArticles?sort=ViewScore&channel=Pkb&pageSize=3
HTTP Headers:
Content-Type: application/json; charset=UTF-8
Accept: application/json
Accept-Language: en-US
Output
{
"articles" : [ {
"articleNumber" : "000001002",
"categoryGroups" : [ ],
"downVoteCount" : 0,
"id" : "kA0xx000000000BCAQ",
"lastPublishedDate" : "2015-02-25T02:07:18Z",
"summary" : "With this online Chinese input tool, you can type Chinese characters
through your web browser without installing any Chinese input software in your system.
The Chinese online input tool uses the popular Pin Yin input method. It is a fast and
convenient tool to input Chinese on English OS environments.",
"title" : "Long text test",
"upVoteCount" : 0,
"url" : "/services/data/v55.0/support/knowledgeArticles/kA0xx000000000BCAQ",
"viewCount" : 4,
"viewScore" : 100.0
}, {
"articleNumber" : "000001004",
"categoryGroups" : [ ],
"downVoteCount" : 0,
"id" : "kA0xx000000000LCAQ",
"lastPublishedDate" : "2016-06-21T21:11:02Z",
"summary" : "The number of characters required for complete coverage of all these
languages' needs cannot fit in the 256-character code space of 8-bit character encodings,
requiring at least a 16-bit fixed width encoding or multi-byte variable-length encodings.
\r\n\r\nAlthough CJK encodings have common character sets, the encodings often used to
represent them have been developed separately by different East Asian governments and
software companies, and are mutually incompatible. Unicode has attempted, with some
controversy, to unify the character sets in a process known as Han unification.\r\n\r\nCJK
character encodings should consist minimally of Han characters p",
"title" : "Test Images",
"upVoteCount" : 0,
"url" : "/services/data/v55.0/support/knowledgeArticles/kA0xx000000000LCAQ",
"viewCount" : 0,
"viewScore" : 0.0
210
Reference Articles Details
}, {
"articleNumber" : "000001012",
"categoryGroups" : [ ],
"downVoteCount" : 0,
"id" : "kA0xx000000006GCAQ",
"lastPublishedDate" : "2016-06-21T21:10:48Z",
"summary" : null,
"title" : "Test Draft 2",
"upVoteCount" : 0,
"url" : "/services/data/v55.0/support/knowledgeArticles/kA0xx000000006GCAQ",
"viewCount" : 0,
"viewScore" : 0.0
} ],
"currentPageUrl" :
"/services/data/v55.0/support/knowledgeArticles?channel=Pkb&pageSize=3&sort=ViewScore",
"nextPageUrl" : null,
"pageNumber" : 1
}
Usage
Salesforce Knowledge must be enabled in your organization. This resource can be used in API version 38.0 and later. The Custom File
Field is not supported because it returns a link to a binary stream. Use the language code format used in Which Languages Does Salesforce
Support?.
• If channel isn’t specified, the default value is determined by the type of user.
– Pkb for a guest user
– Csp for a Customer Portal user
– Prm for a Partner Portal user
– App for any other type of user
Articles Details
Gets all online article fields, accessible to the user.
211
Reference Articles Details
Syntax
Available since release
38.0
Method
GET
Formats
JSON, XML
Authentication
OAuth access token
Endpoint
/services/data/vXX.X/support/knowledgeArticles/articleId
/services/data/vXX.X/support/knowledgeArticles/articleUrlName Available in API v44.0 and later
HTTP headers
Accept: Optional. Can be either application/json or application/xml.
Accept-language: Required. The article must be an active language in the user’s organization
• If the language code isn’t valid, an error message is returned: “The language code is not valid or not supported by Knowledge.”
• If the language code is valid, but not supported by Knowledge, then an error message is returned: “Invalid language code. Check
that the language is included in your Knowledge language settings."
Input:
string channel: Optional, defaults to user’s context. For information on channel values, see Valid channel Values.
• App: Visible in the internal Salesforce Knowledge application
• Pkb: Visible in the public knowledge base
• Csp: Visible in the Customer Portal
• Prm: Visible in the Partner Portal
boolean updateViewStat: Optional, defaults to true. If true, API updates the view count in the given channel as well as the
total view count.
boolean isUrlName: Optional, defaults to false. If true, indicates that the last portion of the endpoint is a URL name instead of an
article ID. Available in API v44.0 and later
Output:
The detailed fields of the article, if the article is online and visible to the current user.
• Article Detail
Full detail of an article, with complete metadata and layout-driven fields used for display of an article. It includes all the same
properties as an Article Summary representation.
{
"id": Id, // articleId,
"articleNumber": String,
"articleType": String, // apiName of the article type, available in API
v44.0 and later
"title": String,
"urlName": String, // available in API v44.0 and later
"summary": String,
"url": URL,
212
Reference Articles Details
"versionNumber": Int,
"createdDate": Date, // in ISO8601 format
"createdBy": User Summary on page 213,
"lastModifiedDate": Date, // in ISO8601 format
"lastModifiedBy": User Summary on page 213,
"lastPublishedDate": Date, // in ISO8601 format
"layoutItems": [ Article Field, ... ], // standard and custom fields visible
to the user, sorted based on the layouts of the article type.
"categories": [ Data Category Groups, ... ],
"appUpVoteCount": Int,
"cspUpVoteCount": Int,
"prmUpVoteCount": Int,
"pkbUpVoteCount": Int,
"appDownVoteCount": Int,
"cspDownVoteCount": Int,
"prmDownVoteCount": Int,
"pkbDownVoteCount": Int,
"allViewCount": Int,
"appViewCount": Int,
"cspViewCount": Int,
"prmViewCount": Int,
"pkbViewCount": Int,
"allViewScore": Double,
"appViewScore": Double,
"cspViewScore": Double,
"prmViewScore": Double,
"pkbViewScore": Double
}
• User Summary
{
"id": String
"isActive": boolean // true/false
"userName": String // login name
"firstName": String
"lastName": String
"email": String
"url": String // to the chatter user detail url:
/services/data/vXX.X/chatter/users/{userId}, for guest user, it will return null.
}
• Article Field
An individual field of article information, which is listed in an Article Detail in the order required by the administrator’s layout.
{
"type": Enum, // see the Notes
"name": String, // In API v43.0 and earlier, the developer name. In
API v44.0 and later, the API name.
"label": String, // label
"value": String,
}
213
Reference Articles Details
Example
Input
/services/data/v55.0/support/knowledgeArticles/kA0xx000000000LCAQ
HTTP Headers:
Content-Type: application/json; charset=UTF-8
Accept: application/json
Accept-Language: en-US
Output
{
"allViewCount" : 17,
"allViewScore" : 100.0,
"appDownVoteCount" : 0,
"appUpVoteCount" : 0,
"appViewCount" : 17,
"appViewScore" : 100.0,
"articleNumber" : "000001004",
"categoryGroups" : [ ],
"createdBy" : {
"email" : "[email protected]",
"firstName" : "Test",
"id" : "005xx000001SvoMAAS",
"isActive" : true,
"lastName" : "User",
"url" : "/services/data/v55.0/chatter/users/005xx000001SvoMAAS",
"userName" : "[email protected]"
},
"createdDate" : "2016-06-21T21:10:54Z",
"cspDownVoteCount" : 0,
"cspUpVoteCount" : 0,
"cspViewCount" : 0,
"cspViewScore" : 0.0,
"id" : "kA0xx000000000LCAQ",
"lastModifiedBy" : {
"email" : "[email protected]",
"firstName" : "Test",
"id" : "005xx000001SvoMAAS",
"isActive" : true,
"lastName" : "User",
"url" : "/services/data/v55.0/chatter/users/005xx000001SvoMAAS",
"userName" : "[email protected]"
},
"lastModifiedDate" : "2016-06-21T21:11:02Z",
"lastPublishedDate" : "2016-06-21T21:11:02Z",
"layoutItems" : [ {
"label" : "Out of Date",
"name" : "IsOutOfDate",
"type" : "CHECKBOX",
"value" : "false"
}, {
"label" : "sample",
"name" : "sample",
214
Reference Articles Details
"type" : "PICK_LIST",
"value" : null
}, {
"label" : "Language",
"name" : "Language",
"type" : "PICK_LIST",
"value" : "en_US"
}, {
"label" : "MyNumber",
"name" : "MyNumber",
"type" : "NUMBER",
"value" : null
}, {
"label" : "My File",
"name" : "My_File",
"type" : "FILE",
"value" : null
} ],
"pkbDownVoteCount" : 0,
"pkbUpVoteCount" : 0,
"pkbViewCount" : 0,
"pkbViewScore" : 0.0,
"prmDownVoteCount" : 0,
"prmUpVoteCount" : 0,
"prmViewCount" : 0,
"prmViewScore" : 0.0,
"summary" : "The number of characters required for complete coverage of all these
languages' needs cannot fit in the 256-character code space of 8-bit character encodings,
requiring at least a 16-bit fixed width encoding or multi-byte variable-length encodings.
\r\n\r\nAlthough CJK encodings have common character sets, the encodings often used to
represent them have been developed separately by different East Asian governments and
software companies, and are mutually incompatible. Unicode has attempted, with some
controversy, to unify the character sets in a process known as Han unification.\r\n\r\nCJK
character encodings should consist minimally of Han characters p",
"title" : "Test Images",
"url" : "/services/data/v55.0/support/knowledgeArticles/kA0xx000000000LCAQ",
"versionNumber" : 7
}
Usage
Salesforce Knowledge must be enabled in your organization. This resource can be used in API version 38.0 and later. The Custom File
Field is not supported because it returns a link to a binary stream. Use the language code format used in Which Languages Does Salesforce
Support?.
A lookup custom field is visible to guest users depending on the lookup entity type. For example, User is visible, but Case and Account
are not visible. Following standard fields are not visible to a guest user, even if they are in the layout:
• archivedBy
• isLatestVersion
• translationCompletedDate
• translationImportedDate
• translationExportedDate
215
Reference Parameterized Search
• versionNumber
• visibleInInternalApp
• visibleInPKB
• visibleToCustomer
• visbileToPartner
• If channel isn’t specified, the default value is determined by the type of user.
– Pkb for a guest user
– Csp for a Customer Portal user
– Prm for a Partner Portal user
– App for any other type of user
Parameterized Search
Executes a simple RESTful search using parameters instead of a SOSL clause. Indicate parameters in a URL in the GET method. Or, use
POST for more complex JSON searches.
Syntax
URI
/services/data/vXX.X/parameterizedSearch/?q=searchString
Formats
JSON, XML
HTTP Method
GET, POST
Authentication
Authorization: Bearer token
216
Reference Parameterized Search
Name Description
q A search string that is properly URL-encoded.
dataCategories dataCategoriesFilter[] POST If an organization uses Salesforce Knowledge articles or answers, filters all search
results based on one or more data categories.
When using dataCategories, specify a Salesforce Knowledge article or answer
type with sobjects and the required parameters.
For example:
{
"q":"Acme",
"fields":["id", "title"],
"sobjects":[{"name":"KnowledgeArticleVersion",
"where":"language='en_US' and publishstatus='draft'"}],
"dataCategories":[
{"groupName" : "location__c", "operator":"below",
"categories":["North_America__c"]}
]
}
217
Reference Parameterized Search
division string GET, Single value. Filters search results based on the division field.
POST For example in the GET method, division=global.
Specify a division by its name rather than ID.
All searches within a specific division also include the global division.
fields string GET Comma-separated list of one or more fields to return in the response for each
sobject specified. At least one sobject must be specified at the global level.
For example: fields=id&sobject=Account&sobject=Contact.
The global fields parameter is overridden when sobject are specified using
sobject.fields=field names. For example,
Contact.fields=id,FirstName,LastName would override the global
setting of just returning the id.
If unspecified, then the search results contain the IDs of records matching all fields
for the specified object.
Functions
The following optional functions can be used within the fields parameter.
• toLabel: Translates response field value into the user’s language. For example,
Lead.fields=id,toLabel(Status). This function requires extra
setup.
• convertCurrency: Converts response currency fields to the user’s currency.
For example,
Opportunity.fields=id,convertCurrency(Amount). This
function requires extra setup. Multi-currency must be enabled for your org.
• format: Applies localized formatting to standard and custom number, date,
time, and currency fields. For example,
Opportunity.fields=id,format(Amount).
Aliasing is support within fields for toLabel, convertCurrency, and
format. In addition, aliasing is required when the query includes the same field
multiple times. For example,
Opportunity.fields=id,format(Amount) AliasAmount
218
Reference Parameterized Search
{
"q":"Acme",
"fields":["Id", "Name", "Phone"],
"sobjects":[{"name": "Account"},
{"name": "Contact", "fields":["Id",
"FirstName", "LastName"]},
{"name": "Lead"}]
}
219
Reference Parameterized Search
"fields":["Id", "format(Amount)"]}]
...
}
in string GET, Scope of fields to search. If you specify one or more scope values, the fields are
POST returned for all found objects.
Use one of the following values:
• ALL
• NAME
• EMAIL
• PHONE
• SIDEBAR
This clause doesn't apply to articles, documents, feed comments, feed items, files,
products, and solutions. If any of these objects are specified, the search is not limited
to specific fields; all fields are searched.
metadata string GET, Specifies if metadata should be returned in the response. No metadata is returned
POST by default. To include metadata in the response, use the LABELS value, which
returns the display label for the fields returned in search results. For example:
?q=Acme&metadata=LABELS
offset string GET, Single value. The starting row offset into the result set returned.
POST The maximum offset is 2000.
Only one sobject can be specified when using this parameter.
220
Reference Parameterized Search
pricebookId string GET, Single value. Filters product search results by a price book ID for only the Product2
POST object. The price book ID must be associated with the product that you’re searching
for. For example,
?q=laptop&sobject=product2&pricebookId=01sxx0000002MffAAE
snippet string GET, The target length (maximum number of snippet characters) to return in Salesforce
POST Knowledge article, case, case comment, feed, feed comment, idea, and idea
comment search results. The snippet parameter displays contextual excerpts
and highlights the search term for each article in the search results. Snippet results
are used to differentiate matches to the search term in article search results. The
target length can be from 50 to 1000 characters.
Snippet and highlights are generated from email, text, and text area (long and rich)
fields. Snippets aren’t displayed for partially matching searches or if the user doesn’t
have access to the field that contains the snippet. Snippets are only displayed when
20 or fewer results are returned on a page.
At least one of the following sobject values must be specified.
• To search a specific article type, use the article type name with the suffix
__kav.
• To search all article types, use KnowledgeArticleVersion.
• To search case, case comment, feed, feed comment, idea, and idea comment
types, use Case, CaseComment, FeedItem, FeedComment, Idea,
and IdeaComment.
For example, q=tourism&sobject=Case&snippet=500.
sobject string GET Objects to return in the response. Must be a valid object type.
You can use multiple sobject values, such as
sobject=Account&sobject=Contact.
If unspecified, then the search results contain the IDs of all objects.
sobjects sobjectsFilter[] POST Objects to return in the response. Must contain valid object types. Use with the
required parameters.
For example:
{
"q":"Acme",
"fields":["id", "title"],
"sobjects":[{"name":"Solution__kav",
"where":"language='en_US' and publishstatus='draft'"},
221
Reference Parameterized Search
{"name":"FAQ__kav",
"where":"language='en_US' and publishstatus='draft'"}]
If unspecified, then the search results contain the IDs of all objects.
spellCorrection boolean GET, Specifies whether spell correction is enabled for a user’s search. When set to true,
POST spell correction is enabled for searches that support spell correction. The default
value is true.
For example:
q=Acme&sobject=Account&Account.fields=id&spellCorrection=true
updateTracking string GET, Specifies a value of true to track keywords that are used in Salesforce Knowledge
POST article searches only.
If unspecified, the default value of false is applied.
updateViewStat string GET, Specifies a value of true to update an article’s view statistics. Valid only for
POST Salesforce Knowledge article searches.
If unspecified, the default value of false is applied.
dataCategoriesFilter[] Parameters
Parameters must be specified in the order presented in the table (groupName, operator, categories).
limit string Specify the maximum number of rows that are returned for the sobject.
222
Reference Parameterized Search
orderBy string Controls the field order of the results using the following syntax "orderBy" : "field
{ASC|DESC} [NULLS_{FIRST|LAST}]"
For example:
{
...
"sobjects":[ {"name": "Account", "fields":["Id", "name"], "orderBy":
"Name DESC Nulls_last"}]
...
}
where string Filter search results for this object by specific field values.
For example, where : conditionExpression. Here the conditionExpression of the
WHERE clause uses the following syntax: fieldExpression [logicalOperator
fieldExpression2 ... ].
Add multiple field expressions to a condition expression by using logical and comparison operators.
limit string Specifies the maximum number of rows that are returned for the sobject.
For example, Account.limit=10.
orderBy string Controls the field order of the results using the following syntax orderBy = field {ASC|DESC}
[NULLS_{FIRST|LAST}]
For example: Account.orderBy=Name
• ASC: ascending. Default.
• DESC: descending.
• NULLS_FIRST: Null records at the beginning of the results. Default.
223
Reference Portability
where string Filter search results for this object by specific field values.
For example, Account.where = conditionExpression. Here the conditionExpression
of the WHERE clause uses the following syntax: fieldExpression [logicalOperator
fieldExpression2 ... ].
Add multiple field expressions to a condition expression by using logical and comparison operators. For
example, KnowledgeArticleVersion.where=publishstatus='online' and
language='en_US'.
{
"q":"Smith",
"fields" : ["id", "firstName", "lastName"],
"sobjects":[{"fields":["id", "NumberOfEmployees"],
"name": "Account",
"limit":20},
{"name": "Contact"}],
"in":"ALL",
"overallLimit":100,
"defaultLimit":10
}
Portability
The Portability API compiles customer information across objects and fields that you identified when creating a portability policy in
Salesforce Customer 360 Privacy Center. You can locate your customers’ personally identifiable information (PII) across multiple records
when using API version 50.0 and later. Data portability satisfies your customers’ right to obtain a copy of their PII that is kept in your
organization’s platform. To meet privacy regulations, such as the General Data Protection Regulation (GDPR), data portability requests
must be fulfilled within one month of when the request is made.
Execute the Portability API with the POST method to aggregate your data subject’s PII found in the Account, Contact, Individual, Lead,
Person, and User objects into one file. You receive a response with a URL to download the file, a policy file ID, and information on the
objects and fields you selected when creating the policy. Use the policy file ID to execute the Portability API with the GET method.
Execute the Portability API with the GET method to see the status of your POST method execution request. Use the policy file ID from
the POST method response to execute the GET method. The GET method response contains this information:
Value Description
policyFileStatus The status of the file being compiled. Values are: In Progress, Complete, or Failed.
224
Reference Portability
Value Description
policyFileURL The URL to a servlet, where you download the file after it's compiled.
policyFileID The ID of the file being compiled, which is returned in the POST method response. The
ID is 15 characters.
Note: Starting with the Spring ‘21 release, Customer 360 Privacy Center automatically deletes files generated by Portability API
after 60 days. You receive a reminder seven days before a file is deleted.
Required Permissions
To use the Portability API, you must have the ModifyAllData or PrivacyDataAccess user permission. Ensure that your Salesforce admin
has granted you these permissions.
Syntax
URI
/services/data/vXX.X/consent/dsr/rtp/execute
Available since release
50.0
Formats
JSON
HTTP methods
POST, GET
POST Request parameters
Parameter Description
dataSubjectId The ID of the customer making the request. The ID is 15 or 18 characters long, and
found in the Account, Contact, Individual, Lead, Person, and User objects.
policyName The name of an active policy. This contains the object in the dataSubjectId parameter.
Parameter Description
policyFileId The ID of the file being compiled, which is returned in the POST method response. The
ID is 15 characters.
POST Example
URI
/services/data/v55.0/consent/dsr/rtp/execute
225
Reference Process Approvals
Request Body
{
“dataSubjectId”:”<root ID>”,
“policyName”:”<policyName>”
}
Response
{
“status" : "SUCCESS",
"warnings" : [ ],
"result" : {
"policyFileStatus" : "In Progress",
"policyFileUrl" :
"https://MyDomainName.my.salesforce.com/servlet/policyFileDownload?file=0jeS70000004CBO",
"policyFileId" : "0jeS70000004CBO"
}
}
GET Example
URI
/services/data/v55.0/consent/dsr/rtp/execute?policyFileId=0jeS70000004CBO
Response
{
“status" : "SUCCESS",
"warnings" : [ ],
"result" : {
"policyFileStatus" : "Failed",
"policyFileUrl" :
"https://MyDomainName.my.salesforce.com/servlet/policyFileDownload?file=0jeS70000004CBO",
"policyFileId" : "0jeS70000004CBO"
}
}
Process Approvals
Returns a list of all approval processes. Can also be used to submit a particular record if that entity supports an approval process and one
has already been defined. Records can be approved and rejected if the current user is an assigned approver. When using a POST request
to do bulk approvals, the requests that succeed are committed and the requests that don’t succeed send back an error.
226
Reference Process Approvals
Syntax
URI
To return a list of the approvals, the URI is: /services/data/vXX.X/process/approvals/
Available since release
30.0
Formats
JSON, XML
HTTP methods
GET, HEAD, POST
Authentication
Authorization: Bearer token
Request parameters
None required
Request body
The request body contains an array of process requests that contain the following information:
comments string The comment to add to the history step associated with this request.
nextApproverIds ID[] If the process requires specification of the next approval, the ID of the user to be
assigned the next request.
skipEntryCriteria boolean Determines whether to evaluate the entry criteria for the process (true) or not
(false) if the process definition name or ID isn’t null. If the process definition name
or ID isn’t specified, this argument is ignored, and standard evaluation is followed
based on process order. By default, the entry criteria isn’t skipped if it’s not set
by this request.
Response body
The response contains an array of process results that contain the following information:
instanceId ID The ID of the ProcessInstance associated with the object submitted for processing.
227
Reference Process Rules
newWorkItemIds ID[] Case-insensitive IDs that point to ProcessInstanceWorkitem items (the set of
pending approval requests)
Examples
• See Get a List of All Approval Processes.
• See Submit a Record for Approval.
• See Approve a Record.
• See Reject a Record.
• See Bulk Approvals.
Process Rules
Returns a list of all active workflow rules. If a rule has actions, the actions will be listed under the rule. Can also be used to trigger all
workflow rules that are associated with a specified record. The actions for a rule are only fired if the rule’s criteria is met. When using a
POST request, if anything fails, the whole transaction is rolled back.
Cross-object workflow rules cannot be invoked using the REST API.
Syntax
URI
To get a list of the workflow rules or to trigger one or more workflow rules, the URI is:
/services/data/vXX.X/process/rules/
To get the rules for a particular object: /services/data/vXX.X/process/rules/sObjectName
To get the metadata for a particular rule:
/services/data/vXX.X/process/rules/sObjectName/workflowRuleId
Available since release
30.0
Formats
JSON, XML
HTTP methods
HEAD, GET, POST
Authentication
Authorization: Bearer token
Request parameters
None required
228
Reference Product Schedules
Request body
The request body contains an array of context IDs:
Examples
• See Get a List of Process Rules.
• See Get a Particular Process Rule.
• See Trigger Process Rules.
Product Schedules
Work with revenue and quantity schedules for opportunity products. Establish or reestablish a product schedule with multiple installments
for an opportunity product. Delete all installments in a schedule.
This resource is available in REST API version 43.0 and later.
In API version 46.0 and later, established and re-established schedules support custom fields, validation rules, and Apex triggers. Deleting
all schedules now also fires delete triggers.
URI
/services/data/vXX.X/sobjects/OpportunityLineItem/OpportunityLineItemId/OpportunityLineItemSchedules
Formats
JSON, XML
HTTP Method
GET, PUT, DELETE
Authentication
Authorization: Bearer token
Parameters
Parameter Description
type The type of the schedule. Required when establishing
OpportunityLineItemSchedules. Valid values include Quantity,
Revenue, or Both.
quantityScheduleType The type of the quantity schedule, if the product has one. Valid
values are Divide or Repeat.
229
Reference Product Schedules
Parameter Description
quantityScheduleInstallmentsNumber If the product has a quantity schedule, the number of
installments. Can be an integer from 1 to 150.
revenueScheduleType The type of the revenue schedule, if the product has one. Valid
values are Divide or Repeat.
Example:
Establish both quantity and revenue schedules for an opportunity product; establish a revenue schedule only; establish
a quantity schedule only.
curl
https://MyDomainName.my.salesforce.com/services/data/v55.0/sobjects/OpportunityLineItem/00kR0000001WJJAIA4/OpportunityLineItemSchedules
-H "Authorization: Bearer token"
{
"type": “Revenue”,
"revenue": 100,
"revenueScheduleType": “Divide”,
"revenueScheduleInstallmentPeriod": “Quarterly”,
"revenueScheduleInstallmentsNumber": 10,
"revenueScheduleStartDate": "2018-09-15"
}
230
Reference Query
{
"type": “Quantity”,
"quantity": 10,
"quantityScheduleType": "Repeat",
"quantityScheduleInstallmentPeriod": “Daily”,
"quantityScheduleInstallmentsNumber": 150,
"quantityScheduleStartDate": "2020-09-15",
}
Query
Executes the specified SOQL query.
When a SOQL query is executed, up to 2,000 records can be returned at a time in a synchronous request. If the number of results exceeds
this limit, the response contains only the first set of results and a query identifier, contained in the response’snextRecordsUrl field.
The identifier can be used in another request to retrieve the next batch of records.
URI
/services/data/vXX.X/query/?q=SOQL query
For retrieving query performance feedback without executing the query:
/services/data/vXX.X/query/?explain=SOQL query
For retrieving query performance feedback on a report or list view:
/services/data/vXX.X/query/?explain=report or list view ID
For retrieving more query results if the initial results are o large:
/services/data/vXX.X/query/query identifier
Formats
JSON, XML
HTTP Method
GET
Authentication
Authorization: Bearer token
Parameters
Parameter Description
q A SOQL query. To create a valid URI, replace spaces with a plus sign + in the query string. For example:
SELECT+Name+FROM+MyObject. If the SOQL query string is invalid, a MALFORMED_QUERY
response is returned.
explain A SOQL query to get performance feedback. Use explain instead of q to get a response that
details how Salesforce processes your query. Use this feedback to further optimize your queries. To
get feedback on how Salesforce processes a report or list view, use a report or list view ID in place of
the query string.
The explain parameter is available in API version 30.0 and later.
231
Reference Query
Parameter Description
Note: Using explain with the Query resource is a beta feature. There’s no support for
this beta feature. For more information, contact Salesforce.
If the SOQL query string is invalid, a MALFORMED_QUERY response is returned. If the report or list
view ID is invalid, an INVALID_ID response is returned.
Response body
For a query using the q parameter, the response contains an array of query result records. For a query using the explain parameter,
the response contains one or more query plans that can be used to execute the query, report, or list view. The plans are sorted from
most optimal to least optimal. Each plan has the following information:
fields string[] If the leading operation type is Index, these values are the index fields used
for the query. Otherwise, the value is null.
leadingOperationType string The primary operation type that can use to optimize the query. This type can
be one of these values:
• Index—The query uses an index on the query object.
• Other—The query uses optimizations internal to Salesforce.
• Sharing—The query uses an index based on the user’s sharing rules. If
there are sharing rules that limit which records are visible to the current
user, those rules can optimize the query.
• TableScan—The query scans all records for the query object, and doesn’t
use an index.
notes feedback note[] An array of one or more feedback notes. Each note contains:
• description— A detailed description of a part of the optimization.
This description can include information on optimizations that can’t be
used and why they can’t used.
• fields— An array of one or more fields used for the optimization.
• tableEnumOrId— The table name for the fields used for the
optimization.
This response field is available in API version 33.0 and later.
relativeCost number The cost of this query compared to the SOQL selective query threshold. A
value greater than 1.0 means the query isn’t selective. For more information
on selective queries, see Working with Very Large SOQL Queries in the Apex
Developer Guide.
sobjectCardinality number The approximate count of all records in your organization for the query object.
232
Reference Salesforce CDP Query Profile Parameters
SOQL Limitations
The following queries are not supported for use with Salesforce CDP:
• SOQL Subqueries
• SELECT clause: aggregate functions
• SELECT clause: date functions
• SOQL HAVING clause
Sample Queries
Use Case Queries
Data Preview: Get Email Click Events SELECT SubscriberKey__c, EngagementChannel__c, EmailName__c,
Examine data that has been ingested SubjectLine__c FROM sfmc_email_engagement_click_{EID}__dll LIMIT =100
into a data lake object.
233
Reference QueryAll
QueryAll
This API resource executes the specified SOQL query. Unlike the Query resource, QueryAll returns records that are deleted because of a
merge or delete. QueryAll also returns information about archived task and event records. QueryAll is available in API version 29.0 and
later.
When a SOQL query is executed, up to 2,000 records can be returned at a time in a synchronous request. If the number of results exceeds
this limit, the response contains only the first set of results and a query identifier, contained in the response’snextRecordsUrl field.
The identifier can be used in another request to retrieve the next batch of records. Though the nextRecordsUrl has query in
the URL, it still provides remaining results from the initial QueryAll request. The remaining results include deleted records that matched
the initial query.
URI
/services/data/vXX.X/queryAll/?q=SOQL query
If the initial number of records exceeds the default limit, use the query identifier to retrieve more query results:
/services/data/vXX.X/queryAll/query identifier
Formats
JSON, XML
234
Reference Quick Actions
HTTP Method
GET
Authentication
Authorization: Bearer token
Parameters
Parameter Description
q A SOQL query. To create a valid URI, replace spaces with a plus sign + in the query
string. For example: SELECT+Name+FROM+MyObject.
Quick Actions
Returns a list of global actions and object-specific actions. This resource is available in REST API version 28.0 and later. When working
with actions, also refer to sObject Quick Actions.
URI
/services/data/vXX.X/quickActions/
Formats
JSON, XML
HTTP Method
HEAD, GET, POST
Authentication
Authorization: Bearer token
Parameters
None required
Considerations
Add all required fields to an object before you create a quick action for that object. If you add a required field after creating a quick
action, the field won’t appear in the quick action’s describe results. Then, when the quick action runs, the field won’t be available
and an error occurs for the missing field. If you don’t want the required field to appear in the quick action’s layout, set a default value
for the field.
Example usage for getting global quick actions
curl https://MyDomainName.my.salesforce.com/services/data/v55.0/quickActions/ -H
"Authorization: Bearer token"
235
Reference Recent List Views
Example:
Retrieving recent list views for the Account object
curl
https://MyDomainName.my.salesforce.com/services/data/v55.0/sobjects/Account/listviews/recent
-H "Authorization: Bearer token"
236
Reference Recently Viewed Items
}, {
"describeUrl" :
"/services/data/v55.0/sobjects/Account/listviews/00BD0000005WcBeMAK/describe",
"developerName" : "NewThisWeek",
"id" : "00BD0000005WcBeMAK",
"label" : "New This Week",
"resultsUrl" :
"/services/data/v55.0/sobjects/Account/listviews/00BD0000005WcBeMAK/results",
"soqlCompatible" : true,
"url" : "/services/data/v55.0/sobjects/Account/listviews/00BD0000005WcBeMAK"
}, {
"describeUrl" :
"/services/data/v55.0/sobjects/Account/listviews/00BD0000005WcCFMA0/describe",
"developerName" : "AllAccounts",
"id" : "00BD0000005WcCFMA0",
"label" : "All Accounts",
"resultsUrl" :
"/services/data/v55.0/sobjects/Account/listviews/00BD0000005WcCFMA0/results",
"soqlCompatible" : true,
"url" : "/services/data/v55.0/sobjects/Account/listviews/00BD0000005WcCFMA0"
} ],
"nextRecordsUrl" : null,
"size" : 3,
"sobjectType" : "Account"
}
Parameter Description
limit An optional limit that specifies the maximum number of records to be returned. If this
parameter is not specified, the default maximum number of records returned is the
maximum number of entries in RecentlyViewed, which is 200 records per object.
237
Reference Record Count
Example
• For an example of retrieving a list of recently viewed items, see View Recently Viewed Records on page 73.
• For an example of setting records as recently viewed, see Mark Records as Recently Viewed on page 73.
Record Count
Lists information about object record counts in your organization.
This resource is available in REST API version 40.0 and later for API users with the “View Setup and Configuration” permission. The returned
record count is approximate, and does not include the following types of records:
• Deleted records in the recycle bin.
• Archived records.
URI
/services/data/vXX.X/limits/recordCount?sObjects=Object List
Formats
JSON, XML
HTTP Method
GET
Authentication
Authorization: Bearer token
Parameters
Parameter Description
sObjects A comma-delimited list of object names. If a listed object is not found in the org, it is
ignored and not returned in the response.
This parameter is optional. If this parameter is not provided, the resource returns record
counts for all objects in the org.
Response body
Record Count Response Body
Example
Example request to get record counts for Account and Contact:
/services/data/v55.0/limits/recordCount?sObjects=Account,Contact
238
Reference Record Count Response Body
} ]
}
JSON example
{
"sObjects" : [ {
"count" : 3,
"name" : "Account"
}, {
"count" : 10,
"name" : "Contact"
} ]
}
JSON example
{
"count" : 10,
"name" : "Contact"
}
239
Reference sObject Relevant Items
Note: The user’s global search scope includes the objects the user interacted with most in the last 30 days, including objects the
user pinned from the search results page in the Salesforce Classic.
Then, the resource finds more recent records for each most recently used (MRU) object until the maximum number of records, which
is 2,000, is returned.
This resource only accesses the relevant item information. Modifying the list of relevant items is not currently supported.
This resource is available in API version 35.0 and later.
URI
/services/data/vXX.X/sobjects/relevantItems
Formats
JSON
HTTP Method
GET
Authentication
Authorization: Bearer token
Parameters
Parameter Description
lastUpdatedId Optional. Compares the entire current list of relevant items to a previous version, if
available. Specify the lastUpdatedId value returned in a previous response.
sobjects Optional. To scope the results to a particular object or set of objects, specify the name
for one or more sObjects.
sobject.lastUpdatedId Optional. Compares the current list of relevant items for this particular object to a
previous version, if available. Specify the lastUpdatedId value returned in a
previous response.
Note: You can only specify this parameter for the sObjects specified in the
sobjects parameter.
Response header
The response contains headers unique to this resource.
240
Reference Retrieve Knowledge Language Settings
Response body
The response contains an array of records for each object returned, including the following information for each record.
key ID The first 3 characters of the sObject’s ID that indicates the object type.
lastUpdatedId string A unique code that can be used in subsequent calls to compare the
results for the new result set with the current results for this object.
Example
See View Relevant Items.
Syntax
URI
/services/data/vXX.X/knowledgeManagement/settings
Available since release
31.0
Formats
JSON, XML
HTTP methods
GET
Authentication
Authorization: Bearer token
Request body
None required
241
Reference Search
Request parameters
None
Usage
Salesforce Knowledge must be enabled in your organization. This resource can be used in API version 31.0 and later. It retrieves the
Knowledge language settings, including the default knowledge language and a list of supported Knowledge language information.
Search
Executes the specified SOSL search. The search string must be URL-encoded.
For more information on SOSL see the SOQL and SOSL Reference.
Syntax
URI
/services/data/vXX.X/search/?q=SOSL_search_string
Formats
JSON, XML
HTTP Method
GET
242
Reference Search Scope and Order
Authentication
Authorization: Bearer token
Parameters
Parameter Description
q A SOSL statement that is properly URL-encoded.
Example
See Search for a String on page 57.
Syntax
URI
/services/data/vXX.X/search/scopeOrder
Formats
JSON, XML
HTTP Method
GET
Authentication
Authorization: Bearer token
Example
See Get the Default Search Scope and Order.
Syntax
URI
/services/data/vXX.X/search/layout/?q=Comma_delimited_object_list
243
Reference Lightning Toggle Metrics
Formats
JSON, XML
HTTP Method
GET
Authentication
Authorization: Bearer token
Response format
format String The type of date field, such as the date only
or date and time. Only date related types
are specified; otherwise, null.
Example
Get Search Result Layouts for Objects
Syntax
URI
/services/data/vXX.X/sobjects/LightningToggleMetrics
Available since release
44.0
Formats
JSON, XML
HTTP methods
GET
Authentication
Authorization: Bearer token
Request body
SOQL query.
244
Reference Lightning Usage by App Type
Request parameters
Parameter Description
UserId The user ID.
Example
This query returns the total number of switches to Salesforce Classic:
SELECT sum(RecordCount) Total FROM LightningToggleMetrics WHERE MetricsDate = LAST_MONTH
AND Action = 'switchToAloha'
Usage
Use this object with the following APIs:
• Platform
• Metadata API
• Tooling API
Syntax
URI
/services/data/vXX.X/sobjects/LightningUsageByAppTypeMetrics
Available since release
44.0
Formats
JSON, XML
HTTP methods
GET
Authentication
Authorization: Bearer token
Request body
SOQL query.
245
Reference Lightning Usage by Browser
Request parameters
Parameter Description
AppExperience The app used:
• Salesforce Mobile
• Lightning Experience
Example
This query returns the daily active users by profile for Mobile:
SELECT MetricsDate,user.profile.name,COUNT_DISTINCT(user.id) Total FROM
LightningUsageByAppTypeMetrics WHERE MetricsDate = LAST_N_DAYS:30 AND AppExperience =
'Salesforce Mobile' GROUP BY MetricsDate,user.profile.name
Usage
Use this object with the following APIs:
• Platform
• Metadata API
• Tooling API
Syntax
URI
/services/data/vXX.X/sobjects/LightningUsageByBrowserMetrics
Available since release
44.00
Formats
JSON, XML
HTTP methods
GET
246
Reference Lightning Usage by Page
Authentication
Authorization: Bearer token
Request body
SOQL Query.
Request parameters
Parameter Description
Browser The browser used.
RecordCountEPT Number of records for a page/browser where the valid EPT was recorded.
Example
This query returns browser distribution details, for the last 3 months.
SELECT CALENDAR_MONTH(MetricsDate) MetricsDate, Browser Browser, SUM(TotalCount) Total
FROM LightningUsageByBrowserMetrics WHERE MetricsDate = Last_N_Months:3 AND (NOT Browser
like 'OTHER%') GROUP BY CALENDAR_MONTH(MetricsDate),Browser
Usage
Use this object with the following APIs:
• Platform
• Metadata API
• Tooling API
247
Reference Lightning Usage by Page
Syntax
URI
/services/data/vXX.X/sobjects/LightningUsageByPageMetrics
Available since release
44.00
Formats
JSON, XML
HTTP methods
GET
Authentication
Authorization: Bearer token
Request body
SOQL Query.
Parameter Description
EptBin3To5 Number of times that a page loaded between 3-5 seconds.
RecordCountEPT Number of records for a page/user where the valid EPT was recorded.
Example
This example returns the top 10 most visited pages and how many times each page was visited.
SELECT TotalCount FROM LightningUsageByPageMetrics ORDER BY PageName ASC NULLS FIRST LIMIT
10
Usage
Use this object with the following APIs:
• Platform
248
Reference Lightning Usage by FlexiPage
• Metadata API
• Tooling API
Syntax
URI
/services/data/vXX.X/sobjects/LightningUsageByFlexiPageMetrics
Available since release
44.00
Formats
JSON, XML
HTTP methods
GET
Authentication
Authorization: Bearer token
SOQL query.
Request parameters
Parameter Description
FlexiPageNameOrId Namespace and file name, or Page ID of FlexiPage files.
FlexiPageType The FlexiPage type. For example, record details are displayed using
RecordPage" type.
RecordCountEPT Number of records for a FlexiPage type, where the valid EPT was recorded.
Example
This query returns the top 10 most viewed custom pages over the past 7 days.
SELECT FlexiPageNameOrId FlexiPageNameOrId, SUM(TotalCount) Total FROM
LightningUsageByFlexiPageMetrics WHERE MetricsDate = Last_N_DAYS:7 AND (NOT FlexiPageNameOrId
= 'unknown unknown') AND (NOT FlexiPageNameOrId = 'unknown | unknown') GROUP BY
FlexiPageNameOrId ORDER BY SUM(TotalCount) Desc Limit 10
249
Reference Lightning Exit by Page Metrics
Usage
Use this object with the following APIs:
• Platform
• Metadata API
• Tooling API
Syntax
URI
/services/data/vXX.X/sobjects/LightningExitByPageMetrics
Available since release
44.0
Formats
JSON, XML
HTTP methods
GET
Authentication
Authorization: Bearer token
Request body
SOQL query.
Request parameters
Parameter Description
MetricsDate The date the data was recorded.
PageName Current Page from which User Switched from Lightning to Aloha
Example
This query returns the top 10 pages that were switched from Lightning Experience to Salesforce Classic over the past 7 days.
SELECT PageName PageName, SUM(RecordCount) Total FROM LightningExitByPageMetrics WHERE
MetricsDate = Last_N_DAYS:7 GROUP BY PageName ORDER BY SUM(RecordCount) Desc Limit 10
250
Reference Salesforce Scheduler Resources
Usage
Use this object with the following APIs:
• Platform
• Metadata API
• Tooling API
IN THIS SECTION:
Scheduling
Returns a list of available Salesforce Scheduler REST resources and corresponding URIs.
Get Appointment Slots
Returns a list of available appointment time slots for a resource based on given work type group and territories.
Get Appointment Candidates
Returns a list of available service resources (appointment candidates) based on work type group and service territories.
Request Bodies
Response Bodies
SEE ALSO:
Connect REST API Developer Guide: Lightning Scheduler Resources
Scheduling
Returns a list of available Salesforce Scheduler REST resources and corresponding URIs.
Syntax
URI
/services/data/vXX.X/scheduling/
Available since release
45.0
Formats
JSON, XML
HTTP methods
GET
Authentication
Authorization: Bearer token
251
Reference Get Appointment Slots
Note: The Lightning Platform REST API supports OAuth 2.0 (an open protocol to allow secure API authorization). See Authorize
Apps with OAuth in the Salesforce Help for more details.
Response Body
Execution of a successful request returns names of resources and their URIs as key-value pairs.
JSON Example
{
"getAppointmentCandidates" : "/services/data/v55.0/scheduling/getAppointmentCandidates",
"getAppointmentSlots" : "/services/data/v55.0/scheduling/getAppointmentSlots"
}
Syntax
URI
/services/data/vXX.X/scheduling/getAppointmentSlots
Available since release
45.0
Formats
JSON, XML
HTTP methods
POST
Authentication
Authorization: Bearer token
Note: The Lightning Platform REST API supports OAuth 2.0 (an open protocol to allow secure API authorization). See Authorize
Apps with OAuth in Salesforce Help for more details.
Request body
252
Reference Get Appointment Slots
endTime No String The latest time that a time slot can end (inclusive).
requiredResourceIds Yes String[] List of resource IDs that must be available during the time slot.
startTime No String The earliest time that a time slot can begin (inclusive). Defaults to
the current time of the request, if empty.
territoryIds Yes String[] List of IDs of service territories, where the work that is being
requested is performed.
workTypeGroupId Required if String The ID of the work type group containing the work types that are
workType being performed.
isn’t given.
Note: To determine the required fields in your request body, consider the following points:
• Provide either workTypeGroupId or workType in your request body, but not both
• If workType is given, then you must provide either id or durationInMinutes, but not both.
• If id of the workType is given, the rest of workType fields are optional.
Response Body
Execution of a successful request returns the response body containing a list of available time slots.
253
Reference Get Appointment Slots
Examples
Request Body Example
Using workTypeGroupId:
{
"startTime" : "2019-01-23T00:00:00.000Z",
"endTime" : "2019-02-30T00:00:00.000Z",
"workTypeGroupId" : "0VSB0000000KyjBOAS",
"accountId" : "001B000000qAUAWIA4",
"territoryIds" : ["0HhB0000000TO9WKAW"],
"schedulingPolicyId" : "0VrB0000000KyjB",
"requiredResourceIds" : ["0HnB0000000TO8gKAK"]
}
Using workType:
{
"startTime" : "2019-01-23T00:00:00.000Z",
"endTime" : "2019-02-30T00:00:00.000Z",
"workType" : {
"id" : "08qRM00000003fkYAA"
},
"requiredResourceIds" : ["0HnB0000000TO8gKAK"],
"territoryIds" : ["0HhRM00000003OZ0AY"]
"accountId" : "001B000000qAUAWIA4",
"schedulingPolicyId" : "0VrB0000000KyjB"
}
254
Reference Get Appointment Slots
}
]
}
Prerequisites
The appointment time slots are determined based on your Salesforce Scheduler data model configurations. Here are some prerequisites
that you can consider while setting up data.
• Set up Salesforce Scheduler before making your requests. The setup includes creating or configuring Service Resources, Service
Territory Members, Work Type Groups, Work Types, Work Type Group Members, and Service Territory Work Types. See Set Up
Salesforce Scheduler for more information.
• Configure a work type mapped for each territory in the request body via Service Territory Work Type. Map the same work type to
the work type group, via work type group member.
Parameter Description
Timeframe Start Time slots sooner than current time + Timeframe Start aren’t
returned.
Timeframe End Time slots later than current time + Timeframe End aren’t returned.
Block Time Before Appointment The time period before the appointment is considered as unavailable.
Block Time After Appointment The time period after the appointment is considered as unavailable.
Operating Hours The overlap of all operating hours from the account, work type, service territory, and
service territory member are considered while determining time slots. For more
information, see Set Up Operating Hours in Salesforce Scheduler.
• Only the time slots within the period of 31 days are returned.
• The earliest and latest appointment slots are calculated using the following guidelines:
– The earliest appointment slot = maximum of
• Service Territory Member Start Date
• current time + Time frame Start
• Start Time passed in the request body
255
Reference Get Appointment Candidates
Note: If asset scheduling is enabled, you can provide an asset-based service resource in requiredResourceIds to
retrieve available timeslots for the asset resource.
Syntax
URI
/services/data/vXX.X/scheduling/getAppointmentCandidates
Available since release
45.0
Formats
JSON, XML
HTTP methods
POST
Authentication
Authorization: Bearer token
Note: The Lightning Platform REST API supports OAuth 2.0 (an open protocol to allow secure API authorization). See Authorize
Apps with OAuth in Salesforce Help for more details.
Request body
256
Reference Get Appointment Candidates
filterByResources No String[] A comma-separated list of service resource IDs. API returns only
eligible service resources that are both in the list and in the selected
service territory. The resources are sorted by the order in which the
resource IDs are passed. Available in API version 51.0 and later.
resourceLimitApptDistribution No Integer Specify the maximum number of service resources that you want
to show during appointment scheduling when appointment
distribution is enabled. Available in API version 53.0 and later.
startTime No String The earliest time that a time slot can begin (inclusive). Defaults to
the current time of the request, if empty. You can also use a time
from the past.
territoryIds Yes String[] List of service territory IDs, where the work that is being requested
is performed.
workTypeGroupId Required if String The ID of the work type group containing the work types that are
workType being performed.
isn’t given.
Note: To determine the required fields in your request body, consider the following points:
• Provide either workTypeGroupId or workType in your request body, but not both
• If workType is given, then you must provide either id or durationInMinutes, but not both.
• If id of the workType is given, the rest of workType fields are optional.
Response Body
Execution of a successful request returns the response body containing a list of available appointment resources.
257
Reference Get Appointment Candidates
Examples
Request Body Example
Using workTypeGroupId:
{
"startTime" : "2019-01-23T00:00:00.000Z",
"endTime" : "2019-02-30T00:00:00.000Z",
"workTypeGroupId" : "0VSB0000000KyjBOAS",
"accountId" : "001B000000qAUAWIA4",
"territoryIds" : ["0HhB0000000TO9WKAW"],
"schedulingPolicyId" : "0VrB0000000KyjB"
}
Using workType:
{
"startTime" : "2019-01-23T00:00:00.000Z",
"endTime" : "2019-02-30T00:00:00.000Z",
"workType" : {
"id" : "08qRM00000003fkYAA"
},
"territoryIds" : ["0HhRM00000003OZ0AY"],
"accountId" : "001B000000qAUAWIA4",
"schedulingPolicyId" : "0VrB0000000KyjB"
}
258
Reference Request Bodies
"resources" : [ "0HnB0000000D2DsKAK" ],
"startTime" : "2019-01-23T16:15:00.000+0000",
"territoryId" : "0HhB0000000TO9WKAW"
}, {
"endTime" : "2019-01-23T19:30:00.000+0000",
"resources" : [ "0HnB0000000D2DsKAK" ],
"startTime" : "2019-01-23T16:30:00.000+0000",
"territoryId" : "0HhB0000000TO9WKAW"
}, {
"endTime" : "2019-01-23T19:45:00.000+0000",
"resources" : [ "0HnB0000000D2DsKAK" ],
"startTime" : "2019-01-23T16:45:00.000+0000",
"territoryId" : "0HhB0000000TO9WKAW"
}]
}
Prerequisites
The appointment time slots are determined based on your Salesforce Scheduler data model configurations. Here are some prerequisites
that you can consider while setting up data.
• Set up Salesforce Scheduler before making requests. This setup includes creating or configuring Service Resources, Service Territory
Members, Work Type Groups, Work Types, Work Type Group Members, and Service Territory Work Types. See Set Up Salesforce
Scheduler for more information.
• The territory type of the Service Territory Member must be either Primary, Secondary, or Relocation. The Primary and Relocation
territory types are considered the same.
• The territory type of the Service Territory Member must be either Primary, Secondary, or Relocation. The Primary and Relocation
territory types are considered the same.
Note: If asset scheduling is enabled, the response also includes asset-based candidates.
Request Bodies
To perform a POST, PATCH, or PUT request, create a request body formatted in either XML or JSON. This chapter lists the request bodies.
259
Reference Request Bodies
IN THIS SECTION:
Work Type
Details about the type of work to be performed.
Skill Requirement
List of skills that are required to complete a particular task for a work type.
Work Type
Details about the type of work to be performed.
operatingHoursId String No The overlap of all operating hours from the account, work
type, service territory, and service territory member are
considered while determining time slots.
skillRequirements Skill Requirement[] No List of skills that are required to complete a particular task
for a work type.
Note: Provide either Id or durationInMinutes in the request body, but not both.
Skill Requirement
List of skills that are required to complete a particular task for a work type.
SkillLevel String No The level of the skill required. Skill levels can range from
zero to 99.99. Depending on your business needs, you might
want the skill level to reflect years of experience, certification
levels, or license classes.
260
Reference Response Bodies
Response Bodies
Successful execution of a request to a Salesforce Scheduler resource can return a response body either in JSON or XML format. For
example, the request to get appointment time slots returns a list of available time slots for a selection of work type group and territories.
IN THIS SECTION:
Time Slots
Describes the result of Get Appointments Slots request.
Candidates
Describes the result of Get Appointments Candidates request.
Time Slots
Describes the result of Get Appointments Slots request.
List of time slots available for each territory.
territoryId String The service territory associated with this time slot.
Candidates
Describes the result of Get Appointments Candidates request.
List of available service resources.
261
Reference Search for Records Suggested by Autocomplete and Instant
Results
Syntax
URI
/services/data/vXX.X/search/suggestions?q=search_string&sobject=object_types
Available since release
32.0
Formats
JSON, XML
HTTP methods
GET
Authentication
Authorization: Bearer token
Request body
None required
Request parameters
Parameter Description
fields Optional. Used for creating lookup queries. Specify multiple fields using a
comma-separated list. Specifies which lookup fields to be returned in the response.
dynamicFields Optional. Available in API version 48.0 and later. Used to return additional dynamic
fields. Specify multiple options using a comma-separated list. For example, if
dynamicFields=secondaryField then each suggested record in the results
contains an additional field besides Id and Name (or Title) based on the next
eligible field in the search layout.
groupId Optional. Specifies one or more unique identifiers of one or more groups that the
question to return was posted to. Specify multiple groups using a comma-separated
list. This parameter is only applicable when the parameter type equals question.
Don’t use with the userId.
limit Optional. Specifies the maximum number of suggested records to return. If a limit isn’t
specified, 5 records are returned by default. If there are more suggested records than
the limit specified, the response body’s hasMoreResults property is true.
networkId Optional. Specifies one or more unique identifiers for the Experience Cloud sites to
return the question to. Specify multiple sites using a comma-separated list. This
262
Reference Search for Records Suggested by Autocomplete and Instant
Results
Parameter Description
parameter is only applicable when the parameter type equals question or
parameter sobject equals user.
q Required. The user’s search query string, properly URL-encoded. Suggestions are
returned only if the user’s query string meets the minimum length requirements: one
character for queries in Chinese, Japanese, Korean, and Thai; three characters for all
other languages. Query strings that exceed the maximum length of 255 characters (or
200 consecutive characters without a space break) return an error.
sobject Required. The objects that the search is scoped to, such as Account or offer__c.
If the sobject value is feedItem, the type parameter is required and it must
have a value of question.
Specify up to 10 objects with a comma-separated list. For example:
sobject=Account,Contact,Lead. To take advantage of the feature, activate
the CrossObjectTypeahead permission.
To specify the specific fields to return by object, use the following syntax with multiple
fields in a comma-separated list. The sobject is lowercase.
sobject=sobject.fields=fields
For example:
&sobject=Account,Contact,Lead&account.fields=Website,Phone
&contact.fields=Phone
topicId Optional. Specifies the unique identifier of the single topic that the question to return
was tagged as. This parameter is only applicable when the parameter type equals
question.
type Required when the sobject value is feedItem. Including this parameter for all
other sobject values doesn’t affect the query. Specifies that the type of Feed is
questions. Valid value: question.
userId Optional. Specifies one or more unique identifiers of one or more users who authored
the question to return. Specify multiple users using a comma-separated list. This
parameter is only applicable when the parameter type equals question. Don’t use
with the groupId.
useSearchScope Optional. Available in API version 40.0 and later. The default value is false. If false,
the objects specified in the request are used to suggest records. If true, in addition
to the objects specified in the request, the user's search scope is used to suggest records.
The search scope is the list of objects a user uses most frequently.
• If the request doesn’t specify an object, use useSearchScope=true.
• If useSearchScope=true and the user's search scope is empty, the default
search scope is used to suggest records.
• Typically, only the first 10 objects are used to suggest records. However, an admin
can assign objects that are always considered when returning results. If configured,
up to 15 objects are used to suggest records. For more information about assigning
objects, see Assign Search Results Objects to Users (Beta).
263
Reference Search for Records Suggested by Autocomplete and Instant
Results
Parameter Description
• Objects specified in the sobject parameter are prioritized over objects in the
user's search scope.
• Values for the ignoreUnsupportedSObjects parameter aren’t applied
to the objects in the search scope.
This example uses only the search scope.
.../search/suggestions?q=Acme&useSearchScope=true
This example uses the search scope and the Account object.
.../search/suggestions?q=Acme&sobject=Account&useSearchScope=true
where Optional. A filter that follows the same syntax as the SOQL WHERE clause. URLs encode
the expression.
Use the clause for an object, or globally for all compatible objects. An example of an
object-specific clause is:
account.where=name%20LIKE%20%27Smith%25%27. An example of a
global clause is: where=name%20LIKE%20%27Smith%25%27. The parameter
must be lower case. Any object-specific where clauses override the global where
clause. You can’t use this parameter for the Question object.
To specify multiple entities, see the following example. This feature is available in
version 38.0 and later.
...search/suggestions?q=Smith
&sobject=Account,Contact,KnowledgeArticleVersion,CollaborationGroup,Topic,FeedItem
Usage
The suggestions resource returns records when the record’s name field includes the exact text in the search string. The last term in the
search string can match the beginning of a word. Records that contain the search string within a word aren’t considered a match.
264
Reference Search for Records Suggested by Autocomplete and Instant
Results
Note: If the user’s search query contains quotation marks or wildcards, those symbols are automatically removed from the query
string in the URI.
Example: The text string national u is treated as national u* and returns “National Utility”, “National Urban Company”,
and “First National University”.
Element Description
Attributes The record’s object type and the URL for accessing the record.
Also includes the requested lookup fields’ values. For example, if you requested
fields=Id,Name, the result would include the ID and name.
Name (or Title) The record’s Name field. In the absence of a standard Name field, the Title field is used
for these objects:
• Dashboard
• Idea
• IdeaTheme
• Note
• Question
In the absence of a standard Name or Title field, the main identifying field is used. For
example, in cases, the Case Number is used.
265
Reference Search for Records Suggested by Autocomplete and Instant
Results
}, {
{
"attributes" : {
"type" : "Account",
"url" : "/services/data/v55.0/sobjects/Account/001xx000003DHscAAG"
},
"Id" : "001xx000003DHscAAG",
"Name" : "National Urban Technology Center"
} ],
"hasMoreResults" : false,
"meta" : {
"nameFields" : [ {
"entityApiName" : "Account",
"fieldApiName" : "Name"
} ],
"secondaryFields" : [ ]
}
}
266
Reference Search for Records Suggested by Autocomplete and Instant
Results
"fieldApiName" : "Name"
} ],
"secondaryFields" : [ ]
}
}
Unsupported Objects
The suggestions resource supports all searchable objects except the following.
• ContentNote
• Event
• External objects
• FeedComment
• FeedPost
• IdeaComment
• Pricebook2
• Reply
267
Reference Search Suggested Article Title Matches
• TagDefinition
• Task
Syntax
URI
/services/data/vXX.X/search/suggestTitleMatches?q=searchString
&language=articleLanguage&publishStatus=articlePublicationStatus
Available since release
30.0
Formats
JSON, XML
HTTP methods
GET
Authentication
Authorization: Bearer token
Request body
None required
Request parameters
Parameter Description
articleTypes Optional. Three-character ID prefixes indicating the desired article types. You can specify
multiple values for this parameter in a single REST call, by repeating the parameter
name for each value. For example, articleTypes=ka0&articleTypes=ka1.
categories Optional. The name of the data category group and name of the data category for
desired articles, expressed as a JSON mapping. You can specify multiple data category
group and data category pairs in this parameter. For example,
categories={"Regions":"Asia","Products":"Laptops"}.
Characters in the URL might need to be encoded. For this example,
categories=%7B%22Regions%22%3A%22Asia
%22%2C%22Products%22%3A%22Laptops%22%7D.
channel Optional. The channel where the matching articles are visible. Valid values:
• AllChannels–Visible in all channels the user has access to
• App–Visible in the internal Salesforce Knowledge application
• Pkb–Visible in the public knowledge base
• Csp–Visible in the Customer Portal
• Prm–Visible in the Partner Portal
268
Reference Search Suggested Article Title Matches
Parameter Description
If channel isn’t specified, the default value is determined by the type of user.
• Pkb for a guest user
• Csp for a Customer Portal user
• Prm for a Partner Portal user
• App for any other type of user
If channel is specified, the specified value may not be the actual value requested,
because of certain requirements.
• For guest, Customer Portal, and Partner Portal users, the specified value must match
the default value for each user type. If the values don’t match or AllChannels
is specified, then App replaces the specified value.
• For all users other than guest, Customer Portal, and Partner Portal users:
– If Pkb, Csp, Prm, or App are specified, then the specified value is used.
– If AllChannels is specified, then App replaces the specified value.
language Required. The language of the user’s query. Specifies the language that matching
articles are written in.
limit Optional. Specifies the maximum number of articles to return. If there are more
suggested articles than the limit specified, the response body’s hasMoreResults
property is true.
q Required. The user’s search query string, properly URL-encoded. Suggestions are
returned only if the user’s query string meets the minimum length requirements: one
character for queries in Chinese, Japanese, and Korean, and three characters for all
other languages. Query strings exceeding the maximum length of 250 characters return
an error.
269
Reference Search Suggested Queries
Usage
Salesforce Knowledge must be enabled in your organization. The user must have the “View Articles” permission enabled. The articles
suggested include only the articles the user can access, based on the data categories and article types the user has permissions to view.
The Suggest Article Title Matches resource is designed to return display-ready data about likely relevant articles. Articles are suggested
if their titles contain the entire query string, except stopwords, such as “a,” “for,” and “the.”
For example, a search for Backpacking for desert returns the article, “Backpacking in the desert.”
Note: Articles with titles that include stopwords from the query string, such as “Backpacking for desert survival” in this example,
appear before matching articles with titles that don’t include the stopwords.
Stopwords at the end of the query string are treated as search terms.
Note: If the user’s search query contains quotation marks or wildcards, those symbols are automatically removed from the query
string in the URI along with any other special characters.
If the number of suggestions returned exceeds the limit specified in the request, the end of the response contains a field called
hasMoreResults. Its value is true if the suggestions returned are only a subset of the suggestions available, and false otherwise.
Syntax
URI
/services/data/vXX.X/search/suggestSearchQueries?q=searchString
&language=languageOfQuery
Available since release
30.0
270
Reference Search Suggested Queries
Formats
JSON, XML
HTTP methods
GET
Authentication
Authorization: Bearer token
Request body
None required
Request parameters
Parameter Description
channel Optional. Specifies the Salesforce Knowledge channel where the article can be viewed.
Valid values:
• AllChannels–Visible in all channels the user has access to
• App–Visible in the internal Salesforce Knowledge application
• Pkb–Visible in the public knowledge base
• Csp–Visible in the Customer Portal
• Prm–Visible in the Partner Portal
If channel isn’t specified, the default value is determined by the type of user.
• Pkb for a guest user
• Csp for a Customer Portal user
• Prm for a Partner Portal user
• App for any other type of user
If channel is specified, the specified value may not be the actual value requested,
because of certain requirements.
• For guest, Customer Portal, and Partner Portal users, the specified value must match
the default value for each user type. If the values don’t match or AllChannels
is specified, then App replaces the specified value.
• For all users other than guest, Customer Portal, and Partner Portal users:
– If Pkb, Csp, Prm, or App are specified, then the specified value is used.
– If AllChannels is specified, then App replaces the specified value.
limit Optional. Specifies the maximum number of suggested searches to return. If there are
more suggested queries than the limit specified, the response body’s
hasMoreResults property is true.
q Required. The user’s search query string, properly URL-encoded. Suggestions are
returned only if the user’s query string meets the minimum length requirements: one
character for queries in Chinese, Japanese, and Korean, and three characters for all
other languages. Query strings exceeding the maximum length of 250 characters return
an error.
271
Reference Salesforce Surveys Translation Resources
Usage
Salesforce Knowledge must be enabled in your organization.
Queries are suggested if they exactly match the query string text. The text string must be a prefix within the query; it’s not considered
a match if it appears within a word. For example, the text string app would return suggested queries apple banana and banana apples
but not pineapple.
If the number of suggestions returned exceeds the limit specified in the request, the end of the response contains a field called
hasMoreResults. Its value is true if the suggestions returned are only a subset of the suggestions available, and false otherwise.
If the user’s search query contains quotation marks or wildcards, those symbols are automatically removed from the query string in the
URI.
IN THIS SECTION:
Add or Change the Translation of a Survey Field
If a survey field can be translated or is already translated into a particular language, you can add or change the translated value of
the survey field.
272
Reference Add or Change the Translation of a Survey Field
Add or Update the Translated Value of Multiple Survey Fields in One or More Languages
If one or more survey fields can be translated or are already translated, you can add or update the translated values of the survey
fields in the languages into which survey fields can be translated.
Delete the Translated Value of a Survey Field
After a survey field is translated into a particular language, you can delete the translated value of the survey field.
Delete the Translated Value of Multiple Survey Fields in One or More Languages
After survey fields are translated into one or more languages, you can delete the translated values of multiple survey fields.
Get Translated Value of a Survey Field
After a survey field is translated into a particular language, you can use this resource to the translated value of the survey field.
Get the Translated Values of Multiple Survey Fields in One or More Languages
After survey fields are translated into one or more languages, you can view the translated values of multiple survey fields in the
translated languages.
Note: This URI can only be used for the flow process type Survey.
Syntax
URI
/services/data/vXX.X/localizedvalue/record/developerName/language
Available since release
48.0
Formats
JSON
HTTP methods
POST
Request body JSON example
{
"value": "China"
}
Request parameters
Parameter Description
developerName Optional. Developer name of the flow field.
273
Reference Add or Update the Translated Value of Multiple Survey Fields
in One or More Languages
Response parameters
Parameter Description
createdBy ID of the user who translated the flow field.
{
"createdBy": "005xxx",
"createdDate": "2018-09-14T00:10:30Z",
"developerName": "Flow.Flow.MyFlow.1.Choice.Choice_1_Master.InputLabel",
"language": "zh_CN",
"value": " ",
"isOutOfDate": true
}
Note: This URI can only be used for the flow process type Survey.
Syntax
URI
/services/data/vXX.X/localizedvalue/records/upsert
Available since release
48.0
Formats
JSON
HTTP methods
POST
274
Reference Add or Update the Translated Value of Multiple Survey Fields
in One or More Languages
Request parameters
Parameter Description
developerName Required. Developer name of the flow field.
Response parameters
Parameter Description
createdBy ID of the user who translated the flow field.
275
Reference Delete the Translated Value of a Survey Field
"createdDate": "2018-09-14T00:10:30Z",
"developerName": "Flow.Flow.MyFlow.1.Choice.Choice_1_Master.InputLabel",
"language": "zh_CN",
"value": " ",
"isOutOfDate": false
}
]
Note: This URI can only be used for the flow process type Survey.
Syntax
URI
/services/data/vXX.X/localizedvalue/record/developerName/language
Available since release
48.0
Formats
JSON
HTTP methods
DELETE
Request body
None
Request parameters
Parameter Description
developerName The developer name of the flow field. For example,
Flow.Flow.MyFlow.1.Choice.Choice_1_Master.InputLabel
276
Reference Get Translated Value of a Survey Field
Note: This URI can only be used for the flow process type Survey.
Syntax
URI
/services/data/vXX.X/localizedvalue/records/delete
Available since release
48.0
Formats
JSON
HTTP methods
POST
Request body JSON example
[
{
"developerName": "Flow.Flow.MyFlow.1.Choice.Choice_1_Master.InputLabel",
"language": "en_US"
},
{
"developerName": "Flow.Flow.MyFlow.1.Choice.Choice_1_Master.InputLabel",
"language": "zh_CN"
}
]
Request parameters
Parameter Description
developerName Required. Developer name of the flow field.
language Required. Language into which the flow field was translated.
Response body
None
Note: This URI can only be used for the flow process type Survey.
Syntax
URI
/services/data/vXX.X/localizedvalue/record/developerName/language
Available since release
48.0
277
Reference Get Translated Value of a Survey Field
Formats
JSON
HTTP methods
GET
Request body
None
Request parameters
Response parameters
Parameter Description
createdBy ID of the user who translated the flow field.
278
Reference Get the Translated Values of Multiple Survey Fields in One or
More Languages
Note: This URI can only be used for the flow process type Survey.
Syntax
URI
/services/data/vXX.X/localizedvalue/records/get
Available since release
48.0
Formats
JSON
HTTP methods
POST
Request body JSON example
[
{
"developerName": "Flow.Flow.MyFlow.1.Choice.Choice_1_Master.InputLabel",
"language": "en_US"
},
{
"developerName": "Flow.Flow.MyFlow.1.Choice.Choice_1_Master.InputLabel",
"language": "zh_CN"
}
]
Request parameters
Parameter Description
developerName Required. Developer name of the flow field.
language Required. Language into which the flow field was translated.
Response parameters
Parameter Description
createdBy ID of the user who translated the flow field.
279
Reference Tabs
Parameter Description
value Translated value of the flow field.
Tabs
Returns a list of all tabs—including Lightning page tabs—available to the current user, regardless of whether the user has chosen to
hide tabs via the All Tabs (+) tab customization feature. This resource is available in REST API version 31.0 and later.
Syntax
URI
/services/data/vXX.X/tabs/
Formats
JSON, XML
HTTP methods
GET, HEAD
Authentication
Authorization: Bearer token
Request body
None
Request parameters
None
280
Reference Tabs
Example
Usage for getting tabs
/services/data/v55.0/tabs
"width" : 0
}, {
"contentType" : "image/png",
"height" : 60,
"theme" : "theme4",
"url" : "https://MyDomainName.my.salesforce.com/img/icon/t4/standard/account_60.png",
"width" : 60
}, {
"contentType" : "image/png",
"height" : 120,
"theme" : "theme4",
"url" :
"https://MyDomainName.my.salesforce.com/img/icon/t4/standard/account_120.png",
"width" : 120
} ],
281
Reference Themes
"label" : "Accounts",
"miniIconUrl" : "https://MyDomainName.my.salesforce.com/img/icon/accounts16.png",
"name" : "standard-Account",
"sobjectName" : "Account",
"url" : "https://MyDomainName.my.salesforce.com/001/o",
...]
Themes
Gets the list of icons and colors used by themes in the Salesforce application. Theme information is provided for objects in your organization
that use icons and colors in the Salesforce UI.
The If-Modified-Since header can be used with this resource, with a date format of EEE, dd MMM yyyy HH:mm:ss
z. When this header is used, if the object metadata has not changed since the provided date, a 304 Not Modified status code
is returned, with no response body.
Syntax
URI
/services/data/vXX.X/theme
Available since release
29.0
Formats
JSON, XML
HTTP methods
GET
Authentication
Authorization: Bearer token
Request body
None
Request parameters
None
Response data
An array of theme items. Each theme item contains the following fields:
name string Name of the object that the theme colors and icons are associated with.
282
Reference Themes
context string The color context, which determines whether the color is the main color
(“primary”) for the object, or not.
height number The icon’s height in pixels. If the icon content type is an SVG type, height and
width values are not used.
width number The icon’s width in pixels. If the icon content type is an SVG type, height and
width values are not used.
Example
The following is an example JSON response using a request of services/data/v29.0/theme:
{
"themeItems" : [
{
"name" : "Merchandise__c",
"icons" : [
283
Reference Composite Resources
{
"contentType" : "image/png",
"width" : 32,
"url" : "https://MyDomainName.my.salesforce.com/img/icon/computer32.png",
"height" : 32,
"theme" : "theme3"
},
{
"contentType" : "image/png",
"width" : 16,
"url" : "https://MyDomainName.my.salesforce.com/img/icon/computer16.png",
"height" : 16,
"theme" : "theme3"
} ],
"colors" : [
{
"context" : "primary",
"color" : "6666CC",
"theme" : "theme3"
},
{
"context" : "primary",
"color" : "66895F",
"theme" : "theme4"
},
...
}
...
}
Composite Resources
Use REST API composite resources to improve your application’s performance by minimizing the number of round-trips between the
client and server.
IN THIS SECTION:
Composite
Executes a series of REST API requests in a single POST request, or retrieves a list of other composite resources with a GET request.
Composite Graphs
Composite graphs provide an enhanced way to perform composite requests, which execute a series of REST API requests in a single
call.
Composite Batch
Executes up to 25 subrequests in a single request. The response bodies and HTTP statuses of the subrequests in the batch are returned
in a single response body. Each subrequest counts against rate limits.
sObject Tree
Creates one or more sObject trees with root records of the specified type. An sObject tree is a collection of nested, parent-child
records with a single root record.
284
Reference Composite
sObject Collections
Executes actions on multiple records in one request. Use sObject Collections to reduce the number of round-trips between the client
and server. The response bodies and HTTP statuses of the requests are returned in a single response body. The entire request counts
as a single call toward your API limits. This resource is available in API version 42.0 and later.
Composite
Executes a series of REST API requests in a single POST request, or retrieves a list of other composite resources with a GET request.
IN THIS SECTION:
Send Multiple Requests Using Composite
Executes a series of REST API requests in a single call. You can use the output of one request as the input to a subsequent request.
The response bodies and HTTP statuses of the requests are returned in a single response body. The entire series of requests counts
as a single call toward your API limits.
Retrieve a List of Composite Resources
Retrieves a list of URIs for other composite resources.
You can specify whether an error in a subrequest causes the whole composite request to roll back or just the subrequests that depend
on it. You can also specify headers for each subrequest.
Composite is supported for the following resources.
285
Reference Composite
• All sObject resources (/services/data/vXX.X/sobjects/), including sObject Rows by External ID on page 130
• The Query resource (/services/data/vXX.X/query/?q=soql)
• The QueryAll resource (/services/data/vXX.X/queryAll/?q=soql)
• The sObject Collections resource (/services/data/vXX.X/composite/sobjects). Available in API version 43.0 and
later.
Note: You can have up to 25 subrequests in a single call. Up to 5 of these subrequests can be sObject Collections or query
operations, including Query and QueryAll requests.
URI
/services/data/vXX.X/composite
Formats
JSON
HTTP method
POST
Authentication
Authorization: Bearer token
Parameters
None required
Request body
Composite Request Body
Response body
Composite Response Body
Examples
For examples of using the Composite resource, see Execute Dependent Requests in a Single API Call and Update an Account, Create
a Contact, and Link Them with a Junction Object.
IN THIS SECTION:
Composite Subrequest Result
The composite subrequest result describes the result for a subrequest.
286
Reference Composite
collateSubrequests Boolean Controls whether the API collates unrelated subrequests to Optional
bulkify them (true) or not (false).
When subrequests are collated, the processing speed is faster,
but the order of execution is not guaranteed (unless there is an
explicit dependency between the subrequests).
If collation is disabled, then the subrequests are executed in the
order in which they are received.
Subrequests that contain valid HTTP headers are not collated.
In API version 49.0 and later, the default value is true. In version
48.0, the default value is false.
Subrequests can be collated if they meet these conditions:
• The HTTP methods are the same.
• The API versions of the resources are the same.
• The parents of the resources are /sobjects resources.
• No more than five sObjects resources are present across a
grouping of subrequests.
287
Reference Composite
JSON example
{
"allOrNone" : true,
"collateSubrequests": true,
"compositeRequest" : [{
Composite Subrequest
},{
Composite Subrequest
},{
Composite Subrequest
}]
}
Composite Subrequest
Contains the resource, method, headers, body, and reference ID for the subrequest.
Properties
httpHeaders Map<String, Request headers and their values to include with the subrequest. Optional
String> You can include any header supported by the requested resource
except for the following three headers.
• Accept
• Authorization
• Content-Type
Subrequests inherit these three header values from the top-level
request. Don’t specify these headers in a subrequest. If you do,
the top-level request fails and returns an HTTP 400 response.
288
Reference Composite
method String The method to use with the requested resource. Possible values Required
are POST, PUT, PATCH, GET, and DELETE (case-sensitive).
For a list of valid methods, refer to the documentation for the
requested resource.
referenceId String Reference ID that maps to the subrequest’s response and can Required
be used to reference the response in later subrequests. You can
reference the referenceId in either the body or URL of a
subrequest. Use this syntax to include a reference:
@{referenceId.FieldName}.
You can use two operators with the reference ID.
The . operator references a field on a JSON object in the
response. For example, let’s say you retrieve an account record’s
data in one subrequest and assign the reference ID
Account1Data to the output. You can refer to the account’s
name in later subrequests like this:
@{Account1Data.Name}.
The [] operator indexes a JSON collection in the response. For
example, let’s say you request basic account information with
the sObject Basic Information resource in one subrequest and
assign the reference ID AccountInfo to the output. Part of
the response includes a collection of recently created accounts.
You can refer to the ID of the first account in the recent items
collection like this:
@{AccountInfo.recentItems[0].Id}.
You can use each operator recursively as long as it makes sense
in the context of the response. For example, to refer to the billing
city component of an account’s compound address field:
@{NewAccount.BillingAddress.city}.
referenceId is case-sensitive, so pay close attention to the
case of the fields you’re referring to. See Usage.
Note:
• The referenceId must start with a letter or a
number.
• The referenceId must not contain anything
besides letters, numbers, or underscores (’_’).
289
Reference Composite
JSON examples
Example 1
{
"method" : "GET",
"url" : "/services/data/v55.0/sobjects/Account/describe",
"httpHeaders" : { "If-Modified-Since" : "Tue, 31 May 2016 18:00:00 GMT" },
"referenceId" : "AccountInfo"
}
Example 2
{
"method" : "POST",
"url" : "/services/data/v55.0/sobjects/Account",
"referenceId" : "refAccount",
"body" : { "Name" : "Sample Account" }
}
Example 3
{
"method" : "GET",
"url" : "/services/data/v55.0/sobjects/Account/@{refAccount.id}",
"referenceId" : "NewAccountFields"
}
Example 4
{
"method" : "PATCH",
"url" : "/services/data/v55.0/sobjects/Account/ExternalAcctId__c/ID12345",
"referenceID" : "NewAccount",
"body" : { "Name" : "Acme" }
}
Usage
Because referenceId is case-sensitive, it’s important to note the case of the fields that you’re referring to. The same field can
use different cases in different contexts. For example, when you create a record, the ID field appears as id in the response. But
when you access a record’s data with the sObject Rows resource, the ID field appears as Id. In Example 3, the @{refAccount.id}
reference is valid because refAccount refers to the response from a POST like that shown in Example 2. If you use Id instead
(mixed case rather than all lowercase), as in @{refAccount.Id}, you get an error when sending the request because the
reference ID uses the wrong case.
290
Reference Composite
Note: You can have up to 25 subrequests in a single call. Up to 5 of these subrequests can be sObject Collections or query
operations, including Query and QueryAll requests.
Composite Results
Properties
JSON example
{
"compositeResponse" : [{
Composite Subrequest Result
},{
Composite Subrequest Result
},{
Composite Subrequest Result
}]
}
Properties
httpHeaders Map<String, String> Response headers and their values for this
subrequest. The Composite resource doesn’t
support the Content-Length header, so
subrequest responses don’t include this
291
Reference Composite
Example
{
"body": {
"id": "001R00000064wdtIAA",
"success": true,
"errors": []
},
"httpHeaders": {
"Location": "/services/data/v55.0/sobjects/Account/001R00000064wdtIAA"
},
"httpStatusCode": 201,
"referenceId": "refAccount"
}
The following example shows the response for a subrequest that had an error while trying to create a Contact:
{
"body" : [ {
"message" : "Email: invalid email address: Not a real email address",
"errorCode" : "INVALID_EMAIL_ADDRESS",
"fields" : [ "Email" ]
} ],
"httpHeaders" : { },
"httpStatusCode" : 400,
"referenceId" : "badContact"
}
292
Reference Composite
293
Reference Composite
{
"body" : [
{
"errorCode" : "PROCESSING_HALTED",
"message" : "Invalid reference specified. No value for refNewAccount[1].id
found in refNewAccount.
}
],
"httpHeaders" : { },
"httpStatusCode" : 400,
"referenceId" : "refNewContact"
},
{
"body" : {
"id" : "001R0000006hfeeIAA",
"success" : true,
"errors" : [ ]
},
"httpHeaders" : {
"Location" : "/services/data/v51.0/sobjects/Account/001R0000006hfeeIAA"
},
"httpStatusCode" : 201,
"referenceId" : "refNewAccount2"
}
]
}
The two accounts are created (even though the first account uses illegal characters in its reference ID). But the attempt to create a contact
(using the reference ID containing illegal characters) fails.
Responses for Version 51.0 and Earlier in Previous Releases
The response shown above is that for the Summer ’21 release and later. In releases before Summer ’21, problematic reference IDs in the
response were truncated if the IDs contained ‘(’ or ‘[’. So the response would have been:
{
"compositeResponse" : [
{
"body" : {
"id" : "001R0000006hfeZIAQ",
"success" : true,
"errors" : [ ]
},
"httpHeaders" : {
"Location" : "/services/data/v51.0/sobjects/Account/001R0000006hfeZIAQ"
},
"httpStatusCode" : 201,
"referenceId" : "refNewAccount"
},
...
}
Starting with the Summer ’21 release, problematic reference IDs are no longer truncated. This change makes it easier to match the parts
of the response to the request.
Version 52.0 and Later
294
Reference Composite
In API version 52.0 and later, any illegal characters in reference IDs cause the whole request to fail. The response to the example above
is:
HTTP/1.1 400 Bad Request
[
{
"message" : "Provided referenceId ('refNewAccount[1]') must start with a letter or
a number, and it can contain only letters, numbers and underscores ('_').",
"errorCode" : "JSON_PARSER_ERROR"
}
]
Summary
Note: This behavior only applies to requests where the parent request uses an sObject Rows resource (for example,
/services/data/vXX.X/sobjects/Contact/id).
For example, consider this request. It locates an existing Contact and then uses @{refContact.FirstName} and
@{refContact.LastName} to create a record.
"compositeRequest" : [
295
Reference Composite
{
"method" : "GET",
"url" :
"/services/data/v51.0/sobjects/Contact/003RO0000016kOuYAI?fields=FirstName,LastName",
"referenceId" : "refContact"
},
{
"method" : "POST",
"url" : "/services/data/v51.0/sobjects/Contact",
"referenceId" : "newContact",
"body" : {
"FirstName" : "@{refContact.FirstName}",
"LastName" : "@{refContact.LastName}",
"AccountId" : "001RO000001nGCdYAM"
}
}
]
}
296
Reference Composite
]
}
That example assumes that allOrNone is set to false. If it’s true, the whole composite request is rolled back. See allOrNone Parameters
in Composite and Collections Requests.
Responses for Version 52.0 and Later
In API version 52.0 and later, the request succeeds.
{
"compositeResponse" : [
{
"body" : {
"attributes" : {
"type" : "Contact",
"url" : "/services/data/v51.0/sobjects/Contact/003RO0000016kOuYAI"
},
"FirstName" : null,
"LastName" : "Wong",
"Id" : "003RO0000016kOuYAI"
},
"httpHeaders" : { },
"httpStatusCode" : 200,
"referenceId" : "refContact"
},
{
"body" : {
"id" : "003RO0000016kRAYAY",
"success" : true,
"errors" : [ ]
},
"httpHeaders" : {
"Location" : "/services/data/v51.0/sobjects/Contact/003RO0000016kRAYAY"
},
"httpStatusCode" : 201,
"referenceId" : "newContact"
}
]
}
Behavior for References to Fields That Aren’t Specified in the Parent Request
In dependent subrequests, you must always only use fields that are explicitly selected in parent requests. If this practice isn’t followed,
the API’s behavior depends on the API version. (The pertinent API version is that used to make the composite request. That version isn’t
necessarily the same as the API version specified in the url parameters in the subrequests.)
For example, consider the following request. It attempts to:
1. Locate a specific Contact.
2. Use @{refContact.records[0].AccountId} to get that Contact’s Account ID.
However, the parent request doesn’t explicitly query for the AccountId.
POST https://MyDomainName.my.salesforce.com/services/data/vXX.X/composite -H "Authorization:
Bearer token"
297
Reference Composite
{
"compositeRequest" : [
{
"method" : "GET",
"url" : "/services/data/v51.0/query?q=select Id, Account.Name from Contact where
Id='003RO0000016kOuYAI'",
"referenceId" : "refContact"
},
{
"method" : "GET",
"url" : "/services/data/v50.0/query?q=select Name from Account where Id =
'@{refContact.records[0].AccountId}'",
"referenceId" : "refAccount"
}
]
}
Note: The fact that a request like this sometimes succeeds should never be relied upon. If you plan to use a field from a parent
request’s result, you should always explicitly select that field in the parent request.
Responses for Version 52.0 and Later
In API version 52.0 and later, the request always fails:
{
"compositeResponse" : [
{
"body" : {
"totalSize" : 1,
"done" : true,
"records" : [
{
"attributes" : {
"type" : "Contact",
"url" : "/services/data/v51.0/sobjects/Contact/003RO0000016kOuYAI"
},
"Id" : "003RO0000016kOuYAI",
"Account" : {
"attributes" : {
"type" : "Account",
"url" : "/services/data/v51.0/sobjects/Account/001RO000001nGbUYAU"
},
"Name" : "City Medical Center"
}
}
]
},
"httpHeaders" : { },
"httpStatusCode" : 200,
"referenceId" : "refContact"
298
Reference Composite
},
{
"body" : [
{
"errorCode" : "PROCESSING_HALTED",
"message" : "Invalid reference specified. No value for
refContact.records[0].AccountId found in refContact.
Provided referenceId ('refContact.records[0].AccountId') must start with a
letter or a number, and it can contain
only letters, numbers and underscores ('_')."
}
],
"httpHeaders" : { },
"httpStatusCode" : 400,
"referenceId" : "refAccount"
}
]
}
To make such a request work, you must explicitly obtain the AccountId in the parent request:
{
"compositeRequest" : [
{
"method" : "GET",
"url" : "/services/data/v51.0/query?q=select Id, Account.Name, AccountId from
Contact where Id='003RO0000016kOuYAI'",
"referenceId" : "refContact"
},
{
"method" : "GET",
"url" : "/services/data/v50.0/query?q=select Name from Account where Id =
'@{refContact.records[0].AccountId}'",
"referenceId" : "refAccount"
}
]
}
299
Reference Composite
{
"allOrNone" : outerFlag,
"collateSubrequests" : false,
"compositeRequest" : [
{
"method" : "POST",
"url" : "/services/data/v55.0/composite/sobjects",
"body" : {
"allOrNone" : innerFlag,
"records" : [
{
"attributes" : { "type" : "Account" },
"Name" : "Northern Trail Outfitters",
"BillingCity" : "San Francisco"
},
{
"attributes" : { "type" : "Account" },
"Name" : "Easy Spaces",
"BillingCity" : "Calgary"
}
]
},
"referenceId" : "newAccounts"
},
{
"method" : "POST",
"url" : "/services/data/v55.0/sObject/Contact",
"body" : {
"FirstName" : "John",
"LastName" : "Smith"
},
"referenceId" : "newContact"
}
]
}
The outerFlag and innerFlag parameters are either true or false, which leads to four possible cases.
Case 1: outerFlag = false, innerFlag = false
In this case, neither request has allOrNone set to true, so neither request is rolled back. One account is created and one fails.
300
Reference Composite
301
Reference Composite
302
Reference Composite
}
]
}
In this case, the inner sObject Collections request has allOrNone set to false, so it is not immediately rolled back. However, the
outer Composite request has allOrNone set to true so it is rolled back, which also rolls back the inner sObject Collections request.
Note: Even though the response body for sObject Collections request shows "success" : true for the creation of the
first Account, the fact that the Composite request is rolled back means that the Account creation is rolled back. The final result is
that the new Account is not created.
303
Reference Composite Graphs
Composite Graphs
Composite graphs provide an enhanced way to perform composite requests, which execute a series of REST API requests in a single call.
• Regular composite requests allow you to execute a series of REST API requests in a single call. And you can use the output of one
request as the input to a subsequent request.
• Composite graphs extend this by allowing you to assemble a more complicated and complete series of related objects and records.
• Composite graphs also enable you to ensure that the steps in a given set of operations are either all completed or all not completed.
This avoids requiring you to check for a mix of successful and unsuccessful results.
• Regular composite requests have a limit of 25 subrequests. Composite graphs increase this limit to 500. This gives a single API call
much greater power.
In the context of composite graph operations, the nodes are composite subrequests. For example, a node can be a composite subrequest
like this:
{
"url" : "/services/data/v55.0/sobjects/Account/",
"body" : {
"name" : "Cloudy Consulting"
},
"method" : "POST",
"referenceId" : "reference_id_account_1"
}
304
Reference Composite Graphs
A composite graph can be directed meaning that some nodes use information from other nodes. For example, a node that creates a
Contact can use the ID of an Account node to link the Contact with the Account.
For example:
{
"graphs": [{
"graphId": "graph1",
"compositeRequest": [{
"body": {
"name": "Cloudy Consulting"
},
"method": "POST",
"referenceId": "reference_id_account_1",
"url": "/services/data/v55.0/sobjects/Account/"
},
{
"body": {
"FirstName": "Nellie",
"LastName": "Cashman",
"AccountId": "@{reference_id_account_1.id}"
},
"method": "POST",
"referenceId": "reference_id_contact_1",
"url": "/services/data/v55.0/sobjects/Contact/"
}
]
}]
}
{
"graphId" : "graphId",
305
Reference Composite Graphs
"compositeRequest" : [
compositeSubrequest,
compositeSubrequest,
...
]
}
The graphId parameters enable you to identify the graphs when viewing the response. They need not be numeric, but they must
follow these restrictions:
• They must be unique within each composite graph operation.
• They must begin with an alphanumeric character.
• They must be less that 40 characters long.
• They can’t contain a period (’.’).
A single composite graph request can use one or more composite graphs. See Using a Composite Graph.
4. Create a Campaign.
5. Create an Opportunity linked to Account 2 and the Campaign.
6. Create a Lead.
7. Create a CampaignMember linked to the Lead and the Campaign.
306
Reference Composite Graphs
307
Reference Composite Graphs
{
"url" : "/services/data/v55.0/sobjects/Campaign/",
"body" : {
"name" : "Spring Campaign"
},
"method" : "POST",
"referenceId" : "reference_id_campaign"
},
{
"url" : "/services/data/v55.0/sobjects/Opportunity/",
"body" : {
"name" : "Opportunity",
"stageName" : "Value Proposition",
"closeDate" : "2025-12-31",
"CampaignId" : "@{reference_id_campaign.id}",
"AccountId" : "@{reference_id_account_2.id}"
},
"method" : "POST",
"referenceId" : "reference_id_opportunity"
},
{
"url" : "/services/data/v55.0/sobjects/Lead/",
"body" : {
"FirstName" : "Belinda",
"LastName" : "Mulroney",
"Company" : "Klondike Quarry",
"Email" : "[email protected]"
},
"method" : "POST",
"referenceId" : "reference_id_lead"
},
{
"url" : "/services/data/v55.0/sobjects/CampaignMember/",
"body" : {
"CampaignId" : "@{reference_id_campaign.id}",
"LeadId" : "@{reference_id_lead.id}"
},
"method" : "POST",
"referenceId" : "reference_id_campaignmember"
}
]
}
Example: GET Details About a Resource and Then Use Them in a Composite Graph
Request
This example shows how you can use GET on a resource, and then use properties of that resource in subsequent requests.
{
"graphs" : [
{
"graphId" : "graph1",
"compositeRequest" : [
308
Reference Composite Graphs
{
"method" : "GET",
"url" : "/services/data/v55.0/sobjects/Account/001R0000003fSRrIAM",
"referenceId" : "refAccount"
},
{
"body" : {
"name" : "Amazing opportunity for @{refAccount.Name}",
"StageName" : "Stage 1",
"CloseDate" : "2025-06-01T23:28:56.782Z",
"AccountId" : "@{refAccount.Id}"
},
"method" : "POST",
"url" : "/services/data/v55.0/sobjects/Opportunity",
"referenceId" : "newOpportunity"
}
]
}
]
}
Graph Depth
• Nodes with no parents are considered to be at depth 1.
• The depth of another node is the maximum number of edges in the graph from depth 1 to that node. An edge between two nodes
occurs when the one node uses a property (such as @{reference_account.id} ) from another node.
309
Reference Composite Graphs
Best Practices
As a general practice, keep your graphs as small as possible. For example, it’s more efficient to have 50 graphs with 10 nodes rather than
1 graph with 500 nodes. Keeping graphs small has two advantages:
• If one item in a graph fails, only the items in that graph are rolled back. This makes it easier to handle errors.
• The server can process multiple, smaller graphs faster and more efficiently.
IN THIS SECTION:
Composite Subrequest
The composite subrequest describes a subrequest to execute with the Composite Graph resource.
Composite Graph Reference
The composite graph resource lets you submit composite graph operations.
Composite Graph Limits
Composite graphs have these limits.
Composite Subrequest
The composite subrequest describes a subrequest to execute with the Composite Graph resource.
Properties
310
Reference Composite Graphs
• If the url is
/services/data/vXX.X/sobject/sObject/customFieldName/externalId
then DELETE, GET, PATCH, and POST are supported. You can use PATCH to
upsert via an external ID). See Insert or Update (Upsert) a Record Using an
External ID.
Note:
• The referenceId must start with a letter or a number.
311
Reference Composite Graphs
Examples
Example 1
{
"body" : {
"Name" : "Sample Account"
},
"method" : "POST",
"referenceId" : "refAccount",
"url" : "/services/data/v55.0/sobjects/Account"
}
Example 2
{
"method" : "GET",
"referenceId" : "NewAccountFields",
"url" : "/services/data/v55.0/sobjects/Account/@{refAccount.id}"
}
Usage
Because referenceId is case-sensitive, it’s important to note the case of the fields that you’re referring to. The same field can use
different cases in different contexts. For example, when you create a record, the ID field appears as id in the response. But when you
access a record’s data with the sObject Rows resource, the ID field appears as Id. In the Example 2, the @{refAccount.id}
reference is valid because refAccount refers to the response from a POST like that shown in Example 1. If you use Id instead (mixed
case rather than all lowercase), as in @{refAccount.Id}, you get an error when sending the request because the reference ID uses
the wrong case.
312
Reference Composite Graphs
Results
Results for subrequests are the same as that for other Composite requests. See Composite Subrequest Result on page 291.
Syntax
URI
/services/data/vXX.X/composite/graph
Available since release
This resource is available in API version 50.0 and later.
Formats
JSON
HTTP methods
POST
Authentication
Authorization: Bearer token
Request parameters
None
Request Body
{
"graphId" : "graphId",
"compositeRequest" : [
compositeSubrequest,
compositeSubrequest,
...
]
}
313
Reference Composite Graphs
{
"url" : "/services/data/v55.0/sobjects/Contact/",
"body" : {
"FirstName" : "Nellie",
"LastName" : "Cashman",
"AccountId" : "@{reference_id_account_1.id}"
},
"method" : "POST",
"referenceId" : "reference_id_contact_1"
},
{
"url" : "/services/data/v55.0/sobjects/Opportunity/",
"body" : {
"CloseDate" : "2024-05-22",
"StageName" : "Prospecting",
"Name" : "Opportunity 1",
"AccountId" : "@{reference_id_account_1.id}"
},
"method" : "POST",
"referenceId" : "reference_id_opportunity_1"
}
]
},
{
"graphId" : "2",
"compositeRequest" : [
{
"url" : "/services/data/v55.0/sobjects/Account/",
"body" : {
"name" : "Easy Spaces"
},
"method" : "POST",
"referenceId" : "reference_id_account_2"
},
{
"url" : "/services/data/v55.0/sobjects/Contact/",
"body" : {
"FirstName" : "Charlie",
"LastName" : "Dawson",
"AccountId" : "@{reference_id_account_2.id}"
},
"method" : "POST",
"referenceId" : "reference_id_contact_2"
}
]
}
]
}
Response Body
{
"graphs" : [
314
Reference Composite Graphs
{
"graphId" : "graphId",
"graphResponse" : {
"compositeResponse" : [
compositeSubrequestResult,
compositeSubrequestResult,
compositeSubrequestResult,
...
]
},
"isSuccessful" : flag
},
...
]
}
compositeResponse Array of composite subrequest results on Results for each node in the graph.
page 291.
Example
{
"graphs" : [
{
"graphId" : "1",
"graphResponse" : {
"compositeResponse" : [
{
"body" : {
"id" : "001R00000064wc7IAA",
"success" : true,
"errors" : [ ]
},
"httpHeaders" : {
"Location" : "/services/data/v55.0/sobjects/Account/001R00000064wc7IAA"
},
"httpStatusCode" : 201,
"referenceId" : "reference_id_account_1"
},
{
"body" : {
"id" : "003R000000DDMlTIAX",
315
Reference Composite Graphs
"success" : true,
"errors" : [ ]
},
"httpHeaders" : {
"Location" : "/services/data/v55.0/sobjects/Contact/003R000000DDMlTIAX"
},
"httpStatusCode" : 201,
"referenceId" : "reference_id_contact_1"
},
{
"body" : {
"id" : "006R0000003FPYxIAO",
"success" : true,
"errors" : [ ]
},
"httpHeaders" : {
"Location" :
"/services/data/v55.0/sobjects/Opportunity/006R0000003FPYxIAO"
},
"httpStatusCode" : 201,
"referenceId" : "reference_id_opportunity_1"
}
]
},
"isSuccessful" : true
},
{
"graphId" : "2",
"graphResponse" : {
"compositeResponse" : [
{
"body" : {
"id" : "001R00000064wc8IAA",
"success" : true,
"errors" : [ ]
},
"httpHeaders" : {
"Location" : "/services/data/v55.0/sobjects/Account/001R00000064wc8IAA"
},
"httpStatusCode" : 201,
"referenceId" : "reference_id_account_2"
},
{
"body" : {
"id" : "003R000000DDMlUIAX",
"success" : true,
"errors" : [ ]
},
"httpHeaders" : {
"Location" : "/services/data/v55.0/sobjects/Contact/003R000000DDMlUIAX"
},
316
Reference Composite Graphs
"httpStatusCode" : 201,
"referenceId" : "reference_id_contact_2"
}
]
},
"isSuccessful" : true
}
]
}
Note: The response bodies and HTTP statuses of the requests are returned in a single response body. The entire request counts
as a single call toward your API limits.
Item Limit
Maximum number of graphs in one payload. 75
• /services/data/vXX.X/sobjects/account and
/services/data/vXX.X/sobjects/contact are
considered different.
Limits on Nodes
Item Limit
Maximum number of nodes supported in one payload. 500
(For example, there can be one graph with 500 nodes, or 50 graphs
with 10 nodes each.)
317
Reference Composite Batch
Composite Batch
Executes up to 25 subrequests in a single request. The response bodies and HTTP statuses of the subrequests in the batch are returned
in a single response body. Each subrequest counts against rate limits.
The requests in a batch are called subrequests. All subrequests are executed in the context of the same user. Subrequests are independent,
and you can’t pass information between them. Subrequests execute serially in their order in the request body. When a subrequest
executes successfully, it commits its data. Commits are reflected in the output of later subrequests. If a subrequest fails, commits made
by previous subrequests are not rolled back. If a batch request doesn’t complete within 10 minutes, the batch times out and the remaining
subrequests aren’t executed.
Batching for the following resources and resource groups is available in API version 34.0 and later.
• Limits—/services/data/vXX.X/limits
• sObject resources—/services/data/vXX.X/sobjects/
• Query—/services/data/vXX.X/query/?q=soql
• QueryAll—/services/data/vXX.X/queryAll/?q=soql
• Search—/services/data/vXX.X/search/?q=sosl
• Connect resources—/services/data/vXX.X/connect/
• Chatter resources—/services/data/vXX.X/chatter/
Batching for the following resources and resource groups is available in API version 35.0 and later.
• Actions—vXX.X/actions
The API version of the resource accessed in each subrequest must be no earlier than 34.0 and no later than the Batch version in the
top-level request. For example, if you post a Batch request to /services/data/v35.0/composite/batch, you can include
subrequests that access version 34.0 or 35.0 resources. But if you post a Batch request to
/services/data/v34.0/composite/batch, you can only include subrequests that access version 34.0 resources.
URI
/services/data/vXX.X/composite/batch
Formats
JSON, XML
HTTP method
POST
Authentication
Authorization: Bearer token
Parameters
None required
Request body
Batch Request Body on page 319
Response body
Batch Response Body on page 320
Examples
For an example of using the Composite Batch resource, see Update a Record and Get Its Field Values in a Single Request on page
93.
318
Reference Composite Batch
haltOnError Boolean Controls whether a batch continues to process after a subrequest Optional
fails. The default is false.
If the value is false and a subrequest in the batch doesn’t
complete, Salesforce attempts to execute the subsequent
subrequests in the batch.
If the value is true and a subrequest in the batch doesn’t
complete due to an HTTP response in the 400 or 500 range,
Salesforce halts execution. It returns an HTTP 412 status code
and a BATCH_PROCESSING_HALTED error message for
each subsequent subrequest. The top-level request to
/composite/batch returns HTTP 200, and the
hasErrors property in the response is set to true.
This setting is only applied during subrequest processing, and
not during initial request deserialization. If an error is detected
during deserialization, such as a syntax error in the Subrequest
request data, Salesforce returns an HTTP 400 Bad Request
error without processing any subrequests, regardless of the value
of haltOnError. An example where this could occur is if a
subrequest has an invalid method or url field.
319
Reference Composite Batch
Subrequest
Contains the resource, method, and accompanying information for the subrequest.
Properties
binaryPartNameAlias String The name parameter in the Content-Disposition header of the Optional
binary body part. Different resources expect different values. See
Insert or Update Blob Data.
If this value exists, a binaryPartName value must also exist.
method String The method to use with the requested resource. For a list of valid Required
methods, refer to the documentation for the requested resource.
320
Reference Composite Batch
Batch Results
Properties
JSON example
{
"hasErrors" : false,
"results" : [{
"statusCode" : 204,
"result" : null
},{
"statusCode" : 200,
"result": {
"attributes" : {
"type" : "Account",
"url" : "/services/data/v55.0/sobjects/Account/001D000000K0fXOIAZ"
},
"Name" : "NewName",
"BillingPostalCode" : "94105",
"Id" : "001D000000K0fXOIAZ"
}
}]
}
Subrequest Result
Properties
Important: If the
result is an error,
the type is a
collection
containing the
error message and
error code.
statusCode Integer An HTTP status code indicating the status of this subrequest.
321
Reference sObject Tree
JSON example
{
"attributes" : {
"type" : "Account",
"url" : "/services/data/v55.0/sobjects/Account/001D000000K0fXOIAZ"
},
"Name" : "NewName",
"BillingPostalCode" : "94015",
"Id" : "001D000000K0fXOIAZ"
}
sObject Tree
Creates one or more sObject trees with root records of the specified type. An sObject tree is a collection of nested, parent-child records
with a single root record.
In the request data, you supply the record hierarchies, required and optional field values, each record’s type, and a reference ID for each
record. Upon success, the response contains the IDs of the created records. If an error occurs while creating a record, the entire request
fails. In this case, the response contains only the reference ID of the record that caused the error and the error information. The response
bodies and HTTP statuses of the requests are returned in a single response body. The entire request counts as a single call toward your
API limits.
The request can contain the following:
• Up to a total of 200 records across all trees
• Up to five records of different types
• sObject trees up to five levels deep
Because an sObject tree can contain a single record, you can use this resource to create up to 200 unrelated records of the same type.
When the request is processed and records are created, triggers, processes, and workflow rules fire separately for each of the following
groups of records.
• Root records across all sObject trees in the request
• All second-level records of the same type—for example, second-level Contacts across all sObject trees in the request
• All third-level records of the same type
• All fourth-level records of the same type
• All fifth-level records of the same type
URI
/services/data/vXX.X/composite/tree/sObjectName
Formats
JSON, XML
HTTP method
POST
Authentication
Authorization: Bearer token
Parameters
None required
322
Reference sObject Tree
Request body
sObject Tree Request Body on page 323
Response body
sObject Tree Response Body on page 326
Examples
• For an example of creating unrelated records of the same type, see Create Multiple Records on page 97.
• For an example of creating nested records, see Create Nested Records on page 95.
Important: Where possible, we changed noninclusive terms to align with our company value of Equality. We maintained certain
terms to avoid any effect on customer implementations.
323
Reference sObject Tree
"email" : "[email protected]"
}]
}
},{
"attributes" : {"type" : "Account", "referenceId" : "ref4"},
"name" : "SampleAccount2",
"phone" : "1234567890",
"website" : "www.salesforce2.com",
"numberOfEmployees" : "100",
"industry" : "Banking"
}]
}
XML example
<SObjectTreeRequest>
<records type="Account" referenceId="ref1">
<name>SampleAccount</name>
<phone>1234567890</phone>
<website>www.salesforce.com</website>
<numberOfEmployees>100</numberOfEmployees>
<industry>Banking</industry>
<Contacts>
<records type="Contact" referenceId="ref2">
<lastname>Smith</lastname>
<title>President</title>
<email>[email protected]</email>
</records>
<records type="Contact" referenceId="ref3">
<lastname>Evans</lastname>
<title>Vice President</title>
<email>[email protected]</email>
</records>
</Contacts>
</records>
<records type="Account" referenceId="ref4">
<name>SampleAccount2</name>
<phone>1234567890</phone>
<website>www.salesforce2.com</website>
<numberOfEmployees>100</numberOfEmployees>
<industry>Banking</industry>
</records>
</SObjectTreeRequest>
324
Reference sObject Tree
Properties
Required object fields Depends on Required fields and field values for this record. Required
field
Optional object fields Depends on Optional fields and field values for this record. Optional
field
Child relationships sObject Tree This record’s child relationships, such as an account’s child Optional
Collection contacts. Child relationships are either master-detail or lookup
Input relationships. To view an object’s valid child relationships, use
the sObject Describe resource or Schema Builder. The value of
this property is an sObject Tree Collection Input that contains
child sObject trees.
325
Reference sObject Tree
XML example
<records type="Account" referenceId="ref1">
<name>SampleAccount</name>
<phone>1234567890</phone>
<website>www.salesforce.com</website>
<numberOfEmployees>100</numberOfEmployees>
<industry>Banking</industry>
<Contacts>
<records type="Contact" referenceId="ref2">
<lastname>Smith</lastname>
<title>President</title>
<email>[email protected]</email>
</records>
<records type="Contact" referenceId="ref3">
<lastname>Evans</lastname>
<title>Vice President</title>
<email>[email protected]</email>
</records>
</Contacts>
</records>
results Collection Upon success, results contains the reference ID of each requested
record and its new record ID. Upon failure, it contains only the reference
ID of the record that caused the error, error status code, error message,
and fields related to the error. In the case of duplicate reference IDs,
results contains one item for each instance of the duplicate ID.
326
Reference sObject Tree
"id" : "003D000000QV9n3IAD"
}]
}
327
Reference sObject Collections
sObject Collections
Executes actions on multiple records in one request. Use sObject Collections to reduce the number of round-trips between the client
and server. The response bodies and HTTP statuses of the requests are returned in a single response body. The entire request counts as
a single call toward your API limits. This resource is available in API version 42.0 and later.
URI
The URI to use depends on the operation.
Create
POST /services/data/vXX.X/composite/sobjects
Retrieve
GET
/services/data/vXX.X/composite/sobjects/SobjectName?ids=recordId,recordId&fields=fieldname,fieldname
Update
PATCH /services/data/vXX.X/composite/sobjects
Upsert
PATCH /services/data/vXX.X/composite/sobjects/SobjectName/ExternalIdFieldName
Delete
DELETE /services/data/vXX.X/composite/sobjects?ids=recordId,recordId
Formats
JSON, XML
HTTP method
GET, DELETE, PATCH, POST
Authentication
Authorization: Bearer token
The parameters, request body, and response body you use depend on the operation. For details, see the specific operation.
IN THIS SECTION:
Create Multiple Records with Fewer Round-Trips
Use a POST request with sObject Collections to add up to 200 records, returning a list of SaveResult objects. You can choose whether
to roll back the entire request when an error occurs.
Retrieve Multiple Records with Fewer Round-Trips
Use a GET or POST request with sObject Collections to retrieve one or more records of the same object type. A list of sObjects that
represents the individual records of the specified type is returned. The number of sObjects returned matches the number of IDs
passed in the request.
Update Multiple Records with Fewer Round-Trips
Use a PATCH request with sObject Collections to update up to 200 records, returning a list of SaveResult objects. You can choose
whether to roll back the entire request when an error occurs.
Upsert Multiple Records with Fewer Round-Trips
Use a PATCH request with sObject Collections to either create or update (upsert) up to 200 records based on an external ID field.
This method returns a list of UpsertResult objects. You can choose whether to roll back the entire request when an error occurs. This
request is available in API version 46 and later.
328
Reference sObject Collections
Request Syntax
POST /services/data/vXX.X/composite/sobjects
Parameters
Parameter Description
allOrNone Optional. Indicates whether to roll back the entire request when the creation of any object
fails (true) or to continue with the independent creation of other objects in the request.
The default is false.
records Required. A list of sObjects. In a POST request using sObject Collections, set the type
attribute for each object, but don’t set the id field for any object.
Usage Guidelines
• The list can contain up to 200 objects.
• The list can contain objects of different types, including custom objects.
• Each object must contain an attributes map. The map must contain a value for type.
Note: Using sObject Collections to insert blob data requires more values in the attributes map. For more information, see
Using sObject Collections to Insert a Collection of Blob Records.
• Objects are created in the order they’re listed. The SaveResult objects are returned in the order in which the create requests were
specified.
• If the request body includes objects of more than one type, they are processed as chunks. For example, if the incoming objects are
{account1, account2, contact1, account3}, the request is processed in three chunks: {{account1,
account2}, {contact1}, {account3}}. A single request can process up to 10 chunks.
• You can’t create records for multiple object types in one call when one of the types is related to a feature in the Salesforce Setup
area.
329
Reference sObject Collections
• If the request is well formed, the API returns a 200 OK HTTP Status. If an item was processed successfully, the success flag
shows for that item. Error information is returned in the errors array.
[
{
"id" : "001RM000003oLnnYAE",
"success" : true,
"errors" : [ ]
},
{
"id" : "003RM0000068xV6YAI",
"success" : true,
"errors" : [ ]
}
]
This example shows a response when some items caused errors and allOrNone is false.
HTTP/1.1 200 OK
[
{
"success" : false,
"errors" : [
{
"statusCode" : "DUPLICATES_DETECTED",
"message" : "Use one of these records?",
"fields" : [ ]
}
]
},
{
330
Reference sObject Collections
"id" : "003RM0000068xVCYAY",
"success" : true,
"errors" : [ ]
}
]
This example shows a response when some items caused errors and allOrNone is true.
HTTP/1.1 200 OK
[
{
"success" : false,
"errors" : [
{
"statusCode" : "DUPLICATES_DETECTED",
"message" : "Use one of these records?",
"fields" : [ ]
}
]
},
{
"success" : false,
"errors" : [
{
"statusCode" : "ALL_OR_NONE_OPERATION_ROLLED_BACK",
"message" : "Record rolled back because not all records were valid and the
request was using AllOrNone header",
"fields" : [ ]
}
]
}
]
Request Syntax
If you’re using a GET request, use the following syntax, where sObjectName is the object type of the records from which you’re
retrieving data.
GET
/services/data/vXX.X/composite/sobjects/sObjectName?ids=recordId,recordId&fields=fieldname,fieldname
331
Reference sObject Collections
If you’re using a POST request, use the following syntax, where sObjectName (required) is the object type of the records from which
you’re retrieving data.
POST /composite/sobjects/sObjectName
{
"ids" : ["recordId", "recordId", "recordId"],
"fields" : ["fieldname", "fieldname"]
}
Parameters
Parameter Description
ids Required. A list of one or more IDs of the objects to return. All IDs must belong to the
same object type.
fields Required. A list of fields to include in the response. The field names you specify must be
valid, and you must have read-level permissions to each field.
Usage Guidelines
• If you specify an invalid field name or a field name that you don’t have permission to read, HTTP 400 Bad Request is returned.
• If you don’t have access to an object, or if a passed ID is invalid, the array returns null for that object.
Request Example
If you’re using a GET request, use the syntax shown in the following example.
GET
/composite/sobjects/Account?ids=001xx000003DGb1AAG,001xx000003DGb0AAG,001xx000003DGb9AAG&fields=id,name
If you’re using a POST request, use a request body as shown in the following example.
POST /composite/sobjects/Account
{
"ids" : ["001xx000003DGb1AAG", "001xx000003DGb0AAG", "001xx000003DGb9AAG"],
"fields" : ["id", "name"]
}
332
Reference sObject Collections
"type" : "Account",
"url" : "/services/data/v55.0/sobjects/Account/001xx000003DGb0AAG"
},
"Id" : "001xx000003DGb0AAG",
"Name" : "Global Media"
},
null
]
Request Syntax
PATCH /services/data/vXX.X/composite/sobjects
Parameters
Parameter Description
allOrNone Optional. Indicates whether to roll back the entire request when the update of any object
fails (true) or to continue with the independent update of other objects in the request.
The default is false.
records Required. A list of sObjects. In a POST request using sObject Collections, set the type
attribute for each object, but don’t set the id field for any object.
Usage Guidelines
• The list can contain up to 200 objects.
• The list can contain objects of different types, including custom objects.
• Each object must contain an attributes map. The map must contain a value for type.
Note: Using sObject Collections to update blob data requires more values in the attributes map. For more information, see
Using sObject Collections to Insert a Collection of Blob Records.
333
Reference sObject Collections
• You can’t update records for multiple object types in one call when one of those types is related to a feature in the Salesforce Setup
area.
[
{
"id" : "001RM000003oCprYAE",
"success" : true,
"errors" : [ ]
},
{
"id" : "003RM0000068og4YAA",
"success" : true,
"errors" : [ ]
}
]
This example shows a response when some items caused errors and allOrNone is false.
HTTP/1.1 200 OK
[
{
"id" : "001RM000003oCprYAE",
"success" : true,
"errors" : [ ]
334
Reference sObject Collections
},
{
"success" : false,
"errors" : [
{
"statusCode" : "MALFORMED_ID",
"message" : "Contact ID: id value of incorrect type: 001xx000003DGb2999",
"fields" : [
"Id"
]
}
]
}
]
This example shows a response when some items caused errors and allOrNone is true.
HTTP/1.1 200 OK
[
{
"id" : "001RM000003oCprYAE",
"success" : false,
"errors" : [
{
"statusCode" : "ALL_OR_NONE_OPERATION_ROLLED_BACK",
"message" : "Record rolled back because not all records were valid and the
request was using AllOrNone header",
"fields" : [ ]
}
]
},
{
"success" : false,
"errors" : [
{
"statusCode" : "MALFORMED_ID",
"message" : "Contact ID: id value of incorrect type: 001xx000003DGb2999",
"fields" : [
"Id"
]
}
]
}
]
335
Reference sObject Collections
Request Syntax
PATCH /services/data/vXX.X/composite/sobjects/SobjectName/ExternalIdFieldName
Parameters
Parameter Description
allOrNone Optional. Indicates whether to roll back the entire request when the creation of any object
fails (true) or to continue with the independent creation of other objects in the request.
The default is false.
records Required. A list of sObjects. In a PATCH request using sObject Collections, set the type
attribute for each object. Don’t set the id field for any object. Instead, use the external
ID field specified in the request URI.
Usage Guidelines
• The list can contain up to 200 objects.
• The list can contain objects only of the type indicated in the request URI.
• Each object in the request body must contain an attributes map. The map must contain a value for type.
Note: Using sObject Collections to insert blob data requires more values in the attributes map. For more information, see
Using sObject Collections to Insert a Collection of Blob Records.
• Objects are created or updated in the order they’re listed in the request body. The UpsertResult objects are returned in the same
order.
• Only external ids are supported. Don’t use record ids.
336
Reference sObject Collections
This example shows a response when some items caused errors and allOrNone is false.
HTTP/1.1 200 OK
[
{
"id" : "001xx0000004GxDAAU",
"success" : true,
"errors" : [ ]
},
{
"success" : false,
"errors" : [
{
"statusCode" : "MALFORMED_ID",
"message" : "Contact ID: id value of incorrect type: 001xx0000004GxEAAU",
"fields" : [
"Id"
]
}
]
}
]
This example shows a response when some items caused errors and allOrNone is true.
HTTP/1.1 200 OK
[
{
337
Reference sObject Collections
"id" : "001xx0000004GxDAAU",
"success" : false,
"errors" : [
{
"statusCode" : "ALL_OR_NONE_OPERATION_ROLLED_BACK",
"message" : "Record rolled back because not all records were valid and the
request was using AllOrNone header",
"fields" : [ ]
}
]
},
{
"success" : false,
"errors" : [
{
"statusCode" : "MALFORMED_ID",
"message" : "Contact ID: id value of incorrect type: 001xx0000004GxEAAU",
"fields" : [
"Id"
]
}
]
}
]
SEE ALSO:
sObject Rows by External ID
Request Syntax
DELETE /services/data/vXX.X/composite/sobjects?ids=recordId,recordId
Parameters
Parameter Description
allOrNone Optional. Indicates whether to roll back the entire request when the deletion of any object
fails (true) or to continue with the independent deletion of other objects in the request.
The default is false.
ids Required. A list of up to 200 IDs of objects to be deleted. The IDs can belong to different
object types, including custom objects.
338
Reference sObject Collections
Usage Guidelines
• The DeleteResult objects are returned in the order in which the IDs of the deleted objects were specified.
• You can't delete records for multiple object types in one call when one of those types is related to a feature in the Salesforce Setup
area.
Request Example
DELETE /composite/sobjects?ids=001xx000003DGb2AAG,003xx000004TmiQAAS&allOrNone=false
[
{
"id" : "001RM000003oLrHYAU",
"success" : true,
"errors" : [ ]
},
{
"id" : "001RM000003oLraYAE",
"success" : true,
"errors" : [ ]
}
]
This example shows a response when some items caused errors and allOrNone is false.
HTTP/1.1 200 OK
[
{
"id" : "001RM000003oLrfYAE",
"success" : true,
"errors" : [ ]
},
{
"success" : false,
"errors" : [
{
"statusCode" : "MALFORMED_ID",
"message" : "malformed id 001RM000003oLrB000",
"fields" : [ ]
}
339
Reference Headers
]
}
]
This example shows a response when some items caused errors and allOrNone is true.
HTTP/1.1 200 OK
[
{
"id" : "001RM000003oLruYAE",
"success" : false,
"errors" : [
{
"statusCode" : "ALL_OR_NONE_OPERATION_ROLLED_BACK",
"message" : "Record rolled back because not all records were valid and the
request was using AllOrNone header",
"fields" : [ ]
}
]
},
{
"success" : false,
"errors" : [
{
"statusCode" : "MALFORMED_ID",
"message" : "malformed id 001RM000003oLrB000",
"fields" : [ ]
}
]
}
]
Headers
This section lists custom HTTP request and response headers used for REST API.
IN THIS SECTION:
Assignment Rule Header
The Assignment Rule header is a request header applied when creating or updating Accounts, Cases, or Leads. If enabled, the active
assignment rules are used. If disabled, the active assignment rules are not applied. If a valid AssignmentRule ID is provided, the
AssignmentRule is applied. If the header is not provided with a request, REST API defaults to using the active assignment rules.
Call Options Header
Specifies options for the client you’re using to access REST API resources. For example, you can provide a default namespace prefix
so that you don’t need to specify the prefix in your code.
Duplicate Rule Header
Configure options for duplicate rules. Salesforce uses duplicate rules to see if the record that is being created, updated, or upserted
is a duplicate of an existing record. Duplicate rules are part of Duplicate Management.
340
Reference Assignment Rule Header
Note: This header also gets applied when making REST API calls that indirectly result in creating or updating Accounts, Cases, or
Leads. For example, if you use this header with a call that updates a record, and the update executes an Apex trigger that updates
a Case, the assignment rules would be applied.
341
Reference Duplicate Rule Header
Field values
• client—A string used as an identifier for the client sending the request. This string appears in log files, helping you keep
track of which client sent a request.
• defaultNamespace—A developer namespace prefix used as the default namespace for the request. With this header field,
the request resolves field names in managed packages without specified namespaces. (Not supported in Bulk API.)
Example
If the developer namespace prefix is battle, and you have a custom field called botId in a package, set the default namespace
with the call options header:
Sforce-Call-Options: client=caseSensitiveToken; defaultNamespace=battle
/services/data/vXX.X/query/?q=SELECT+Id+botID__c+FROM+Account
342
Reference Limit Info Header
SEE ALSO:
Salesforce Functions Guide: Functions Limits
343
Reference Query Options Header
Example
Sforce-Query-Options: batchSize=1000
Warning Header
This header is returned if there are warnings, such as the use of a deprecated version of the API.
Example
Warning: 299 - "This API is deprecated and will be removed by Summer '22. Please see
https://help.salesforce.com/articleView?id=000351312 for details."
344
Reference Status Codes and Error Responses
201 “Created” success code, for POST requests and some PATCH requests.
204 “No Content” success code, for DELETE requests and some PATCH requests.
300 The value returned when an external ID exists in more than one record. The response body contains the list
of matching records.
304 The request content has not changed since a specified date and time. The date and time is provided in a
If-Modified-Since header. See Get Object Metadata Changes for an example.
400 The request couldn’t be understood, usually because the JSON or XML body contains an error.
401 The session ID or OAuth token used has expired or is invalid. The response body contains the message and
errorCode.
403 The request has been refused. Verify that the logged-in user has appropriate permissions. If the error code is
REQUEST_LIMIT_EXCEEDED, you’ve exceeded API request limits in your org.
404 The requested resource couldn’t be found. Check the URI for errors, and verify that there are no sharing issues.
405 The method specified in the Request-Line isn’t allowed for the resource specified in the URI.
409 The request could not be completed due to a conflict with the current state of the resource. Check that the
API version is compatible with the resource you are requesting.
410 The requested resource has been retired or removed. Delete or update any references to the resource.
412 The request was not executed because one or more of the preconditions that the client specified in the request
headers was not satisfied. For example, the request includes an If-Unmodified-Since header, but the
data was modified after the specified date.
415 The entity in the request is in a format that’s not supported by the specified method.
431 The combined length of the URI and headers exceeds the 16,384-byte limit.
500 An error has occurred within Lightning Platform, so the request couldn’t be completed. Contact Salesforce
Customer Support.
503 The server is unavailable to handle the request. Typically this occurs if the server is down for maintenance or
is currently overloaded.
345
Reference Status Codes and Error Responses
Incorrect ID example
Using a non-existent ID in a request using JSON or XML (request_body.json or request_body.xml)
[
{
"fields" : [ "Id" ],
"message" : "Account ID: id value of incorrect type: 001900K0001pPuOAAU",
"errorCode" : "MALFORMED_ID"
}
]
346