Private preview of the new site. Not live.

timesheets.listRates

Labor cost rates in force now: the shop default and each worker's own, plus upcoming ones. Needs see_costs. A field worker sees only their own and the shop default.

WhoAgents can call this
RESTGET /v1/timesheets/rates
MCP tooltimesheets_listRates
Writesno
AreaField work (checklists, forms, time, notes, change orders, subcontractors)

When to use it

Keep the crew's time: timesheets.clockIn starts a clock on a job (category work) or for drive, shop or break time, and timesheets.clockOut stops it; one clock runs per person per shop (pass stop_running to switch). Forgotten time goes in with timesheets.add (start and end, at most 24 hours per entry); time never overlaps the same person's other time.

What to tell the owner

Tell them what you found in plain words. Don't read back raw fields.

Input

FieldTypeRequired
shop_idstring (uuid)yes

Example

GET https://doingwork.work/v1/timesheets/rates?shop_id=00000000-0000-4000-8000-000000000000

Output

FieldTypeAlways there
shop_idstring (uuid)yes
currentarrayyes
current[].labor_rate_idstring (uuid)yes
current[].shop_idstring (uuid)yes
current[].person_id['string', 'null', ' ', '(', 'u', 'u', 'i', 'd', ')']yes
current[].person_name['string', 'null']yes
current[].cost_per_hour_minor['integer', 'null']yes
current[].effective_fromstring (date-time)yes
current[].set_bystring (uuid)yes
current[].created_atstring (date-time)yes
upcomingarrayyes
upcoming[].labor_rate_idstring (uuid)yes
upcoming[].shop_idstring (uuid)yes
upcoming[].person_id['string', 'null', ' ', '(', 'u', 'u', 'i', 'd', ')']yes
upcoming[].person_name['string', 'null']yes
upcoming[].cost_per_hour_minor['integer', 'null']yes
upcoming[].effective_fromstring (date-time)yes
upcoming[].set_bystring (uuid)yes
upcoming[].created_atstring (date-time)yes
{
  "shop_id": "00000000-0000-4000-8000-000000000000",
  "current": [
    {
      "labor_rate_id": "00000000-0000-4000-8000-000000000000",
      "shop_id": "00000000-0000-4000-8000-000000000000",
      "person_id": "00000000-0000-4000-8000-000000000000",
      "person_name": "...",
      "cost_per_hour_minor": "...",
      "effective_from": "...",
      "set_by": "00000000-0000-4000-8000-000000000000",
      "created_at": "..."
    }
  ],
  "upcoming": [
    {
      "labor_rate_id": "00000000-0000-4000-8000-000000000000",
      "shop_id": "00000000-0000-4000-8000-000000000000",
      "person_id": "00000000-0000-4000-8000-000000000000",
      "person_name": "...",
      "cost_per_hour_minor": "...",
      "effective_from": "...",
      "set_by": "00000000-0000-4000-8000-000000000000",
      "created_at": "..."
    }
  ]
}

Errors

CodeStatusWhat to do
invalid_input, invalid_token, rate_limitedCan happen on any call. See errors.