# 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"}}}}}}}}}
```


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://api-docs.myhappyforce.com/docs/api-reference/timesheets.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
