Skip to content

WebSocket Event Reference

Every message on the Rhombus event WebSocket's change destination: the envelope, policy alert changes, other entity changes, STOMP headers, change types and delivery guarantees, generated from the AsyncAPI specification.

On this page

This page lists the messages a subscriber to /topic/change/{orgUuid} receives. It is generated from the event WebSocket's AsyncAPI specification; the policy alert fields and their enums come from the same schemas as the API Reference. To connect and subscribe, see the WebSocket overview and WebSocket authentication.

Delivery

  • At most once. Messages aren't acknowledged, stored or replayed. Anything published while you are disconnected is lost, and a message the service can't process within 30 seconds of publication is dropped. After a reconnect, read what you missed from the REST API; Build an event pipeline shows how.
  • Filtered by role. A connection receives only what its credential's role can see. A policy alert is delivered when the role can access the alert's device or location; an alert with neither goes only to full-access roles. A role limited to some locations or devices receives only the entity types the server can check against them. See What a connection receives.
  • No ordering guarantee. Order events by their timestamps, not by arrival.
  • Frames. The body is JSON, although the frame's content-type header says text/plain;charset=UTF-8. Key order varies, and null fields are left out. UUIDs are strings, including those in the targetUsers and targetRoles arrays that some messages carry.
  • Not every change is sent. Many entity types send a short REFRESH with no update; read the entity from the REST API when you need its state. Seek points and bounding boxes for live video aren't sent on this destination.
  • New values appear without notice: new entity types, change types, fields and enum values. Ignore what you don't recognize.

Change types

typeMeaningupdate
CREATESomething new, such as a policy alertUsually the whole object
UPDATEAn existing object changedThe new state, the changed fields, or nothing
REFRESHThe object changed; read it again if you need its stateUsually none
DELETEThe object was removedNone

Messages you receive

MessageSummary
PolicyAlertChangeEventA new policy alert, or a change to one.
ChangeEventAny other change: device state, sensors, access control, policies, clips and more.

PolicyAlertChangeEvent

A new policy alert, or a change to one.

A CREATE carries the whole alert in update; it is sent once, when the alert is first stored, so fields that Rhombus fills in later (such as finalized and clip locations) can still be at their initial values. Read the alert from the REST API when you need its final state. UPDATE and DELETE carry only entityUuid. DELETE messages are limited to one per organization every 10 minutes, so don't rely on them to track every removed alert. A policy alert is delivered only to a role that can access the alert's device or location; an alert with neither goes only to full-access roles.

Headers

ORG_UUIDstring

The organization.

ENTITY_TYPEstring

Same as the body's entity.

ENTITY_UUIDstring

Same as the body's entityUuid, when set.

DEVICE_UUIDstring

Same as the body's deviceUuid, when set.

Body

entityenum<string>required

Available options: POLICY_ALERT

typeenum<string>required

CREATE: a new alert, with the whole alert in update. UPDATE: the alert was linked to an alarm-monitoring threat case (no update). DELETE: the alert was removed or archived (no update).

Available options: CREATE, UPDATE, DELETE

entityUuidstring

The alert's UUID on UPDATE and DELETE. Absent on CREATE: use update.uuid.

updateobject

The requested policy alert

Show child attributes
alertMonitoringThreatCaseUuidstring<RUUID>

base 64 (url-safe) uuid string

Example: "AAAAAAAAAAAAAAAAAAAAAA"

alertMonitoringVerifiedboolean
archivedboolean
clientTypeenum<string>

Available options: PARTNER_DEVELOPER, DEVELOPER, DOOR_STATION, INTERNAL_SALESFORCE, TVOS, WINDOWS, LINUX, KIOSK, KEYPAD, SQUARE, KISI, OPENPATH, TOAST, BOULEVARD, BRIVO, EXECUTABLE, HALO, SALTO, BUTTERFLYMX, GENEA, PRODATAKEY, ENVOY, AMT, PIMLOC, PLACEOS, OMNIALERT, FLIC, SHELLY_DEVICE_EVENT, NINEONEONECELLULAR, HONEYWELL_ELEMENTS, HONEYWELL_ONGUARD, HONEYWELL_NETBOX, TRITON, CHATBOT, SIGNATURE_API, INCOMING_WEBHOOK, UNKNOWN

