AID
The AID (automatic incident detection) app empowers your Integrator-AI system to automatically detect critical roadway events and conditions in real time — helping transportation engineers and operators identify hazards quickly, improve safety, and enhance overall efficiency.
Designed with future growth in mind, AID is built to evolve: as new types of incidents become priorities, we can seamlessly add more detectors — ensuring the system never becomes obsolete and stays ahead of emerging safety needs.

Concepts
Incidents
An incident is a real-world traffic event that our system automatically detects and records because it matches specific conditional rules.
Example: A vehicle is traveling faster than the posted speed limit on a highway.
When this happens, the system creates a "speeding incident" — a complete snapshot that includes:
- Which vehicle it was (unique object ID)
- Its exact location and lane
- The type of vehicle (car, truck, motorcycle, etc.)
- The measured speed
- Date, time, and other key details
It's like having an automatic, detailed incident report generated for every critical event — no manual observation required.
Incident Detector
Each Incident Detector acts as a smart, always-on watchdog that continuously scans camera feeds, LiDAR, radar, or other sensors for one specific type of behavior.
Currently supported detectors include:
- Object : Wrong-way driver — Monitors ramps and mainlines to flag vehicles traveling against traffic flow
- Object : High Speed — Compares vehicle speeds to posted limits
- Object : Low Speed — Flags vehicles traveling too slowly on higher-speed roads (potential hazard or breakdown)
- Object : Loitering — Detects objects that remain stationary in one place for an extended period
- Object : In Zone — Alerts when objects appear in restricted areas (e.g., pedestrians on a highway)
- Object : Path — Detects objects that move in a specific path
- Object : Lane Change — Captures unsafe or prohibited lane changes in restricted zones
- Object : Oversized — Detects vehicles exceeding height, width, or length limits
- Object : Stopped — Identifies vehicles stopped in unsafe locations (e.g., highway shoulders or intersections)
- Intersection : Near miss — Identifies dangerous close calls or conflicts between objects
- Intersection : Red light running — Watches intersections and detects vehicles entering on red
- Intersection : Split Failure — Monitors movements to detect if enough time was given to clear the demand
- Intersection : Jaywalking — Captures pedestrians crossing against the signal or in unsafe ways
- Intersection : Illegal movement — Flags vehicles executing prohibited maneuvers from their current lane
- Intersection : Belated walker — Detects pedestrians who didn't have enough time to clear the crossing before the signal changes to don't-walk
- Intersection : Impeded departure — Monitors vehicles delayed in departing an intersection due to downstream backups or blockages
When any detector's conditions are met, the system instantly creates a full incident record — complete with timestamps, object details, locations, and supporting data — enabling rapid response, detailed analysis, and proactive safety improvements. Some incidents track over time, those will be updated as conditions change. Each incident that is tracked over time will typically contain a log of its own with a history of how it changed over time.
Sinks
Sinks are secure, configurable delivery channels that automatically forward detected incidents to the systems or people who need them most.
Examples:
- Send red light running incidents directly to a citation processing system
- Forward wrong-way alerts to a traffic operations center or state DOT dashboard
- Push critical incidents to email/SMS alerts for responders
Think of sinks as the "export" or "share" buttons — they get the right data to the right people or tools quickly.
Actions
Actions trigger immediate, automated responses the moment an incident is detected — helping prevent escalation, gather evidence, or alert responders.
Common transportation examples:
- Near-miss at an intersection → Automatically save a short video clip from multiple angles so engineers can review what almost happened
- Red light violation → Trigger a still image capture and log it for enforcement
- Wrong-way driver → Activate dynamic message signs ("Wrong Way – Turn Around") or send instant alerts to highway patrol
In short: Actions are the "next steps" the system takes to help prevent crashes, collect evidence, or notify the right people.
User Interface
Status Page
- An incident detector
- Incidents detected for today (click on this number to open the Incident Detector Event Log)
- Type of incident detector
- Create a new incident detector
- Settings


Incident Detector Event Log
- Name of the incident detector for this log
- Date of events shown
- Incident detector type
- Incident detector settings
- Number of events recorded for that day
Individual logged events
- The data in this table will vary by incident detector type
- Some events will contain GPS information. This will be the map icon on the right side of the event right. Clicking on it will open up Google Maps and drop a pin relevant to where that event happened
- Some events will contain recordings of it. This will be the play button on the right. Clicking on this button will open up our Echo View GIS app so that you can view that specific event.
Navigation
- Move to previous day
- Recall a specific day
- Move to the next day
- Goto today
- Manual data prune
- Reports
Actions
- Edit incident detector
- Clone incident detector
- Delete incident detector
Settings
- Enable/disable the app
- Max age for an incident before it's automatically deleted. A value of 0 disables automatic deletion

