Skip to main content

List Timesheets

GET/timesheets

Summary

Returns a paginated list of timesheets available to the API key, with filters for company, agency, project, assignment, worker, status, and date.

URL Parameters

  • None

Query Parameters

NameTypeRequiredDescription
companystringNoFilter by company id(s). Pass a single id or comma-separated ids. If omitted, data for all companies linked to the API key is returned.
pageintegerNoPage number (default 1)
limitintegerNoRecords per page (default 50, max 200)
statusenum(pending, pending_approval, approved, cancelled, absent)NoFilter by timesheet status
projectstringNoFilter by project id
sitestringNoFilter by site id
assignmentstringNoFilter by assignment id
workerstringNoFilter by worker id
agencystringNoFilter by agency id
querystringNoCase-insensitive search against timesheet reference, worker name/reference, and agency name
dateFieldenum(createdAt, updatedAt, start, end, weekEnding, approvedDate)NoDate field that from/to apply to. Default: createdAt.
fromstringNoDate filter start (YYYY-MM-DD); applies to dateField
tostringNoDate filter end (YYYY-MM-DD); applies to dateField
sortByenum(createdAt, updatedAt, timesheetRef, start, weekEnding, approvedDate)NoSort field
sortOrderenum(asc, desc)NoSort direction
fieldsstringNoComma-separated list of response fields or dot-path nested fields to return
includeTimelogsbooleanNoInclude timelog rows for each timesheet

Request Example

curl -X GET 'https://api.requidex.com/api/open/v1/timesheets' \
-H 'Authorization: Bearer <API_KEY>' \
-H 'Accept: application/json'

Response Fields

The approval fields describe different parts of the workflow: approvalRequestedBy is the latest person who requested approval, approvedBy is the user who approved the timesheet, and timesheetApprovers lists the approvers configured on the assignment.

FieldTypeDescription
agencyobject
Show child attributes
  • id string - Agency id
  • name string - Agency name
approvalRequestedByobjectLatest person who requested timesheet approval.
Show child attributes
  • id string - User or worker id
  • name string - Requester name
  • type string - user or candidate
approvedByobjectUser who approved the timesheet.
Show child attributes
  • id string - User id
  • name string - User name
approvedDatestringApproval timestamp in ISO 8601 date-time format
assignmentobject
Show child attributes
  • id string - Assignment id
  • reference string - Assignment reference
companyobject
Show child attributes
  • id string - Company id
  • name string - Company name
createdAtstringCreation timestamp
endstringTimesheet period end in ISO 8601 date-time format
idstringTimesheet id
netHoursnumberTotal net hours after breaks
payTypestringPay type
pieceRateEntriesarrayPiece work captured on the timesheet.
Show child attributes
  • id string - Entry id
  • pieceRateId string - Rate-card piece rate id
  • code string - Generated piece-rate code
  • name string - Piece-rate name
  • unitLabel and unitLabelPlural string - Unit labels
  • frequency enum - daily or weekly
  • rateType string - Applied rate type
  • values object - Snapshot unit values with pay, emp, margin, and charge
  • totals object - Total units, payValue, empValue, marginValue, and chargeValue
  • lines array - Captured daily or weekly unit lines, including optional date, comment, and costCode
projectobject
Show child attributes
  • id string - Project id
  • name string - Project name
ratesobjectTimesheet rate sets.
Show child attributes
  • wd object with pay, emp, margin, charge, and uplift
  • wdNw object with pay, emp, margin, charge, and uplift
  • weNw object with pay, emp, margin, charge, and uplift
  • bh object with pay, emp, margin, charge, and uplift
  • bhNight object with pay, emp, margin, charge, and uplift
  • sat object with pay, emp, margin, charge, and uplift
  • sun object with pay, emp, margin, charge, and uplift
  • ot object with pay, emp, margin, charge, and uplift
rateTypestringRate type
referencestringTimesheet reference
siteobject
Show child attributes
  • id string - Site id
  • name string - Site name