clipLocationMapobject
Show child attributes
regionstring
clipLocationMapV2object
delayedProcessingboolean
deletedboolean
durationSecinteger<int32>
finalizedboolean
locationUuidstring<RUUID>

base 64 (url-safe) uuid string

Example: "AAAAAAAAAAAAAAAAAAAAAA"

notificationSentboolean
orgUuidstring<RUUID>

base 64 (url-safe) uuid string

Example: "AAAAAAAAAAAAAAAAAAAAAA"

policyAlertTriggersenum<string>[]
policyUuidstring<RUUID>

base 64 (url-safe) uuid string

Example: "AAAAAAAAAAAAAAAAAAAAAA"

ruleUuidstring<RUUID>

base 64 (url-safe) uuid string

Example: "AAAAAAAAAAAAAAAAAAAAAA"

savedboolean
serverReceivedAtMsinteger<int64>
sharedboolean
subLocationsHierarchyKeystring<SubLocationsHierarchyKey>

A sequence of one or more base 64 (url-safe) uuid substrings. These substrings are separated by dots (.).

Pattern: ^([A-Za-z0-9\-_]{22})([.][A-Za-z0-9\-_]{22})*$

Example: "AAAAAAAAAAAAAAAAAAAAAA.AAAAAAAAAAAAAAAAAAAAAA.AAAAAAAAAAAAAAAAAAAAAA"

textDescriptionstring

Natural language description of the alert

thumbnailLocationobject
Show child attributes
regionstring
thumbnailLocationV2string
timestampMsinteger<int64>
typeenum<string>

Available options: POLICY_ALERT_V2, ACCESS_CONTROLLED_DOOR_POLICY_ALERT

uuidstring<RUUID>

base 64 (url-safe) uuid string

Example: "AAAAAAAAAAAAAAAAAAAAAA"

One of:

Show Policy Alert V 2 variant
alertMonitoringThreatCaseUuidstring<RUUID>

base 64 (url-safe) uuid string

Example: "AAAAAAAAAAAAAAAAAAAAAA"

alertMonitoringVerifiedboolean
archivedboolean
clientTypeenum<string>

Available options: PARTNER_DEVELOPER, DEVELOPER, DOOR_STATION, INTERNAL_SALESFORCE, TVOS, WINDOWS, LINUX, KIOSK, KEYPAD, SQUARE, KISI, OPENPATH, TOAST, BOULEVARD, BRIVO, EXECUTABLE, HALO, SALTO, BUTTERFLYMX, GENEA, PRODATAKEY, ENVOY, AMT, PIMLOC, PLACEOS, OMNIALERT, FLIC, SHELLY_DEVICE_EVENT, NINEONEONECELLULAR, HONEYWELL_ELEMENTS, HONEYWELL_ONGUARD, HONEYWELL_NETBOX, TRITON, CHATBOT, SIGNATURE_API, INCOMING_WEBHOOK, UNKNOWN

clipLocationMapobject
Show child attributes
regionstring
clipLocationMapV2object
delayedProcessingboolean
deletedboolean
durationSecinteger<int32>
finalizedboolean
locationUuidstring<RUUID>

base 64 (url-safe) uuid string

Example: "AAAAAAAAAAAAAAAAAAAAAA"

notificationSentboolean
orgUuidstring<RUUID>

base 64 (url-safe) uuid string

Example: "AAAAAAAAAAAAAAAAAAAAAA"

policyAlertTriggersenum<string>[]
policyUuidstring<RUUID>

base 64 (url-safe) uuid string

Example: "AAAAAAAAAAAAAAAAAAAAAA"

ruleUuidstring<RUUID>

base 64 (url-safe) uuid string

Example: "AAAAAAAAAAAAAAAAAAAAAA"

savedboolean
serverReceivedAtMsinteger<int64>
sharedboolean
subLocationsHierarchyKeystring<SubLocationsHierarchyKey>

A sequence of one or more base 64 (url-safe) uuid substrings. These substrings are separated by dots (.).

Pattern: ^([A-Za-z0-9\-_]{22})([.][A-Za-z0-9\-_]{22})*$

Example: "AAAAAAAAAAAAAAAAAAAAAA.AAAAAAAAAAAAAAAAAAAAAA.AAAAAAAAAAAAAAAAAAAAAA"

textDescriptionstring

Natural language description of the alert

thumbnailLocationobject
Show child attributes
regionstring
thumbnailLocationV2string
timestampMsinteger<int64>
typeenum<string>

