CMS Managed Content API

Retrieve and search published managed content versions for Experience Cloud sites. Provides endpoints for querying managed content delivery channels and searching content across workspaces.

OpenAPI Specification

salesforce-experience-cloud-cms-managed-content-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: Salesforce Experience Cloud Salesforce CMS Managed Content API
  description: >-
    Retrieve and search published managed content versions for Experience Cloud
    sites. Provides endpoints for querying managed content delivery channels
    and searching content across workspaces. 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
    description: Salesforce Instance
    variables:
      instance:
        default: yourInstance
        description: Your Salesforce instance name or custom domain
security:
  - oauth2: []
  - bearerAuth: []
tags:
  - name: Delivery Channels
    description: Managed content delivery channel operations
  - name: Managed Content
    description: Managed content retrieval and search
paths:
  /cms/delivery/channels:
    get:
      operationId: listDeliveryChannels
      summary: Salesforce Experience Cloud List CMS Delivery Channels
      description: >-
        Returns a list of managed content delivery channels available to
        the context user. Channels are destinations where content is
        published for delivery to Experience Cloud sites or external
        applications.
      tags:
        - Delivery Channels
      parameters:
        - $ref: '#/components/parameters/PageSize'
        - $ref: '#/components/parameters/PageParam'
      responses:
        '200':
          description: Successfully retrieved delivery channels
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DeliveryChannelCollection'
        '401':
          $ref: '#/components/responses/Unauthorized'
  /cms/delivery/channels/{channelId}:
    get:
      operationId: getDeliveryChannel
      summary: Salesforce Experience Cloud Get a Delivery Channel
      description: >-
        Returns details about a specific managed content delivery channel
        including its name, type, and available content types.
      tags:
        - Delivery Channels
      parameters:
        - $ref: '#/components/parameters/ChannelId'
      responses:
        '200':
          description: Successfully retrieved delivery channel
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DeliveryChannel'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
  /cms/delivery/channels/{channelId}/contents/query:
    get:
      operationId: queryChannelContent
      summary: Salesforce Experience Cloud Query Channel Content
      description: >-
        Returns published managed content versions for the specified delivery
        channel. Supports filtering by content type, language, and content
        keys. Used for headless content delivery to Experience Cloud sites
        and external applications.
      tags:
        - Managed Content
      parameters:
        - $ref: '#/components/parameters/ChannelId'
        - name: managedContentType
          in: query
          required: true
          description: >-
            The developer name of the managed content type to query
            (e.g., news, cms_image, cms_document)
          schema:
            type: string
        - name: language
          in: query
          description: Language code to filter content (e.g., en_US)
          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 IDs
          schema:
            type: string
        - name: topics
          in: query
          description: Comma-separated list of topic names to filter by
          schema:
            type: string
        - name: showAbsoluteUrl
          in: query
          description: Whether to return absolute URLs for media content
          schema:
            type: boolean
            default: false
        - $ref: '#/components/parameters/PageSize'
        - $ref: '#/components/parameters/PageParam'
      responses:
        '200':
          description: Successfully retrieved managed content
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedContentVersionCollection'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
  /cms/delivery/channels/{channelId}/contents/search:
    get:
      operationId: searchChannelContent
      summary: Salesforce Experience Cloud Search Channel Content
      description: >-
        Searches published managed content in the specified delivery channel
        using a search term. Returns matching content with relevance
        scoring.
      tags:
        - Managed Content
      parameters:
        - $ref: '#/components/parameters/ChannelId'
        - name: q
          in: query
          required: true
          description: Search term to find matching content
          schema:
            type: string
        - name: managedContentType
          in: query
          description: Filter search results by content type
          schema:
            type: string
        - name: language
          in: query
          description: Language code to filter results
          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 managed content
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedContentVersionCollection'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
  /cms/delivery/channels/{channelId}/contents/{contentKeyOrId}:
    get:
      operationId: getChannelContentItem
      summary: Salesforce Experience Cloud Get a Content Item from Channel
      description: >-
        Returns a specific published managed content version from the
        specified delivery channel by content key or managed content ID.
      tags:
        - Managed Content
      parameters:
        - $ref: '#/components/parameters/ChannelId'
        - name: contentKeyOrId
          in: path
          required: true
          description: The content key or managed content 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/ManagedContentVersion'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
  /communities/{communityId}/managed-content/delivery:
    get:
      operationId: queryCommunityManagedContent
      summary: Salesforce Experience Cloud Query Community Managed Content
      description: >-
        Returns published managed content for the specified Experience Cloud
        site. Similar to channel-based delivery but scoped to a specific
        community context.
      tags:
        - Managed Content
      parameters:
        - name: communityId
          in: path
          required: true
          description: The ID of the Experience Cloud site
          schema:
            type: string
        - name: managedContentType
          in: query
          required: true
          description: Content type developer name to query
          schema:
            type: string
        - name: language
          in: query
          description: Language code to filter content
          schema:
            type: string
        - name: topics
          in: query
          description: Comma-separated list of topic names
          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 retrieved community managed content
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedContentVersionCollection'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
  /communities/{communityId}/managed-content/delivery/search:
    get:
      operationId: searchCommunityManagedContent
      summary: Salesforce Experience Cloud Search Community Managed Content
      description: >-
        Searches published managed content within the specified Experience
        Cloud site using a search term.
      tags:
        - Managed Content
      parameters:
        - name: communityId
          in: path
          required: true
          description: The ID of the Experience Cloud site
          schema:
            type: string
        - name: q
          in: query
          required: true
          description: Search term
          schema:
            type: string
        - name: managedContentType
          in: query
          description: Filter by content type
          schema:
            type: string
        - name: language
          in: query
          description: Language code
          schema:
            type: string
        - $ref: '#/components/parameters/PageSize'
        - $ref: '#/components/parameters/PageParam'
      responses:
        '200':
          description: Successfully searched community content
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedContentVersionCollection'
        '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 data
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: OAuth2
      description: Bearer token obtained through OAuth 2.0 flow
  parameters:
    ChannelId:
      name: channelId
      in: path
      required: true
      description: The ID of the CMS delivery channel
      schema:
        type: string
    PageSize:
      name: pageSize
      in: query
      description: Number of items per page (default 25, max 250)
      schema:
        type: integer
        default: 25
        maximum: 250
    PageParam:
      name: page
      in: query
      description: Page number to retrieve (0-indexed)
      schema:
        type: integer
        default: 0
  schemas:
    DeliveryChannelCollection:
      type: object
      description: Collection of delivery channels
      properties:
        channels:
          type: array
          items:
            $ref: '#/components/schemas/DeliveryChannel'
        currentPageUrl:
          type: string
          format: uri
        nextPageUrl:
          type: string
          format: uri
        totalCount:
          type: integer
    DeliveryChannel:
      type: object
      description: A managed content delivery channel
      properties:
        channelId:
          type: string
          description: Unique identifier for the channel
        channelName:
          type: string
          description: Display name of the channel
        channelType:
          type: string
          description: Type of channel
          enum:
            - ExperienceCloudSite
            - CustomChannel
        domain:
          type: string
          description: Domain associated with the channel
        isDomainLocked:
          type: boolean
          description: Whether the domain is locked
        isSearchable:
          type: boolean
          description: Whether content is searchable
    ManagedContentVersionCollection:
      type: object
      description: Collection of managed content versions
      properties:
        currentPageUrl:
          type: string
          format: uri
        items:
          type: array
          items:
            $ref: '#/components/schemas/ManagedContentVersion'
        managedContentTypes:
          type: object
          description: Map of content type developer names to labels
          additionalProperties:
            type: object
            properties:
              developerName:
                type: string
              label:
                type: string
        nextPageUrl:
          type: string
          format: uri
        total:
          type: integer
          description: Total number of matching items
        totalCount:
          type: integer
    ManagedContentVersion:
      type: object
      description: A published managed content version
      properties:
        contentKey:
          type: string
          description: Unique content key
        contentNodes:
          type: object
          description: >-
            Map of field names to content nodes containing the
            content field values
          additionalProperties:
            $ref: '#/components/schemas/ContentNode'
        contentUrlName:
          type: string
          description: URL-friendly name for the content
        language:
          type: string
          description: Language code of this content version
        managedContentId:
          type: string
          description: Salesforce record ID of the managed content
        publishedDate:
          type: string
          format: date-time
          description: When this version 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
    ContentNode:
      type: object
      description: A content node representing a field value in managed content
      properties:
        altText:
          type: string
          description: Alternative text (for media nodes)
        contentKey:
          type: string
          description: Content key for referenced content
        fileName:
          type: string
          description: File name (for media nodes)
        mediaType:
          type: string
          description: Media type (for media nodes)
        mimeType:
          type: string
          description: MIME type (for media nodes)
        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 for unauthenticated access
        url:
          type: string
          format: uri
          description: URL value of the node
        value:
          type: string
          description: Text or value content of the node
    ErrorResponse:
      type: object
      description: Standard Salesforce API error response
      properties:
        errorCode:
          type: string
        message:
          type: string
  responses:
    BadRequest:
      description: Bad request - invalid input parameters
      content:
        application/json:
          schema:
            type: array
            items:
              $ref: '#/components/schemas/ErrorResponse'
    Unauthorized:
      description: Unauthorized - invalid or expired OAuth token
      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'