Oyster HR · Schema
timeTrackingTimeSheet
Human ResourcesGlobal EmploymentPayrollEmployer of RecordContractorsComplianceRemote Work
Properties
| Name | Type | Description |
|---|---|---|
| id | string | |
| engagement | object | |
| timePeriod | object | |
| cadence | string | |
| status | string | |
| statusReason | stringnull | |
| locked | boolean | |
| isAmendment | boolean | |
| hasAmendmentTimeSheet | boolean | |
| amendmentTimeSheetId | stringnull | |
| originalTimeSheetId | stringnull | |
| createdBy | string | |
| submittedBy | stringnull | |
| confirmedBy | stringnull | |
| flexibleWorkArrangement | boolean | |
| totals | object | |
| workSummary | array | |
| timeOffs | array | |
| entries | array |
JSON Schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://raw.githubusercontent.com/api-evangelist/oyster-hr/main/json-schema/oyster-hr-time-tracking-time-sheet-schema.json",
"title": "timeTrackingTimeSheet",
"x-generated": "2026-10-14",
"x-method": "derived",
"x-generator": "derive-json-schema.py",
"x-source": "openapi/oyster-hr-endpoints-openapi.yml#/components/schemas/timeTrackingTimeSheet",
"type": "object",
"required": [
"id",
"engagement",
"timePeriod",
"cadence",
"status",
"locked",
"isAmendment",
"hasAmendmentTimeSheet",
"createdBy",
"flexibleWorkArrangement",
"totals",
"workSummary",
"timeOffs",
"entries"
],
"properties": {
"id": {
"type": "string"
},
"engagement": {
"type": "object",
"properties": {
"engagementId": {
"type": "string"
},
"name": {
"type": "string"
},
"type": {
"type": "string"
},
"countryCode": {
"type": "string"
}
}
},
"timePeriod": {
"type": "object",
"required": [
"startDate",
"endDate"
],
"properties": {
"startDate": {
"type": "string",
"format": "date"
},
"endDate": {
"type": "string",
"format": "date"
},
"year": {
"type": "string"
},
"month": {
"type": "string"
}
}
},
"cadence": {
"type": "string",
"enum": [
"MONTHLY",
"BI_WEEKLY",
"SEMI_MONTHLY"
]
},
"status": {
"type": "string",
"enum": [
"PENDING_SUBMISSION",
"SUBMITTED",
"PENDING_APPROVAL",
"APPROVED"
]
},
"statusReason": {
"type": [
"string",
"null"
]
},
"locked": {
"type": "boolean"
},
"isAmendment": {
"type": "boolean"
},
"hasAmendmentTimeSheet": {
"type": "boolean"
},
"amendmentTimeSheetId": {
"type": [
"string",
"null"
]
},
"originalTimeSheetId": {
"type": [
"string",
"null"
]
},
"createdBy": {
"type": "string"
},
"submittedBy": {
"type": [
"string",
"null"
]
},
"confirmedBy": {
"type": [
"string",
"null"
]
},
"flexibleWorkArrangement": {
"type": "boolean"
},
"totals": {
"type": "object",
"properties": {
"worked": {
"$ref": "#/$defs/duration"
},
"workedOnHolidays": {
"$ref": "#/$defs/duration"
},
"workedOnWeekends": {
"$ref": "#/$defs/duration"
},
"workedOnWeekdays": {
"$ref": "#/$defs/duration"
},
"notWorked": {
"$ref": "#/$defs/duration"
},
"timeOff": {
"$ref": "#/$defs/duration"
}
}
},
"workSummary": {
"type": "array",
"items": {
"$ref": "#/$defs/timeTrackingWorkSummaryItem"
}
},
"timeOffs": {
"type": "array",
"items": {
"$ref": "#/$defs/timeTrackingTimeOff"
}
},
"entries": {
"type": "array",
"items": {
"$ref": "#/$defs/timeTrackingTimeSheetEntry"
}
}
},
"$defs": {
"duration": {
"type": "object",
"properties": {
"hours": {
"type": "integer",
"minimum": 0
},
"minutes": {
"type": "integer",
"minimum": 0
}
},
"required": [
"hours",
"minutes"
]
},
"timeTrackingTimeOff": {
"type": "object",
"properties": {
"date": {
"type": "string",
"format": "date"
},
"duration": {
"$ref": "#/$defs/duration"
},
"reason": {
"type": "string"
},
"type": {
"type": "string"
}
},
"required": [
"date",
"duration",
"reason",
"type"
]
},
"timeTrackingTimeSheetEntry": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"timeSheetId": {
"type": "string"
},
"date": {
"type": "string",
"format": "date"
},
"type": {
"type": "string"
},
"notes": {
"type": [
"string",
"null"
],
"maxLength": 255
},
"present": {
"type": "object",
"properties": {
"fromTime": {
"type": "string",
"format": "date-time"
},
"toTime": {
"type": "string",
"format": "date-time"
},
"duration": {
"$ref": "#/$defs/duration"
}
},
"required": [
"fromTime",
"toTime",
"duration"
]
},
"breakInterval": {
"type": [
"object",
"null"
],
"properties": {
"fromTime": {
"type": "string",
"format": "date-time"
},
"toTime": {
"type": "string",
"format": "date-time"
},
"duration": {
"$ref": "#/$defs/duration"
}
},
"required": [
"fromTime",
"toTime",
"duration"
]
},
"workDuration": {
"$ref": "#/$defs/duration"
}
},
"required": [
"id",
"timeSheetId",
"date",
"type",
"notes",
"present",
"workDuration"
]
},
"timeTrackingWorkSummaryItem": {
"type": "object",
"properties": {
"type": {
"type": "string"
},
"duration": {
"$ref": "#/$defs/duration"
}
},
"required": [
"type",
"duration"
]
}
}
}
Work with this as data
Every JSON Schema here is available over the APIs.io API and to AI agents over MCP.
MCP server
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
Tools for schemas
4 MCP tools reach this
find_json_schemasBrowse and filter every JSON Schema in the catalog.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.
Call it yourself
curl for this page
This JSON Schema
curl "https://apis.io/api/v1/json-schemas/oyster-hr-time-tracking-time-sheet"
All schemas
curl "https://apis.io/api/v1/json-schemas?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
Get an API key
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.