Available options: POLICY_ALERT_V2, ACCESS_CONTROLLED_DOOR_POLICY_ALERT

uuidstring<RUUID>

base 64 (url-safe) uuid string

Example: "AAAAAAAAAAAAAAAAAAAAAA"

airQualityIndexinteger<int32>
airQualityIndexThresholdinteger<int32>
alertingDwellEventsobject[]
Show child attributes
activityenum<string>

Available options: SOUND_LOUD, SOUND_GUN_SHOT, TAMPER, VISUAL_TAMPER, MOTION_TAMPER, MOTION, MOTION_HUMAN, MOTION_CAR, MOTION_ANIMAL, MOTION_PACKAGE, PACKAGE_ARRIVED, PACKAGE_DEPARTED, FACE, FACE_IDENTIFIED, FACE_UNIDENTIFIED, FACE_BLACKLISTED, FACE_ALERT, POSE_ANOMALOUS, POSE_FALL, LICENSEPLATE, LICENSEPLATE_IDENTIFIED, LICENSEPLATE_UNIDENTIFIED, LICENSEPLATE_ALERT, LICENSEPLATE_BLACKLISTED, LICENSEPLATE_TRUSTED, PEOPLECOUNT_HIGH, PEOPLECOUNT_HIGH_RESET, PEOPLECOUNT_LOW, PEOPLECOUNT_LOW_RESET, HUMAN_ENTER, HUMAN_EXIT, CAR_ENTER, CAR_EXIT, TEMPERATURE_EXCEEDED_HIGH, TEMPERATURE_EXCEEDED_LOW, HUMIDITY_EXCEEDED_HIGH, HUMIDITY_EXCEEDED_LOW, PM25_EXCEEDED_HIGH, TVOC_EXCEEDED_HIGH, ETOH_EXCEEDED_HIGH, IAQ_EXCEEDED_HIGH, CO2_EXCEEDED_HIGH, CO2_EXCEEDED_LOW, PROBE_TEMPERATURE_EXCEEDED_HIGH, PROBE_TEMPERATURE_EXCEEDED_LOW, PROBE_DISCONNECTED, PROBE_CONNECTED, HEAT_INDEX_EXCEEDED_HIGH, PRESSURE_EXCEEDED_HIGH, PRESSURE_EXCEEDED_LOW, PM10_EXCEEDED_HIGH, PM40_EXCEEDED_HIGH, PM100_EXCEEDED_HIGH, VOC_IDX_EXCEEDED_HIGH, NOX_IDX_EXCEEDED_HIGH, FORMALDEHYDE_EXCEEDED_HIGH, CARBON_MONOXIDE_EXCEEDED_HIGH, AQI_EXCEEDED_HIGH, DOOR_AJAR, DOOR_OPENED, DOOR_CLOSED, BUTTON_SINGLE_PRESSED, BUTTON_DOUBLE_PRESSED, BUTTON_LONG_PRESSED, TAG_ARRIVED, TAG_DEPARTED, TAG_MOVED, TAG_POSITIONING_CHANGED, TAG_BOUNDARY_INGRESS, TAG_BOUNDARY_EGRESS, TAG_PANIC, BADGE_AUTHORIZED, BADGE_UNAUTHORIZED, BADGE_UNAUTHORIZED_V2, BADGE_AJAR, BADGE_MANUAL, BADGE_FORCED_OPEN, BADGE_LOCKDOWN, BADGE_REQUEST_TO_EXIT, BADGE_DURESS, BADGE_SECURITY_BREACH, BADGE_TAMPER, BADGE_FACE_MISMATCH, POS_ORDER, GUN_DETECT_EVENT, IOT_SOUND_AGGRESSION, IOT_SOUND_HELP, IOT_AIR_CO, IOT_AIR_CO2, IOT_AIR_MASKING, IOT_AIR_THC, IOT_AIR_VAPE, IOT_AIR_VOC, IOT_AIR_TEMP, IOT_TAMPER, IOT_GUNSHOT, IOT_BUTTON_SINGLE_CLICK, IOT_BUTTON_DOUBLE_CLICK, IOT_BUTTON_HOLD, IOT_PANIC_BUTTON_TRIGGERED, AUDIO_SOUND_SIGNIFICANT, AUDIO_SOUND_LOUD, AUDIO_SOUND_ABUSIVE, AUDIO_SOUND_GREETING, AUDIO_SOUND_HELP, AUDIO_SOUND_GUN, AUDIO_SOUND_GLASS_BREAK, AUDIO_SOUND_ALARM_SMOKE_FIRE, AUDIO_SOUND_ALARM_CARBON_MONOXIDE, AUDIO_SOUND_SIREN, CLIMATE_VOC, CLIMATE_VAPE, CLIMATE_SMOKE, CLIMATE_THC, CLIMATE_CO2, CLIMATE_ETOH, CLIMATE_PM25, CLIMATE_IAQ, CLIMATE_LEAK, SOUND_AGGRESSION, SOUND_HELP, AIR_CO, AIR_CO2, AIR_MASKING, AIR_THC, AIR_VAPE, AIR_VOC, MASK_MISSING, HELMET_MISSING, GLOVES_MISSING, PIR_OCCUPIED, PIR_MOVEMENT, PIR_VACANT, CUSTOM, VISITOR_ARRIVED, VISITOR_DEPARTED, AC_DR_CONNECTED, AC_DR_DISCONNECTED, AC_DPI_DOOR_OPEN, AC_DPI_DOOR_CLOSED, AC_DPI_DOOR_AJAR, AC_DPI_DOOR_FORCED_OPEN, AC_DSR_UNLOCKED, AC_DSR_LOCKED, AC_DB_TRIGGERED, AC_PANIC_BUTTON_TRIGGERED, AC_REMOTE_UNLOCK, AC_BADGE_AUTHORIZED, AC_BADGE_UNAUTHORIZED, AC_BADGE_FACE_MISMATCH, AC_LOCKDOWN_ACTIVATED, AC_LOCKDOWN_DEACTIVATED, AC_LOCKDOWN_PLAN_SWITCHED, AC_TAMPER_PROX, AC_TAMPER_ACCEL, AC_TAMPER_SWITCH, AC_GR_ACTIVE, AC_GR_INACTIVE, AC_GI_ACTIVE, AC_GI_INACTIVE, AC_REX_ACTIVE, AC_REX_INACTIVE, AC_APERIO_DEVICE_DISCONNECTED, AC_APERIO_DEVICE_CONNECTED, AC_APERIO_DEVICE_REBOOT, AC_APERIO_DEVICE_TAMPER, AC_APERIO_LOW_BATTERY, AC_APERIO_FLAT_BATTERY, AC_APERIO_OK_BATTERY, AC_SCHLAGE_GW_DISCONNECTED, AC_SCHLAGE_GW_CONNECTED, AC_SCHLAGE_APM_DISCONNECTED, AC_SCHLAGE_APM_CONNECTED, AC_SCHLAGE_LOW_BATTERY, AC_SCHLAGE_CRITICAL_BATTERY, AC_SCHLAGE_OK_BATTERY, POWER_SWITCH_BATTERY, POWER_SWITCH_PRIMARY, AI_SEARCH_MATCH, AI_SEARCH_MATCH_PERSON_SMOKING, AI_SEARCH_MATCH_PERSON_ON_PHONE, AI_SEARCH_MATCH_PERSON_FALLING, CUSTOM_LLM_BOOLEAN_TRUE, CUSTOM_LLM_BOOLEAN_FALSE, CUSTOM_LLM_THRESHOLD_EXCEEDED_LOW, CUSTOM_LLM_THRESHOLD_EXCEEDED_HIGH, ALM_AUTHORITIES_CONTACTED, ALM_MONITORING_ENABLED, ALM_MONITORING_DISABLED, ALM_MONITORING_SETTINGS_CHANGE, ALM_THREAT_CASE_CLOSED, ALM_THREAT_DETECTED, ALM_MONITORING_EVENT_DETECTED, ROBOT_DOG_DETECTED, ROBOT_ARRIVED_AT_WAYPOINT, ROBOT_ARRIVED_AT_POSE, ROBOT_WAITING_AT_POSE, ROBOT_MANUAL_CMD_VEL, ROBOT_MANUAL_ACTION, ROBOT_MANUAL_POSTURE, ROBOT_NAVIGATE_TO_POSE_START, ROBOT_NAVIGATE_TO_POSE_END, ROBOT_NAVIGATE_TO_HOME_START, ROBOT_NAVIGATE_TO_HOME_END, ROBOT_NAVIGATE_TO_WAYPOINT_START, ROBOT_NAVIGATE_TO_WAYPOINT_END, ROBOT_ROUTE_RUN_START, ROBOT_ROUTE_RUN_END, ROBOT_LOW_BATTERY_DOCKING, ROBOT_IDLE_DOCKING, ROBOT_EMERGENCY, LOITER_HUMAN, INACTIVITY_HUMAN, INACTIVITY_CAR, GROUP_ENTRY, ONGUARD_BADGE_AUTHORIZED, ONGUARD_BADGE_ANOMALY, ONGUARD_NO_ENTRY_MADE, ELEMENTS_BADGE_AUTHORIZED, ELEMENTS_BADGE_ANOMALY, ELEMENTS_NO_ENTRY_MADE, NETBOX_BADGE_AUTHORIZED, NETBOX_BADGE_ANOMALY, NETBOX_NO_ENTRY_MADE, THERMAL_TEMPERATURE_ALARM, THERMAL_TEMPERATURE_WARNING, THERMAL_FIRE_DETECTED, THERMAL_SMOKING_DETECTED, THERMAL_FIRE_VERIFIED, THERMAL_HEAT_NO_THREAT, THERMAL_VISUAL_HOTSPOT, THERMAL_VISUAL_HEAT_RISE, THERMAL_VISUAL_WARM_BODY, UNKNOWN

