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`.