Skip to main content

Get Timesheet

GET/timesheets/{id}

Summary​

Returns one timesheet by its id or internal nanoid, including assignment, worker, period, hours, values, status, and optional timelog details.

The response includes supplierType (agency or umbrella) from the company connection, defaulting to agency for existing connections. Project settings do not override this classification. For umbrella suppliers, display rate types without an Agency or Umbrella prefix. Stored rateType values remain unchanged.

URL Parameters​

NameTypeRequiredDescription
idstringYesTimesheet id or nanoid

Query Parameters​

NameTypeRequiredDescription
includeVersionHistorybooleanNoInclude version history snapshots for this timesheet
includeTimelogsbooleanNoInclude timelog rows for this timesheet

Request Example​

curl -X GET 'https://api.requidex.com/api/open/v1/timesheets/{id}?includeVersionHistory=true&includeTimelogs=true' \
-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, pieceRateId, code, name, unitLabel, unitLabelPlural, frequency, and rateType
  • values object - Snapshot unit values with pay, emp, margin, and charge
  • totals object - Total units and pay/charge values
  • lines array - Captured 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
versionHistoryarrayReturned only when includeVersionHistory=true and snapshots exist.
Show child attributes
  • version integer
  • snapshotReason string
  • snapshotAt string
  • netHours number
  • expenseValue number
  • values object with the same child attributes as the main values field
  • rates object with the same child attributes as the main rates field
  • pieceRateEntries array with the same child attributes as the main pieceRateEntries field
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
}
]
}
],
"versionHistory": [
{
"version": 1,
"snapshotReason": "created",
"snapshotAt": "2026-03-08T18:00:00.000Z",
"netHours": 37.5,
"expenseValue": 0,
"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": 0
},
"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
}
}
}
],
"createdAt": "2026-03-08T18:00:00.000Z",
"updatedAt": "2026-03-09T09:15:00.000Z"
}
}

MCP Tool​

The MCP server exposes this operation as open_api_get_timesheet with the inputs id, includeVersionHistory, and includeTimelogs.

Errors​

HTTP StatusDescription
400Invalid or missing timesheet id
401Missing, invalid, revoked, or expired API key
403Forbidden due to scope or IP restrictions
404Timesheet not found
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