deviceLabelsstring[]
deviceUuidstring<RUUID>

base 64 (url-safe) uuid string

Example: "AAAAAAAAAAAAAAAAAAAAAA"

durationSecinteger<int32>
dwellStartTimeMsinteger<int64>
locationLabelsstring[]
locationUuidstring<RUUID>

base 64 (url-safe) uuid string

Example: "AAAAAAAAAAAAAAAAAAAAAA"

orgUuidstring<RUUID>

base 64 (url-safe) uuid string

Example: "AAAAAAAAAAAAAAAAAAAAAA"

regionUuidstring<RUUID>

base 64 (url-safe) uuid string

Example: "AAAAAAAAAAAAAAAAAAAAAA"

subLocationsHierarchyKeystring<SubLocationsHierarchyKey>

A sequence of one or more base 64 (url-safe) uuid substrings. These substrings are separated by dots (.).

Pattern: ^([A-Za-z0-9\-_]{22})([.][A-Za-z0-9\-_]{22})*$

Example: "AAAAAAAAAAAAAAAAAAAAAA.AAAAAAAAAAAAAAAAAAAAAA.AAAAAAAAAAAAAAAAAAAAAA"

thumbnailLocationstring
thumbnailUristring
timestampMsinteger<int64>
trackIdinteger<int32>
alertingEventFacesobject[]
Show child attributes
faceIdstring
faceNamestring
imageS3Bucketstring
imageS3Keystring
imageS3Regionstring
labelsstring[]
personUuidstring<RUUID>

