Devices
CANedge loggers, cameras and other hardware reporting telemetry.
Base path /api/v1/devices on https://trydozer.com. Authenticate with Authorization: Bearer $DASH_API_KEY and name the project with the Project-ID header. Writes are validated in declared mode; an operation this resource does not declare answers 405 operation_not_supported.
List devices
GET /api/v1/devices
curl "https://trydozer.com/api/v1/devices?status=transmitting" \
-H "Authorization: Bearer $DASH_API_KEY" \
-H "Project-ID: pr_northpit"Which devices have stopped reporting?data_query {
"collection": "devices",
"where": {
"status": "transmitting"
}
}Returns a paginated list of device objects, newest first.
{
"object": "list",
"data": [
{
"object": "device",
"id": "obj_123",
"device_id": "canedge-ht14",
"name": "CANedge2 — HT-14",
"status": "transmitting",
"status_color": "status color",
"status_reported_at": "2026-07-25T12:00:00.000Z",
"state": "state",
"observation": "observation",
"timeline_changes": "timeline changes",
"metrics": {},
"created_at": "2026-07-25T12:00:00.000Z",
"updated_at": "2026-07-25T12:00:00.000Z"
}
],
"has_more": false,
"next_cursor": null
}Parameters
| Parameter | Type | Kind | Description |
|---|---|---|---|
status | string | filter | Where the device stands: unassigned, provisioned, online, offline, transmitting, or fault. |
device_type | string | filter | Sensor, gateway, camera or stream device model (e.g. CANedge3, canbus, Argos Vision). The device detail view branches on this field. |
integration | string | filter | External integration id feeding this device, such as canedge, argos, or ring. |
equipment_id | string | filter | Equipment objectId this device is mounted on. |
q | string | search | Free-text search across name, device_id. |
sort | string | sort | One of last_seen_at, name; prefix with - to reverse. |
limit | number | page | Rows to return, 1–100. Defaults to 20. |
cursor | string | page | next_cursor from the previous page. |
Retrieve a device
GET /api/v1/devices/a60h-12
curl "https://trydozer.com/api/v1/devices/a60h-12" \
-H "Authorization: Bearer $DASH_API_KEY" \
-H "Project-ID: pr_northpit"Show me the CANedge on HT-14data_get {
"collection": "devices",
"object_id": "a60h-12"
}Returns the device object.
{
"object": "device",
"id": "obj_123",
"device_id": "canedge-ht14",
"name": "CANedge2 — HT-14",
"status": "transmitting",
"status_color": "status color",
"status_reported_at": "2026-07-25T12:00:00.000Z",
"state": "state",
"observation": "observation",
"timeline_changes": "timeline changes",
"metrics": {},
"created_at": "2026-07-25T12:00:00.000Z",
"updated_at": "2026-07-25T12:00:00.000Z"
}Parameters
| Parameter | Type | Kind | Description |
|---|---|---|---|
id | string | path | The device's id or slug. |
Append an event to a device
POST /api/v1/devices/{id}/events
curl -X POST "https://trydozer.com/api/v1/devices/a60h-12/events" \
-H "Authorization: Bearer $DASH_API_KEY" \
-H "Project-ID: pr_northpit" \
-H "Content-Type: application/json" \
-d '{"event":"Noted by the operator","context":{"source":"api"}}'Add a note to the device {id}data_event {
"collection": "devices",
"object_id": "a60h-12",
"event": "Noted by the operator"
}Returns the appended event object.
{
"object": "event",
"id": "evt_123",
"event": "Noted by the operator"
}Parameters
| Field | Type | Required | Description |
|---|---|---|---|
event | string | yes | The human-readable timeline entry. |
context | object | no | Provenance — source, integration, worker_run_id, … |
Create a device
POST /api/v1/devices
curl -X POST "https://trydozer.com/api/v1/devices" \
-H "Authorization: Bearer $DASH_API_KEY" \
-H "Project-ID: pr_northpit" \
-H "Content-Type: application/json" \
-d '{"device_id":"device_123","name":"name","status":"status"}'Create a new devicedata_set {
"collection": "devices",
"object_id": "a60h-12",
"data": {
"device_id": "device_123",
"name": "name",
"status": "status"
}
}Returns the device object.
{
"object": "device",
"id": "obj_123",
"device_id": "canedge-ht14",
"name": "CANedge2 — HT-14",
"status": "transmitting",
"status_color": "status color",
"status_reported_at": "2026-07-25T12:00:00.000Z",
"state": "state",
"observation": "observation",
"timeline_changes": "timeline changes",
"metrics": {},
"created_at": "2026-07-25T12:00:00.000Z",
"updated_at": "2026-07-25T12:00:00.000Z"
}Parameters
| Field | Type | Required | Description |
|---|---|---|---|
device_id | string | no | Hardware or stream device id — how the device API and integrations name this device. |
name | string | no | Display name for the device. |
status | string | no | Where the device stands: unassigned, provisioned, online, offline, transmitting, or fault. |
status_color | string | no | Optional display color preset for status. |
status_reported_at | string | no | When status was last reported (ISO 8601). |
state | string | no | Loose operational state reported by a worker or integration (e.g. active). |
observation | string | no | Current human-readable observation for this device. |
device_type | string | no | Sensor, gateway, camera or stream device model (e.g. CANedge3, canbus, Argos Vision). The device detail view branches on this field. |
integration | string | no | External integration id feeding this device, such as canedge, argos, or ring. |
serial_number | string | no | Hardware serial number. |
imei | string | no | Cellular modem IMEI, when the device has one. |
protocol | string | no | Bus or transport protocol the device speaks (e.g. J1939). |
platform | string | no | Vendor platform name reported by the integration. |
firmware | string | no | Firmware name reported by the device. |
firmware_version | string | no | Firmware version reported by the device. |
location | json | no | Where the device is — a site name string on seeded devices, or a \{lat, lon\} object stamped by GNSS telemetry. Mixed by measurement; see the location_* scalars for the decoded coordinates. |
last_seen_at | string | no | When Dozer last heard from the device (ISO 8601). Stamped at seed time by the setup skill; integration freshness lives in the pipeline stamps below. |
notes | string | no | Operator/admin notes about this device. |
Update a device
PATCH /api/v1/devices/a60h-12
curl -X PATCH "https://trydozer.com/api/v1/devices/a60h-12" \
-H "Authorization: Bearer $DASH_API_KEY" \
-H "Project-ID: pr_northpit" \
-H "Content-Type: application/json" \
-d '{"device_id":"device_123","name":"name","status":"status"}'Update the device {id}data_set {
"collection": "devices",
"object_id": "a60h-12",
"data": {
"device_id": "device_123",
"name": "name",
"status": "status"
}
}Returns the device object.
{
"object": "device",
"id": "obj_123",
"device_id": "canedge-ht14",
"name": "CANedge2 — HT-14",
"status": "transmitting",
"status_color": "status color",
"status_reported_at": "2026-07-25T12:00:00.000Z",
"state": "state",
"observation": "observation",
"timeline_changes": "timeline changes",
"metrics": {},
"created_at": "2026-07-25T12:00:00.000Z",
"updated_at": "2026-07-25T12:00:00.000Z"
}Parameters
| Field | Type | Required | Description |
|---|---|---|---|
device_id | string | no | Hardware or stream device id — how the device API and integrations name this device. |
name | string | no | Display name for the device. |
status | string | no | Where the device stands: unassigned, provisioned, online, offline, transmitting, or fault. |
status_color | string | no | Optional display color preset for status. |
status_reported_at | string | no | When status was last reported (ISO 8601). |
state | string | no | Loose operational state reported by a worker or integration (e.g. active). |
observation | string | no | Current human-readable observation for this device. |
device_type | string | no | Sensor, gateway, camera or stream device model (e.g. CANedge3, canbus, Argos Vision). The device detail view branches on this field. |
integration | string | no | External integration id feeding this device, such as canedge, argos, or ring. |
serial_number | string | no | Hardware serial number. |
imei | string | no | Cellular modem IMEI, when the device has one. |
protocol | string | no | Bus or transport protocol the device speaks (e.g. J1939). |
platform | string | no | Vendor platform name reported by the integration. |
firmware | string | no | Firmware name reported by the device. |
firmware_version | string | no | Firmware version reported by the device. |
location | json | no | Where the device is — a site name string on seeded devices, or a \{lat, lon\} object stamped by GNSS telemetry. Mixed by measurement; see the location_* scalars for the decoded coordinates. |
last_seen_at | string | no | When Dozer last heard from the device (ISO 8601). Stamped at seed time by the setup skill; integration freshness lives in the pipeline stamps below. |
notes | string | no | Operator/admin notes about this device. |
What comes back (read-only)
Every device carries the envelope below. The fields under it are computed or stamped by the platform — they are returned, never sent.
| Field | Type | Description |
|---|---|---|
object | string | Always device. |
id | string | Stable object id. Also accepted in place of slug on any path. |
slug | string | URL-safe name, unique within the collection. |
created_at | string | ISO-8601 timestamp of the first write. |
updated_at | string | ISO-8601 timestamp of the most recent write. The cursor sorts on this. |
timeline_changes | string | Short latest timeline-change summary, stamped by device workers for top-level display. |
metrics | object | Loose metrics map stamped by workers for display surfaces. |
equipment_id | string | Equipment objectId this device is mounted on. |
equipment | array | Equipment ids declared by an external device integration (first entry becomes equipment_id). |
machine_id | string | Equipment id reported by telemetry. |
project_id | string | Dash project id reported by telemetry. |
last_live_data_at | string | When this device last received live data (ISO 8601). |
last_stream_data_at | string | ISO timestamp of the latest raw stream upload for this device. |
last_computed_data_at | string | ISO timestamp of the latest computed telemetry or worker output. |
last_signal_at | string | ISO timestamp of the latest decoded telemetry signal. |
last_upload_at | string | ISO timestamp of the latest raw upload. |
last_processed_at | string | Mirror of last_computed_data_at still stamped by the canedge worker for older readers. Read it, never set it. |
location_lat | number | Latest decoded telemetry latitude. |
location_lon | number | Latest decoded telemetry longitude. |
location_maps_url | string | Map link for the latest decoded telemetry coordinates. |
location_updated_at | string | ISO timestamp of the latest decoded telemetry coordinates. |
location_speed_kmh | number | Latest decoded ground speed in km/h. |
assigned_at | string | When this device was linked to equipment (ISO 8601). |
registered_at | string | When this device was registered through the device API (ISO 8601). |
requested_device_id | string | Device id requested by an external provisioning caller before normalization. |
resources | object | Device API endpoints for this device, stamped at registration. |
resources.stream_url | string | Endpoint the device streams raw uploads to. |
resources.data_url | string | Batch data-write endpoint for decoded values. |
resources.event_url | string | Endpoint for filing timeline events on this device. |
resources.settings_url | string | Endpoint for reading and updating device settings. |
settings | object | Device integration settings reported by the device API. |
workers | array | Configured device worker descriptors for this device. |
live | object | Current signal values keyed by canonical telemetry name. |
pipeline | object | Current stream, media, and worker process state. |
parser | object | Parser metadata from the most recent device worker run. |
worker | object | Worker provenance, cost, and runtime metadata. |
vision | object | Vision model outputs for camera-style devices. |
last_media_id | string | Latest media id analyzed by a device vision worker. |
vision_summary | string | Short natural-language summary from the latest vision worker run. |
vision_summary_as_of | string | Media timestamp represented by the latest vision summary. |
vision_state_overview | string | Operational state description inferred from the latest media. |
vision_scene_summary | object | Structured overview returned by the vision model. |
vision_total_duration | string | Duration of the analyzed media segment. |
vision_model | string | Model used by the latest vision worker run. |
vision_skill_id | string | Skill id used by the latest vision worker run. |
vision_skill_version | string | Skill version used by the latest vision worker run. |
vision_phase | string | Processing phase for staged vision capabilities. |
vision_entities | array | Equipment, objects, and other entities identified in the latest media. |
vision_timeline_changes | array | Chronological vision events detected in the latest media. |
worker_cost | object | Estimated AI, worker, and storage cost for the latest worker output. |
source | string | Origin of this device record, such as an uploaded devices file. |
Errors
Failures use { error: { type, code, message, param } }. The full code table is generated at Error Codes.