startstringTimesheet period start in ISO 8601 date-time format
statusstringTimesheet status
timelogsarrayReturned only when includeTimelogs=true.
Show child attributes
  • id string
  • status string
  • date string
  • start string
  • end string
  • shiftType string
  • breaks number - break duration in minutes
  • rateDescription string
  • hours object with standard, overtime, and total; standard and total are gross values including breaks
  • rates object with pay, emp, margin, and charge
  • values object with pay, emp, margin, and charge breakdowns containing standard, overtime, and total
  • absenceAuthorized boolean - returned only when recorded
  • absenceReason string - returned only when recorded
  • costCodeAllocations array - returned only when non-empty, with child attributes costCode.name, costCode.description, and hours
timesheetApproversarrayApprovers configured on the assignment for this timesheet. These are not necessarily the users who approved it. Each item contains id and name.
updatedAtstringLast update timestamp
valuesobjectPay/charge/expense values.
Show child attributes
  • pay object with wdBasic, wdOvertime, wdNightwork, weNightwork, bankHoliday, bankHolidayNight, saturday, sunday, saturdayNightwork, sundayNightwork, and total
  • charge object with wdBasic, wdOvertime, wdNightwork, weNightwork, bankHoliday, bankHolidayNight, saturday, sunday, saturdayNightwork, sundayNightwork, and total
  • expense number
versionintegerCurrent timesheet version number
weekEndingstringWeek ending date in ISO 8601 date-time format
workerobject
Show child attributes
  • id string - Worker id
  • name string - Worker name

Response Example (200)

{
"success": true,
"data": [
{
"id": "67bc36db80a1616ec3f4a001",
"reference": "TS-1044",
"status": "approved",
"worker": {
"id": "67bc36db80a1616ec3f48999",
"name": "Jordan Smith"
},
"assignment": {
"id": "67bc36db80a1616ec3f49001",
"reference": "A1044"
},
"company": {
"id": "67bc36db80a1616ec3f47001",
"name": "Requidex Construction Ltd"
},
"project": {
"id": "67bc36db80a1616ec3f47011",
"name": "Northern Rail Electrification"
},
"site": {
"id": "67bc36db80a1616ec3f47055",
"name": "Manchester Central"
},
"agency": {
"id": "67bc36db80a1616ec3f47101",
"name": "Northline Labour Desk"
},
"payType": "hourly",
"rateType": "cis",
"start": "2026-03-02T00:00:00.000Z",
"end": "2026-03-08T23:59:59.999Z",
"weekEnding": "2026-03-08T00:00:00.000Z",
"version": 2,
"approvedDate": "2026-03-09T09:15:00.000Z",
"approvalRequestedBy": {
"id": "67bc36db80a1616ec3f48999",
"name": "Jordan Smith",
"type": "candidate"
},
"approvedBy": {
"id": "67bc36db80a1616ec3f47201",
"name": "Alex Reviewer"
},
"timesheetApprovers": [
{
"id": "67bc36db80a1616ec3f47201",
"name": "Alex Reviewer"
},
{
"id": "67bc36db80a1616ec3f47202",
"name": "Taylor Approver"
}
],
"netHours": 37.5,
"rates": {
"wd": {
"pay": 21.5,
"emp": 2.93,
"margin": 4.32,
"charge": 28.75,
"uplift": null
},
"wdNw": { "pay": 0, "emp": 0, "margin": 0, "charge": 0, "uplift": 25 },
"weNw": { "pay": 0, "emp": 0, "margin": 0, "charge": 0, "uplift": 40 },
"bh": { "pay": 0, "emp": 0, "margin": 0, "charge": 0, "uplift": 100 },
"bhNight": {
"pay": 0,
"emp": 0,
"margin": 0,
"charge": 0,
"uplift": 125
},
"sat": {
"pay": 32.25,
"emp": 4.39,
"margin": 6.48,
"charge": 43.13,
"uplift": 50
},
"sun": {
"pay": 43,
"emp": 5.86,
"margin": 8.64,
"charge": 57.5,
"uplift": 100
},
"ot": {
"pay": 32.25,
"emp": 4.39,
"margin": 6.48,
"charge": 43.13,
"uplift": 50
}
},
"values": {
"pay": {
"wdBasic": 860,
"wdOvertime": 215,
"wdNightwork": 0,
"weNightwork": 0,
"bankHoliday": 0,
"bankHolidayNight": 0,
"saturday": 294,
"sunday": 295,
"saturdayNightwork": 0,
"sundayNightwork": 0,
"total": 1664
},
"charge": {
"wdBasic": 1150,
"wdOvertime": 287.5,
"wdNightwork": 0,
"weNightwork": 0,
"bankHoliday": 0,
"bankHolidayNight": 0,
"saturday": 396,
"sunday": 396.5,
"saturdayNightwork": 0,
"sundayNightwork": 0,
"total": 2230
},
"expense": 125
},
"pieceRateEntries": [
{
"id": "67bc36db80a1616ec3f4a201",
"pieceRateId": "pr_9X2KLM",
"code": "PR-A1B2C3",
"name": "Meters installed",
"unitLabel": "metre",
"unitLabelPlural": "metres",
"frequency": "daily",
"rateType": "cis",
"values": { "pay": 12.5, "emp": 0, "margin": 2.5, "charge": 15 },
"totals": {
"units": 10,
"payValue": 125,
"empValue": 0,
"marginValue": 25,
"chargeValue": 150
},
"lines": [
{
"id": "67bc36db80a1616ec3f4a202",
"date": "2026-03-03T00:00:00.000Z",
"units": 10,
"payValue": 125,
"empValue": 0,
"marginValue": 25,
"chargeValue": 150,
"comment": "Installed on block A",
"costCode": {
"name": "CC-001",
"description": "Trackside installation"
}
}
]
}
],
"timelogs": [
{
"id": "67bc36db80a1616ec3f4a101",
"status": "approved",
"date": "2026-03-03T00:00:00.000Z",
"start": "2026-03-03T08:00:00.000Z",
"end": "2026-03-03T17:00:00.000Z",
"shiftType": "day",
"breaks": 30,
"rateDescription": "wdBasic",
"hours": {
"standard": 8,
"overtime": 0,
"total": 8
},
"rates": {
"pay": 21.5,
"emp": 2.93,
"margin": 4.32,
"charge": 28.75
},
"values": {
"pay": {
"standard": 172,
"overtime": 0,
"total": 172
},
"emp": {
"standard": 23.44,
"overtime": 0,
"total": 23.44
},
"margin": {
"standard": 34.56,
"overtime": 0,
"total": 34.56
},
"charge": {
"standard": 230,
"overtime": 0,
"total": 230
}
},
"costCodeAllocations": [
{
"costCode": {
"name": "CC-001",
"description": "Trackside installation"
},
"hours": 8
}
]
}
],
"createdAt": "2026-03-08T18:00:00.000Z",
"updatedAt": "2026-03-09T09:15:00.000Z"
}
],
"meta": {
"page": 1,
"limit": 50,
"total": 1
}
}

