Quanergy · AsyncAPI Specification
Quanergy Qortex Dtc Events
Version
View Spec
View on GitHub
CompanyLiDARSensorsPhysical SecurityPerimeter SecurityPerceptionCrowd ManagementIndustrial AutomationInternet of ThingsgRPCStreamingHardwareAsyncAPIEvents
AsyncAPI Specification
generated: '2026-08-05'
method: derived
source: https://downloads.quanergy.com/qortex/Qortex-API-Reference-RevA-120824.pdf
x-evidence:
fetched: '2026-08-05'
url: https://downloads.quanergy.com/qortex/Qortex-API-Reference-RevA-120824.pdf
http_status: 200
document: QORTEX DTC for Q-Track API Reference, QPN 96-00134 Rev A
api: QORTEX DTC API
asyncapi_spec_published: false
webhooks_published: false
x-note: >-
Quanergy publishes NO AsyncAPI document and NO webhook catalogue, so no `AsyncAPI` or
`Webhooks` pointer is wired in apis.yml — this file is an honest catalogue of the event surface
the API Reference documents, not a specification we authored on the provider's behalf. QORTEX
DTC's eventing is not HTTP callbacks: it is (a) raw TCP fan-out publishers the consumer dials
into, and (b) a gRPC bidirectional PubSub stream. Both are pull-side subscriptions on the
customer's own network.
surfaces:
- kind: tcp-publisher
protocol: TCP (raw socket)
description: >-
The QORTEX DTC server serialises its processing output onto configurable TCP ports. Any
number of third-party host applications may subscribe. Encodings are protobuf (recommended),
json, xml or ndjson; `none` disables the channel and is the shipped default. Changing an
encoding requires a server restart.
configuration: '`<TCPPublishers>` section of settings.xml, or the SetSettings gRPC method'
security: >-
When Security mode is enabled the payloads are AES-256 encrypted with the key obtained from
the `Q-Token` header, and `<AddDataSize>true</AddDataSize>` must be set on the publisher.
channels:
- name: trackable list
port: 17161
listener_topic: qtrack
payload: QTrackableArray
rate: 'capped by <TrackerPipeline><frequency> (Hz); cannot exceed LiDAR spin rate for a single-sensor area'
purpose: >-
Detailed position, size, velocity, acceleration, heading and classification for every
tracked person/vehicle.
- name: zone list
port: 17172
listener_topic: qzone
payload: QZoneArray
rate: 'per frame, typically 10 Hz'
levels:
0: publishes zones with the list of objects inside
1: 'publishes on trackable state change — Enter, Exit, Appear, Disappear'
2: 'as level 1, additionally gated by the zone event configuration'
purpose: Perimeter breach and occupancy events for alarm handling and PTZ slaving.
- name: counter line object list
port: 17163
payload: counter line object list message
purpose: >-
Counts and timestamps of trackables crossing a configured counter line in the FORWARD or
BACKWARD direction. A separate counter-line detection message is also documented, along
with a zero-count variant and an NDJSON variant.
- name: sensor health / state list
port: 17168
listener_topic: qsensorstate
payload: SensorStateList
rate: '0.2 to 0.05 Hz (every 5 to 20 seconds); slower as more sensors are polled'
purpose: 'Per-sensor CONNECTED/DISCONNECTED, masking status and SNMP telemetry (temperature, frame rate, error code).'
- name: point cloud
port: 17173
listener_topic: pointcloud
- name: state
port: 17178
listener_topic: qstate
- name: configuration client data
port: 17175
audience: QORTEX DTC configuration client
- name: monitor client data
port: 17176
audience: QORTEX DTC monitor client
- kind: grpc-pubsub
protocol: gRPC bidirectional streaming
port: 17177
method: 'rpc PubSub(stream PubSubRequest) returns (stream PubSubResponse) {}'
description: >-
A client subscribes by topic; the server then pushes state changes to every subscribed
client. Documented triggers include starting/stopping a location, a sensor spinning up or
disconnecting, recording start/stop, zone add/edit/remove, playback start/complete, sensor
status (temperature, error code), and licence state.
topics:
- name: UNKNOWN
value: 0
note: reserved, to avoid the default enum value
- name: CONNECTION_STATUS
value: 1
note: >-
Streaming type; only meaningful for the C++ client, used to notify that a connection was
established or interrupted. Other clients receive blank messages.
- name: SERVER_MESSAGE
value: 2
note: 'General messages — server error, replay status, etc. Delivered to monitor clients as well as config clients.'
- name: SERVER_STATE
value: 3
note: 'Play status changes — start/stop/pause/resume, live/playback position. Config clients only.'
- name: SENSOR_STATE
value: 4
note: 'Published on a fatal SNMP-field error or when a sensor changes to disconnected. Config clients only.'
- name: ZONE_STATE
value: 5
note: Published when a zone is created, updated or deleted. Config clients only.
- name: JSON_PUSH
value: 6
note: Used for pushing notifications from the server in JSON format.
- kind: grpc-push-notification
group: Security
description: >-
Server-initiated JSON notifications pushed to one or all clients, carried in the
`{"group": "...", "command": {"id": "...", "params": {...}}}` envelope.
events:
- id: State
params: {secured: 'v2 | none', pwd_change: 'true (only when an admin changed the password)'}
note: '`v2` means secured under version 2; `none` means not secured at all.'
- id: Expiring
params: {hours: 'hours until the account expires'}
scope: one client
- id: Expired
params: {}
scope: one client
- kind: outbound-notification
description: >-
The product overview states the object list "provides a basis for further action outside of
QORTEX DTC, such as the notification of external alarm systems via LAN, TCP, UDP, and HTTP
GET", and the Rules API supports a `NetworkAction` rule type. No catalogue of these outbound
calls — payloads, headers, retry behaviour — is published, so they are recorded here as a
named capability only.
documented_detail: none
consumption_tooling:
- name: qortex_listener
note: 'Reference C++ listener; handles Digest auth and AES-256 decryption. See cli/quanergy-cli.yml.'
- name: netcat / PuTTY
note: >-
The reference sanctions `nc x.x.x.x 171xx` to confirm a publisher is live. Works only for the
human-readable JSON and XML encodings, not for protobuf.
gaps:
- No AsyncAPI document for a surface that is entirely event-driven.
- No HTTP webhook catalogue, so there is no way to receive events without holding a socket open.
- >-
The counter-line, point-cloud and `qstate` payload schemas are not printed in the reference the
way the trackable, zone and sensor-state messages are.
- >-
The `NetworkAction` rule type and the "HTTP GET to external alarm systems" capability are named
but never specified.
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.
Call it yourself
curl for this page
This AsyncAPI spec
curl "https://apis.io/api/v1/asyncapis/quanergy-qortex-dtc-events"
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 form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.