base 64 (url-safe) uuid string

Example: "AAAAAAAAAAAAAAAAAAAAAA"

alertingEventVehiclesobject[]
Show child attributes
imageS3Bucketstring
imageS3Keystring
imageS3Regionstring
labelsstring[]
licensePlateNumberstring
vehicleNamestring
alertingTrackIdsinteger<int32>[]
cdstring

Custom activity display description, maximum 100 characters

cdnstring

Custom activity display name, maximum 32 characters

ch2oPpbnumber<float>
ch2oPpbThresholdnumber<float>
clipLocationobject
Show child attributes
regionstring
cllmBooleanValueboolean
cllmCheckConditionobject
Show child attributes
operatorenum<string>

Available options: GT, LT, LTE, GTE, EQ, CONTAINS

valuestring
cllmIntegerValueinteger<int32>
cllmPromptTypeEnumenum<string>

Available options: COUNT, PERCENT, BOOLEAN, TEXT

cllmPromptUuidstring<RUUID>

base 64 (url-safe) uuid string

Example: "AAAAAAAAAAAAAAAAAAAAAA"

co2number<float>
co2Ppminteger<int32>
co2PpmThresholdinteger<int32>
co2Thresholdnumber<float>
coConcentrationnumber<double>
coConcentrationThresholdnumber<double>
componentUuidstring<RUUID>

base 64 (url-safe) uuid string

Example: "AAAAAAAAAAAAAAAAAAAAAA"

deviceFacetUuidstring<DeviceFacetUuid>

