Cisco Crosswork · AsyncAPI Specification
Cisco Crosswork Events
Version
View Spec
View on GitHub
Network AutomationService ProviderOrchestrationNetworkingAssuranceTelecomRESTCONFYANGZero Touch ProvisioningWorkflow-AutomationTraffic EngineeringMCPTelemetryOn-PremisesAsyncAPIWebhooksEvents
AsyncAPI Specification
generated: '2026-08-19'
method: derived
source: >-
openapi/cisco-crosswork-cwm-event-api-openapi.yml, openapi/cisco-crosswork-cwm-event-type-api-openapi.yml,
openapi/cisco-crosswork-add-destinations-api-openapi.yml, grpc/cisco-crosswork-dpm-*.proto,
https://github.com/CiscoDevNet/Crosswork-SDK/tree/main/Notification-client
asyncapi_published: false
asyncapi_note: >-
Cisco publishes no AsyncAPI document for Crosswork. Probed the DevNet documentation set and the CiscoDevNet GitHub
organisation; there is no asyncapi.yaml, no event catalogue and no channel document. This is recorded as an
absence, not fabricated.
summary: >-
Crosswork has a substantial event and streaming surface — it is just not described as one. Three separate
mechanisms exist: Workflow Manager consumes and produces events through a registerable event-type system with an
HTTP listener, Crosswork Data Gateway forwards collected telemetry to customer-owned destinations over gRPC,
TCP, UDP, HTTP(S) and Kafka-style dispatch, and the platform emits a northbound notification stream that Cisco
ships a Java client for. None of the three has a machine-readable event contract; the payload shapes are
discoverable only from the protobufs and the REST schemas.
surfaces:
- name: Workflow Manager event types
direction: bidirectional
kind: registerable event types (consumed / produced)
transport: HTTP
registration:
list: GET /crosswork/cwm/v2/eventType
create: POST /crosswork/cwm/v2/eventType
read: GET /crosswork/cwm/v2/eventType/{type}/{actionOrKind}
update: PUT /crosswork/cwm/v2/eventType/{type}/{actionOrKind}
delete: DELETE /crosswork/cwm/v2/eventType/{type}/{actionOrKind}
start_stop_listener: POST /crosswork/cwm/v2/eventType/{type}/{actionOrKind}
receiver: POST /crosswork/cwm/v2/event/http
receiver_operation: http_event_listener
receiver_note: >-
Crosswork Workflow Manager RECEIVES webhooks here — it is the listener, not the sender. The request body is
undeclared in the published contract; the 200 is a bare string and both error responses are the free-form gin.H
object.
event_definition:
schema: server.EventDefinition
fields:
- name: type
note: The event type name.
- name: kind
note: '"consumed" or "produced", per Cisco''s own description of the Kind field.'
- name: source
- name: endpoint
- name: resourceId
- name: payloadAttrs
note: Free-form string map — the payload shape is NOT declared in the contract.
- name: correlationAttrs
- name: createWorkflow
note: When true, an inbound event starts a workflow.
- name: workflowName
- name: workflowVersion
response_schema: server.EventResponse
response_extra_fields: [state, internallyManagedListener]
event_catalog_published: false
event_catalog_note: >-
There is no list of event types Cisco ships. The catalogue is whatever the operator registers, so the set is
per-deployment by design — which also means no agent can know it in advance.
- name: Crosswork Data Gateway destinations
direction: outbound
kind: telemetry forwarding
transports:
- ROBOT_MSVC_TRANS_GRPC
- ROBOT_MSVC_TRANS_TCP
- ROBOT_MSVC_TRANS_UDP
- ROBOT_MSVC_TRANS_HTTP
- ROBOT_MSVC_TRANS_HTTPS
- ROBOT_MSVC_TRANS_SSH
- ROBOT_MSVC_TRANS_NETCONF
- ROBOT_MSVC_TRANS_TELNET
- ROBOT_MSVC_TRANS_SNMP
- ROBOT_MSVC_TRANS_TL1
- ROBOT_MSVC_TRANS_TL1_SECURE
management:
create: POST /crosswork/inventory/v1/destinations
read: openapi/cisco-crosswork-get-destinations-api-openapi.yml
update: openapi/cisco-crosswork-update-destinations-api-openapi.yml
replace: openapi/cisco-crosswork-put-replace-destinations-api-openapi.yml
delete: openapi/cisco-crosswork-delete-destinations-api-openapi.yml
payload_contract: grpc/cisco-crosswork-dpm-*.proto
payload_note: >-
The records Crosswork forwards ARE described — as 18 proto3 files in the Crosswork Data Platform Model
(interface, CPU, memory, optics, PTP, SyncE, QoS, GNSS, power, temperature, SR policy, SRv6 locator, CRC,
availability, OTU controllers and a GenericRecord umbrella). Saved verbatim to grpc/ in this repo. This is the
strongest event-payload documentation in the whole product, and it lives in an SDK repository rather than in
the API reference.
- name: Northbound notification stream
direction: outbound
kind: platform notifications
client: https://github.com/CiscoDevNet/Crosswork-SDK/tree/main/Notification-client
client_versions: ['6.0', '6.5', '7.0', '7.1', '7.2', '8.0']
client_artifacts:
- nbi-notifications-connection-less-client.jar
- nbi-notifications-connection-oriented-client.jar
contract_published: false
contract_note: >-
Cisco ships a Java client for this stream but publishes no wire contract for it — no AsyncAPI, no schema, no
message catalogue. A non-Java consumer has the JAR and nothing else. The two client flavours (connection-less
and connection-oriented) imply two delivery modes that are likewise undocumented in the API reference.
webhooks:
provider_sends: false
provider_receives: true
note: >-
Worth stating plainly, because it inverts the usual reading: Crosswork does not send webhooks to you. Workflow
Manager receives them from your systems and can start a workflow in response. Outbound flow is telemetry
streaming to a destination you configure, not HTTP callbacks.
checked: '2026-08-19'