📄 Object Analytics

Object Analytics


Object Analytics is a specialized application built to gather detailed statistical information about travelers on roadways — including vehicles, pedestrians, cyclists, and other modes — and how they interact with specific, targeted detection zones.





Concepts

Records (Per-Object-Per-Detection-Zone)

Object Analytics automatically generates and stores a detailed record for every traveler (or object) each time they interact with a detection zone. These granular records are retained long-term—potentially for years, depending on your system's storage capacity and data volume—and can be accessed or analyzed at any time.

All reports, charts, dashboards, and datasets are generated on-demand directly from this rich, original raw data. Each record captures comprehensive details of the interaction, including precise timestamps, dwell times, entry/exit points, paths, and other key metrics. 

By storing information at this level of detail, our system gives you the flexibility to generate nearly any report you can think of—with exceptionally high accuracy. Whether you need standard daily summaries, custom time-bin breakdowns, historical trend analysis, or entirely new views of the data, everything is built fresh from the source, ensuring maximum precision and adaptability without losing any underlying information.

Samples

Sample Data lets you view aggregated insights over any custom time period you choose — from just a few seconds up to days, weeks, or longer.

Simply set your desired time window, and Object Analytics instantly generates a fresh sample dataset by aggregating the underlying per-object-per-detection-zone records on-demand. This ensures maximum accuracy, as no pre-summarized or rounded data is used — everything is calculated directly from the original, detailed event records.

This flexibility means you can zoom in on ultra-short bursts of activity (like peak seconds during an event) or analyze broader trends, all with precise, reliable results tailored exactly to your needs.

Data Structure

Record

ID
UUID of the object
Type
Type of object: vehicle, pedestrian, cyclist, railcar, aircraft, animal, unclassified
Classification
Classification of the object. The sensing technology provides this value.
Length / Width / Height
The size of the object, in meters, captured at ingress of the zone
Headway / Gap
The time between travelers entering a zone. These values are computed by the Integrator-AI. The strategy used by the sensing technology is also considered in this calculation as each sensing technology measures object zone occupancy differently. Our system will unify the measurements between all of them to ensure consistent and accurate measurements no matter what strategy the technology uses.

Headway - measured from object front to object front
Gap - measured from object back to object front

Both metrics will only measure between objects of the same type

zone

ID of the zone

speed

Speed of the object, in meters per second, captured at ingress of the zone

axles

Count of axles, captured at ingress of the zone

dwell

How long, in milliseconds, the object occupied the zone

ingress.timestamp

Unix timestamp, in milliseconds, of when the object entered the zone

ingress.position

Contains latitude and longitude position, in decimal degrees, where the object entered the zone

ingress.heading

Angle of the object, in radians, when it entered the zone. 0 is north

egress.timestamp

Unix timestamp, in milliseconds, of when the object exited the zone

egress.position

Contains latitude and longitude position, in decimal degrees, where the object exited the zone

egress.heading

Angle of the object, in radians, when it exited the zone. 0 is north

Sample

Volume
Total number of uniquely new objects that entered a zone. Objects will only be counted once across all sample periods and only on ingress of the zone
Speed
How fast travelers are moving
Length / Width / Height
The size of travelers
Headway / Gap
The time between travelers entering a zone
Dwell
How long travelers occupy a zone
Occupancy
The total time that the zone was occupied during the sample period. The image below may help with understanding how this value is calculated

Types
All the same data as above but broken down by object type (vehicle, pedestrian, cyclist, etc.). The data represented in each type set only includes objects of that type. So for example, even though many other object types may have occupied a zone, the occupancy time of that zone will be calculated only with objects of the same type
Classifications
All the same data as above but broken down by object classification (as reported by the sensor technology). The data represented in each classification set only includes objects of that classification. So for example, even though many other object classification may have occupied a zone, the occupancy time of that zone will be calculated only with objects of the same classification


User Interface

Sample Page

This page allows you to view samples aggregated from raw records. By default, it will show the most recently completed sample period. You are free to navigate from this by navigating forward/backward in time by using the arrows. You can even enter a specific date and time to grab sample data from that moment in time. You can change what the displayed sample period is by modifying the application's settings.

  1. Number of new unique objects for the displayed sample period
  2. Start time of the displayed sample period
  3. End time of the displayed sample period
  4. Time until the next sample period
  5. Sample group data, you can pick zones or aggregated
  6. Counts by traveler type (Integrator-AI)
  7. Counts by traveler classification (Sensor)
  8. Actions

    1. Dark blue: recall buttons, which allow you to navigate between sample periods
    2. Purple: view the most recently completed sample period
    3. Red: manually delete data
    4. Green: settings and reports
  9. Per object movement list from the sample period

Reports

Reports can be generated and downloaded from the user interface or REST API. They support formats of: CSV, Excel, and JSON

Click on the green button at the bottom right of the interface to open up the report dialog

  1. The report type you want to download
  2. Start date and time for the range of data
  3. Sub data type (if available for that report. mean, median, 85th percentile, etc.)
  4. The output format you want
  5. End date and time for the range of data
  6. Generate the report for download
  7. Bin size - how to split the data up in the report


Settings

The settings page allows you to configure the Object Analytics app
  1. Enable/disable the application
  2. Time period (duration) for the samples shown in the GUI. Default of 900 seconds (15 minutes) but you can set this as low as you want. Unlike the previous version, it now has no impact on how the data is collected or generated which means you can change this at anytime.
  3. Monitored zones. These are the zones that Object Analytics will collect data on. An aggregate group will be created automatically to combine all the selected zone data into an overall view. For intersections you should choose: stop bar and crosswalk zones. For highways you should choose: one zone per lane
  4. Maximum age for data. Any data older than this value will be deleted automatically. A value of 0 disables this function, and all data will be retained forever

The settings page allows you to configure the Object Analytics app
  1. Enable/disable the application
  2. Time period (duration) for the samples shown in the GUI. Default of 900 seconds (15 minutes) but you can set this as low as you want. Unlike the previous version, it now has no impact on how the data is collected or generated which means you can change this at anytime.
  3. Monitored zones. These are the zones that Object Analytics will collect data on. An aggregate group will be created automatically to combine all the selected zone data into an overall view. For intersections you should choose: stop bar and crosswalk zones. For highways you should choose: one zone per lane
  4. Lock cars to first zone they encounter
  5. Maximum age for data. Any data older than this value will be deleted automatically. A value of 0 disables this function, and all data will be retained forever
  6. Custom Classes. These are custom classifications

Reports

Taking advantage of our per-object-per-detection-zone records, we can generate many different kinds of reports.

💡

Most reports can be output in CSV, Excel, or JSON format

Time bins are a powerful and widely supported reporting feature. They take your individual records and organize them into the time intervals you specify. For example: Set the time bin to 15 minutes to see volume counts neatly grouped into 15-minute periods. This simple grouping makes it much easier to identify trends and observe how data changes over time. Most of our reports support a time bin setting.

✅

If there is a report that you don't see we support, please contact us and we'll be happy to add it to our development log

Volume
Object counts
Occupancy
Provides information on how long a zone was occupied. This report supports the following subtypes:

time - total time the zone was occupied
percent - percentage of time the zone was occupied
Speed
Provides information on object speed. This report supports the following subtypes:

mean - average value
median - middle value
max - max value observed
min - smallest value observed
85th - 85th percentile value
15th - 15th percentile value
Length
Provides information on object lengths. This report supports the following subtypes:

mean - average value
median - middle value
max - max value observed
min - smallest value observed
Width
Provides information on object widths. This report supports the following subtypes:

mean - average value
median - middle value
max - max value observed
min - smallest value observed
Height
Provides information on object heights. This report supports the following subtypes:

mean - average value
median - middle value
max - max value observed
min - smallest value observed
Headway
Provides information on object headways. This report supports the following subtypes:

mean - average value
median - middle value
max - max value observed
min - smallest value observed
Gap
Provides information on object gaps. This report supports the following subtypes:

mean - average value
median - middle value
max - max value observed
min - smallest value observed
Dwell
Provides information on object dwell times. This report supports the following subtypes:

mean - average value
median - middle value
max - max value observed
min - smallest value observed
Axles
Provides information on object axle counts. This report supports the following subtypes:

mean - average value
median - middle value
max - max value observed
min - smallest value observed
Chronology
Per-object-per-zone zone records

Custom Classes

Custom class report

REST API

/api/app/object-analytics

Settings

GET, PUT

Application configurations

/api/app/object-analytics/records

Raw data

GET, DELETE

Access and management of raw data

/api/app/object-analytics/samples

Aggregate data

GET

Generates a summary of statistics per-sample (this is the endpoint that the GUI uses)