RUUID with optional appended facet information

Example: "AAAAAAAAAAAAAAAAAAAAAA.v0"

deviceTypeenum<string>

Available options: BLE_TRACKER, CAMERA, DOOR_SENSOR, ENVIRONMENTAL_SENSOR, OCCUPANCY_SENSOR, AUDIO_GATEWAY, EXECUTABLE, BADGE_READER, DOOR_CONTROLLER, BLE_BUTTON, IO_BOARD, ENVIRONMENTAL_GATEWAY, NVR, ROBOT, UNKNOWN

deviceUuidstring<RUUID>

base 64 (url-safe) uuid string

Example: "AAAAAAAAAAAAAAAAAAAAAA"

egressBoundaryDevicesstring<RUUID>[]
ethanolnumber<float>
ethanolThresholdnumber<float>
heatIndexDegFnumber<double>
heatIndexDegFThresholdnumber<double>
humidityPercent1616integer<int32>
humidityPercentThreshold1616integer<int32>
humidityPermyriadinteger<int32>
humidityThresholdPermyriadinteger<int32>
iaqnumber<float>
iaqThresholdnumber<float>
inactivityThresholdMsinteger<int64>

For INACTIVITY_* alerts, the inactivity threshold configured on the region that fired, in milliseconds. This is the configured threshold, not the elapsed length of the inactivity window.

ingressBoundaryDevicesstring<RUUID>[]
leakDetectedboolean
maxLufinteger<int32>
noxIdxnumber<float>
noxIdxThresholdnumber<float>
numHumansinteger<int32>
peopleCountHighThresholdinteger<int32>
peopleCountLowThresholdinteger<int32>
pm10p0number<float>
pm10p0Thresholdnumber<float>
pm1p0number<float>
pm1p0Thresholdnumber<float>
pm25number<float>
pm25Thresholdnumber<float>
pm4p0number<float>
pm4p0Thresholdnumber<float>
pressurenumber<float>
pressureThresholdnumber<float>
probeTempCnumber<float>
probeTempCThresholdnumber<float>
probeTempThresholdnumber<float>
relHumidnumber<float>
relHumidThresholdnumber<float>
tamperByMovementChangenumber<float>
tamperedboolean
tempCnumber<float>
tempCThresholdnumber<float>
tempProbePresentboolean
temperatureCelsius1616integer<int32>
temperatureCelsiusThreshold1616integer<int32>
temperaturePermyriadinteger<int32>
temperatureThresholdPermyriadinteger<int32>
thcPercentnumber<float>
thcPercentThresholdnumber<float>
tvocnumber<float>
tvocThresholdnumber<float>
vapeDetectedboolean
vapeSmokePercentnumber<float>
vapeSmokePercentThresholdnumber<float>
vocIdxnumber<float>
vocIdxThresholdnumber<float>
Show Access Controlled Door Policy Alert variant
alertMonitoringThreatCaseUuidstring<RUUID>

base 64 (url-safe) uuid string

Example: "AAAAAAAAAAAAAAAAAAAAAA"

alertMonitoringVerifiedboolean
archivedboolean
clientTypeenum<string>

Available options: PARTNER_DEVELOPER, DEVELOPER, DOOR_STATION, INTERNAL_SALESFORCE, TVOS, WINDOWS, LINUX, KIOSK, KEYPAD, SQUARE, KISI, OPENPATH, TOAST, BOULEVARD, BRIVO, EXECUTABLE, HALO, SALTO, BUTTERFLYMX, GENEA, PRODATAKEY, ENVOY, AMT, PIMLOC, PLACEOS, OMNIALERT, FLIC, SHELLY_DEVICE_EVENT, NINEONEONECELLULAR, HONEYWELL_ELEMENTS, HONEYWELL_ONGUARD, HONEYWELL_NETBOX, TRITON, CHATBOT, SIGNATURE_API, INCOMING_WEBHOOK, UNKNOWN

clipLocationMapobject
Show child attributes
regionstring
clipLocationMapV2object
delayedProcessingboolean
deletedboolean
durationSecinteger<int32>
finalizedboolean
locationUuidstring<RUUID>

base 64 (url-safe) uuid string

Example: "AAAAAAAAAAAAAAAAAAAAAA"

notificationSentboolean
orgUuidstring<RUUID>

base 64 (url-safe) uuid string

