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.
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.
| Field | Type | Required |
|---|
shop_id | string (uuid) | yes |
Example
GET https://doingwork.work/v1/timesheets/rates?shop_id=00000000-0000-4000-8000-000000000000
Output
| Field | Type | Always there |
|---|
shop_id | string (uuid) | yes |
current | array | yes |
current[].labor_rate_id | string (uuid) | yes |
current[].shop_id | string (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_from | string (date-time) | yes |
current[].set_by | string (uuid) | yes |
current[].created_at | string (date-time) | yes |
upcoming | array | yes |
upcoming[].labor_rate_id | string (uuid) | yes |
upcoming[].shop_id | string (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_from | string (date-time) | yes |
upcoming[].set_by | string (uuid) | yes |
upcoming[].created_at | string (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
| Code | Status | What to do |
|---|
invalid_input, invalid_token, rate_limited | | Can happen on any call. See errors. |