Timesheets

New: Timesheet (time entry) endpoints

Create, read, update, and delete timesheets — time entries logged by a worker against a project, account, or opportunity (and optionally a work order).

MethodPathDescription
GET/timesheetsList timesheets (pagination, filtering, sorting)
POST/timesheetsCreate a timesheet
GET/timesheets/{timesheet_id}Get a timesheet by ID
PATCH/timesheets/{timesheet_id}Update a timesheet, or archive/unarchive it
DELETE/timesheets/{timesheet_id}Delete a timesheet

Notes

  • POST requires exactly one of projectId, accountId, or opportunityId; PATCH accepts at most one of the three to reassign the timesheet. Responses key the parent id under whichever field matches the record’s actual type — only one of projectId / accountId / opportunityId is ever non-null.
  • List filters: user_id, project_id / account_id / opportunity_id (aliases for the same filter), work_order_id, type (WORKING or TRAVEL), status, start_date / end_date (the entry’s own time range), updated_after / updated_before, and include_archived.
  • Set isArchived to true/false on PATCH to archive/unarchive a timesheet; this is applied independently of any other fields in the same request. Archived timesheets are excluded from GET unless include_archived=true is passed.