Data Structure
Object : High Speed
Information on a single object that was detected traveling at a high speed
detector number | ID of the detector that generated this incident |
id array | ID of the incident |
timestamp number | Unix epoch timestamp, in milliseconds, of when the incident started |
recording number | ID of the Echo View GIS recording, if one was generated. 0 if no recording exists, or the recording is still being generated |
type string | Always: object.high-speed |
zone number | ID of the zone the incident detected in. You can query our /api/zones endpoint to get information on the zones. |
object | Information about the object related to the incident |
object.id[] array[number] | ID of the object. A two part ID to help maintain uniqueness local to the Integrator-AI that generated it |
object.type string | Type of the object possible values: unclassified, vehicle, pedestrian, cyclist, animal, railcar, aircraft |
object.classification string | Classification of the object as reported by the sensing device (e.g. car, truck, bus, person, bicycle, etc.). This value is supplied by the sensor, so it does not have a known set of values. If you're sourcing objects from one sensor, then you can refer to that sensor's documentation to see what object classification's it provides as those will be what you find this value set to. |
object.lwh[] array[float,float,float] | An array that contains the size of the object, in meters. This value will be false if not available. The first value is length, then width, then height. For example: "lwh":[5.25, 2.5, 1.9]: would indicate 5.25m for the length, 2.5m for the width, and 1.9m for the height "lwh":false: indicates that size information is not available |
object.description | Additional descriptive information about the object, if available. For example if it was a car then this may contain make, model, color, and license plate number |
log[] array | History of the incident, including the most recent state of it |
log[].timestamp number | Unix epoch timestamp, in milliseconds, of this entry |
log[].position array[lat,lng,alt] | The position of the object when this entry was created. This value will be null if not available. |
log[].heading float | Heading angle, in radians, of the object when this entry was created. 0.0 is north. |
log[].speed float | Speed of the object, in meters per second, when this entry was created |
log[].state string | State of the incident, when this entry was created active - the incident is currently active, or still present clear - the incident has cleared and no longer present |
Object : Low Speed
Information on a single object that was traveling at a low speed
detector number | ID of the detector that generated this incident |
id array | ID of the incident |
timestamp number | Unix epoch timestamp, in milliseconds, of when the incident started |
recording number | ID of the Echo View GIS recording, if one was generated. 0 if no recording exists, or the recording is still being generated |
type string | Always: object.low-speed |
zone number | ID of the zone the incident detected in. You can query our /api/zones endpoint to get information on the zones. |
object | Information about the object related to the incident |
object.id[] array[number] | ID of the object. A two part ID to help maintain uniqueness local to the Integrator-AI that generated it |
object.type string | Type of the object possible values: unclassified, vehicle, pedestrian, cyclist, animal, railcar, aircraft |
object.classification string | Classification of the object as reported by the sensing device (e.g. car, truck, bus, person, bicycle, etc.). This value is supplied by the sensor, so it does not have a known set of values. If you're sourcing objects from one sensor, then you can refer to that sensor's documentation to see what object classification's it provides as those will be what you find this value set to. |
object.lwh[] array[float,float,float] | An array that contains the size of the object, in meters. This value will be false if not available. The first value is length, then width, then height. For example: "lwh":[5.25, 2.5, 1.9]: would indicate 5.25m for the length, 2.5m for the width, and 1.9m for the height "lwh":false: indicates that size information is not available |
object.description | Additional descriptive information about the object, if available. For example if it was a car then this may contain make, model, color, and license plate number |
log[] array | History of the incident, including the most recent state of it |
log[].timestamp number | Unix epoch timestamp, in milliseconds, of this entry |
log[].position array[lat,lng,alt] | The position of the object when this entry was created. This value will be null if not available. |
log[].heading float | Heading angle, in radians, of the object when this entry was created. 0.0 is north. |
log[].speed float | Speed of the object, in meters per second, when this entry was created |
log[].state string | State of the incident, when this entry was created active - the incident is currently active, or still present clear - the incident has cleared and no longer present |
Object : Loitering
Information on a single object that spent too much time in a zone
detector number | ID of the detector that generated this incident |
id array | ID of the incident |
timestamp number | Unix epoch timestamp, in milliseconds, of when the incident started |
recording number | ID of the Echo View GIS recording, if one was generated. 0 if no recording exists, or the recording is still being generated |
type string | Always: object.loitering |
zone number | ID of the zone the incident detected in. You can query our /api/zones endpoint to get information on the zones. |
object | Information about the object related to the incident |
object.id[] array[number] | ID of the object. A two part ID to help maintain uniqueness local to the Integrator-AI that generated it |
object.type string | Type of the object possible values: unclassified, vehicle, pedestrian, cyclist, animal, railcar, aircraft |
object.classification string | Classification of the object as reported by the sensing device (e.g. car, truck, bus, person, bicycle, etc.). This value is supplied by the sensor, so it does not have a known set of values. If you're sourcing objects from one sensor, then you can refer to that sensor's documentation to see what object classification's it provides as those will be what you find this value set to. |
object.lwh[] array[float,float,float] | An array that contains the size of the object, in meters. This value will be false if not available. The first value is length, then width, then height. For example: "lwh":[5.25, 2.5, 1.9]: would indicate 5.25m for the length, 2.5m for the width, and 1.9m for the height "lwh":false: indicates that size information is not available |
object.description | Additional descriptive information about the object, if available. For example if it was a car then this may contain make, model, color, and license plate number |
log[] array | History of the incident, including the most recent state of it |
log[].timestamp number | Unix epoch timestamp, in milliseconds, of this entry |
log[].position array[lat,lng,alt] | The position of the object when this entry was created. This value will be null if not available. |
log[].heading float | Heading angle, in radians, of the object when this entry was created. 0.0 is north. |
log[].speed float | Speed of the object, in meters per second, when this entry was created |
log[].state string | State of the incident, when this entry was created active - the incident is currently active, or still present clear - the incident has cleared and no longer present |
log[].dwell number | Total time occupying the zone up to the time of this entry |
Object : Stopped
Information on a single object that stopped in a zone
detector number | ID of the detector that generated this incident |
id array | ID of the incident |
timestamp number | Unix epoch timestamp, in milliseconds, of when the incident started |
recording number | ID of the Echo View GIS recording, if one was generated. 0 if no recording exists, or the recording is still being generated |
type string | Always: object.stopped |
zone number | ID of the zone the incident detected in. You can query our /api/zones endpoint to get information on the zones. |
object | Information about the object related to the incident |
object.id[] array[number] | ID of the object. A two part ID to help maintain uniqueness local to the Integrator-AI that generated it |
object.type string | Type of the object possible values: unclassified, vehicle, pedestrian, cyclist, animal, railcar, aircraft |
object.classification string | Classification of the object as reported by the sensing device (e.g. car, truck, bus, person, bicycle, etc.). This value is supplied by the sensor, so it does not have a known set of values. If you're sourcing objects from one sensor, then you can refer to that sensor's documentation to see what object classification's it provides as those will be what you find this value set to. |
object.lwh[] array[float,float,float] | An array that contains the size of the object, in meters. This value will be false if not available. The first value is length, then width, then height. For example: "lwh":[5.25, 2.5, 1.9]: would indicate 5.25m for the length, 2.5m for the width, and 1.9m for the height "lwh":false: indicates that size information is not available |
object.description | Additional descriptive information about the object, if available. For example if it was a car then this may contain make, model, color, and license plate number |
log[] array | History of the incident, including the most recent state of it |
log[].timestamp number | Unix epoch timestamp, in milliseconds, of this entry |
log[].position array[lat,lng,alt] | The position of the object when this entry was created. This value will be null if not available. |
log[].heading float | Heading angle, in radians, of the object when this entry was created. 0.0 is north. |
log[].speed float | Speed of the object, in meters per second, when this entry was created |
log[].state string | State of the incident, when this entry was created active - the incident is currently active, or still present clear - the incident has cleared and no longer present |
Object : Oversized
Information on a single object that is oversized and detected in a zone
detector number | ID of the detector that generated this incident |
id array | ID of the incident |
timestamp number | Unix epoch timestamp, in milliseconds, of when the incident started |
recording number | ID of the Echo View GIS recording, if one was generated. 0 if no recording exists, or the recording is still being generated |
type string | Always: object.oversized |
zone number | ID of the zone the incident detected in. You can query our /api/zones endpoint to get information on the zones. |
object | Information about the object related to the incident |
object.id[] array[number] | ID of the object. A two part ID to help maintain uniqueness local to the Integrator-AI that generated it |
object.type string | Type of the object possible values: unclassified, vehicle, pedestrian, cyclist, animal, railcar, aircraft |
object.classification string | Classification of the object as reported by the sensing device (e.g. car, truck, bus, person, bicycle, etc.). This value is supplied by the sensor, so it does not have a known set of values. If you're sourcing objects from one sensor, then you can refer to that sensor's documentation to see what object classification's it provides as those will be what you find this value set to. |
object.lwh[] array[float,float,float] | An array that contains the size of the object, in meters. This value will be false if not available. The first value is length, then width, then height. For example: "lwh":[5.25, 2.5, 1.9]: would indicate 5.25m for the length, 2.5m for the width, and 1.9m for the height "lwh":false: indicates that size information is not available |
object.description | Additional descriptive information about the object, if available. For example if it was a car then this may contain make, model, color, and license plate number |
log[] array | History of the incident, including the most recent state of it |
log[].timestamp number | Unix epoch timestamp, in milliseconds, of this entry |
log[].position array[lat,lng,alt] | The position of the object when this entry was created. This value will be null if not available. |
log[].heading float | Heading angle, in radians, of the object when this entry was created. 0.0 is north. |
log[].speed float | Speed of the object, in meters per second, when this entry was created |
log[].state string | State of the incident, when this entry was created active - the incident is currently active, or still present clear - the incident has cleared and no longer present |
Object : In Zone
Information on a single object that is detected in a zone
detector number | ID of the detector that generated this incident |
id array | ID of the incident |
timestamp number | Unix epoch timestamp, in milliseconds, of when the incident started |
recording number | ID of the Echo View GIS recording, if one was generated. 0 if no recording exists, or the recording is still being generated |
type string | Always: object.in-zone |
zone number | ID of the zone the incident detected in. You can query our /api/zones endpoint to get information on the zones. |
object | Information about the object related to the incident |
object.id[] array[number] | ID of the object. A two part ID to help maintain uniqueness local to the Integrator-AI that generated it |
object.type string | Type of the object possible values: unclassified, vehicle, pedestrian, cyclist, animal, railcar, aircraft |
object.classification string | Classification of the object as reported by the sensing device (e.g. car, truck, bus, person, bicycle, etc.). This value is supplied by the sensor, so it does not have a known set of values. If you're sourcing objects from one sensor, then you can refer to that sensor's documentation to see what object classification's it provides as those will be what you find this value set to. |
object.lwh[] array[float,float,float] | An array that contains the size of the object, in meters. This value will be false if not available. The first value is length, then width, then height. For example: "lwh":[5.25, 2.5, 1.9]: would indicate 5.25m for the length, 2.5m for the width, and 1.9m for the height "lwh":false: indicates that size information is not available |
object.description | Additional descriptive information about the object, if available. For example if it was a car then this may contain make, model, color, and license plate number |
log[] array | History of the incident, including the most recent state of it |
log[].timestamp number | Unix epoch timestamp, in milliseconds, of this entry |
log[].position array[lat,lng,alt] | The position of the object when this entry was created. This value will be null if not available. |
log[].heading float | Heading angle, in radians, of the object when this entry was created. 0.0 is north. |
log[].speed float | Speed of the object, in meters per second, when this entry was created |
log[].state string | State of the incident, when this entry was created active - the incident is currently active, or still present clear - the incident has cleared and no longer present |
Object : Lane Change
Information on a single object that changed lanes
detector number | ID of the detector that generated this incident |
id array | ID of the incident |
timestamp number | Unix epoch timestamp, in milliseconds, of when the incident started |
recording number | ID of the Echo View GIS recording, if one was generated. 0 if no recording exists, or the recording is still being generated |
type string | Always: object.lane-change |
from number | Origin zone ID (lane they came from). You can query our /api/zones endpoint to get information on the zones. |
to number | Destination zone ID (lane they went to). You can query our /api/zones endpoint to get information on the zones. |
object | Information about the object related to the incident |
object.id[] array[number] | ID of the object. A two part ID to help maintain uniqueness local to the Integrator-AI that generated it |
object.type string | Type of the object possible values: unclassified, vehicle, pedestrian, cyclist, animal, railcar, aircraft |
object.classification string | Classification of the object as reported by the sensing device (e.g. car, truck, bus, person, bicycle, etc.). This value is supplied by the sensor, so it does not have a known set of values. If you're sourcing objects from one sensor, then you can refer to that sensor's documentation to see what object classification's it provides as those will be what you find this value set to. |
object.lwh[] array[float,float,float] | An array that contains the size of the object, in meters. This value will be false if not available. The first value is length, then width, then height. For example: "lwh":[5.25, 2.5, 1.9]: would indicate 5.25m for the length, 2.5m for the width, and 1.9m for the height "lwh":false: indicates that size information is not available |
object.description | Additional descriptive information about the object, if available. For example if it was a car then this may contain make, model, color, and license plate number |
object.position array[lat,lng,alt] | The position of the object when this entry was created. This value will be null if not available. |
object.heading float | Heading angle, in radians, of the object when this entry was created. 0.0 is north. |
object.speed float | Speed of the object, in meters per second, when this entry was created |
Object : Path
Information on a single object that is detected traveling through a specific path of zones
detector number | ID of the detector that generated this incident |
id array | ID of the incident |
timestamp number | Unix epoch timestamp, in milliseconds, of when the incident started |
recording number | ID of the Echo View GIS recording, if one was generated. 0 if no recording exists, or the recording is still being generated |
type string | Always: object.path |
zone number | ID of the zone the incident detected in. You can query our /api/zones endpoint to get information on the zones. |
object | Information about the object related to the incident |
object.id[] array[number] | ID of the object. A two part ID to help maintain uniqueness local to the Integrator-AI that generated it |
object.type string | Type of the object possible values: unclassified, vehicle, pedestrian, cyclist, animal, railcar, aircraft |
object.classification string | Classification of the object as reported by the sensing device (e.g. car, truck, bus, person, bicycle, etc.). This value is supplied by the sensor, so it does not have a known set of values. If you're sourcing objects from one sensor, then you can refer to that sensor's documentation to see what object classification's it provides as those will be what you find this value set to. |
object.lwh[] array[float,float,float] | An array that contains the size of the object, in meters. This value will be false if not available. The first value is length, then width, then height. For example: "lwh":[5.25, 2.5, 1.9]: would indicate 5.25m for the length, 2.5m for the width, and 1.9m for the height "lwh":false: indicates that size information is not available |
object.description | Additional descriptive information about the object, if available. For example if it was a car then this may contain make, model, color, and license plate number |
path[] array | Path history, in chronological order. Only contains zones targeted by the detector |
path[].timestamp number | Unix epoch timestamp, in milliseconds, of this entry |
path[].position array[lat,lng,alt] | The position of the object when this entry was created. This value will be null if not available. |
path[].heading float | Heading angle, in radians, of the object when this entry was created. 0.0 is north. |
path[].speed float | Speed of the object, in meters per second, when this entry was created |
Object : Wrong Way
Information on a single object that is detected traveling the wrong way
detector number | ID of the detector that generated this incident |
id array | ID of the incident |
timestamp number | Unix epoch timestamp, in milliseconds, of when the incident started |
recording number | ID of the Echo View GIS recording, if one was generated. 0 if no recording exists, or the recording is still being generated |
type string | Always: object.wrong-way |
zone number | ID of the zone the incident detected in. You can query our /api/zones endpoint to get information on the zones. |
object | Information about the object related to the incident |
object.id[] array[number] | ID of the object. A two part ID to help maintain uniqueness local to the Integrator-AI that generated it |
object.type string | Type of the object possible values: unclassified, vehicle, pedestrian, cyclist, animal, railcar, aircraft |
object.classification string | Classification of the object as reported by the sensing device (e.g. car, truck, bus, person, bicycle, etc.). This value is supplied by the sensor, so it does not have a known set of values. If you're sourcing objects from one sensor, then you can refer to that sensor's documentation to see what object classification's it provides as those will be what you find this value set to. |
object.lwh[] array[float,float,float] | An array that contains the size of the object, in meters. This value will be false if not available. The first value is length, then width, then height. For example: "lwh":[5.25, 2.5, 1.9]: would indicate 5.25m for the length, 2.5m for the width, and 1.9m for the height "lwh":false: indicates that size information is not available |
object.description | Additional descriptive information about the object, if available. For example if it was a car then this may contain make, model, color, and license plate number |
path[] array | Path history, in chronological order. Only contains zones targeted by the detector |
path[].timestamp number | Unix epoch timestamp, in milliseconds, of this entry |
path[].position array[lat,lng,alt] | The position of the object when this entry was created. This value will be null if not available. |
path[].heading float | Heading angle, in radians, of the object when this entry was created. 0.0 is north. |
path[].speed float | Speed of the object, in meters per second, when this entry was created |
path[].state string | State of the incident when this entry was created tracking - The first state when the incident is generated, indicating that we are tracking a wrong way driver within our detection system's view tracking-lost - If the object continues out of view of our detection systems, we lose track of it. This state indicates that it was still traveling the wrong way when we lost track of it course-corrected - This state indicates that we detected the object correct their course. Essentially we detected them going the wrong way, but they turned around and began moving the correct way |
Congestion
Information on when congestion has been detected
detector number | ID of the detector that generated this incident |
id array | ID of the incident |
timestamp number | Unix epoch timestamp, in milliseconds, of when the incident started |
recording number | ID of the Echo View GIS recording, if one was generated. 0 if no recording exists, or the recording is still being generated |
type string | Always: congestion |
log[] array | History of the congestion event |
log[].timestamp number | Unix epoch timestamp, in milliseconds, of this entry |
path[].objects[] array[id] | Object ID list of objects that contributed to the congestion event state |
path[].state string | State of the incident when this entry was created building - congestion conditions match indicating that it's building, congestion won't be official until it holds these conditions for the configured time congested - congestion conditions matched for the configured time, so it has officially started clearing - congestion conditions no longer match, so congestion appears to be clearing. if conditions hold for the configured time, will officially report as cleared clear - congestion conditions have cleared, no more congestion |
Intersection : Split Failure
Information on when a split failure was detected for a movement
detector number | ID of the detector that generated the incident |
id number | Unique ID of the incident. Will retain the same ID as you receive updates to this incident |
type string | Always: intersection.split-failure |
timestamp number | Unix epoch timestamp, in milliseconds, of when the incident occurred (light turned red for the movement) |
recording number | Recording ID, if one is available. 0 if no recording is available. Generally a recording may take some additional time, after the incident is generated, to be completed. When the recording is completed, it will populate this field with the recording ID |
gor number | Green occupancy ratio |
ror number | Red occupancy ratio |
movement object | The movement that the split failure occurred with |
movement.heading string | Heading of the movement Values: nb, sb, eb, wb |
movement.type string | Type of movement Values: left, right, through, u-turn, pedestrian |
movement.time number | The total time the movement was permitted, in milliseconds |
Intersection : Near Miss
Information on when a near miss is detected
detector number | ID of the detector that generated the incident |
id number | Unique ID of the incident. Will retain the same ID as you receive updates to this incident |
type string | Always: intersection.near-miss |
timestamp number | Unix epoch timestamp, in milliseconds, of when the incident occurred |
recording number | Recording ID, if one is available. 0 if no recording is available. Generally a recording may take some additional time, after the incident is generated, to be completed. When the recording is completed, it will populate this field with the recording ID |
intersect array[lat,lng,alt] | Intersect position of the near miss, in WGS-84 decimal degrees |
pet number | Post encroachment time, in milliseconds |
severity string | How severe the near miss was Values: unsafe, critical |
leading object | The leading object involved in the near miss. The first object to reach the intersect point |
leading.id array[number] | UUID of the object |
leading.type string | Type of object Values: vehicle, pedestrian, cyclist, unclassified, animal, aircraft, railcar |
leading.classification string | Classification of the object. This is forwarded from the detection system, and what it reports the object as |
leading.lwh array[length,width,height] | Object length, width, and height. In meters |
leading.speed number | Speed of the object, in meters per second, when the near miss was detected |
leading.position array[lat,lng,alt] | Position of the object when the near miss was detected |
leading.heading number | Heading angle, in radians, of the object. 0.0 is north. null if unknown |
trailing object | The trailing object involved in the near miss. The second object to reach the intersect point |
trailing.id array[number] | UUID of the object |
trailing.type string | Type of object Values: vehicle, pedestrian, cyclist, unclassified, animal, aircraft, railcar |
trailing.classification | Classification of the object. This is forwarded from the detection system, and what it reports the object as |
trailing.lwh array[length,width,height] | Object length, width, and height. In meters |
trailing.speed number | Speed of the object, in meters per second, when the near miss was detected |
trailing.position array[lat,lng,alt] | Position of the object when the near miss was detected |
trailing.heading number | Heading angle, in radians, of the object. 0.0 is north. null if unknown |
Intersection : Red Light
Information on when a red light runner was detected
detector number | ID of the detector that generated the incident |
id number | Unique ID of the incident. Will retain the same ID as you receive updates to this incident |
type string | Always: intersection.red-light |
timestamp number | Unix epoch timestamp, in milliseconds, of when the incident occured (entered the intersection on red) |
recording number | Recording ID, if one is available. 0 if no recording is available. Generally a recording may take some additional time, after the incident is generated, to be completed. When the recording is completed, it will populate this field with the recording ID |
object.id array[number] | UUID of the object |
object.type string | Type of object Values: vehicle, pedestrian, cyclist, unclassified, animal, aircraft, railcar |
object.classification string | Classification of the object. This is forwarded from the detection system, and what it reports the object as |
object.lwh array[length,width,height] | Object length, width, and height. In meters |
object.speed number | Speed of the object, in meters per second, when this event was generated |
object.position array[lat,lng,alt] | Position of the object when it was detected entering the middle of the intersection while prohibited. null if not known |
object.heading number | Heading angle, in radians, of the object. 0.0 is north. null if unknown |
object.description object | Additional information about the object if available. The fields available are depend on the object type. null if no additional information is known |
object.description.make (vehicle) string | Make of the vehicle. null or empty if not known |
object.description.model (vehicle) string | Model of the vehicle. null or empty if not known |
object.description.license-plate (vehicle) string | License plate of the vehicle. null or empty if not known |
object.description.year (vehicle) number | Year of the vehicle. null or 0 if not known |
object.description.confidence number | How reliable the description information is. 0.0 is unknown |
movement object | The resolved movement for the object. This is the final movement we were able to resolve the object making while tracking it as it moved through the intersection. It has no impact on what the lanes permit, it's the real movement the object made |
movement.heading string | Heading of the movement Values: nb, sb, eb, wb |
movement.type string | Type of movement Values: left, right, through, u-turn, pedestrian |
movement.certainty string | How confident the resolved movement is. Sometimes we don't have enough information to determine the movement the object actually made, so we make an educated guess Values: realized, unrealized realized - indicates that we had enough information to resolve the actual movement the object made through the intersection unrealized - indicates that we didn't have enough information to resolve the actual movement the object made, so we used what we did know to make an educated guess |
movement.ppt number | Post prohibited time, in milliseconds. When the object was detected entering the middle of the intersection, how long has the movement been prohibited? |
movements[] array | A snapshot of the state of all movements at the intersection at the time that the object entered the middle of the intersection. This gives you a view of what state all the movements were in when they ran the red light |
movements[].heading string | Heading of the movement Values: nb, sb, eb, wb |
movements[].type string | Type of movement Values: left, right, through, u-turn, pedestrian |
movements[].timestamp number | Timestamp of the movements listed state, at the time of the snapshot |
movements[].duration number | Elapsed time, in milliseconds, that this movement was in this state at the time of the snapshot |
movements[].indication string | What indication the movement is showing to travelers Values: none, red, yellow, green, prepare-to-go, flashing-green, flashing-yellow, flashing-red, fya, fra, dont-walk, flashing-dont-walk, walk |
movements[].state string | What state the movement is in Values: protected, permissive, permissive-after-stop, prohibited |
Intersection : Illegal Movement
Information on when an object makes a movement from a lane that doesn't permit that movement (e.g. through movement from a left turn only lane)
detector number | ID of the detector that generated this incident |
id array | ID of the incident |
timestamp number | Unix epoch timestamp, in milliseconds, of when the incident started |
recording number | ID of the Echo View GIS recording, if one was generated. 0 if no recording exists, or the recording is still being generated |
type string | Always: intersection.illegal-movement |
movement.heading string | Heading of the movement the object made (illegally) Values: nb, sb, eb, wb |
movement.type string | Type of movement the object made (illegally) Values: left, right, through, u-turn |
movement.zone number | The zone dictating which movements were permitted. You can query our /api/zones endpoint to get information on the zones. |
object | Information about the object related to the incident |
object.id[] array[number] | ID of the object. A two part ID to help maintain uniqueness local to the Integrator-AI that generated it |
object.type string | Type of the object possible values: unclassified, vehicle, pedestrian, cyclist, animal, railcar, aircraft |
object.classification string | Classification of the object as reported by the sensing device (e.g. car, truck, bus, person, bicycle, etc.). This value is supplied by the sensor, so it does not have a known set of values. If you're sourcing objects from one sensor, then you can refer to that sensor's documentation to see what object classification's it provides as those will be what you find this value set to. |
object.lwh[] array[float,float,float] | An array that contains the size of the object, in meters. This value will be false if not available. The first value is length, then width, then height. For example: "lwh":[5.25, 2.5, 1.9]: would indicate 5.25m for the length, 2.5m for the width, and 1.9m for the height "lwh":false: indicates that size information is not available |
object.description | Additional descriptive information about the object, if available. For example if it was a car then this may contain make, model, color, and license plate number |
object.position array[lat,lng,alt] | The position of the object when this entry was created. This value will be null if not available. |
object.heading float | Heading angle, in radians, of the object when this entry was created. 0.0 is north. |
object.speed float | Speed of the object, in meters per second, when this entry was created |
Reports
Each detector will allow you to generate a report that contains incidents between a time frame that you select.
REST API
/api/app/aid | Settings | GET, PUT | Application configurations |
/api/app/aid/incidents | Raw data | GET, DELETE | Access and management of incidents |
/api/app/aid/incident/detectors | Settings | GET, PUT, POST, DELETE | Management of incident detectors |
/api/app/aid/report/* | Report | GET | Aggregate data with selectable output formats and time bin sizes (where applicable) |
PUT /api/app/aid
PUT /api/app/aid HTTP/1.1
Host: 127.0.0.1
Accept: application/json
Content-Type: application/json
Authorization: bearer 109b893ceb1c26e3e64e9abf7cdd2aa1c0d25f61
{"settings":{"enabled":true,"db":{"limit":{"age":0}}}}
HTTP/1.1 200 OK
Content-Type: application/json
settings.enabled boolean | Enable/disable the AID application |
settings.db.limit.age number | Number of seconds for aid incidents to exist before being automatically deleted. A value of 0 indicates that AID incidents will be retained forever |
GET /api/app/aid
GET /api/app/aid HTTP/1.1
Host: 127.0.0.1
Accept: application/json
Authorization: bearer 109b893ceb1c26e3e64e9abf7cdd2aa1c0d25f61
HTTP/1.1 200 OK
Content-Type: application/json
{"app":{"name":"aid","settings":{"_version_":[2,71],"db":{"limit":{"age":0}},"enabled":false,"incident":{"detectors":{"11":{"actions":[],"id":11,"settings":{"enabled":true,"exceptions":{"stopped":{"movements":[],"speed":0.89}},"filter":["vehicle","pedestrian","cyclist","unclassified"],"name":"red light runner","traffic-signal":16},"sinks":[],"type":"intersection.red-light"},"12":{"actions":[],"id":12,"settings":{"enabled":true,"filter":["pedestrian","pedestrian"],"name":"jaywalking","traffic-signal":16},"sinks":[],"type":"intersection.jaywalking"},"13":{"actions":[],"id":13,"settings":{"enabled":false,"filter":[],"name":"adgasdgasdgasdgasdg","speed":11.18,"zones":[1,2]},"sinks":[],"type":"object.low-speed"},"14":{"actions":[],"id":14,"settings":{"enabled":true,"filter":["vehicle"],"name":"impeded depart","speed":55,"traffic-signal":16},"sinks":[],"type":"intersection.impeded-departure"},"16":{"actions":[],"id":16,"settings":{"enabled":false,"heading":45,"name":"Near miss","pet":{"critical":1500,"unsafe":2000},"speed":4.47,"zones":{"exclusion":[],"search":[]}},"sinks":[],"type":"intersection.near-miss"},"2":{"actions":[],"id":2,"settings":{"enabled":true,"filter":["vehicle","cyclist"],"name":"Speeding NB","speed":6.71,"zones":[24,25,26,28,33]},"sinks":[],"type":"object.high-speed"},"3":{"actions":[],"id":3,"settings":{"enabled":true,"filter":["pedestrian","cyclist"],"name":"VRU NB","zones":[24,25,26,27]},"sinks":[],"type":"object.in-zone"},"4":{"actions":[],"id":4,"settings":{"enabled":false,"filter":["vehicle","pedestrian","cyclist","unclassified"],"length":3.05,"name":"NB Oversized","width":1.22,"zones":[24,25,26,27]},"sinks":[],"type":"object.oversized"},"5":{"actions":[],"id":5,"settings":{"dwell":10000,"enabled":true,"filter":["vehicle","pedestrian","cyclist","unclassified"],"name":"Stopbar loitering","zones":[28,33]},"sinks":[],"type":"object.loitering"},"6":{"actions":[],"id":6,"settings":{"count":2,"duration":10,"enabled":true,"filter":["vehicle","unclassified"],"name":"Congestion NB","speed":15.65,"zones":[33]},"sinks":[{"settings":{"interface":24},"type":"aid-streamer"}],"type":"congestion"},"7":{"actions":[],"id":7,"settings":{"enabled":true,"filter":["vehicle"],"name":"Wrong Way NB","path":[24,25,26]},"sinks":[],"type":"object.wrong-way"},"8":{"actions":[],"id":8,"settings":{"enabled":true,"filter":["vehicle","pedestrian","cyclist","unclassified"],"name":"NB Shoulder Stopped","zones":[28,33]},"sinks":[{"settings":{"interface":24},"type":"aid-streamer"}],"type":"object.stopped"}}},"sequence":{"incident-detectors":17}},"defaults":{"db":{"limit":{"age":0}},"enabled":false,"incident":{"detectors":null,"sinks":null},"sequence":{"incident-detectors":1,"incident-sinks":2}},"manifest":{"description":"A system for detecting specific kinds of incidents","name":"AID (Automatic Incident Detection)","version":"1.0.0"}}}
GET /api/app/aid/incident/detectors
GET /api/app/aid/incident/detectors HTTP/1.1
Host: 127.0.0.1
Accept: application/json
Authorization: bearer 109b893ceb1c26e3e64e9abf7cdd2aa1c0d25f61
HTTP/1.1 200 OK
Content-Type: application/json
{"detectors":[{"actions":[],"id":2,"settings":{"enabled":true,"filter":["vehicle","cyclist"],"name":"Speeding NB","speed":6.71,"zones":[24,25,26,28,33]},"sinks":[],"type":"object.high-speed"},{"actions":[],"id":3,"settings":{"enabled":true,"filter":["pedestrian","cyclist"],"name":"VRU NB","zones":[24,25,26,27]},"sinks":[],"type":"object.in-zone"},{"actions":[],"id":4,"settings":{"enabled":true,"filter":["vehicle","pedestrian","cyclist","unclassified"],"length":3.05,"name":"NB Oversized","width":1.22,"zones":[24,25,26,27]},"sinks":[],"type":"object.oversized"},{"actions":[],"id":5,"settings":{"dwell":10000,"enabled":true,"filter":["vehicle","pedestrian","cyclist","unclassified"],"name":"Stopbar loitering","zones":[28,33]},"sinks":[],"type":"object.loitering"},{"actions":[],"id":6,"settings":{"count":2,"duration":10,"enabled":true,"filter":["vehicle","unclassified"],"name":"Congestion NB","speed":15.65,"zones":[33]},"sinks":[{"settings":{"interface":24},"type":"aid-streamer"}],"type":"congestion"},{"actions":[],"id":7,"settings":{"enabled":true,"filter":["vehicle"],"name":"Wrong Way NB","path":[24,25,26]},"sinks":[],"type":"object.wrong-way"},{"actions":[],"id":8,"settings":{"enabled":true,"filter":["vehicle","pedestrian","cyclist","unclassified"],"name":"NB Shoulder Stopped","zones":[28,33]},"sinks":[],"type":"object.stopped"}]}
GET /api/app/aid/incident/detectors?q=status
GET /api/app/aid/incident/detectors?q=status HTTP/1.1
Host: 127.0.0.1
Accept: application/json
Authorization: bearer 109b893ceb1c26e3e64e9abf7cdd2aa1c0d25f61
HTTP/1.1 200 OK
Content-Type: application/json
{"detectors":[{"actions":[],"id":11,"settings":{"enabled":true,"exceptions":{"stopped":{"movements":[],"speed":0.89}},"filter":["vehicle","pedestrian","cyclist","unclassified"],"name":"red light runner","traffic-signal":16},"sinks":[],"type":"intersection.red-light","status":{"incidents":null,"count":0}},{"actions":[],"id":12,"settings":{"enabled":true,"filter":["pedestrian","pedestrian"],"name":"jaywalking","traffic-signal":16},"sinks":[],"type":"intersection.jaywalking","status":{"incidents":null,"count":0}},{"actions":[],"id":13,"settings":{"enabled":false,"filter":[],"name":"adgasdgasdgasdgasdg","speed":11.18,"zones":[1,2]},"sinks":[],"type":"object.low-speed","status":{"incidents":null,"count":0}},{"actions":[],"id":14,"settings":{"enabled":true,"filter":["vehicle"],"name":"impeded depart","speed":55,"traffic-signal":16},"sinks":[],"type":"intersection.impeded-departure","status":{"incidents":null,"count":0}},{"actions":[],"id":16,"settings":{"enabled":false,"heading":45,"name":"Near miss","pet":{"critical":1500,"unsafe":2000},"speed":4.47,"zones":{"exclusion":[],"search":[]}},"sinks":[],"type":"intersection.near-miss","status":{"incidents":null,"count":0}},{"actions":[],"id":2,"settings":{"enabled":true,"filter":["vehicle","cyclist"],"name":"Speeding NB","speed":6.71,"zones":[24,25,26,28,33]},"sinks":[],"type":"object.high-speed","status":{"incidents":null,"count":1556}},{"actions":[],"id":3,"settings":{"enabled":true,"filter":["pedestrian","cyclist"],"name":"VRU NB","zones":[24,25,26,27]},"sinks":[],"type":"object.in-zone","status":{"incidents":null,"count":632}},{"actions":[],"id":4,"settings":{"enabled":false,"filter":["vehicle","pedestrian","cyclist","unclassified"],"length":3.05,"name":"NB Oversized","width":1.22,"zones":[24,25,26,27]},"sinks":[],"type":"object.oversized","status":{"incidents":null,"count":0}},{"actions":[],"id":5,"settings":{"dwell":10000,"enabled":true,"filter":["vehicle","pedestrian","cyclist","unclassified"],"name":"Stopbar loitering","zones":[28,33]},"sinks":[],"type":"object.loitering","status":{"incidents":[{"detector":5,"id":199375,"log":[{"dwell":10011,"position":{"altitude":0,"latitude":47.617202465562535,"longitude":-122.20167655261695},"speed":0.02706615999341011,"state":"active","timestamp":1750358086490}],"object":{"classification":"unknown","id":[1414,1750358076479],"lwh":[1.585039734840393,0.4656212031841278,0.7398056387901306],"type":"unclassified"},"recording":0,"timestamp":1750358086490,"type":"object.loitering","zone":33},{"detector":5,"id":199368,"log":[{"dwell":10011,"position":{"altitude":0,"latitude":47.61724374979129,"longitude":-122.20169517327007},"speed":0.014030919410288334,"state":"active","timestamp":1750358073926}],"object":{"classification":"car","id":[1404,1750358063915],"lwh":[4.530211448669434,1.4827631711959839,1.3122004270553589],"type":"vehicle"},"recording":0,"timestamp":1750358073926,"type":"object.loitering","zone":33}],"count":148}},{"actions":[],"id":6,"settings":{"count":2,"duration":10,"enabled":true,"filter":["vehicle","unclassified"],"name":"Congestion NB","speed":15.65,"zones":[33]},"sinks":[{"settings":{"interface":24},"type":"aid-streamer"}],"type":"congestion","status":{"incidents":null,"count":50}},{"actions":[],"id":7,"settings":{"enabled":true,"filter":["vehicle"],"name":"Wrong Way NB","path":[24,25,26]},"sinks":[],"type":"object.wrong-way","status":{"incidents":null,"count":0}},{"actions":[],"id":8,"settings":{"enabled":true,"filter":["vehicle","pedestrian","cyclist","unclassified"],"name":"NB Shoulder Stopped","zones":[28,33]},"sinks":[{"settings":{"interface":24},"type":"aid-streamer"}],"type":"object.stopped","status":{"incidents":[{"detector":8,"id":199374,"log":[{"position":{"altitude":0,"latitude":47.61723071443753,"longitude":-122.2016962133626},"speed":1.4983563423156738,"state":"active","timestamp":1750358086140}],"object":{"classification":"unknown","id":[1412,1750358067519],"lwh":[1.5968462228775024,0.6303684115409851,0.4934808015823364],"type":"unclassified"},"recording":0,"timestamp":1750358086140,"type":"object.stopped","zone":33},{"detector":8,"id":199370,"log":[{"position":{"altitude":0,"latitude":47.61720028893712,"longitude":-122.2016805424301},"speed":1.0508331060409546,"state":"active","timestamp":1750358076529}],"object":{"classification":"unknown","id":[1414,1750358076479],"lwh":[1.5576549768447876,0.4445152282714844,0.7142224907875061],"type":"unclassified"},"recording":0,"timestamp":1750358076529,"type":"object.stopped","zone":33},{"detector":8,"id":199365,"log":[{"position":{"altitude":0,"latitude":47.6172434029321,"longitude":-122.20169353770238},"speed":0.06852327287197113,"state":"active","timestamp":1750358063965}],"object":{"classification":"car","id":[1404,1750358063915],"lwh":[4.530211448669434,1.4827631711959839,1.3122004270553589],"type":"vehicle"},"recording":0,"timestamp":1750358063965,"type":"object.stopped","zone":33}],"count":541}}]}
GET /api/app/aid/incident/detectors?id={id}
GET /api/app/aid/incident/detectors?id={id} HTTP/1.1
Host: 127.0.0.1
Accept: application/json
Authorization: bearer 109b893ceb1c26e3e64e9abf7cdd2aa1c0d25f61id number | ID of the detector to fetch |
HTTP/1.1 200 OK
Content-Type: application/json
{"detector":{"actions":[],"id":2,"settings":{"enabled":true,"filter":["vehicle","cyclist"],"name":"Speeding NB","speed":6.71,"zones":[24,25,26,28,33]},"sinks":[],"type":"object.high-speed"}}
GET /api/app/aid/incident/detectors?id={id}&q=status
GET /api/app/aid/incident/detectors?id={id}&q=status HTTP/1.1
Host: 127.0.0.1
Accept: application/json
Authorization: bearer 109b893ceb1c26e3e64e9abf7cdd2aa1c0d25f61id number | ID of the detector to fetch |
HTTP/1.1 200 OK
Content-Type: application/json
{"detector":{"actions":[],"id":8,"settings":{"enabled":true,"filter":["vehicle","pedestrian","cyclist","unclassified"],"name":"NB Shoulder Stopped","zones":[28,33]},"sinks":[{"settings":{"interface":24},"type":"aid-streamer"}],"type":"object.stopped","status":{"incidents":[{"detector":8,"id":198650,"log":[{"position":{"altitude":0,"latitude":47.61720028893712,"longitude":-122.2016805424301},"speed":1.0508331060409546,"state":"active","timestamp":1750357138325}],"object":{"classification":"unknown","id":[22,1750357138275],"lwh":[1.5576549768447876,0.4445152282714844,0.7142224907875061],"type":"unclassified"},"recording":0,"timestamp":1750357138325,"type":"object.stopped","zone":33},{"detector":8,"id":198645,"log":[{"position":{"altitude":0,"latitude":47.6172434029321,"longitude":-122.20169353770238},"speed":0.06852327287197113,"state":"active","timestamp":1750357125762}],"object":{"classification":"car","id":[6,1750357125713],"lwh":[4.530211448669434,1.4827631711959839,1.3122004270553589],"type":"vehicle"},"recording":0,"timestamp":1750357125762,"type":"object.stopped","zone":33}],"count":409}}}
POST /api/app/aid/incident/detectors
POST /api/app/aid/incident/detectors HTTP/1.1
Host: 127.0.0.1
Accept: application/json
Content-Type: application/json
Authorization: bearer 109b893ceb1c26e3e64e9abf7cdd2aa1c0d25f61
{"type":"object.high-speed","settings":{"speed":11.18,"zones":[2],"filter":["vehicle","cyclist"],"enabled":true,"name":"My Detector"},"sinks":[{"type":"aid-streamer","settings":{"interface":24}}],"actions":[]}
HTTP/1.1 200 OK
Content-Type: application/json
PUT /api/app/aid/incident/detectors?id={id}
PUT /api/app/aid/incident/detectors?id={id} HTTP/1.1
Host: 127.0.0.1
Accept: application/json
Content-Type: application/json
Authorization: bearer 109b893ceb1c26e3e64e9abf7cdd2aa1c0d25f61
{"type":"object.high-speed","settings":{"speed":11.18,"zones":[2],"filter":["vehicle","cyclist"],"enabled":true,"name":"My Detector"},"sinks":[{"type":"aid-streamer","settings":{"interface":24}}],"actions":[]}id number | ID of the detector to update |
HTTP/1.1 200 OK
Content-Type: application/json
type string | The type of incident detector |
settings | Settings specific to this detector type |
sinks[] | A list of sinks for this detector to send incident data to |
actions[] | A list of actions for this detector to execute |
DELETE /api/app/aid/incident/detectors?id={id}
DELETE /api/app/aid/incident/detectors?id={id} HTTP/1.1
Host: 127.0.0.1
Accept: application/json
Authorization: bearer 109b893ceb1c26e3e64e9abf7cdd2aa1c0d25f61id number | ID of the detector to delete |
HTTP/1.1 200 OK
Content-Type: application/json
GET /api/app/aid/incidents?id={id}
GET /api/app/aid/incidents?id={id} HTTP/1.1
Host: 127.0.0.1
Accept: application/json
Authorization: bearer 109b893ceb1c26e3e64e9abf7cdd2aa1c0d25f61id number | ID of the incident to fetch |
HTTP/1.1 200 OK
Content-Type: application/json
{"incident":{"detector":2,"id":196177,"log":[{"position":{"altitude":0,"latitude":47.617469787597656,"longitude":-122.2018814086914},"speed":10.452117919921875,"state":"active","timestamp":1750353823233},{"position":{"altitude":0,"latitude":47.617469787597656,"longitude":-122.20195007324219},"speed":10.05234432220459,"state":"clear","timestamp":1750353823783}],"object":{"classification":"car","id":[250,1750353821731],"lwh":[4.373017311096191,1.7903811931610107,1.4800803661346436],"type":"vehicle"},"recording":0,"timestamp":1750353823233,"type":"object.high-speed","zone":24}}
GET /api/app/aid/incidents?detector={id}&start={iso8601}&end={iso8601}
GET /api/app/aid/incidents?detector={id}&start={iso8601}&end={iso8601} HTTP/1.1
Host: 127.0.0.1
Accept: application/json
Authorization: bearer 109b893ceb1c26e3e64e9abf7cdd2aa1c0d25f61detector number | ID of the detector to search for incidents |
start ISO 8601 | Start date to search for incidents /api/app/aid/incidents?start=2025-06-16T12:15:30 |
end ISO 8601 | End date to search for incidents /api/app/aid/incidents?end=2025-06-16T12:15:30 |
limit number | Limit the number of incidents returned. This will return the most recent incidents up to this limit |
HTTP/1.1 200 OK
Content-Type: application/json
{"incidents":[{"detector":2,"id":196189,"log":[{"position":{"altitude":0,"latitude":47.617469787597656,"longitude":-122.2018814086914},"speed":9.311111450195312,"state":"active","timestamp":1750353858367},{"position":{"altitude":0,"latitude":47.61746597290039,"longitude":-122.20195007324219},"speed":8.737798690795898,"state":"clear","timestamp":1750353858967}],"object":{"classification":"car","id":[278,1750353851059],"lwh":[4.398856163024902,1.4482020139694214,1.181886076927185],"type":"vehicle"},"recording":0,"timestamp":1750353858367,"type":"object.high-speed","zone":24}],"total":917}
incidents array | List of matching incidents |
total number | The total number of incidents that matched, even if not provided in the list due to the limit constraint |
DELETE /api/app/aid/incidents?id={id}
DELETE /api/app/aid/incidents?id={id} HTTP/1.1
Host: 127.0.0.1
Accept: application/json
Authorization: bearer 109b893ceb1c26e3e64e9abf7cdd2aa1c0d25f61id number | ID of the incident to delete |
HTTP/1.1 200 OK
Content-Type: application/json
DELETE /api/app/aid/incidents?detector={id}
DELETE /api/app/aid/incidents?detector={id} HTTP/1.1
Host: 127.0.0.1
Accept: application/json
Authorization: bearer 109b893ceb1c26e3e64e9abf7cdd2aa1c0d25f61detector number | ID of the detector to delete incidents from |
DELETE /api/app/aid/incidents?detector={id}&start={iso8601}&end={iso8601}
DELETE /api/app/aid/incidents?detector={id}&start={iso8601}&end={iso8601} HTTP/1.1
Host: 127.0.0.1
Accept: application/json
Authorization: bearer 109b893ceb1c26e3e64e9abf7cdd2aa1c0d25f61detector number | ID of the detector to delete incidents from |
start ISO 8601 | Start date to search for incidents /api/app/aid/incidents?start=2025-06-16T12:15:30 |
end ISO 8601 | End date to search for incidents /api/app/aid/incidents?end=2025-06-16T12:15:30 |
HTTP/1.1 200 OK
Content-Type: application/json
DELETE /api/app/aid/incidents?detector={id}&before={iso8601}
DELETE /api/app/aid/incidents?detector={id}&before={iso8601} HTTP/1.1
Host: 127.0.0.1
Accept: application/json
Authorization: bearer 109b893ceb1c26e3e64e9abf7cdd2aa1c0d25f61detector number | ID of the detector to delete incidents from |
before ISO 8601 | Delete incidents before this date time /api/app/aid/incidents?before=2025-06-16T12:15:30 |
HTTP/1.1 200 OK
Content-Type: application/json
DELETE /api/app/aid/incidents?detector={id}&after={iso8601}
DELETE /api/app/aid/incidents?detector={id}&after={iso8601} HTTP/1.1
Host: 127.0.0.1
Accept: application/json
Authorization: bearer 109b893ceb1c26e3e64e9abf7cdd2aa1c0d25f61detector number | ID of the detector to delete incidents from |
after ISO 8601 | Delete incidents after this date time /api/app/aid/incidents?after=2025-06-16T12:15:30 |
HTTP/1.1 200 OK
Content-Type: application/json
GET /api/app/aid/status
GET /api/app/aid/status HTTP/1.1
Host: 127.0.0.1
Accept: application/json
Authorization: bearer 109b893ceb1c26e3e64e9abf7cdd2aa1c0d25f61
HTTP/1.1 200 OK
Content-Type: application/json
{"status":{"incident":{"detectors":{"2":{"count":2076,"id":2,"incidents":null,"name":"Speeding NB","type":"object.high-speed"},"3":{"count":866,"id":3,"incidents":null,"name":"VRU NB","type":"object.in-zone"},"4":{"count":4956,"id":4,"incidents":null,"name":"NB Oversized","type":"object.oversized"},"5":{"count":215,"id":5,"incidents":[{"detector":5,"dwell":10009,"id":[1745326789822,8],"object":{"classification":"car","id":[6,1745326779812],"lwh":[4.530211448669434,1.4827631711959839,1.3122004270553589],"position":{"altitude":0,"latitude":47.61724374979129,"longitude":-122.20169517327007},"speed":0.014030919410288334,"type":"vehicle"},"state":"active","timestamp":1745326789822,"type":"object.loitering","zone":33}],"name":"Stopbar loitering","type":"object.loitering"},"6":{"count":73,"duration":10,"id":6,"name":"Congestion NB","objects":1,"state":"clear","type":"congestion"},"7":{"count":0,"id":7,"name":"Wrong Way NB","type":"object.wrong-way"}}}}}
GET /api/app/aid/report/object.high-speed/incidents
GET /api/app/aid/report/object.high-speed/incidents HTTP/1.1
Host: 127.0.0.1
Accept: application/json
Authorization: bearer 109b893ceb1c26e3e64e9abf7cdd2aa1c0d25f61
format string | Specifies the output format for the report. Defaults to json /api/app/aid/report/object.high-speed/incidents?format=excel - generates a report as an excel file download /api/app/aid/report/object.high-speed/incidents?format=csv - generates a report as a csv file download /api/app/aid/report/object.high-speed/incidents?format=json - generates a report as a json output /api/app/aid/report/object.high-speed/incidents?format=json.file - generates a report as a json file download |
start ISO8601 Date & Time | Start date and time for the selection range of the report /api/app/aid/report/object.high-speed/incidents?start=2025-06-16T12:15:30 |
end ISO8601 Date & Time | End date and time for the selection range of the report /api/app/aid/report/object.high-speed/incidents?end=2025-06-16T12:15:30 |
HTTP/1.1 200 OK
Content-Type: {depends on format parameter}
GET /api/app/aid/report/object.low-speed/incidents
GET /api/app/aid/report/object.low-speed/incidents HTTP/1.1
Host: 127.0.0.1
Accept: application/json
Authorization: bearer 109b893ceb1c26e3e64e9abf7cdd2aa1c0d25f61
format string | Specifies the output format for the report. Defaults to json /api/app/aid/report/object.low-speed/incidents?format=excel - generates a report as an excel file download /api/app/aid/report/object.low-speed/incidents?format=csv - generates a report as a csv file download /api/app/aid/report/object.low-speed/incidents?format=json - generates a report as a json output /api/app/aid/report/object.low-speed/incidents?format=json.file - generates a report as a json file download |
start ISO8601 Date & Time | Start date and time for the selection range of the report /api/app/aid/report/object.low-speed/incidents?start=2025-06-16T12:15:30 |
end ISO8601 Date & Time | End date and time for the selection range of the report /api/app/aid/report/object.low-speed/incidents?end=2025-06-16T12:15:30 |
HTTP/1.1 200 OK
Content-Type: {depends on format parameter}
GET /api/app/aid/report/object.in-zone/incidents
GET /api/app/aid/report/object.in-zone/incidents HTTP/1.1
Host: 127.0.0.1
Accept: application/json
Authorization: bearer 109b893ceb1c26e3e64e9abf7cdd2aa1c0d25f61
format string | Specifies the output format for the report. Defaults to json /api/app/aid/report/object.in-zone/incidents?format=excel - generates a report as an excel file download /api/app/aid/report/object.in-zone/incidents?format=csv - generates a report as a csv file download /api/app/aid/report/object.in-zone/incidents?format=json - generates a report as a json output /api/app/aid/report/object.in-zone/incidents?format=json.file - generates a report as a json file download |
start ISO8601 Date & Time | Start date and time for the selection range of the report /api/app/aid/report/object.in-zone/incidents?start=2025-06-16T12:15:30 |
end ISO8601 Date & Time | End date and time for the selection range of the report /api/app/aid/report/object.in-zone/incidents?end=2025-06-16T12:15:30 |
HTTP/1.1 200 OK
Content-Type: {depends on format parameter}
GET /api/app/aid/report/object.lane-change/incidents
GET /api/app/aid/report/object.lane-change/incidents HTTP/1.1
Host: 127.0.0.1
Accept: application/json
Authorization: bearer 109b893ceb1c26e3e64e9abf7cdd2aa1c0d25f61
format string | Specifies the output format for the report. Defaults to json /api/app/aid/report/object.lane-change/incidents?format=excel - generates a report as an excel file download /api/app/aid/report/object.lane-change/incidents?format=csv - generates a report as a csv file download /api/app/aid/report/object.lane-change/incidents?format=json - generates a report as a json output /api/app/aid/report/object.lane-change/incidents?format=json.file - generates a report as a json file download |
start ISO8601 Date & Time | Start date and time for the selection range of the report /api/app/aid/report/object.lane-change/incidents?start=2025-06-16T12:15:30 |
end ISO8601 Date & Time | End date and time for the selection range of the report /api/app/aid/report/object.lane-change/incidents?end=2025-06-16T12:15:30 |
HTTP/1.1 200 OK
Content-Type: {depends on format parameter}
GET /api/app/aid/report/object.loitering/incidents
GET /api/app/aid/report/object.loitering/incidents HTTP/1.1
Host: 127.0.0.1
Accept: application/json
Authorization: bearer 109b893ceb1c26e3e64e9abf7cdd2aa1c0d25f61
format string | Specifies the output format for the report. Defaults to json /api/app/aid/report/object.loitering/incidents?format=excel - generates a report as an excel file download /api/app/aid/report/object.loitering/incidents?format=csv - generates a report as a csv file download /api/app/aid/report/object.loitering/incidents?format=json - generates a report as a json output /api/app/aid/report/object.loitering/incidents?format=json.file - generates a report as a json file download |
start ISO8601 Date & Time | Start date and time for the selection range of the report /api/app/aid/report/object.loitering/incidents?start=2025-06-16T12:15:30 |
end ISO8601 Date & Time | End date and time for the selection range of the report /api/app/aid/report/object.loitering/incidents?end=2025-06-16T12:15:30 |
HTTP/1.1 200 OK
Content-Type: {depends on format parameter}
GET /api/app/aid/report/object.oversized/incidents
GET /api/app/aid/report/object.oversized/incidents HTTP/1.1
Host: 127.0.0.1
Accept: application/json
Authorization: bearer 109b893ceb1c26e3e64e9abf7cdd2aa1c0d25f61
format string | Specifies the output format for the report. Defaults to json /api/app/aid/report/object.oversized/incidents?format=excel - generates a report as an excel file download /api/app/aid/report/object.oversized/incidents?format=csv - generates a report as a csv file download /api/app/aid/report/object.oversized/incidents?format=json - generates a report as a json output /api/app/aid/report/object.oversized/incidents?format=json.file - generates a report as a json file download |
start ISO8601 Date & Time | Start date and time for the selection range of the report /api/app/aid/report/object.oversized/incidents?start=2025-06-16T12:15:30 |
end ISO8601 Date & Time | End date and time for the selection range of the report /api/app/aid/report/object.oversized/incidents?end=2025-06-16T12:15:30 |
HTTP/1.1 200 OK
Content-Type: {depends on format parameter}
GET /api/app/aid/report/object.stopped/incidents
GET /api/app/aid/report/object.stopped/incidents HTTP/1.1
Host: 127.0.0.1
Accept: application/json
Authorization: bearer 109b893ceb1c26e3e64e9abf7cdd2aa1c0d25f61
format string | Specifies the output format for the report. Defaults to json /api/app/aid/report/object.stopped/incidents?format=excel - generates a report as an excel file download /api/app/aid/report/object.stopped/incidents?format=csv - generates a report as a csv file download /api/app/aid/report/object.stopped/incidents?format=json - generates a report as a json output /api/app/aid/report/object.stopped/incidents?format=json.file - generates a report as a json file download |
start ISO8601 Date & Time | Start date and time for the selection range of the report /api/app/aid/report/object.stopped/incidents?start=2025-06-16T12:15:30 |
end ISO8601 Date & Time | End date and time for the selection range of the report /api/app/aid/report/object.stopped/incidents?end=2025-06-16T12:15:30 |
HTTP/1.1 200 OK
Content-Type: {depends on format parameter}
GET /api/app/aid/report/object.wrong-way/incidents
GET /api/app/aid/report/object.wrong-way/incidents HTTP/1.1
Host: 127.0.0.1
Accept: application/json
Authorization: bearer 109b893ceb1c26e3e64e9abf7cdd2aa1c0d25f61
format string | Specifies the output format for the report. Defaults to json /api/app/aid/report/object.wrong-way/incidents?format=excel - generates a report as an excel file download /api/app/aid/report/object.wrong-way/incidents?format=csv - generates a report as a csv file download /api/app/aid/report/object.wrong-way/incidents?format=json - generates a report as a json output /api/app/aid/report/object.wrong-way/incidents?format=json.file - generates a report as a json file download |
start ISO8601 Date & Time | Start date and time for the selection range of the report /api/app/aid/report/object.wrong-way/incidents?start=2025-06-16T12:15:30 |
end ISO8601 Date & Time | End date and time for the selection range of the report /api/app/aid/report/object.wrong-way/incidents?end=2025-06-16T12:15:30 |
HTTP/1.1 200 OK
Content-Type: {depends on format parameter}
GET /api/app/aid/report/congestion/incidents
GET /api/app/aid/report/congestion/incidents HTTP/1.1
Host: 127.0.0.1
Accept: application/json
Authorization: bearer 109b893ceb1c26e3e64e9abf7cdd2aa1c0d25f61
format string | Specifies the output format for the report. Defaults to json /api/app/aid/report/congestion/incidents?format=excel - generates a report as an excel file download /api/app/aid/report/congestion/incidents?format=csv - generates a report as a csv file download /api/app/aid/report/congestion/incidents?format=json - generates a report as a json output /api/app/aid/report/congestion/incidents?format=json.file - generates a report as a json file download |
start ISO8601 Date & Time | Start date and time for the selection range of the report /api/app/aid/report/congestion/incidents?start=2025-06-16T12:15:30 |
end ISO8601 Date & Time | End date and time for the selection range of the report /api/app/aid/report/congestion/incidents?end=2025-06-16T12:15:30 |
HTTP/1.1 200 OK
Content-Type: {depends on format parameter}
GET /api/app/aid/report/intersection.red-light/incidents
GET /api/app/aid/report/intersection.red-light/incidents HTTP/1.1
Host: 127.0.0.1
Accept: application/json
Authorization: bearer 109b893ceb1c26e3e64e9abf7cdd2aa1c0d25f61
format string | Specifies the output format for the report. Defaults to json /api/app/aid/report/intersection.red-light/incidents?format=excel - generates a report as an excel file download /api/app/aid/report/intersection.red-light/incidents?format=csv - generates a report as a csv file download /api/app/aid/report/intersection.red-light/incidents?format=json - generates a report as a json output /api/app/aid/report/intersection.red-light/incidents?format=json.file - generates a report as a json file download |
start ISO8601 Date & Time | Start date and time for the selection range of the report /api/app/aid/report/intersection.red-light/incidents?start=2025-06-16T12:15:30 |
end ISO8601 Date & Time | End date and time for the selection range of the report /api/app/aid/report/intersection.red-light/incidents?end=2025-06-16T12:15:30 |
HTTP/1.1 200 OK
Content-Type: {depends on format parameter}
GET /api/app/aid/report/intersection.split-failure/incidents
GET /api/app/aid/report/intersection.split-failure/incidents HTTP/1.1
Host: 127.0.0.1
Accept: application/json
Authorization: bearer 109b893ceb1c26e3e64e9abf7cdd2aa1c0d25f61
format string | Specifies the output format for the report. Defaults to json /api/app/aid/report/intersection.split-failure/incidents?format=excel - generates a report as an excel file download /api/app/aid/report/intersection.split-failure/incidents?format=csv - generates a report as a csv file download /api/app/aid/report/intersection.split-failure/incidents?format=json - generates a report as a json output /api/app/aid/report/intersection.split-failure/incidents?format=json.file - generates a report as a json file download |
start ISO8601 Date & Time | Start date and time for the selection range of the report /api/app/aid/report/intersection.split-failure/incidents?start=2025-06-16T12:15:30 |
end ISO8601 Date & Time | End date and time for the selection range of the report /api/app/aid/report/intersection.split-failure/incidents?end=2025-06-16T12:15:30 |
HTTP/1.1 200 OK
Content-Type: {depends on format parameter}
GET /api/app/aid/report/intersection.jaywalking/incidents
GET /api/app/aid/report/intersection.jaywalking/incidents HTTP/1.1
Host: 127.0.0.1
Accept: application/json
Authorization: bearer 109b893ceb1c26e3e64e9abf7cdd2aa1c0d25f61
format string | Specifies the output format for the report. Defaults to json /api/app/aid/report/intersection.jaywalking/incidents?format=excel - generates a report as an excel file download /api/app/aid/report/intersection.jaywalking/incidents?format=csv - generates a report as a csv file download /api/app/aid/report/intersection.jaywalking/incidents?format=json - generates a report as a json output /api/app/aid/report/intersection.jaywalking/incidents?format=json.file - generates a report as a json file download |
start ISO8601 Date & Time | Start date and time for the selection range of the report /api/app/aid/report/intersection.jaywalking/incidents?start=2025-06-16T12:15:30 |
end ISO8601 Date & Time | End date and time for the selection range of the report /api/app/aid/report/intersection.jaywalking/incidents?end=2025-06-16T12:15:30 |
HTTP/1.1 200 OK
Content-Type: {depends on format parameter}
GET /api/app/aid/report/intersection.impeded-departure/incidents
GET /api/app/aid/report/intersection.impeded-departure/incidents HTTP/1.1
Host: 127.0.0.1
Accept: application/json
Authorization: bearer 109b893ceb1c26e3e64e9abf7cdd2aa1c0d25f61
format string | Specifies the output format for the report. Defaults to json /api/app/aid/report/intersection.impeded-departure/incidents?format=excel - generates a report as an excel file download /api/app/aid/report/intersection.impeded-departure/incidents?format=csv - generates a report as a csv file download /api/app/aid/report/intersection.impeded-departure/incidents?format=json - generates a report as a json output /api/app/aid/report/intersection.impeded-departure/incidents?format=json.file - generates a report as a json file download |
start ISO8601 Date & Time | Start date and time for the selection range of the report /api/app/aid/report/intersection.impeded-departure/incidents?start=2025-06-16T12:15:30 |
end ISO8601 Date & Time | End date and time for the selection range of the report /api/app/aid/report/intersection.impeded-departure/incidents?end=2025-06-16T12:15:30 |
HTTP/1.1 200 OK
Content-Type: {depends on format parameter}
GET /api/app/aid/report/intersection.near-miss/incidents
GET /api/app/aid/report/intersection.near-miss/incidents HTTP/1.1
Host: 127.0.0.1
Accept: application/json
Authorization: bearer 109b893ceb1c26e3e64e9abf7cdd2aa1c0d25f61
format string | Specifies the output format for the report. Defaults to json /api/app/aid/report/intersection.near-miss/incidents?format=excel - generates a report as an excel file download /api/app/aid/report/intersection.near-miss/incidents?format=csv - generates a report as a csv file download /api/app/aid/report/intersection.near-miss/incidents?format=json - generates a report as a json output /api/app/aid/report/intersection.near-miss/incidents?format=json.file - generates a report as a json file download |
start ISO8601 Date & Time | Start date and time for the selection range of the report /api/app/aid/report/intersection.near-miss/incidents?start=2025-06-16T12:15:30 |
end ISO8601 Date & Time | End date and time for the selection range of the report /api/app/aid/report/intersection.near-miss/incidents?end=2025-06-16T12:15:30 |
HTTP/1.1 200 OK
Content-Type: {depends on format parameter}
Edge Link (MQTT)
app/aid/incident/congestion [JSON]
When a congestion event is updated or created, it will be published to this topic
app/aid/incident/object/low-speed [JSON]
When an object low speed event is updated or created, it will be published to this topic
{"detector":1,"id":7825,"log":[{"position":[42.355704137584034,-83.06646078671089,0.0],"heading":1.029386,"speed":4.949476718902588,"state":"active","timestamp":1765043148682},{"position":[42.35623791037424,-83.06677162056867,0.0],"heading":1.029386,"speed":9.596440315246582,"state":"clear","timestamp":1765043156492}],"object":{"classification":"car","id":[4,1765043131812],"lwh":[4.4403977394104,1.9305750131607056,1.6903574466705322],"type":"vehicle"},"recording":0,"timestamp":1765043148682,"type":"object.low-speed","zone":22}app/aid/incident/object/high-speed [JSON]
When an object high speed event is updated or created, it will be published to this topic
{"detector":1,"id":7815,"log":[{"position":[42.355704137584034,-83.06646078671089,0.0],"heading":1.029386,"speed":4.949476718902588,"state":"active","timestamp":1765043148682},{"position":[42.35623791037424,-83.06677162056867,0.0],"heading":1.029386,"speed":9.596440315246582,"state":"clear","timestamp":1765043156492}],"object":{"classification":"car","id":[4,1765043131812],"lwh":[4.4403977394104,1.9305750131607056,1.6903574466705322],"type":"vehicle"},"recording":0,"timestamp":1765043148682,"type":"object.high-speed","zone":22}app/aid/incident/object/in-zone [JSON]
When an object in-zone event is updated or created, it will be published to this topic
{"detector":1,"id":7815,"type":"object.in-zone","zone":21,"log":[{"position":[42.355704137584034,-83.06646078671089,0.0],"heading":1.029386,"speed":4.949476718902588,"state":"active","timestamp":1765043148682},{"position":[42.35623791037424,-83.06677162056867,0.0],"heading":1.029386,"speed":9.596440315246582,"state":"clear","timestamp":1765043156492}],"object":{"classification":"car","id":[4,1765043131812],"lwh":[4.4403977394104,1.9305750131607056,1.6903574466705322],"type":"vehicle"},"recording":0,"timestamp":1765043148682}app/aid/incident/object/lane-change [JSON]
When an object lane change event is updated or created, it will be published to this topic
{"detector":1,"id":7815,"type":"object.lane-change","from":21,"to":27,"object":{"classification":"car","id":[4,1765043131812],"heading":1.029386,"lwh":[4.4403977394104,1.9305750131607056,1.6903574466705322],"type":"vehicle","position":[42.35623791037424,-83.06677162056867,0.0],"speed":9.596440315246582},"recording":0,"timestamp":1765043148682}app/aid/incident/object/loitering [JSON]
When an object loitering event is updated or created, it will be published to this topic
{"detector":1,"id":7815,"type":"object.loitering","zone":21,"log":[{"position":[42.355704137584034,-83.06646078671089,0.0],"heading":1.029386,"speed":4.949476718902588,"state":"active","timestamp":1765043148682,"dwell":5000},{"dwell":17235,"position":[42.35623791037424,-83.06677162056867,0.0],"heading":1.029386,"speed":9.596440315246582,"state":"clear","timestamp":1765043156492}],"object":{"classification":"car","id":[4,1765043131812],"lwh":[4.4403977394104,1.9305750131607056,1.6903574466705322],"type":"vehicle"},"recording":0,"timestamp":1765043148682}app/aid/incident/object/stopped [JSON]
When an object stopped event is updated or created, it will be published to this topic
{"detector":1,"id":7815,"type":"object.in-stopped","zone":21,"log":[{"position":[42.355704137584034,-83.06646078671089,0.0],"heading":1.029386,"speed":4.949476718902588,"state":"active","timestamp":1765043148682},{"position":[42.35623791037424,-83.06677162056867,0.0],"heading":1.029386,"speed":9.596440315246582,"state":"clear","timestamp":1765043156492}],"object":{"classification":"car","id":[4,1765043131812],"lwh":[4.4403977394104,1.9305750131607056,1.6903574466705322],"type":"vehicle"},"recording":0,"timestamp":1765043148682}app/aid/incident/object/oversized [JSON]
When an object oversized event is updated or created, it will be published to this topic
{"detector":1,"id":7815,"type":"object.oversized","zone":21,"log":[{"position":[42.355704137584034,-83.06646078671089,0.0],"heading":1.029386,"speed":4.949476718902588,"state":"active","timestamp":1765043148682},{"position":[42.35623791037424,-83.06677162056867,0.0],"heading":1.029386,"speed":9.596440315246582,"state":"clear","timestamp":1765043156492}],"object":{"classification":"car","id":[4,1765043131812],"lwh":[4.4403977394104,1.9305750131607056,1.6903574466705322],"type":"vehicle"},"recording":0,"timestamp":1765043148682}app/aid/incident/object/wrong-way [JSON]
When an object wrong way event is updated or created, it will be published to this topic
{"detector":2,"heading":"eb","id":1938,"log":[{"heading":1.105635795063955,"position":[42.35599496180403,-83.06650130222137,0.0],"speed":11.513517379760742,"state":"tracking","timestamp":1765904331005},{"heading":1.0161353106076807,"position":[42.356276876215546,-83.06586378900809,0.0],"speed":10.195969581604004,"state":"tracking-lost","timestamp":1765904336595}],"object":{"classification":"car","id":[4,1765904312282],"lwh":[4.221421241760254,1.8234446048736572,1.5356385707855225],"type":"vehicle","description":{"color":"yellow","confidence":0.0,"license-plate":"ABC123","make":false,"model":false,"year":false}},"recording":0,"timestamp":1765904331005,"type":"object.wrong-way"}app/aid/incident/intersection/belated-walker [JSON]
When an intersection belated walker event is updated or created, it will be published to this topic
{"detector":1,"id":883436,"type":"intersection.belated-walker","scenario":"flashing-dont-walk","movement":{"heading":"nb","time":{"walk":16396,"provided":22000,"deficit":4333,"ppt":4235},"ingress":{"timestamp":1765043148682,"state":"protected","indication":"flashing-dont-walk"},"egress":{"timestamp":1765043148682}},"object":{"classification":"person","id":[4,1765043131812],"heading":1.029386,"lwh":[4.4403977394104,1.9305750131607056,1.6903574466705322],"type":"pedestrian","position":[42.355704137584034,-83.06646078671089,0.0],"speed":4.949476718902588},"recording":0,"timestamp":1765043148682}app/aid/incident/intersection/illegal-movement [JSON]
When an intersection illegal movement event is updated or created, it will be published to this topic
{"detector":1,"id":7825,"type":"intersection.illegal-movement","movement":{"heading":"nb","type":"through","zone":23},"object":{"classification":"car","id":[4,1765043131812],"lwh":[4.4403977394104,1.9305750131607056,1.6903574466705322],"heading":1.029386,"type":"vehicle","position":[42.355704137584034,-83.06646078671089,0.0],"speed":4.949476718902588},"recording":0,"timestamp":1765043148682}app/aid/incident/intersection/jaywalking [JSON]
When an intersection jaywalking event is updated or created, it will be published to this topic
{"detector":1,"id":27006,"movement":{"heading":"sb","ppt":502},"movements":[{"state":"prohibited","duration":11127,"heading":"eb","indication":"red","timestamp":1765129827583,"type":"left"},{"state":"prohibited","duration":11127,"heading":"wb","indication":"red","timestamp":1765129827583,"type":"through"},{"state":"prohibited","duration":11127,"heading":"wb","indication":"red","timestamp":1765129827583,"type":"right"},{"state":"prohibited","duration":327,"heading":"nb","indication":"red","timestamp":1765129838384,"type":"through"},{"state":"prohibited","duration":327,"heading":"nb","indication":"red","timestamp":1765129838384,"type":"left"},{"state":"prohibited","duration":327,"heading":"nb","indication":"red","timestamp":1765129838384,"type":"right"},{"state":"prohibited","duration":11127,"heading":"wb","indication":"red","timestamp":1765129827583,"type":"left"},{"state":"prohibited","duration":11127,"heading":"wb","indication":"red","timestamp":1765129827583,"type":"u-turn"},{"state":"prohibited","duration":11127,"heading":"eb","indication":"red","timestamp":1765129827583,"type":"through"},{"state":"prohibited","duration":11127,"heading":"eb","indication":"red","timestamp":1765129827583,"type":"right"},{"state":"prohibited","duration":11127,"heading":"eb","indication":"red","timestamp":1765129827583,"type":"u-turn"},{"state":"prohibited","duration":327,"heading":"sb","indication":"red","timestamp":1765129838384,"type":"through"},{"state":"prohibited","duration":327,"heading":"sb","indication":"red","timestamp":1765129838384,"type":"left"},{"state":"prohibited","duration":327,"heading":"sb","indication":"red","timestamp":1765129838384,"type":"right"},{"state":"prohibited","duration":15214,"heading":"wb","indication":"dont-walk","timestamp":1765129823497,"type":"pedestrian"},{"state":"prohibited","duration":789508,"heading":"nb","indication":"dont-walk","timestamp":1765129049202,"type":"pedestrian"},{"state":"prohibited","duration":15214,"heading":"eb","indication":"dont-walk","timestamp":1765129823497,"type":"pedestrian"},{"state":"prohibited","duration":789508,"heading":"sb","indication":"dont-walk","timestamp":1765129049202,"type":"pedestrian"}],"object":{"classification":"person","heading":1.029386,"id":[523,1765129830984],"lwh":[4.659926414489746,1.9463437795639038,1.1883721351623535],"position":[40.6095920926849,-111.94829823344843,0.0],"speed":5.505294322967529,"type":"pedestrian"},"recording":186131,"timestamp":1765129838886,"type":"intersection.jaywalking"}app/aid/incident/intersection/near-miss [JSON]
When an intersection near miss event is updated or created, it will be published to this topic
{"detector":1,"id":192386,"type":"intersection.near-miss","severity":"critical","pet":1765,"intersect":[42.355704137584034,-83.06646078671089,0.0],"trailing":{"classification":"car","id":[4,1765043131812],"heading":1.029386,"lwh":[4.4403977394104,1.9305750131607056,1.6903574466705322],"type":"vehicle","position":[42.355704137584034,-83.06646078671089,0.0],"speed":4.949476718902588},"leading":{"classification":"car","heading":1.029386,"id":[4,1765043131812],"lwh":[4.4403977394104,1.9305750131607056,1.6903574466705322],"type":"vehicle","position":[42.355704137584034,-83.06646078671089,0.0],"speed":4.949476718902588},"recording":1235,"timestamp":1765043148682}app/aid/incident/intersection/impeded-departure [JSON]
When an intersection impeded departure event is updated or created, it will be published to this topic
{"detector":1,"id":23006,"type":"intersection.impeded-departure","movement":{"heading":"sb","type":"left","certainty":"realized"},"movements":[{"state":"prohibited","duration":11127,"heading":"eb","indication":"red","timestamp":1765129827583,"type":"left"},{"state":"prohibited","duration":11127,"heading":"wb","indication":"red","timestamp":1765129827583,"type":"through"},{"state":"prohibited","duration":11127,"heading":"wb","indication":"red","timestamp":1765129827583,"type":"right"},{"state":"prohibited","duration":327,"heading":"nb","indication":"red","timestamp":1765129838384,"type":"through"},{"state":"prohibited","duration":327,"heading":"nb","indication":"red","timestamp":1765129838384,"type":"left"},{"state":"prohibited","duration":327,"heading":"nb","indication":"red","timestamp":1765129838384,"type":"right"},{"state":"prohibited","duration":11127,"heading":"wb","indication":"red","timestamp":1765129827583,"type":"left"},{"state":"prohibited","duration":11127,"heading":"wb","indication":"red","timestamp":1765129827583,"type":"u-turn"},{"state":"prohibited","duration":11127,"heading":"eb","indication":"red","timestamp":1765129827583,"type":"through"},{"state":"prohibited","duration":11127,"heading":"eb","indication":"red","timestamp":1765129827583,"type":"right"},{"state":"prohibited","duration":11127,"heading":"eb","indication":"red","timestamp":1765129827583,"type":"u-turn"},{"state":"prohibited","duration":327,"heading":"sb","indication":"red","timestamp":1765129838384,"type":"through"},{"state":"prohibited","duration":327,"heading":"sb","indication":"red","timestamp":1765129838384,"type":"left"},{"state":"prohibited","duration":327,"heading":"sb","indication":"red","timestamp":1765129838384,"type":"right"},{"state":"prohibited","duration":15214,"heading":"wb","indication":"dont-walk","timestamp":1765129823497,"type":"pedestrian"},{"state":"prohibited","duration":789508,"heading":"nb","indication":"dont-walk","timestamp":1765129049202,"type":"pedestrian"},{"state":"prohibited","duration":15214,"heading":"eb","indication":"dont-walk","timestamp":1765129823497,"type":"pedestrian"},{"state":"prohibited","duration":789508,"heading":"sb","indication":"dont-walk","timestamp":1765129049202,"type":"pedestrian"}],"object":{"classification":"car","id":[523,1765129830984],"lwh":[4.659926414489746,1.9463437795639038,1.1883721351623535],"heading":1.029386,"position":[40.6095920926849,-111.94829823344843,0.0],"speed":5.505294322967529,"type":"vehicle"},"recording":186131,"timestamp":1765129838886}app/aid/incident/intersection/red-light [JSON]
When an intersection red light incident is updated or created, it will be published to this topic
{"detector":1,"id":211006,"movement":{"certainty":"realized","heading":"sb","ppt":502,"type":"right"},"movements":[{"state":"prohibited","duration":11127,"heading":"eb","indication":"red","timestamp":1765129827583,"type":"left"},{"state":"prohibited","duration":11127,"heading":"wb","indication":"red","timestamp":1765129827583,"type":"through"},{"state":"prohibited","duration":11127,"heading":"wb","indication":"red","timestamp":1765129827583,"type":"right"},{"state":"prohibited","duration":327,"heading":"nb","indication":"red","timestamp":1765129838384,"type":"through"},{"state":"prohibited","duration":327,"heading":"nb","indication":"red","timestamp":1765129838384,"type":"left"},{"state":"prohibited","duration":327,"heading":"nb","indication":"red","timestamp":1765129838384,"type":"right"},{"state":"prohibited","duration":11127,"heading":"wb","indication":"red","timestamp":1765129827583,"type":"left"},{"state":"prohibited","duration":11127,"heading":"wb","indication":"red","timestamp":1765129827583,"type":"u-turn"},{"state":"prohibited","duration":11127,"heading":"eb","indication":"red","timestamp":1765129827583,"type":"through"},{"state":"prohibited","duration":11127,"heading":"eb","indication":"red","timestamp":1765129827583,"type":"right"},{"state":"prohibited","duration":11127,"heading":"eb","indication":"red","timestamp":1765129827583,"type":"u-turn"},{"state":"prohibited","duration":327,"heading":"sb","indication":"red","timestamp":1765129838384,"type":"through"},{"state":"prohibited","duration":327,"heading":"sb","indication":"red","timestamp":1765129838384,"type":"left"},{"state":"prohibited","duration":327,"heading":"sb","indication":"red","timestamp":1765129838384,"type":"right"},{"state":"prohibited","duration":15214,"heading":"wb","indication":"dont-walk","timestamp":1765129823497,"type":"pedestrian"},{"state":"prohibited","duration":789508,"heading":"nb","indication":"dont-walk","timestamp":1765129049202,"type":"pedestrian"},{"state":"prohibited","duration":15214,"heading":"eb","indication":"dont-walk","timestamp":1765129823497,"type":"pedestrian"},{"state":"prohibited","duration":789508,"heading":"sb","indication":"dont-walk","timestamp":1765129049202,"type":"pedestrian"}],"object":{"classification":"car","id":[523,1765129830984],"lwh":[4.659926414489746,1.9463437795639038,1.1883721351623535],"heading":1.029386,"position":[40.6095920926849,-111.94829823344843,0.0],"speed":5.505294322967529,"type":"vehicle"},"recording":186131,"timestamp":1765129838886,"type":"intersection.red-light"}app/aid/incident/intersection/split-failure [JSON]
When an intersection split failure incident is updated or created, it will be published to this topic
{"detector":3,"gor":0.983534038066864,"id":2128,"movement":{"heading":"sb","time":62189,"type":"u-turn"},"recording":0,"ror":1.0,"timestamp":1772104088157,"type":"intersection.split-failure"}