Dozer logoDozer
Get started
Dozer Docs
Collections

Operators

The crew who run the machines.

Base path /api/v1/operators 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 operators

GET /api/v1/operators

curl "https://trydozer.com/api/v1/operators?status=on_shift" \
  -H "Authorization: Bearer $DASH_API_KEY" \
  -H "Project-ID: pr_northpit"
Show me the operators filtered by status
data_query {
  "collection": "operators",
  "where": {
    "status": "on_shift"
  }
}

Returns a paginated list of operator objects, newest first.

{
  "object": "list",
  "data": [
    {
      "object": "operator",
      "id": "obj_123",
      "name": "Dan Whitfield",
      "role": "Excavator Operator",
      "phone": "+1 907 555 0177",
      "email": "dan@example.com",
      "status": "on_shift",
      "created_at": "2026-07-25T12:00:00.000Z",
      "updated_at": "2026-07-25T12:00:00.000Z"
    }
  ],
  "has_more": false,
  "next_cursor": null
}

Parameters

ParameterTypeKindDescription
statusstringfilterWhether the operator is working right now — available, on_shift, active, or off_shift.
rolestringfilterThe operator's job title.
locationstringfilterSite or pit the operator is assigned to.
qstringsearchFree-text search across name, email.
sortstringsortOne of shift_count, name; prefix with - to reverse.
limitnumberpageRows to return, 1–100. Defaults to 20.
cursorstringpagenext_cursor from the previous page.

Retrieve a operator

GET /api/v1/operators/a60h-12

curl "https://trydozer.com/api/v1/operators/a60h-12" \
  -H "Authorization: Bearer $DASH_API_KEY" \
  -H "Project-ID: pr_northpit"
Open the operator {id}
data_get {
  "collection": "operators",
  "object_id": "a60h-12"
}

Returns the operator object.

{
  "object": "operator",
  "id": "obj_123",
  "name": "Dan Whitfield",
  "role": "Excavator Operator",
  "phone": "+1 907 555 0177",
  "email": "dan@example.com",
  "status": "on_shift",
  "created_at": "2026-07-25T12:00:00.000Z",
  "updated_at": "2026-07-25T12:00:00.000Z"
}

Parameters

ParameterTypeKindDescription
idstringpathThe operator's id or slug.

Create a operator

POST /api/v1/operators

curl -X POST "https://trydozer.com/api/v1/operators" \
  -H "Authorization: Bearer $DASH_API_KEY" \
  -H "Project-ID: pr_northpit" \
  -H "Content-Type: application/json" \
  -d '{"name":"Dan Whitfield","role":"Excavator Operator","phone":"+1 907 555 0177","email":"dan@example.com","status":"available","location":"North Pit"}'
Create a new operator
data_set {
  "collection": "operators",
  "object_id": "a60h-12",
  "data": {
    "name": "Dan Whitfield",
    "role": "Excavator Operator",
    "phone": "+1 907 555 0177",
    "email": "dan@example.com",
    "status": "available",
    "location": "North Pit"
  }
}

Returns the operator object.

{
  "object": "operator",
  "id": "obj_123",
  "name": "Dan Whitfield",
  "role": "Excavator Operator",
  "phone": "+1 907 555 0177",
  "email": "dan@example.com",
  "status": "on_shift",
  "created_at": "2026-07-25T12:00:00.000Z",
  "updated_at": "2026-07-25T12:00:00.000Z"
}

Parameters

FieldTypeRequiredDescription
namestringnoThe operator's name.
rolestringnoThe operator's job title.
phonestringnoPhone number to reach the operator on.
emailstringnoEmail address to reach the operator on.
statusstringnoWhether the operator is working right now — available, on_shift, active, or off_shift.
locationstringnoSite or pit the operator is assigned to.

Update a operator

PATCH /api/v1/operators/a60h-12

curl -X PATCH "https://trydozer.com/api/v1/operators/a60h-12" \
  -H "Authorization: Bearer $DASH_API_KEY" \
  -H "Project-ID: pr_northpit" \
  -H "Content-Type: application/json" \
  -d '{"name":"name","role":"role","phone":"phone"}'
Update the operator {id}
data_set {
  "collection": "operators",
  "object_id": "a60h-12",
  "data": {
    "name": "name",
    "role": "role",
    "phone": "phone"
  }
}

Returns the operator object.

{
  "object": "operator",
  "id": "obj_123",
  "name": "Dan Whitfield",
  "role": "Excavator Operator",
  "phone": "+1 907 555 0177",
  "email": "dan@example.com",
  "status": "on_shift",
  "created_at": "2026-07-25T12:00:00.000Z",
  "updated_at": "2026-07-25T12:00:00.000Z"
}

Parameters

FieldTypeRequiredDescription
namestringnoThe operator's name.
rolestringnoThe operator's job title.
phonestringnoPhone number to reach the operator on.
emailstringnoEmail address to reach the operator on.
statusstringnoWhether the operator is working right now — available, on_shift, active, or off_shift.
locationstringnoSite or pit the operator is assigned to.

Append an event to a operator

POST /api/v1/operators/{id}/events

curl -X POST "https://trydozer.com/api/v1/operators/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 operator {id}
data_event {
  "collection": "operators",
  "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 operator carries the envelope below. The fields under it are computed or stamped by the platform — they are returned, never sent.

FieldTypeDescription
objectstringAlways operator.
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.
shift_countnumberHow many shifts this operator has on record. Rolled up from shift data, not set by a caller.
linked_user_idstringDash user this operator record is linked to, once they have accepted an invite.
icon_imagestringStorage key of the operator's avatar image, generated by the platform image pipeline.

Errors

Failures use { error: { type, code, message, param } }. The full code table is generated at Error Codes.