Equipment
Machines on your site — the unit numbers your crew already uses.
Base path /api/v1/equipment 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 equipment
GET /api/v1/equipment
curl "https://trydozer.com/api/v1/equipment?status=in_use" \
-H "Authorization: Bearer $DASH_API_KEY" \
-H "Project-ID: pr_northpit"Which machines have not reported in today?data_query {
"collection": "equipment",
"where": {
"status": "in_use"
}
}Returns a paginated list of equipment objects, newest first.
{
"object": "list",
"data": [
{
"object": "equipment",
"id": "obj_123",
"unit_number": "EXC-347",
"name": "Komatsu PC490",
"type": "excavator",
"status": "in_use",
"status_color": "status color",
"status_reported_at": "2026-07-25T12:00:00.000Z",
"state": "state",
"observation": "observation",
"timeline_changes": "timeline changes",
"metrics": {},
"engine_hours": 6248,
"live_status": "running",
"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 | Current workflow state — available, in_use, maintenance, down, or decommissioned. Set by dispatch workflows; telemetry-derived state lives in live_status. |
type | string | filter | Machine class (excavator, haul truck, dozer, …). |
location | string | filter | Site or yard the machine is assigned to. |
pit | string | filter | Pit or zone within the site. |
device_id | string | filter | Id of the telemetry device linked to this machine. |
q | string | search | Free-text search across unit_number, name. |
sort | string | sort | One of last_live_data_at, unit_number, status; 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 equipment
GET /api/v1/equipment/a60h-12
curl "https://trydozer.com/api/v1/equipment/a60h-12" \
-H "Authorization: Bearer $DASH_API_KEY" \
-H "Project-ID: pr_northpit"Show me everything on EXC-347data_get {
"collection": "equipment",
"object_id": "a60h-12"
}Returns the equipment object.
{
"object": "equipment",
"id": "obj_123",
"unit_number": "EXC-347",
"name": "Komatsu PC490",
"type": "excavator",
"status": "in_use",
"status_color": "status color",
"status_reported_at": "2026-07-25T12:00:00.000Z",
"state": "state",
"observation": "observation",
"timeline_changes": "timeline changes",
"metrics": {},
"engine_hours": 6248,
"live_status": "running",
"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 equipment's id or slug. |
Create a equipment
POST /api/v1/equipment
curl -X POST "https://trydozer.com/api/v1/equipment" \
-H "Authorization: Bearer $DASH_API_KEY" \
-H "Project-ID: pr_northpit" \
-H "Content-Type: application/json" \
-d '{"unit_number":"EXC-347","name":"Komatsu PC490","type":"excavator","status":"available","location":"North Pit","make":"Komatsu","model":"PC490","year":2021,"engine_hours":6240}'Add excavator EXC-347 at the North Pitdata_set {
"collection": "equipment",
"object_id": "a60h-12",
"data": {
"unit_number": "EXC-347",
"name": "Komatsu PC490",
"type": "excavator",
"status": "available",
"location": "North Pit",
"make": "Komatsu",
"model": "PC490",
"year": 2021,
"engine_hours": 6240
}
}Returns the equipment object.
{
"object": "equipment",
"id": "obj_123",
"unit_number": "EXC-347",
"name": "Komatsu PC490",
"type": "excavator",
"status": "in_use",
"status_color": "status color",
"status_reported_at": "2026-07-25T12:00:00.000Z",
"state": "state",
"observation": "observation",
"timeline_changes": "timeline changes",
"metrics": {},
"engine_hours": 6248,
"live_status": "running",
"created_at": "2026-07-25T12:00:00.000Z",
"updated_at": "2026-07-25T12:00:00.000Z"
}Parameters
| Field | Type | Required | Description |
|---|---|---|---|
unit_number | string | no | The number painted on the machine — how the crew refers to it. |
name | string | no | Display name for the machine. |
type | string | no | Machine class (excavator, haul truck, dozer, …). |
status | string | no | Current workflow state — available, in_use, maintenance, down, or decommissioned. Set by dispatch workflows; telemetry-derived state lives in live_status. |
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. |
observation | string | no | Current human-readable observation for this equipment. |
make | string | no | Manufacturer (e.g. Komatsu). |
model | string | no | Model designation (e.g. PC490). |
year | number | no | Model year. |
serial_number | string | no | VIN / serial number. |
location | string | no | Site or yard the machine is assigned to. |
pit | string | no | Pit or zone within the site. |
engine_hours | number | no | Engine-hour meter reading. Updated by end-of-shift reports, or by telemetry when a device is linked. |
assigned_operator | string | no | Operator objectId currently assigned to this machine. |
telemetry_mode | string | no | How this machine is tracked for telemetry/hours — live from a linked device, manual from shift reports, or none. One of live, manual, none. |
telemetry_integration | string | no | External integration writing live telemetry for this machine. |
Update a equipment
PATCH /api/v1/equipment/a60h-12
curl -X PATCH "https://trydozer.com/api/v1/equipment/a60h-12" \
-H "Authorization: Bearer $DASH_API_KEY" \
-H "Project-ID: pr_northpit" \
-H "Content-Type: application/json" \
-d '{"telemetry_mode":"live"}'Move EXC-347 to the South Pitdata_set {
"collection": "equipment",
"object_id": "a60h-12",
"data": {
"telemetry_mode": "live"
}
}Returns the equipment object.
{
"object": "equipment",
"id": "obj_123",
"unit_number": "EXC-347",
"name": "Komatsu PC490",
"type": "excavator",
"status": "in_use",
"status_color": "status color",
"status_reported_at": "2026-07-25T12:00:00.000Z",
"state": "state",
"observation": "observation",
"timeline_changes": "timeline changes",
"metrics": {},
"engine_hours": 6248,
"live_status": "running",
"created_at": "2026-07-25T12:00:00.000Z",
"updated_at": "2026-07-25T12:00:00.000Z"
}Parameters
| Field | Type | Required | Description |
|---|---|---|---|
unit_number | string | no | The number painted on the machine — how the crew refers to it. |
name | string | no | Display name for the machine. |
type | string | no | Machine class (excavator, haul truck, dozer, …). |
status | string | no | Current workflow state — available, in_use, maintenance, down, or decommissioned. Set by dispatch workflows; telemetry-derived state lives in live_status. |
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. |
observation | string | no | Current human-readable observation for this equipment. |
make | string | no | Manufacturer (e.g. Komatsu). |
model | string | no | Model designation (e.g. PC490). |
year | number | no | Model year. |
serial_number | string | no | VIN / serial number. |
location | string | no | Site or yard the machine is assigned to. |
pit | string | no | Pit or zone within the site. |
engine_hours | number | no | Engine-hour meter reading. Updated by end-of-shift reports, or by telemetry when a device is linked. |
assigned_operator | string | no | Operator objectId currently assigned to this machine. |
telemetry_mode | string | no | How this machine is tracked for telemetry/hours — live from a linked device, manual from shift reports, or none. One of live, manual, none. |
telemetry_integration | string | no | External integration writing live telemetry for this machine. |
Append an event to a equipment
POST /api/v1/equipment/{id}/events
curl -X POST "https://trydozer.com/api/v1/equipment/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"}}'Log a note on EXC-347 — hydraulic leak flagged by the operatordata_event {
"collection": "equipment",
"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, … |
What comes back (read-only)
Every equipment 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 equipment. |
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 workers for top-level display. |
metrics | object | Loose metrics map stamped by workers for display surfaces. |
last_live_data_at | string | When telemetry last arrived from a connected device (ISO 8601). Stamped by the telemetry path, never sent by a caller. |
device_id | string | Id of the telemetry device linked to this machine. |
telemetry_linked_at | string | When a telemetry device was linked (ISO 8601). |
live_status | string | Telemetry-derived live state. Never used for dispatch workflow state — that is status. |
live_status_updated_at | string | When live_status was last updated (ISO 8601). |
last_signal_at | string | ISO timestamp of the latest decoded telemetry signal. |
last_computed_data_at | string | ISO timestamp of the latest computed telemetry worker output. |
last_seen | string | Last telemetry heartbeat fanned out from the linked device (ISO 8601). |
rpm | number | Latest decoded engine speed from CAN telemetry. |
speed | number | Latest decoded vehicle speed in km/h. |
speed_kmh | number | Latest decoded vehicle speed in km/h (canonical telemetry name). |
coolant_temp | number | Latest decoded engine coolant temperature in Celsius. |
coolant_pressure | number | Latest decoded coolant pressure in kPa. |
coolant_level | number | Latest decoded coolant level percentage. |
oil_pressure | number | Latest decoded engine oil pressure in kPa. |
boost_pressure | number | Latest decoded intake manifold / boost pressure in kPa. |
engine_load | number | Latest decoded actual engine load percentage. |
engine_load_demand | number | Latest decoded driver-demand engine load percentage. |
fuel_rate | number | Latest decoded fuel rate in L/h. |
fuel_level | number | Latest decoded fuel level percentage. |
battery_voltage | number | Latest decoded battery voltage. |
throttle_position | number | Latest decoded throttle position percentage. |
intake_air_temp | number | Latest decoded intake air temperature in Celsius. |
ambient_air_temp | number | Latest decoded ambient air temperature in Celsius. |
location_lat | number | Latest decoded telemetry latitude. |
location_lon | number | Latest decoded telemetry longitude. |
gmaps_link | string | Google Maps link for the latest decoded telemetry coordinates. |
location_maps_url | string | Map link for the latest decoded telemetry coordinates. |
location_updated_at | string | ISO timestamp of the latest decoded telemetry coordinates. |
background_image | string | Storage key of the AI-generated background image for this machine (platform default-image pipeline; see default_image below). |
icon_image | string | Storage key of the AI-generated icon rendered as the list media cell (platform default-image pipeline). |
Errors
Failures use { error: { type, code, message, param } }. The full code table is generated at Error Codes.