Optimizely · AsyncAPI Specification

Optimizely CMP Webhooks

Version 1.0

The Optimizely Content Marketing Platform (CMP) provides webhook notifications when content events occur, such as when assets are published, tasks are completed or modified, and content items are updated. Webhooks send HTTP POST payloads with JSON bodies to configured callback URLs. An optional secret can be provided during webhook registration for signature verification via the Callback-Secret header.

View Spec View on GitHub A/B TestingContent ManagementCustomer DataE-CommerceExperimentationFeature FlagsMarketingAsyncAPIWebhooksEvents

Channels

/webhook/task-events
publish receiveTaskEvent
Receive a task event notification
Receives webhook notifications related to task lifecycle events in the CMP, including asset additions, step completions, and assignee changes.
/webhook/content-events
publish receiveContentEvent
Receive a content event notification
Receives webhook notifications related to content events in the CMP, including content publication and updates.

Messages

TaskAssetAdded
Task Asset Added
An asset was added to a task
TaskStepCompleted
Task Step Completed
A workflow step was completed
TaskStepStarted
Task Step Started
A workflow step was started
TaskAssigneeChanged
Task Assignee Changed
A task assignee was changed
AssetAdded
Asset Added to Library
An asset was published to the CMP library
ContentPublished
Content Published
Content was published

Servers

https
webhookReceiver {callbackUrl}
The HTTPS endpoint on your server that receives webhook POST requests from Optimizely CMP.

AsyncAPI Specification

Raw ↑
asyncapi: 2.6.0
info:
  title: Optimizely CMP Webhooks
  description: >-
    The Optimizely Content Marketing Platform (CMP) provides webhook
    notifications when content events occur, such as when assets are
    published, tasks are completed or modified, and content items are
    updated. Webhooks send HTTP POST payloads with JSON bodies to
    configured callback URLs. An optional secret can be provided during
    webhook registration for signature verification via the
    Callback-Secret header.
  version: '1.0'
  contact:
    name: Optimizely Support
    url: https://support.optimizely.com
servers:
  webhookReceiver:
    url: '{callbackUrl}'
    protocol: https
    description: >-
      The HTTPS endpoint on your server that receives webhook
      POST requests from Optimizely CMP.
    variables:
      callbackUrl:
        description: The callback URL registered for receiving webhooks
channels:
  /webhook/task-events:
    description: >-
      Receives webhook notifications related to task lifecycle events
      in the CMP, including asset additions, step completions, and
      assignee changes.
    publish:
      operationId: receiveTaskEvent
      summary: Receive a task event notification
      description: >-
        Optimizely CMP sends an HTTP POST request when task-related
        events occur, such as when an asset is added to a task, a
        workflow step is completed, started, or skipped, or when a
        task assignee or due date is changed.
      message:
        oneOf:
          - $ref: '#/components/messages/TaskAssetAdded'
          - $ref: '#/components/messages/TaskStepCompleted'
          - $ref: '#/components/messages/TaskStepStarted'
          - $ref: '#/components/messages/TaskAssigneeChanged'
  /webhook/content-events:
    description: >-
      Receives webhook notifications related to content events
      in the CMP, including content publication and updates.
    publish:
      operationId: receiveContentEvent
      summary: Receive a content event notification
      description: >-
        Optimizely CMP sends an HTTP POST request when content-related
        events occur in the content repository.
      message:
        oneOf:
          - $ref: '#/components/messages/AssetAdded'
          - $ref: '#/components/messages/ContentPublished'