MCP Tool

The MCP server exposes this operation as open_api_list_timesheets with the inputs company, page, limit, status, project, site, assignment, worker, agency, query, dateField, from, to, sortBy, sortOrder, includeTimelogs, and fields.

Errors

HTTP StatusDescription
400Invalid filters or parameters
401Missing, invalid, revoked, or expired API key
403Forbidden due to scope or IP restrictions
405Method not allowed on Open API routes
429Rate limit exceeded
500Unexpected internal error

Submission answers

Each returned record includes submissionAnswers (an empty array when there are no applicable answers), unless omitted by list response fields selection. It contains only answers configured to display on this entity. Requisitions expose the saved submission answers, including amendments made while pending; assignments and timesheets expose the saved assignment snapshot.

Agency-scoped callers receive only answers belonging to agencies in their authenticated API key scope, even when another agency submitted the same worker. Query filters and fields selection cannot expand that scope. Company-scoped callers receive answers within their existing company and project access. Existing endpoint read scopes apply; this is read-only access.

Each answer includes:

FieldDescription
fieldId, label, fieldType, valueField identifier, captured question and type, and answer value (text, date string, selected option array, or null)
answerScopesubmission for a whole-submission answer or worker for a per-worker answer
submissionId, workerIdsSubmission batch identifier and the workers covered by the answer
agency, workerIdentifier and name objects; worker is null for whole-submission answers
displayLocationsConfigured display locations captured with the answer
submittedAt, submittedByOriginal submission timestamp and submitter identifier/name
updatedAt, updatedByLatest amendment timestamp and editor identifier/name, or null