/api/app/object-analytics/report/*

Report

GET

Aggregate data with selectable output formats and time bin sizes

PUT /api/app/object-analytics

Update app settings
💡
This endpoint will only update settings you include in the request. Settings no included in the request will remain as is. It's best to only include settings you intend to modify.
PUT /api/app/object-analytics HTTP/1.1
Host: 127.0.0.1
Accept: application/json
Content-Type: application/json
Authorization: bearer 109b893ceb1c26e3e64e9abf7cdd2aa1c0d25f61

{"settings":{"enabled":true,"time-period":30,"zones":[24,25,26,27],"db":{"limit":{"age":0}},"advanced":{"min-lifespan":150}}}

HTTP/1.1 200 OK
Content-Type: application/json
settings.enabled
boolean
Enable/disable the application
settings.time-period
number
Time, in seconds, for a sample period. Default is 900 seconds (15 minutes)
settings.zones
array[number]
A list of zone ID's to include in the aggregated data group. For intersections you should include crosswalks and stopbar zones only. For highways, just the travel lanes
settings.db.limit.age
number
Oldest age, in seconds, for stored samples. Any sample that is older than this age will be erased. A value of 0 indicates that there is no limit, and samples will be retained forever
settings.advanced.min-lifespan
number
Minimum lifespan an object must exist to be included in a sample. Helps filter out some noise from perception. Value is in milliseconds

GET /api/app/object-analytics

Get app settings
GET /api/app/object-analytics 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":"object-analytics","settings":{"_version_":[2,71],"advanced":{"min-lifespan":150},"db":{"advanced":{"min-lifespan":150},"limit":{"age":0}},"enabled":true,"time-period":30,"zones":[24,25,26,27]},"defaults":{"advanced":{"min-lifespan":0},"db":{"limit":{"age":0}},"enabled":false,"zones":null},"manifest":{"description":"Aggregates all object data to a central place for analytics","name":"Object Analytics","version":"1.0.0"}}}

GET /api/app/object-analytics/records?start={iso8601}&end={iso8601}

Fetch individual records (per object data) within a specified time frame
GET /api/app/object-analytics/records?start={iso8601}&end={iso8601} HTTP/1.1
Host: 127.0.0.1
Accept: application/json
Content-Type: application/json
Authorization: bearer 109b893ceb1c26e3e64e9abf7cdd2aa1c0d25f61
start
ISO8601 Date & Time
Start time of the range to search

/api/app/object-analytics/records?start=2025-06-16T12:15:30
end
ISO8601 Date & Time
End time of the range to search

/api/app/object-analytics/records?end=2025-06-16T12:15:30
HTTP/1.1 200 OK
Content-Type: application/json

{"records":[{"id":[4,1765823052617],"type":"vehicle","classification":"car","lwh":[4.39967155456543,1.9045064449310303,1.558181881904602],"speed":5.046957015991211,"headway":0,"gap":0,"dwell":2133,"axles":0,"zone":{"id":25,"name":"EBT-2"},"ingress":{"timestamp":1765823060217,"position":[42.35581588745117,-83.06690216064453]},"egress":{"timestamp":1765823062350,"position":[42.355857849121094,-83.06686401367188]}},{"id":[4,1765823052617],"type":"vehicle","classification":"car","lwh":[4.4531755447387695,1.8864558935165405,1.5629774332046509],"speed":4.9743523597717285,"headway":0,"gap":0,"dwell":2278,"axles":0,"zone":{"id":26,"name":"EBT-1"},"ingress":{"timestamp":1765823061333,"position":[42.355857849121094,-83.0668716430664]},"egress":{"timestamp":1765823063611,"position":[42.35589599609375,-83.06684875488281]}},{"id":[32,1765823056443],"type":"vehicle","classification":"car","lwh":[4.468292236328125,1.8930611610412598,1.6822701692581177],"speed":5.558854103088379,"headway":3005,"gap":2107,"dwell":32741,"axles":0,"zone":{"id":25,"name":"EBT-2"},"ingress":{"timestamp":1765823063222,"position":[42.3558235168457,-83.06690979003906]},"egress":{"timestamp":1765823095963,"position":[42.355892181396484,-83.06671142578125]}},{"id":[90,1765823085262],"type":"vehicle","classification":"car","lwh":[4.871607780456543,2.0230307579040527,1.9045602083206177],"speed":6.523082733154297,"headway":27884,"gap":27004,"dwell":6746,"axles":0,"zone":{"id":26,"name":"EBT-1"},"ingress":{"timestamp":1765823089217,"position":[42.35585403442383,-83.0669174194336]},"egress":{"timestamp":1765823095963,"position":[42.35591506958008,-83.06672668457031]}},{"id":[64,1765823066286],"type":"vehicle","classification":"truck","lwh":[5.891263484954834,2.2514395713806152,2.5658159255981445],"speed":0.6536338329315186,"headway":10127,"gap":9343,"dwell":26458,"axles":0,"zone":{"id":25,"name":"EBT-2"},"ingress":{"timestamp":1765823073350,"position":[42.35581970214844,-83.06690979003906]},"egress":{"timestamp":1765823099808,"position":[42.35588455200195,-83.06671142578125]}},{"id":[91,1765823085560],"type":"vehicle","classification":"car","lwh":[4.847478866577148,2.045687675476074,2.036525011062622],"speed":3.8770253658294678,"headway":0,"gap":0,"dwell":9842,"axles":0,"zone":{"id":24,"name":"EBT-3"},"ingress":{"timestamp":1765823091948,"position":[42.35579299926758,-83.06689453125]},"egress":{"timestamp":1765823101790,"position":[42.35586166381836,-83.06670379638672]}},{"id":[171,1765823138011],"type":"vehicle","classification":"car","lwh":[4.377324104309082,1.9076818227767944,1.6777452230453491],"speed":6.460484504699707,"headway":68298,"gap":67032,"dwell":2967,"axles":0,"zone":{"id":24,"name":"EBT-3"},"ingress":{"timestamp":1765823160247,"position":[42.35579299926758,-83.06689453125]},"egress":{"timestamp":1765823163214,"position":[42.355831146240234,-83.06673431396484]}},{"id":[171,1765823138011],"type":"vehicle","classification":"car","lwh":[4.364943504333496,1.8866900205612183,1.6319047212600708],"speed":4.25639009475708,"headway":0,"gap":0,"dwell":2005,"axles":0,"zone":{"id":23,"name":"EBR"},"ingress":{"timestamp":1765823162186,"position":[42.355831146240234,-83.06673431396484]},"egress":{"timestamp":1765823164191,"position":[42.35581970214844,-83.066650390625]}},{"id":[176,1765823149764],"type":"vehicle","classification":"car","lwh":[4.0828423500061035,1.8610484600067139,1.6853532791137695],"speed":6.763949871063232,"headway":2703,"gap":2015,"dwell":2139,"axles":0,"zone":{"id":24,"name":"EBT-3"},"ingress":{"timestamp":1765823162950,"position":[42.35579299926758,-83.06689453125]},"egress":{"timestamp":1765823165089,"position":[42.355838775634766,-83.06670379638672]}},{"id":[187,1765823162648],"type":"vehicle","classification":"car","lwh":[4.154888153076172,1.8488913774490356,1.5366885662078857],"speed":12.135679244995117,"headway":91262,"gap":82656,"dwell":763,"axles":0,"zone":{"id":25,"name":"EBT-2"},"ingress":{"timestamp":1765823164612,"position":[42.3558235168457,-83.06690216064453]},"egress":{"timestamp":1765823165375,"position":[42.355892181396484,-83.06670379638672]}},{"id":[176,1765823149764],"type":"vehicle","classification":"car","lwh":[4.094836711883545,1.85102117061615,1.6803605556488037],"speed":5.119199275970459,"headway":2155,"gap":1127,"dwell":1048,"axles":0,"zone":{"id":23,"name":"EBR"},"ingress":{"timestamp":1765823164341,"position":[42.355838775634766,-83.06670379638672]},"egress":{"timestamp":1765823165389,"position":[42.3558349609375,-83.06665802001953]}},{"id":[189,1765823163643],"type":"vehicle","classification":"car","lwh":[4.304990291595459,1.845689058303833,1.5399214029312134],"speed":5.339766025543213,"headway":75926,"gap":75210,"dwell":1545,"axles":0,"zone":{"id":26,"name":"EBT-1"},"ingress":{"timestamp":1765823165143,"position":[42.35585403442383,-83.06692504882812]},"egress":{"timestamp":1765823166688,"position":[42.355899810791016,-83.06684875488281]}}]}

GET /api/app/object-analytics/records?after={iso8601}

Fetch individual records (per object data) after a specified date and time
GET /api/app/object-analytics/records?after={iso8601} HTTP/1.1
Host: 127.0.0.1
Accept: application/json
Content-Type: application/json
Authorization: bearer 109b893ceb1c26e3e64e9abf7cdd2aa1c0d25f61
after
ISO8601 Date & Time
Fetch all records after this date/time

/api/app/object-analytics/records?after=2025-06-16T12:15:30
HTTP/1.1 200 OK
Content-Type: application/json

{"records":[{"id":[4,1765823052617],"type":"vehicle","classification":"car","lwh":[4.39967155456543,1.9045064449310303,1.558181881904602],"speed":5.046957015991211,"headway":0,"gap":0,"dwell":2133,"axles":0,"zone":{"id":25,"name":"EBT-2"},"ingress":{"timestamp":1765823060217,"position":[42.35581588745117,-83.06690216064453]},"egress":{"timestamp":1765823062350,"position":[42.355857849121094,-83.06686401367188]}},{"id":[4,1765823052617],"type":"vehicle","classification":"car","lwh":[4.4531755447387695,1.8864558935165405,1.5629774332046509],"speed":4.9743523597717285,"headway":0,"gap":0,"dwell":2278,"axles":0,"zone":{"id":26,"name":"EBT-1"},"ingress":{"timestamp":1765823061333,"position":[42.355857849121094,-83.0668716430664]},"egress":{"timestamp":1765823063611,"position":[42.35589599609375,-83.06684875488281]}},{"id":[32,1765823056443],"type":"vehicle","classification":"car","lwh":[4.468292236328125,1.8930611610412598,1.6822701692581177],"speed":5.558854103088379,"headway":3005,"gap":2107,"dwell":32741,"axles":0,"zone":{"id":25,"name":"EBT-2"},"ingress":{"timestamp":1765823063222,"position":[42.3558235168457,-83.06690979003906]},"egress":{"timestamp":1765823095963,"position":[42.355892181396484,-83.06671142578125]}},{"id":[90,1765823085262],"type":"vehicle","classification":"car","lwh":[4.871607780456543,2.0230307579040527,1.9045602083206177],"speed":6.523082733154297,"headway":27884,"gap":27004,"dwell":6746,"axles":0,"zone":{"id":26,"name":"EBT-1"},"ingress":{"timestamp":1765823089217,"position":[42.35585403442383,-83.0669174194336]},"egress":{"timestamp":1765823095963,"position":[42.35591506958008,-83.06672668457031]}},{"id":[64,1765823066286],"type":"vehicle","classification":"truck","lwh":[5.891263484954834,2.2514395713806152,2.5658159255981445],"speed":0.6536338329315186,"headway":10127,"gap":9343,"dwell":26458,"axles":0,"zone":{"id":25,"name":"EBT-2"},"ingress":{"timestamp":1765823073350,"position":[42.35581970214844,-83.06690979003906]},"egress":{"timestamp":1765823099808,"position":[42.35588455200195,-83.06671142578125]}},{"id":[91,1765823085560],"type":"vehicle","classification":"car","lwh":[4.847478866577148,2.045687675476074,2.036525011062622],"speed":3.8770253658294678,"headway":0,"gap":0,"dwell":9842,"axles":0,"zone":{"id":24,"name":"EBT-3"},"ingress":{"timestamp":1765823091948,"position":[42.35579299926758,-83.06689453125]},"egress":{"timestamp":1765823101790,"position":[42.35586166381836,-83.06670379638672]}},{"id":[171,1765823138011],"type":"vehicle","classification":"car","lwh":[4.377324104309082,1.9076818227767944,1.6777452230453491],"speed":6.460484504699707,"headway":68298,"gap":67032,"dwell":2967,"axles":0,"zone":{"id":24,"name":"EBT-3"},"ingress":{"timestamp":1765823160247,"position":[42.35579299926758,-83.06689453125]},"egress":{"timestamp":1765823163214,"position":[42.355831146240234,-83.06673431396484]}},{"id":[171,1765823138011],"type":"vehicle","classification":"car","lwh":[4.364943504333496,1.8866900205612183,1.6319047212600708],"speed":4.25639009475708,"headway":0,"gap":0,"dwell":2005,"axles":0,"zone":{"id":23,"name":"EBR"},"ingress":{"timestamp":1765823162186,"position":[42.355831146240234,-83.06673431396484]},"egress":{"timestamp":1765823164191,"position":[42.35581970214844,-83.066650390625]}},{"id":[176,1765823149764],"type":"vehicle","classification":"car","lwh":[4.0828423500061035,1.8610484600067139,1.6853532791137695],"speed":6.763949871063232,"headway":2703,"gap":2015,"dwell":2139,"axles":0,"zone":{"id":24,"name":"EBT-3"},"ingress":{"timestamp":1765823162950,"position":[42.35579299926758,-83.06689453125]},"egress":{"timestamp":1765823165089,"position":[42.355838775634766,-83.06670379638672]}},{"id":[187,1765823162648],"type":"vehicle","classification":"car","lwh":[4.154888153076172,1.8488913774490356,1.5366885662078857],"speed":12.135679244995117,"headway":91262,"gap":82656,"dwell":763,"axles":0,"zone":{"id":25,"name":"EBT-2"},"ingress":{"timestamp":1765823164612,"position":[42.3558235168457,-83.06690216064453]},"egress":{"timestamp":1765823165375,"position":[42.355892181396484,-83.06670379638672]}},{"id":[176,1765823149764],"type":"vehicle","classification":"car","lwh":[4.094836711883545,1.85102117061615,1.6803605556488037],"speed":5.119199275970459,"headway":2155,"gap":1127,"dwell":1048,"axles":0,"zone":{"id":23,"name":"EBR"},"ingress":{"timestamp":1765823164341,"position":[42.355838775634766,-83.06670379638672]},"egress":{"timestamp":1765823165389,"position":[42.3558349609375,-83.06665802001953]}},{"id":[189,1765823163643],"type":"vehicle","classification":"car","lwh":[4.304990291595459,1.845689058303833,1.5399214029312134],"speed":5.339766025543213,"headway":75926,"gap":75210,"dwell":1545,"axles":0,"zone":{"id":26,"name":"EBT-1"},"ingress":{"timestamp":1765823165143,"position":[42.35585403442383,-83.06692504882812]},"egress":{"timestamp":1765823166688,"position":[42.355899810791016,-83.06684875488281]}}]}

GET /api/app/object-analytics/records?before={iso8601}

Fetch individual records (per object data) before a specified date and time
GET /api/app/object-analytics/records?before={iso8601} HTTP/1.1
Host: 127.0.0.1
Accept: application/json
Content-Type: application/json
Authorization: bearer 109b893ceb1c26e3e64e9abf7cdd2aa1c0d25f61
before
ISO8601 Date & Time
Fetch all records before this date/time

/api/app/object-analytics/records?before=2025-06-16T12:15:30
HTTP/1.1 200 OK
Content-Type: application/json

{"records":[{"id":[4,1765823052617],"type":"vehicle","classification":"car","lwh":[4.39967155456543,1.9045064449310303,1.558181881904602],"speed":5.046957015991211,"headway":0,"gap":0,"dwell":2133,"axles":0,"zone":{"id":25,"name":"EBT-2"},"ingress":{"timestamp":1765823060217,"position":[42.35581588745117,-83.06690216064453]},"egress":{"timestamp":1765823062350,"position":[42.355857849121094,-83.06686401367188]}},{"id":[4,1765823052617],"type":"vehicle","classification":"car","lwh":[4.4531755447387695,1.8864558935165405,1.5629774332046509],"speed":4.9743523597717285,"headway":0,"gap":0,"dwell":2278,"axles":0,"zone":{"id":26,"name":"EBT-1"},"ingress":{"timestamp":1765823061333,"position":[42.355857849121094,-83.0668716430664]},"egress":{"timestamp":1765823063611,"position":[42.35589599609375,-83.06684875488281]}},{"id":[32,1765823056443],"type":"vehicle","classification":"car","lwh":[4.468292236328125,1.8930611610412598,1.6822701692581177],"speed":5.558854103088379,"headway":3005,"gap":2107,"dwell":32741,"axles":0,"zone":{"id":25,"name":"EBT-2"},"ingress":{"timestamp":1765823063222,"position":[42.3558235168457,-83.06690979003906]},"egress":{"timestamp":1765823095963,"position":[42.355892181396484,-83.06671142578125]}},{"id":[90,1765823085262],"type":"vehicle","classification":"car","lwh":[4.871607780456543,2.0230307579040527,1.9045602083206177],"speed":6.523082733154297,"headway":27884,"gap":27004,"dwell":6746,"axles":0,"zone":{"id":26,"name":"EBT-1"},"ingress":{"timestamp":1765823089217,"position":[42.35585403442383,-83.0669174194336]},"egress":{"timestamp":1765823095963,"position":[42.35591506958008,-83.06672668457031]}},{"id":[64,1765823066286],"type":"vehicle","classification":"truck","lwh":[5.891263484954834,2.2514395713806152,2.5658159255981445],"speed":0.6536338329315186,"headway":10127,"gap":9343,"dwell":26458,"axles":0,"zone":{"id":25,"name":"EBT-2"},"ingress":{"timestamp":1765823073350,"position":[42.35581970214844,-83.06690979003906]},"egress":{"timestamp":1765823099808,"position":[42.35588455200195,-83.06671142578125]}},{"id":[91,1765823085560],"type":"vehicle","classification":"car","lwh":[4.847478866577148,2.045687675476074,2.036525011062622],"speed":3.8770253658294678,"headway":0,"gap":0,"dwell":9842,"axles":0,"zone":{"id":24,"name":"EBT-3"},"ingress":{"timestamp":1765823091948,"position":[42.35579299926758,-83.06689453125]},"egress":{"timestamp":1765823101790,"position":[42.35586166381836,-83.06670379638672]}},{"id":[171,1765823138011],"type":"vehicle","classification":"car","lwh":[4.377324104309082,1.9076818227767944,1.6777452230453491],"speed":6.460484504699707,"headway":68298,"gap":67032,"dwell":2967,"axles":0,"zone":{"id":24,"name":"EBT-3"},"ingress":{"timestamp":1765823160247,"position":[42.35579299926758,-83.06689453125]},"egress":{"timestamp":1765823163214,"position":[42.355831146240234,-83.06673431396484]}},{"id":[171,1765823138011],"type":"vehicle","classification":"car","lwh":[4.364943504333496,1.8866900205612183,1.6319047212600708],"speed":4.25639009475708,"headway":0,"gap":0,"dwell":2005,"axles":0,"zone":{"id":23,"name":"EBR"},"ingress":{"timestamp":1765823162186,"position":[42.355831146240234,-83.06673431396484]},"egress":{"timestamp":1765823164191,"position":[42.35581970214844,-83.066650390625]}},{"id":[176,1765823149764],"type":"vehicle","classification":"car","lwh":[4.0828423500061035,1.8610484600067139,1.6853532791137695],"speed":6.763949871063232,"headway":2703,"gap":2015,"dwell":2139,"axles":0,"zone":{"id":24,"name":"EBT-3"},"ingress":{"timestamp":1765823162950,"position":[42.35579299926758,-83.06689453125]},"egress":{"timestamp":1765823165089,"position":[42.355838775634766,-83.06670379638672]}},{"id":[187,1765823162648],"type":"vehicle","classification":"car","lwh":[4.154888153076172,1.8488913774490356,1.5366885662078857],"speed":12.135679244995117,"headway":91262,"gap":82656,"dwell":763,"axles":0,"zone":{"id":25,"name":"EBT-2"},"ingress":{"timestamp":1765823164612,"position":[42.3558235168457,-83.06690216064453]},"egress":{"timestamp":1765823165375,"position":[42.355892181396484,-83.06670379638672]}},{"id":[176,1765823149764],"type":"vehicle","classification":"car","lwh":[4.094836711883545,1.85102117061615,1.6803605556488037],"speed":5.119199275970459,"headway":2155,"gap":1127,"dwell":1048,"axles":0,"zone":{"id":23,"name":"EBR"},"ingress":{"timestamp":1765823164341,"position":[42.355838775634766,-83.06670379638672]},"egress":{"timestamp":1765823165389,"position":[42.3558349609375,-83.06665802001953]}},{"id":[189,1765823163643],"type":"vehicle","classification":"car","lwh":[4.304990291595459,1.845689058303833,1.5399214029312134],"speed":5.339766025543213,"headway":75926,"gap":75210,"dwell":1545,"axles":0,"zone":{"id":26,"name":"EBT-1"},"ingress":{"timestamp":1765823165143,"position":[42.35585403442383,-83.06692504882812]},"egress":{"timestamp":1765823166688,"position":[42.355899810791016,-83.06684875488281]}}]}

DELETE /api/app/object-analytics/records

Delete all records in the database

DELETE /api/app/object-analytics/records HTTP/1.1
Host: 127.0.0.1
Accept: application/json
Content-Type: application/json
Authorization: bearer 109b893ceb1c26e3e64e9abf7cdd2aa1c0d25f61

HTTP/1.1 200 OK
Content-Type: application/json

DELETE /api/app/object-analytics/records?start={iso8601}&end={iso8601}

Delete all records that occurred during the specified time span

DELETE /api/app/object-analytics/records?start={iso8601}&end={iso8601} HTTP/1.1
Host: 127.0.0.1
Accept: application/json
Content-Type: application/json
Authorization: bearer 109b893ceb1c26e3e64e9abf7cdd2aa1c0d25f61
start
ISO8601
Start time of the range to search

/api/app/object-analytics/records?start=2025-06-16T12:15:30
end
ISO8601
End time of the range to search

/api/app/object-analytics/records?end=2025-06-16T12:15:30
HTTP/1.1 200 OK
Content-Type: application/json

DELETE /api/app/object-analytics/records?before={iso8601}

Delete all records that occurred before this date and time

DELETE /api/app/object-analytics/records?before={iso8601} HTTP/1.1
Host: 127.0.0.1
Accept: application/json
Content-Type: application/json
Authorization: bearer 109b893ceb1c26e3e64e9abf7cdd2aa1c0d25f61
before
ISO8601
Delete all samples before this date and time

/api/app/object-analytics/records?before=2025-06-16T12:15:30
HTTP/1.1 200 OK
Content-Type: application/json

DELETE /api/app/object-analytics/records?after={iso8601}

Delete all records that occurred after this date and time

DELETE /api/app/object-analytics/records?after={iso8601} HTTP/1.1
Host: 127.0.0.1
Accept: application/json
Content-Type: application/json
Authorization: bearer 109b893ceb1c26e3e64e9abf7cdd2aa1c0d25f61
after
ISO8601
Delete all samples after this date and time

/api/app/object-analytics/records?after=2025-06-16T12:15:30

HTTP/1.1 200 OK
Content-Type: application/json

GET /api/app/object-analytics/samples

Fetch the most recently completed sample data
GET /api/app/object-analytics/samples HTTP/1.1
Host: 127.0.0.1
Accept: application/json
Content-Type: application/json
Authorization: bearer 109b893ceb1c26e3e64e9abf7cdd2aa1c0d25f61
q
array
Request additional query information:

/api/app/object-analytics/samples?q=next - return the timestamp and remaining time of when the next sample period will be generated
HTTP/1.1 200 OK
Content-Type: application/json

{"sample":{"start":1750094490,"end":1750094520,"duration":30000,"aggregated":{"volume":28,"observed":28,"speed":{"min":1.4765090942382812,"max":10.10147762298584,"mean":5.487825393676758,"median":5.343478202819824,"85th":7.170822620391846,"15th":3.6417243480682373},"occupancy":{"time":22488,"percent":74.96000000000001},"dwell":{"min":536,"max":7233,"mean":1803,"median":1609},"headway":{"min":100,"max":32632,"mean":4988,"median":2052},"gap":{"min":0,"max":32138,"mean":4312,"median":1074},"length":{"min":1.3386824131011963,"max":5.537214279174805,"mean":4.069427967071533,"median":4.257318019866943},"width":{"min":0.0887308120727539,"max":4.14466667175293,"mean":1.6158432960510254,"median":1.5549815893173218},"height":{"min":0.46396404504776,"max":1.744057297706604,"mean":1.3102593421936035,"median":1.3036572933197021},"types":[{"volume":24,"observed":24,"speed":{"min":1.4765090942382812,"max":10.10147762298584,"mean":5.5646772384643555,"median":5.3851704597473145,"85th":7.137270450592041,"15th":4.264405727386475},"occupancy":{"time":22496,"percent":74.98666666666666},"dwell":{"min":1052,"max":7233,"mean":1827,"median":1609},"headway":{"min":100,"max":29729,"mean":3910,"median":2002},"gap":{"min":0,"max":29311,"mean":3183,"median":1052},"length":{"min":1.6432113647460938,"max":5.168470859527588,"mean":4.1441850662231445,"median":4.251163482666016},"width":{"min":0.6187005043029785,"max":4.14466667175293,"mean":1.6481684446334839,"median":1.5549815893173218},"height":{"min":0.9764110445976257,"max":1.744057297706604,"mean":1.3140606880187988,"median":1.2980930805206299},"id":1,"name":"vehicle"},{"volume":4,"observed":4,"speed":{"min":1.7459315061569214,"max":9.633935928344727,"mean":4.903753280639648,"median":3.4452242851257324,"85th":7.825623035430908,"15th":2.5425286293029785},"occupancy":{"time":5983,"percent":19.94333333333333},"dwell":{"min":536,"max":2585,"mean":1595,"median":1630},"headway":{"min":250,"max":32632,"mean":13182,"median":8908},"gap":{"min":0,"max":32138,"mean":12891,"median":8908},"length":{"min":1.3386824131011963,"max":5.537214279174805,"mean":3.501274347305298,"median":4.289007186889648},"width":{"min":0.0887308120727539,"max":1.9110143184661865,"mean":1.370172381401062,"median":1.893536925315857},"height":{"min":0.46396404504776,"max":1.6946947574615479,"mean":1.2813687324523926,"median":1.4402340650558472},"id":0,"name":"unclassified"}],"classifications":[{"volume":24,"observed":24,"speed":{"min":1.4765090942382812,"max":10.10147762298584,"mean":5.5646772384643555,"median":5.3851704597473145,"85th":7.137270450592041,"15th":4.264405727386475},"occupancy":{"time":22496,"percent":74.98666666666666},"dwell":{"min":1052,"max":7233,"mean":1827,"median":1609},"headway":{"min":100,"max":29729,"mean":3910,"median":2002},"gap":{"min":0,"max":29311,"mean":3183,"median":1052},"length":{"min":1.6432113647460938,"max":5.168470859527588,"mean":4.1441850662231445,"median":4.251163482666016},"width":{"min":0.6187005043029785,"max":4.14466667175293,"mean":1.6481684446334839,"median":1.5549815893173218},"height":{"min":0.9764110445976257,"max":1.744057297706604,"mean":1.3140606880187988,"median":1.2980930805206299},"name":"car"},{"volume":4,"observed":4,"speed":{"min":1.7459315061569214,"max":9.633935928344727,"mean":4.903753280639648,"median":3.4452242851257324,"85th":7.825623035430908,"15th":2.5425286293029785},"occupancy":{"time":5983,"percent":19.94333333333333},"dwell":{"min":536,"max":2585,"mean":1595,"median":1630},"headway":{"min":250,"max":32632,"mean":13182,"median":8908},"gap":{"min":0,"max":32138,"mean":12891,"median":8908},"length":{"min":1.3386824131011963,"max":5.537214279174805,"mean":3.501274347305298,"median":4.289007186889648},"width":{"min":0.0887308120727539,"max":1.9110143184661865,"mean":1.370172381401062,"median":1.893536925315857},"height":{"min":0.46396404504776,"max":1.6946947574615479,"mean":1.2813687324523926,"median":1.4402340650558472},"name":"unknown"}]},"zones":[{"volume":0,"observed":2,"speed":{"min":0,"max":0,"mean":0,"median":0,"85th":0,"15th":0},"occupancy":{"time":27447,"percent":91.49000000000001},"dwell":{"min":14310,"max":30316,"mean":22313,"median":22313},"headway":{"min":0,"max":0,"mean":0,"median":0},"gap":{"min":0,"max":0,"mean":0,"median":0},"length":{"min":0,"max":0,"mean":0,"median":0},"width":{"min":0,"max":0,"mean":0,"median":0},"height":{"min":0,"max":0,"mean":0,"median":0},"types":[{"volume":0,"observed":1,"speed":{"min":0,"max":0,"mean":0,"median":0,"85th":0,"15th":0},"occupancy":{"time":9991,"percent":33.303333333333335},"dwell":{"min":14310,"max":14310,"mean":14310,"median":14310},"headway":{"min":0,"max":0,"mean":0,"median":0},"gap":{"min":0,"max":0,"mean":0,"median":0},"length":{"min":0,"max":0,"mean":0,"median":0},"width":{"min":0,"max":0,"mean":0,"median":0},"height":{"min":0,"max":0,"mean":0,"median":0},"id":1,"name":"vehicle"},{"volume":0,"observed":1,"speed":{"min":0,"max":0,"mean":0,"median":0,"85th":0,"15th":0},"occupancy":{"time":27448,"percent":91.49333333333334},"dwell":{"min":30316,"max":30316,"mean":30316,"median":30316},"headway":{"min":0,"max":0,"mean":0,"median":0},"gap":{"min":0,"max":0,"mean":0,"median":0},"length":{"min":0,"max":0,"mean":0,"median":0},"width":{"min":0,"max":0,"mean":0,"median":0},"height":{"min":0,"max":0,"mean":0,"median":0},"id":0,"name":"unclassified"}],"classifications":[{"volume":0,"observed":1,"speed":{"min":0,"max":0,"mean":0,"median":0,"85th":0,"15th":0},"occupancy":{"time":9991,"percent":33.303333333333335},"dwell":{"min":14310,"max":14310,"mean":14310,"median":14310},"headway":{"min":0,"max":0,"mean":0,"median":0},"gap":{"min":0,"max":0,"mean":0,"median":0},"length":{"min":0,"max":0,"mean":0,"median":0},"width":{"min":0,"max":0,"mean":0,"median":0},"height":{"min":0,"max":0,"mean":0,"median":0},"name":"car"},{"volume":0,"observed":1,"speed":{"min":0,"max":0,"mean":0,"median":0,"85th":0,"15th":0},"occupancy":{"time":27448,"percent":91.49333333333334},"dwell":{"min":30316,"max":30316,"mean":30316,"median":30316},"headway":{"min":0,"max":0,"mean":0,"median":0},"gap":{"min":0,"max":0,"mean":0,"median":0},"length":{"min":0,"max":0,"mean":0,"median":0},"width":{"min":0,"max":0,"mean":0,"median":0},"height":{"min":0,"max":0,"mean":0,"median":0},"name":"unknown"}],"id":34,"name":"zone_11"},{"volume":0,"observed":0,"speed":{"min":0,"max":0,"mean":0,"median":0,"85th":0,"15th":0},"occupancy":{"time":0,"percent":0},"dwell":{"min":0,"max":0,"mean":0,"median":0},"headway":{"min":0,"max":0,"mean":0,"median":0},"gap":{"min":0,"max":0,"mean":0,"median":0},"length":{"min":0,"max":0,"mean":0,"median":0},"width":{"min":0,"max":0,"mean":0,"median":0},"height":{"min":0,"max":0,"mean":0,"median":0},"types":[],"classifications":[],"id":22,"name":"zone_15"},{"volume":2,"observed":2,"speed":{"min":1.3037335872650146,"max":3.2775156497955322,"mean":2.2906246185302734,"median":2.2906246185302734,"85th":2.9814484119415283,"15th":1.599800944328308},"occupancy":{"time":9629,"percent":32.09666666666667},"dwell":{"min":2537,"max":2537,"mean":2537,"median":2537},"headway":{"min":2752,"max":32082,"mean":17417,"median":17417},"gap":{"min":2752,"max":32082,"mean":17417,"median":17417},"length":{"min":1.3386824131011963,"max":1.813393473625183,"mean":1.576037883758545,"median":1.576037883758545},"width":{"min":0.07591628283262253,"max":1.0640428066253662,"mean":0.5699795484542847,"median":0.5699795484542847},"height":{"min":0.4414156377315521,"max":0.46396404504776,"mean":0.4526898264884949,"median":0.4526898264884949},"types":[{"volume":2,"observed":2,"speed":{"min":1.3037335872650146,"max":3.2775156497955322,"mean":2.2906246185302734,"median":2.2906246185302734,"85th":2.9814484119415283,"15th":1.599800944328308},"occupancy":{"time":9629,"percent":32.09666666666667},"dwell":{"min":2537,"max":2537,"mean":2537,"median":2537},"headway":{"min":2752,"max":32082,"mean":17417,"median":17417},"gap":{"min":2752,"max":32082,"mean":17417,"median":17417},"length":{"min":1.3386824131011963,"max":1.813393473625183,"mean":1.576037883758545,"median":1.576037883758545},"width":{"min":0.07591628283262253,"max":1.0640428066253662,"mean":0.5699795484542847,"median":0.5699795484542847},"height":{"min":0.4414156377315521,"max":0.46396404504776,"mean":0.4526898264884949,"median":0.4526898264884949},"id":0,"name":"unclassified"}],"classifications":[{"volume":2,"observed":2,"speed":{"min":1.3037335872650146,"max":3.2775156497955322,"mean":2.2906246185302734,"median":2.2906246185302734,"85th":2.9814484119415283,"15th":1.599800944328308},"occupancy":{"time":9629,"percent":32.09666666666667},"dwell":{"min":2537,"max":2537,"mean":2537,"median":2537},"headway":{"min":2752,"max":32082,"mean":17417,"median":17417},"gap":{"min":2752,"max":32082,"mean":17417,"median":17417},"length":{"min":1.3386824131011963,"max":1.813393473625183,"mean":1.576037883758545,"median":1.576037883758545},"width":{"min":0.07591628283262253,"max":1.0640428066253662,"mean":0.5699795484542847,"median":0.5699795484542847},"height":{"min":0.4414156377315521,"max":0.46396404504776,"mean":0.4526898264884949,"median":0.4526898264884949},"name":"unknown"}],"id":35,"name":"zone_2"},{"volume":1,"observed":2,"speed":{"min":0.09013346582651138,"max":0.09013346582651138,"mean":0.09013346582651138,"median":0.09013346582651138,"85th":0.09013346582651138,"15th":0.09013346582651138},"occupancy":{"time":29999,"percent":99.99666666666667},"dwell":{"min":30924,"max":145946,"mean":88435,"median":88435},"headway":{"min":37388,"max":37388,"mean":37388,"median":37388},"gap":{"min":37388,"max":37388,"mean":37388,"median":37388},"length":{"min":1.813393473625183,"max":1.813393473625183,"mean":1.813393473625183,"median":1.813393473625183},"width":{"min":0.07591628283262253,"max":0.07591628283262253,"mean":0.07591628283262253,"median":0.07591628283262253},"height":{"min":0.4414156377315521,"max":0.4414156377315521,"mean":0.4414156377315521,"median":0.4414156377315521},"types":[{"volume":1,"observed":1,"speed":{"min":0.09013346582651138,"max":0.09013346582651138,"mean":0.09013346582651138,"median":0.09013346582651138,"85th":0.09013346582651138,"15th":0.09013346582651138},"occupancy":{"time":7292,"percent":24.306666666666665},"dwell":{"min":145946,"max":145946,"mean":145946,"median":145946},"headway":{"min":37388,"max":37388,"mean":37388,"median":37388},"gap":{"min":37388,"max":37388,"mean":37388,"median":37388},"length":{"min":1.813393473625183,"max":1.813393473625183,"mean":1.813393473625183,"median":1.813393473625183},"width":{"min":0.07591628283262253,"max":0.07591628283262253,"mean":0.07591628283262253,"median":0.07591628283262253},"height":{"min":0.4414156377315521,"max":0.4414156377315521,"mean":0.4414156377315521,"median":0.4414156377315521},"id":0,"name":"unclassified"},{"volume":0,"observed":1,"speed":{"min":0,"max":0,"mean":0,"median":0,"85th":0,"15th":0},"occupancy":{"time":26605,"percent":88.68333333333334},"dwell":{"min":30924,"max":30924,"mean":30924,"median":30924},"headway":{"min":0,"max":0,"mean":0,"median":0},"gap":{"min":0,"max":0,"mean":0,"median":0},"length":{"min":0,"max":0,"mean":0,"median":0},"width":{"min":0,"max":0,"mean":0,"median":0},"height":{"min":0,"max":0,"mean":0,"median":0},"id":1,"name":"vehicle"}],"classifications":[{"volume":1,"observed":1,"speed":{"min":0.09013346582651138,"max":0.09013346582651138,"mean":0.09013346582651138,"median":0.09013346582651138,"85th":0.09013346582651138,"15th":0.09013346582651138},"occupancy":{"time":7292,"percent":24.306666666666665},"dwell":{"min":145946,"max":145946,"mean":145946,"median":145946},"headway":{"min":37388,"max":37388,"mean":37388,"median":37388},"gap":{"min":37388,"max":37388,"mean":37388,"median":37388},"length":{"min":1.813393473625183,"max":1.813393473625183,"mean":1.813393473625183,"median":1.813393473625183},"width":{"min":0.07591628283262253,"max":0.07591628283262253,"mean":0.07591628283262253,"median":0.07591628283262253},"height":{"min":0.4414156377315521,"max":0.4414156377315521,"mean":0.4414156377315521,"median":0.4414156377315521},"name":"unknown"},{"volume":0,"observed":1,"speed":{"min":0,"max":0,"mean":0,"median":0,"85th":0,"15th":0},"occupancy":{"time":26605,"percent":88.68333333333334},"dwell":{"min":30924,"max":30924,"mean":30924,"median":30924},"headway":{"min":0,"max":0,"mean":0,"median":0},"gap":{"min":0,"max":0,"mean":0,"median":0},"length":{"min":0,"max":0,"mean":0,"median":0},"width":{"min":0,"max":0,"mean":0,"median":0},"height":{"min":0,"max":0,"mean":0,"median":0},"name":"car"}],"id":36,"name":"zone_3"},{"volume":1,"observed":2,"speed":{"min":2.7665507793426514,"max":2.7665507793426514,"mean":2.7665507793426514,"median":2.7665507793426514,"85th":2.7665507793426514,"15th":2.7665507793426514},"occupancy":{"time":29999,"percent":99.99666666666667},"dwell":{"min":0,"max":0,"mean":0,"median":0},"headway":{"min":20470,"max":20470,"mean":20470,"median":20470},"gap":{"min":20470,"max":20470,"mean":20470,"median":20470},"length":{"min":1.254651427268982,"max":1.254651427268982,"mean":1.254651427268982,"median":1.254651427268982},"width":{"min":1.1618540287017822,"max":1.1618540287017822,"mean":1.1618540287017822,"median":1.1618540287017822},"height":{"min":0.46125727891921997,"max":0.46125727891921997,"mean":0.46125727891921997,"median":0.46125727891921997},"types":[{"volume":1,"observed":1,"speed":{"min":2.7665507793426514,"max":2.7665507793426514,"mean":2.7665507793426514,"median":2.7665507793426514,"85th":2.7665507793426514,"15th":2.7665507793426514},"occupancy":{"time":10245,"percent":34.150000000000006},"dwell":{"min":0,"max":0,"mean":0,"median":0},"headway":{"min":20470,"max":20470,"mean":20470,"median":20470},"gap":{"min":20470,"max":20470,"mean":20470,"median":20470},"length":{"min":1.254651427268982,"max":1.254651427268982,"mean":1.254651427268982,"median":1.254651427268982},"width":{"min":1.1618540287017822,"max":1.1618540287017822,"mean":1.1618540287017822,"median":1.1618540287017822},"height":{"min":0.46125727891921997,"max":0.46125727891921997,"mean":0.46125727891921997,"median":0.46125727891921997},"id":0,"name":"unclassified"},{"volume":0,"observed":1,"speed":{"min":0,"max":0,"mean":0,"median":0,"85th":0,"15th":0},"occupancy":{"time":30000,"percent":100},"dwell":{"min":0,"max":0,"mean":0,"median":0},"headway":{"min":0,"max":0,"mean":0,"median":0},"gap":{"min":0,"max":0,"mean":0,"median":0},"length":{"min":0,"max":0,"mean":0,"median":0},"width":{"min":0,"max":0,"mean":0,"median":0},"height":{"min":0,"max":0,"mean":0,"median":0},"id":1,"name":"vehicle"}],"classifications":[{"volume":1,"observed":1,"speed":{"min":2.7665507793426514,"max":2.7665507793426514,"mean":2.7665507793426514,"median":2.7665507793426514,"85th":2.7665507793426514,"15th":2.7665507793426514},"occupancy":{"time":10245,"percent":34.150000000000006},"dwell":{"min":0,"max":0,"mean":0,"median":0},"headway":{"min":20470,"max":20470,"mean":20470,"median":20470},"gap":{"min":20470,"max":20470,"mean":20470,"median":20470},"length":{"min":1.254651427268982,"max":1.254651427268982,"mean":1.254651427268982,"median":1.254651427268982},"width":{"min":1.1618540287017822,"max":1.1618540287017822,"mean":1.1618540287017822,"median":1.1618540287017822},"height":{"min":0.46125727891921997,"max":0.46125727891921997,"mean":0.46125727891921997,"median":0.46125727891921997},"name":"unknown"},{"volume":0,"observed":1,"speed":{"min":0,"max":0,"mean":0,"median":0,"85th":0,"15th":0},"occupancy":{"time":30000,"percent":100},"dwell":{"min":0,"max":0,"mean":0,"median":0},"headway":{"min":0,"max":0,"mean":0,"median":0},"gap":{"min":0,"max":0,"mean":0,"median":0},"length":{"min":0,"max":0,"mean":0,"median":0},"width":{"min":0,"max":0,"mean":0,"median":0},"height":{"min":0,"max":0,"mean":0,"median":0},"name":"car"}],"id":21,"name":"zone_10"},{"volume":0,"observed":1,"speed":{"min":0,"max":0,"mean":0,"median":0,"85th":0,"15th":0},"occupancy":{"time":30000,"percent":100},"dwell":{"min":0,"max":0,"mean":0,"median":0},"headway":{"min":0,"max":0,"mean":0,"median":0},"gap":{"min":0,"max":0,"mean":0,"median":0},"length":{"min":0,"max":0,"mean":0,"median":0},"width":{"min":0,"max":0,"mean":0,"median":0},"height":{"min":0,"max":0,"mean":0,"median":0},"types":[{"volume":0,"observed":1,"speed":{"min":0,"max":0,"mean":0,"median":0,"85th":0,"15th":0},"occupancy":{"time":30000,"percent":100},"dwell":{"min":0,"max":0,"mean":0,"median":0},"headway":{"min":0,"max":0,"mean":0,"median":0},"gap":{"min":0,"max":0,"mean":0,"median":0},"length":{"min":0,"max":0,"mean":0,"median":0},"width":{"min":0,"max":0,"mean":0,"median":0},"height":{"min":0,"max":0,"mean":0,"median":0},"id":1,"name":"vehicle"}],"classifications":[{"volume":0,"observed":1,"speed":{"min":0,"max":0,"mean":0,"median":0,"85th":0,"15th":0},"occupancy":{"time":30000,"percent":100},"dwell":{"min":0,"max":0,"mean":0,"median":0},"headway":{"min":0,"max":0,"mean":0,"median":0},"gap":{"min":0,"max":0,"mean":0,"median":0},"length":{"min":0,"max":0,"mean":0,"median":0},"width":{"min":0,"max":0,"mean":0,"median":0},"height":{"min":0,"max":0,"mean":0,"median":0},"name":"car"}],"id":20,"name":"zone_1"},{"volume":2,"observed":3,"speed":{"min":1.1686941385269165,"max":2.083019971847534,"mean":1.6258571147918701,"median":1.6258571147918701,"85th":1.945871114730835,"15th":1.3058429956436157},"occupancy":{"time":29997,"percent":99.99},"dwell":{"min":2259,"max":2259,"mean":2259,"median":2259},"headway":{"min":1150,"max":21571,"mean":11360,"median":11360},"gap":{"min":383,"max":21571,"mean":10977,"median":10977},"length":{"min":1.254651427268982,"max":1.585039734840393,"mean":1.4198455810546875,"median":1.4198455810546875},"width":{"min":0.4656212031841278,"max":1.1618540287017822,"mean":0.8137376308441162,"median":0.8137376308441162},"height":{"min":0.46125727891921997,"max":0.7398056387901306,"mean":0.6005314588546753,"median":0.6005314588546753},"types":[{"volume":2,"observed":2,"speed":{"min":1.1686941385269165,"max":2.083019971847534,"mean":1.6258571147918701,"median":1.6258571147918701,"85th":1.945871114730835,"15th":1.3058429956436157},"occupancy":{"time":21755,"percent":72.51666666666667},"dwell":{"min":2259,"max":2259,"mean":2259,"median":2259},"headway":{"min":1150,"max":21571,"mean":11360,"median":11360},"gap":{"min":383,"max":21571,"mean":10977,"median":10977},"length":{"min":1.254651427268982,"max":1.585039734840393,"mean":1.4198455810546875,"median":1.4198455810546875},"width":{"min":0.4656212031841278,"max":1.1618540287017822,"mean":0.8137376308441162,"median":0.8137376308441162},"height":{"min":0.46125727891921997,"max":0.7398056387901306,"mean":0.6005314588546753,"median":0.6005314588546753},"id":0,"name":"unclassified"},{"volume":0,"observed":1,"speed":{"min":0,"max":0,"mean":0,"median":0,"85th":0,"15th":0},"occupancy":{"time":30000,"percent":100},"dwell":{"min":0,"max":0,"mean":0,"median":0},"headway":{"min":0,"max":0,"mean":0,"median":0},"gap":{"min":0,"max":0,"mean":0,"median":0},"length":{"min":0,"max":0,"mean":0,"median":0},"width":{"min":0,"max":0,"mean":0,"median":0},"height":{"min":0,"max":0,"mean":0,"median":0},"id":1,"name":"vehicle"}],"classifications":[{"volume":2,"observed":2,"speed":{"min":1.1686941385269165,"max":2.083019971847534,"mean":1.6258571147918701,"median":1.6258571147918701,"85th":1.945871114730835,"15th":1.3058429956436157},"occupancy":{"time":21755,"percent":72.51666666666667},"dwell":{"min":2259,"max":2259,"mean":2259,"median":2259},"headway":{"min":1150,"max":21571,"mean":11360,"median":11360},"gap":{"min":383,"max":21571,"mean":10977,"median":10977},"length":{"min":1.254651427268982,"max":1.585039734840393,"mean":1.4198455810546875,"median":1.4198455810546875},"width":{"min":0.4656212031841278,"max":1.1618540287017822,"mean":0.8137376308441162,"median":0.8137376308441162},"height":{"min":0.46125727891921997,"max":0.7398056387901306,"mean":0.6005314588546753,"median":0.6005314588546753},"name":"unknown"},{"volume":0,"observed":1,"speed":{"min":0,"max":0,"mean":0,"median":0,"85th":0,"15th":0},"occupancy":{"time":30000,"percent":100},"dwell":{"min":0,"max":0,"mean":0,"median":0},"headway":{"min":0,"max":0,"mean":0,"median":0},"gap":{"min":0,"max":0,"mean":0,"median":0},"length":{"min":0,"max":0,"mean":0,"median":0},"width":{"min":0,"max":0,"mean":0,"median":0},"height":{"min":0,"max":0,"mean":0,"median":0},"name":"car"}],"id":33,"name":"zone_9"},{"volume":1,"observed":2,"speed":{"min":2.839674711227417,"max":2.839674711227417,"mean":2.839674711227417,"median":2.839674711227417,"85th":2.839674711227417,"15th":2.839674711227417},"occupancy":{"time":29999,"percent":99.99666666666667},"dwell":{"min":1366,"max":1366,"mean":1366,"median":1366},"headway":{"min":54007,"max":54007,"mean":54007,"median":54007},"gap":{"min":53327,"max":53327,"mean":53327,"median":53327},"length":{"min":1.254651427268982,"max":1.254651427268982,"mean":1.254651427268982,"median":1.254651427268982},"width":{"min":1.1618540287017822,"max":1.1618540287017822,"mean":1.1618540287017822,"median":1.1618540287017822},"height":{"min":0.46125727891921997,"max":0.46125727891921997,"mean":0.46125727891921997,"median":0.46125727891921997},"types":[{"volume":0,"observed":1,"speed":{"min":0,"max":0,"mean":0,"median":0,"85th":0,"15th":0},"occupancy":{"time":30000,"percent":100},"dwell":{"min":0,"max":0,"mean":0,"median":0},"headway":{"min":0,"max":0,"mean":0,"median":0},"gap":{"min":0,"max":0,"mean":0,"median":0},"length":{"min":0,"max":0,"mean":0,"median":0},"width":{"min":0,"max":0,"mean":0,"median":0},"height":{"min":0,"max":0,"mean":0,"median":0},"id":1,"name":"vehicle"},{"volume":1,"observed":1,"speed":{"min":2.839674711227417,"max":2.839674711227417,"mean":2.839674711227417,"median":2.839674711227417,"85th":2.839674711227417,"15th":2.839674711227417},"occupancy":{"time":1366,"percent":4.553333333333334},"dwell":{"min":1366,"max":1366,"mean":1366,"median":1366},"headway":{"min":54007,"max":54007,"mean":54007,"median":54007},"gap":{"min":53327,"max":53327,"mean":53327,"median":53327},"length":{"min":1.254651427268982,"max":1.254651427268982,"mean":1.254651427268982,"median":1.254651427268982},"width":{"min":1.1618540287017822,"max":1.1618540287017822,"mean":1.1618540287017822,"median":1.1618540287017822},"height":{"min":0.46125727891921997,"max":0.46125727891921997,"mean":0.46125727891921997,"median":0.46125727891921997},"id":0,"name":"unclassified"}],"classifications":[{"volume":0,"observed":1,"speed":{"min":0,"max":0,"mean":0,"median":0,"85th":0,"15th":0},"occupancy":{"time":30000,"percent":100},"dwell":{"min":0,"max":0,"mean":0,"median":0},"headway":{"min":0,"max":0,"mean":0,"median":0},"gap":{"min":0,"max":0,"mean":0,"median":0},"length":{"min":0,"max":0,"mean":0,"median":0},"width":{"min":0,"max":0,"mean":0,"median":0},"height":{"min":0,"max":0,"mean":0,"median":0},"name":"car"},{"volume":1,"observed":1,"speed":{"min":2.839674711227417,"max":2.839674711227417,"mean":2.839674711227417,"median":2.839674711227417,"85th":2.839674711227417,"15th":2.839674711227417},"occupancy":{"time":1366,"percent":4.553333333333334},"dwell":{"min":1366,"max":1366,"mean":1366,"median":1366},"headway":{"min":54007,"max":54007,"mean":54007,"median":54007},"gap":{"min":53327,"max":53327,"mean":53327,"median":53327},"length":{"min":1.254651427268982,"max":1.254651427268982,"mean":1.254651427268982,"median":1.254651427268982},"width":{"min":1.1618540287017822,"max":1.1618540287017822,"mean":1.1618540287017822,"median":1.1618540287017822},"height":{"min":0.46125727891921997,"max":0.46125727891921997,"mean":0.46125727891921997,"median":0.46125727891921997},"name":"unknown"}],"id":32,"name":"zone_8"},{"volume":25,"observed":25,"speed":{"min":2.920783758163452,"max":10.10147762298584,"mean":5.735208034515381,"median":5.639978885650635,"85th":7.344624042510986,"15th":3.927807569503784},"occupancy":{"time":18951,"percent":63.17},"dwell":{"min":1176,"max":3056,"mean":1743,"median":1641},"headway":{"min":100,"max":17466,"mean":2131,"median":951},"gap":{"min":0,"max":17466,"mean":1561,"median":484},"length":{"min":1.6432113647460938,"max":5.168470859527588,"mean":4.090704441070557,"median":4.257318019866943},"width":{"min":0.0887308120727539,"max":4.14466667175293,"mean":1.5031388998031616,"median":1.5270335674285889},"height":{"min":0.9764110445976257,"max":1.744057297706604,"mean":1.3405003547668457,"median":1.3036572933197021},"types":[{"volume":2,"observed":2,"speed":{"min":3.4452242851257324,"max":6.620080947875977,"mean":5.032652854919434,"median":5.032652854919434,"85th":6.143852233886719,"15th":3.921452760696411},"occupancy":{"time":2623,"percent":8.743333333333334},"dwell":{"min":2289,"max":2289,"mean":2289,"median":2289},"headway":{"min":250,"max":550,"mean":400,"median":400},"gap":{"min":0,"max":0,"mean":0,"median":0},"length":{"min":2.0524604320526123,"max":4.289007186889648,"mean":3.17073392868042,"median":3.17073392868042},"width":{"min":0.0887308120727539,"max":1.893536925315857,"mean":0.9911338686943054,"median":0.9911338686943054},"height":{"min":1.4402340650558472,"max":1.6946947574615479,"mean":1.5674643516540527,"median":1.5674643516540527},"id":0,"name":"unclassified"},{"volume":23,"observed":23,"speed":{"min":2.920783758163452,"max":10.10147762298584,"mean":5.796299457550049,"median":5.639978885650635,"85th":7.4447784423828125,"15th":4.277807712554932},"occupancy":{"time":18953,"percent":63.17666666666667},"dwell":{"min":1176,"max":3056,"mean":1717,"median":1605},"headway":{"min":100,"max":17466,"mean":2282,"median":1451},"gap":{"min":0,"max":17466,"mean":1697,"median":503},"length":{"min":1.6432113647460938,"max":5.168470859527588,"mean":4.170701503753662,"median":4.257318019866943},"width":{"min":0.6187005043029785,"max":4.14466667175293,"mean":1.5476610660552979,"median":1.5270335674285889},"height":{"min":0.9764110445976257,"max":1.744057297706604,"mean":1.3207643032073975,"median":1.292528748512268},"id":1,"name":"vehicle"}],"classifications":[{"volume":2,"observed":2,"speed":{"min":3.4452242851257324,"max":6.620080947875977,"mean":5.032652854919434,"median":5.032652854919434,"85th":6.143852233886719,"15th":3.921452760696411},"occupancy":{"time":2623,"percent":8.743333333333334},"dwell":{"min":2289,"max":2289,"mean":2289,"median":2289},"headway":{"min":250,"max":550,"mean":400,"median":400},"gap":{"min":0,"max":0,"mean":0,"median":0},"length":{"min":2.0524604320526123,"max":4.289007186889648,"mean":3.17073392868042,"median":3.17073392868042},"width":{"min":0.0887308120727539,"max":1.893536925315857,"mean":0.9911338686943054,"median":0.9911338686943054},"height":{"min":1.4402340650558472,"max":1.6946947574615479,"mean":1.5674643516540527,"median":1.5674643516540527},"name":"unknown"},{"volume":23,"observed":23,"speed":{"min":2.920783758163452,"max":10.10147762298584,"mean":5.796299457550049,"median":5.639978885650635,"85th":7.4447784423828125,"15th":4.277807712554932},"occupancy":{"time":18953,"percent":63.17666666666667},"dwell":{"min":1176,"max":3056,"mean":1717,"median":1605},"headway":{"min":100,"max":17466,"mean":2282,"median":1451},"gap":{"min":0,"max":17466,"mean":1697,"median":503},"length":{"min":1.6432113647460938,"max":5.168470859527588,"mean":4.170701503753662,"median":4.257318019866943},"width":{"min":0.6187005043029785,"max":4.14466667175293,"mean":1.5476610660552979,"median":1.5270335674285889},"height":{"min":0.9764110445976257,"max":1.744057297706604,"mean":1.3207643032073975,"median":1.292528748512268},"name":"car"}],"id":27,"name":"Crosswalk 4"},{"volume":4,"observed":4,"speed":{"min":0.4181953966617584,"max":8.455659866333008,"mean":4.03213357925415,"median":3.6273393630981445,"85th":7.599514484405518,"15th":0.5457112789154053},"occupancy":{"time":8648,"percent":28.826666666666668},"dwell":{"min":1535,"max":3150,"mean":2274,"median":2205},"headway":{"min":2702,"max":42444,"mean":14214,"median":5856},"gap":{"min":0,"max":42444,"mean":13511,"median":5801},"length":{"min":1.6432113647460938,"max":4.4559760093688965,"mean":3.5810482501983643,"median":4.1125030517578125},"width":{"min":1.4639145135879517,"max":4.14466667175293,"mean":2.20398211479187,"median":1.6036736965179443},"height":{"min":1.1306990385055542,"max":1.4336007833480835,"mean":1.2901214361190796,"median":1.2980930805206299},"types":[{"volume":4,"observed":4,"speed":{"min":0.4181953966617584,"max":8.455659866333008,"mean":4.03213357925415,"median":3.6273393630981445,"85th":7.599514484405518,"15th":0.5457112789154053},"occupancy":{"time":8648,"percent":28.826666666666668},"dwell":{"min":1535,"max":3150,"mean":2274,"median":2205},"headway":{"min":2702,"max":42444,"mean":14214,"median":5856},"gap":{"min":0,"max":42444,"mean":13511,"median":5801},"length":{"min":1.6432113647460938,"max":4.4559760093688965,"mean":3.5810482501983643,"median":4.1125030517578125},"width":{"min":1.4639145135879517,"max":4.14466667175293,"mean":2.20398211479187,"median":1.6036736965179443},"height":{"min":1.1306990385055542,"max":1.4336007833480835,"mean":1.2901214361190796,"median":1.2980930805206299},"id":1,"name":"vehicle"}],"classifications":[{"volume":4,"observed":4,"speed":{"min":0.4181953966617584,"max":8.455659866333008,"mean":4.03213357925415,"median":3.6273393630981445,"85th":7.599514484405518,"15th":0.5457112789154053},"occupancy":{"time":8648,"percent":28.826666666666668},"dwell":{"min":1535,"max":3150,"mean":2274,"median":2205},"headway":{"min":2702,"max":42444,"mean":14214,"median":5856},"gap":{"min":0,"max":42444,"mean":13511,"median":5801},"length":{"min":1.6432113647460938,"max":4.4559760093688965,"mean":3.5810482501983643,"median":4.1125030517578125},"width":{"min":1.4639145135879517,"max":4.14466667175293,"mean":2.20398211479187,"median":1.6036736965179443},"height":{"min":1.1306990385055542,"max":1.4336007833480835,"mean":1.2901214361190796,"median":1.2980930805206299},"name":"car"}],"id":28,"name":"zone_12"},{"volume":4,"observed":4,"speed":{"min":3.6957528591156006,"max":8.50583553314209,"mean":5.777749061584473,"median":5.4547038078308105,"85th":7.5938286781311035,"15th":4.026278018951416},"occupancy":{"time":8682,"percent":28.939999999999998},"dwell":{"min":1510,"max":2957,"mean":2246,"median":2259},"headway":{"min":1601,"max":66321,"mean":18682,"median":3403},"gap":{"min":1601,"max":65294,"mean":18111,"median":2775},"length":{"min":4.028792858123779,"max":4.477057933807373,"mean":4.2299675941467285,"median":4.207009792327881},"width":{"min":0.8013239502906799,"max":1.5973904132843018,"mean":1.2530381679534912,"median":1.3067190647125244},"height":{"min":1.1036454439163208,"max":1.3422423601150513,"mean":1.2045589685440063,"median":1.1861741542816162},"types":[{"volume":4,"observed":4,"speed":{"min":3.6957528591156006,"max":8.50583553314209,"mean":5.777749061584473,"median":5.4547038078308105,"85th":7.5938286781311035,"15th":4.026278018951416},"occupancy":{"time":8682,"percent":28.939999999999998},"dwell":{"min":1510,"max":2957,"mean":2246,"median":2259},"headway":{"min":1601,"max":66321,"mean":18682,"median":3403},"gap":{"min":1601,"max":65294,"mean":18111,"median":2775},"length":{"min":4.028792858123779,"max":4.477057933807373,"mean":4.2299675941467285,"median":4.207009792327881},"width":{"min":0.8013239502906799,"max":1.5973904132843018,"mean":1.2530381679534912,"median":1.3067190647125244},"height":{"min":1.1036454439163208,"max":1.3422423601150513,"mean":1.2045589685440063,"median":1.1861741542816162},"id":1,"name":"vehicle"}],"classifications":[{"volume":4,"observed":4,"speed":{"min":3.6957528591156006,"max":8.50583553314209,"mean":5.777749061584473,"median":5.4547038078308105,"85th":7.5938286781311035,"15th":4.026278018951416},"occupancy":{"time":8682,"percent":28.939999999999998},"dwell":{"min":1510,"max":2957,"mean":2246,"median":2259},"headway":{"min":1601,"max":66321,"mean":18682,"median":3403},"gap":{"min":1601,"max":65294,"mean":18111,"median":2775},"length":{"min":4.028792858123779,"max":4.477057933807373,"mean":4.2299675941467285,"median":4.207009792327881},"width":{"min":0.8013239502906799,"max":1.5973904132843018,"mean":1.2530381679534912,"median":1.3067190647125244},"height":{"min":1.1036454439163208,"max":1.3422423601150513,"mean":1.2045589685440063,"median":1.1861741542816162},"name":"car"}],"id":30,"name":"zone_14"},{"volume":2,"observed":2,"speed":{"min":7.076876640319824,"max":7.224062442779541,"mean":7.150469779968262,"median":7.150469779968262,"85th":7.201984405517578,"15th":7.098954677581787},"occupancy":{"time":2054,"percent":6.846666666666666},"dwell":{"min":1154,"max":1219,"mean":1186,"median":1186},"headway":{"min":2253,"max":29729,"mean":15991,"median":15991},"gap":{"min":1682,"max":29311,"mean":15496,"median":15496},"length":{"min":4.2689127922058105,"max":4.335118770599365,"mean":4.302015781402588,"median":4.302015781402588},"width":{"min":1.5973904132843018,"max":1.8453454971313477,"mean":1.7213679552078247,"median":1.7213679552078247},"height":{"min":1.1991102695465088,"max":1.338835597038269,"mean":1.2689728736877441,"median":1.2689728736877441},"types":[{"volume":2,"observed":2,"speed":{"min":7.076876640319824,"max":7.224062442779541,"mean":7.150469779968262,"median":7.150469779968262,"85th":7.201984405517578,"15th":7.098954677581787},"occupancy":{"time":2054,"percent":6.846666666666666},"dwell":{"min":1154,"max":1219,"mean":1186,"median":1186},"headway":{"min":2253,"max":29729,"mean":15991,"median":15991},"gap":{"min":1682,"max":29311,"mean":15496,"median":15496},"length":{"min":4.2689127922058105,"max":4.335118770599365,"mean":4.302015781402588,"median":4.302015781402588},"width":{"min":1.5973904132843018,"max":1.8453454971313477,"mean":1.7213679552078247,"median":1.7213679552078247},"height":{"min":1.1991102695465088,"max":1.338835597038269,"mean":1.2689728736877441,"median":1.2689728736877441},"id":1,"name":"vehicle"}],"classifications":[{"volume":2,"observed":2,"speed":{"min":7.076876640319824,"max":7.224062442779541,"mean":7.150469779968262,"median":7.150469779968262,"85th":7.201984405517578,"15th":7.098954677581787},"occupancy":{"time":2054,"percent":6.846666666666666},"dwell":{"min":1154,"max":1219,"mean":1186,"median":1186},"headway":{"min":2253,"max":29729,"mean":15991,"median":15991},"gap":{"min":1682,"max":29311,"mean":15496,"median":15496},"length":{"min":4.2689127922058105,"max":4.335118770599365,"mean":4.302015781402588,"median":4.302015781402588},"width":{"min":1.5973904132843018,"max":1.8453454971313477,"mean":1.7213679552078247,"median":1.7213679552078247},"height":{"min":1.1991102695465088,"max":1.338835597038269,"mean":1.2689728736877441,"median":1.2689728736877441},"name":"car"}],"id":24,"name":"Crosswalk 1"},{"volume":7,"observed":7,"speed":{"min":3.0735933780670166,"max":9.633935928344727,"mean":5.383998394012451,"median":4.835076332092285,"85th":6.462350368499756,"15th":4.156278133392334},"occupancy":{"time":9697,"percent":32.32333333333333},"dwell":{"min":536,"max":2115,"mean":1488,"median":1614},"headway":{"min":2102,"max":23573,"mean":9566,"median":8008},"gap":{"min":1074,"max":23409,"mean":8847,"median":7572},"length":{"min":1.3386824131011963,"max":5.537214279174805,"mean":4.137563705444336,"median":4.27197790145874},"width":{"min":1.0640428066253662,"max":2.8081626892089844,"mean":1.7132989168167114,"median":1.5631153583526611},"height":{"min":0.46396404504776,"max":1.3677167892456055,"mean":1.0703951120376587,"median":1.1399837732315063},"types":[{"volume":5,"observed":5,"speed":{"min":4.276576519012451,"max":6.109951972961426,"mean":4.996091842651367,"median":4.835076332092285,"85th":5.6500678062438965,"15th":4.359856128692627},"occupancy":{"time":8908,"percent":29.69333333333333},"dwell":{"min":1573,"max":2115,"mean":1781,"median":1668},"headway":{"min":2102,"max":12812,"mean":6896,"median":6006},"gap":{"min":1074,"max":11359,"mean":5922,"median":5196},"length":{"min":3.85076642036438,"max":5.168470859527588,"mean":4.417409896850586,"median":4.27197790145874},"width":{"min":1.4517167806625366,"max":2.8081626892089844,"mean":1.8036071062088013,"median":1.5631153583526611},"height":{"min":0.9764110445976257,"max":1.2894614934921265,"mean":1.1322169303894043,"median":1.1399837732315063},"id":1,"name":"vehicle"},{"volume":2,"observed":2,"speed":{"min":3.0735933780670166,"max":9.633935928344727,"mean":6.353764533996582,"median":6.353764533996582,"85th":8.649884223937988,"15th":4.057644844055176},"occupancy":{"time":1508,"percent":5.026666666666666},"dwell":{"min":536,"max":972,"mean":754,"median":754},"headway":{"min":8908,"max":23573,"mean":16240,"median":16240},"gap":{"min":8908,"max":23409,"mean":16158,"median":16158},"length":{"min":1.3386824131011963,"max":5.537214279174805,"mean":3.437948226928711,"median":3.437948226928711},"width":{"min":1.0640428066253662,"max":1.9110143184661865,"mean":1.4875285625457764,"median":1.4875285625457764},"height":{"min":0.46396404504776,"max":1.3677167892456055,"mean":0.9158403873443604,"median":0.9158403873443604},"id":0,"name":"unclassified"}],"classifications":[{"volume":5,"observed":5,"speed":{"min":4.276576519012451,"max":6.109951972961426,"mean":4.996091842651367,"median":4.835076332092285,"85th":5.6500678062438965,"15th":4.359856128692627},"occupancy":{"time":8908,"percent":29.69333333333333},"dwell":{"min":1573,"max":2115,"mean":1781,"median":1668},"headway":{"min":2102,"max":12812,"mean":6896,"median":6006},"gap":{"min":1074,"max":11359,"mean":5922,"median":5196},"length":{"min":3.85076642036438,"max":5.168470859527588,"mean":4.417409896850586,"median":4.27197790145874},"width":{"min":1.4517167806625366,"max":2.8081626892089844,"mean":1.8036071062088013,"median":1.5631153583526611},"height":{"min":0.9764110445976257,"max":1.2894614934921265,"mean":1.1322169303894043,"median":1.1399837732315063},"name":"car"},{"volume":2,"observed":2,"speed":{"min":3.0735933780670166,"max":9.633935928344727,"mean":6.353764533996582,"median":6.353764533996582,"85th":8.649884223937988,"15th":4.057644844055176},"occupancy":{"time":1508,"percent":5.026666666666666},"dwell":{"min":536,"max":972,"mean":754,"median":754},"headway":{"min":8908,"max":23573,"mean":16240,"median":16240},"gap":{"min":8908,"max":23409,"mean":16158,"median":16158},"length":{"min":1.3386824131011963,"max":5.537214279174805,"mean":3.437948226928711,"median":3.437948226928711},"width":{"min":1.0640428066253662,"max":1.9110143184661865,"mean":1.4875285625457764,"median":1.4875285625457764},"height":{"min":0.46396404504776,"max":1.3677167892456055,"mean":0.9158403873443604,"median":0.9158403873443604},"name":"unknown"}],"id":26,"name":"Crosswalk 3"},{"volume":5,"observed":5,"speed":{"min":1.5523638725280762,"max":8.636550903320312,"mean":5.821658134460449,"median":6.602944374084473,"85th":7.785928249359131,"15th":3.6794958114624023},"occupancy":{"time":11127,"percent":37.09},"dwell":{"min":1287,"max":3561,"mean":2413,"median":2232},"headway":{"min":1151,"max":6807,"mean":3513,"median":3753},"gap":{"min":1151,"max":6408,"mean":3039,"median":2371},"length":{"min":3.85076642036438,"max":5.168470859527588,"mean":4.417409896850586,"median":4.27197790145874},"width":{"min":1.4517167806625366,"max":2.8081626892089844,"mean":1.8036071062088013,"median":1.5631153583526611},"height":{"min":0.9764110445976257,"max":1.2894614934921265,"mean":1.1322169303894043,"median":1.1399837732315063},"types":[{"volume":5,"observed":5,"speed":{"min":1.5523638725280762,"max":8.636550903320312,"mean":5.821658134460449,"median":6.602944374084473,"85th":7.785928249359131,"15th":3.6794958114624023},"occupancy":{"time":11127,"percent":37.09},"dwell":{"min":1287,"max":3561,"mean":2413,"median":2232},"headway":{"min":1151,"max":6807,"mean":3513,"median":3753},"gap":{"min":1151,"max":6408,"mean":3039,"median":2371},"length":{"min":3.85076642036438,"max":5.168470859527588,"mean":4.417409896850586,"median":4.27197790145874},"width":{"min":1.4517167806625366,"max":2.8081626892089844,"mean":1.8036071062088013,"median":1.5631153583526611},"height":{"min":0.9764110445976257,"max":1.2894614934921265,"mean":1.1322169303894043,"median":1.1399837732315063},"id":1,"name":"vehicle"}],"classifications":[{"volume":5,"observed":5,"speed":{"min":1.5523638725280762,"max":8.636550903320312,"mean":5.821658134460449,"median":6.602944374084473,"85th":7.785928249359131,"15th":3.6794958114624023},"occupancy":{"time":11127,"percent":37.09},"dwell":{"min":1287,"max":3561,"mean":2413,"median":2232},"headway":{"min":1151,"max":6807,"mean":3513,"median":3753},"gap":{"min":1151,"max":6408,"mean":3039,"median":2371},"length":{"min":3.85076642036438,"max":5.168470859527588,"mean":4.417409896850586,"median":4.27197790145874},"width":{"min":1.4517167806625366,"max":2.8081626892089844,"mean":1.8036071062088013,"median":1.5631153583526611},"height":{"min":0.9764110445976257,"max":1.2894614934921265,"mean":1.1322169303894043,"median":1.1399837732315063},"name":"car"}],"id":31,"name":"zone_16"},{"volume":9,"observed":9,"speed":{"min":1.4765090942382812,"max":6.1515607833862305,"mean":4.5119309425354,"median":5.2940521240234375,"85th":6.023303508758545,"15th":2.216790199279785},"occupancy":{"time":16538,"percent":55.126666666666665},"dwell":{"min":1052,"max":7233,"mean":2334,"median":1780},"headway":{"min":750,"max":32632,"mean":6917,"median":2452},"gap":{"min":0,"max":32138,"mean":5939,"median":2149},"length":{"min":1.6432113647460938,"max":4.4559760093688965,"mean":3.905646562576294,"median":4.087193489074707},"width":{"min":0.9863514304161072,"max":4.14466667175293,"mean":1.829662561416626,"median":1.6070406436920166},"height":{"min":1.292528748512268,"max":1.5084161758422852,"mean":1.421992301940918,"median":1.4336007833480835},"types":[{"volume":8,"observed":8,"speed":{"min":1.4765090942382812,"max":6.1515607833862305,"mean":4.857680797576904,"median":5.360457420349121,"85th":6.057115077972412,"15th":4.1202569007873535},"occupancy":{"time":16478,"percent":54.92666666666667},"dwell":{"min":1052,"max":7233,"mean":2303,"median":1656},"headway":{"min":750,"max":10210,"mean":3703,"median":2402},"gap":{"min":0,"max":7425,"mean":2664,"median":1895},"length":{"min":1.6432113647460938,"max":4.4559760093688965,"mean":3.857726573944092,"median":4.082297325134277},"width":{"min":0.9863514304161072,"max":4.14466667175293,"mean":1.8216782808303833,"median":1.5810110569000244},"height":{"min":1.292528748512268,"max":1.5084161758422852,"mean":1.4197120666503906,"median":1.4261951446533203},"id":1,"name":"vehicle"},{"volume":1,"observed":1,"speed":{"min":1.7459315061569214,"max":1.7459315061569214,"mean":1.7459315061569214,"median":1.7459315061569214,"85th":1.7459315061569214,"15th":1.7459315061569214},"occupancy":{"time":2585,"percent":8.616666666666667},"dwell":{"min":2585,"max":2585,"mean":2585,"median":2585},"headway":{"min":32632,"max":32632,"mean":32632,"median":32632},"gap":{"min":32138,"max":32138,"mean":32138,"median":32138},"length":{"min":4.289007186889648,"max":4.289007186889648,"mean":4.289007186889648,"median":4.289007186889648},"width":{"min":1.893536925315857,"max":1.893536925315857,"mean":1.893536925315857,"median":1.893536925315857},"height":{"min":1.4402340650558472,"max":1.4402340650558472,"mean":1.4402340650558472,"median":1.4402340650558472},"id":0,"name":"unclassified"}],"classifications":[{"volume":8,"observed":8,"speed":{"min":1.4765090942382812,"max":6.1515607833862305,"mean":4.857680797576904,"median":5.360457420349121,"85th":6.057115077972412,"15th":4.1202569007873535},"occupancy":{"time":16478,"percent":54.92666666666667},"dwell":{"min":1052,"max":7233,"mean":2303,"median":1656},"headway":{"min":750,"max":10210,"mean":3703,"median":2402},"gap":{"min":0,"max":7425,"mean":2664,"median":1895},"length":{"min":1.6432113647460938,"max":4.4559760093688965,"mean":3.857726573944092,"median":4.082297325134277},"width":{"min":0.9863514304161072,"max":4.14466667175293,"mean":1.8216782808303833,"median":1.5810110569000244},"height":{"min":1.292528748512268,"max":1.5084161758422852,"mean":1.4197120666503906,"median":1.4261951446533203},"name":"car"},{"volume":1,"observed":1,"speed":{"min":1.7459315061569214,"max":1.7459315061569214,"mean":1.7459315061569214,"median":1.7459315061569214,"85th":1.7459315061569214,"15th":1.7459315061569214},"occupancy":{"time":2585,"percent":8.616666666666667},"dwell":{"min":2585,"max":2585,"mean":2585,"median":2585},"headway":{"min":32632,"max":32632,"mean":32632,"median":32632},"gap":{"min":32138,"max":32138,"mean":32138,"median":32138},"length":{"min":4.289007186889648,"max":4.289007186889648,"mean":4.289007186889648,"median":4.289007186889648},"width":{"min":1.893536925315857,"max":1.893536925315857,"mean":1.893536925315857,"median":1.893536925315857},"height":{"min":1.4402340650558472,"max":1.4402340650558472,"mean":1.4402340650558472,"median":1.4402340650558472},"name":"unknown"}],"id":25,"name":"Crosswalk 2"},{"volume":1,"observed":1,"speed":{"min":2.9678874015808105,"max":2.9678874015808105,"mean":2.9678874015808105,"median":2.9678874015808105,"85th":2.9678874015808105,"15th":2.9678874015808105},"occupancy":{"time":19305,"percent":64.35},"dwell":{"min":25235,"max":25235,"mean":25235,"median":25235},"headway":{"min":52556,"max":52556,"mean":52556,"median":52556},"gap":{"min":52556,"max":52556,"mean":52556,"median":52556},"length":{"min":4.150646209716797,"max":4.150646209716797,"mean":4.150646209716797,"median":4.150646209716797},"width":{"min":1.0031802654266357,"max":1.0031802654266357,"mean":1.0031802654266357,"median":1.0031802654266357},"height":{"min":1.269127607345581,"max":1.269127607345581,"mean":1.269127607345581,"median":1.269127607345581},"types":[{"volume":1,"observed":1,"speed":{"min":2.9678874015808105,"max":2.9678874015808105,"mean":2.9678874015808105,"median":2.9678874015808105,"85th":2.9678874015808105,"15th":2.9678874015808105},"occupancy":{"time":19305,"percent":64.35},"dwell":{"min":25235,"max":25235,"mean":25235,"median":25235},"headway":{"min":52556,"max":52556,"mean":52556,"median":52556},"gap":{"min":52556,"max":52556,"mean":52556,"median":52556},"length":{"min":4.150646209716797,"max":4.150646209716797,"mean":4.150646209716797,"median":4.150646209716797},"width":{"min":1.0031802654266357,"max":1.0031802654266357,"mean":1.0031802654266357,"median":1.0031802654266357},"height":{"min":1.269127607345581,"max":1.269127607345581,"mean":1.269127607345581,"median":1.269127607345581},"id":1,"name":"vehicle"}],"classifications":[{"volume":1,"observed":1,"speed":{"min":2.9678874015808105,"max":2.9678874015808105,"mean":2.9678874015808105,"median":2.9678874015808105,"85th":2.9678874015808105,"15th":2.9678874015808105},"occupancy":{"time":19305,"percent":64.35},"dwell":{"min":25235,"max":25235,"mean":25235,"median":25235},"headway":{"min":52556,"max":52556,"mean":52556,"median":52556},"gap":{"min":52556,"max":52556,"mean":52556,"median":52556},"length":{"min":4.150646209716797,"max":4.150646209716797,"mean":4.150646209716797,"median":4.150646209716797},"width":{"min":1.0031802654266357,"max":1.0031802654266357,"mean":1.0031802654266357,"median":1.0031802654266357},"height":{"min":1.269127607345581,"max":1.269127607345581,"mean":1.269127607345581,"median":1.269127607345581},"name":"car"}],"id":38,"name":"zone_7"},{"volume":4,"observed":5,"speed":{"min":2.846961736679077,"max":6.222542762756348,"mean":5.032414436340332,"median":5.530076026916504,"85th":6.156837463378906,"15th":3.8084585666656494},"occupancy":{"time":29997,"percent":99.99},"dwell":{"min":916,"max":394655,"mean":99762,"median":1740},"headway":{"min":2752,"max":60916,"mean":19546,"median":7258},"gap":{"min":2106,"max":60228,"mean":19212,"median":7258},"length":{"min":4.018044948577881,"max":4.292270183563232,"mean":4.200151443481445,"median":4.245145797729492},"width":{"min":1.0089490413665771,"max":1.6070406436920166,"mean":1.4007222652435303,"median":1.4934495687484741},"height":{"min":1.2172675132751465,"max":1.5084161758422852,"mean":1.3882153034210205,"median":1.4135887622833252},"types":[{"volume":3,"observed":4,"speed":{"min":2.846961736679077,"max":6.076531410217285,"mean":4.63570499420166,"median":4.983621120452881,"85th":5.748658180236816,"15th":3.487959623336792},"occupancy":{"time":29998,"percent":99.99333333333334},"dwell":{"min":916,"max":394655,"mean":99762,"median":1740},"headway":{"min":2752,"max":60916,"mean":24492,"median":9810},"gap":{"min":2106,"max":60228,"mean":24048,"median":9810},"length":{"min":4.018044948577881,"max":4.292270183563232,"mean":4.185108184814453,"median":4.245009422302246},"width":{"min":1.0089490413665771,"max":1.6070406436920166,"mean":1.3814162015914917,"median":1.5282588005065918},"height":{"min":1.2172675132751465,"max":1.5084161758422852,"mean":1.4086936712265015,"median":1.5003974437713623},"id":1,"name":"vehicle"},{"volume":1,"observed":1,"speed":{"min":6.222542762756348,"max":6.222542762756348,"mean":6.222542762756348,"median":6.222542762756348,"85th":6.222542762756348,"15th":6.222542762756348},"occupancy":{"time":534,"percent":1.78},"dwell":{"min":0,"max":0,"mean":0,"median":0},"headway":{"min":4706,"max":4706,"mean":4706,"median":4706},"gap":{"min":4706,"max":4706,"mean":4706,"median":4706},"length":{"min":4.24528169631958,"max":4.24528169631958,"mean":4.24528169631958,"median":4.24528169631958},"width":{"min":1.4586403369903564,"max":1.4586403369903564,"mean":1.4586403369903564,"median":1.4586403369903564},"height":{"min":1.3267799615859985,"max":1.3267799615859985,"mean":1.3267799615859985,"median":1.3267799615859985},"id":0,"name":"unclassified"}],"classifications":[{"volume":3,"observed":4,"speed":{"min":2.846961736679077,"max":6.076531410217285,"mean":4.63570499420166,"median":4.983621120452881,"85th":5.748658180236816,"15th":3.487959623336792},"occupancy":{"time":29998,"percent":99.99333333333334},"dwell":{"min":916,"max":394655,"mean":99762,"median":1740},"headway":{"min":2752,"max":60916,"mean":24492,"median":9810},"gap":{"min":2106,"max":60228,"mean":24048,"median":9810},"length":{"min":4.018044948577881,"max":4.292270183563232,"mean":4.185108184814453,"median":4.245009422302246},"width":{"min":1.0089490413665771,"max":1.6070406436920166,"mean":1.3814162015914917,"median":1.5282588005065918},"height":{"min":1.2172675132751465,"max":1.5084161758422852,"mean":1.4086936712265015,"median":1.5003974437713623},"name":"car"},{"volume":1,"observed":1,"speed":{"min":6.222542762756348,"max":6.222542762756348,"mean":6.222542762756348,"median":6.222542762756348,"85th":6.222542762756348,"15th":6.222542762756348},"occupancy":{"time":534,"percent":1.78},"dwell":{"min":0,"max":0,"mean":0,"median":0},"headway":{"min":4706,"max":4706,"mean":4706,"median":4706},"gap":{"min":4706,"max":4706,"mean":4706,"median":4706},"length":{"min":4.24528169631958,"max":4.24528169631958,"mean":4.24528169631958,"median":4.24528169631958},"width":{"min":1.4586403369903564,"max":1.4586403369903564,"mean":1.4586403369903564,"median":1.4586403369903564},"height":{"min":1.3267799615859985,"max":1.3267799615859985,"mean":1.3267799615859985,"median":1.3267799615859985},"name":"unknown"}],"id":29,"name":"zone_13"}]}}

GET /api/app/object-analytics/samples?start={iso8601}&end={iso8601}

Fetch all samples that fall within this date and time
GET /api/app/object-analytics/samples?start={iso8601}&end={iso8601} HTTP/1.1
Host: 127.0.0.1
Accept: application/json
Content-Type: application/json
Authorization: bearer 109b893ceb1c26e3e64e9abf7cdd2aa1c0d25f61
start
ISO8601 Date & Time
Start time of the range to search

/api/app/object-analytics/samples?start=2025-06-16T12:15:30
end
ISO8601 Date & Time
End time of the range to search

/api/app/object-analytics/samples?end=2025-06-16T12:15:30
q
array
Request additional query information:

/api/app/object-analytics/samples?q=next - return the timestamp and remaining time of when the next sample period will be generated

GET /api/app/object-analytics/samples?at={iso8601}

Fetch the sample that this date and time falls within
GET /api/app/object-analytics/samples?at={iso8601} HTTP/1.1
Host: 127.0.0.1
Accept: application/json
Content-Type: application/json
Authorization: bearer 109b893ceb1c26e3e64e9abf7cdd2aa1c0d25f61
at
ISO8601 Date & Time
The date and time

/api/app/object-analytics/samples?at=2025-06-16T12:15:30
q
array
Request additional query information:

/api/app/object-analytics/samples?q=next - return the timestamp and remaining time of when the next sample period will be generated

GET /api/app/object-analytics/samples?after={iso8601}

Fetch the a list of samples that occurs after this date and time
GET /api/app/object-analytics/samples?after={iso8601} HTTP/1.1
Host: 127.0.0.1
Accept: application/json
Content-Type: application/json
Authorization: bearer 109b893ceb1c26e3e64e9abf7cdd2aa1c0d25f61
after
ISO8601 Date & Time
The date and time

/api/app/object-analytics/samples?after=2025-06-16T12:15:30
limit
number
Limit the result to this many samples. A limit of 0, or not specifying a limit, will return all samples after this time and date

/api/app/object-analytics/samples?limit=2
q
array
Request additional query information:

/api/app/object-analytics/samples?q=next - return the timestamp and remaining time of when the next sample period will be generated

GET /api/app/object-analytics/samples?before={iso8601}

Fetch a list of samples that occurs before this date and time
GET /api/app/object-analytics/samples?before={iso8601} HTTP/1.1
Host: 127.0.0.1
Accept: application/json
Content-Type: application/json
Authorization: bearer 109b893ceb1c26e3e64e9abf7cdd2aa1c0d25f61
before
ISO8601 Date & Time
The date and time

/api/app/object-analytics/samples?before=2025-06-16T12:15:30
limit
number
Limit the result to this many samples. If no limit is provided a limit of 1 is assumed. Limits cannot be less than 1.

/api/app/object-analytics/samples?limit=2
q
array
Request additional query information:

/api/app/object-analytics/samples?q=next - return the timestamp and remaining time of when the next sample period will be generated

GET /api/app/object-analytics/report/volume

Get a volume report
GET /api/app/object-analytics/report/volume 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/object-analytics/report/volume?format=excel - generates a report as an excel file download
/api/app/object-analytics/report/volume?format=csv - generates a report as a csv file download
/api/app/object-analytics/report/volume?format=json - generates a report as a json output
/api/app/object-analytics/report/volume?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/object-analytics/report/volume?start=2025-06-16T12:15:30
end
ISO8601 Date & Time
End date and time for the selection range of the report

/api/app/object-analytics/report/volume?end=2025-06-16T12:15:30
bin
number,representation
The bin size, used to split the data up into smaller chunks. There are two parts to this value the size value and the representation. The size is numeric and represent can be one of the following: seconds, minutes, hours, days, months, years

/api/app/object-analytics/report/volume?bin=1,year - to set bin sizes to 1 year
/api/app/object-analytics/report/volume?bin=1,month - to set bin sizes to 1 month
/api/app/object-analytics/report/volume?bin=1,hour - to set bin sizes to 1 hour
/api/app/object-analytics/report/volume?bin=30,minutes - to set bin sizes to 30 minutes
/api/app/object-analytics/report/volume?bin=15,minutes - to set bin sizes to 15 minutes
zones
array[number]
A list of zones to include in the report. If you don't provide a list of zones, you will only get the aggregated data set. A maximum of 24 zones can be selected per report
HTTP/1.1 200 OK
Content-Type: {depends on format parameter}

GET /api/app/object-analytics/report/speed

Get a speed report
GET /api/app/object-analytics/report/speed 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/object-analytics/report/speed?format=excel - generates a report as an excel file download
/api/app/object-analytics/report/speed?format=csv - generates a report as a csv file download
/api/app/object-analytics/report/speed?format=json - generates a report as a json output
/api/app/object-analytics/report/speed?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/object-analytics/report/speed?start=2025-06-16T12:15:30
end
ISO8601 Date & Time
End date and time for the selection range of the report

/api/app/object-analytics/report/speed?end=2025-06-16T12:15:30
bin
number,representation
The bin size, used to split the data up into smaller chunks. There are two parts to this value the size value and the representation. The size is numeric and represent can be one of the following: seconds, minutes, hours, days, months, years

/api/app/object-analytics/report/speed?bin=1,year - to set bin sizes to 1 year
/api/app/object-analytics/report/speed?bin=1,month - to set bin sizes to 1 month
/api/app/object-analytics/report/speed?bin=1,hour - to set bin sizes to 1 hour
/api/app/object-analytics/report/speed?bin=30,minutes - to set bin sizes to 30 minutes
/api/app/object-analytics/report/speed?bin=15,minutes - to set bin sizes to 15 minutes
subtype
string
Which sub data type to target. Default is mean, possible values are: mean, median, min, max, 85th, 15th

/api/app/object-analytics/report/speed?subtype=mean - fetch average speeds
/api/app/object-analytics/report/speed?subtype=85th - fetch 85th percentile speeds
/api/app/object-analytics/report/speed?subtype=max - fetch maximum encountered speeds
unit[speed]
string
Set which unit of measurement you want values to be in. Default is the Integrator-AI configured units. Possible values: mph, kph, ms

/api/app/object-analytics/report/speed?unit[speed]=mph - to show the values in mph
zones
array[number]
A list of zones to include in the report. If you don't provide a list of zones, you will only get the aggregated data set. A maximum of 24 zones can be selected per report
HTTP/1.1 200 OK
Content-Type: {depends on format parameter}

GET /api/app/object-analytics/report/width

Get a width report
GET /api/app/object-analytics/report/width 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/object-analytics/report/width?format=excel - generates a report as an excel file download
/api/app/object-analytics/report/width?format=csv - generates a report as a csv file download
/api/app/object-analytics/report/width?format=json - generates a report as a json output
/api/app/object-analytics/report/width?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/object-analytics/report/width?start=2025-06-16T12:15:30
end
ISO8601 Date & Time
End date and time for the selection range of the report

/api/app/object-analytics/report/width?end=2025-06-16T12:15:30
bin
number,representation
The bin size, used to split the data up into smaller chunks. There are two parts to this value the size value and the representation. The size is numeric and represent can be one of the following: seconds, minutes, hours, days, months, years

/api/app/object-analytics/report/width?bin=1,year - to set bin sizes to 1 year
/api/app/object-analytics/report/width?bin=1,month - to set bin sizes to 1 month
/api/app/object-analytics/report/width?bin=1,hour - to set bin sizes to 1 hour
/api/app/object-analytics/report/width?bin=30,minutes - to set bin sizes to 30 minutes
/api/app/object-analytics/report/width?bin=15,minutes - to set bin sizes to 15 minutes
subtype
string
Which sub data type to target. Default is mean, possible values are: mean, median, min, max

/api/app/object-analytics/report/width?subtype=mean - fetch average widths
/api/app/object-analytics/report/width?subtype=max - fetch maximum encountered widths
unit[distance]
string
Set which unit of measurement you want values to be in. Default is the Integrator-AI configured units. Possible values: ft, in, cm, mm, km, mi, yd

/api/app/object-analytics/report/width?unit[distance]=ft - to show the values in ft
zones
array[number]
A list of zones to include in the report. If you don't provide a list of zones, you will only get the aggregated data set. A maximum of 24 zones can be selected per report
HTTP/1.1 200 OK
Content-Type: {depends on format parameter}

GET /api/app/object-analytics/report/height

Get a height report
GET /api/app/object-analytics/report/height 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/object-analytics/report/height?format=excel - generates a report as an excel file download
/api/app/object-analytics/report/height?format=csv - generates a report as a csv file download
/api/app/object-analytics/report/height?format=json - generates a report as a json output
/api/app/object-analytics/report/height?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/object-analytics/report/height?start=2025-06-16T12:15:30
end
ISO8601 Date & Time
End date and time for the selection range of the report

/api/app/object-analytics/report/height?end=2025-06-16T12:15:30
bin
number,representation
The bin size, used to split the data up into smaller chunks. There are two parts to this value the size value and the representation. The size is numeric and represent can be one of the following: seconds, minutes, hours, days, months, years

/api/app/object-analytics/report/height?bin=1,year - to set bin sizes to 1 year
/api/app/object-analytics/report/height?bin=1,month - to set bin sizes to 1 month
/api/app/object-analytics/report/height?bin=1,hour - to set bin sizes to 1 hour
/api/app/object-analytics/report/height?bin=30,minutes - to set bin sizes to 30 minutes
/api/app/object-analytics/report/height?bin=15,minutes - to set bin sizes to 15 minutes
subtype
string
Which sub data type to target. Default is mean, possible values are: mean, median, min, max

/api/app/object-analytics/report/height?subtype=mean - fetch average heights
/api/app/object-analytics/report/height?subtype=max - fetch maximum encountered heights
unit[distance]
string
Set which unit of measurement you want values to be in. Default is the Integrator-AI configured units. Possible values: ft, in, cm, mm, km, mi, yd

/api/app/object-analytics/report/height?unit[distance]=ft - to show the values in ft
zones
array[number]
A list of zones to include in the report. If you don't provide a list of zones, you will only get the aggregated data set. A maximum of 24 zones can be selected per report
HTTP/1.1 200 OK
Content-Type: {depends on format parameter}

GET /api/app/object-analytics/report/length

Get a length report
GET /api/app/object-analytics/report/length 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/object-analytics/report/length?format=excel - generates a report as an excel file download
/api/app/object-analytics/report/length?format=csv - generates a report as a csv file download
/api/app/object-analytics/report/length?format=json - generates a report as a json output
/api/app/object-analytics/report/length?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/object-analytics/report/length?start=2025-06-16T12:15:30
end
ISO8601 Date & Time
End date and time for the selection range of the report

/api/app/object-analytics/report/length?end=2025-06-16T12:15:30
bin
number,representation
The bin size, used to split the data up into smaller chunks. There are two parts to this value the size value and the representation. The size is numeric and represent can be one of the following: seconds, minutes, hours, days, months, years

/api/app/object-analytics/report/length?bin=1,year - to set bin sizes to 1 year
/api/app/object-analytics/report/length?bin=1,month - to set bin sizes to 1 month
/api/app/object-analytics/report/length?bin=1,hour - to set bin sizes to 1 hour
/api/app/object-analytics/report/length?bin=30,minutes - to set bin sizes to 30 minutes
/api/app/object-analytics/report/length?bin=15,minutes - to set bin sizes to 15 minutes
subtype
string
Which sub data type to target. Default is mean, possible values are: mean, median, min, max

/api/app/object-analytics/report/length?subtype=mean - fetch average lengths
/api/app/object-analytics/report/length?subtype=max - fetch maximum encountered lengths
unit[distance]
string
Set which unit of measurement you want values to be in. Default is the Integrator-AI configured units. Possible values: ft, in, cm, mm, km, mi, yd

/api/app/object-analytics/report/length?unit[distance]=ft - to show the values in ft
zones
array[number]
A list of zones to include in the report. If you don't provide a list of zones, you will only get the aggregated data set. A maximum of 24 zones can be selected per report
HTTP/1.1 200 OK
Content-Type: {depends on format parameter}

GET /api/app/object-analytics/report/headway

Get a headway report
GET /api/app/object-analytics/report/headway 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/object-analytics/report/headway?format=excel - generates a report as an excel file download
/api/app/object-analytics/report/headway?format=csv - generates a report as a csv file download
/api/app/object-analytics/report/headway?format=json - generates a report as a json output
/api/app/object-analytics/report/headway?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/object-analytics/report/headway?start=2025-06-16T12:15:30
end
ISO8601 Date & Time
End date and time for the selection range of the report

/api/app/object-analytics/report/headway?end=2025-06-16T12:15:30
bin
number,representation
The bin size, used to split the data up into smaller chunks. There are two parts to this value the size value and the representation. The size is numeric and represent can be one of the following: seconds, minutes, hours, days, months, years

/api/app/object-analytics/report/headway?bin=1,year - to set bin sizes to 1 year
/api/app/object-analytics/report/headway?bin=1,month - to set bin sizes to 1 month
/api/app/object-analytics/report/headway?bin=1,hour - to set bin sizes to 1 hour
/api/app/object-analytics/report/headway?bin=30,minutes - to set bin sizes to 30 minutes
/api/app/object-analytics/report/headway?bin=15,minutes - to set bin sizes to 15 minutes
subtype
string
Which sub data type to target. Default is mean, possible values are: mean, median, min, max

/api/app/object-analytics/report/headway?subtype=mean - fetch average headway
/api/app/object-analytics/report/headway?subtype=max - fetch maximum encountered headway
zones
array[number]
A list of zones to include in the report. If you don't provide a list of zones, you will only get the aggregated data set. A maximum of 24 zones can be selected per report
HTTP/1.1 200 OK
Content-Type: {depends on format parameter}

GET /api/app/object-analytics/report/gap

Get a gap report
GET /api/app/object-analytics/report/gap 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/object-analytics/report/gap?format=excel - generates a report as an excel file download
/api/app/object-analytics/report/gap?format=csv - generates a report as a csv file download
/api/app/object-analytics/report/gap?format=json - generates a report as a json output
/api/app/object-analytics/report/gap?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/object-analytics/report/gap?start=2025-06-16T12:15:30
end
ISO8601 Date & Time
End date and time for the selection range of the report

/api/app/object-analytics/report/gap?end=2025-06-16T12:15:30
bin
number,representation
The bin size, used to split the data up into smaller chunks. There are two parts to this value the size value and the representation. The size is numeric and represent can be one of the following: seconds, minutes, hours, days, months, years

/api/app/object-analytics/report/gap?bin=1,year - to set bin sizes to 1 year
/api/app/object-analytics/report/gap?bin=1,month - to set bin sizes to 1 month
/api/app/object-analytics/report/gap?bin=1,hour - to set bin sizes to 1 hour
/api/app/object-analytics/report/gap?bin=30,minutes - to set bin sizes to 30 minutes
/api/app/object-analytics/report/gap?bin=15,minutes - to set bin sizes to 15 minutes
subtype
string
Which sub data type to target. Default is mean, possible values are: mean, median, min, max

/api/app/object-analytics/report/gap?subtype=mean - fetch average headway
/api/app/object-analytics/report/gap?subtype=max - fetch maximum encountered headway
zones
array[number]
A list of zones to include in the report. If you don't provide a list of zones, you will only get the aggregated data set. A maximum of 24 zones can be selected per report
HTTP/1.1 200 OK
Content-Type: {depends on format parameter}

GET /api/app/object-analytics/report/dwell

Get a dwell report
GET /api/app/object-analytics/report/dwell 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/object-analytics/report/dwell?format=excel - generates a report as an excel file download
/api/app/object-analytics/report/dwell?format=csv - generates a report as a csv file download
/api/app/object-analytics/report/dwell?format=json - generates a report as a json output
/api/app/object-analytics/report/dwell?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/object-analytics/report/dwell?start=2025-06-16T12:15:30
end
ISO8601 Date & Time
End date and time for the selection range of the report

/api/app/object-analytics/report/dwell?end=2025-06-16T12:15:30
bin
number,representation
The bin size, used to split the data up into smaller chunks. There are two parts to this value the size value and the representation. The size is numeric and represent can be one of the following: seconds, minutes, hours, days, months, years

/api/app/object-analytics/report/dwell?bin=1,year - to set bin sizes to 1 year
/api/app/object-analytics/report/dwell?bin=1,month - to set bin sizes to 1 month
/api/app/object-analytics/report/dwell?bin=1,hour - to set bin sizes to 1 hour
/api/app/object-analytics/report/dwell?bin=30,minutes - to set bin sizes to 30 minutes
/api/app/object-analytics/report/dwell?bin=15,minutes - to set bin sizes to 15 minutes
subtype
string
Which sub data type to target. Default is mean, possible values are: mean, median, min, max

/api/app/object-analytics/report/dwell?subtype=mean - fetch average headway
/api/app/object-analytics/report/dwell?subtype=max - fetch maximum encountered headway
zones
array[number]
A list of zones to include in the report. If you don't provide a list of zones, you will only get the aggregated data set. A maximum of 24 zones can be selected per report
HTTP/1.1 200 OK
Content-Type: {depends on format parameter}

GET /api/app/object-analytics/report/occupancy

Get an occupancy report
GET /api/app/object-analytics/report/occupancy 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/object-analytics/report/occupancy?format=excel - generates a report as an excel file download
/api/app/object-analytics/report/occupancy?format=csv - generates a report as a csv file download
/api/app/object-analytics/report/occupancy?format=json - generates a report as a json output
/api/app/object-analytics/report/occupancy?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/object-analytics/report/occupancy?start=2025-06-16T12:15:30
end
ISO8601 Date & Time
End date and time for the selection range of the report

/api/app/object-analytics/report/occupancy?end=2025-06-16T12:15:30
bin
number,representation
The bin size, used to split the data up into smaller chunks. There are two parts to this value the size value and the representation. The size is numeric and represent can be one of the following: seconds, minutes, hours, days, months, years

/api/app/object-analytics/report/occupancy?bin=1,year - to set bin sizes to 1 year
/api/app/object-analytics/report/occupancy?bin=1,month - to set bin sizes to 1 month
/api/app/object-analytics/report/occupancy?bin=1,hour - to set bin sizes to 1 hour
/api/app/object-analytics/report/occupancy?bin=30,minutes - to set bin sizes to 30 minutes
/api/app/object-analytics/report/occupancy?bin=15,minutes - to set bin sizes to 15 minutes
subtype
string
Which sub data type to target. Default is time, possible values are: time, percent

/api/app/object-analytics/report/occupancy?subtype=time - fetch total occupancy times
/api/app/object-analytics/report/occupancy?subtype=percent - fetch maximum occupancy as a percentage of the bin size. This does not work with bin sizes of month or year, but a future update will include these
zones
array[number]
A list of zones to include in the report. If you don't provide a list of zones, you will only get the aggregated data set. A maximum of 24 zones can be selected per report
HTTP/1.1 200 OK
Content-Type: {depends on format parameter}

GET /api/app/object-analytics/report/chronology

Get an individual traveler record report
GET /api/app/object-analytics/report/chronology 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/object-analytics/report/chronology?format=excel - generates a report as an excel file download
/api/app/object-analytics/report/chronology?format=csv - generates a report as a csv file download
/api/app/object-analytics/report/chronology?format=json - generates a report as a json output
/api/app/object-analytics/report/chronology?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/object-analytics/report/chronology?start=2025-06-16T12:15:30
end
ISO8601 Date & Time
End date and time for the selection range of the report

/api/app/object-analytics/report/chronology?end=2025-06-16T12:15:30
zones
array[number]
A list of zones to include in the report. If you don't provide a list of zones, you will only get the aggregated data set. A maximum of 24 zones can be selected per report
HTTP/1.1 200 OK
Content-Type: {depends on format parameter}

Edge Link (MQTT)

app/object-analytics/record/object/zone/$id [JSON]

When Object Analytics resolves an object's interaction with a zone (when the object egresses the zone), it will publish to this topic

$id
ID of the zone
{"axles":0,"classification":"car","dwell":12044,"egress":{"position":[42.35591825418686,-83.06672620260879],"heading":1.029386,"timestamp":1765040435767},"gap":125953,"headway":126845,"id":[300,1765040419242],"ingress":{"position":[42.35585395060612,-83.06692575545092],"heading":1.029386,"timestamp":1765040423723},"lwh":[5.048340320587158,1.9778791666030884,1.8502358198165894],"speed":5.212520599365234,"type":"vehicle","zone":26}