components:
  securitySchemes:
    callbackSecret:
      type: httpApiKey
      in: header
      name: Callback-Secret
      description: >-
        Optional secret provided during webhook registration, sent with
        each webhook request for verification.
  messages:
    TaskAssetAdded:
      name: TaskAssetAdded
      title: Task Asset Added
      summary: An asset was added to a task
      description: >-
        Sent when a digital asset (image, video, article, or raw file)
        is added to a content task in the CMP workflow.
      contentType: application/json
      payload:
        $ref: '#/components/schemas/TaskAssetEvent'
    TaskStepCompleted:
      name: TaskStepCompleted
      title: Task Step Completed
      summary: A workflow step was completed
      description: >-
        Sent when a substep in the content workflow is marked as complete.
      contentType: application/json
      payload:
        $ref: '#/components/schemas/TaskStepEvent'
    TaskStepStarted:
      name: TaskStepStarted
      title: Task Step Started
      summary: A workflow step was started
      description: >-
        Sent when a substep in the content workflow is started.
      contentType: application/json
      payload:
        $ref: '#/components/schemas/TaskStepEvent'
    TaskAssigneeChanged:
      name: TaskAssigneeChanged
      title: Task Assignee Changed
      summary: A task assignee was changed
      description: >-
        Sent when the assignee or due date of a task step is modified.
      contentType: application/json
      payload:
        $ref: '#/components/schemas/TaskAssigneeEvent'
    AssetAdded:
      name: AssetAdded
      title: Asset Added to Library
      summary: An asset was published to the CMP library
      description: >-
        Sent when an asset is approved and published to the CMP digital
        asset library, making it available for use in campaigns and content.
      contentType: application/json
      payload:
        $ref: '#/components/schemas/AssetEvent'
    ContentPublished:
      name: ContentPublished
      title: Content Published
      summary: Content was published
      description: >-
        Sent when a content item is published from the CMP content
        repository, making it available for distribution.
      contentType: application/json
      payload:
        $ref: '#/components/schemas/ContentEvent'
  schemas:
    TaskAssetEvent:
      type: object
      description: Event payload for task asset events
      properties:
        event_name:
          type: string
          description: Name of the event
          enum:
            - task_asset_added
        task_id:
          type: string
          description: Identifier of the task
        asset:
          type: object
          description: The asset that was added
          properties:
            id:
              type: string
              description: Asset identifier
            type:
              type: string
              description: Type of asset
              enum:
                - image
                - video
                - article
                - raw_file
            links:
              type: object
              description: Links related to the asset
              properties:
                self:
                  type: string
                  format: uri
                  description: URL to the asset
        timestamp:
          type: string
          format: date-time
          description: When the event occurred
    TaskStepEvent:
      type: object
      description: Event payload for task workflow step events
      properties:
        event_name:
          type: string
          description: Name of the event
          enum:
            - task_step_completed
            - task_step_started
            - task_step_skipped
        task_id:
          type: string
          description: Identifier of the task
        step:
          type: object
          description: The workflow step
          properties:
            id:
              type: string
              description: Step identifier
            name:
              type: string
              description: Step name
            status:
              type: string
              description: Step status
              enum:
                - started
                - completed
                - skipped
        timestamp:
          type: string
          format: date-time
          description: When the event occurred
    TaskAssigneeEvent:
      type: object
      description: Event payload for task assignee changes
      properties:
        event_name:
          type: string
          description: Name of the event
          enum:
            - task_assignee_changed
            - task_due_date_changed
        task_id:
          type: string
          description: Identifier of the task
        assignee:
          type: object
          description: The new assignee
          properties:
            id:
              type: string
              description: User identifier
            name:
              type: string
              description: User display name
        due_date:
          type: string
          format: date
          description: Updated due date
        timestamp:
          type: string
          format: date-time
          description: When the event occurred
    AssetEvent:
      type: object
      description: Event payload for asset library events
      properties:
        event_name:
          type: string
          description: Name of the event
          enum:
            - asset_added
        asset:
          type: object
          description: The asset that was published
          properties:
            id:
              type: string
              description: Asset identifier
            title:
              type: string
              description: Asset title
            type:
              type: string
              description: Asset type
            url:
              type: string
              format: uri
              description: URL to access the asset
        timestamp:
          type: string
          format: date-time
          description: When the event occurred
    ContentEvent:
      type: object
      description: Event payload for content publication events
      properties:
        event_name:
          type: string
          description: Name of the event
          enum:
            - content_published
        content:
          type: object
          description: The published content
          properties:
            id:
              type: string
              description: Content identifier
            title:
              type: string
              description: Content title
            content_type:
              type: string
              description: Content type
        timestamp:
          type: string
          format: date-time
          description: When the event occurred