Timesheets API
GET/api/v1/time-sheets/search
Product availabilityAlgaPSA

Search time sheets

Searches time sheets via ApiTimeSheetController.search(). `query` is required and is matched as a case-insensitive substring against the sheet owner's full name (first name + space + last name). `user_name` is the only searchable field and the default. Optional filters narrow by approval status, user, period and period date range. Array params (`fields`, `approval_statuses`, `user_ids`, `period_ids`) accept repeated params or comma-separated values. `include_entries=true` adds each sheet's `time_entries`. Returns at most `limit` sheets (default 25, max 100).

RBAC · time_sheet

Query parameters

querystringRequired
Search text (required). Case-insensitive substring match.
fieldsstringOptional
Fields to search. Only `user_name` (the user's full name) is supported, and it is the default.
approval_statusesstringOptional
Approval statuses to keep (e.g. DRAFT, SUBMITTED, APPROVED, CHANGES_REQUESTED). Repeat or comma-separate.
user_idsstringOptional
User UUIDs to keep. Repeat or comma-separate.
period_idsstringOptional
Time period UUIDs to keep. Repeat or comma-separate.
date_fromstringOptional
Keep sheets whose period starts on/after this YYYY-MM-DD date.
date_tostringOptional
Keep sheets whose period ends on/before this YYYY-MM-DD date.
include_entriesstringOptional
Include time_entries on each sheet. Default false.
limitstringOptional
Max results, 1-100. Default 25.

Response body

Success response 200 · schema WorkV1TimeSheetSearchResponse

dataarray of objectRequired
itemsobject
tenantstring <uuid>Required
idstring <uuid>Required
user_idstring <uuid>Required
period_idstring <uuid>Required
approval_statusstringRequired
Enum: DRAFTSUBMITTEDAPPROVEDCHANGES_REQUESTED
submitted_atstring <date-time>RequiredNullable
approved_atstring <date-time>RequiredNullable
approved_bystring <uuid>RequiredNullable
user_namestringRequired
time_entriesarray of object
itemsobject
tenantstring <uuid>Required
entry_idstring <uuid>Required
user_idstring <uuid>Required
start_timestring <date-time>RequiredNullable
end_timestring <date-time>Required
notesstringRequiredNullable
work_item_idstring <uuid>RequiredNullable
billable_durationintegerRequiredNullable
work_item_typestringRequiredNullable
Enum: ticketproject_tasknon_billable_categoryad_hocinteractionnull
approval_statusstringRequiredNullable
Enum: DRAFTSUBMITTEDAPPROVEDREJECTEDCHANGES_REQUESTEDnull
time_sheet_idstring <uuid>RequiredNullable
created_atstring <date-time>RequiredNullable
updated_atstring <date-time>RequiredNullable
service_idstring <uuid>RequiredNullable
tax_regionstringRequiredNullable
invoicedbooleanRequiredNullable
tax_rate_idstring <uuid>RequiredNullable
contract_line_idstring <uuid>RequiredNullable
work_datestringRequired
pattern /^\d{4}-\d{2}-\d{2}$/
work_timezonestringRequired
created_bystring <uuid>RequiredNullable
updated_bystring <uuid>RequiredNullable
contract_line_sourcestringRequiredNullable
Enum: explicitauto_unique_serviceauto_bucket_overlayunresolvedreconciled_at_generationauto_billing_profilenull
contract_line_unresolved_reasonstringRequiredNullable
Enum: ambiguousno_matcherrornull
catalog_pricing_acknowledged_atstring <date-time>RequiredNullable
catalog_pricing_acknowledged_bystring <uuid>RequiredNullable

Response codes

200
Matching time sheets (at most `limit`).
400
Validation or request parsing failure.
401
API key missing/invalid or associated user missing.
403
RBAC denied for time_sheet resource action.
500
Unexpected controller/service failure.