Salesforce Change Data Capture API
Receive near-real-time notifications of changes to Salesforce records including creates, updates, deletes, and undeletes. Enables synchronization of external data stores with Salesforce data.
Receive near-real-time notifications of changes to Salesforce records including creates, updates, deletes, and undeletes. Enables synchronization of external data stores with Salesforce data.
openapi: 3.1.0
info:
title: Salesforce Sales Cloud Salesforce Change Data Capture API
description: >-
Receive near-real-time notifications of changes to Salesforce records
including creates, updates, deletes, and undeletes. Enables synchronization
of external data stores with Salesforce data. Uses REST endpoints for
schema retrieval and configuration, with event delivery via CometD
streaming or Pub/Sub API.
version: 59.0.0
termsOfService: https://www.salesforce.com/company/legal/agreements/
contact:
name: Salesforce Developer Support
url: https://developer.salesforce.com/
license:
name: Salesforce Master Subscription Agreement
url: https://www.salesforce.com/company/legal/agreements/
externalDocs:
description: Change Data Capture Developer Guide
url: https://developer.salesforce.com/docs/atlas.en-us.change_data_capture.meta/change_data_capture/cdc_intro.htm
servers:
- url: https://{instance}.salesforce.com/services/data/v59.0
description: Salesforce Production or Developer Edition
variables:
instance:
default: yourInstance
description: Your Salesforce instance identifier
security:
- oauth2: []
- bearerAuth: []
tags:
- name: Change Events
description: Change event metadata and schema operations
- name: Event Schema
description: Retrieve event schema definitions
paths:
/sobjects/{changeEventName}:
get:
operationId: describeChangeEvent
summary: Salesforce Sales Cloud Describe a change event object
description: >-
Retrieves metadata about a change event object. For standard objects,
the change event name follows the pattern {ObjectName}ChangeEvent
(e.g., AccountChangeEvent). For custom objects, the pattern is
{ObjectName}__ChangeEvent.
tags:
- Change Events
parameters:
- $ref: '#/components/parameters/changeEventName'
responses:
'200':
description: Successfully retrieved change event metadata
content:
application/json:
schema:
type: object
properties:
objectDescribe:
type: object
properties:
name:
type: string
label:
type: string
fields:
type: array
items:
type: object
properties:
name:
type: string
label:
type: string
type:
type: string
'401':
$ref: '#/components/responses/Unauthorized'
'404':
$ref: '#/components/responses/NotFound'
/sobjects/{changeEventName}/describe:
get:
operationId: describeChangeEventFull
summary: Salesforce Sales Cloud Get full change event metadata
description: >-
Returns complete metadata for a change event type including all
header and changed fields. The change event header contains the
changeType (CREATE, UPDATE, DELETE, UNDELETE), changedFields,
commitTimestamp, transactionKey, and other metadata.
tags:
- Change Events
parameters:
- $ref: '#/components/parameters/changeEventName'
responses:
'200':
description: Successfully retrieved full metadata
content:
application/json:
schema:
type: object
'401':
$ref: '#/components/responses/Unauthorized'
'404':
$ref: '#/components/responses/NotFound'
/sobjects/{changeEventName}/eventSchema:
get:
operationId: getChangeEventSchema
summary: Salesforce Sales Cloud Get change event Avro schema
description: >-
Retrieves the Apache Avro schema for the specified change event.
The schema defines the event message structure including header
fields and object-specific data fields.
tags:
- Event Schema
parameters:
- $ref: '#/components/parameters/changeEventName'
- name: payloadFormat
in: query
description: The payload format for the schema
required: false
schema:
type: string
enum:
- EXPANDED
- COMPACT
responses:
'200':
description: Successfully retrieved event schema
content:
application/json:
schema:
type: object
properties:
fields:
type: array
items:
type: object
name:
type: string
namespace:
type: string
type:
type: string
'401':
$ref: '#/components/responses/Unauthorized'
'404':
$ref: '#/components/responses/NotFound'
/event/eventSchema/{schemaId}:
get:
operationId: getEventSchemaById
summary: Salesforce Sales Cloud Get event schema by ID
description: >-
Retrieves an event schema using the schema ID provided in a change
event message. Useful when dynamically processing change events and
needing to resolve the schema at runtime.
tags:
- Event Schema
parameters:
- name: schemaId
in: path
required: true
description: The schema ID from the change event message
schema:
type: string
- name: payloadFormat
in: query
required: false
schema:
type: string
enum:
- EXPANDED
- COMPACT
responses:
'200':
description: Successfully retrieved schema
content:
application/json:
schema:
type: object
'401':
$ref: '#/components/responses/Unauthorized'
'404':
$ref: '#/components/responses/NotFound'
components:
securitySchemes:
oauth2:
type: oauth2
description: Salesforce OAuth 2.0 authentication
flows:
authorizationCode:
authorizationUrl: https://login.salesforce.com/services/oauth2/authorize
tokenUrl: https://login.salesforce.com/services/oauth2/token
scopes:
api: Access and manage your Salesforce data
bearerAuth:
type: http
scheme: bearer
bearerFormat: OAuth 2.0 Access Token
parameters:
changeEventName:
name: changeEventName
in: path
required: true
description: >-
The change event API name (e.g., AccountChangeEvent for Account,
Contact__ChangeEvent for a custom object)
schema:
type: string
examples:
account:
value: AccountChangeEvent
summary: Account change events
contact:
value: ContactChangeEvent
summary: Contact change events
opportunity:
value: OpportunityChangeEvent
summary: Opportunity change events
lead:
value: LeadChangeEvent
summary: Lead change events
schemas:
ChangeEventMessage:
type: object
description: >-
Structure of a change data capture event message. Note that events
are delivered via CometD streaming or Pub/Sub API, not REST.
This schema documents the message format for reference.
properties:
schema:
type: string
description: The Avro schema ID for the event
payload:
type: object
properties:
ChangeEventHeader:
type: object
properties:
entityName:
type: string
description: The sObject type that was changed
recordIds:
type: array
items:
type: string
description: List of record IDs affected
changeType:
type: string
description: The type of change
enum:
- CREATE
- UPDATE
- DELETE
- UNDELETE
- GAP_CREATE
- GAP_UPDATE
- GAP_DELETE
- GAP_UNDELETE
- GAP_OVERFLOW
changedFields:
type: array
items:
type: string
description: List of field names that were changed (UPDATE only)
changeOrigin:
type: string
commitTimestamp:
type: integer
format: int64
description: The timestamp of the commit in milliseconds
commitNumber:
type: integer
format: int64
commitUser:
type: string
description: The ID of the user who made the change
sequenceNumber:
type: integer
transactionKey:
type: string
description: Unique key for the transaction
additionalProperties: true
event:
type: object
properties:
replayId:
type: integer
description: The replay ID for resuming event consumption
ApiError:
type: object
properties:
errorCode:
type: string
message:
type: string
ErrorResponse:
type: array
items:
$ref: '#/components/schemas/ApiError'
responses:
Unauthorized:
description: Authentication failed
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
NotFound:
description: Resource not found
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'