Cisco ACI · AsyncAPI Specification

Cisco Aci Event Subscriptions

Version

View Spec View on GitHub SDNData-CenterNetworkingFabricAutomationEnterpriseNetwork AutomationInfrastructureControllerREST APIAsyncAPIWebhooksEvents

AsyncAPI Specification

cisco-aci-event-subscriptions.yml Raw ↑
generated: '2026-08-19'
method: searched
source: https://www.cisco.com/c/en/us/td/docs/dcn/aci/apic/all/apic-rest-api-configuration-guide/cisco-apic-rest-api-configuration-guide-42x-and-later/m_using_the_rest_api.html
docs: https://www.cisco.com/c/en/us/td/docs/dcn/aci/apic/all/apic-rest-api-configuration-guide/cisco-apic-rest-api-configuration-guide-42x-and-later/m_using_the_rest_api.html
type: Webhooks
asyncapi_published: false
asyncapi_note: >-
  Cisco publishes no AsyncAPI document for ACI. Probed for one on 2026-08-19 alongside the OpenAPI probes —
  nothing at /asyncapi.yaml, /asyncapi.json or in the CiscoDevNet GitHub org. This artifact captures the real
  event surface as a documented catalog instead of fabricating a spec.
surface_style: websocket-subscription
webhooks: false
webhooks_note: >-
  ACI has no outbound HTTP webhooks — no callback URL registration, no signed POST to a customer endpoint.
  Push notification is delivered over a WebSocket the CLIENT opens and holds. That is a real event surface
  and it is recorded as one, but an integrator expecting webhook semantics (fire-and-forget delivery,
  retries, signatures) will not find them.
protocol:
  name: WebSocket
  rfc: RFC 6455
  detail: >-
    "The API subscription feature uses the WebSocket protocol (RFC 6455) to implement a two-way connection
    with the API client through which the API can send unsolicited notification messages to the client."
channel:
  open:
    method: GET
    path: '/socket{APIC-cookie-token}'
    detail: >-
      The WebSocket is opened against the APIC using the session token from aaaLogin as part of the URI.
      Once established, the token does not need to be resent when the API session is refreshed.
  multiplexing: >-
    "Only a single WebSocket connection is needed to support multiple query subscriptions with multiple APIC
    instances."
subscription:
  create:
    detail: 'Append ?subscription=yes to ANY query — class query or managed-object query — to subscribe to it.'
    examples:
    - 'GET https://{apic-hostname}/api/class/fvTenant.json?subscription=yes'
    - 'GET https://{apic-hostname}/api/class/fvTenant.json?&subscription=yes&refresh-timeout=140'
  response: The query response carries a subscriptionId used to refresh or correlate the subscription.
  refresh:
    path: /api/subscriptionRefresh.json?id={subscriptionId}
    detail: >-
      Subscriptions expire and must be refreshed. Cisco's own public Postman collection "Webinar Query Demos"
      includes a "Subscription Refresh" request against exactly this path.
    default_timeout_param: refresh-timeout
event_semantics:
  trigger: >-
    "When any MO is created, changed, or deleted because of a user- or system-initiated action, an event is
    generated. If that event changes the results of an active subscribed query, the APIC generates a push
    notification to the API client that created the subscription."
  granularity: per subscribed query, not per event type
  event_catalog: >-
    There is no enumerable list of event names. The event surface is the whole Management Information Tree:
    anything you can query, you can subscribe to. Practically, the interesting subscriptions are the same
    classes listed in data-model/cisco-aci-data-model.yml — fvTenant, fvAEPg, fvBD, faultInst — plus the
    fault classes, which is how ACI delivers real-time alerting.
  delivery_guarantee: >-
    Not documented. No at-least-once guarantee, no replay, no cursor/offset, no dead-letter. If the socket
    drops, events during the gap are lost and the client must re-query.
common_subscriptions:
- class: faultInst
  purpose: Real-time fault stream — the closest thing ACI has to an alerting webhook.
- class: fvTenant
  purpose: Tenant lifecycle changes.
- class: fvAEPg
  purpose: EPG policy changes.
- class: fvCEp
  purpose: Endpoint attach/detach — endpoints appearing and disappearing on the fabric.
evidence:
- source: Cisco APIC REST API Configuration Guide, "Subscription" and "Opening a WebSocket" sections
  url: https://www.cisco.com/c/en/us/td/docs/dcn/aci/apic/all/apic-rest-api-configuration-guide/cisco-apic-rest-api-configuration-guide-42x-and-later/m_using_the_rest_api.html
- source: 'Cisco public Postman workspace, collection "APIC Websockets" and "Webinar Query Demos" (Subscription Refresh request)'
  url: https://www.postman.com/cisco-dcn-marketing-enablement/cisco-aci-public/overview
gaps:
- No AsyncAPI document.
- No named event types — subscriptions are query-shaped, so events cannot be discovered without knowing the model first.
- No delivery guarantee, replay or cursor documented.
- No outbound webhooks, so there is no way to receive ACI events without holding a long-lived connection.