Dozer logoDozer
Get started
Dozer Docs
Collections

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

ParameterTypeKindDescription
statusstringfilterCurrent workflow state — available, in_use, maintenance, down, or decommissioned. Set by dispatch workflows; telemetry-derived state lives in live_status.
typestringfilterMachine class (excavator, haul truck, dozer, …).
locationstringfilterSite or yard the machine is assigned to.
pitstringfilterPit or zone within the site.
device_idstringfilterId of the telemetry device linked to this machine.
qstringsearchFree-text search across unit_number, name.
sortstringsortOne of last_live_data_at, unit_number, status; prefix with - to reverse.
limitnumberpageRows to return, 1–100. Defaults to 20.
cursorstringpagenext_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-347
data_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

ParameterTypeKindDescription
idstringpathThe 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 Pit
data_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

FieldTypeRequiredDescription
unit_numberstringnoThe number painted on the machine — how the crew refers to it.
namestringnoDisplay name for the machine.
typestringnoMachine class (excavator, haul truck, dozer, …).
statusstringnoCurrent workflow state — available, in_use, maintenance, down, or decommissioned. Set by dispatch workflows; telemetry-derived state lives in live_status.
status_colorstringnoOptional display color preset for status.
status_reported_atstringnoWhen status was last reported (ISO 8601).
statestringnoLoose operational state reported by a worker or integration.
observationstringnoCurrent human-readable observation for this equipment.
makestringnoManufacturer (e.g. Komatsu).
modelstringnoModel designation (e.g. PC490).
yearnumbernoModel year.
serial_numberstringnoVIN / serial number.
locationstringnoSite or yard the machine is assigned to.
pitstringnoPit or zone within the site.
engine_hoursnumbernoEngine-hour meter reading. Updated by end-of-shift reports, or by telemetry when a device is linked.
assigned_operatorstringnoOperator objectId currently assigned to this machine.
telemetry_modestringnoHow this machine is tracked for telemetry/hours — live from a linked device, manual from shift reports, or none. One of live, manual, none.
telemetry_integrationstringnoExternal 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 Pit
data_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

FieldTypeRequiredDescription
unit_numberstringnoThe number painted on the machine — how the crew refers to it.
namestringnoDisplay name for the machine.
typestringnoMachine class (excavator, haul truck, dozer, …).
statusstringnoCurrent workflow state — available, in_use, maintenance, down, or decommissioned. Set by dispatch workflows; telemetry-derived state lives in live_status.
status_colorstringnoOptional display color preset for status.
status_reported_atstringnoWhen status was last reported (ISO 8601).
statestringnoLoose operational state reported by a worker or integration.
observationstringnoCurrent human-readable observation for this equipment.
makestringnoManufacturer (e.g. Komatsu).
modelstringnoModel designation (e.g. PC490).
yearnumbernoModel year.
serial_numberstringnoVIN / serial number.
locationstringnoSite or yard the machine is assigned to.
pitstringnoPit or zone within the site.
engine_hoursnumbernoEngine-hour meter reading. Updated by end-of-shift reports, or by telemetry when a device is linked.
assigned_operatorstringnoOperator objectId currently assigned to this machine.
telemetry_modestringnoHow this machine is tracked for telemetry/hours — live from a linked device, manual from shift reports, or none. One of live, manual, none.
telemetry_integrationstringnoExternal 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 operator
data_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

FieldTypeRequiredDescription
eventstringyesThe human-readable timeline entry.
contextobjectnoProvenance — 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.

FieldTypeDescription
objectstringAlways equipment.
idstringStable object id. Also accepted in place of slug on any path.
slugstringURL-safe name, unique within the collection.
created_atstringISO-8601 timestamp of the first write.
updated_atstringISO-8601 timestamp of the most recent write. The cursor sorts on this.
timeline_changesstringShort latest timeline-change summary, stamped by workers for top-level display.
metricsobjectLoose metrics map stamped by workers for display surfaces.
last_live_data_atstringWhen telemetry last arrived from a connected device (ISO 8601). Stamped by the telemetry path, never sent by a caller.
device_idstringId of the telemetry device linked to this machine.
telemetry_linked_atstringWhen a telemetry device was linked (ISO 8601).
live_statusstringTelemetry-derived live state. Never used for dispatch workflow state — that is status.
live_status_updated_atstringWhen live_status was last updated (ISO 8601).
last_signal_atstringISO timestamp of the latest decoded telemetry signal.
last_computed_data_atstringISO timestamp of the latest computed telemetry worker output.
last_seenstringLast telemetry heartbeat fanned out from the linked device (ISO 8601).
rpmnumberLatest decoded engine speed from CAN telemetry.
speednumberLatest decoded vehicle speed in km/h.
speed_kmhnumberLatest decoded vehicle speed in km/h (canonical telemetry name).
coolant_tempnumberLatest decoded engine coolant temperature in Celsius.
coolant_pressurenumberLatest decoded coolant pressure in kPa.
coolant_levelnumberLatest decoded coolant level percentage.
oil_pressurenumberLatest decoded engine oil pressure in kPa.
boost_pressurenumberLatest decoded intake manifold / boost pressure in kPa.
engine_loadnumberLatest decoded actual engine load percentage.
engine_load_demandnumberLatest decoded driver-demand engine load percentage.
fuel_ratenumberLatest decoded fuel rate in L/h.
fuel_levelnumberLatest decoded fuel level percentage.
battery_voltagenumberLatest decoded battery voltage.
throttle_positionnumberLatest decoded throttle position percentage.
intake_air_tempnumberLatest decoded intake air temperature in Celsius.
ambient_air_tempnumberLatest decoded ambient air temperature in Celsius.
location_latnumberLatest decoded telemetry latitude.
location_lonnumberLatest decoded telemetry longitude.
gmaps_linkstringGoogle Maps link for the latest decoded telemetry coordinates.
location_maps_urlstringMap link for the latest decoded telemetry coordinates.
location_updated_atstringISO timestamp of the latest decoded telemetry coordinates.
background_imagestringStorage key of the AI-generated background image for this machine (platform default-image pipeline; see default_image below).
icon_imagestringStorage 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.