Newscred · AsyncAPI Specification

Newscred Cmp Webhooks

Version

View Spec View on GitHub CompanyContent MarketingContent ManagementDigital Asset ManagementMarketingMarketing Resource ManagementWorkflowsPublishingWebhookAcquiredAsyncAPIWebhooksEvents

AsyncAPI Specification

Raw ↑
generated: '2026-08-26'
method: searched
source: https://docs.developers.optimizely.com/content-marketing-platform/reference/get-started
docs: https://docs.developers.optimizely.com/content-marketing-platform/reference/get-started
api: Optimizely CMP Open API v3
asyncapi_published: false
asyncapi_note: >-
  Newscred / Welcome / Optimizely CMP publishes NO AsyncAPI document. The event surface is
  documented as a hand-written webhook reference on the docs host and as a redoc-rendered
  "Welcome Webhooks" page in the newscred GitHub organization
  (https://newscred.github.io/settings-ex-im-automation-sample/webhooks.html). This file is the
  webhook catalog harvested from that reference; it is NOT a fabricated AsyncAPI.
transport: https-webhook
subscription:
  how: >-
    Registered in the CMP UI under Admin > Apps and Webhooks, or via the Settings import/export
    API (POST /settings, which merges webhooks by name). A registration supplies a callback URL,
    one or more event names, and an optional secret.
  callback_requirements:
  - HTTPS is required; the URL may contain subdomains, paths, subpaths and query strings.
  - One callback URL may subscribe to one or many events.
delivery:
  method: HTTP POST with a JSON body
  ack_statuses: [200, 202]
  failure: Any status other than 200 or 202 is treated as a delivery failure.
  timeout_seconds: 30
  retry: Redelivered with exponential backoff for up to three days after a delivery failure.
  ordering: >-
    Not guaranteed. CMP explicitly does not guarantee events arrive in the order they were
    generated; consumers are told to re-fetch current state from the Open API.
  duplicates: >-
    Possible. CMP states a callback endpoint may receive the same event more than once and that
    consumers must make their event processing idempotent. This is CONSUMER-side idempotency —
    CMP itself publishes no idempotency key for its REST writes (see conventions/).
  security:
    mechanism: shared secret echoed in a request header
    header: Callback-Secret
    note: >-
      An optional secret of up to 32 characters supplied at registration is sent back verbatim in
      the Callback-Secret header on every delivery. This is a shared-secret echo, not an HMAC
      signature over the payload, so it does not prove payload integrity.
backward_compatibility:
  non_breaking:
  - Add a field to the webhook payload
  - Add a value to an enum
  - Add a request header
  source: https://docs.developers.optimizely.com/content-marketing-platform/reference/get-started
payload_envelope:
  event_name: string — the event name, e.g. asset_added
  data: object — event-specific body; entities carry id plus a links object of CMP Open API URLs
  note: >-
    Payloads are reference-style: they carry entity ids and a links.self URL back into
    https://api.cmp.optimizely.com/v3/... rather than the full entity, so a consumer must call the
    REST API to read state.
event_count: 43
groups:
- group: Library
  docs: https://docs.developers.optimizely.com/content-marketing-platform/reference/library-events
  events:
  - {name: asset_added, description: 'An asset (article, image, video, raw file or structured content) was added to the library.'}
  - {name: asset_removed, description: An asset was removed from the library.}
  - {name: asset_modified, description: An asset in the library was modified.}
  - {name: asset_renditions_created, description: Renditions were created for a library asset.}
- group: Task
  docs: https://docs.developers.optimizely.com/content-marketing-platform/reference/task-events
  events:
  - {name: task_added, description: A task was created.}
  - {name: task_removed, description: A task was removed.}
  - {name: task_metadata_modified, description: 'Task title, campaign, start_at, due_at, is_completed, is_archived or a label-type field changed.'}
  - {name: task_brief_added, description: A brief was added to a task.}
  - {name: task_brief_removed, description: A brief was removed from a task.}
  - {name: task_brief_modified, description: A task brief was modified.}
  - {name: task_asset_added, description: An asset was added to a task.}
  - {name: task_asset_removed, description: An asset was removed from a task.}
  - {name: task_asset_modified, description: A task asset was modified.}
  - {name: task_asset_draft_added, description: A draft was added to a task asset.}
  - {name: task_asset_draft_removed, description: A draft was removed from a task asset.}
  - {name: task_custom_field_modified, description: A custom field on a task was modified.}
  - {name: content_preview_requested, description: A content preview was requested for a task.}
  - {name: workflow_sub_step_updated, description: A workflow substep on a task was updated.}
  - {name: workflow_sub_step_comment_added, description: A comment was added to a workflow substep.}
  - {name: workflow_sub_step_comment_modified, description: A workflow substep comment was modified.}
  - {name: workflow_sub_step_comment_removed, description: A workflow substep comment was removed.}
- group: Campaign
  docs: https://docs.developers.optimizely.com/content-marketing-platform/reference/campaign-events
  events:
  - {name: campaign_added, description: A campaign was added.}
  - {name: campaign_metadata_modified, description: Campaign metadata was modified.}
  - {name: campaign_brief_added, description: A brief was added to a campaign.}
  - {name: campaign_brief_removed, description: A brief was removed from a campaign.}
  - {name: campaign_brief_modified, description: A campaign brief was modified.}
- group: Publish
  docs: https://docs.developers.optimizely.com/content-marketing-platform/reference/publishing-events
  events:
  - {name: asset_published, description: An asset was published to a webhook-type channel.}
  - {name: asset_synced, description: An asset was synced to a publishing channel.}
  - {name: asset_unpublished, description: An asset was unpublished from a channel.}
- group: Work request
  docs: https://docs.developers.optimizely.com/content-marketing-platform/reference/work-request-events
  events:
  - {name: work_request_added, description: A work request was created.}
  - {name: work_request_modified, description: A work request was modified.}
  - {name: work_request_removed, description: A work request was removed.}
  - {name: work_request_comment_added, description: A comment was added to a work request.}
  - {name: work_request_comment_modified, description: A work request comment was modified.}
  - {name: work_request_comment_removed, description: A work request comment was removed.}
- group: External work management
  docs: https://docs.developers.optimizely.com/content-marketing-platform/reference/external-work-management-events
  events:
  - {name: external_sub_step_started, description: An external substep was started from a task.}
  - {name: external_sub_step_completed, description: An external substep was completed.}
  - {name: external_sub_step_modified, description: An external substep was modified.}
  - {name: external_sub_step_comment_added, description: A comment was added to an external substep.}
  - {name: external_sub_step_comment_modified, description: An external substep comment was modified.}
  - {name: external_sub_step_comment_removed, description: An external substep comment was removed.}
- group: Event
  docs: https://docs.developers.optimizely.com/content-marketing-platform/reference/event-events
  events:
  - {name: event_added, description: A calendar event was added.}
  - {name: event_modified, description: A calendar event was modified.}
experimental_note: >-
  Some webhook documents carry an Experimental badge. Optimizely states experimental webhooks are
  most often NOT operational and their documentation may change until fully released.

Work with this as data

Every AsyncAPI spec here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for asyncapi

4 MCP tools reach this
  • find_asyncapisBrowse and filter every AsyncAPI spec in the catalog.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This AsyncAPI spec
curl "https://apis.io/api/v1/asyncapis/newscred-cmp-webhooks"
All asyncapi
curl "https://apis.io/api/v1/asyncapis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no email required.

A second provider on the same verified email joins the account you already have.