Skip to content

timesheets

Crew module · 5 operations

List timesheet rows

GET/timesheets

A timesheet for one person and pay period. An approval is voided when its hours change. Returns a cursor page of timesheet rows the caller may see. The default order is `created_at` ascending. Supports sparse fieldsets and the filter grammar.

Create a timesheet

POST/timesheets

A timesheet for one person and pay period. An approval is voided when its hours change. Creates a timesheet. Requires `Idempotency-Key`; a replay returns the original response. The organization is derived from the credential or the parent row, never from the body.

Get a timesheet

GET/timesheets/{id}

A timesheet for one person and pay period. An approval is voided when its hours change. Returns one timesheet with its `ETag`. A timesheet the caller may not see returns 404.

Submit a timesheet

POST/timesheets/{id}/submit

Submits the timesheet for approval. Requires `Idempotency-Key`; a replay returns the original response. A rule that refuses the request returns 422 with `refusal` and `reason`.

Approve a timesheet

POST/timesheets/{id}/approve

Records an approval decision on the timesheet. The submitter cannot approve it, and an approval is voided when its hours change. Spend authority and separation of duties are enforced in the approval RPC; a refusal returns 422 and names the rule. Requires `Idempotency-Key`; a replay returns the original response. A rule that refuses the request returns 422 with `refusal` and `reason`.