{"openapi":"3.0.0","info":{"title":"timr API","description":"timr API for time tracking","contact":{"name":"troii Software GmbH","email":"info@timr.com"},"license":{"name":"Apache 2.0","url":"https://www.apache.org/licenses/LICENSE-2.0.html"},"version":"0.2.14"},"servers":[{"url":"https://api.timr.com/v0.2/"}],"security":[{"BearerAuthentication":[]}],"paths":{"/users":{"get":{"operationId":"fetchUsers","tags":["User"],"summary":"fetches Users","description":"List all Users the authenticated user/authtoken has access to. The entries can be filtered by the provided query parameters, all of which are optional. The number of entries returned is capped by the page size limit. This end point uses cursor pagination. If more entries would be found for a given query, the result envelope contains a 'next_page_token' field with a token that can be used to fetch the next page.","parameters":[{"name":"name","in":"query","description":"pass a user name to filter entries by the user name","required":false,"schema":{"type":"string"}},{"name":"entry_date_from","in":"query","description":"pass entry_date_from to show all users entered on or after defined day","required":false,"example":"","schema":{"$ref":"#/components/schemas/LocalDate"}},{"name":"entry_date_to","in":"query","description":"pass entry_date_from to show all users entered on or before defined day","required":false,"example":"","schema":{"$ref":"#/components/schemas/LocalDate"}},{"name":"resign_date_from","in":"query","description":"pass resign_date_from to show all users resigned on or after defined day","required":false,"example":"","schema":{"$ref":"#/components/schemas/LocalDate"}},{"name":"resign_date_to","in":"query","description":"pass resign_date_to to show all users resigned on or before defined day","required":false,"example":"","schema":{"$ref":"#/components/schemas/LocalDate"}},{"name":"resigned","in":"query","description":"pass parameter resigned true/false to show all users who are resigned/not resigned","required":false,"schema":{"type":"boolean"}},{"name":"employee_number","in":"query","description":"pass an employee_number to show users with the corresponding employee number","required":false,"schema":{"type":"string"}},{"name":"page_token","in":"query","description":"Token for retrieving the next page. This token is provided in the response of the previous page as next_page_token","required":false,"schema":{"type":"string"}},{"name":"limit","in":"query","description":"pass a value to change the maximum number of entries returned in a single page (at max 500).","required":false,"example":"","schema":{"minimum":1,"default":20,"type":"integer","format":"int32"}},{"name":"sort_direction","in":"query","description":"pass a direction in which the entries returned will be sorted in","required":false,"schema":{"allOf":[{"$ref":"#/components/schemas/SortDirection"}],"default":"asc"}},{"name":"sort_by","in":"query","description":"By default sorted by:\n * Lastname\n * Firstname \n * Id\n\npass a property by which the returned entries will be sorted if you want a different order\n","required":false,"schema":{"allOf":[{"$ref":"#/components/schemas/UsersSortColumn"}],"default":"name"}}],"responses":{"200":{"description":"search results matching criteria","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UsersPage"}}},"headers":{"Link":{"schema":{"type":"string","format":"uri"},"description":"link to the next page including filter parameters and page token"}},"links":{"GetUsersNextPage":{"operationId":"fetchUsers","parameters":{"page_token":"$response.body#/next_page_token"}}}},"400":{"description":"bad input parameter","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"post":{"operationId":"createUser","tags":["User"],"summary":"create an User","description":"Creates a new User based on the data provided in the request body.","requestBody":{"description":"User entity","required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserCreate"}}}},"responses":{"201":{"description":"created User entity","content":{"application/json":{"schema":{"$ref":"#/components/schemas/User"}}}},"400":{"description":"bad input parameter","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/users/{id}":{"get":{"operationId":"getUser","tags":["User"],"summary":"get a single user","description":"Retrieves a single User based on its User ID.","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"search results matching criteria","content":{"application/json":{"schema":{"$ref":"#/components/schemas/User"}}}},"403":{"description":"not allowed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"patch":{"operationId":"updateUser","tags":["User"],"summary":"updates a single User","description":"Updates the User specified by the id with the fields provided in the request body.","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"description":"User entity","required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserUpdate"}}}},"responses":{"200":{"description":"user successfully updated","content":{"application/json":{"schema":{"$ref":"#/components/schemas/User"}}}},"400":{"description":"bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"not allowed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/users/{id}/working-time-accounts/{date}":{"get":{"operationId":"getUserWorkingTimeAccounts","tags":["TimeAccount"],"summary":"get a user's working time accounts","description":"Retrieves a User's working time accounts balance to a given day.","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"date","in":"path","required":true,"schema":{"type":"string","format":"date","description":"last balancing date","example":"2023-03-28"}}],"responses":{"200":{"description":"search results matching criteria","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkingTimeAccounts"}}}},"403":{"description":"not allowed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/users/{id}/work-schedule-model":{"get":{"operationId":"getUserWorkScheduleModel","tags":["User"],"summary":"get a User's Work-Schedule-Model","description":"Retrieves the corresponding Work-Schedule-Model with durations in minutes based on a User's ID","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"search results matching criteria","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkScheduleModel"}}}},"403":{"description":"not allowed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/users/{id}/tasks":{"get":{"operationId":"fetchUserTasks","tags":["Task"],"summary":"Fetches all tasks the user is assigned to","description":"Lists all tasks the authenticated user/authtoken is permitted to see.\n\nThe response includes tasks regardless of whether the tasks are currently active or locked, since the API does not filter tasks based on the request time. If only active tasks should be displayed (as in the timr UI), this filtering must be implemented on the client side.\n\nThe entries can be filtered by the provided query parameters, all of which are optional. The number of entries returned is capped by the page size limit. This end point uses cursor pagination. If more entries would be found for a given query, the result envelope contains a 'next_page_token' field with a token that can be used to fetch the next page.\n","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"parent_task_id","in":"query","description":"pass task's id to restrict entries having this task as a parent task","required":false,"schema":{"type":"string"}},{"name":"traverse_task_tree","in":"query","description":"pass this parameter with value true/false to traverse the whole task tree","required":false,"example":"true/false","schema":{"type":"boolean","default":true}},{"name":"name","in":"query","description":"pass a user name to filter entries by the user name","required":false,"schema":{"type":"string"}},{"name":"bookable","in":"query","description":"pass this parameter with value true/false to show just entries/no entries which are billable","required":false,"example":"true/false","schema":{"type":"boolean"}},{"name":"billable","in":"query","description":"pass this parameter with value true/false to show just entries/no entries which are billable","required":false,"example":"true/false","schema":{"type":"boolean"}},{"name":"page_token","in":"query","description":"Token for retrieving the next page. This token is provided in the response of the previous page as next_page_token","required":false,"schema":{"type":"string"}},{"name":"limit","in":"query","description":"pass a value to change the maximum number of entries returned in a single page (at max 500).","required":false,"example":"","schema":{"minimum":1,"default":20,"type":"integer","format":"int32"}},{"name":"sort_direction","in":"query","description":"pass a direction in which the entries returned will be sorted in","required":false,"schema":{"allOf":[{"$ref":"#/components/schemas/SortDirection"}],"default":"asc"}},{"name":"sort_by","in":"query","description":"By default sorted by:\n * breadcrumbs\n * id\n\npass a property by which the returned entries will be sorted if you want a different order\n","required":false,"schema":{"allOf":[{"$ref":"#/components/schemas/TasksSortColumn"}],"default":"breadcrumbs"}}],"responses":{"200":{"description":"search results matching criteria","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TasksReducedPage"}}},"headers":{"Link":{"schema":{"type":"string","format":"uri"},"description":"link to the next page including filter parameters and page token"}},"links":{"GetUserTasksNextPage":{"operationId":"fetchUserTasks","parameters":{"page_token":"$response.body#/next_page_token"}}}},"400":{"description":"bad input parameter","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/users/{id}/team-memberships":{"get":{"operationId":"fetchUserTeamMemberships","tags":["User"],"summary":"fetches User's Team Memberships","description":"List all Team Memberships of a User that the authenticated user/authtoken has access to. The entries can be filtered by the provided query parameters, all of which are optional. The number of entries returned is capped by the page size limit. This end point uses cursor pagination. If more entries would be found for a given query, the result envelope contains a 'next_page_token' field with a token that can be used to fetch the next page.","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"page_token","in":"query","description":"Token for retrieving the next page. This token is provided in the response of the previous page as next_page_token","required":false,"schema":{"type":"string"}},{"name":"limit","in":"query","description":"pass a value to change the maximum number of entries returned in a single page (at max 500).","required":false,"schema":{"minimum":1,"default":20,"type":"integer","format":"int32"}},{"name":"sort_direction","in":"query","description":"pass a direction in which the entries returned will be sorted in (based on the Team's name)","required":false,"schema":{"allOf":[{"$ref":"#/components/schemas/SortDirection"}],"default":"asc"}},{"name":"sort_by","in":"query","description":"By default sorted by:\n  * name\n  * id\n\npass a property by which the returned entries will be sorted if you want a different order\n","required":false,"schema":{"allOf":[{"$ref":"#/components/schemas/TeamsSortColumn"}],"default":"breadcrumbs"}}],"responses":{"200":{"description":"search results matching criteria","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TeamsPartialPage"}}},"headers":{"Link":{"schema":{"type":"string","format":"uri"},"description":"link to the next page including filter parameters and page token"}},"links":{"GetUserTeamMembershipsNextPage":{"operationId":"fetchUserTeamMemberships","parameters":{"page_token":"$response.body#/next_page_token"}}}},"400":{"description":"bad input parameter","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/users/{id}/team-leaderships":{"get":{"operationId":"fetchUserTeamLeaderships","tags":["User"],"summary":"fetches User's Team Leaderships","description":"List all Team Leaderships of a User that the authenticated user/authtoken has access to. The entries can be filtered by the provided query parameters, all of which are optional. The number of entries returned is capped by the page size limit. This end point uses cursor pagination. If more entries would be found for a given query, the result envelope contains a 'next_page_token' field with a token that can be used to fetch the next page.","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"page_token","in":"query","description":"Token for retrieving the next page. This token is provided in the response of the previous page as next_page_token","required":false,"schema":{"type":"string"}},{"name":"limit","in":"query","description":"pass a value to change the maximum number of entries returned in a single page (at max 500).","required":false,"schema":{"minimum":1,"default":20,"type":"integer","format":"int32"}},{"name":"sort_direction","in":"query","description":"pass a direction in which the entries returned will be sorted in (based on the Team's name)","required":false,"schema":{"allOf":[{"$ref":"#/components/schemas/SortDirection"}],"default":"asc"}},{"name":"sort_by","in":"query","description":"By default sorted by:\n  * name\n  * id\n\npass a property by which the returned entries will be sorted if you want a different order\n","required":false,"schema":{"allOf":[{"$ref":"#/components/schemas/TeamsSortColumn"}],"default":"breadcrumbs"}}],"responses":{"200":{"description":"search results matching criteria","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TeamsPartialPage"}}},"headers":{"Link":{"schema":{"type":"string","format":"uri"},"description":"link to the next page including filter parameters and page token"}},"links":{"GetUserTeamLeadershipsNextPage":{"operationId":"fetchUserTeamLeaderships","parameters":{"page_token":"$response.body#/next_page_token"}}}},"400":{"description":"bad input parameter","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/teams":{"get":{"operationId":"fetchTeams","tags":["Team"],"summary":"fetches Teams","description":"List all Teams the authenticated user/authtoken has access to. The entries can be filtered by the provided query parameters, all of which are optional. The number of entries returned is capped by the page size limit. This end point uses cursor pagination. If more entries would be found for a given query, the result envelope contains a 'next_page_token' field with a token that can be used to fetch the next page.","parameters":[{"name":"name","in":"query","description":"pass a group name to filter entries by the group name, matching any segment in the breadcrumbs path","required":false,"schema":{"type":"string"}},{"name":"page_token","in":"query","description":"Token for retrieving the next page. This token is provided in the response of the previous page as next_page_token","required":false,"schema":{"type":"string"}},{"name":"limit","in":"query","description":"pass a value to change the maximum number of entries returned in a single page (at max 500).","required":false,"schema":{"minimum":1,"default":20,"type":"integer","format":"int32"}},{"name":"sort_direction","in":"query","description":"pass a direction in which the entries returned will be sorted in (based on the Group's name)","required":false,"schema":{"allOf":[{"$ref":"#/components/schemas/SortDirection"}],"default":"asc"}},{"name":"sort_by","in":"query","description":"By default sorted by:\n  * name\n  * id\n\npass a property by which the returned entries will be sorted if you want a different order\n","required":false,"schema":{"allOf":[{"$ref":"#/components/schemas/TeamsSortColumn"}],"default":"breadcrumbs"}}],"responses":{"200":{"description":"search results matching criteria","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TeamsPage"}}},"headers":{"Link":{"schema":{"type":"string","format":"uri"},"description":"link to the next page including filter parameters and page token"}},"links":{"GetTeamsNextPage":{"operationId":"fetchTeams","parameters":{"page_token":"$response.body#/next_page_token"}}}},"400":{"description":"bad input parameter","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"post":{"operationId":"createTeam","tags":["Team"],"summary":"create a Team","description":"Creates a new Team based on the data provided in the request body.","requestBody":{"description":"Team entity","required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TeamCreate"}}}},"responses":{"201":{"description":"created Team entity","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Team"}}}},"400":{"description":"bad input parameter","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/teams/{id}":{"get":{"operationId":"getTeam","tags":["Team"],"summary":"get a single team","description":"Retrieves a single team based on its team id.","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"search results","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Team"}}}},"403":{"description":"not allowed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"patch":{"operationId":"updateTeam","tags":["Team"],"summary":"updates a single Team","description":"Updates the Team specified by the id with the fields provided in the request body.","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"description":"Team entity","required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TeamUpdate"}}}},"responses":{"200":{"description":"team successfully updated","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Team"}}}},"400":{"description":"bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"not allowed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"delete":{"operationId":"deleteTeam","tags":["Team"],"summary":"deletes a single Team","description":"Deletes a single Team based on its id.","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"204":{"description":"Empty response indicating that delete was successful"},"403":{"description":"not allowed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/teams/{id}/members":{"get":{"operationId":"fetchTeamMembers","tags":["Team"],"summary":"fetches Team Members","description":"List all Team Members the authenticated user/authtoken has access to. The entries can be filtered by the provided query parameters, all of which are optional. The number of entries returned is capped by the page size limit. This end point uses cursor pagination. If more entries would be found for a given query, the result envelope contains a 'next_page_token' field with a token that can be used to fetch the next page.","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"page_token","in":"query","description":"Token for retrieving the next page. This token is provided in the response of the previous page as next_page_token","required":false,"schema":{"type":"string"}},{"name":"limit","in":"query","description":"pass a value to change the maximum number of entries returned in a single page (at max 500).","required":false,"schema":{"minimum":1,"default":20,"type":"integer","format":"int32"}},{"name":"sort_direction","in":"query","description":"pass a direction in which the entries returned will be sorted in","required":false,"schema":{"allOf":[{"$ref":"#/components/schemas/SortDirection"}],"default":"asc"}},{"name":"sort_by","in":"query","description":"By default sorted by:\n   * Lastname\n   * Firstname \n   * Id\nof the assigned user\n","required":false,"schema":{"allOf":[{"$ref":"#/components/schemas/UsersSortColumn"}],"default":"name"}}],"responses":{"200":{"description":"search results matching criteria","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UsersPartialPage"}}},"headers":{"Link":{"schema":{"type":"string","format":"uri"},"description":"link to the next page including filter parameters and page token"}},"links":{"GetTeamMembersNextPage":{"operationId":"fetchTeamMembers","parameters":{"page_token":"$response.body#/next_page_token"}}}},"400":{"description":"bad input parameter","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/teams/{team_id}/members/{user_id}":{"get":{"operationId":"getTeamMember","tags":["Team"],"summary":"gets a single Team Member","description":"Retrieves a single Team Member based on the team id and user id.","parameters":[{"name":"team_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"user_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"search results matching criteria","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserPartial"}}}},"403":{"description":"not allowed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"put":{"operationId":"addTeamMember","tags":["Team"],"summary":"adds a Team Member","description":"Adds a Team Member to a Team based on the team id and user id.","parameters":[{"name":"team_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"user_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"201":{"description":"User Partial model of the added team member","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserPartial"}}}},"400":{"description":"bad input parameter","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"delete":{"operationId":"removeTeamMember","tags":["Team"],"summary":"removes a Team Member","description":"Removes a Team Member from a Team based on the team id and user id.","parameters":[{"name":"team_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"user_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"204":{"description":"Empty response indicating that member was added successfully to the team"},"403":{"description":"not allowed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/teams/{id}/leaders":{"get":{"operationId":"fetchTeamLeaders","tags":["Team"],"summary":"fetches Team Leaders","description":"List all Team Leaders the authenticated user/authtoken has access to. The entries can be filtered by the provided query parameters, all of which are optional. The number of entries returned is capped by the page size limit. This end point uses cursor pagination. If more entries would be found for a given query, the result envelope contains a 'next_page_token' field with a token that can be used to fetch the next page.","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"page_token","in":"query","description":"Token for retrieving the next page. This token is provided in the response of the previous page as next_page_token","required":false,"schema":{"type":"string"}},{"name":"limit","in":"query","description":"pass a value to change the maximum number of entries returned in a single page (at max 500).","required":false,"schema":{"minimum":1,"default":20,"type":"integer","format":"int32"}},{"name":"sort_direction","in":"query","description":"pass a direction in which the entries returned will be sorted in","required":false,"schema":{"allOf":[{"$ref":"#/components/schemas/SortDirection"}],"default":"asc"}},{"name":"sort_by","in":"query","description":"By default sorted by:\n   * Lastname\n   * Firstname \n   * Id\nof the assigned user\n","required":false,"schema":{"allOf":[{"$ref":"#/components/schemas/UsersSortColumn"}],"default":"name"}}],"responses":{"200":{"description":"search results matching criteria","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UsersPartialPage"}}},"headers":{"Link":{"schema":{"type":"string","format":"uri"},"description":"link to the next page including filter parameters and page token"}},"links":{"GetTeamLeadersNextPage":{"operationId":"fetchTeamLeaders","parameters":{"page_token":"$response.body#/next_page_token"}}}},"400":{"description":"bad input parameter","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/teams/{team_id}/leaders/{user_id}":{"get":{"operationId":"getTeamLeader","tags":["Team"],"summary":"gets a single Team Leader","description":"Retrieves a single Team Leader based on the team id and user id.","parameters":[{"name":"team_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"user_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"search results matching criteria","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserPartial"}}}},"403":{"description":"not allowed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"put":{"operationId":"addTeamLeader","tags":["Team"],"summary":"adds a Team Leader","description":"Adds a Team Leader to a Team based on the team id and user id.","parameters":[{"name":"team_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"user_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"201":{"description":"User Partial model of the added team leader","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserPartial"}}}},"400":{"description":"bad input parameter","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"delete":{"operationId":"removeTeamLeader","tags":["Team"],"summary":"removes a Team Leader","description":"Removes a Team Leader from a Team based on the team id and user id.","parameters":[{"name":"team_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"user_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"204":{"description":"Empty response indicating that delete was successful"},"403":{"description":"not allowed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/work-schedule-models":{"get":{"operationId":"fetchWorkScheduleModels","tags":["Work Schedule Model"],"summary":"fetches Work Schedule Models","description":"List all Work Schedule Models the authenticated user/authtoken has access to. The entries can be filtered by the provided query parameters, all of which are optional. The number of entries returned is capped by the page size limit. This end point uses cursor pagination. If more entries would be found for a given query, the result envelope contains a 'next_page_token' field with a token that can be used to fetch the next page.","parameters":[{"name":"page_token","in":"query","description":"Token for retrieving the next page. This token is provided in the response of the previous page as next_page_token","required":false,"schema":{"type":"string"}},{"name":"limit","in":"query","description":"optionally, pass a value to change the maximum number of entries returned in a single page (at max 500).","required":false,"schema":{"minimum":1,"default":20,"type":"integer","format":"int32"}},{"name":"sort_direction","in":"query","description":"optionally, pass a direction in which the entries returned will be sorted in (based on the WorkScheduleModel's name)","required":false,"schema":{"allOf":[{"$ref":"#/components/schemas/SortDirection"}],"default":"asc"}},{"name":"sort_by","in":"query","required":false,"schema":{"allOf":[{"$ref":"#/components/schemas/WorkScheduleModelSortColumn"}],"default":"name"}}],"responses":{"200":{"description":"search results matching criteria","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkScheduleModelsPage"}}},"headers":{"Link":{"schema":{"type":"string","format":"uri"},"description":"link to the next page including filter parameters and page token"}},"links":{"GetWorkScheduleModelsNextPage":{"operationId":"fetchWorkScheduleModels","parameters":{"page_token":"$response.body#/next_page_token"}}}},"400":{"description":"bad input parameter","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/work-schedule-models/{id}":{"get":{"operationId":"getWorkScheduleModel","tags":["Work Schedule Model"],"summary":"gets a single Work Schedule Model","description":"Retrieves a single Working Schedule Model based on its id.","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"search results matching criteria","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkScheduleModel"}}}},"403":{"description":"not allowed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"delete":{"operationId":"deleteWorkScheduleModel","tags":["Work Schedule Model"],"summary":"deletes a single Work Schedule Model","description":"Deletes a single Work Schedule Model based on its id.","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"204":{"description":"Empty response indicating that delete was successful"},"403":{"description":"not allowed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/working-times":{"get":{"operationId":"fetchWorkingTimes","tags":["Working Time"],"summary":"fetches Working Times","description":"List all Working Times the authenticated user/authtoken has access to. The entries can be filtered by the provided query parameters, all of which are optional. The number of entries returned is capped by the page size limit. This end point uses cursor pagination. If more entries would be found for a given query, the result envelope contains a 'next_page_token' field with a token that can be used to fetch the next page.","parameters":[{"name":"notes","in":"query","description":"pass a search string to filter entries containing this string in their notes","required":false,"example":"","schema":{"type":"string"}},{"name":"start_from","in":"query","description":"pass a date to filter entries started from this day on","required":false,"example":"","schema":{"$ref":"#/components/schemas/LocalDate"}},{"name":"start_to","in":"query","description":"pass a date to filter entries started up to (including) this day","required":false,"example":"","schema":{"$ref":"#/components/schemas/LocalDate"}},{"name":"last_modified_after","in":"query","description":"pass a datetime to filter entries modified after this instant","required":false,"example":"","schema":{"$ref":"#/components/schemas/DateTime"}},{"name":"working_time_types","in":"query","description":"pass one or more ids of WorkingTimeTypes to restrict entries based on these types","required":false,"example":"","schema":{"type":"array","items":{"type":"string"}}},{"name":"working_time_type_categories","in":"query","description":"optionally, pass one or more WorkingTimeTypeCategories to restrict entries based on these categories","required":false,"example":"","schema":{"type":"array","items":{"$ref":"#/components/schemas/WorkingTimeTypeCategory"}}},{"name":"statuses","in":"query","description":"pass one or more statuses to filter entries based on their status","required":false,"example":"","schema":{"type":"array","items":{"$ref":"#/components/schemas/WorkingTimeStatus"}}},{"name":"users","in":"query","description":"pass one or more user ids to restrict entries based on the user they are associated to","required":false,"example":"","schema":{"type":"array","items":{"type":"string"}}},{"name":"changed","in":"query","description":"pass a boolean to filter entries based on whether they have been changed by the user or not","required":false,"example":"","schema":{"type":"boolean"}},{"name":"page_token","in":"query","description":"Token for retrieving the next page. This token is provided in the response of the previous page as next_page_token","required":false,"example":"","schema":{"type":"string"}},{"name":"limit","in":"query","description":"pass a value to change the maximum number of entries returned in a single page (at max 500).","required":false,"schema":{"minimum":1,"default":20,"type":"integer","format":"int32"}},{"name":"sort_direction","in":"query","description":"pass a direction in which the entries returned will be sorted in","required":false,"schema":{"allOf":[{"$ref":"#/components/schemas/SortDirection"}],"default":"asc"}},{"name":"sort_by","in":"query","description":"By default sorted by:\n * start\n * Id\n\npass a property by which the returned entries will be sorted\n","required":false,"schema":{"allOf":[{"$ref":"#/components/schemas/WorkingTimesSortColumn"}],"default":"start"}}],"responses":{"200":{"description":"search results matching criteria","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkingTimesPage"}}},"headers":{"Link":{"schema":{"type":"string","format":"uri"},"description":"link to the next page including filter parameters and page token"}},"links":{"GetWorkingTimesNextPage":{"operationId":"fetchWorkingTimes","parameters":{"page_token":"$response.body#/next_page_token"}}}},"400":{"description":"bad input parameter","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"post":{"operationId":"createWorkingTime","tags":["Working Time"],"summary":"create a Working Time","description":"Creates a new Working Time based on the data provided in the request body.","requestBody":{"description":"Working Time entity","required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkingTimeCreate"}}}},"responses":{"201":{"description":"created Working Time entity","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkingTime"}}}},"400":{"description":"bad input parameter","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/working-times/{id}":{"get":{"operationId":"getWorkingTime","tags":["Working Time"],"summary":"gets a single Working Time","description":"Retrieves a single Working Time based on its id.","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"search results matching criteria","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkingTime"}}}},"403":{"description":"not allowed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"patch":{"operationId":"updateWorkingTime","tags":["Working Time"],"summary":"updates a single Working Time","description":"Updates the Working Time specified by the id with the fields provided in the request body.","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"description":"Working Time entity","required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkingTimeUpdate"}}}},"responses":{"200":{"description":"search results matching criteria","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkingTime"}}}},"400":{"description":"bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"not allowed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"delete":{"operationId":"deleteWorkingTime","tags":["Working Time"],"summary":"deletes a single Working Time","description":"Deletes a single Working Time based on its id.","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"204":{"description":"Empty response indicating that delete was successful"},"403":{"description":"not allowed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/working-times:deleted":{"get":{"operationId":"fetchDeletedWorkingTimes","tags":["Working Time"],"summary":"Get deleted working times","description":"List all deleted Working Times the authenticated user/authtoken has access to, optionally filtered by last_modified. The number of entries returned is capped by the page size limit. This end point uses cursor pagination. If more entries would be found for a given query, the result envelope contains a 'next_page_token' field with a token that can be used to fetch the next page.","parameters":[{"name":"last_modified","in":"query","description":"optionally, pass a datetime to filter entries modified after this instant","required":false,"example":"","schema":{"$ref":"#/components/schemas/DateTime"}},{"name":"page_token","in":"query","description":"Token for retrieving the next page. This token is provided in the response of the previous page as next_page_token","required":false,"schema":{"type":"string"}},{"name":"limit","in":"query","description":"optionally, pass a value to change the maximum number of entries returned in a single page (at max 500).","required":false,"schema":{"minimum":1,"default":20,"type":"integer","format":"int32"}},{"name":"sort_direction","in":"query","description":"optionally, pass a direction in which the entries returned will be sorted in","required":false,"schema":{"allOf":[{"$ref":"#/components/schemas/SortDirection"}],"default":"asc"}},{"name":"sort_by","in":"query","description":"By default sorted by:\n * last_modified\n * Id\noptionally, pass a property by which the returned entries will be sorted if you want a different order\n","required":false,"schema":{"allOf":[{"$ref":"#/components/schemas/DeletedEntryWithMetadataSortColumn"}],"default":"last_modified"}}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeletedEntryWithMetadataPage"}}},"headers":{"Link":{"schema":{"type":"string","format":"uri"},"description":"link to the next page including filter parameters and page token"}},"links":{"GetDeletedWorkingTimesNextPage":{"operationId":"fetchDeletedWorkingTimes","parameters":{"page_token":"$response.body#/next_page_token"}}}},"400":{"description":"bad input parameter","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/project-times":{"get":{"operationId":"fetchProjectTimes","tags":["Project Time"],"summary":"fetches Project Times","description":"List all Project Times the authenticated user/authtoken has access to. The entries can be filtered by the provided query parameters, all of which are optional. The number of entries returned is capped by the page size limit. This end point uses cursor pagination. If more entries would be found for a given query, the result envelope contains a 'next_page_token' field with a token that can be used to fetch the next page.","parameters":[{"name":"notes","in":"query","description":"pass a search string to filter entries containing this string in their notes","required":false,"example":"","schema":{"type":"string"}},{"name":"start_from","in":"query","description":"pass a date to filter entries started from this day on","required":false,"example":"","schema":{"$ref":"#/components/schemas/LocalDate"}},{"name":"start_to","in":"query","description":"pass a date to filter entries started up to (including) this day","required":false,"example":"","schema":{"$ref":"#/components/schemas/LocalDate"}},{"name":"last_modified_after","in":"query","description":"pass a datetime to filter entries modified after this instant","required":false,"example":"","schema":{"$ref":"#/components/schemas/DateTime"}},{"name":"task","in":"query","description":"pass a tasks id to restrict entries based on its value","required":false,"example":"","schema":{"type":"string"}},{"name":"traverse_task_tree","in":"query","description":"pass this parameter with value true/false to filter just by task specified or also traverse its task tree","required":false,"example":"true/false","schema":{"type":"boolean","default":true}},{"name":"billable","in":"query","description":"pass this parameter with value true/false to show just entries/no entries which are billable","required":false,"example":"true/false","schema":{"type":"boolean"}},{"name":"statuses","in":"query","description":"pass one or more statuses to filter entries based on their status","required":false,"example":"","schema":{"type":"array","items":{"$ref":"#/components/schemas/ProjectTimeStatus"}}},{"name":"users","in":"query","description":"pass one or more user ids to restrict entries based on the user they are associated to","required":false,"example":"","schema":{"type":"array","items":{"type":"string"}}},{"name":"changed","in":"query","description":"pass a boolean to filter entries based on whether they have been changed by the user or not","required":false,"example":"","schema":{"type":"boolean"}},{"name":"page_token","in":"query","description":"Token for retrieving the next page. This token is provided in the response of the previous page as next_page_token","required":false,"example":"","schema":{"type":"string"}},{"name":"limit","in":"query","description":"pass a value to change the maximum number of entries returned in a single page (at max 500).","required":false,"schema":{"minimum":1,"default":20,"type":"integer","format":"int32"}},{"name":"sort_direction","in":"query","description":"pass a direction in which the entries returned will be sorted in","required":false,"schema":{"allOf":[{"$ref":"#/components/schemas/SortDirection"}],"default":"asc"}},{"name":"sort_by","in":"query","description":"By default sorted by:\n * start\n * Id\n","required":false,"schema":{"allOf":[{"$ref":"#/components/schemas/ProjectTimesSortColumn"}],"default":"start"}}],"responses":{"200":{"description":"search results matching criteria","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProjectTimesPage"}}},"headers":{"Link":{"schema":{"type":"string","format":"uri"},"description":"link to the next page including filter parameters and page token"}},"links":{"GetProjectTimesNextPage":{"operationId":"fetchProjectTimes","parameters":{"page_token":"$response.body#/next_page_token"}}}},"400":{"description":"bad input parameter","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"post":{"operationId":"createProjectTime","tags":["Project Time"],"summary":"create a Project Time","description":"Creates a new Project Time based on the data provided in the request body.","requestBody":{"description":"Project Time entity","required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProjectTimeCreate"}}}},"responses":{"201":{"description":"created Project Time entity","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProjectTime"}}}},"400":{"description":"bad input parameter","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/project-times/{id}":{"get":{"operationId":"getProjectTime","tags":["Project Time"],"summary":"gets a single Project Time","description":"Retrieves a single Project Time based on its id.","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"search results matching criteria","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProjectTime"}}}},"403":{"description":"not allowed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"patch":{"operationId":"updateProjectTime","tags":["Project Time"],"summary":"updates a single Project Time","description":"Updates the Project Time specified by the id with the fields provided in the request body.","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"description":"Project Time entity","required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProjectTimeUpdate"}}}},"responses":{"200":{"description":"search results matching criteria","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProjectTime"}}}},"400":{"description":"bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"not allowed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"delete":{"operationId":"deleteProjectTime","tags":["Project Time"],"summary":"deletes a single Project Time","description":"Deletes a single Project Time based on its id.","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"204":{"description":"Empty response indicating that delete was successful"},"403":{"description":"not allowed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/project-times:deleted":{"get":{"operationId":"fetchDeletedProjectTimes","tags":["Project Time"],"summary":"Get deleted project times","description":"List all deleted Project Times the authenticated user/authtoken has access to, optionally filtered by last_modified. The number of entries returned is capped by the page size limit. This end point uses cursor pagination. If more entries would be found for a given query, the result envelope contains a 'next_page_token' field with a token that can be used to fetch the next page.","parameters":[{"name":"last_modified","in":"query","description":"optionally, pass a datetime to filter entries modified after this instant","required":false,"example":"","schema":{"$ref":"#/components/schemas/DateTime"}},{"name":"page_token","in":"query","description":"Token for retrieving the next page. This token is provided in the response of the previous page as next_page_token","required":false,"schema":{"type":"string"}},{"name":"limit","in":"query","description":"optionally, pass a value to change the maximum number of entries returned in a single page (at max 500).","required":false,"schema":{"minimum":1,"default":20,"type":"integer","format":"int32"}},{"name":"sort_direction","in":"query","description":"optionally, pass a direction in which the entries returned will be sorted in","required":false,"schema":{"allOf":[{"$ref":"#/components/schemas/SortDirection"}],"default":"asc"}},{"name":"sort_by","in":"query","description":"By default sorted by:\n * last_modified\n * Id\noptionally, pass a property by which the returned entries will be sorted if you want a different order\n","required":false,"schema":{"allOf":[{"$ref":"#/components/schemas/DeletedEntrySortColumn"}],"default":"last_modified"}}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeletedEntryWithMetadataPage"}}},"headers":{"Link":{"schema":{"type":"string","format":"uri"},"description":"link to the next page including filter parameters and page token"}},"links":{"GetDeletedProjectTimesNextPage":{"operationId":"fetchDeletedProjectTimes","parameters":{"page_token":"$response.body#/next_page_token"}}}},"400":{"description":"bad input parameter","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/tasks":{"get":{"operationId":"fetchTasks","tags":["Task"],"summary":"fetches Tasks","description":"List all Tasks the authenticated user/authtoken has access to. The entries can be filtered by the provided query parameters, all of which are optional. The number of entries returned is capped by the page size limit. This end point uses cursor pagination. If more entries would be found for a given query, the result envelope contains a 'next_page_token' field with a token that can be used to fetch the next page.","parameters":[{"name":"parent_task_id","in":"query","description":"pass task's id to restrict entries having this task as a parent task","required":false,"schema":{"type":"string"}},{"name":"traverse_task_tree","in":"query","description":"pass this parameter with value true/false to traverse the whole task tree","required":false,"example":"true/false","schema":{"type":"boolean","default":true}},{"name":"name","in":"query","description":"pass a user name to filter entries by the user name","required":false,"schema":{"type":"string"}},{"name":"bookable","in":"query","description":"pass this parameter with value true/false to show just entries/no entries which are billable","required":false,"example":"true/false","schema":{"type":"boolean"}},{"name":"billable","in":"query","description":"pass this parameter with value true/false to show just entries/no entries which are billable","required":false,"example":"true/false","schema":{"type":"boolean"}},{"name":"page_token","in":"query","description":"Token for retrieving the next page. This token is provided in the response of the previous page as next_page_token","required":false,"schema":{"type":"string"}},{"name":"limit","in":"query","description":"pass a value to change the maximum number of entries returned in a single page (at max 500).","required":false,"example":"","schema":{"minimum":1,"default":20,"type":"integer","format":"int32"}},{"name":"sort_direction","in":"query","description":"pass a direction in which the entries returned will be sorted in","required":false,"schema":{"allOf":[{"$ref":"#/components/schemas/SortDirection"}],"default":"asc"}},{"name":"sort_by","in":"query","description":"By default sorted by:\n * breadcrumbs\n * id\n\npass a property by which the returned entries will be sorted if you want a different order\n","required":false,"schema":{"allOf":[{"$ref":"#/components/schemas/TasksSortColumn"}],"default":"breadcrumbs"}}],"responses":{"200":{"description":"search results matching criteria","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TasksPage"}}},"headers":{"Link":{"schema":{"type":"string","format":"uri"},"description":"link to the next page including filter parameters and page token"}},"links":{"GetTasksNextPage":{"operationId":"fetchTasks","parameters":{"page_token":"$response.body#/next_page_token"}}}},"400":{"description":"bad input parameter","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"post":{"operationId":"createTask","tags":["Task"],"summary":"create a Task","description":"Creates a new Task based on the data provided in the request body.","requestBody":{"description":"Project Time entity","required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TaskCreate"}}}},"responses":{"201":{"description":"created Task entity","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Task"}}}},"400":{"description":"bad input parameter","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/tasks/{id}":{"get":{"operationId":"getTask","tags":["Task"],"summary":"get a single task","description":"Retrieves a single Task based on its Task ID.","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"search results matching criteria","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Task"}}}},"403":{"description":"not allowed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"patch":{"operationId":"update Task","tags":["Task"],"summary":"updates a single Task","description":"Updates the Task specified by the id with the fields provided in the request body.","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"description":"Task entity","required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TaskUpdate"}}}},"responses":{"200":{"description":"task successfully updated","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Task"}}}},"400":{"description":"bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"not allowed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/tasks/{task_id}/users":{"get":{"operationId":"fetchTaskToUserAssignments","tags":["Task to User Assignment"],"summary":"fetches Task to User Assignments","description":"List all task to user assignments the authenticated user/authtoken has access to.The number of entries returned is capped by the page size limit. This end point uses cursor pagination. If more entries would be found for a given query, the result envelope contains a 'next_page_token' field with a token that can be used to fetch the next page.","parameters":[{"name":"task_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"page_token","in":"query","description":"Token for retrieving the next page. This token is provided in the response of the previous page as next_page_token","required":false,"schema":{"type":"string"}},{"name":"limit","in":"query","description":"pass a value to change the maximum number of entries returned in a single page (at max 500).","required":false,"schema":{"minimum":1,"default":20,"type":"integer","format":"int32"}},{"name":"sort_direction","in":"query","description":"pass a direction in which the entries returned will be sorted in","required":false,"schema":{"allOf":[{"$ref":"#/components/schemas/SortDirection"}],"default":"asc"}},{"name":"sort_by","in":"query","description":"By default sorted by:\n   * Lastname\n   * Firstname \n   * Id\nof the assigned user\n","required":false,"schema":{"allOf":[{"$ref":"#/components/schemas/TaskToUserAssignmentsSortColumn"}],"default":"user_name"}}],"responses":{"200":{"description":"search results matching criteria","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TaskToUserAssignmentsPage"}}},"headers":{"Link":{"schema":{"type":"string","format":"uri"},"description":"link to the next page including filter parameters and page token"}},"links":{"GetTaskToUserAssignmentsNextPage":{"operationId":"fetchTaskToUserAssignments","parameters":{"page_token":"$response.body#/next_page_token"}}}},"403":{"description":"not allowed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/tasks/{task_id}/users/{user_id}":{"get":{"operationId":"getTaskToUserAssignment","tags":["Task to User Assignment"],"summary":"get a single task to user assignment","description":"Retrieves a single Task based on its Task ID.","parameters":[{"name":"task_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"user_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"search results matching criteria","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TaskToUserAssignment"}}}},"403":{"description":"not allowed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"put":{"operationId":"createTaskToUserAssignment","tags":["Task to User Assignment"],"summary":"create a Task to User Assignment","description":"Creates a new Task to User Assignment for the given user_id based on the data provided in the request body.","parameters":[{"name":"task_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"user_id","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"description":"Task to User Assignment entity","required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TaskToUserAssignmentCreateAndUpdate"}}}},"responses":{"201":{"description":"created Task to User Assignment","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TaskToUserAssignment"}}}},"400":{"description":"bad input parameter","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"patch":{"operationId":"updateTaskToUserAssignment","tags":["Task to User Assignment"],"summary":"update a Task to User Assignment","description":"Updates the Task to User Assignment specified by the id with the fields provided in the request body.","parameters":[{"name":"task_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"user_id","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"description":"Task to User Assignment entity","required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TaskToUserAssignmentCreateAndUpdate"}}}},"responses":{"201":{"description":"updated Task to User Assignment","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TaskToUserAssignment"}}}},"400":{"description":"bad input parameter","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"delete":{"operationId":"deleteTaskToUserAssignment","tags":["Task to User Assignment"],"summary":"deletes a Task to User Assignment","description":"Deletes a Task to User Assignment based on its task_id and user_id.","parameters":[{"name":"task_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"user_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"204":{"description":"Empty response indicating that delete was successful"},"403":{"description":"not allowed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/tasks/{task_id}/leaders":{"get":{"operationId":"fetchTaskToLeaderAssignments","tags":["Task to Leader Assignment"],"summary":"fetches Task to Leader Assignments","description":"List all task to leader assignments the authenticated user/authtoken has access to.The number of entries returned is capped by the page size limit. This end point uses cursor pagination. If more entries would be found for a given query, the result envelope contains a 'next_page_token' field with a token that can be used to fetch the next page.","parameters":[{"name":"task_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"page_token","in":"query","description":"Token for retrieving the next page. This token is provided in the response of the previous page as next_page_token","required":false,"schema":{"type":"string"}},{"name":"limit","in":"query","description":"pass a value to change the maximum number of entries returned in a single page (at max 500).","required":false,"schema":{"minimum":1,"default":20,"type":"integer","format":"int32"}},{"name":"sort_direction","in":"query","description":"pass a direction in which the entries returned will be sorted in","required":false,"schema":{"allOf":[{"$ref":"#/components/schemas/SortDirection"}],"default":"asc"}},{"name":"sort_by","in":"query","description":"By default sorted by:\n   * Lastname\n   * Firstname \n   * Id\nof the assigned leader\n","required":false,"schema":{"allOf":[{"$ref":"#/components/schemas/TaskToLeaderAssignmentsSortColumn"}],"default":"user_name"}}],"responses":{"200":{"description":"search results matching criteria","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TaskToLeaderAssignmentsPage"}}},"headers":{"Link":{"schema":{"type":"string","format":"uri"},"description":"link to the next page including filter parameters and page token"}},"links":{"GetTaskToLeaderAssignmentsNextPage":{"operationId":"fetchTaskToLeaderAssignments","parameters":{"page_token":"$response.body#/next_page_token"}}}},"403":{"description":"not allowed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/tasks/{task_id}/leaders/{user_id}":{"get":{"operationId":"getTaskToLeaderAssignment","tags":["Task to Leader Assignment"],"summary":"get a single task to leader assignment","description":"Retrieves a single Task based on its Task ID and User ID.","parameters":[{"name":"task_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"user_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"search results matching criteria","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TaskToLeaderAssignment"}}}},"403":{"description":"not allowed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"put":{"operationId":"createTaskToLeaderAssignment","tags":["Task to Leader Assignment"],"summary":"create a Task to Leader Assignment","description":"Creates a new Task to Leader Assignment for the given user_id based on the data provided in the request body.","parameters":[{"name":"task_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"user_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"201":{"description":"created Task to User Assignment","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TaskToLeaderAssignment"}}}},"400":{"description":"bad input parameter","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"delete":{"operationId":"deleteTaskToLeaderAssignment","tags":["Task to Leader Assignment"],"summary":"deletes a Task to Leader Assignment","description":"Deletes a Task to Leader Assignment based on its task_id and user_id.","parameters":[{"name":"task_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"user_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"204":{"description":"Empty response indicating that delete was successful"},"403":{"description":"not allowed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/tasks/{task_id}/teams":{"get":{"operationId":"fetchTaskToTeamAssignments","tags":["Task to Team Assignment"],"summary":"fetches Task to Team Assignments","description":"List all task to team assignments the authenticated user/authtoken has access to.The number of entries returned is capped by the page size limit. This end point uses cursor pagination. If more entries would be found for a given query, the result envelope contains a 'next_page_token' field with a token that can be used to fetch the next page.","parameters":[{"name":"task_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"page_token","in":"query","description":"Token for retrieving the next page. This token is provided in the response of the previous page as next_page_token","required":false,"schema":{"type":"string"}},{"name":"limit","in":"query","description":"pass a value to change the maximum number of entries returned in a single page (at max 500).","required":false,"schema":{"minimum":1,"default":20,"type":"integer","format":"int32"}},{"name":"sort_direction","in":"query","description":"pass a direction in which the entries returned will be sorted in","required":false,"schema":{"allOf":[{"$ref":"#/components/schemas/SortDirection"}],"default":"asc"}},{"name":"sort_by","in":"query","description":"By default sorted by:\n   * Name \n   * Id \nof the assigned team\n","required":false,"schema":{"allOf":[{"$ref":"#/components/schemas/TaskToTeamAssignmentsSortColumn"}],"default":"team_name"}}],"responses":{"200":{"description":"search results matching criteria","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TaskToTeamAssignmentsPage"}}},"headers":{"Link":{"schema":{"type":"string","format":"uri"},"description":"link to the next page including filter parameters and page token"}},"links":{"GetTaskToTeamAssignmentsNextPage":{"operationId":"fetchTaskToTeamAssignments","parameters":{"page_token":"$response.body#/next_page_token"}}}},"403":{"description":"not allowed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/tasks/{task_id}/teams/{team_id}":{"get":{"operationId":"getTaskToTeamAssignment","tags":["Task to Team Assignment"],"summary":"get a single task to team assignment","description":"Retrieves a single Task based on its Task ID and Team ID.","parameters":[{"name":"task_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"team_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"search results matching criteria","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TaskToTeamAssignment"}}}},"403":{"description":"not allowed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"put":{"operationId":"createTaskToTeamAssignment","tags":["Task to Team Assignment"],"summary":"create a Task to Team Assignment","description":"Creates a new Task to Team Assignment for the given team_id based on the data provided in the request body.","parameters":[{"name":"task_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"team_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"201":{"description":"created Task to Team Assignment","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TaskToTeamAssignment"}}}},"400":{"description":"bad input parameter","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"delete":{"operationId":"deleteTaskToTeamAssignment","tags":["Task to Team Assignment"],"summary":"deletes a Task to Team Assignment","description":"Deletes a Task to Team Assignment based on its task_id and team_id.","parameters":[{"name":"task_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"team_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"204":{"description":"Empty response indicating that delete was successful"},"403":{"description":"not allowed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/drive-logs":{"get":{"operationId":"fetchDriveLogs","tags":["Drive Log"],"summary":"fetches Drive Logs","description":"List all Drive Logs the authenticated user/authtoken has access to. The entries can be filtered by the provided query parameters, all of which are optional. The number of entries returned is capped by the page size limit. This end point uses cursor pagination. If more entries would be found for a given query, the result envelope contains a 'next_page_token' field with a token that can be used to fetch the next page.","parameters":[{"name":"start_from","in":"query","description":"pass a date to filter entries started from this day on","required":false,"example":"","schema":{"$ref":"#/components/schemas/LocalDate"}},{"name":"start_to","in":"query","description":"pass a date to filter entries started up to (including) this day","required":false,"example":"","schema":{"$ref":"#/components/schemas/LocalDate"}},{"name":"last_modified_after","in":"query","description":"pass a datetime to filter entries modified after this instant","required":false,"example":"","schema":{"$ref":"#/components/schemas/DateTime"}},{"name":"cars","in":"query","description":"pass one or more ids of cars to restrict entries based on these cars","required":false,"example":"","schema":{"type":"array","items":{"type":"string"}}},{"name":"drive_log_categories","in":"query","description":"pass one or more ids of drive log categories to restrict entries based on these categories","required":false,"example":"","schema":{"type":"array","items":{"type":"string"}}},{"name":"statuses","in":"query","description":"pass one or more statuses to filter entries based on their status","required":false,"example":"","schema":{"type":"array","items":{"$ref":"#/components/schemas/DriveLogStatus"}}},{"name":"users","in":"query","description":"pass one or more user ids to restrict entries based on the user they are associated to","required":false,"example":"","schema":{"type":"array","items":{"type":"string"}}},{"name":"details","in":"query","description":"pass a String based on which the entries are filtered if it is contained in the properties route, purpose or visited","required":false,"schema":{"type":"string"}},{"name":"changed","in":"query","description":"pass a boolean to filter entries based on whether they have been changed by the user or not","required":false,"example":"","schema":{"type":"boolean"}},{"name":"has_track","in":"query","description":"pass a boolean to filter entries based on whether they have a track or not","required":false,"example":"","schema":{"type":"boolean"}},{"name":"page_token","in":"query","description":"Token for retrieving the next page. This token is provided in the response of the previous page as next_page_token","required":false,"example":"","schema":{"type":"string"}},{"name":"limit","in":"query","description":"pass a value to change the maximum number of entries returned in a single page (at max 500).","required":false,"schema":{"minimum":1,"default":20,"type":"integer","format":"int32"}},{"name":"sort_direction","in":"query","description":"pass a direction in which the entries returned will be sorted in","required":false,"schema":{"allOf":[{"$ref":"#/components/schemas/SortDirection"}],"default":"asc"}},{"name":"sort_by","in":"query","description":"By default sorted by:\n * start\n * las_modified_after\n * id\n","required":false,"schema":{"allOf":[{"$ref":"#/components/schemas/DriveLogsSortColumn"}],"default":"start"}}],"responses":{"200":{"description":"search results matching criteria","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DriveLogsPage"}}},"headers":{"Link":{"schema":{"type":"string","format":"uri"},"description":"link to the next page including filter parameters and page token"}},"links":{"GetDriveLogsNextPage":{"operationId":"fetchDriveLogs","parameters":{"page_token":"$response.body#/next_page_token"}}}},"400":{"description":"bad input parameter","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"post":{"operationId":"createDriveLog","tags":["Drive Log"],"summary":"create a Drive Log","description":"Creates a new Drive Log based on the data provided in the request body.","requestBody":{"description":"Drive Log entity","required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DriveLogCreate"}}}},"responses":{"201":{"description":"created Drive Log entity","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DriveLog"}}}},"400":{"description":"bad input parameter","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/drive-logs/{id}":{"get":{"operationId":"getDriveLog","tags":["Drive Log"],"summary":"gets a single Drive Log","description":"Retrieves a single Drive Log based on its id.","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"search results matching criteria","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DriveLog"}}}},"403":{"description":"not allowed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"patch":{"operationId":"updateDriveLog","tags":["Drive Log"],"summary":"updates a single Drive Log","description":"Updates the Drive Log specified by the id with the fields provided in the request body.","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"description":"Drive Log entity","required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DriveLogUpdate"}}}},"responses":{"200":{"description":"search results matching criteria","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DriveLog"}}}},"400":{"description":"bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"not allowed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/drive-logs:deleted":{"get":{"operationId":"fetchDeletedDriveLogs","tags":["Drive Log"],"summary":"Get deleted drive logs","description":"List all deleted Working Time Requests the authenticated user/authtoken has access to, optionally filtered by last_modified. The number of entries returned is capped by the page size limit. This end point uses cursor pagination. If more entries would be found for a given query, the result envelope contains a 'next_page_token' field with a token that can be used to fetch the next page.","parameters":[{"name":"last_modified","in":"query","description":"optionally, pass a datetime to filter entries modified after this instant","required":false,"example":"","schema":{"$ref":"#/components/schemas/DateTime"}},{"name":"page_token","in":"query","description":"Token for retrieving the next page. This token is provided in the response of the previous page as next_page_token","required":false,"schema":{"type":"string"}},{"name":"limit","in":"query","description":"optionally, pass a value to change the maximum number of entries returned in a single page (at max 500).","required":false,"schema":{"minimum":1,"default":20,"type":"integer","format":"int32"}},{"name":"sort_direction","in":"query","description":"optionally, pass a direction in which the entries returned will be sorted in","required":false,"schema":{"allOf":[{"$ref":"#/components/schemas/SortDirection"}],"default":"asc"}},{"name":"sort_by","in":"query","description":"By default sorted by:\n * last_modified\n * Id\noptionally, pass a property by which the returned entries will be sorted if you want a different order\n","required":false,"schema":{"allOf":[{"$ref":"#/components/schemas/DeletedEntryWithMetadataSortColumn"}],"default":"last_modified"}}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeletedEntryPage"}}},"headers":{"Link":{"schema":{"type":"string","format":"uri"},"description":"link to the next page including filter parameters and page token"}},"links":{"GetDeletedDriveLogsNextPage":{"operationId":"fetchDeletedDriveLogs","parameters":{"page_token":"$response.body#/next_page_token"}}}},"400":{"description":"bad input parameter","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/cars":{"get":{"operationId":"fetchCars","tags":["Car"],"summary":"fetches Cars","description":"List all Cars the authenticated user/authtoken has access to. The entries can be filtered by the provided query parameters, all of which are optional. The number of entries returned is capped by the page size limit. This end point uses cursor pagination. If more entries would be found for a given query, the result envelope contains a 'next_page_token' field with a token that can be used to fetch the next page.","parameters":[{"name":"name_or_plate","in":"query","description":"pass a String based on which the entries are filtered if it is contained in the properties name or plate","required":false,"schema":{"type":"string"}},{"name":"usable","in":"query","description":"pass a boolean to filter entries based on whether the car is usable or not","required":false,"example":"","schema":{"type":"boolean"}},{"name":"page_token","in":"query","description":"Token for retrieving the next page. This token is provided in the response of the previous page as next_page_token","required":false,"example":"","schema":{"type":"string"}},{"name":"limit","in":"query","description":"pass a value to change the maximum number of entries returned in a single page (at max 500).","required":false,"schema":{"minimum":1,"default":20,"type":"integer","format":"int32"}},{"name":"sort_direction","in":"query","description":"pass a direction in which the entries returned will be sorted in","required":false,"schema":{"allOf":[{"$ref":"#/components/schemas/SortDirection"}],"default":"asc"}},{"name":"sort_by","in":"query","description":"By default sorted by:\n * name\n * id\n","required":false,"schema":{"allOf":[{"$ref":"#/components/schemas/CarsSortColumn"}],"default":"name"}}],"responses":{"200":{"description":"search results matching criteria","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CarsPage"}}},"headers":{"Link":{"schema":{"type":"string","format":"uri"},"description":"link to the next page including filter parameters and page token"}},"links":{"GetCarsNextPage":{"operationId":"fetchCars","parameters":{"page_token":"$response.body#/next_page_token"}}}},"400":{"description":"bad input parameter","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/cars/{id}":{"get":{"operationId":"getCar","tags":["Car"],"summary":"gets a single Car","description":"Retrieves a single Car based on its id.","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"search results matching criteria","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Car"}}}},"403":{"description":"not allowed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/drive-log-categories":{"get":{"operationId":"fetchDriveLogCategories","tags":["Drive Log Category"],"summary":"fetches Drive Log Categories","description":"List all Drive Log Categories the authenticated user/authtoken has access to. The entries can be filtered by the provided query parameters, all of which are optional. The number of entries returned is capped by the page size limit. This end point uses cursor pagination. If more entries would be found for a given query, the result envelope contains a 'next_page_token' field with a token that can be used to fetch the next page.","parameters":[{"name":"page_token","in":"query","description":"Token for retrieving the next page. This token is provided in the response of the previous page as next_page_token","required":false,"example":"","schema":{"type":"string"}},{"name":"limit","in":"query","description":"pass a value to change the maximum number of entries returned in a single page (at max 500).","required":false,"schema":{"minimum":1,"default":20,"type":"integer","format":"int32"}},{"name":"sort_direction","in":"query","description":"pass a direction in which the entries returned will be sorted in","required":false,"schema":{"allOf":[{"$ref":"#/components/schemas/SortDirection"}],"default":"asc"}},{"name":"sort_by","in":"query","description":"By default sorted by:\n * name\n * id\n","required":false,"schema":{"allOf":[{"$ref":"#/components/schemas/DriveLogCategoriesSortColumn"}],"default":"name"}}],"responses":{"200":{"description":"search results matching criteria","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DriveLogCategoriesPage"}}},"headers":{"Link":{"schema":{"type":"string","format":"uri"},"description":"link to the next page including filter parameters and page token"}},"links":{"GetDriveLogCategoriesNextPage":{"operationId":"fetchDriveLogCategories","parameters":{"page_token":"$response.body#/next_page_token"}}}},"400":{"description":"bad input parameter","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/drive-log-categories/{id}":{"get":{"operationId":"getDriveLogCategory","tags":["Drive Log Category"],"summary":"gets a single Drive Log Category","description":"Retrieves a single Drive Log Category based on its id.","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"search results matching criteria","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DriveLogCategory"}}}},"403":{"description":"not allowed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/drive-logs/{id}/track":{"get":{"operationId":"getTrack","tags":["Track"],"summary":"gets the Track of a Drive Log if present","description":"Retrieves Drive Log's Track based on its id.","parameters":[{"name":"id","in":"path","required":true,"description":"drive log id","schema":{"type":"string"}}],"responses":{"200":{"description":"search results matching criteria","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Track"}}}},"400":{"description":"bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"not allowed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"post":{"operationId":"createTrack","tags":["Track"],"summary":"create a Track for a Drive Log","description":"Creates a new Track for a Drive Log based on the waypoints provided in the request body.","parameters":[{"name":"id","in":"path","required":true,"description":"drive log id","schema":{"type":"string"}}],"requestBody":{"description":"Working Time Date Span entity","required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Track"}}}},"responses":{"201":{"description":"created Working Time entity","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Track"}}}},"400":{"description":"bad input parameter","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"put":{"operationId":"updateTrack","tags":["Track"],"summary":"updates a Drive Log's Track","description":"Updates the Track specified by the id of a Drive Log with the waypoints provided in the request body.","parameters":[{"name":"id","in":"path","required":true,"description":"drive log id","schema":{"type":"string"}}],"requestBody":{"description":"working time date span entity","required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Track"}}}},"responses":{"200":{"description":"working time date span successfully updated","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Track"}}}},"400":{"description":"bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"not allowed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"delete":{"operationId":"deleteTrack","tags":["Track"],"summary":"deletes a Drive Log's Track","description":"Deletes a single Track based on a Drive Log's id.","parameters":[{"name":"id","in":"path","required":true,"description":"drive log id","schema":{"type":"string"}}],"responses":{"204":{"description":"Empty response indicating that delete was successful"},"403":{"description":"not allowed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/working-time-requests":{"get":{"operationId":"fetchWorkingTimeRequests","tags":["Working Time Request"],"summary":"fetches Working Time Requests","description":"List all Working Times Requests the authenticated user/authtoken has access to. The entries can be filtered by the provided query parameters, all of which are optional. The number of entries returned is capped by the page size limit. This end point uses cursor pagination. If more entries would be found for a given query, the result envelope contains a 'next_page_token' field with a token that can be used to fetch the next page.","parameters":[{"name":"from","in":"query","description":"pass a date to filter entries started from this day on","required":false,"example":"","schema":{"$ref":"#/components/schemas/LocalDate"}},{"name":"to","in":"query","description":"pass a date to filter entries started up to (including) this day","required":false,"example":"","schema":{"$ref":"#/components/schemas/LocalDate"}},{"name":"last_modified_after","in":"query","description":"pass a datetime to filter entries modified after this instant","required":false,"example":"","schema":{"$ref":"#/components/schemas/DateTime"}},{"name":"working_time_types","in":"query","description":"pass one or more ids of Working Time Types to restrict entries based on these types","required":false,"example":"","schema":{"type":"array","items":{"type":"string"}}},{"name":"statuses","in":"query","description":"pass one or more statuses to filter entries based on their status","required":false,"example":"","schema":{"type":"array","items":{"$ref":"#/components/schemas/WorkingTimeRequestStatus"}}},{"name":"users","in":"query","description":"pass one or more user ids to restrict entries based on the user they are associated to","required":false,"example":"","schema":{"type":"array","items":{"type":"string"}}},{"name":"substitutes","in":"query","description":"pass one or more user ids to restrict entries based on the substitute they are associated to","required":false,"example":"","schema":{"type":"array","items":{"type":"string"}}},{"name":"page_token","in":"query","description":"Token for retrieving the next page. This token is provided in the response of the previous page as next_page_token","required":false,"example":"","schema":{"type":"string"}},{"name":"limit","in":"query","description":"pass a value to change the maximum number of entries returned in a single page (at max 500).","required":false,"schema":{"minimum":1,"default":20,"type":"integer","format":"int32"}},{"name":"sort_direction","in":"query","description":"pass a direction in which the entries returned will be sorted in","required":false,"schema":{"allOf":[{"$ref":"#/components/schemas/SortDirection"}],"default":"asc"}},{"name":"sort_by","in":"query","description":"By default sorted by:\n * start\n * Id\n","required":false,"schema":{"allOf":[{"$ref":"#/components/schemas/WorkingTimeRequestsSortColumn"}],"default":"start"}}],"responses":{"200":{"description":"search results matching criteria","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkingTimeRequestsPage"}}},"headers":{"Link":{"schema":{"type":"string","format":"uri"},"description":"link to the next page including filter parameters and page token"}},"links":{"GetWorkingTimeRequestsNextPage":{"operationId":"fetchWorkingTimeRequests","parameters":{"page_token":"$response.body#/next_page_token"}}}},"400":{"description":"bad input parameter","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/working-time-requests/{id}":{"get":{"operationId":"getWorkingTimeRequest","tags":["Working Time Request"],"summary":"gets a single Working Time Request","description":"Retrieves a single Working Time Request based on its id.","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"search results matching criteria","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkingTimeRequest"}}}},"403":{"description":"not allowed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"delete":{"operationId":"deleteWorkingTimeRequest","tags":["Working Time Request"],"summary":"deletes a single Working Time Request","description":"Deletes a single Working Time based on its id.","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"204":{"description":"Empty response indicating that delete was successful"},"403":{"description":"not allowed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/working-time-requests:deleted":{"get":{"operationId":"fetchDeletedWorkingTimeRequests","tags":["Working Time Request"],"summary":"Get deleted working time requests","description":"List all deleted Working Time Requests the authenticated user/authtoken has access to, optionally filtered by last_modified. The number of entries returned is capped by the page size limit. This end point uses cursor pagination. If more entries would be found for a given query, the result envelope contains a 'next_page_token' field with a token that can be used to fetch the next page.","parameters":[{"name":"last_modified","in":"query","description":"optionally, pass a datetime to filter entries modified after this instant","required":false,"example":"","schema":{"$ref":"#/components/schemas/DateTime"}},{"name":"page_token","in":"query","description":"Token for retrieving the next page. This token is provided in the response of the previous page as next_page_token","required":false,"schema":{"type":"string"}},{"name":"limit","in":"query","description":"optionally, pass a value to change the maximum number of entries returned in a single page (at max 500).","required":false,"schema":{"minimum":1,"default":20,"type":"integer","format":"int32"}},{"name":"sort_direction","in":"query","description":"optionally, pass a direction in which the entries returned will be sorted in","required":false,"schema":{"allOf":[{"$ref":"#/components/schemas/SortDirection"}],"default":"asc"}},{"name":"sort_by","in":"query","description":"By default sorted by:\n * last_modified\n * Id\noptionally, pass a property by which the returned entries will be sorted if you want a different order\n","required":false,"schema":{"allOf":[{"$ref":"#/components/schemas/DeletedEntrySortColumn"}],"default":"last_modified"}}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeletedEntryPage"}}},"headers":{"Link":{"schema":{"type":"string","format":"uri"},"description":"link to the next page including filter parameters and page token"}},"links":{"GetDeletedWorkingTimeRequestsNextPage":{"operationId":"fetchDeletedWorkingTimeRequests","parameters":{"page_token":"$response.body#/next_page_token"}}}},"400":{"description":"bad input parameter","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/working-time-date-spans":{"get":{"operationId":"fetchWorkingTimeDateSpans","tags":["Working Time DateSpan"],"summary":"fetches Working Time Date Spans","description":"List all Working Times Date Spans the authenticated user/authtoken has access to. The entries can be filtered by the provided query parameters, all of which are optional. The number of entries returned is capped by the page size limit. This end point uses cursor pagination. If more entries would be found for a given query, the result envelope contains a 'next_page_token' field with a token that can be used to fetch the next page.","parameters":[{"name":"from","in":"query","description":"pass a date to filter entries started from this day on","required":false,"example":"","schema":{"$ref":"#/components/schemas/LocalDate"}},{"name":"to","in":"query","description":"pass a date to filter entries started up to (including) this day","required":false,"example":"","schema":{"$ref":"#/components/schemas/LocalDate"}},{"name":"last_modified_after","in":"query","description":"pass a datetime to filter entries modified after this instant","required":false,"example":"","schema":{"$ref":"#/components/schemas/DateTime"}},{"name":"working_time_types","in":"query","description":"pass one or more ids of Working Time Types to restrict entries based on these types","required":false,"example":"","schema":{"type":"array","items":{"type":"string"}}},{"name":"users","in":"query","description":"pass one or more user ids to restrict entries based on the user they are associated to","required":false,"example":"","schema":{"type":"array","items":{"type":"string"}}},{"name":"page_token","in":"query","description":"Token for retrieving the next page. This token is provided in the response of the previous page as next_page_token","required":false,"example":"","schema":{"type":"string"}},{"name":"limit","in":"query","description":"pass a value to change the maximum number of entries returned in a single page (at max 500).","required":false,"schema":{"minimum":1,"default":20,"type":"integer","format":"int32"}},{"name":"sort_direction","in":"query","description":"pass a direction in which the entries returned will be sorted in","required":false,"schema":{"allOf":[{"$ref":"#/components/schemas/SortDirection"}],"default":"asc"}},{"name":"sort_by","in":"query","description":"By default sorted by:\n * start\n * Id\n","required":false,"schema":{"allOf":[{"$ref":"#/components/schemas/WorkingTimeDateSpansSortColumn"}],"default":"start"}}],"responses":{"200":{"description":"search results matching criteria","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkingTimeDateSpanPage"}}},"headers":{"Link":{"schema":{"type":"string","format":"uri"},"description":"link to the next page including filter parameters and page token"}},"links":{"GetWorkingTimeDateSpansNextPage":{"operationId":"fetchWorkingTimeDateSpans","parameters":{"page_token":"$response.body#/next_page_token"}}}},"400":{"description":"bad input parameter","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"post":{"operationId":"createWorkingTimeDateSpan","tags":["Working Time Date Span"],"summary":"create a Working Time Date Span","description":"Creates a new Working Time Date Span based on the data provided in the request body.","requestBody":{"description":"Working Time Date Span entity","required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkingTimeDateSpanCreate"}}}},"responses":{"201":{"description":"created Working Time entity","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkingTimeDateSpan"}}}},"400":{"description":"bad input parameter","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/working-time-date-spans/{id}":{"get":{"operationId":"getWorkingTimeDateSpan","tags":["Working Time Date Span"],"summary":"gets a single Working Time Date Span","description":"Retrieves a single Working Time Date Span based on its id.","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"corresponding working time date span entity for the given id","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkingTimeDateSpan"}}}},"403":{"description":"not allowed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"patch":{"operationId":"updateWorkingTimeDateSpan","tags":["Working Time Date Span"],"summary":"updates a single Working Time Date Span","description":"Updates the Working Time Date Span specified by the id with the fields provided in the request body.","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"description":"working time date span entity","required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkingTimeDateSpanUpdate"}}}},"responses":{"200":{"description":"working time date span successfully updated","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkingTimeDateSpan"}}}},"204":{"description":"Empty response indicating that a date span got deleted. This can happen when it is updated to a day where no working hours can be booked."},"400":{"description":"bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"not allowed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"delete":{"operationId":"deleteWorkingTimeDateSpan","tags":["Working Time Date Span"],"summary":"deletes a single Working Time Date Span","description":"Deletes a single Working Time Date Span based on its id.","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"204":{"description":"Empty response indicating that delete was successful"},"403":{"description":"not allowed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/working-time-date-spans:deleted":{"get":{"operationId":"fetchDeletedWorkingTimeDateSpans","tags":["Working Time Date Span"],"summary":"Get deleted working time requests","description":"List all deleted Working Time Date Spans the authenticated user/authtoken has access to, optionally filtered by last_modified. The number of entries returned is capped by the page size limit. This end point uses cursor pagination. If more entries would be found for a given query, the result envelope contains a 'next_page_token' field with a token that can be used to fetch the next page.","parameters":[{"name":"last_modified","in":"query","description":"optionally, pass a datetime to filter entries modified after this instant","required":false,"example":"","schema":{"$ref":"#/components/schemas/DateTime"}},{"name":"page_token","in":"query","description":"Token for retrieving the next page. This token is provided in the response of the previous page as next_page_token","required":false,"schema":{"type":"string"}},{"name":"limit","in":"query","description":"optionally, pass a value to change the maximum number of entries returned in a single page (at max 500).","required":false,"schema":{"minimum":1,"default":20,"type":"integer","format":"int32"}},{"name":"sort_direction","in":"query","description":"optionally, pass a direction in which the entries returned will be sorted in","required":false,"schema":{"allOf":[{"$ref":"#/components/schemas/SortDirection"}],"default":"asc"}},{"name":"sort_by","in":"query","description":"By default sorted by:\n * last_modified\n * Id\noptionally, pass a property by which the returned entries will be sorted if you want a different order\n","required":false,"schema":{"allOf":[{"$ref":"#/components/schemas/DeletedEntryWithMetadataSortColumn"}],"default":"last_modified"}}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeletedEntryWithMetadataPage"}}},"headers":{"Link":{"schema":{"type":"string","format":"uri"},"description":"link to the next page including filter parameters and page token"}},"links":{"GetDeletedWorkingTimeDateSpansNextPage":{"operationId":"fetchDeletedWorkingTimeDateSpans","parameters":{"page_token":"$response.body#/next_page_token"}}}},"400":{"description":"bad input parameter","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/working-time-types":{"get":{"operationId":"fetchWorkingTimeTypes","tags":["Working Time Type"],"summary":"fetches Working Time Types","description":"List all Working Time Types the authenticated user/authtoken has access to. The entries can be filtered by the provided query parameters, all of which are optional. The number of entries returned is capped by the page size limit. This end point uses cursor pagination. If more entries would be found for a given query, the result envelope contains a 'next_page_token' field with a token that can be used to fetch the next page.","parameters":[{"name":"name","in":"query","description":"filter by name","required":false,"example":"","schema":{"type":"string"}},{"name":"short_name","in":"query","description":"filter by short name","required":false,"example":"","schema":{"type":"string"}},{"name":"description","in":"query","description":"filter by description","required":false,"example":"","schema":{"type":"string"}},{"name":"categories","in":"query","description":"filter by WorkingTimeTypeCategory","required":false,"example":"","schema":{"type":"array","items":{"$ref":"#/components/schemas/WorkingTimeTypeCategory"}}},{"name":"sub_categories","in":"query","description":"filter by WorkingTimeTypeSubCategory","required":false,"example":"","schema":{"type":"array","items":{"$ref":"#/components/schemas/WorkingTimeTypeSubCategory"}}},{"name":"edit_units","in":"query","description":"filter by WorkingTimeType's DurationUnit","required":false,"example":"","schema":{"type":"array","items":{"$ref":"#/components/schemas/DurationUnit"}}},{"name":"archived","in":"query","description":"pass a boolean to filter entries based on whether they are archived or not","required":false,"example":"","schema":{"type":"boolean"}},{"name":"recording_modes","in":"query","description":"filter entries bAWS on their RecordingMode","required":false,"example":"","schema":{"type":"array","items":{"$ref":"#/components/schemas/RecordingModeUser"}}},{"name":"page_token","in":"query","description":"Token for retrieving the next page. This token is provided in the response of the previous page as next_page_token.","required":false,"example":"","schema":{"type":"string"}},{"name":"limit","in":"query","description":"pass a value to change the maximum number of entries returned in a single page (at max 500).","required":false,"schema":{"minimum":1,"default":20,"type":"integer","format":"int32"}},{"name":"sort_direction","in":"query","description":"pass a direction in which the entries returned will be sorted in","required":false,"schema":{"allOf":[{"$ref":"#/components/schemas/SortDirection"}],"default":"asc"}},{"name":"sort_by","in":"query","description":"By default sorted by:\n * name\n * Id\n","required":false,"schema":{"allOf":[{"$ref":"#/components/schemas/WorkingTimeTypesSortColumn"}],"default":"name"}}],"responses":{"200":{"description":"search results matching criteria","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkingTimeTypesPage"}}},"headers":{"Link":{"schema":{"type":"string","format":"uri"},"description":"link to the next page including filter parameters and page token"}},"links":{"GetWorkingTimeTypesNextPage":{"operationId":"fetchWorkingTimeTypes","parameters":{"page_token":"$response.body#/next_page_token"}}}},"400":{"description":"bad input parameter","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/working-time-types/{id}":{"get":{"operationId":"getWorkingTimeType","tags":["Working Time Type"],"summary":"gets a single Working Time Type","description":"Retrieves a single Working Time Type based on its id.","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"search results matching criteria","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkingTimeType"}}}},"403":{"description":"not allowed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"delete":{"operationId":"deleteWorkingTimeType","tags":["Working Time Type"],"summary":"deletes a single Working Time Type","description":"Deletes a single Working Time Type based on its id.","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"204":{"description":"Empty response indicating that delete was successful"},"403":{"description":"not allowed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/holiday-calendars":{"get":{"operationId":"fetchHolidayCalendars","tags":["Holiday Calendar"],"summary":"fetches Holiday Calendars","description":"List all Holiday Calendars the authenticated user/authtoken has access to.The number of entries returned is capped by the page size limit. This end point uses cursor pagination. If more entries would be found for a given query, the result envelope contains a 'next_page_token' field with a token that can be used to fetch the next page.","parameters":[{"name":"page_token","in":"query","description":"Token for retrieving the next page. This token is provided in the response of the previous page as next_page_token","required":false,"schema":{"type":"string"}},{"name":"limit","in":"query","description":"pass a value to change the maximum number of entries returned in a single page (at max 500).","required":false,"schema":{"minimum":1,"default":20,"type":"integer","format":"int32"}},{"name":"sort_direction","in":"query","description":"pass a direction in which the entries returned will be sorted in","required":false,"schema":{"allOf":[{"$ref":"#/components/schemas/SortDirection"}],"default":"asc"}},{"name":"sort_by","in":"query","description":"By default sorted by:\n * Description\n * Id\n","required":false,"schema":{"allOf":[{"$ref":"#/components/schemas/HolidayCalendarsSortColumn"}],"default":"description"}}],"responses":{"200":{"description":"search results matching criteria","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HolidayCalendarsPage"}}},"headers":{"Link":{"schema":{"type":"string","format":"uri"},"description":"link to the next page including filter parameters and page token"}},"links":{"GetHolidayCalendarsNextPage":{"operationId":"fetchHolidayCalendars","parameters":{"page_token":"$response.body#/next_page_token"}}}},"403":{"description":"not allowed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/holiday-calendars/{id}":{"get":{"operationId":"getHolidayCalendar","tags":["Holiday Calendar"],"summary":"gets a single Holiday Calendar","description":"Retrieves a single Holiday Calendar based on its id.","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"search results matching criteria","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HolidayCalendarPartial"}}}},"403":{"description":"not allowed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/holiday-calendars/{id}/holidays":{"get":{"operationId":"fetchHolidays","tags":["Holiday Calendar"],"summary":"fetches all Holidays of a specific Holiday Calendar","description":"Retrieves a all Holidays of one Holiday Calendar specified by its id. The number of entries returned is capped by the page size limit. This end point uses cursor pagination. If more entries would be found for a given query, the result envelope contains a 'next_page_token' field with a token that can be used to fetch the next page.","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"page_token","in":"query","description":"Token for retrieving the next page. This token is provided in the response of the previous page as next_page_token","required":false,"schema":{"type":"string"}},{"name":"limit","in":"query","description":"pass a value to change the maximum number of entries returned in a single page (at max 500).","required":false,"schema":{"minimum":1,"default":20,"type":"integer","format":"int32"}},{"name":"sort_direction","in":"query","description":"pass a direction in which the entries returned will be sorted in","required":false,"schema":{"allOf":[{"$ref":"#/components/schemas/SortDirection"}],"default":"asc"}},{"name":"sort_by","in":"query","description":"By default sorted by:\n * Description\n * Id\n","required":false,"schema":{"allOf":[{"$ref":"#/components/schemas/HolidaysSortColumn"}],"default":"date"}}],"responses":{"200":{"description":"search results matching criteria","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HolidaysPage"}}},"headers":{"Link":{"schema":{"type":"string","format":"uri"},"description":"link to the next page including filter parameters and page token"}},"links":{"GetHolidaysNextPage":{"operationId":"fetchHolidays","parameters":{"page_token":"$response.body#/next_page_token"}}}},"403":{"description":"not allowed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}}},"components":{"securitySchemes":{"BearerAuthentication":{"type":"http","description":"","scheme":"bearer","bearerFormat":"uuid"}},"schemas":{"Error":{"type":"object","properties":{"code":{"type":"string","example":"E0307","nullable":true},"message":{"type":"string","example":"Concrete error message","nullable":true}},"required":["code","message"]},"Duration":{"type":"object","properties":{"type":{"nullable":false,"allOf":[{"$ref":"#/components/schemas/DurationType"}]},"minutes":{"type":"integer","format":"int64","example":42,"description":"Net minutes of the recording. In case of type 'half_day' or 'full_day' these get calculated automatically, based on WorkTimeSchedule configured for User\n"},"minutes_rounded":{"type":"integer","format":"int64","readOnly":true,"example":45,"description":"Net minutes rounded to the default setting configured. In case of type 'half_day' or 'full_day' these get calculated automatically, based on WorkTimeSchedule configured for User\n"}},"required":["type","minutes","minutes_rounded"]},"DurationType":{"type":"string","enum":["minutes","full_day","half_day"]},"DateTime":{"type":"string","description":"RFC 3339 date-time (ISO-8601)","format":"date-time","example":"2021-07-16T09:20:00+01:00"},"LocalDate":{"type":"string","description":"RFC 3339 date (ISO-8601)","format":"date","example":"2021-07-16"},"LocalTime":{"type":"string","description":"time of day (ISO-8601)","format":"time","example":"15:20"},"BreakTime":{"type":"object","oneOf":[{"$ref":"#/components/schemas/BreakTimeManual"},{"$ref":"#/components/schemas/BreakTimeOngoing"},{"$ref":"#/components/schemas/BreakTimeAutomatic"}],"discriminator":{"propertyName":"type","mapping":{"manual":"#/components/schemas/BreakTimeManual","ongoing":"#/components/schemas/BreakTimeOngoing","automatic":"#/components/schemas/BreakTimeAutomatic"}},"required":["type"]},"BreakTimeUpdate":{"type":"object","example":"{\n  \"type\" : \"manual\",\n  \"duration_minutes\" : 50 \n}\n","discriminator":{"propertyName":"type","mapping":{"manual":"#/components/schemas/BreakTimeManual","ongoing":"#/components/schemas/BreakTimeOngoing"}},"required":["type"],"oneOf":[{"$ref":"#/components/schemas/BreakTimeManual"},{"$ref":"#/components/schemas/BreakTimeOngoing"}]},"BreakTimeManual":{"type":"object","example":"{\n  \"type\": \"manual\",\n  \"duration_minutes\": 20,\n  \"start\": null,\n  \"end\": null\n}\n","properties":{"type":{"type":"string"},"duration_minutes":{"type":"integer","format":"int32","example":20,"description":"Duration of break in minutes. Please make sure it matches the duration between 'start' and 'end' if the properties are also given."},"start":{"nullable":true,"example":"2021-07-16T09:30:00+01:00","description":"start and end are optional. To avoid discrepancies in the duration given in duration_minutes and the time between start and end the preferable way is to only provide duration_minutes.","allOf":[{"$ref":"#/components/schemas/DateTime"}]},"end":{"nullable":true,"example":"2021-07-16T09:40:00+01:00","description":"start and end are optional. To avoid discrepancies in the duration given in duration_minutes and the time between start and end the preferable way is to only provide duration_minutes.","allOf":[{"$ref":"#/components/schemas/DateTime"}]}},"required":["type","duration_minutes"]},"BreakTimeOngoing":{"type":"object","example":"{\n  \"type\": \"ongoing\",\n  \"start\": \"2021-07-16T17:50:00+01:00\"\n}\n","properties":{"type":{"type":"string"},"start":{"$ref":"#/components/schemas/DateTime"}},"required":["type","start"]},"BreakTimeAutomatic":{"type":"object","example":"{\n  \"type\": \"automatic\",\n  \"duration_minutes\": 60,\n  \"start\": \"2021-07-16T15:50:00+01:00\"\n  \"end\": \"2021-07-16T16:50:00+01:00\"\n}\n","readOnly":true,"properties":{"type":{"type":"string"},"duration_minutes":{"type":"integer","format":"int32","example":15,"description":"Duration of break in minutes"},"start":{"nullable":true,"allOf":[{"$ref":"#/components/schemas/DateTime"}]},"end":{"nullable":true,"allOf":[{"$ref":"#/components/schemas/DateTime"}]}},"required":["type","duration_minutes","start","end"]},"BreakTimeType":{"type":"string","enum":["manual","ongoing","automatic"]},"UserPartial":{"type":"object","properties":{"id":{"type":"string"},"firstname":{"type":"string","nullable":true},"lastname":{"type":"string","nullable":true},"fullname":{"type":"string","nullable":true},"email":{"type":"string","nullable":true,"format":"email","example":"user@example.com","description":"Email address must be either valid or null.","minLength":1},"employee_number":{"type":"string","nullable":true},"external_id":{"type":"string","nullable":true}},"required":["id","firstname","lastname","fullname","email","employee_number","external_id"]},"User":{"allOf":[{"$ref":"#/components/schemas/UserPartial"},{"type":"object","properties":{"login":{"type":"string","pattern":"^[A-Za-z0-9!#$%&'*+/=@\\.?^_`{|}~-]*$","x-pattern-message":"login may only contain alphanumeric characters, dashes, dots or @ symbols"},"entry_date":{"allOf":[{"$ref":"#/components/schemas/LocalDate"}],"nullable":true},"resign_date":{"allOf":[{"$ref":"#/components/schemas/LocalDate"}],"nullable":true},"work_schedule_model":{"allOf":[{"$ref":"#/components/schemas/WorkScheduleModelPartial"}],"nullable":true},"holiday_calendar":{"$ref":"#/components/schemas/HolidayCalendarPartial"},"metadata":{"type":"object","nullable":true,"additionalProperties":true}}}]},"UsersPage":{"allOf":[{"$ref":"#/components/schemas/PagingInformation"},{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/User"}}},"required":["data"]}]},"UsersPartialPage":{"allOf":[{"$ref":"#/components/schemas/PagingInformation"},{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/UserPartial"}}},"required":["data"]}]},"UsersSortColumn":{"type":"string","enum":["name"]},"UserUpdate":{"type":"object","properties":{"login":{"type":"string","pattern":"^[A-Za-z0-9!#$%&'*+/=@\\.?^_`{|}~-]*$","x-pattern-message":"login may only contain alphanumeric characters, dashes, dots or @ symbols","minLength":1},"firstname":{"nullable":true,"type":"string"},"lastname":{"nullable":true,"type":"string"},"email":{"nullable":true,"type":"string","format":"email","minLength":1},"entry_date":{"allOf":[{"$ref":"#/components/schemas/LocalDate"}],"nullable":true},"resign_date":{"allOf":[{"$ref":"#/components/schemas/LocalDate"}],"nullable":true},"employee_number":{"nullable":true,"type":"string"},"external_id":{"nullable":true,"type":"string"},"metadata":{"nullable":true,"type":"object","additionalProperties":true}}},"UserCreate":{"allOf":[{"$ref":"#/components/schemas/UserUpdate"},{"type":"object","properties":{"auth_provider":{"type":"string","nullable":true,"example":"azure|google"},"auth_identifier":{"type":"string","nullable":true}},"required":["login"]}]},"TeamPartial":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"breadcrumbs":{"type":"string"},"external_id":{"type":"string","nullable":true}},"required":["id","name","breadcrumbs","external_id"]},"Team":{"allOf":[{"$ref":"#/components/schemas/TeamPartial"},{"type":"object","properties":{"description":{"type":"string","nullable":true},"parent_team":{"nullable":true,"allOf":[{"$ref":"#/components/schemas/TeamPartial"}]}},"required":["description","parent_team"]}]},"TeamsPage":{"allOf":[{"$ref":"#/components/schemas/PagingInformation"},{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Team"}}},"required":["data"]}]},"TeamsPartialPage":{"allOf":[{"$ref":"#/components/schemas/PagingInformation"},{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/TeamPartial"}}},"required":["data"]}]},"TeamsSortColumn":{"type":"string","enum":["breadcrumbs","name"]},"TeamUpdate":{"type":"object","properties":{"name":{"type":"string"},"description":{"type":"string","nullable":true},"parent_team_id":{"nullable":true,"type":"string"},"external_id":{"type":"string","nullable":true}}},"TeamCreate":{"allOf":[{"$ref":"#/components/schemas/TeamUpdate"},{"type":"object","required":["name"]}]},"HolidayCalendarPartial":{"type":"object","properties":{"id":{"type":"string"},"description":{"type":"string"}},"required":["id","description"]},"HolidayCalendarsPage":{"allOf":[{"$ref":"#/components/schemas/PagingInformation"},{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/HolidayCalendarPartial"}}},"required":["data"]}]},"HolidayCalendarsSortColumn":{"type":"string","enum":["description"]},"Holiday":{"type":"object","properties":{"date":{"$ref":"#/components/schemas/LocalDate"},"description":{"type":"string"},"half_day":{"type":"boolean"}},"required":["date","description","half_day"]},"HolidaysPage":{"allOf":[{"$ref":"#/components/schemas/PagingInformation"},{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Holiday"}}},"required":["data"]}]},"HolidaysSortColumn":{"type":"string","enum":["date"]},"WorkingTimeAccounts":{"type":"object","properties":{"last_balance_date":{"nullable":true,"type":"string","format":"date","description":"date of last balance","example":"2023-03-28"},"time_account":{"nullable":true,"allOf":[{"$ref":"#/components/schemas/TimeAccount"}]},"overtime":{"nullable":true,"allOf":[{"$ref":"#/components/schemas/Overtime"}]},"allowances":{"nullable":true,"allOf":[{"$ref":"#/components/schemas/Allowances"}]}},"required":["last_balance_date"]},"TimeAccount":{"type":"object","properties":{"balance_last_period_minutes":{"type":"integer","format":"int32","nullable":true},"duration_actual_minutes":{"type":"integer","format":"int32","description":"sum of durations in current period","nullable":true},"duration_target_minutes":{"type":"integer","format":"int32","description":"target duration in current period","nullable":true},"balance_current_period_minutes":{"type":"integer","format":"int32","description":"difference between target duration and actual duration","nullable":true},"balance_total_minutes":{"type":"integer","format":"int32","description":"total duration until balancing date","nullable":true},"work_from_home_days_full":{"type":"integer","format":"int32","description":"complete days worked from home in current period","nullable":true},"work_from_home_days_partial":{"type":"integer","format":"int32","description":"partial days worked from home in current period","nullable":true},"flex_time_indicator":{"nullable":true,"allOf":[{"$ref":"#/components/schemas/FlexTimeIndicator"}]}},"required":["balance_last_period_minutes","duration_actual_minutes","duration_target_minutes","balance_current_period_minutes","balance_total_minutes","work_from_home_days_full","work_from_home_days_partial"]},"Overtime":{"type":"object","properties":{"balance_last_period_minutes":{"type":"integer","format":"int32","nullable":true},"balance_current_period_minutes":{"type":"integer","format":"int32","nullable":true},"balance_total_minutes":{"type":"integer","format":"int32","nullable":true}},"required":["balance_last_period_minutes","balance_current_period_minutes","balance_total_minutes"]},"Allowances":{"type":"object","properties":{"balance_last_period_minutes":{"type":"integer","format":"int32","nullable":true},"balance_current_period_minutes":{"type":"integer","format":"int32","nullable":true},"balance_total_minutes":{"type":"integer","format":"int32","nullable":true}},"required":["balance_last_period_minutes","balance_current_period_minutes","balance_total_minutes"]},"FlexTimeIndicator":{"type":"string","enum":["green","yellow","red"],"readOnly":true},"WorkScheduleModelPartial":{"type":"object","properties":{"id":{"type":"string","nullable":false},"name":{"type":"string","nullable":false,"example":"full-time"}},"required":["id","name"]},"WorkScheduleModel":{"allOf":[{"$ref":"#/components/schemas/WorkScheduleModelPartial"},{"type":"object","properties":{"id":{"type":"string","nullable":false},"name":{"type":"string","nullable":false,"example":"full-time"},"type":{"nullable":false,"allOf":[{"$ref":"#/components/schemas/WorkScheduleModelType"}]},"target_duration_weekly_minutes":{"type":"integer","format":"int64","example":2400,"description":"value in minutes"},"monday":{"$ref":"#/components/schemas/DailyWorkSchedule"},"tuesday":{"$ref":"#/components/schemas/DailyWorkSchedule"},"wednesday":{"$ref":"#/components/schemas/DailyWorkSchedule"},"thursday":{"$ref":"#/components/schemas/DailyWorkSchedule"},"friday":{"$ref":"#/components/schemas/DailyWorkSchedule"},"saturday":{"$ref":"#/components/schemas/DailyWorkSchedule"},"sunday":{"$ref":"#/components/schemas/DailyWorkSchedule"},"working_time_rules":{"nullable":true,"allOf":[{"$ref":"#/components/schemas/WorkingTimeRules"}]}},"required":["type","target_duration_weekly_minutes","monday","tuesday","wednesday","thursday","friday","saturday","sunday","working_time_rules"]}]},"WorkScheduleModelsPage":{"allOf":[{"$ref":"#/components/schemas/PagingInformation"},{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/WorkScheduleModel"}}},"required":["data"]}]},"WorkScheduleModelSortColumn":{"type":"string","enum":["name"]},"Location":{"type":"object","properties":{"lat":{"type":"number","format":"float","example":48.2455964},"lon":{"type":"number","format":"float","example":13.0543811},"timestamp":{"nullable":true,"allOf":[{"$ref":"#/components/schemas/DateTime"}]},"formatted_address":{"type":"string","nullable":true,"example":"Salzburger Straße 2, 5280 Braunau am Inn"}},"required":["lat","lon"]},"Platform":{"type":"string","enum":["timr_web","timr_mobile","tour_mobile","timr_terminal","sync_api","timr_api"],"readOnly":true},"WorkingTimeStatus":{"type":"string","example":"changeable","enum":["running","paused","changeable","locked","approved","closed","archived"]},"WorkScheduleModelType":{"type":"string","example":"daily_target_hours","enum":["daily_target_hours","normal_working_time"]},"DailyWorkSchedule":{"type":"object","properties":{"target_duration_minutes":{"type":"integer","format":"int64","example":480,"description":"value in minutes"},"normal_working_times":{"type":"array","description":"this property is always set, when the WorkScheduleModel is of type normal_working_time, in contrast when the WorkScheduleModel is of type daily_target_hours it is not set","items":{"allOf":[{"$ref":"#/components/schemas/NormalWorkingTimes"}]}}},"required":["target_duration_minutes"]},"NormalWorkingTimes":{"type":"object","properties":{"start":{"type":"string","format":"time","nullable":true},"end":{"type":"string","format":"time","nullable":true}}},"WorkingTimeRules":{"type":"object","properties":{"id":{"type":"string","example":"074e7048-9097-11eb-a8b3-0242ac130003"},"name":{"type":"string"}},"required":["id","name"]},"WorkingTime":{"type":"object","properties":{"id":{"type":"string","example":"074e7048-9097-11eb-a8b3-0242ac130003"},"start":{"$ref":"#/components/schemas/DateTime"},"end":{"nullable":true,"allOf":[{"$ref":"#/components/schemas/DateTime"}]},"break_time_total_minutes":{"type":"integer","format":"int32","description":"Total break time in minutes","readOnly":true},"break_times":{"type":"array","example":"[\n    {\n      \"type\": \"manual\",\n      \"duration_minutes\": 20,\n      \"start\": null,\n      \"end\": null\n    },\n    {\n        \"type\": \"automatic\",\n        \"duration_minutes\": 30,\n        \"start\": \"2021-07-16T13:15:00+02:00\",\n        \"end\": \"2021-07-16T13:45:00+02:00\"\n    }\n]\n","items":{"$ref":"#/components/schemas/BreakTime"}},"duration":{"nullable":true,"allOf":[{"$ref":"#/components/schemas/Duration"}]},"changed":{"type":"boolean"},"notes":{"nullable":true,"type":"string"},"user":{"$ref":"#/components/schemas/UserPartial"},"working_time_type":{"$ref":"#/components/schemas/WorkingTimeTypePartial"},"working_time_date_span":{"nullable":true,"allOf":[{"$ref":"#/components/schemas/WorkingTimeDateSpanPartial"}]},"working_time_request":{"nullable":true,"allOf":[{"$ref":"#/components/schemas/WorkingTimeRequestPartial"}]},"start_location":{"nullable":true,"allOf":[{"$ref":"#/components/schemas/Location"}]},"end_location":{"nullable":true,"allOf":[{"$ref":"#/components/schemas/Location"}]},"start_platform":{"nullable":true,"allOf":[{"$ref":"#/components/schemas/Platform"}]},"end_platform":{"nullable":true,"allOf":[{"$ref":"#/components/schemas/Platform"}]},"last_modified":{"readOnly":true,"allOf":[{"$ref":"#/components/schemas/DateTime"}]},"last_modified_by":{"readOnly":true,"nullable":true,"allOf":[{"$ref":"#/components/schemas/UserPartial"}]},"status":{"$ref":"#/components/schemas/WorkingTimeStatus"},"metadata":{"type":"object","nullable":true,"additionalProperties":true}},"required":["id","start","end","break_time_total_minutes","break_times","duration","changed","notes","user","working_time_type","working_time_date_span","working_time_request","start_location","end_location","start_platform","end_platform","last_modified","last_modified_by","status"]},"WorkingTimesPage":{"allOf":[{"$ref":"#/components/schemas/PagingInformation"},{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/WorkingTime"}}},"required":["data"]}]},"WorkingTimesSortColumn":{"type":"string","enum":["start","last_modified"]},"WorkingTimeUpdate":{"type":"object","properties":{"start":{"$ref":"#/components/schemas/DateTime"},"end":{"nullable":true,"example":"2021-07-16T10:02:00+01:00","allOf":[{"$ref":"#/components/schemas/DateTime"}]},"break_times":{"type":"array","items":{"$ref":"#/components/schemas/BreakTimeUpdate"}},"duration_type":{"nullable":true,"description":"Must be specified for WorkingTimeTypes with `edit_unit` `days` or `half_days` only","allOf":[{"$ref":"#/components/schemas/DurationType"}]},"changed":{"type":"boolean"},"notes":{"type":"string","nullable":true},"working_time_type_id":{"type":"string"},"start_location":{"nullable":true,"allOf":[{"$ref":"#/components/schemas/Location"}]},"end_location":{"nullable":true,"example":null,"allOf":[{"$ref":"#/components/schemas/Location"}]},"status":{"$ref":"#/components/schemas/WorkingTimeStatus"},"metadata":{"type":"object","nullable":true,"additionalProperties":true}}},"WorkingTimeCreate":{"allOf":[{"type":"object","properties":{"user_id":{"type":"string"}},"required":["start","changed","user_id","working_time_type_id","status"]},{"$ref":"#/components/schemas/WorkingTimeUpdate"}]},"DeletedEntryWithMetadata":{"allOf":[{"$ref":"#/components/schemas/DeletedEntryPartial"},{"type":"object","properties":{"metadata":{"type":"object","nullable":true,"additionalProperties":true}}}]},"DeletedEntryWithMetadataPage":{"allOf":[{"$ref":"#/components/schemas/PagingInformation"},{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/DeletedEntryWithMetadata"}}},"required":["data"]}]},"DeletedEntryWithMetadataSortColumn":{"type":"string","enum":["last_modified"]},"ProjectTimeStatus":{"type":"string","example":"changeable","enum":["running","paused","changeable","locked","approved","cleared","closed","archived"]},"TaskPartial":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"breadcrumbs":{"type":"string"},"external_id":{"type":"string","nullable":true}},"required":["id","name","breadcrumbs","external_id"]},"Task":{"allOf":[{"$ref":"#/components/schemas/TaskPartial"},{"type":"object","properties":{"parent_task":{"nullable":true,"allOf":[{"$ref":"#/components/schemas/TaskPartial"}]},"description":{"type":"string","nullable":true},"description_external":{"type":"string","nullable":true},"bookable":{"type":"boolean"},"billable":{"type":"boolean"},"project_time_notes_required":{"type":"boolean"},"start_date":{"nullable":true,"allOf":[{"$ref":"#/components/schemas/LocalDate"}]},"end_date":{"nullable":true,"allOf":[{"$ref":"#/components/schemas/LocalDate"}]},"lock_date":{"nullable":true,"allOf":[{"$ref":"#/components/schemas/LocalDate"}]},"earliest_start_time":{"nullable":true,"allOf":[{"$ref":"#/components/schemas/LocalTime"}]},"latest_end_time":{"nullable":true,"allOf":[{"$ref":"#/components/schemas/LocalTime"}]},"active_from":{"nullable":true,"allOf":[{"$ref":"#/components/schemas/LocalDate"}]},"active_to":{"nullable":true,"allOf":[{"$ref":"#/components/schemas/LocalDate"}]},"budget_inherited":{"type":"boolean"},"budget_planning_type":{"$ref":"#/components/schemas/BudgetPlanningType"},"budget_hours_planned":{"type":"number","nullable":true},"budget_hourly_rate":{"type":"number","nullable":true},"budget_planned":{"type":"number","nullable":true},"budget_include_non_billable_project_times":{"type":"boolean"},"location_inherited":{"type":"boolean"},"location":{"nullable":true,"allOf":[{"$ref":"#/components/schemas/TaskLocation"}]},"location_restriction_radius_meters":{"type":"integer","format":"int32","nullable":true},"custom_field_1":{"type":"string","nullable":true},"custom_field_2":{"type":"string","nullable":true},"custom_field_3":{"type":"string","nullable":true},"metadata":{"type":"object","nullable":true,"additionalProperties":true}},"required":["parent_task","description","description_external","bookable","billable","project_time_notes_required","start_date","end_date","earliest_start_time","latest_end_time","active_from","active_to","custom_field_1","custom_field_2","custom_field_3"]}]},"TaskReduced":{"allOf":[{"$ref":"#/components/schemas/TaskPartial"},{"type":"object","properties":{"parent_task":{"nullable":true,"allOf":[{"$ref":"#/components/schemas/TaskPartial"}]},"description":{"type":"string","nullable":true},"bookable":{"type":"boolean"},"billable":{"type":"boolean"},"project_time_notes_required":{"type":"boolean"},"lock_date":{"nullable":true,"allOf":[{"$ref":"#/components/schemas/LocalDate"}]},"earliest_start_time":{"nullable":true,"allOf":[{"$ref":"#/components/schemas/LocalTime"}]},"latest_end_time":{"nullable":true,"allOf":[{"$ref":"#/components/schemas/LocalTime"}]},"active_from":{"nullable":true,"allOf":[{"$ref":"#/components/schemas/LocalDate"}]},"active_to":{"nullable":true,"allOf":[{"$ref":"#/components/schemas/LocalDate"}]},"budget_planning_type":{"$ref":"#/components/schemas/BudgetPlanningType"},"location_inherited":{"type":"boolean"},"location":{"nullable":true,"allOf":[{"$ref":"#/components/schemas/TaskLocation"}]},"location_restriction_radius_meters":{"type":"integer","format":"int32","nullable":true},"custom_field_1":{"type":"string","nullable":true},"custom_field_2":{"type":"string","nullable":true},"custom_field_3":{"type":"string","nullable":true}},"required":["parent_task","description","bookable","billable","project_time_notes_required","earliest_start_time","latest_end_time","active_from","active_to","custom_field_1","custom_field_2","custom_field_3"]}]},"TasksPage":{"allOf":[{"$ref":"#/components/schemas/PagingInformation"},{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Task"}}},"required":["data"]}]},"TasksReducedPage":{"allOf":[{"$ref":"#/components/schemas/PagingInformation"},{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/TaskReduced"}}},"required":["data"]}]},"TaskCreate":{"allOf":[{"$ref":"#/components/schemas/TaskBase"},{"type":"object","required":["name","bookable","billable"]}]},"TaskUpdate":{"allOf":[{"$ref":"#/components/schemas/TaskBase"},{"type":"object","properties":{"budget_update_project_times":{"type":"boolean","description":"this property is used to decide whether existing project times that have been booked to this task should be updated with the changed budget.  If budget_planning type or budget_hourly_rate are set, this property must also be set.   Based on this, the budgets of the existing project times are then recalculated or not.\n"}}}]},"TaskBase":{"type":"object","properties":{"name":{"type":"string","nullable":false},"parent_task_id":{"type":"string","description":"returns the id of the immediate parent task if the task has one. Use this id when creating or a updating a task in order to locate it at the right place in your task tree.","nullable":true},"external_id":{"type":"string","nullable":true},"description":{"type":"string","nullable":true},"description_external":{"type":"string","nullable":true},"bookable":{"type":"boolean","description":"when a task is not bookable, no project times can be booked on it. You need to define child tasks, to book on tasks related to this task."},"billable":{"type":"boolean"},"project_time_notes_required":{"type":"boolean","description":"depending on this property project times booked on this task have to include notes or not"},"start_date":{"nullable":true,"description":"the task is only available for selection after start_date, however, it can change if a lock_date is set and this is after the start_date. Furthermore, no booking of a project time with date < start or > end is possible.","allOf":[{"$ref":"#/components/schemas/LocalDate"}]},"end_date":{"nullable":true,"description":"the task is only available for selection before end_date, however, it can change if a lock_date is set and this is before the end_date. Furthermore, no booking of a project time with date < start or > end is possible.","allOf":[{"$ref":"#/components/schemas/LocalDate"}]},"lock_date":{"nullable":true,"description":"with lock_date property you define a point in time before which existing entries can no longer be changed. This way you ensure that\n\n  * existing entries cannot be changed or deleted\n  * no entries can be added later\n","allOf":[{"$ref":"#/components/schemas/LocalDate"}]},"earliest_start_time":{"nullable":true,"description":"set this property to limit the task so that it cannot be booked before this time","allOf":[{"$ref":"#/components/schemas/LocalTime"}]},"latest_end_time":{"nullable":true,"description":"set this property to limit the task so that it cannot be booked after this time","allOf":[{"$ref":"#/components/schemas/LocalTime"}]},"budget_inherited":{"type":"boolean","description":"when budget is inherited from parent you cannot set it manually. Set this property to false, if you want to change anything in the tasks budget settings"},"budget_planning_type":{"description":"when no budget is planned, either don't set this property (on create) or set it to NONE","allOf":[{"$ref":"#/components/schemas/BudgetPlanningType"}]},"budget_hours_planned":{"type":"number","nullable":true,"description":"how many hours were planned in the calculation\nset budget_hours_planned to make timr calculate budget_planned depending on its budget_planning_type:\n  * task_hourly_rate: out of budget_hourly_rate and budget_planned\n  * user_hourly_rate: out of fixed hours budget (employee budget) and budget_hours_planned\n  * fixed_price: out of budget_hourly_rate and budget_planned\n"},"budget_hourly_rate":{"type":"number","nullable":true,"description":"depending on its budget_planning_type this property may or may not be set:\n  * **task_hourly_rate: this property is necessary to calculate budgets, by default it will be set to 0.00**\n  * **user_hourly_rate: this property cannot be set**\n  * fixed_price: you can set this property if you want to make timr calculate budget_hours_planned or budget_planned based on its value\n"},"budget_planned":{"type":"number","nullable":true,"description":"the price at which the task was sold\nset budget_planned to make timr calculate the budget_hours_planned depending on its budget_planning_type:\n  * task_hourly_rate: out of budget_hourly_rate and budget_planned\n  * user_hourly_rate: out of fixed hours budget (employee budget) and budget_planned\n  * fixed_price: out of budget_hourly_rate and budget_planned\n"},"budget_include_non_billable_project_times":{"type":"boolean","default":false,"description":"set this property to true, if you want to include not billable hours for all project times booked on this task"},"location_inherited":{"type":"boolean","default":true,"description":"set this property to false if you want to set a child task's location explicitly instead of inheriting it from its parent"},"location":{"nullable":true,"allOf":[{"$ref":"#/components/schemas/TaskLocation"}]},"location_restriction_radius_meters":{"type":"integer","format":"int32","nullable":true,"description":"set this property to make recording of project times for this task via the app on the smartphone only possible within this defined geofence radius"},"custom_field_1":{"type":"string","nullable":true,"description":"you can configure custom fields for tasks in the settings of timr under Administration/Settings/Tasks. To add a new custom field, simply choose a name for the field."},"custom_field_2":{"type":"string","nullable":true,"description":"you can configure custom fields for tasks in the settings of timr under Administration/Settings/Tasks. To add a new custom field, simply choose a name for the field."},"custom_field_3":{"type":"string","nullable":true,"description":"you can configure custom fields for tasks in the settings of timr under Administration/Settings/Tasks. To add a new custom field, simply choose a name for the field."},"metadata":{"type":"object","nullable":true,"additionalProperties":true}}},"TaskLocation":{"type":"object","description":"You can define the location of a task by setting this property. If the task has a parent task, the location is inherited if nothing else is explicitly defined. If you set this property to null, the location will be deleted.\n","properties":{"lat":{"type":"number","format":"float","nullable":true},"lon":{"type":"number","format":"float","nullable":true},"address":{"type":"string","nullable":true},"city":{"type":"string","nullable":true},"zip_code":{"type":"string","nullable":true},"state":{"type":"string","nullable":true},"country":{"type":"string","nullable":true,"description":"the country's international country code","example":"AT, DE, ES"}},"required":["lat","lon","address","city","zip_code","state","country"]},"TasksSortColumn":{"type":"string","enum":["breadcrumbs","name"]},"TaskToUserAssignment":{"type":"object","properties":{"user":{"$ref":"#/components/schemas/UserPartial"},"hours_planned":{"type":"number","nullable":true},"recording_lock":{"$ref":"#/components/schemas/RecordingLockType"},"automatically_assigned":{"type":"boolean"}},"required":["user","recording_lock","automatically_assigned"]},"TaskToUserAssignmentsPage":{"allOf":[{"$ref":"#/components/schemas/PagingInformation"},{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/TaskToUserAssignment"}}},"required":["data"]}]},"TaskToUserAssignmentCreateAndUpdate":{"type":"object","properties":{"hours_planned":{"type":"number","nullable":true},"recording_lock":{"nullable":true,"allOf":[{"$ref":"#/components/schemas/RecordingLockType"}]}}},"TaskToUserAssignmentsSortColumn":{"type":"string","enum":["user_name"]},"RecordingLockType":{"type":"string","enum":["recordable","locked_automatically","locked_manually","unlocked_manually"]},"BudgetPlanningType":{"type":"string","description":"corresponding to the chosen planning type some properties cannot be set:\n  * none: no further budget properties can be set\n  * user_hourly_rate: budget_hourly_rate cannot be set\n\nfor the remaining two types all budget properties are supported\n","enum":["none","task_hourly_rate","user_hourly_rate","fixed_price"]},"TaskToLeaderAssignment":{"type":"object","properties":{"user":{"$ref":"#/components/schemas/UserPartial"},"automatically_assigned":{"type":"boolean"}},"required":["user","automatically_assigned"]},"TaskToLeaderAssignmentsPage":{"allOf":[{"$ref":"#/components/schemas/PagingInformation"},{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/TaskToLeaderAssignment"}}},"required":["data"]}]},"TaskToLeaderAssignmentsSortColumn":{"type":"string","enum":["user_name"]},"TaskToTeamAssignment":{"type":"object","properties":{"team":{"$ref":"#/components/schemas/TeamPartial"},"automatically_assigned":{"type":"boolean"}},"required":["team","automatically_assigned"]},"TaskToTeamAssignmentsPage":{"allOf":[{"$ref":"#/components/schemas/PagingInformation"},{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/TaskToTeamAssignment"}}},"required":["data"]}]},"TaskToTeamAssignmentsSortColumn":{"type":"string","enum":["team_name"]},"ProjectTime":{"type":"object","properties":{"id":{"type":"string","example":"074e7048-9097-11eb-a8b3-0242ac130003"},"start":{"$ref":"#/components/schemas/DateTime"},"end":{"nullable":true,"allOf":[{"$ref":"#/components/schemas/DateTime"}]},"break_time_total_minutes":{"type":"integer","format":"int32","description":"Total break time in minutes","readOnly":true},"break_times":{"type":"array","items":{"$ref":"#/components/schemas/BreakTime"}},"duration":{"nullable":true,"allOf":[{"$ref":"#/components/schemas/Duration"}]},"changed":{"type":"boolean"},"notes":{"nullable":true,"type":"string"},"user":{"$ref":"#/components/schemas/UserPartial"},"task":{"$ref":"#/components/schemas/TaskPartial"},"billable":{"type":"boolean"},"start_location":{"nullable":true,"allOf":[{"$ref":"#/components/schemas/Location"}]},"end_location":{"nullable":true,"allOf":[{"$ref":"#/components/schemas/Location"}]},"start_platform":{"$ref":"#/components/schemas/Platform"},"end_platform":{"nullable":true,"allOf":[{"$ref":"#/components/schemas/Platform"}]},"last_modified":{"readOnly":true,"allOf":[{"$ref":"#/components/schemas/DateTime"}]},"last_modified_by":{"readOnly":true,"nullable":true,"allOf":[{"$ref":"#/components/schemas/UserPartial"}]},"status":{"$ref":"#/components/schemas/ProjectTimeStatus"},"metadata":{"type":"object","nullable":true,"additionalProperties":true}},"required":["id","start","end","break_time_total_minutes","break_times","duration","changed","notes","user","task","billable","start_location","end_location","start_platform","end_platform","last_modified","last_modified_by","status"]},"ProjectTimesPage":{"allOf":[{"$ref":"#/components/schemas/PagingInformation"},{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/ProjectTime"}}},"required":["data"]}]},"ProjectTimesSortColumn":{"type":"string","enum":["start","last_modified"]},"ProjectTimeUpdate":{"type":"object","properties":{"start":{"$ref":"#/components/schemas/DateTime"},"end":{"nullable":true,"allOf":[{"$ref":"#/components/schemas/DateTime"}]},"break_times":{"type":"array","items":{"$ref":"#/components/schemas/BreakTimeUpdate"}},"changed":{"type":"boolean"},"notes":{"type":"string","nullable":true},"task_id":{"type":"string"},"billable":{"type":"boolean"},"start_location":{"nullable":true,"allOf":[{"$ref":"#/components/schemas/Location"}]},"end_location":{"nullable":true,"allOf":[{"$ref":"#/components/schemas/Location"}]},"status":{"$ref":"#/components/schemas/ProjectTimeStatus"},"metadata":{"type":"object","nullable":true,"additionalProperties":true}}},"ProjectTimeCreate":{"allOf":[{"type":"object","properties":{"user_id":{"type":"string"}},"required":["start","changed","user_id","task_id","status"]},{"$ref":"#/components/schemas/ProjectTimeUpdate"}]},"DriveLog":{"type":"object","properties":{"id":{"type":"string","example":"074e7048-9097-11eb-a8b3-0242ac130003"},"start":{"$ref":"#/components/schemas/DateTime"},"end":{"nullable":true,"allOf":[{"$ref":"#/components/schemas/DateTime"}]},"duration":{"nullable":true,"allOf":[{"$ref":"#/components/schemas/Duration"}]},"changed":{"type":"boolean"},"start_mileage":{"type":"integer","format":"int64","example":42},"end_mileage":{"nullable":true,"type":"integer","format":"int64","example":42},"distance":{"nullable":true,"type":"integer","format":"int64","example":42,"description":"Driven distance in kilometers"},"route":{"type":"string","nullable":true},"purpose":{"type":"string","nullable":true},"visited":{"type":"string","nullable":true},"user":{"$ref":"#/components/schemas/UserPartial"},"car":{"$ref":"#/components/schemas/CarPartial"},"drive_log_category":{"$ref":"#/components/schemas/DriveLogCategoryPartial"},"start_venue":{"nullable":true,"allOf":[{"$ref":"#/components/schemas/VenuePartial"}]},"end_venue":{"nullable":true,"allOf":[{"$ref":"#/components/schemas/VenuePartial"}]},"has_track":{"type":"boolean"},"start_location":{"nullable":true,"allOf":[{"$ref":"#/components/schemas/Location"}]},"end_location":{"nullable":true,"allOf":[{"$ref":"#/components/schemas/Location"}]},"start_platform":{"$ref":"#/components/schemas/Platform"},"end_platform":{"nullable":true,"allOf":[{"$ref":"#/components/schemas/Platform"}]},"last_modified":{"readOnly":true,"allOf":[{"$ref":"#/components/schemas/DateTime"}]},"last_modified_by":{"readOnly":true,"nullable":true,"allOf":[{"$ref":"#/components/schemas/UserPartial"}]},"status":{"$ref":"#/components/schemas/DriveLogStatus"}},"required":["id","start","end","duration","changed","start_mileage","end_mileage","distance","route","purpose","visited","user","car","drive_log_category","start_venue","end_venue","has_track","start_location","end_location","start_platform","end_platform","last_modified","last_modified_by","status"]},"DriveLogsPage":{"allOf":[{"$ref":"#/components/schemas/PagingInformation"},{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/DriveLog"}}},"required":["data"]}]},"DriveLogsSortColumn":{"type":"string","enum":["start","last_modified"]},"DriveLogUpdate":{"type":"object","properties":{"start":{"$ref":"#/components/schemas/DateTime"},"end":{"nullable":true,"allOf":[{"$ref":"#/components/schemas/DateTime"}]},"changed":{"type":"boolean"},"start_mileage":{"type":"integer","format":"int64"},"end_mileage":{"type":"integer","format":"int64","nullable":true},"route":{"type":"string","nullable":true},"purpose":{"type":"string","nullable":true},"visited":{"type":"string","nullable":true},"drive_log_category_id":{"type":"string"},"start_location":{"nullable":true,"allOf":[{"$ref":"#/components/schemas/Location"}]},"end_location":{"nullable":true,"allOf":[{"$ref":"#/components/schemas/Location"}]},"status":{"$ref":"#/components/schemas/DriveLogStatus"}}},"DriveLogCreate":{"allOf":[{"$ref":"#/components/schemas/DriveLogUpdate"},{"type":"object","properties":{"user_id":{"type":"string"},"car_id":{"type":"string"}},"required":["start","changed","start_mileage","user_id","car_id","drive_log_category_id","status"]}]},"CarPartial":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"plate":{"type":"string"},"external_id":{"type":"string","nullable":true}},"required":["id","name","plate","external_id"]},"Car":{"allOf":[{"$ref":"#/components/schemas/CarPartial"},{"type":"object","properties":{"usable":{"type":"boolean"}}}],"required":["usable"]},"CarsPage":{"allOf":[{"$ref":"#/components/schemas/PagingInformation"},{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Car"}}},"required":["data"]}]},"CarsSortColumn":{"type":"string","enum":["name"]},"DriveLogCategoryPartial":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"business":{"type":"boolean"},"color":{"type":"string","nullable":false}},"required":["id","name","color","business"]},"DriveLogCategory":{"allOf":[{"$ref":"#/components/schemas/DriveLogCategoryPartial"},{"type":"object","properties":{"last_modified":{"readOnly":true,"allOf":[{"$ref":"#/components/schemas/DateTime"}]},"last_modified_by":{"readOnly":true,"nullable":true,"allOf":[{"$ref":"#/components/schemas/UserPartial"}]}},"required":["last_modified","last_modified_by"]}]},"DriveLogCategoriesPage":{"allOf":[{"$ref":"#/components/schemas/PagingInformation"},{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/DriveLogCategory"}}},"required":["data"]}]},"DriveLogCategoriesSortColumn":{"type":"string","enum":["name"]},"VenuePartial":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"city":{"type":"string"},"zip_code":{"type":"string"},"street":{"type":"string"},"street_number":{"type":"string"},"country":{"type":"string"},"lat":{"type":"number","format":"float","example":48.2455964},"lon":{"type":"number","format":"float","example":13.0543811}},"required":["id","name","city","zip_code","street","street_number","country"]},"Track":{"type":"array","items":{"$ref":"#/components/schemas/Waypoint"}},"Waypoint":{"type":"object","properties":{"lat":{"type":"number","format":"double"},"lon":{"type":"number","format":"double"}},"required":["lat","lon"]},"DriveLogStatus":{"type":"string","enum":["changeable","locked","approved","cleared","closed","archived","running"]},"WorkingTimeRequestStatus":{"type":"string","enum":["approval_requested","in_approval","approved","rejected","cancellation_requested","in_cancellation","cancelled"]},"WorkingTimeRequestPartial":{"type":"object","properties":{"id":{"type":"string"}},"required":["id"],"description":"References a request if the working time is part of one.  A working time can either be part of a working time request or a working time date span, never both.\n"},"WorkingTimeRequest":{"type":"object","properties":{"id":{"type":"string"},"start":{"$ref":"#/components/schemas/LocalDate"},"start_half_day":{"type":"boolean"},"end":{"$ref":"#/components/schemas/LocalDate"},"end_half_day":{"type":"boolean"},"notes":{"type":"string","nullable":true},"user":{"$ref":"#/components/schemas/UserPartial"},"working_time_type":{"$ref":"#/components/schemas/WorkingTimeTypePartial"},"substitute":{"nullable":true,"allOf":[{"$ref":"#/components/schemas/UserPartial"}]},"created":{"$ref":"#/components/schemas/DateTime"},"last_modified":{"$ref":"#/components/schemas/DateTime"},"last_modified_by":{"readOnly":true,"nullable":true,"allOf":[{"$ref":"#/components/schemas/UserPartial"}]},"status_comment":{"type":"string"},"status":{"$ref":"#/components/schemas/WorkingTimeRequestStatus"}},"required":["id","start","start_half_day","end","end_half_day","notes","user","working_time_type","created","last_modified","last_modified_by","status_comment","status"]},"WorkingTimeRequestsPage":{"allOf":[{"$ref":"#/components/schemas/PagingInformation"},{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/WorkingTimeRequest"}}},"required":["data"]}]},"WorkingTimeRequestsSortColumn":{"type":"string","enum":["start"]},"DeletedEntryPartial":{"type":"object","properties":{"id":{"type":"string"},"last_modified":{"readOnly":true,"allOf":[{"$ref":"#/components/schemas/DateTime"}]},"last_modified_by":{"readOnly":true,"nullable":true,"allOf":[{"$ref":"#/components/schemas/UserPartial"}]}},"required":["id","last_modified","last_modified_by"]},"DeletedEntryPage":{"allOf":[{"$ref":"#/components/schemas/PagingInformation"},{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/DeletedEntryPartial"}}},"required":["data"]}]},"DeletedEntrySortColumn":{"type":"string","enum":["last_modified"]},"WorkingTimeDateSpanPartial":{"type":"object","properties":{"id":{"type":"string"}},"required":["id"],"description":"References a date span if the working time is part of one.  A working time can either be part of a working time date span or a request, never both.\n"},"WorkingTimeDateSpan":{"type":"object","properties":{"id":{"type":"string"},"start":{"$ref":"#/components/schemas/LocalDate"},"start_half_day":{"type":"boolean"},"end":{"$ref":"#/components/schemas/LocalDate"},"end_half_day":{"type":"boolean"},"notes":{"type":"string","nullable":true},"user":{"$ref":"#/components/schemas/UserPartial"},"working_time_type":{"$ref":"#/components/schemas/WorkingTimeTypePartial"},"substitute":{"nullable":true,"allOf":[{"$ref":"#/components/schemas/UserPartial"}]},"last_modified":{"$ref":"#/components/schemas/DateTime"},"last_modified_by":{"readOnly":true,"nullable":true,"allOf":[{"$ref":"#/components/schemas/UserPartial"}]},"metadata":{"type":"object","nullable":true,"additionalProperties":true}},"required":["id","start","start_half_day","end","end_half_day","notes","user","working_time_type","last_modified","last_modified_by"]},"WorkingTimeDateSpanPage":{"allOf":[{"$ref":"#/components/schemas/PagingInformation"},{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/WorkingTimeDateSpan"}}},"required":["data"]}]},"WorkingTimeDateSpansSortColumn":{"type":"string","enum":["start"]},"WorkingTimeDateSpanUpdate":{"type":"object","properties":{"start":{"$ref":"#/components/schemas/LocalDate"},"start_half_day":{"type":"boolean","default":false},"end":{"$ref":"#/components/schemas/LocalDate"},"end_half_day":{"type":"boolean","default":false},"notes":{"type":"string","nullable":true},"working_time_type_id":{"type":"string"},"substitute_id":{"nullable":true,"type":"string"},"metadata":{"type":"object","nullable":true,"additionalProperties":true}}},"WorkingTimeDateSpanCreate":{"allOf":[{"type":"object","properties":{"user_id":{"type":"string"}},"required":["start","end","user_id","working_time_type_id"]},{"$ref":"#/components/schemas/WorkingTimeDateSpanUpdate"}]},"WorkingTimeTypePartial":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"external_id":{"type":"string","nullable":true}},"required":["id","name","external_id"]},"WorkingTimeType":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"short_name":{"type":"string","nullable":true},"description":{"type":"string","nullable":true},"external_id":{"type":"string","nullable":true},"edit_unit":{"$ref":"#/components/schemas/DurationUnit"},"category":{"$ref":"#/components/schemas/WorkingTimeTypeCategory"},"sub_category":{"nullable":true,"allOf":[{"$ref":"#/components/schemas/WorkingTimeTypeSubCategory"}]},"recording_mode_user":{"nullable":true,"description":"Specifies how the user can record this working time type. Only relevant for working time types having edit_unit 'half_days' or 'days', otherwise null\n","allOf":[{"$ref":"#/components/schemas/RecordingModeUser"}]},"non_creditable_deductible":{"type":"number","nullable":true},"compensation_deductible":{"type":"number","nullable":true},"archived":{"type":"boolean"},"requires_substitute":{"type":"boolean"},"automatic_break_deduction_policy":{"description":"Policy that defines how automatic break deductions are handled for this working time type. Only applicable for minute based attendance times (WorkingTimeTypeCategory = 'attendance_time' and edit_unit = 'minutes'). Defaults to 'deduction_allowed' if not set.\n","allOf":[{"$ref":"#/components/schemas/AutomaticBreakDeductionPolicy"}]}},"required":["id","name","short_name","description","external_id","edit_unit","category","sub_category","recording_mode_user","non_creditable_deductible","compensation_deductible","archived","automatic_break_deduction_policy"]},"DurationUnit":{"type":"string","enum":["minutes","half_days","days"]},"WorkingTimeTypeCategory":{"type":"string","enum":["attendance_time","vacation","paid_time_off","unpaid_time_off","suspension","break_time"]},"WorkingTimeTypeSubCategory":{"type":"string","enum":["present","work_from_home","away","active_driving_time","passive_travelling_time"]},"RecordingModeUser":{"type":"string","enum":["not_allowed","allowed","by_request"]},"AutomaticBreakDeductionPolicy":{"type":"string","enum":["deduction_allowed","prefer_not_to_deduct","never_deduct"]},"WorkingTimeTypesPage":{"allOf":[{"$ref":"#/components/schemas/PagingInformation"},{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/WorkingTimeType"}}},"required":["data"]}]},"WorkingTimeTypesSortColumn":{"type":"string","enum":["name"]},"PagingInformation":{"type":"object","properties":{"next_page_token":{"type":"string","nullable":true}},"required":["next_page_token"]},"SortDirection":{"type":"string","enum":["asc","dsc"]}}}}