# Timesheet entries

Timesheet entries API

## Add historical timesheet entry.

 - [POST /clockin/timesheetentries/v1/create](https://developers.calamari.dev/remote/calamari-public-openapi/timesheet-entries/addtimeentry.md): Add employee shift. Expect error codes:INVALID_EMPLOYEE - when invalid employee id providedINVALID_SHIFT_START - when invalid start of work time providedINVALID_SHIFT_END - when invalid finish of work time providedSHIFT_END_BEFORE_START - when end of work time is before startSHIFT_TO_SHORT - when shift period is shorter than one minuteINVALID_BREAK_TYPE - when invalid break type id provided. You should use get-break-types method to find proper break type IDINVALID_BREAK_FOR_USER -  when break type is not available for employeeINVALID_BREAK_START - when invalid start of break time providedINVALID_BREAK_END - when invalid finish of break time providedBREAK_END_BEFORE_START - when end of break time is before startBREAK_IS_NOT_IN_SHIFT_RANGE -  when break time range goes beyond work time rangeBREAK_TO_SHORT - when break period is shorter than one minuteBREAKS_OVERLAP - when one break time range overlaps anotherINVALID_PROJECT_TYPE - when invalid project type id provided. You should use get-projects method to find proper project type IDINVALID_PROJECT_FOR_USER -  when project type is not available for employee. You should use get-projects-for-person method to find proper project type IDINVALID_PROJECT_TIME_ENTRY_START - when invalid start of project time entry providedINVALID_PROJECT_TIME_ENTRY_END - when invalid finish of project time entry providedPROJECT_TIME_ENTRY_END_BEFORE_START - when end of project time entry is before startPROJECT_TIME_ENTRY_IS_NOT_IN_SHIFT_RANGE -  when project time entry goes beyond work time rangePROJECT_TIME_ENTRY_TO_SHORT - when project time entry is shorter than one minutePROJECT_TIME_ENTRIES_OVERLAP - when one project time entry overlaps anotherSHIFT_DESCRIPTION_TOO_LONG - when description contains more than 4096 charactersSHIFT_DESCRIPTION_NOT_ALLOWED_FORMATTING - when description contains more not allowed HTML or Markdown formatting

## Delete timesheet entry by id

 - [POST /clockin/timesheetentries/v1/delete](https://developers.calamari.dev/remote/calamari-public-openapi/timesheet-entries/deletetimesheetentrybyid.md): Delete timesheet entry by id

## Find timesheet entries with advanced filtering by several parameters.

 - [POST /clockin/timesheetentries/v1/find](https://developers.calamari.dev/remote/calamari-public-openapi/timesheet-entries/findtimeentries.md): Find timesheet entries in dates range. If you provide more than one value in one filter attribute there is OR relation between them.  For instance: if you put in a filter: {employees: ["john@mycompany.com", "kevin@mycompany.com"]} it returns all John's and all Kevin's timesheet entries.When you fill more than one attribute in filter all conditions have to be fulfilled. There is AND relation between attributes. For instance: if you provide in filter {contractTypes: ["Full-time"], teams: ["DevTeam"]} then timesheet entries of employees from Dev and Full-timeThe query returns all matching records for the selected time range and filters, with no pagination applied.Expect error codes:INVALID_DATE_FROM - when invalid time in filter providedINVALID_DATE_TO - when invalid time in filter providedINVALID_EMPLOYEE - when one of provided employees is invalidINVALID_TEAM - when one of provided teams is invalidINVALID_POSITION - when one of provided positions is invalidINVALID_CONTRACT_TYPE - when one of provided contract types is invalid

## Find employees working time balances with advanced filtering by several parameters.

 - [POST /clockin/timesheetentries/v1/balance](https://developers.calamari.dev/remote/calamari-public-openapi/timesheet-entries/findtimesheetbalances.md): Find employees working time balances in dates range. If you provide more than one value in one filter attribute there is OR relation between them.  For instance: if you put in a filter: {employees: ["john@mycompany.com", "kevin@mycompany.com"]} it returns all John's and all Kevin's balances.When you fill more than one attribute in filter all conditions have to be fulfilled. There is AND relation between attributes. For instance: if you provide in filter {contractTypes: ["Full-time"], teams: ["DevTeam"]} then you receive balances of employees from Dev and Full-timeExpect error codes:INVALID_DATE_FROM - when invalid time in filter providedINVALID_DATE_TO - when invalid time in filter providedINVALID_EMPLOYEE - when one of provided employees is invalidINVALID_TEAM - when one of provided teams is invalidINVALID_POSITION - when one of provided positions is invalidINVALID_CONTRACT_TYPE - when one of provided contract types is invalid

## Get project types.

 - [POST /clockin/timesheetentries/v1/get-projects](https://developers.calamari.dev/remote/calamari-public-openapi/timesheet-entries/getprojecttypes.md): Get project types.

## Get project types for one person.

 - [POST /clockin/timesheetentries/v1/get-projects-for-person](https://developers.calamari.dev/remote/calamari-public-openapi/timesheet-entries/getprojecttypesforemployee.md): Get project types for one person.Expect error codes:INVALID_EMPLOYEE - when invalid employee id provided

## Update historical timesheet entry.

 - [POST /clockin/timesheetentries/v1/update](https://developers.calamari.dev/remote/calamari-public-openapi/timesheet-entries/updatetimeentry.md): Update employee shift. Expect error codes:INVALID_EMPLOYEE - when invalid employee id providedINVALID_SHIFT_START - when invalid start of work time providedINVALID_SHIFT_END - when invalid finish of work time providedSHIFT_END_BEFORE_START - when end of work time is before startSHIFT_TO_SHORT - when shift period is shorter than one minuteINVALID_BREAK_TYPE - when invalid break type id provided. You should use get-break-types method to find proper break type IDINVALID_BREAK_FOR_USER -  when break type is not available for employeeINVALID_BREAK_START - when invalid start of break time providedINVALID_BREAK_END - when invalid finish of break time providedBREAK_END_BEFORE_START - when end of break time is before startBREAK_IS_NOT_IN_SHIFT_RANGE -  when break time range goes beyond work time rangeBREAK_TO_SHORT - when break period is shorter than one minuteBREAKS_OVERLAP - when one break time range overlaps anotherINVALID_PROJECT_TYPE - when invalid project type id provided. You should use get-projects method to find proper project type IDINVALID_PROJECT_FOR_USER -  when project type is not available for employee. You should use get-projects-for-person method to find proper project type IDINVALID_PROJECT_TIME_ENTRY_START - when invalid start of project time entry providedINVALID_PROJECT_TIME_ENTRY_END - when invalid finish of project time entry providedPROJECT_TIME_ENTRY_END_BEFORE_START - when end of project time entry is before startPROJECT_TIME_ENTRY_IS_NOT_IN_SHIFT_RANGE -  when project time entry goes beyond work time rangePROJECT_TIME_ENTRY_TO_SHORT - when project time entry is shorter than one minutePROJECT_TIME_ENTRIES_OVERLAP - when one project time entry overlaps anotherSHIFT_DESCRIPTION_TOO_LONG - when description contains more than 4096 charactersSHIFT_DESCRIPTION_NOT_ALLOWED_FORMATTING - when description contains more not allowed HTML or Markdown formatting

