openapi: 3.1.0 info: title: Salesforce Experience Cloud Salesforce CMS Connect Actions Content Delivery API description: Manage content, channels, and media in Experience Cloud CMS. Supports creating, updating, and delivering managed content across channels for headless content delivery and site publishing. Part of the Salesforce Connect REST API. version: 59.0.0 contact: name: Salesforce Developer Support url: https://developer.salesforce.com/ license: name: Salesforce Master Subscription Agreement url: https://www.salesforce.com/company/legal/sfdc-website-terms-of-service/ servers: - url: https://{instance}.salesforce.com/services/data/v59.0/connect/cms description: Salesforce Instance variables: instance: default: yourInstance description: Your Salesforce instance name or custom domain security: - oauth2: [] - bearerAuth: [] tags: - name: Content Delivery description: Content delivery operations for headless consumption paths: /channels/{channelId}/contents/query: get: operationId: queryDeliveryContent summary: Salesforce Experience Cloud Query Delivery Content by Channel description: Retrieves published CMS content from the specified delivery channel. Returns content items matching the specified content type and optional filters. Used for headless content delivery to external applications and decoupled frontends. tags: - Content Delivery parameters: - $ref: '#/components/parameters/ChannelId' - name: managedContentType in: query required: true description: Developer name of the content type (e.g., news, cms_image, cms_document, custom content types) schema: type: string - name: language in: query description: Language code for content variant (e.g., en_US, fr, de) schema: type: string - name: contentKeys in: query description: Comma-separated list of content keys to retrieve schema: type: string - name: managedContentIds in: query description: Comma-separated list of managed content record IDs schema: type: string - name: topics in: query description: Comma-separated list of topic names to filter content schema: type: string - name: showAbsoluteUrl in: query description: Whether to return absolute URLs for media references schema: type: boolean default: false - $ref: '#/components/parameters/PageSize' - $ref: '#/components/parameters/PageParam' responses: '200': description: Successfully retrieved delivery content content: application/json: schema: $ref: '#/components/schemas/DeliveryContentCollection' '400': $ref: '#/components/responses/BadRequest' '401': $ref: '#/components/responses/Unauthorized' '404': $ref: '#/components/responses/NotFound' /channels/{channelId}/contents/search: get: operationId: searchDeliveryContent summary: Salesforce Experience Cloud Search Delivery Content description: Searches published CMS content in the specified delivery channel using a full-text search term. Returns matching content items with relevance-based ordering. tags: - Content Delivery parameters: - $ref: '#/components/parameters/ChannelId' - name: q in: query required: true description: Full-text search term schema: type: string - name: managedContentType in: query description: Filter results to a specific content type schema: type: string - name: language in: query description: Language code for content filtering schema: type: string - name: showAbsoluteUrl in: query description: Whether to return absolute URLs schema: type: boolean default: false - $ref: '#/components/parameters/PageSize' - $ref: '#/components/parameters/PageParam' responses: '200': description: Successfully searched delivery content content: application/json: schema: $ref: '#/components/schemas/DeliveryContentCollection' '400': $ref: '#/components/responses/BadRequest' '401': $ref: '#/components/responses/Unauthorized' '404': $ref: '#/components/responses/NotFound' /channels/{channelId}/contents/{contentKeyOrId}: get: operationId: getDeliveryContentItem summary: Salesforce Experience Cloud Get a Delivery Content Item description: Retrieves a specific published content item from the delivery channel by its content key or managed content ID. Returns all content nodes and metadata for the item. tags: - Content Delivery parameters: - $ref: '#/components/parameters/ChannelId' - name: contentKeyOrId in: path required: true description: Content key or managed content record ID schema: type: string - name: language in: query description: Language variant to retrieve schema: type: string - name: showAbsoluteUrl in: query description: Whether to return absolute URLs schema: type: boolean default: false responses: '200': description: Successfully retrieved content item content: application/json: schema: $ref: '#/components/schemas/DeliveryContentItem' '401': $ref: '#/components/responses/Unauthorized' '404': $ref: '#/components/responses/NotFound' components: schemas: ContentNode: type: object description: A content node representing a field value properties: altText: type: string description: Alternative text for media content contentKey: type: string description: Content key for referenced content fileName: type: string description: File name for media content mediaType: type: string description: Media type classification mimeType: type: string description: MIME type of the content nodeType: type: string description: Type of content node enum: - Media - MediaSource - MultilineText - NameField - RichText - Text - Url - DateTime referenceId: type: string description: Reference ID for the content title: type: string description: Title of the node unauthenticatedUrl: type: string format: uri description: Public URL url: type: string format: uri description: URL value value: type: string description: Text or value content DeliveryContentItem: type: object description: A delivered CMS content item properties: contentKey: type: string description: Unique content key for the item contentNodes: type: object description: Content field values organized as nodes additionalProperties: $ref: '#/components/schemas/ContentNode' contentUrlName: type: string description: URL-safe name for the content language: type: string description: Language code of this content version managedContentId: type: string description: Salesforce record ID publishedDate: type: string format: date-time description: When this content was published title: type: string description: Title of the content type: type: string description: Content type developer name typeLabel: type: string description: Content type display label unauthenticatedUrl: type: string format: uri description: Public URL for unauthenticated access DeliveryContentCollection: type: object description: Collection of delivered content items properties: currentPageUrl: type: string format: uri items: type: array items: $ref: '#/components/schemas/DeliveryContentItem' managedContentTypes: type: object description: Map of content type names to type metadata additionalProperties: type: object properties: developerName: type: string label: type: string nextPageUrl: type: string format: uri total: type: integer totalCount: type: integer ErrorResponse: type: object description: Standard Salesforce API error response properties: errorCode: type: string message: type: string parameters: PageParam: name: page in: query description: Page number (0-indexed) schema: type: integer default: 0 PageSize: name: pageSize in: query description: Number of items per page (default 25, max 250) schema: type: integer default: 25 maximum: 250 ChannelId: name: channelId in: path required: true description: The ID of the CMS delivery channel schema: type: string responses: Unauthorized: description: Unauthorized - invalid or expired OAuth token content: application/json: schema: type: array items: $ref: '#/components/schemas/ErrorResponse' BadRequest: description: Bad request - invalid input parameters content: application/json: schema: type: array items: $ref: '#/components/schemas/ErrorResponse' NotFound: description: Resource not found content: application/json: schema: type: array items: $ref: '#/components/schemas/ErrorResponse' 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 data content: Manage CMS content bearerAuth: type: http scheme: bearer bearerFormat: OAuth2 description: Bearer token obtained through OAuth 2.0 flow