Example: "AAAAAAAAAAAAAAAAAAAAAA"

policyAlertTriggersenum<string>[]
policyUuidstring<RUUID>

base 64 (url-safe) uuid string

Example: "AAAAAAAAAAAAAAAAAAAAAA"

ruleUuidstring<RUUID>

base 64 (url-safe) uuid string

Example: "AAAAAAAAAAAAAAAAAAAAAA"

savedboolean
serverReceivedAtMsinteger<int64>
sharedboolean
subLocationsHierarchyKeystring<SubLocationsHierarchyKey>

A sequence of one or more base 64 (url-safe) uuid substrings. These substrings are separated by dots (.).

Pattern: ^([A-Za-z0-9\-_]{22})([.][A-Za-z0-9\-_]{22})*$

Example: "AAAAAAAAAAAAAAAAAAAAAA.AAAAAAAAAAAAAAAAAAAAAA.AAAAAAAAAAAAAAAAAAAAAA"

textDescriptionstring

Natural language description of the alert

thumbnailLocationobject
Show child attributes
regionstring
thumbnailLocationV2string
timestampMsinteger<int64>
typeenum<string>

Available options: POLICY_ALERT_V2, ACCESS_CONTROLLED_DOOR_POLICY_ALERT

uuidstring<RUUID>

base 64 (url-safe) uuid string

Example: "AAAAAAAAAAAAAAAAAAAAAA"

accessControlUnitUuidstring<RUUID>

base 64 (url-safe) uuid string

Example: "AAAAAAAAAAAAAAAAAAAAAA"

accessControlledDoorUuidstring<RUUID>

base 64 (url-safe) uuid string

Example: "AAAAAAAAAAAAAAAAAAAAAA"

componentUuidstring<RUUID>

base 64 (url-safe) uuid string

Example: "AAAAAAAAAAAAAAAAAAAAAA"

initiatingUsernamestring
originatorEntityNamestring
originatorEntityUuidstring<RUUID>

base 64 (url-safe) uuid string

Example: "AAAAAAAAAAAAAAAAAAAAAA"

originatorTypeenum<string>

Available options: USER, SUPPORT_AUTHORITY, API_TOKEN, RULE, COMPONENT_COMPOSITE_EVENT, GUEST_PASS, DEVICE_SERVICE, UNKNOWN

targetUsersstring[]

The users the message is addressed to, as UUID strings. Set only on some messages.

targetRolesstring[]

The roles the message is addressed to, as UUID strings. Set only on some messages.

newAlertjson
{
  "entity": "POLICY_ALERT",
  "type": "CREATE",
  "update": {
    "alertMonitoringVerified": false,
    "clipLocationMap": {},
    "clipLocationMapV2": {},
    "deviceType": "CAMERA",
    "deviceUuid": "ItkwWv1qT7Wy8-pY8KDesw",
    "durationSec": 12,
    "egressBoundaryDevices": [],
    "finalized": false,
    "ingressBoundaryDevices": [],
    "locationUuid": "Rk2pQ7yLT0qX4b1nVt8sJw",
    "notificationSent": false,
    "numHumans": 1,
    "orgUuid": "wEeifGSySTiD228kK7M-Xg",
    "policyAlertTriggers": [
      "MOTION_HUMAN"
    ],
    "policyUuid": "pL0c7YvHQkWm3rN2aB9xCg",
    "ruleUuid": "rU1e9KdLR3uJ5sP0qW2tYg",
    "saved": false,
    "serverReceivedAtMs": 1791367200850,
    "shared": false,
    "textDescription": "Human detected at Front Lobby",
    "timestampMs": 1791367200000,
    "type": "POLICY_ALERT_V2",
    "uuid": "Xq3vT1bKQ2m8c9Zr0aLwYg"
  }
}

ChangeEvent

Any other change: device state, sensors, access control, policies, clips and more.

The generic envelope for every entity except POLICY_ALERT. The shape of update depends on entity; many messages carry none, so treat them as a signal to read the entity from the REST API.

Headers

ORG_UUIDstring

The organization.

ENTITY_TYPEstring

Same as the body's entity.

ENTITY_UUIDstring

Same as the body's entityUuid, when set.

DEVICE_UUIDstring

Same as the body's deviceUuid, when set.

Body

entityenum<string>required

The kind of entity that changed. Filter on it client-side.

