> For the complete documentation index, see [llms.txt](https://api-docs.myhappyforce.com/docs/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://api-docs.myhappyforce.com/docs/api-reference/timesheets.md).

# Timesheets

Timesheet related operations

## GET /api/v1/public/company/timesheets

> Retrieves paginated timesheet entries (optional filter by employee email)

```json
{"openapi":"3.1.0","info":{"title":"Happyforce API","version":"v1"},"tags":[{"name":"Timesheets","description":"Timesheet related operations"}],"servers":[{"url":"{url}","description":"API URL","variables":{"url":{"description":"API Environment","enum":["https://api.happyforce.com","https://staging.happyforce.com","http://localhost:9000"],"default":"https://api.happyforce.com"}}}],"security":[{"happyforceAPIKey":[]}],"components":{"securitySchemes":{"happyforceAPIKey":{"type":"apiKey","description":"API Key for Happyforce API","name":"happyforceAPIKey","in":"header"}},"schemas":{"PaginableGenericListResultTimesheetPublic":{"type":"object","properties":{"from":{"type":"integer","format":"int32"},"to":{"type":"integer","format":"int32"},"total":{"type":"integer","format":"int32"},"noContent":{"type":"boolean"},"results":{"type":"array","items":{"$ref":"#/components/schemas/TimesheetPublic"}}}},"TimesheetPublic":{"type":"object","description":"Single public timesheet entry","properties":{"email":{"type":"string","description":"Employee email for this entry, when resolved"},"externalId":{"type":"string","description":"Employee external id when configured in Happyforce"},"timeZone":{"type":"string","description":"IANA timezone ID stored on this timesheet entry when provided by the client"},"id":{"type":"string","description":"Timesheet entry ID"},"startTime":{"type":"string","format":"date-time","description":"Start time of the entry"},"endTime":{"type":"string","format":"date-time","description":"End time of the entry"},"active":{"type":"boolean","description":"Whether the entry is active"},"breaks":{"type":"array","description":"Break intervals inside the entry","items":{"$ref":"#/components/schemas/PersonTimesheetBreakDTO"}},"periodType":{"$ref":"#/components/schemas/PeriodTimeSheetType","description":"Timesheet period type"},"changeHistory":{"type":"array","description":"Historical modifications applied to this timesheet","items":{"$ref":"#/components/schemas/TimesheetChangeHistory"}}}},"PersonTimesheetBreakDTO":{"type":"object","properties":{"startTime":{"type":"string","format":"date-time"},"endTime":{"type":"string","format":"date-time"},"duration":{"type":"integer","format":"int32"}}},"PeriodTimeSheetType":{"type":"string","description":"Type of timesheet period (active work, vacation, bank holiday, sick leave, indisposition absence, day off)","enum":["ACTIVE","VACATION","BANK_HOLIDAY","SICK_LEAVE","INDISPOSITION_ABSENCE","DAY_OFF"]},"TimesheetChangeHistory":{"type":"object","description":"Historical change entry for a timesheet","properties":{"startTime":{"type":"string","format":"date-time","description":"Start time registered in this historical version"},"endTime":{"type":"string","format":"date-time","description":"End time registered in this historical version"},"breaks":{"type":"array","description":"Break intervals registered in this historical version","items":{"$ref":"#/components/schemas/PersonTimesheetBreakDTO"}},"periodType":{"$ref":"#/components/schemas/PeriodTimeSheetType","description":"Timesheet period type for this historical version"},"changeReason":{"type":"string","description":"Reason that explains this change"},"changedBy":{"$ref":"#/components/schemas/TimesheetChangedBy","description":"User that applied this change (email and external id when available)"},"changedAt":{"type":"string","format":"date-time","description":"Timestamp when this change was applied"}}},"TimesheetChangedBy":{"type":"object","description":"User reference for a timesheet change","properties":{"email":{"type":"string","description":"User email when available"},"externalId":{"type":"string","description":"User external id when configured in Happyforce"}}}}},"paths":{"/api/v1/public/company/timesheets":{"get":{"tags":["Timesheets"],"summary":"Retrieves paginated timesheet entries (optional filter by employee email)","operationId":"getTimesheets","parameters":[{"name":"email","in":"query","description":"Employee email; omit to return entries for all employees (paginated)","required":false,"schema":{"type":"string"}},{"name":"from","in":"query","description":"Pagination start index (inclusive)","required":false,"schema":{"type":"integer","format":"int32","default":0}},{"name":"to","in":"query","description":"Pagination end index (exclusive). Page size is (to - from).","required":false,"schema":{"type":"integer","format":"int32","default":10}},{"name":"dateFrom","in":"query","description":"Start date filter (ddMMyyyy format)","required":false,"schema":{"type":"string","format":"date-time"}},{"name":"dateTo","in":"query","description":"End date filter (ddMMyyyy format)","required":false,"schema":{"type":"string","format":"date-time"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/PaginableGenericListResultTimesheetPublic"}}}}}}}}}
```

## GET /api/v1/public/company/timesheets/deleted

> Retrieves paginated deleted timesheet entries (optional filter by employee email)

```json
{"openapi":"3.1.0","info":{"title":"Happyforce API","version":"v1"},"tags":[{"name":"Timesheets","description":"Timesheet related operations"}],"servers":[{"url":"{url}","description":"API URL","variables":{"url":{"description":"API Environment","enum":["https://api.happyforce.com","https://staging.happyforce.com","http://localhost:9000"],"default":"https://api.happyforce.com"}}}],"security":[{"happyforceAPIKey":[]}],"components":{"securitySchemes":{"happyforceAPIKey":{"type":"apiKey","description":"API Key for Happyforce API","name":"happyforceAPIKey","in":"header"}},"schemas":{"PaginableGenericListResultDeletedTimesheetPublic":{"type":"object","properties":{"from":{"type":"integer","format":"int32"},"to":{"type":"integer","format":"int32"},"total":{"type":"integer","format":"int32"},"noContent":{"type":"boolean"},"results":{"type":"array","items":{"$ref":"#/components/schemas/DeletedTimesheetPublic"}}}},"DeletedTimesheetPublic":{"type":"object","description":"Single public deleted timesheet entry","properties":{"email":{"type":"string","description":"Employee email for this entry, when resolved"},"externalId":{"type":"string","description":"Employee external id when configured in Happyforce"},"timeZone":{"type":"string","description":"IANA timezone ID stored on this timesheet entry when provided by the client"},"id":{"type":"string","description":"Deleted timesheet record ID"},"originalTimesheetId":{"type":"string","description":"Original timesheet ID before deletion"},"startTime":{"type":"string","format":"date-time","description":"Start time of the original entry"},"endTime":{"type":"string","format":"date-time","description":"End time of the original entry"},"breaks":{"type":"array","description":"Break intervals inside the original entry","items":{"$ref":"#/components/schemas/PersonTimesheetBreakDTO"}},"periodType":{"$ref":"#/components/schemas/PeriodTimeSheetType","description":"Timesheet period type"},"changeHistory":{"type":"array","description":"Historical modifications applied before deletion","items":{"$ref":"#/components/schemas/DeletedTimesheetChangeHistory"}},"deletedAt":{"type":"string","format":"date-time","description":"Deletion timestamp"},"deletedBy":{"type":"string","description":"User ID that deleted the timesheet"},"deletedReason":{"type":"string","description":"Reason for deleting the timesheet"}}},"PersonTimesheetBreakDTO":{"type":"object","properties":{"startTime":{"type":"string","format":"date-time"},"endTime":{"type":"string","format":"date-time"},"duration":{"type":"integer","format":"int32"}}},"PeriodTimeSheetType":{"type":"string","description":"Type of timesheet period (active work, vacation, bank holiday, sick leave, indisposition absence, day off)","enum":["ACTIVE","VACATION","BANK_HOLIDAY","SICK_LEAVE","INDISPOSITION_ABSENCE","DAY_OFF"]},"DeletedTimesheetChangeHistory":{"type":"object","description":"Historical change entry before deletion","properties":{"startTime":{"type":"string","format":"date-time","description":"Start time registered in this historical version"},"endTime":{"type":"string","format":"date-time","description":"End time registered in this historical version"},"breaks":{"type":"array","description":"Break intervals registered in this historical version","items":{"$ref":"#/components/schemas/PersonTimesheetBreakDTO"}},"periodType":{"$ref":"#/components/schemas/PeriodTimeSheetType","description":"Timesheet period type for this historical version"},"changeReason":{"type":"string","description":"Reason that explains this change"},"changedBy":{"$ref":"#/components/schemas/DeletedTimesheetChangedBy","description":"User that applied this change (email and external id when available)"},"changedAt":{"type":"string","format":"date-time","description":"Timestamp when this change was applied"}}},"DeletedTimesheetChangedBy":{"type":"object","description":"User reference for a timesheet change","properties":{"email":{"type":"string","description":"User email when available"},"externalId":{"type":"string","description":"User external id when configured in Happyforce"}}}}},"paths":{"/api/v1/public/company/timesheets/deleted":{"get":{"tags":["Timesheets"],"summary":"Retrieves paginated deleted timesheet entries (optional filter by employee email)","operationId":"getDeletedTimesheets","parameters":[{"name":"email","in":"query","description":"Employee email; omit to return entries for all employees (paginated)","required":false,"schema":{"type":"string"}},{"name":"from","in":"query","description":"Pagination start index (inclusive)","required":false,"schema":{"type":"integer","format":"int32","default":0}},{"name":"to","in":"query","description":"Pagination end index (exclusive). Page size is (to - from).","required":false,"schema":{"type":"integer","format":"int32","default":10}},{"name":"dateFrom","in":"query","description":"Start date filter (ddMMyyyy format)","required":false,"schema":{"type":"string","format":"date-time"}},{"name":"dateTo","in":"query","description":"End date filter (ddMMyyyy format)","required":false,"schema":{"type":"string","format":"date-time"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/PaginableGenericListResultDeletedTimesheetPublic"}}}}}}}}}
```