Available options: ALARM_MONITORING_LOCATION_SETTINGS, ALARM_MONITORING_LICENSE, DEVICE, LOCATION, POLICY, POLICY_ALERT, POLICY_ADDENDUM, POLICY_PAUSE, USER, CAMERA_USER_CONFIG, ORG, USER_PERMISSION_GROUP, PARTNER_PERMISSION_GROUP, VIDEO_WALL, SHARED_CLIPS, SAVED_CLIPS, SHARED_STREAMS, SPLICED_CLIPS, TIMELAPSE, AUDIT_EVENTS, DIAGNOSTIC_EVENTS, CAMERA_STATE, CLIMATE_STATE, DOOR_STATE, NVR_STATE, OCCUPANCY_STATE, PROXIMITY_STATE, AUDIO_STATE, CAMERA, NVR, DOOR_SENSOR, CLIMATE_SENSOR, PROXIMITY_SENSOR, BOUNDING_BOX, SEEK_POINT, SENSOR_SEEK_POINT, SCHEDULE, FACE_EVENT, DEVICE_SHADOW, THREAT_CASE, THREAT_CASE_REVIEWER, KEYPAD, COMPONENT_DOOR_READER_SHADOW, COMPONENT_DOOR_RELAY_SHADOW, COMPONENT_DOOR_POSITION_INDICATOR_SHADOW, COMPONENT_APERIO_GATEWAY_SHADOW, COMPONENT_APERIO_DOOR_EXT_SHADOW, COMPONENT_SCHLAGE_GATEWAY_SHADOW, COMPONENT_SCHLAGE_DOOR_EXT_SHADOW, COMPONENT_REQUEST_TO_EXIT_SHADOW, COMPONENT_GENERIC_RELAY_SHADOW, COMPONENT_GENERIC_INPUT_SHADOW, COMPONENT_GENERIC_BUTTON_SHADOW, ACCESS_CONTROLLED_DOOR_SHADOW, ACCESS_CONTROLLED_DOOR, ACCESS_CONTROLLED_ELEVATOR_SHADOW, ACCESS_CONTROLLED_ELEVATOR, ACCESS_CONTROLLED_ELEVATOR_LANDING_SHADOW, ACCESS_CONTROLLED_ELEVATOR_LANDING, COMPONENT_SEEKPOINT, ROBOT_SEEKPOINT, VEHICLE_EVENT, DEVICE_INTEGRATION, SHELLY_INTEGRATION, THIRD_PARTY_CAMERA_DISCOVERY, THIRD_PARTY_CAMERA_ASSIGNMENT, THIRD_PARTY_CAMERA_CREDENTIAL, CHATBOT_QUERY, KEYPAD_COMMAND, PRIORITY_DETECTION, LIVE_DETECTION, LIVE_OCCUPANCY, UNKNOWN

entityUuidstring

The entity that changed, as a 22-character base64url UUID. Absent on policy alert CREATE messages.

typeenum<string>required

The kind of change. REFRESH (the default) means the entity changed and carries little or no detail: read it again from the REST API if you need its current state. CREATE and UPDATE usually carry the entity in update; DELETE never does.

Available options: REFRESH, DELETE, CREATE, UPDATE

deviceUuidstring

The device involved, with an optional facet suffix (.v0). Set only on some messages, such as FACE_EVENT.

subLocationsHierarchyKeystring

The sub-location path, as dot-separated location UUIDs. Set only on some alarm-monitoring messages.

targetUsersstring[]

The users the message is addressed to, as UUID strings. Set only on some messages.

targetRolesstring[]

The roles the message is addressed to, as UUID strings. Set only on some messages.

updateobject

The entity's new state or the changed fields. Its shape depends on entity, and it is absent on DELETE, on most REFRESH messages and on some UPDATE messages.

cameraStatejson
{
  "entity": "CAMERA_STATE",
  "entityUuid": "ItkwWv1qT7Wy8-pY8KDesw",
  "type": "UPDATE",
  "update": {
    "connectionStatus": "GREEN",
    "firmwareVersion": "v1.0.1234",
    "healthStatus": "GREEN",
    "locationUuid": "Rk2pQ7yLT0qX4b1nVt8sJw",
    "mediaRegion": "us-west-2",
    "name": "Front Lobby",
    "stateUpdatedTimestampMs": 1791367200000,
    "uuid": "ItkwWv1qT7Wy8-pY8KDesw"
  }
}