openapi: 3.0.0 info: description: HR WORKS API v2 version: "2.11" title: HR WORKS API v2 termsOfService: 'https://www.hrworks.de/unternehmen/agb/' tags: - name: Utility description: Authentication, health check and webhooks. - name: Absences description: API endpoints referring to absences. - name: Applicant Management description: API endpoints for receiving posts and creating new job applications. - name: Cost Accounting description: API endpoints and actions referring to the cost centers and cost objectives of the company. - name: General description: 'General API endpoints for company-wide objects like organization units, permanent establishments or holidays.' - name: Onboarding description: API endpoints centered around the onboarding workflow for new employees. - name: Persons description: 'API endpoints referring to employees of the company, e.g. the editing or accessing of employee master data.' - name: Remote Work description: API endpoints for managing remote work / home office in HR WORKS. - name: Sick Leaves description: API endpoints for sick leave management. - name: Travel Expenses description: API endpoints for travel expenses accounting. - name: Wage & Salary description: API endpoints for wage and salary related objects. - name: Working Times description: API endpoints for (project) time tracking. paths: /v2/authentication: post: tags: - Utility summary: Receive Authentication Token security: [] description: Use your credentials to receive an authorization Bearer token which is required for all subsequent API calls. operationId: CreateToken requestBody: content: application/json: schema: $ref: '#/components/schemas/Credentials' description: 'The credentials created in HR WORKS, consisting of accessKey and secretAccessKey.' required: true responses: '200': description: Success response. A new access token was created and is returned to the caller. content: application/json: schema: $ref: '#/components/schemas/Token' '403': description: The credentials provided with the request were invalid. content: application/json: schema: $ref: '#/components/schemas/ApiError' parameters: [] /v2/health-check: get: tags: - Utility summary: GET Health Check description: Check if the API is up and running. operationId: HealthCheck responses: '200': description: The API is available for further calls. parameters: [] /v2/organization-units: get: tags: - General summary: GET Organization Units description: Lists all organization units of the company with ID/number and name. Only active organization units will be returned. operationId: ListOrganizationUnits responses: '200': description: successful operation content: application/json: schema: $ref: '#/components/schemas/ListOrganizationUnitsReponse' default: description: 'Error payload. See #/responses for a list of general API errors.' content: application/json: schema: $ref: '#/components/schemas/ApiError' parameters: [] post: tags: - General summary: POST Organization Units description: Create organization units in HR WORKS. Parent and child organization units can be created using the same API call. operationId: CreateOrganizationUnits requestBody: content: application/json: schema: $ref: '#/components/schemas/EditOrganizationUnitsRequest' description: Collection of organization unit data. required: true responses: '200': description: Success response. The jobId returned with this call can be used to query the corresponding /jobs endpoint for the result of the write operation. content: application/json: schema: $ref: '#/components/schemas/JobIdObject' default: description: 'Error payload. See #/responses for a list of general API errors.' content: application/json: schema: $ref: '#/components/schemas/ApiError' parameters: [] /v2/organization-units/jobs/{jobId}: get: tags: - General summary: GET Organization Units Jobs description: After a POST or PUT request to the /organization-units endpoint was performed, the result can be fetched via the corresponding /jobs endpoint. operationId: GetEditOrganizationUnitStatus parameters: - name: jobId in: path description: The job id. required: true schema: type: string responses: '200': description: Success response. The result can be either pending (containing to response data yet) or finished (containing error or results of the successful write request). content: application/json: schema: $ref: '#/components/schemas/MultiWriteRequestResponse' '400': description: This error is only returned by /jobs endpoints. The submitted jobId was invalid - no matching write request to the API could be found. content: application/json: schema: $ref: '#/components/schemas/ApiError' default: description: 'Error payload. See #/responses for a list of general API errors.' content: application/json: schema: $ref: '#/components/schemas/ApiError' /v2/organization-units/{uuid}: get: tags: - General summary: GET Single Organization Unit description: Return the data of a specific organization unit of the company. operationId: GetOrganizationUnit parameters: - name: uuid in: path description: The uuid or number of the organization unit in HR WORKS. The unique identifier cannot be changed. The passing of the number is deprecated. required: true schema: type: string responses: '200': description: successful operation content: application/json: schema: $ref: '#/components/schemas/OrganizationUnit' default: description: 'Error payload. See #/responses for a list of general API errors.' content: application/json: schema: $ref: '#/components/schemas/ApiError' /v2/organization-units/{number}/present-persons: get: tags: - General summary: GET Present Persons description: Lists all persons that are currently "in the office". This action does account for vacations, trips, sicknesses and other absences by forenoon and afternoon. A half-day absence is considered to last from 12 pm to 11:59 am, which counts as "forenoon", likewise, an "afternoon" absence is considered to last from 12 am to 11:59 pm. operationId: ListPresentPersonsOfOrganizationUnit parameters: - name: number in: path description: ID of the organization unit to return data for. required: true schema: type: string responses: '200': description: Success response. content: application/json: schema: $ref: '#/components/schemas/ListPresentPersonsOfOrganizationUnitResponse' default: description: 'Error payload. See #/responses for a list of general API errors.' content: application/json: schema: $ref: '#/components/schemas/ApiError' /v2/permanent-establishments: get: tags: - General summary: GET Permanent Establishments description: Lists all permanent establishments of the company with ID/number and name. Only active permanent establishments will be returned. operationId: ListPermanentEstablishments responses: '200': description: successful operation content: application/json: schema: $ref: '#/components/schemas/ListPermanentEstablishmentsResponse' default: description: 'Error payload. See #/responses for a list of general API errors.' content: application/json: schema: $ref: '#/components/schemas/ApiError' parameters: [] post: tags: - General summary: POST Permanent Establishments description: Create new permanent establishments in HR WORKS. operationId: CreatePermanentEstablishments requestBody: content: application/json: schema: $ref: '#/components/schemas/EditPermanentEstablishmentsRequest' description: Collection of permanent establishment data. required: true responses: '200': description: Success response. The jobId returned with this call can be used to query the corresponding /jobs endpoint for the result of the write operation. content: application/json: schema: $ref: '#/components/schemas/JobIdObject' default: description: 'Error payload. See #/responses for a list of general API errors.' content: application/json: schema: $ref: '#/components/schemas/ApiError' parameters: [] put: tags: - General summary: PUT Permanent Establishments description: Edit permanent establishments in HR WORKS. operationId: EditPermanentEstablishments requestBody: content: application/json: schema: $ref: '#/components/schemas/EditPermanentEstablishmentsRequest' description: Collection of permanent establishment data. required: true responses: '200': description: Success response. The jobId returned with this call can be used to query the corresponding /jobs endpoint for the result of the write operation. content: application/json: schema: $ref: '#/components/schemas/JobIdObject' default: description: 'Error payload. See #/responses for a list of general API errors.' content: application/json: schema: $ref: '#/components/schemas/ApiError' parameters: [] /v2/permanent-establishments/jobs/{jobId}: get: tags: - General summary: GET Permanent Establishments Jobs description: After a POST or PUT request to the /permanent-establishments endpoint was performed, the result can be fetched via the corresponding /jobs endpoint. operationId: GetPermanentEstablishmentCreationStatus parameters: - name: jobId in: path description: The job id. required: true schema: type: string responses: '200': description: Success response. The result can be either pending (containing to response data yet) or finished (containing error or results of the successful write request). content: application/json: schema: $ref: '#/components/schemas/MultiWriteRequestResponse' '400': description: This error is only returned by /jobs endpoints. The submitted jobId was invalid - no matching write request to the API could be found. content: application/json: schema: $ref: '#/components/schemas/ApiError' default: description: 'Error payload. See #/responses for a list of general API errors.' content: application/json: schema: $ref: '#/components/schemas/ApiError' /v2/permanent-establishments/{id}: get: tags: - General summary: GET Single Permanent Establishment description: Return the data of a specific permanent establishment of the company. operationId: GetPermanentEstablishment parameters: - name: id in: path description: The id of the permanent establishment. required: true schema: type: string responses: '200': description: successful operation content: application/json: schema: $ref: '#/components/schemas/PermanentEstablishment' default: description: 'Error payload. See #/responses for a list of general API errors.' content: application/json: schema: $ref: '#/components/schemas/ApiError' /v2/holidays: get: tags: - General summary: GET Holidays description: Lists the holidays for the company and its permanent establishments for the specified year and country. operationId: ListHolidays parameters: - name: year in: query description: The year for which the holidays will be returned. required: true schema: type: number - name: countryCodes in: query style: form explode: true description: 'A collection of ISO 3166-1 alpha-3 country codes (e.g. DEU, IRL, USA) for which to return data. If not specified, data for all countries in your HR WORKS company account will be returned. Country codes for which no corresponding conutry was found in the HR WORKS company account will be omitted.' required: false schema: type: array items: type: string - name: permanentEstablishments in: query style: form explode: true description: 'A collection of permanent establishment IDs. If specified, only holidays for the given permanent establishments will be returned. (But still including all general holidays for the specified country code(s)). Else, all holidays which otherwise match the parameters are returned.' required: false schema: type: array items: type: string responses: '200': description: successful operation content: application/json: schema: $ref: '#/components/schemas/ListHolidaysReponse' default: description: 'Error payload. See #/responses for a list of general API errors.' content: application/json: schema: $ref: '#/components/schemas/ApiError' post: tags: - General summary: POST Holidays description: "Create new company holidays in HR WORKS. Holidays can be created at different levels: For a whole country, for a specific state of a country or for a specific company permanent establishment. This is represented by the permanentEstablishmentId, state and countryCode properties. When creating holidays via POST, at least one of those attributes has to be set. In order to create a state-level holiday, both state and countyCode have to be set." operationId: CreateHolidays requestBody: content: application/json: schema: $ref: '#/components/schemas/EditHolidaysRequest' description: Collection of holiday data. required: true responses: '200': description: Success response. The jobId returned with this call can be used to query the corresponding /jobs endpoint for the result of the write operation. content: application/json: schema: $ref: '#/components/schemas/JobIdObject' default: description: 'Error payload. See #/responses for a list of general API errors.' content: application/json: schema: $ref: '#/components/schemas/ApiError' parameters: [] /v2/holidays/jobs/{jobId}: get: tags: - General summary: GET Holidays Jobs description: After a POST or PUT request to the /holidays endpoint was performed, the result can be fetched via the corresponding /jobs endpoint. operationId: GetEditHolidaysStatus parameters: - name: jobId in: path description: The job id of the previous write request. required: true schema: type: string responses: '200': description: Success response. The result can be either pending (containing to response data yet) or finished (containing error or results of the successful write request). content: application/json: schema: $ref: '#/components/schemas/MultiWriteRequestResponse' '400': description: This error is only returned by /jobs endpoints. The submitted jobId was invalid - no matching write request to the API could be found. content: application/json: schema: $ref: '#/components/schemas/ApiError' default: description: 'Error payload. See #/responses for a list of general API errors.' content: application/json: schema: $ref: '#/components/schemas/ApiError' /v2/webhooks: get: tags: - Utility summary: GET Webhooks description: Lists the webhooks for the company. operationId: ListWebhooks parameters: - name: onlyActive in: query description: 'Set this parameter to false to also return webhooks that are inactive.' required: false schema: type: boolean default: true - name: resource in: query description: 'The type of resource to be modified.' required: false schema: $ref: '#/components/schemas/WebhookResource' - name: action in: query description: 'The action type that triggers the webhook.' required: false schema: $ref: '#/components/schemas/WebhookAction' responses: '200': description: successful operation content: application/json: schema: $ref: '#/components/schemas/ListWebhooksResponse' default: description: 'Error payload. See #/responses for a list of general API errors.' content: application/json: schema: $ref: '#/components/schemas/ApiError' post: tags: - Utility summary: POST Webhooks description: "Create new webhooks in HR WORKS. Refer to the data type WebhookData for a comprehensive list of attributes that can be set. Attributes that are not set/included in the create request are ignored (with the exception of mandatory attributes)." operationId: CreateWebhooks requestBody: content: application/json: schema: $ref: '#/components/schemas/CreateWebhooksRequest' responses: '200': description: Success response. The jobId returned with this call can be used to query the corresponding /jobs endpoint for the result of the write operation. content: application/json: schema: $ref: '#/components/schemas/JobIdObject' default: description: 'Error payload. See #/responses for a list of general API errors.' content: application/json: schema: $ref: '#/components/schemas/ApiError' put: tags: - Utility summary: PUT Webhooks description: Edit webhooks in HR WORKS. Refer to the data type WebhookData for a comprehensive list of attributes that can be set. Attributes that are not set/included in the edit request are ignored (with the exception of mandatory attributes). operationId: EditWebhooks requestBody: content: application/json: schema: $ref: "#/components/schemas/EditWebhooksRequest" responses: "200": description: Success response. The jobId returned with this call can be used to query the corresponding /jobs endpoint for the result of the write operation. content: application/json: schema: $ref: "#/components/schemas/JobIdObject" default: description: "Error payload. See #/responses for a list of general API errors." content: application/json: schema: $ref: "#/components/schemas/ApiError" delete: tags: - Utility summary: DELETE Webhooks description: Delete multiple webhooks in HR WORKS. operationId: DeleteWebhooks parameters: - name: numbers in: query description: List of webhook IDs. required: true explode: true schema: type: array items: type: string description: The id of a webhook. responses: '200': description: Success response. The jobId returned with this call can be used to query the corresponding /jobs endpoint for the result of the write operation. content: application/json: schema: $ref: '#/components/schemas/JobIdObject' default: description: 'Error payload. See #/responses for a list of general API errors.' content: application/json: schema: $ref: '#/components/schemas/ApiError' /v2/webhooks/jobs/{jobId}: get: tags: - Utility summary: GET Webhooks Jobs description: After a write request to the /webhooks endpoint was performed, the result can be fetched via the corresponding /jobs endpoint. operationId: GetEditWebhooksStatus parameters: - name: jobId in: path description: The job id of the previous write request. required: true schema: type: string responses: '200': description: Success response. The result can be either pending (containing to response data yet) or finished (containing error or results of the successful write request). content: application/json: schema: $ref: '#/components/schemas/MultiWriteRequestResponse' '400': description: This error is only returned by /jobs endpoints. The submitted jobId was invalid - no matching write request to the API could be found. content: application/json: schema: $ref: '#/components/schemas/ApiError' default: description: 'Error payload. See #/responses for a list of general API errors.' content: application/json: schema: $ref: '#/components/schemas/ApiError' /v2/persons: get: tags: - Persons summary: GET Persons description: Lists all persons in the company (or in the specified organization units). By default, only active persons are returned. Each person that was neither deleted nor has left the company counts as active. operationId: ListPersons parameters: - name: organizationUnits in: query style: form explode: true description: 'A collection of organization unit identifiers. If this parameter is set, only persons that are assigned to one of the specified organization units will be included in the response.' required: false schema: type: array items: type: string - name: onlyActive in: query description: 'Set this parameter to false to return persons that have left the company and were set to gone in HR WORKS as well. Note: Deleted persons cannot be returned as the data was removed from HR WORKS. This parameter will be ignored if persons are specified directly via the persons parameter.' required: false schema: type: boolean default: true - name: onlyActiveOrganizationUnits in: query description: 'Set this parameter to false to return persons that are either assigned to deactivated organization units or have no organization unit.' required: false schema: type: boolean default: true - name: identifierType in: query description: Specifies the type of identifiers in the organizationUnits parameter. Default is number. This also defines whether the persons are grouped by the organization unit number or the organziation unit uuid. required: false schema: $ref: '#/components/schemas/OrganizationUnitIdentifierType' responses: '200': description: successful operation content: application/json: schema: $ref: '#/components/schemas/ListPersonsResponse' default: description: 'Error payload. See #/responses for a list of general API errors.' content: application/json: schema: $ref: '#/components/schemas/ApiError' post: tags: - Persons summary: POST Persons description: "Create new employees in HR WORKS. Refer to the data type Person for a comprehensive list of attributes that can be set. Attributes that are not set/included in the create request are ignored (with the exception of mandatory attributes). Note: Creating employees causes license costs." operationId: CreatePersons requestBody: content: application/json: schema: $ref: '#/components/schemas/EditPersonsRequest' responses: '200': description: Success response. The jobId returned with this call can be used to query the corresponding /jobs endpoint for the result of the write operation. content: application/json: schema: $ref: '#/components/schemas/JobIdObject' default: description: 'Error payload. See #/responses for a list of general API errors.' content: application/json: schema: $ref: '#/components/schemas/ApiError' parameters: [] put: tags: - Persons summary: PUT Persons description: Edit existing emyployees in HR WORKS. Refer to the data type Person for a comprehensive list of attributes that can be set. Attributes that are not set/included in the edit request are ignored (with the exception of mandatory attributes). operationId: EditPersons requestBody: content: application/json: schema: $ref: '#/components/schemas/EditPersonsRequest' responses: '200': description: Success response. The jobId returned with this call can be used to query the corresponding /jobs endpoint for the result of the write operation. content: application/json: schema: $ref: '#/components/schemas/JobIdObject' default: description: 'Error payload. See #/responses for a list of general API errors.' content: application/json: schema: $ref: '#/components/schemas/ApiError' parameters: [] /v2/persons/jobs/{jobId}: get: tags: - Persons summary: GET Persons Jobs description: After a POST or PUT request to the /persons or the /persons/files endpoint was performed, the result can be fetched via the corresponding /jobs endpoint. operationId: GetEditPersonsStatus parameters: - name: jobId in: path description: The job id of the previous write request. required: true schema: type: string responses: '200': description: Success response. The result can be either pending (containing to response data yet) or finished (containing error or results of the successful write request). content: application/json: schema: oneOf: - $ref: '#/components/schemas/FileUploadRequestResponse' - $ref: '#/components/schemas/MultiWriteRequestResponse' discriminator: propertyName: responseType '400': description: This error is only returned by /jobs endpoints. The submitted jobId was invalid - no matching write request to the API could be found. content: application/json: schema: $ref: '#/components/schemas/ApiError' default: description: 'Error payload. See #/responses for a list of general API errors.' content: application/json: schema: $ref: '#/components/schemas/ApiError' /v2/persons/master-data: get: tags: - Persons summary: GET Persons Master Data description: Returns the current master data of the specified persons. operationId: GetPersonMasterData parameters: - name: personIdentifierType in: query description: Specifies the type of identifiers in the persons parameter. Default is personId. required: false schema: $ref: '#/components/schemas/PersonIdentifierType' - name: persons in: query style: form explode: true description: 'The identifiers of the persons to display data for. Use personIdentifierType to specify what type the values are.' required: false schema: type: array items: type: string - name: usePersonnelNumbers in: query description: 'Deprecated - use personIdentifierType instead. If set to true, the API will assume the strings in the persons parameter to represent personnel numbers instead of HR WORKS usernames.' required: false deprecated: true schema: type: boolean default: false - name: onlyActive in: query description: 'Set this parameter to false to return persons that have left the company and were set to gone in HR WORKS as well. Note: Deleted persons cannot be returned as the data was removed from HR WORKS. This parameter will be ignored if persons are specified directly via the persons parameter.' required: false schema: type: boolean default: true - name: page in: query description: 'Set this parameter to access a specific page of results. If the parameter is not set, the first page of results is returned. The API returns paging information via the Link header. The page size for this API call is 50.' required: false schema: type: number default: 1 responses: '200': description: successful operation content: application/json: schema: $ref: '#/components/schemas/GetPersonMasterDataResponse' default: description: 'Error payload. See #/responses for a list of general API errors.' content: application/json: schema: $ref: '#/components/schemas/ApiError' /v2/persons/today: get: tags: - Persons summary: GET Persons Today description: Return day related objects for multiple employees of the current day. operationId: GetPersonsDay parameters: - name: personIdentifierType in: query description: Specifies the type of identifiers in the persons parameter. Default is personId. required: false schema: $ref: '#/components/schemas/PersonIdentifierType' - name: persons in: query style: form explode: true description: 'The identifiers of the persons to display data for. Use personIdentifierType to specify what type the values are.' required: false schema: type: array items: type: string description: The identifier of a person in HR WORKS. - name: usePersonnelNumbers in: query description: 'Deprecated - use personIdentifierType instead. If set to true, the API will assume the strings in the persons parameter to represent personnel numbers instead of HR WORKS usernames.' required: false deprecated: true schema: type: boolean default: false - name: onlyActive in: query description: 'Set this parameter to false to return persons that have left the company and were set to gone in HR WORKS as well. Note: Deleted persons cannot be returned as the data was removed from HR WORKS. This parameter will be ignored if persons are specified directly via the persons parameter.' required: false schema: type: boolean default: true - name: includeData in: query required: false style: form explode: true description: Select all data sources to include. Target working hours and holidays are always included. schema: type: array items: $ref: '#/components/schemas/IncludeDataForPersonsDayRequest' - name: page in: query description: 'Set this parameter to access a specific page of results. If the parameter is not set, the first page of results is returned. The API returns paging information via the Link header. The page size for this API call is 50.' required: false schema: type: number default: 1 responses: '200': description: successful operation content: application/json: schema: $ref: '#/components/schemas/GetPersonsDayResponse' default: description: 'Error payload. See #/responses for a list of general API errors.' content: application/json: schema: $ref: '#/components/schemas/ApiError' /v2/persons/available-working-hours: get: tags: - Persons summary: GET Available Working Hours description: Returns the cumulated available working hours of the specified persons in the date interval specified by the beginDate and endDate parameters. The selected date interval can be further divided into days, weeks or months.. operationId: GetAvailableWorkingHours parameters: - name: personIdentifierType in: query description: Specifies the type of identifiers in the persons parameter. Default is personId. required: false schema: $ref: '#/components/schemas/PersonIdentifierType' - name: persons in: query style: form explode: true description: 'The identifiers of the persons to display data for. Use personIdentifierType to specify what type the values are.' required: false schema: type: array items: type: string - name: usePersonnelNumbers in: query description: 'Deprecated - use personIdentifierType instead. If set to true, the API will assume the strings in the persons parameter to represent personnel numbers instead of HR WORKS usernames.' required: false deprecated: true schema: type: boolean default: false - name: beginDate in: query description: 'The starting date of the date interval. Note: The maximum date interval is one year.' required: true schema: type: string - name: endDate in: query description: 'The end date of the date interval. Note: The maximum date interval is one year.' required: true schema: type: string - name: interval in: query description: 'Indicates whether the date interval should be split into smaller intervals like weeks or months. If this parameter is not set, the interval will not be split. Setting this parameter to ''days'' will shorten the maximum allowed interval size to 31 days. Note: The API does not perform any date interval adjustments. E.g., even if weeks was specified for the interval parameter, if the date interval specified by beginDate and endDate spans only two days, the data will only be computed for this two-day span. However, if those two days happen to be Monday and Sunday of different weeks, the result will be split accordingly.' required: false schema: $ref: '#/components/schemas/Interval' - name: onlyActive in: query description: 'Set this parameter to false to return persons that have left the company and were set to gone in HR WORKS as well. Note: Deleted persons cannot be returned as the data was removed from HR WORKS. This parameter will be ignored if persons are specified directly via the persons parameter.' required: false schema: type: boolean default: true - name: page in: query description: 'Set this parameter to access a specific page of results. If the parameter is not set, the first page of results is returned. The API returns paging information via the Link header. The page size for this API call is 150.' required: false schema: type: number default: 1 responses: '200': description: successful operation content: application/json: schema: $ref: '#/components/schemas/GetAvailableWorkingHoursResponse' default: description: 'Error payload. See #/responses for a list of general API errors.' content: application/json: schema: $ref: '#/components/schemas/ApiError' /v2/persons/personnel-file/categories: get: tags: - Persons summary: GET Personnel File Categories description: Lists all personnel file categories of the company. operationId: GetPersonPersonnelFileCategories responses: '200': description: successful operation content: application/json: schema: $ref: '#/components/schemas/ListPersonnelFileCategoriesResponse' default: description: 'Error payload. See #/responses for a list of general API errors.' content: application/json: schema: $ref: '#/components/schemas/ApiError' /v2/persons/onboarding: get: tags: - Onboarding summary: GET Onboarding Documents description: Lists all onboarding documents of the company. The request may be specified by statusFilter or organization units. operationId: GetOnboardingDocuments parameters: - name: statusFilter in: query style: form explode: true description: 'If specified, only values matching one of the selected status values will be returned.' required: false schema: type: array items: $ref: '#/components/schemas/OnboardingStatus' - name: organizationUnits in: query style: form explode: true description: 'A collection of organization unit identifiers. If this parameter is set, only onboarding documents by persons that are assigned to one of the specified organization units will be included in the response.' required: false schema: type: array items: type: string responses: '200': description: successful operation content: application/json: schema: $ref: '#/components/schemas/ListOnboardingDocumentsResponse' default: description: 'Error payload. See #/responses for a list of general API errors.' content: application/json: schema: $ref: '#/components/schemas/ApiError' post: tags: - Onboarding summary: POST Onboarding Documents description: "Create new onboarding documents in HR WORKS. Refer to the schema OnboardingDocumentData for a comprehensive list of attributes that can be set. Attributes that are not set/included in the create request are ignored (with the exception of mandatory attributes)." operationId: CreateOnboardingDocuments requestBody: content: application/json: schema: $ref: '#/components/schemas/EditOnboardingDocumentsRequest' responses: '200': description: Success response. The jobId returned with this call can be used to query the corresponding /jobs endpoint for the result of the write operation. content: application/json: schema: $ref: '#/components/schemas/JobIdObject' default: description: 'Error payload. See #/responses for a list of general API errors.' content: application/json: schema: $ref: '#/components/schemas/ApiError' parameters: [] /v2/persons/onboarding/{id}/files: post: tags: - Onboarding summary: POST Onboarding Document Files description: Create a new file for an onboarding document in HR WORKS by sending the binary data in body or an URL to download the file from. operationId: CreateOnboardingDocumentFiles requestBody: content: application/octet-stream: schema: type: string format: binary description: 'The file to add in binary format (required if no file url is provided)' application/json: schema: type: object properties: webhook: $ref: '#/components/schemas/WebhookConfiguration' responses: '200': description: Success response. The jobId returned with this call can be used to query the persons/onboarding/jobs endpoint for the result of the write operation. content: application/json: schema: $ref: '#/components/schemas/JobIdObject' default: description: 'Error payload. See #/responses for a list of general API errors.' content: application/json: schema: $ref: '#/components/schemas/ApiError' parameters: - name: content-type in: header description: The Mime-type of the file. required: true schema: type: string example: application/pdf - name: fileName in: query description: The name of the file to display in HR WORKS. required: true schema: type: string example: testFile.pdf - name: id in: path description: The id of the onboarding document that the uploaded file belongs to. required: true schema: type: string - name: url in: query description: The url of the document (required if the file is not sent via the request body). required: false schema: type: string /v2/persons/onboarding/{id}: get: tags: - Onboarding summary: GET Single Onboarding Document description: Returns the data of a single onboarding document with the given id. operationId: GetOnboardingDocument parameters: - name: id in: path required: true schema: type: string responses: '200': description: successful operation content: application/json: schema: $ref: '#/components/schemas/OnboardingDocument' default: description: 'Error payload. See #/responses for a list of general API errors.' content: application/json: schema: $ref: '#/components/schemas/ApiError' /v2/persons/onboarding/jobs/{jobId}: get: tags: - Onboarding summary: GET Onboarding Document Jobs description: After a POST request to the /persons/onboarding endpoint was performed, the result can be fetched via the corresponding /jobs endpoint. operationId: GetEditOnboardingDocumentsStatus parameters: - name: jobId in: path description: The job id of the previous write request. required: true schema: type: string responses: '200': description: Success response. The result can be either pending (containing to response data yet) or finished (containing error or results of the successful write request). content: application/json: schema: oneOf: - $ref: '#/components/schemas/FileUploadRequestResponse' - $ref: '#/components/schemas/MultiWriteRequestResponse' discriminator: propertyName: responseType '400': description: This error is only returned by /jobs endpoints. The submitted jobId was invalid - no matching write request to the API could be found. content: application/json: schema: $ref: '#/components/schemas/ApiError' default: description: 'Error payload. See #/responses for a list of general API errors.' content: application/json: schema: $ref: '#/components/schemas/ApiError' /v2/persons/{personIdentifier}: get: tags: - Persons summary: GET Single Person description: Return the base data of a specific person. operationId: GetPerson parameters: - name: personIdentifierType in: query description: Specifies the type of the personIdentifier. Default is personnelNumber. required: false schema: $ref: '#/components/schemas/PersonIdentifierType' - name: personIdentifier in: path description: The identifier of the person. Use personIdentifierType to specify what type the value is. required: true schema: type: string responses: '200': description: successful operation content: application/json: schema: $ref: '#/components/schemas/PersonBaseData' default: description: 'Error payload. See #/responses for a list of general API errors.' content: application/json: schema: $ref: '#/components/schemas/ApiError' /v2/persons/{personnelNumber}/leave-account: get: tags: - Persons summary: GET Person Leave Account Data description: Returns the leave account data of the specified person. operationId: GetPersonLeaveAccountData parameters: - name: personnelNumber in: path description: The HR WORKS personnel number of the person to display data for. required: true schema: type: string - name: referenceDate in: query description: The reference date for which the leave account data will be generated. The date interval over which the data will be generated always starts from January 1st of the year specified in this parameter and ends at the reference date. required: false schema: type: string format: date responses: '200': description: successful operation content: application/json: schema: $ref: '#/components/schemas/LeaveAccount' default: description: 'Error payload. See #/responses for a list of general API errors.' content: application/json: schema: $ref: '#/components/schemas/ApiError' /v2/persons/{personIdentifier}/master-data: get: tags: - Persons summary: GET Single Person Master Data description: Returns the current master data of the specified person. operationId: GetSinglePersonMasterData parameters: - name: personIdentifierType in: query description: Specifies the type of the personIdentifier. Default is personnelNumber. required: false schema: $ref: '#/components/schemas/PersonIdentifierType' - name: personIdentifier in: path description: The identifier of the person to display data for. required: true schema: type: string responses: '200': description: successful operation content: application/json: schema: $ref: '#/components/schemas/Person' default: description: 'Error payload. See #/responses for a list of general API errors.' content: application/json: schema: $ref: '#/components/schemas/ApiError' /v2/persons/{personIdentifier}/working-times: post: tags: - Persons summary: POST Start/Stop Working Time description: Creates and returns a persons current working time. operationId: CreatePersonWorkingTime parameters: - name: personIdentifier in: path description: 'The personnel number, or personIdentifier of the person. Default value is personnel number, can be changed in the settings' required: true schema: type: string - name: action in: query description: 'The action which should be made, can be either ''clockIn'' or ''clockOut. (The Actions have different required parameters).' required: true schema: type: string - name: type in: query description: If action is 'clockIn' this parameter required and sets the working time type. required: false schema: type: string - name: project in: query description: The project number. required: false schema: type: string - name: kioskId in: query description: The kiosk id. required: false schema: type: number - name: comment in: query description: Comment on the working time. required: false schema: type: string - name: beginDateAndTime in: query description: "Optional timestamp for clock in. Only valid when action is clockIn. ISO 8601 UTC format (e.g., 2025-12-03T07:34:00Z). The timestamp must not be in the future and must not be more than 24 hours in the past." required: false schema: type: string format: date-time - name: endDateAndTime in: query description: "Optional timestamp for clock out. Only valid when action is clockOut. ISO 8601 UTC format (e.g., 2025-12-03T15:46:00Z). The timestamp must not be in the future and must not be more than 24 hours in the past." required: false schema: type: string format: date-time responses: '200': description: successful operation content: application/json: schema: $ref: '#/components/schemas/CreatePersonWorkingTimeResponse' default: description: 'Error payload. See #/responses for a list of general API errors.' content: application/json: schema: $ref: '#/components/schemas/ApiError' /v2/persons/{personIdentifier}/working-times/status: get: tags: - Persons summary: GET Working Time Status description: Returns the current working time status of a person. operationId: GetSinglePersonWorkingTimeStatus parameters: - name: personIdentifier in: path description: 'The personnel number, or personIdentifier of the person. Default value is personnel number, can be changed in the settings.' required: true schema: type: string responses: '200': description: successful operation content: application/json: schema: $ref: '#/components/schemas/WorkingTimeStatus' default: description: 'Error payload. See #/responses for a list of general API errors.' content: application/json: schema: $ref: '#/components/schemas/ApiError' /v2/persons/{personIdentifier}/personnel-file: get: tags: - Persons summary: GET Personnel File Entries description: Returns the personnel file entries of the specified person. operationId: GetPersonPersonnelFileEntries parameters: - name: personIdentifierType in: query description: Specifies the type of the personIdentifier. Default is personnelNumber. required: false schema: $ref: '#/components/schemas/PersonIdentifierType' - name: personIdentifier in: path description: The identifier of the person to display data for. Use personIdentifierType to specify what type the value is. required: true schema: type: string - name: category in: query description: The key of the personnel file entry category to filter the result by. required: false schema: type: string - name: hasDocuments in: query description: Allows filtering for personnel file entries with/without attached PDF documents. required: false schema: type: boolean - name: isWageRelevant in: query description: Allows filtering for personnel file entries being (not) wage relevant. required: false schema: type: boolean - name: createdAfter in: query description: Allows filtering for personnel file entries that were created on or after the specified date. Date in YYYY-MM-DD format. required: false schema: type: string format: date - name: createdBefore in: query description: Allows filtering for personnel file entries that were created on or before the specified date. Date in YYYY-MM-DD format. required: false schema: type: string format: date responses: '200': description: successful operation content: application/json: schema: $ref: '#/components/schemas/ListPersonPersonnelFileEntriesResponse' default: description: 'Error payload. See #/responses for a list of general API errors.' content: application/json: schema: $ref: '#/components/schemas/ApiError' /v2/persons/{personIdentifier}/personnel-file/{personnelFileEntryId}: get: tags: - Persons summary: GET Single Personnel File Entry description: Returns a specific personnel file entry for the specified person. operationId: GetPersonPersonnelFileEntry parameters: - name: personIdentifierType in: query description: Specifies the type of the personIdentifier. Default is personnelNumber. required: false schema: $ref: '#/components/schemas/PersonIdentifierType' - name: personIdentifier in: path description: The identifier of the person to display data for. Use personIdentifierType to specify what type the value is. required: true schema: type: string - name: personnelFileEntryId in: path description: The id of the personnel file entry that should be returned. required: true schema: type: string responses: '200': description: successful operation content: application/json: schema: $ref: '#/components/schemas/PersonnelFileEntry' default: description: 'Error payload. See #/responses for a list of general API errors.' content: application/json: schema: $ref: '#/components/schemas/ApiError' /v2/persons/{personIdentifier}/personnel-file/{personnelFileEntryId}/files: post: tags: - Persons summary: POST Personnel File Entry File description: Attach a new file to a personnel file entry in HR WORKS by sending the binary data in body or an URL to download the file from. operationId: CreatePersonnelFileEntryFile requestBody: content: application/octet-stream: schema: type: string format: binary description: 'The file to add in binary format (required if no file url is provided)' application/json: schema: type: object properties: webhook: $ref: '#/components/schemas/WebhookConfiguration' parameters: - name: content-type in: header description: 'The Mime-type of the file, only required if a file is included in the request body' required: false schema: type: string example: application/pdf - name: fileName in: query description: The name of the file to display in HR WORKS. required: true schema: type: string example: testFile.pdf - name: personIdentifierType in: query description: Specifies the type of the personIdentifier. Default is personnelNumber. required: false schema: $ref: '#/components/schemas/PersonIdentifierType' - name: personIdentifier in: path description: The identifier of the person. Use personIdentifierType to specify what type the value is. required: true schema: type: string - name: personnelFileEntryId in: path description: The id of the personnel file entry that the uploaded file belongs to. required: true schema: type: string - name: url in: query description: The url of the document (required if the file is not sent via the request body). required: false schema: type: string responses: '200': description: Success response. The jobId returned with this call can be used to query the personnel-file/jobs endpoint for the result of the write operation. content: application/json: schema: $ref: '#/components/schemas/JobIdObject' default: description: 'Error payload. See #/responses for a list of general API errors.' content: application/json: schema: $ref: '#/components/schemas/ApiError' /v2/persons/{personIdentifier}/files: post: tags: - Persons summary: POST Single Person Documents description: Create a new file in the HR WORKS Person document pool by sending the binary data in body or an URL to download the file from. operationId: CreateSinglePersonDocuments requestBody: content: application/octet-stream: schema: type: string format: binary description: 'The file to add in binary format (required if no file url is provided)' application/json: schema: type: object properties: webhook: $ref: '#/components/schemas/WebhookConfiguration' responses: '200': description: Success response. The jobId returned with this call can be used to query the persons/jobs endpoint for the result of the write operation. content: application/json: schema: $ref: '#/components/schemas/JobIdObject' default: description: 'Error payload. See #/responses for a list of general API errors.' content: application/json: schema: $ref: '#/components/schemas/ApiError' parameters: - name: fileName in: query description: The name of the file to display in HR WORKS. required: true schema: type: string example: testFile.pdf - name: url in: query description: 'The url of the document (required if the file is not sent via the request body).' required: false schema: type: string - name: personIdentifierType in: query description: Specifies the type of the personIdentifier. Default is personId. required: false schema: $ref: '#/components/schemas/PersonIdentifierType' - name: personIdentifier in: path description: The identifier of a person in the HR WORKS API. Use personIdentifierType to specify what type the value is. required: true schema: type: string /v2/persons/personnel-file: post: tags: - Persons summary: POST Personnel File Entries description: Create multiple personnel file entries for the specified persons. operationId: CreatePersonnelFileEntries parameters: - name: personIdentifierType in: query description: Specifies the type of personIdentifiers in the request required: false schema: $ref: '#/components/schemas/PersonIdentifierType' requestBody: content: application/json: schema: $ref: '#/components/schemas/CreatePersonnelFileEntriesRequest' description: Collection of personnel file entry data. required: true responses: '200': description: Success response. The jobId returned with this call can be used to query the corresponding /jobs endpoint for the result of the write operation. content: application/json: schema: $ref: '#/components/schemas/JobIdObject' default: description: 'Error payload. See #/responses for a list of general API errors.' content: application/json: schema: $ref: '#/components/schemas/ApiError' /v2/persons/personnel-file/jobs/{jobId}: get: tags: - Persons summary: GET Personnel File Jobs description: After a POST or PUT or DELETE request to the /personnel-file endpoint was performed, the result can be fetched via the corresponding /jobs endpoint. operationId: CreatePersonnelFileEntryStatus parameters: - name: jobId in: path description: The job id of the previous write request. required: true schema: type: string responses: '200': description: Success response. The result can be either pending (containing to response data yet) or finished (containing error or results of the successful write request). content: application/json: schema: oneOf: - $ref: '#/components/schemas/MultiWriteRequestResponse' - $ref: '#/components/schemas/FileUploadRequestResult' discriminator: propertyName: responseType '400': description: This error is only returned by /jobs endpoints. The submitted jobId was invalid - no matching write request to the API could be found. content: application/json: schema: $ref: '#/components/schemas/ApiError' default: description: 'Error payload. See #/responses for a list of general API errors.' content: application/json: schema: $ref: '#/components/schemas/ApiError' /v2/persons/files: post: tags: - Persons summary: POST Person Documents description: Create a new file in the HR WORKS document pool by sending the binary data in body or an URL to download the file from. operationId: CreatePersonDocuments requestBody: content: application/octet-stream: schema: type: string format: binary description: 'The file to add in binary format (required if no file url is provided)' application/json: schema: type: object properties: webhook: $ref: '#/components/schemas/WebhookConfiguration' responses: '200': description: Success response. The jobId returned with this call can be used to query the persons/jobs endpoint for the result of the write operation. content: application/json: schema: $ref: '#/components/schemas/JobIdObject' default: description: 'Error payload. See #/responses for a list of general API errors.' content: application/json: schema: $ref: '#/components/schemas/ApiError' parameters: - name: fileName in: query description: The name of the file to display in HR WORKS. required: true schema: type: string example: testFile.pdf - name: url in: query description: 'The url of the document (required if the file is not sent via the request body).' required: false schema: type: string /v2/absences: get: tags: - Absences summary: GET Absences description: Returns a list of absences for the specified persons in the specified date interval. operationId: ListAbsences parameters: - name: persons style: form explode: true in: query description: 'The HR WORKS usernames of the persons to display data for. Note: Using the optional parameter usePersonnelNumbers, HR WORKS personnel numbers can be passed instead of HR WORKS usernames.' required: false schema: type: array items: type: string - name: beginDate in: query description: 'The starting date of the date interval. Note: The maximum date interval is one year.' required: true schema: type: string - name: endDate in: query description: 'The end date of the date interval. Note: The maximum date interval is one year.' required: true schema: type: string - name: types in: query style: form explode: true description: 'This parameter can be used to apply a filter to the result by specifying a list of absence type identifiers/keys. If set, only absences matching one of those keys will be returned. Note: The absence type keys can be retrieved via the /absences/absence-types endpoint.' required: false schema: type: array items: type: string - name: count in: query description: 'If set to "true", this action will return the cumulated working days count for each absence type instead of the absence details. This impacts the structure of the API response. Refer to the examples below.' required: false schema: type: boolean - name: usePersonnelNumbers in: query description: 'If set to true, the API will assume the strings in the persons parameter to represent personnel numbers instead of HR WORKS usernames.' required: false schema: type: boolean - name: interval in: query description: 'Indicates whether the date interval should be split into smaller intervals like weeks or months. If this parameter is not set, the interval will not be split. Setting this parameter to "days" will shorten the maximum allowed interval size to 31 days. Note: The API does not perform any date interval adjustments. E.g., even if "weeks" was specified for the interval parameter, if the date interval specified by beginDate and endDate spans only two days, the data will only be computed for this two-day span. However, if those two days happen to be Monday and Sunday of different weeks, the result will be split accordingly.' required: false schema: $ref: '#/components/schemas/Interval' - name: onlyActive in: query description: 'Set this parameter to false to return persons that have left the company and were set to gone in HR WORKS as well. Note: Deleted persons cannot be returned as the data was removed from HR WORKS. This parameter will be ignored if persons are specified directly via the persons parameter.' required: false schema: type: boolean - name: statusFilter in: query style: form explode: true description: 'If specified, only values matching one of the selected status values will be returned.' required: false schema: type: array items: $ref: '#/components/schemas/AbsenceStatus' - name: page in: query description: 'Set this parameter to access a specific page of results. If the parameter is not set, the first page of results is returned. The API returns paging information via the Link header. The page size for this API call is 50.' required: false schema: type: number default: 1 responses: '200': description: successful operation content: application/json: schema: $ref: '#/components/schemas/ListAbsencesResponse' default: description: 'Error payload. See #/responses for a list of general API errors.' content: application/json: schema: $ref: '#/components/schemas/ApiError' post: tags: - Absences summary: POST Absences description: Create new absences in HR WORKS. Refer to the data type AbsenceData for a comprehensive list of attributes that can be set. Attributes that are not set/included in the create request are ignored (with the exception of mandatory attributes). operationId: CreateAbsences requestBody: content: application/json: schema: $ref: "#/components/schemas/CreateAbsencesRequest" responses: '200': description: Success response. The jobId returned with this call can be used to query the corresponding /jobs endpoint for the result of the write operation. content: application/json: schema: $ref: '#/components/schemas/JobIdObject' default: description: 'Error payload. See #/responses for a list of general API errors.' content: application/json: schema: $ref: '#/components/schemas/ApiError' parameters: [] put: tags: - Absences summary: PUT Absences description: Edit absences in HR WORKS. Refer to the data type AbsenceData for a comprehensive list of attributes that can be set. Attributes that are not set/included in the edit request are ignored (with the exception of mandatory attributes). operationId: EditAbsences requestBody: content: application/json: schema: $ref: "#/components/schemas/EditAbsencesRequest" responses: "200": description: Success response. The jobId returned with this call can be used to query the corresponding /jobs endpoint for the result of the write operation. content: application/json: schema: $ref: "#/components/schemas/JobIdObject" default: description: "Error payload. See #/responses for a list of general API errors." content: application/json: schema: $ref: "#/components/schemas/ApiError" delete: tags: - Absences summary: DELETE Absences description: Delete multiple absences for HR WORKS. operationId: DeleteAbsences parameters: - name: numbers in: query description: List of absence numbers. required: true explode: true schema: type: array items: type: string description: The number of an absence. Consists of the person's license number before the underscore and the running absence number for the respective person after the underscore. responses: '200': description: Success response. The jobId returned with this call can be used to query the corresponding /jobs endpoint for the result of the write operation. content: application/json: schema: $ref: '#/components/schemas/JobIdObject' default: description: 'Error payload. See #/responses for a list of general API errors.' content: application/json: schema: $ref: '#/components/schemas/ApiError' /v2/absences/jobs/{jobId}: get: tags: - Absences summary: GET Absences Jobs description: After a POST or PUT request to the /absences endpoint was performed, the result can be fetched via the corresponding /jobs endpoint. operationId: GetEditAbsencesStatus parameters: - name: jobId in: path description: The job id of the previous write request. required: true schema: type: string responses: '200': description: Success response. The result can be either pending (containing to response data yet) or finished (containing error or results of the successful write request). content: application/json: schema: oneOf: - $ref: '#/components/schemas/MultiWriteRequestResponse' - $ref: '#/components/schemas/MultiDeleteRequestResponse' - $ref: '#/components/schemas/SingleDeleteRequestResponse' discriminator: propertyName: responseType '400': description: This error is only returned by /jobs endpoints. The submitted jobId was invalid - no matching write request to the API could be found. content: application/json: schema: $ref: '#/components/schemas/ApiError' default: description: 'Error payload. See #/responses for a list of general API errors.' content: application/json: schema: $ref: '#/components/schemas/ApiError' /v2/absences/absence-types: get: tags: - Absences summary: GET Absence Types description: Lists all absence types defined for the caller's customer account in HR WORKS. The keys returned by this action can be used as filter values for other absence actions. operationId: ListAbsenceTypes parameters: - name: onlyActive in: query description: 'If set to true, only the currently active absence types will be returned.' required: false schema: type: boolean responses: '200': description: successful operation content: application/json: schema: $ref: '#/components/schemas/ListAbsenceTypesResponse' default: description: 'Error payload. See #/responses for a list of general API errors.' content: application/json: schema: $ref: '#/components/schemas/ApiError' post: tags: - Absences summary: POST Absence Types description: Create new absences type in HR WORKS. Refer to the data type AbsenceType for a comprehensive list of attributes that can be set. Attributes that are not set/included in the create request are ignored (with the exception of mandatory attributes). operationId: CreateAbsenceTypes requestBody: content: application/json: schema: $ref: '#/components/schemas/EditAbsenceTypesRequest' responses: '200': description: Success response. The jobId returned with this call can be used to query the corresponding /jobs endpoint for the result of the write operation. content: application/json: schema: $ref: '#/components/schemas/JobIdObject' default: description: 'Error payload. See #/responses for a list of general API errors.' content: application/json: schema: $ref: '#/components/schemas/ApiError' parameters: [] /v2/absences/absence-types/jobs/{jobId}: get: tags: - Absences summary: GET Absence Types Jobs description: After a POST or PUT request to the /absences/absence-types endpoint was performed, the result can be fetched via the corresponding /jobs endpoint. operationId: GetEditAbsenceTypesStatus parameters: - name: jobId in: path description: The job id of the previous write request. required: true schema: type: string responses: '200': description: Success response. The result can be either pending (containing to response data yet) or finished (containing error or results of the successful write request). content: application/json: schema: $ref: '#/components/schemas/MultiWriteRequestResponse' '400': description: This error is only returned by /jobs endpoints. The submitted jobId was invalid - no matching write request to the API could be found. content: application/json: schema: $ref: '#/components/schemas/ApiError' default: description: 'Error payload. See #/responses for a list of general API errors.' content: application/json: schema: $ref: '#/components/schemas/ApiError' /v2/absences/leave-accounts: get: tags: - Absences summary: GET Leave Account Data description: Returns the relevant leave account data for the specified persons. operationId: GetLeaveAccountData parameters: - name: persons in: query style: form explode: true description: 'The HR WORKS usernames of the persons to display data for. Note: Using the optional parameter usePersonnelNumbers, HR WORKS personnel numbers can be passed instead of HR WORKS usernames.' required: false schema: type: array items: type: string - name: referenceDate in: query description: The reference date for which the leave account data will be generated. The date interval over which the data will be generated always starts from January 1st of the year specified in this parameter and ends at the reference date. required: false schema: type: string - name: usePersonnelNumbers in: query description: 'If set to true, the API will assume the strings in the persons parameter to represent personnel numbers instead of HR WORKS usernames.' required: false schema: type: boolean - name: onlyActive in: query description: 'Set this parameter to false to return persons that have left the company and were set to gone in HR WORKS as well. Note: Deleted persons cannot be returned as the data was removed from HR WORKS. This parameter will be ignored if persons are specified directly via the persons parameter.' required: false schema: type: boolean - name: page in: query description: 'Set this parameter to access a specific page of results. If the parameter is not set, the first page of results is returned. The API returns paging information via the Link header. The page size for this API call is 50.' required: false schema: type: number default: 1 responses: '200': description: successful operation content: application/json: schema: $ref: '#/components/schemas/GetLeaveAccountDataResponse' default: description: 'Error payload. See #/responses for a list of general API errors.' content: application/json: schema: $ref: '#/components/schemas/ApiError' /v2/absences/{number}: get: tags: - Absences summary: GET Single Absence description: Return the data of a specific absence using the given ID. operationId: GetAbsences parameters: - name: number in: path description: The absence number of the absence. Consists of the person's license number before the underscore and the running absence number for the respective person after the underscore. required: true schema: type: string responses: '200': description: successful operation content: application/json: schema: $ref: '#/components/schemas/Absence' default: description: 'Error payload. See #/responses for a list of general API errors.' content: application/json: schema: $ref: "#/components/schemas/ApiError" put: tags: - Absences summary: PUT Single Absence description: Edit an absence in HR WORKS. Refer to the data type EditAbsenceData for a comprehensive list of attributes that can be set. Attributes that are not set/included in the edit request are ignored (with the exception of mandatory attributes). operationId: EditSingleAbsence parameters: - name: number in: path description: The unique identifier of the absence. Consists of the person's license number before the underscore and the running absence number for the respective person after the underscore. required: true schema: type: string example: "55_1" requestBody: content: application/json: schema: $ref: "#/components/schemas/AbsenceData" responses: "200": description: Success response. The jobId returned with this call can be used to query the corresponding /jobs endpoint for the result of the write operation. content: application/json: schema: $ref: "#/components/schemas/JobIdObject" default: description: "Error payload. See #/responses for a list of general API errors." content: application/json: schema: $ref: "#/components/schemas/ApiError" delete: tags: - Absences summary: DELETE Single Absence description: Delete a single absence in HR WORKS. operationId: DeleteAbsence parameters: - name: number in: path description: The absence number of the absence. Consists of the person's license number before the underscore and the running absence number for the respective person after the underscore. required: true schema: type: string responses: '200': description: Success response. The jobId returned with this call can be used to query the corresponding /jobs endpoint for the result of the write operation. content: application/json: schema: $ref: '#/components/schemas/JobIdObject' default: description: 'Error payload. See #/responses for a list of general API errors.' content: application/json: schema: $ref: '#/components/schemas/ApiError' /v2/absences/accumulated-values: get: tags: - Absences summary: GET Accumulated Absences description: Returns the cumulated working days count of each absence type for the specified persons in the specified date interval. operationId: ListAbsencesAccumulated parameters: - name: persons in: query style: form explode: true description: 'The HR WORKS usernames of the persons to display data for. Note: Using the optional parameter usePersonnelNumbers, HR WORKS personnel numbers can be passed instead of HR WORKS usernames.' required: false schema: type: array items: type: string - name: beginDate in: query description: 'The starting date of the date interval. Note: The maximum date interval is one year.' required: true schema: type: string - name: endDate in: query description: 'The end date of the date interval. Note: The maximum date interval is one year.' required: true schema: type: string - name: types in: query style: form explode: true description: 'This parameter can be used to apply a filter to the result by specifying a list of absence type identifiers/keys. If set, only absences matching one of those keys will be returned. Note: The absence type keys can be retrieved via the /absences/absence-types endpoint.' required: false schema: type: array items: type: string - name: usePersonnelNumbers in: query description: 'If set to true, the API will assume the strings in the persons parameter to represent personnel numbers instead of HR WORKS usernames.' required: false schema: type: boolean - name: interval in: query description: 'Indicates whether the date interval should be split into smaller intervals like weeks or months. If this parameter is not set, the interval will not be split. Setting this parameter to "days" will shorten the maximum allowed interval size to 31 days. Note: The API does not perform any date interval adjustments. E.g., even if "weeks" was specified for the interval parameter, if the date interval specified by beginDate and endDate spans only two days, the data will only be computed for this two-day span. However, if those two days happen to be Monday and Sunday of different weeks, the result will be split accordingly.' required: false schema: $ref: '#/components/schemas/Interval' - name: statusFilter in: query style: form explode: true description: 'If specified, only values matching one of the selected status values will be returned.' required: false schema: type: array items: $ref: '#/components/schemas/AbsenceStatus' - name: page in: query description: 'Set this parameter to access a specific page of results. If the parameter is not set, the first page of results is returned. The API returns paging information via the Link header. The page size for this API call is 50.' required: false schema: type: number default: 1 responses: '200': description: successful operation content: application/json: schema: $ref: '#/components/schemas/ListAbsencesAccumulatedResponse' default: description: 'Error payload. See #/responses for a list of general API errors.' content: application/json: schema: $ref: '#/components/schemas/ApiError' /v2/absences/vacation-types: get: tags: - Absences summary: GET Vacation Types description: Returns the vacation types of the company. operationId: ListAbsencesVacationTypes parameters: - name: onlyAssigned in: query description: "Set this parameter to false to also return vacation types that are not assigned to any person." required: false schema: type: boolean default: true - name: onlyActive in: query description: "Set this parameter to false to also return vacation types that are not active." required: false schema: type: boolean default: true - name: countryCodes in: query style: form explode: true description: A collection of ISO 3166-1 alpha-3 country codes (e.g. DEU, IRL, USA) for which to return data. If not specified, data for all countries of the company will be returned. Country codes without a corresponding country will be omitted. required: false schema: type: array items: type: string responses: "200": description: successful operation content: application/json: schema: $ref: "#/components/schemas/ListVacationTypesResponse" /v2/sick-leaves: get: tags: - Sick Leaves summary: GET Sick Leaves description: Returns a list of sick leaves for the specified persons in the specified date interval. operationId: ListSickLeaves parameters: - name: persons in: query style: form explode: true description: 'The HR WORKS usernames of the persons to display data for. Note: Using the optional parameter usePersonnelNumbers, HR WORKS personnel numbers can be passed instead of HR WORKS usernames.' required: false schema: type: array items: type: string - name: beginDate in: query description: 'The starting date of the date interval. Note: The maximum date interval is one year.' required: true schema: type: string - name: endDate in: query description: 'The end date of the date interval. Note: The maximum date interval is one year.' required: true schema: type: string - name: types in: query style: form explode: true description: 'This parameter can be used to apply a filter to the result by specifying a list of sickness type identifiers/keys. If set, only sick leaves matching one of those keys will be returned. Note: The sick leave type keys can be retrieved via the /sick-leaves/sick-leave-types endpoint.' required: false schema: type: array items: type: string - name: count in: query description: 'If set to "true", this action will return the cumulated working days count for each sick leave type instead of the sickness details. This impacts the structure of the API response.' required: false schema: type: boolean default: false - name: usePersonnelNumbers in: query description: 'If set to true, the API will assume the strings in the persons parameter to represent personnel numbers instead of HR WORKS usernames.' required: false schema: type: boolean default: false - name: interval in: query description: 'Indicates whether the date interval should be split into smaller intervals like weeks or months. If this parameter is not set, the interval will not be split. Setting this parameter to "days" will shorten the maximum allowed interval size to 31 days. Note: The API does not perform any date interval adjustments. E.g., even if "weeks" was specified for the interval parameter, if the date interval specified by beginDate and endDate spans only two days, the data will only be computed for this two-day span. However, if those two days happen to be Monday and Sunday of different weeks, the result will be split accordingly.' required: false schema: $ref: '#/components/schemas/Interval' - name: onlyActive in: query description: 'Set this parameter to false to return persons that have left the company and were set to gone in HR WORKS as well. Note: Deleted persons cannot be returned as the data was removed from HR WORKS. This parameter will be ignored if persons are specified directly via the persons parameter.' required: false schema: type: boolean default: true - name: page in: query description: 'Set this parameter to access a specific page of results. If the parameter is not set, the first page of results is returned. The API returns paging information via the Link header. The page size for this API call is 50.' required: false schema: type: number default: 1 - name: statusFilter in: query style: form explode: true description: 'If specified, only values matching one of the selected status values will be returned.' required: false schema: type: array items: $ref: '#/components/schemas/SickLeaveStatus' responses: '200': description: successful operation content: application/json: schema: $ref: '#/components/schemas/ListSickLeavesResponse' default: description: 'Error payload. See #/responses for a list of general API errors.' content: application/json: schema: $ref: '#/components/schemas/ApiError' delete: tags: - Sick Leaves summary: DELETE Sick Leaves description: Delete multiple sick leaves in HR WORKS. operationId: DeleteSickLeaves parameters: - name: numbers in: query description: List of sick leave numbers. required: true explode: true schema: type: array items: type: string description: The number of a sick leave. Consists of the person's license number before the underscore and the running sick leave number for the respective person after the underscore. responses: '200': description: Success response. The jobId returned with this call can be used to query the corresponding /jobs endpoint for the result of the write operation. content: application/json: schema: $ref: '#/components/schemas/JobIdObject' default: description: 'Error payload. See #/responses for a list of general API errors.' content: application/json: schema: $ref: '#/components/schemas/ApiError' post: tags: - Sick Leaves summary: POST Sick Leaves description: Create new sick leaves in HR WORKS. Refer to the data type SickLeaveData for a comprehensive list of attributes that can be set. Attributes that are not set/included in the create request are ignored (with the exception of mandatory attributes). operationId: CreateSickLeaves requestBody: content: application/json: schema: $ref: '#/components/schemas/CreateSickLeavesRequest' responses: '200': description: Success response. The jobId returned with this call can be used to query the corresponding /jobs endpoint for the result of the write operation. content: application/json: schema: $ref: '#/components/schemas/JobIdObject' default: description: 'Error payload. See #/responses for a list of general API errors.' content: application/json: schema: $ref: '#/components/schemas/ApiError' parameters: [] put: tags: - Sick Leaves summary: PUT Sick Leaves description: Edit sick leave objects in HR WORKS. Refer to the data type SickLeaveData for a comprehensive list of attributes that can be set. Attributes that are not set/included in the edit request are ignored (with the exception of mandatory attributes). operationId: EditSickLeaves requestBody: content: application/json: schema: $ref: "#/components/schemas/EditSickLeavesRequest" responses: "200": description: Success response. The jobId returned with this call can be used to query the corresponding /jobs endpoint for the result of the write operation. content: application/json: schema: $ref: "#/components/schemas/JobIdObject" default: description: "Error payload. See #/responses for a list of general API errors." content: application/json: schema: $ref: "#/components/schemas/ApiError" /v2/sick-leaves/jobs/{jobId}: get: tags: - Sick Leaves summary: GET Sick Leaves Jobs description: After a POST or PUT request to the /sick-leaves endpoint was performed, the result can be fetched via the corresponding /jobs endpoint. operationId: GetEditSickLeavesStatus parameters: - name: jobId in: path description: The job id of the previous write request. required: true schema: type: string responses: '200': description: Success response. The result can be either pending (containing to response data yet) or finished (containing error or results of the successful write request). content: application/json: schema: oneOf: - $ref: '#/components/schemas/MultiWriteRequestResponse' - $ref: '#/components/schemas/MultiDeleteRequestResponse' - $ref: '#/components/schemas/SingleDeleteRequestResponse' discriminator: propertyName: responseType '400': description: This error is only returned by /jobs endpoints. The submitted jobId was invalid - no matching write request to the API could be found. content: application/json: schema: $ref: '#/components/schemas/ApiError' default: description: 'Error payload. See #/responses for a list of general API errors.' content: application/json: schema: $ref: '#/components/schemas/ApiError' /v2/sick-leaves/sick-leave-types: get: tags: - Sick Leaves summary: GET Sick Leave Types description: Lists all sick leave types defined for the caller's customer account in HR WORKS. The keys returned by this action can be used as filter values for other absence actions. operationId: ListSickLeaveTypes parameters: - name: onlyActive in: query description: 'If set to false, the response also contains sick leaves types that are deactivated.' required: false schema: type: boolean default: true responses: '200': description: Success response. content: application/json: schema: $ref: '#/components/schemas/ListSickLeaveTypesResponse' default: description: 'Error payload. See #/responses for a list of general API errors.' content: application/json: schema: $ref: '#/components/schemas/ApiError' post: tags: - Sick Leaves summary: POST Sick Leave Types description: Create new sick leave type in HR WORKS. Refer to the data type SickLeaveType for a comprehensive list of attributes that can be set. Attributes that are not set/included in the create request are ignored (with the exception of mandatory attributes). operationId: CreateSickLeaveTypes requestBody: content: application/json: schema: $ref: '#/components/schemas/EditSickLeaveTypesRequest' responses: '200': description: Success response. content: application/json: schema: $ref: '#/components/schemas/JobIdObject' default: description: 'Error payload. See #/responses for a list of general API errors.' content: application/json: schema: $ref: '#/components/schemas/ApiError' parameters: [] /v2/sick-leaves/sick-leave-types/jobs/{jobId}: get: tags: - Sick Leaves summary: GET Sick Leave Types Jobs description: After a POST or PUT request to the /sick-leaves/sick-leave-types endpoint was performed, the result can be fetched via the corresponding /jobs endpoint. operationId: GetEditSickLeaveTypesStatus parameters: - name: jobId in: path description: The job id of the previous write request. required: true schema: type: string responses: '200': description: Success response. The result can be either pending (containing to response data yet) or finished (containing error or results of the successful write request). content: application/json: schema: $ref: '#/components/schemas/MultiWriteRequestResponse' default: description: 'Error payload. See #/responses for a list of general API errors.' content: application/json: schema: $ref: '#/components/schemas/ApiError' /v2/sick-leaves/{number}: get: tags: - Sick Leaves summary: GET Single Sick Leave description: Return the data of a specific sick leave by the given unique number. operationId: GetSickLeave parameters: - name: number in: path description: The unique identifier of the sick leave. Consists of the person's license number before the underscore and the running sick leave number for the respective person after the underscore. required: true schema: type: string responses: '200': description: successful operation content: application/json: schema: $ref: '#/components/schemas/SickLeave' default: description: 'Error payload. See #/responses for a list of general API errors.' content: application/json: schema: $ref: '#/components/schemas/ApiError' delete: tags: - Sick Leaves summary: DELETE Single Sick Leave description: Delete a single sick leave by ID. operationId: DeleteSickLeave parameters: - name: number in: path description: The number of the sick leave. Consists of the person's license number before the underscore and the running sick leave number for the respective person after the underscore. required: true schema: type: string responses: '200': description: Success response. The jobId returned with this call can be used to query the corresponding /jobs endpoint for the result of the write operation. content: application/json: schema: $ref: '#/components/schemas/JobIdObject' default: description: 'Error payload. See #/responses for a list of general API errors.' content: application/json: schema: $ref: '#/components/schemas/ApiError' /v2/sick-leaves/accumulated-values: get: tags: - Sick Leaves summary: GET Accumulated Sick Leaves description: Returns a list of cumulated working days count for each sick leaves type for the specified persons in the specified date interval. operationId: ListSickLeavesAccumulated parameters: - name: persons in: query style: form explode: true description: 'The HR WORKS usernames of the persons to display data for. Note: Using the optional parameter usePersonnelNumbers, HR WORKS personnel numbers can be passed instead of HR WORKS usernames.' required: false schema: type: array items: type: string - name: beginDate in: query description: 'The starting date of the date interval. Note: The maximum date interval is one year.' required: true schema: type: string - name: endDate in: query description: 'The end date of the date interval. Note: The maximum date interval is one year.' required: true schema: type: string - name: types in: query style: form explode: true description: 'This parameter can be used to apply a filter to the result by specifying a list of sickness type identifiers/keys. If set, only sick leaves matching one of those keys will be returned. Note: The sick leave type keys can be retrieved via the /sick-leaves/sick-leave-types endpoint.' required: false schema: type: array items: type: string - name: usePersonnelNumbers in: query description: 'If set to true, the API will assume the strings in the persons parameter to represent personnel numbers instead of HR WORKS usernames.' required: false schema: type: boolean - name: interval in: query description: 'Indicates whether the date interval should be split into smaller intervals like weeks or months. If this parameter is not set, the interval will not be split. Setting this parameter to "days" will shorten the maximum allowed interval size to 31 days. Note: The API does not perform any date interval adjustments. E.g., even if "weeks" was specified for the interval parameter, if the date interval specified by beginDate and endDate spans only two days, the data will only be computed for this two-day span. However, if those two days happen to be Monday and Sunday of different weeks, the result will be split accordingly.' required: false schema: $ref: '#/components/schemas/Interval' - name: page in: query description: 'Set this parameter to access a specific page of results. If the parameter is not set, the first page of results is returned. The API returns paging information via the Link header. The page size for this API call is 50.' required: false schema: type: number default: 1 - name: statusFilter in: query style: form explode: true description: 'If specified, only values matching one of the selected status values will be returned.' required: false schema: type: array items: $ref: '#/components/schemas/SickLeaveStatus' - name: onlyActive in: query description: 'Set this parameter to false to return persons that have left the company and were set to gone in HR WORKS as well. Note: Deleted persons cannot be returned as the data was removed from HR WORKS. This parameter will be ignored if persons are specified directly via the persons parameter.' required: false schema: type: boolean default: true responses: '200': description: successful operation content: application/json: schema: $ref: '#/components/schemas/ListSickLeavesAccumulatedResponse' default: description: 'Error payload. See #/responses for a list of general API errors.' content: application/json: schema: $ref: '#/components/schemas/ApiError' /v2/remote-work: get: tags: - Remote Work summary: GET Remote Work description: Returns a list of remote work data in the specified date interval. operationId: GetRemoteWork parameters: - name: persons in: query style: form explode: true description: 'The HR WORKS usernames of the persons to display data for. Note: Using the optional parameter usePersonnelNumbers, HR WORKS personnel numbers can be passed instead of HR WORKS usernames.' required: false schema: type: array items: type: string - name: beginDate in: query description: 'The starting date of the date interval. Note: The maximum date interval is one year.' required: true schema: type: string - name: endDate in: query description: 'The end date of the date interval. Note: The maximum date interval is one year.' required: true schema: type: string - name: usePersonnelNumbers in: query description: 'If set to true, the API will assume the strings in the persons parameter to represent personnel numbers instead of HR WORKS usernames.' required: false schema: type: boolean default: false - name: interval in: query description: 'Indicates whether the date interval should be split into smaller intervals like weeks or months. If this parameter is not set, the interval will not be split. Setting this parameter to "days" will shorten the maximum allowed interval size to 31 days. Note: The API does not perform any date interval adjustments. E.g., even if "weeks" was specified for the interval parameter, if the date interval specified by beginDate and endDate spans only two days, the data will only be computed for this two-day span. However, if those two days happen to be Monday and Sunday of different weeks, the result will be split accordingly.' required: false schema: $ref: '#/components/schemas/Interval' - name: onlyActive in: query description: 'Set this parameter to false to return persons that have left the company and were set to gone in HR WORKS as well. Note: Deleted persons cannot be returned as the data was removed from HR WORKS. This parameter will be ignored if persons are specified directly via the persons parameter.' required: false schema: type: boolean default: true - name: page in: query description: 'Set this parameter to access a specific page of results. If the parameter is not set, the first page of results is returned. The API returns paging information via the Link header. The page size for this API call is 50.' required: false schema: type: number default: 1 - name: statusFilter in: query style: form explode: true description: 'If specified, only values matching one of the selected status values will be returned.' required: false schema: type: array items: $ref: '#/components/schemas/RemoteWorkStatus' responses: '200': description: successful operation content: application/json: schema: $ref: '#/components/schemas/ListRemoteWorkResponse' default: description: 'Error payload. See #/responses for a list of general API errors.' content: application/json: schema: $ref: '#/components/schemas/ApiError' post: tags: - Remote Work summary: POST Remote Work description: Create new remote work in HR WORKS. Refer to the data type RemoteWork for a comprehensive list of attributes that can be set. Attributes that are not set/included in the create request are ignored (with the exception of mandatory attributes). operationId: CreateRemoteWork requestBody: content: application/json: schema: $ref: '#/components/schemas/CreateRemoteWorkRequest' responses: '200': description: Success response. The jobId returned with this call can be used to query the corresponding /jobs endpoint for the result of the write operation. content: application/json: schema: $ref: '#/components/schemas/JobIdObject' default: description: 'Error payload. See #/responses for a list of general API errors.' content: application/json: schema: $ref: '#/components/schemas/ApiError' parameters: [] put: tags: - Remote Work summary: PUT Remote Work description: Edit remote work objects in HR WORKS. Refer to the data type EditRemoteWorkData for a comprehensive list of attributes that can be set. Attributes that are not set/included in the edit request are ignored (with the exception of mandatory attributes). operationId: EditRemoteWork requestBody: content: application/json: schema: $ref: "#/components/schemas/EditRemoteWorkRequest" responses: "200": description: Success response. The jobId returned with this call can be used to query the corresponding /jobs endpoint for the result of the write operation. content: application/json: schema: $ref: "#/components/schemas/JobIdObject" default: description: "Error payload. See #/responses for a list of general API errors." content: application/json: schema: $ref: "#/components/schemas/ApiError" /v2/remote-work/jobs/{jobId}: get: tags: - Remote Work summary: GET Remote Work Jobs description: After a POST or PUT request to the /remote-work endpoint was performed, the result can be fetched via the corresponding /jobs endpoint. operationId: GetEditRemoteWorkStatus parameters: - name: jobId in: path description: The job id of the previous write request. required: true schema: type: string responses: '200': description: Success response. The result can be either pending (containing to response data yet) or finished (containing error or results of the successful write request). content: application/json: schema: oneOf: - $ref: '#/components/schemas/MultiWriteRequestResponse' - $ref: '#/components/schemas/SingleDeleteRequestResponse' - $ref: '#/components/schemas/SingleWriteRequestResponse' discriminator: propertyName: responseType '400': description: This error is only returned by /jobs endpoints. The submitted jobId was invalid - no matching write request to the API could be found. content: application/json: schema: $ref: '#/components/schemas/ApiError' default: description: 'Error payload. See #/responses for a list of general API errors.' content: application/json: schema: $ref: '#/components/schemas/ApiError' /v2/remote-work/{number}: get: tags: - Remote Work summary: GET Single Remote Work description: Return the data of a specific remote work instance by the given unique number. operationId: GetSingleRemoteWork parameters: - name: number in: path description: The unique identifier of the remote work. Consists of the person's license number before the underscore and the running remote work number for the respective person after the underscore. required: true schema: type: string responses: '200': description: successful operation content: application/json: schema: $ref: '#/components/schemas/RemoteWork' default: description: 'Error payload. See #/responses for a list of general API errors.' content: application/json: schema: $ref: '#/components/schemas/ApiError' put: tags: - Remote Work summary: PUT Single Remote Work description: Edit a remote work in HR WORKS. Refer to the data type RemoteWork for a comprehensive list of attributes that can be set. Attributes that are not set/included in the edit request are ignored (with the exception of mandatory attributes). operationId: EditSingleRemoteWork parameters: - name: number in: path description: The unique identifier of the remote work. Consists of the person's license number before the underscore and the running remote work number for the respective person after the underscore. required: true schema: type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/RemoteWorkData' responses: '200': description: Success response. The jobId returned with this call can be used to query the corresponding /jobs endpoint for the result of the write operation. content: application/json: schema: $ref: '#/components/schemas/JobIdObject' default: description: 'Error payload. See #/responses for a list of general API errors.' content: application/json: schema: $ref: '#/components/schemas/ApiError' delete: tags: - Remote Work summary: DELETE Single Remote Work description: Delete a single remote work in HR WORKS. operationId: DeleteSingleRemoteWork parameters: - name: number in: path description: The unique identifier of the remote work. Consists of the person's license number before the underscore and the running remote work number for the respective person after the underscore. required: true schema: type: string responses: '200': description: Success response. The jobId returned with this call can be used to query the corresponding /jobs endpoint for the result of the write operation. content: application/json: schema: $ref: '#/components/schemas/JobIdObject' default: description: 'Error payload. See #/responses for a list of general API errors.' content: application/json: schema: $ref: '#/components/schemas/ApiError' /v2/remote-work/accumulated-values: get: tags: - Remote Work summary: GET Remote Work Accumulated Values description: Returns a list of cumulated working days count for each remote work instance in the specified date interval. operationId: GetAccumulatedRemoteWork parameters: - name: persons in: query style: form explode: true description: 'The HR WORKS usernames of the persons to display data for. Note: Using the optional parameter usePersonnelNumbers, HR WORKS personnel numbers can be passed instead of HR WORKS usernames.' required: false schema: type: array items: type: string - name: beginDate in: query description: 'The starting date of the date interval. Note: The maximum date interval is one year.' required: true schema: type: string - name: endDate in: query description: 'The end date of the date interval. Note: The maximum date interval is one year.' required: true schema: type: string - name: usePersonnelNumbers in: query description: 'If set to true, the API will assume the strings in the persons parameter to represent personnel numbers instead of HR WORKS usernames.' required: false schema: type: boolean - name: interval in: query description: 'Indicates whether the date interval should be split into smaller intervals like weeks or months. If this parameter is not set, the interval will not be split. Setting this parameter to "days" will shorten the maximum allowed interval size to 31 days. Note: The API does not perform any date interval adjustments. E.g., even if "weeks" was specified for the interval parameter, if the date interval specified by beginDate and endDate spans only two days, the data will only be computed for this two-day span. However, if those two days happen to be Monday and Sunday of different weeks, the result will be split accordingly.' required: false schema: $ref: '#/components/schemas/Interval' - name: page in: query description: 'Set this parameter to access a specific page of results. If the parameter is not set, the first page of results is returned. The API returns paging information via the Link header. The page size for this API call is 50.' required: false schema: type: number default: 1 - name: statusFilter in: query style: form explode: true description: 'If specified, only values matching one of the selected status values will be returned.' required: false schema: type: array items: $ref: '#/components/schemas/RemoteWorkStatus' - name: onlyActive in: query description: 'Set this parameter to false to return persons that have left the company and were set to gone in HR WORKS as well. Note: Deleted persons cannot be returned as the data was removed from HR WORKS. This parameter will be ignored if persons are specified directly via the persons parameter.' required: false schema: type: boolean default: true responses: '200': description: successful operation content: application/json: schema: $ref: '#/components/schemas/ListRemoteWorkAccumulatedResponse' default: description: 'Error payload. See #/responses for a list of general API errors.' content: application/json: schema: $ref: '#/components/schemas/ApiError' /v2/applicant-management/job-applications: get: tags: - Applicant Management summary: GET Job Applications description: List all job applications with the specified status and post. operationId: ListJobApplications parameters: - name: page in: query description: 'Set this parameter to access a specific page of results. If the parameter is not set, the first page of results is returned. The API returns paging information via the Link header. The page size for this API call is 50.' required: false schema: type: integer default: 1 - name: posts in: query description: The IDs of the posts for which to return job applications. required: false schema: type: array items: type: string - name: statusFilter in: query description: The status identifiers for which to return job applications. required: false schema: type: array items: $ref: '#/components/schemas/JobApplicationStatus' responses: '200': description: successful operation content: application/json: schema: $ref: '#/components/schemas/ListJobApplicationsResponse' default: description: 'Error payload. See #/responses for a list of general API errors.' content: application/json: schema: $ref: '#/components/schemas/ApiError' post: tags: - Applicant Management summary: POST Job Applications description: Create one or multiple job applications for applicant management operationId: CreateJobApplications requestBody: content: application/json: schema: $ref: '#/components/schemas/CreateJobApplicationsRequest' responses: '200': description: Success response. The jobId returned with this call can be used to query the corresponding /jobs endpoint for the result of the write operation. content: application/json: schema: $ref: '#/components/schemas/JobIdObject' default: description: 'Error payload. See #/responses for a list of general API errors.' content: application/json: schema: $ref: '#/components/schemas/ApiError' /v2/applicant-management/job-applications/{id}/files: post: tags: - Applicant Management summary: POST Job Application Files description: Create a new file for a job application in HR WORKS by sending the binary data in body or an URL to download the file from. operationId: CreateJobApplicationFiles requestBody: content: application/octet-stream: schema: type: string format: binary description: 'The file to add in binary format (required if no file url is provided)' application/json: schema: type: object properties: webhook: $ref: '#/components/schemas/WebhookConfiguration' responses: '200': description: Success response. The jobId returned with this call can be used to query the job-applications/jobs endpoint for the result of the write operation. content: application/json: schema: $ref: '#/components/schemas/JobIdObject' default: description: 'Error payload. See #/responses for a list of general API errors.' content: application/json: schema: $ref: '#/components/schemas/ApiError' parameters: - name: content-type in: header description: 'The Mime-type of the file, e.g. ''application/pdf''' required: true schema: type: string example: application/pdf - name: fileName in: query description: The name of the file to display in HR WORKS. required: true schema: type: string example: testFile.pdf - name: id in: path description: The id of the job application that the uploaded file belongs to. required: true schema: type: string - name: url in: query description: 'The url of the document (required if the file is not sent via the request body).' required: false schema: type: string /v2/applicant-management/posts: get: tags: - Applicant Management summary: GET Posts description: List all posts of the company. operationId: ListPosts responses: '200': description: successful operation content: application/json: schema: $ref: '#/components/schemas/ListPostsResponse' default: description: 'Error payload. See #/responses for a list of general API errors.' content: application/json: schema: $ref: '#/components/schemas/ApiError' parameters: - name: onlyActive in: query description: Set this parameter to either return only active posts (true) or all posts (false). The default value is true required: false schema: type: boolean default: true /v2/applicant-management/posts/{uuid}: get: tags: - Applicant Management summary: GET Single Post description: Returns the data of a single post with the given id. operationId: GetPost responses: '200': description: successful operation content: application/json: schema: $ref: '#/components/schemas/Post' default: description: 'Error payload. See #/responses for a list of general API errors.' content: application/json: schema: $ref: '#/components/schemas/ApiError' parameters: - name: uuid in: path description: The uuid or id of the post in HR WORKS. The unique identifier cannot be changed. The passing of the id is deprecated. required: true schema: type: string /v2/applicant-management/applicants: get: tags: - Applicant Management summary: GET Applicants description: Returns a list of applicants. Only applicants with job applications are returned. operationId: ListApplicants parameters: - name: applicants in: query style: form explode: true description: The UUIDs of the applicants to display data for. required: false schema: type: array items: type: string - name: statusFilter in: query style: form explode: true description: If set, only applicants with a job application in the specified status will be returned. required: false schema: type: array items: $ref: '#/components/schemas/JobApplicationStatus' - name: page in: query description: 'Set this parameter to access a specific page of results. If the parameter is not set, the first page of results is returned. The API returns paging information via the Link header. The page size for this API call is 50.' required: false schema: type: number default: 1 responses: '200': description: successful operation content: application/json: schema: $ref: '#/components/schemas/ListApplicantsResponse' /v2/applicant-management/applicants/{uuid}: get: tags: - Applicant Management summary: GET Single Applicant description: Returns the data of one specific applicant. operationId: GetApplicant parameters: - name: uuid in: path description: The unique identifier of the person in HR WORKS. This identifier does not change, when the applicant is converted to an employee person. required: true schema: type: string responses: '200': description: successful operation content: application/json: schema: $ref: '#/components/schemas/Applicant' default: description: 'Error payload. See #/responses for a list of general API errors.' content: application/json: schema: $ref: '#/components/schemas/ApiError' /v2/cost-objects/cost-centers: get: tags: - Cost Accounting summary: GET Cost Centers description: Lists all cost centers of the company with ID/number and name. operationId: ListCostCenters responses: '200': description: successful operation content: application/json: schema: $ref: '#/components/schemas/ListCostCentersResponse' default: description: 'Error payload. See #/responses for a list of general API errors.' content: application/json: schema: $ref: '#/components/schemas/ApiError' parameters: - name: page in: query description: 'Set this parameter to access a specific page of results. If the parameter is not set, the first page of results is returned. The API returns paging information via the Link header. The page size for this API call is 10000.' required: false schema: type: number default: 1 post: tags: - Cost Accounting summary: POST Cost Centers description: Create cost centers in HR WORKS. operationId: CreateCostCenters parameters: - name: overwriteNames in: query description: 'If set to true, existing cost object names will be overwritten if a new cost object with the same number is passed to the API.' required: false schema: type: boolean default: false requestBody: content: application/json: schema: $ref: '#/components/schemas/CreateCostCentersRequest' description: Collection of cost center data. required: true responses: '200': description: Success response. The jobId returned with this call can be used to query the corresponding /jobs endpoint for the result of the write operation. content: application/json: schema: $ref: '#/components/schemas/JobIdObject' default: description: 'Error payload. See #/responses for a list of general API errors.' content: application/json: schema: $ref: '#/components/schemas/ApiError' delete: tags: - Cost Accounting summary: DELETE Cost Centers description: Deletes all existing cost centers. Useful to perform before importing new cost objects to get a clean slate to work with. operationId: DeleteCostCenters responses: '200': description: Success response. The jobId returned with this call can be used to query the corresponding /jobs endpoint for the result of the write operation. content: application/json: schema: $ref: '#/components/schemas/JobIdObject' default: description: 'Error payload. See #/responses for a list of general API errors.' content: application/json: schema: $ref: '#/components/schemas/ApiError' parameters: [] /v2/cost-objects/cost-centers/jobs/{jobId}: get: tags: - Cost Accounting summary: GET Cost Centers Jobs description: After a POST or PUT or DELETE request to the /cost-objects/cost-centers endpoint was performed, the result can be fetched via the corresponding /jobs endpoint. operationId: GetEditCostCentersStatus parameters: - name: jobId in: path description: The job id of the previous write request. required: true schema: type: string responses: '200': description: Success response. The result can be either pending (containing to response data yet) or finished (containing error or results of the successful write request). content: application/json: schema: oneOf: - $ref: '#/components/schemas/MultiWriteRequestResponse' - $ref: '#/components/schemas/MultiDeleteRequestResponse' discriminator: propertyName: responseType '400': description: This error is only returned by /jobs endpoints. The submitted jobId was invalid - no matching write request to the API could be found. content: application/json: schema: $ref: '#/components/schemas/ApiError' default: description: 'Error payload. See #/responses for a list of general API errors.' content: application/json: schema: $ref: '#/components/schemas/ApiError' /v2/applicant-management/job-applications/jobs/{jobId}: get: tags: - Applicant Management summary: GET Job Applications Jobs description: After a POST request to the /applicant-management/job-applications endpoint was performed, the result can be fetched via the corresponding /jobs endpoint. operationId: GetEditJobApplicationsStatus parameters: - name: jobId in: path description: The job id of the previous write request. required: true schema: type: string responses: '200': description: Success response. The result can be either pending (containing to response data yet) or finished (containing error or results of the successful write request). content: application/json: schema: oneOf: - $ref: '#/components/schemas/FileUploadRequestResponse' - $ref: '#/components/schemas/MultiWriteRequestResponse' discriminator: propertyName: responseType '400': description: This error is only returned by /jobs endpoints. The submitted jobId was invalid - no matching write request to the API could be found. content: application/json: schema: $ref: '#/components/schemas/ApiError' default: description: 'Error payload. See #/responses for a list of general API errors.' content: application/json: schema: $ref: '#/components/schemas/ApiError' /v2/cost-objects/cost-centers/assignments: post: tags: - Cost Accounting summary: POST Cost Centers Assignments description: "Create cost center assignments to persons and/or organization units in HR WORKS. Limits: The maximum number of cost object assignments that can be created with a single API call is 2000." operationId: CreateCostCenterAssignments parameters: - name: personIdentifierType in: query description: Specifies the type of personIdentifiers in the request. Default is uuid. required: false schema: $ref: '#/components/schemas/PersonIdentifierType' requestBody: content: application/json: schema: $ref: '#/components/schemas/CreateCostCenterAssignmentsRequest' description: Collection of cost center assignment data. required: true responses: '200': description: Success response. The jobId returned with this call can be used to query the corresponding /jobs endpoint for the result of the write operation. content: application/json: schema: $ref: '#/components/schemas/JobIdObject' default: description: 'Error payload. See #/responses for a list of general API errors.' content: application/json: schema: $ref: '#/components/schemas/ApiError' /v2/cost-objects/cost-centers/assignments/jobs/{jobId}: get: tags: - Cost Accounting summary: GET Cost Centers Assignments Jobs description: After a POST or PUT or DELETE request to the /cost-objects/cost-centers/assignments endpoint was performed, the result can be fetched via the corresponding /jobs endpoint. operationId: GetEditCostCenterAssignmentsStatus parameters: - name: jobId in: path description: The job id of the previous write request. required: true schema: type: string responses: '200': description: Success response. The result can be either pending (containing to response data yet) or finished (containing error or results of the successful write request). content: application/json: schema: $ref: '#/components/schemas/MultiWriteRequestResponse' '400': description: This error is only returned by /jobs endpoints. The submitted jobId was invalid - no matching write request to the API could be found. content: application/json: schema: $ref: '#/components/schemas/ApiError' default: description: 'Error payload. See #/responses for a list of general API errors.' content: application/json: schema: $ref: '#/components/schemas/ApiError' /v2/cost-objects/cost-objectives: get: tags: - Cost Accounting summary: GET Cost Objectives description: Lists all cost objectives of the company with ID/number and name. operationId: ListCostObjectives responses: '200': description: successful operation content: application/json: schema: $ref: '#/components/schemas/ListCostObjectivesResponse' default: description: 'Error payload. See #/responses for a list of general API errors.' content: application/json: schema: $ref: '#/components/schemas/ApiError' parameters: - name: page in: query description: 'Set this parameter to access a specific page of results. If the parameter is not set, the first page of results is returned. The API returns paging information via the Link header. The page size for this API call is 10000.' required: false schema: type: number default: 1 post: tags: - Cost Accounting summary: POST Cost Objectives description: Create cost objectives in HR WORKS. operationId: CreateCostObjectives parameters: - name: overwriteNames in: query description: 'If set to true, existing cost object names will be overwritten if a new cost object with the same number is passed to the API.' required: false schema: type: boolean default: false requestBody: content: application/json: schema: $ref: '#/components/schemas/CreateCostObjectivesRequest' description: Collection of cost objectives data. required: true responses: '200': description: Success response. The jobId returned with this call can be used to query the corresponding /jobs endpoint for the result of the write operation. content: application/json: schema: $ref: '#/components/schemas/JobIdObject' default: description: 'Error payload. See #/responses for a list of general API errors.' content: application/json: schema: $ref: '#/components/schemas/ApiError' delete: tags: - Cost Accounting summary: DELETE Cost Objectives description: Deletes all existing cost objectives. Useful to perform before importing new cost objects to get a clean slate to work with. operationId: DeleteCostObjectives responses: '200': description: Success response. The jobId returned with this call can be used to query the corresponding /jobs endpoint for the result of the write operation. content: application/json: schema: $ref: '#/components/schemas/JobIdObject' default: description: 'Error payload. See #/responses for a list of general API errors.' content: application/json: schema: $ref: '#/components/schemas/ApiError' parameters: [] /v2/cost-objects/cost-objectives/jobs/{jobId}: get: tags: - Cost Accounting summary: GET Cost Objectives Jobs description: After a POST or PUT or DELETE request to the /cost-objects/cost-objectives endpoint was performed, the result can be fetched via the corresponding /jobs endpoint. operationId: GetEditCostObjectiveStatus parameters: - name: jobId in: path description: The job id of the previous write request. required: true schema: type: string responses: '200': description: Success response. The result can be either pending (containing to response data yet) or finished (containing error or results of the successful write request). content: application/json: schema: oneOf: - $ref: '#/components/schemas/MultiWriteRequestResponse' - $ref: '#/components/schemas/MultiDeleteRequestResponse' discriminator: propertyName: responseType '400': description: This error is only returned by /jobs endpoints. The submitted jobId was invalid - no matching write request to the API could be found. content: application/json: schema: $ref: '#/components/schemas/ApiError' default: description: 'Error payload. See #/responses for a list of general API errors.' content: application/json: schema: $ref: '#/components/schemas/ApiError' /v2/cost-objects/cost-objectives/assignments: post: tags: - Cost Accounting summary: POST Cost Objectives Assignments description: "Create cost objectives assignments to persons and/or organization units in HR WORKS. Limits: The maximum number of cost object assignments that can be created with a single API call is 2000." operationId: CreateCostObjectiveAssignments parameters: - name: personIdentifierType in: query description: Specifies the type of personIdentifiers in the request. Default is uuid. required: false schema: $ref: '#/components/schemas/PersonIdentifierType' requestBody: content: application/json: schema: $ref: '#/components/schemas/CreateCostObjectiveAssignmentsRequest' description: Collection of objectives center assignment data. required: true responses: '200': description: Success response. The jobId returned with this call can be used to query the corresponding /jobs endpoint for the result of the write operation. content: application/json: schema: $ref: '#/components/schemas/JobIdObject' default: description: 'Error payload. See #/responses for a list of general API errors.' content: application/json: schema: $ref: '#/components/schemas/ApiError' /v2/cost-objects/cost-objectives/assignments/jobs/{jobId}: get: tags: - Cost Accounting summary: GET Cost Objectives Assignments Jobs description: After a POST or PUT or DELETE request to the /cost-objects/cost-objectives/assignments endpoint was performed, the result can be fetched via the corresponding /jobs endpoint. operationId: GetEditCostObjectiveAssignmentsStatus parameters: - name: jobId in: path description: The job id of the previous write request. required: true schema: type: string responses: '200': description: Success response. The result can be either pending (containing to response data yet) or finished (containing error or results of the successful write request). content: application/json: schema: $ref: '#/components/schemas/MultiWriteRequestResponse' '400': description: This error is only returned by /jobs endpoints. The submitted jobId was invalid - no matching write request to the API could be found. content: application/json: schema: $ref: '#/components/schemas/ApiError' default: description: 'Error payload. See #/responses for a list of general API errors.' content: application/json: schema: $ref: '#/components/schemas/ApiError' /v2/travel-expenses/expense-reports: get: tags: - Travel Expenses summary: GET Expense Reports description: Returns a list of expense reports for the specified persons in the specified date interval. operationId: ListExpenseReports parameters: - name: personIdentifierType in: query description: Specifies the type of identifiers in the persons parameter. Default is personId. required: false schema: $ref: '#/components/schemas/PersonIdentifierType' - name: persons in: query style: form explode: true description: 'The identifiers of the persons to display data for. Use personIdentifierType to specify what type the values are.' required: false schema: type: array items: type: string - name: statusFilter in: query style: form explode: true description: 'If specified, only expense reports matching one of the selected status values will be returned.' required: false schema: type: array items: $ref: '#/components/schemas/ExpenseReportStatus' - name: beginDate in: query description: 'The starting date of the date interval. Note: The maximum date interval is one year.' required: true schema: type: string - name: endDate in: query description: 'The end date of the date interval. Note: The maximum date interval is one year.' required: true schema: type: string - name: usePersonnelNumbers in: query description: 'Deprecated - use personIdentifierType instead. If set to true, the API will assume the strings in the persons parameter to represent personnel numbers instead of HR WORKS usernames.' required: false deprecated: true schema: type: boolean default: false - name: includeExpenseReportsWithoutTrip in: query description: 'If set to true, the API response will include expense reports that are not associated with a physical trip and represent a collection of receipts.' required: false schema: type: boolean - name: interval in: query description: 'Indicates whether the date interval should be split into smaller intervals like weeks or months. If this parameter is not set, the interval will not be split. Setting this parameter to "days" will shorten the maximum allowed interval size to 31 days. Note: The API does not perform any date interval adjustments. E.g., even if "weeks" was specified for the interval parameter, if the date interval specified by beginDate and endDate spans only two days, the data will only be computed for this two-day span. However, if those two days happen to be Monday and Sunday of different weeks, the result will be split accordingly.' required: false schema: $ref: '#/components/schemas/Interval' - name: onlyActive in: query description: 'Set this parameter to false to return persons that have left the company and were set to gone in HR WORKS as well. Note: Deleted persons cannot be returned as the data was removed from HR WORKS. This parameter will be ignored if persons are specified directly via the persons parameter.' required: false schema: type: boolean - name: page in: query description: 'Set this parameter to access a specific page of results. If the parameter is not set, the first page of results is returned. The API returns paging information via the Link header. The page size for this API call is 20.' required: false schema: type: number default: 1 responses: '200': description: successful operation content: application/json: schema: $ref: '#/components/schemas/ListExpenseReportsResponse' default: description: 'Error payload. See #/responses for a list of general API errors.' content: application/json: schema: $ref: '#/components/schemas/ApiError' post: tags: - Travel Expenses summary: POST Travel Expense Reports description: Create one or many travel expense reports for persons in HR WORKS. operationId: CreateTravelExpenseReports parameters: - name: personIdentifierType in: query description: Specifies the type of personIdentifiers in the request. Default is personnelNumber. required: false schema: $ref: '#/components/schemas/PersonIdentifierType' requestBody: content: application/json: schema: $ref: '#/components/schemas/CreateTravelExpenseReportsRequest' description: Collection of create travel expense report data. required: true responses: '200': description: Success response. The jobId returned with this call can be used to query the corresponding /jobs endpoint for the result of the write operation. content: application/json: schema: $ref: '#/components/schemas/JobIdObject' default: description: 'Error payload. See #/responses for a list of general API errors.' content: application/json: schema: $ref: '#/components/schemas/ApiError' /v2/travel-expenses/expense-reports/jobs/{jobId}: get: tags: - Travel Expenses summary: GET Travel Expense Report Jobs description: After a POST request to the /travel-expenses/expense-reports endpoint was performed, the result can be fetched via the corresponding /jobs endpoint. operationId: GetEditTravelExpenseReportsStatus parameters: - name: jobId in: path description: The job id. required: true schema: type: string responses: '200': description: Success response. The result can be either pending (containing to response data yet) or finished (containing error or results of the successful write request). content: application/json: schema: $ref: '#/components/schemas/MultiWriteRequestResponse' '400': description: This error is only returned by /jobs endpoints. The submitted jobId was invalid - no matching write request to the API could be found. content: application/json: schema: $ref: '#/components/schemas/ApiError' default: description: 'Error payload. See #/responses for a list of general API errors.' content: application/json: schema: $ref: '#/components/schemas/ApiError' /v2/travel-expenses/receipt-types: get: tags: - Travel Expenses summary: GET Receipt Types description: Returns a list of receipt types. operationId: ListReceiptTypes parameters: - name: countryCodes in: query style: form explode: true description: 'An array of ISO 3166-1 alpha-3 country codes (e.g. DEU, IRL, USA) for which to return data. If not specified, data for all countries in the HR WORKS company will be returned. Country codes for which no corresponding country is found will be omitted.' required: false schema: type: array items: type: string - name: onlyActive in: query description: 'Set this parameter to false to also return receipt types that are not active.' required: false schema: type: boolean default: true - name: categories in: query description: 'If specified, only receipt types matching one of the selected categories will be returned.' style: form explode: true required: false schema: type: array items: $ref: '#/components/schemas/ReceiptCategory' responses: '200': description: successful operation content: application/json: schema: $ref: '#/components/schemas/ListReceiptTypesResponse' default: description: 'Error payload. See #/responses for a list of general API errors.' content: application/json: schema: $ref: '#/components/schemas/ApiError' /v2/travel-expenses/expense-reports/{number}: get: tags: - Travel Expenses summary: GET Single Expense Report description: Return the data of a specific travel expense report by the given unique number. operationId: GetTravelExpense parameters: - name: number in: path description: The unique identifier of the travel expense report. Consists of the person's personnel number before and the trip number after the dash symbol. example: 1-1 required: true schema: type: string responses: '200': description: successful operation content: application/json: schema: $ref: '#/components/schemas/ExpenseReport' default: description: 'Error payload. See #/responses for a list of general API errors.' content: application/json: schema: $ref: '#/components/schemas/ApiError' /v2/travel-expenses/travel-requests: get: tags: - Travel Expenses summary: GET Travel Requests description: Returns a list of travel requests for the specified persons in the specified date interval. operationId: ListTravelRequests parameters: - name: personIdentifierType in: query description: Specifies the type of identifiers in the persons parameter. Default is personId. required: false schema: $ref: '#/components/schemas/PersonIdentifierType' - name: persons in: query style: form explode: true description: 'The identifiers of the persons to display data for. Use personIdentifierType to specify what type the values are.' required: false schema: type: array items: type: string - name: statusFilter in: query description: 'If specified, only travel requests matching one of the selected status values will be returned.' style: form explode: true required: false schema: type: array items: $ref: '#/components/schemas/TravelRequestStatus' - name: beginDate in: query description: 'The starting date of the date interval. Note: The maximum date interval is one year.' required: true schema: type: string - name: endDate in: query description: 'The end date of the date interval. Note: The maximum date interval is one year.' required: true schema: type: string - name: usePersonnelNumbers in: query description: 'Deprecated - use personIdentifierType instead. If set to true, the API will assume the strings in the persons parameter to represent personnel numbers instead of HR WORKS usernames.' required: false deprecated: true schema: type: boolean default: false - name: interval in: query description: 'Indicates whether the date interval should be split into smaller intervals like weeks or months. If this parameter is not set, the interval will not be split. Setting this parameter to "days" will shorten the maximum allowed interval size to 31 days. Note: The API does not perform any date interval adjustments. E.g., even if "weeks" was specified for the interval parameter, if the date interval specified by beginDate and endDate spans only two days, the data will only be computed for this two-day span. However, if those two days happen to be Monday and Sunday of different weeks, the result will be split accordingly.' required: false schema: $ref: '#/components/schemas/Interval' - name: onlyActive in: query description: 'Set this parameter to false to return persons that have left the company and were set to gone in HR WORKS as well. Note: Deleted persons cannot be returned as the data was removed from HR WORKS. This parameter will be ignored if persons are specified directly via the persons parameter.' required: false schema: type: boolean - name: page in: query description: 'Set this parameter to access a specific page of results. If the parameter is not set, the first page of results is returned. The API returns paging information via the Link header. The page size for this API call is 50.' required: false schema: type: number default: 1 responses: '200': description: successful operation content: application/json: schema: $ref: '#/components/schemas/ListTravelRequestsResponse' default: description: 'Error payload. See #/responses for a list of general API errors.' content: application/json: schema: $ref: '#/components/schemas/ApiError' /v2/travel-expenses/travel-requests/{number}: get: tags: - Travel Expenses summary: GET Single Travel Request description: Return the data of a specific travel request by the given unique number. operationId: GetTravelRequest parameters: - name: number in: path description: The unique identifier of the travel request. Consists of the person's personnel number before and the trip request number after the dash symbol. example: 1-1 required: true schema: type: string responses: '200': description: successful operation content: application/json: schema: $ref: '#/components/schemas/TravelRequest' default: description: 'Error payload. See #/responses for a list of general API errors.' content: application/json: schema: $ref: '#/components/schemas/ApiError' /v2/working-times: get: tags: - Working Times summary: GET Working Times description: "Returns a list of working times for the specified persons in the specified date interval.
Note: Only persons with a time tracking regulation for the requested date interval will be part of the returned data.
" operationId: GetWorkingTimes parameters: - name: beginDate in: query description: The begin date of the interval to look for working times. Date in YYYY-MM-DD format. required: true schema: type: string format: date - name: endDate in: query description: The end date of the interval to look for working times. Date in YYYY-MM-DD format. required: true schema: type: string format: date - name: persons in: query style: form explode: true description: 'The HR WORKS usernames of the persons to display data for. Note: Using the optional parameter usePersonnelNumbers, HR WORKS personnel numbers can be passed instead of HR WORKS usernames.' required: false schema: type: array items: type: string - name: types in: query style: form explode: true description: The working time types to filter for. You can get a list of all working time types available for specific time recording regulations using the /working-times/time-recording-regulations endpoint. required: false schema: type: array items: type: string - name: usePersonnelNumbers in: query description: 'If set to true, the API will assume the strings in the persons parameter to represent personnel numbers instead of HR WORKS usernames.' required: false schema: type: boolean default: false - name: interval in: query description: 'Indicates whether the date interval should be split into smaller intervals like weeks or months. If this parameter is not set, the interval will not be split. Setting this parameter to ''days'' will shorten the maximum allowed interval size to 31 days. Note: The API does not perform any date interval adjustments. E.g., even if weeks was specified for the interval parameter, if the date interval specified by beginDate and endDate spans only two days, the data will only be computed for this two-day span. However, if those two days happen to be Monday and Sunday of different weeks, the result will be split accordingly.' required: false schema: $ref: '#/components/schemas/Interval' - name: page in: query description: 'Set this parameter to access a specific page of results. If the parameter is not set, the first page of results is returned. The API returns paging information via the Link header. The page size for this API call is 50.' required: false schema: type: number default: 1 responses: '200': description: successful operation content: application/json: schema: $ref: '#/components/schemas/GetPersonWorkingTimesResponse' default: description: 'Error payload. See #/responses for a list of general API errors.' content: application/json: schema: $ref: '#/components/schemas/ApiError' post: tags: - Working Times summary: POST Working Times description: "Create working times for persons in HR WORKS. Limits: The maximum number of working times that can be created with a single API call is 1000." operationId: CreateWorkingTimes requestBody: content: application/json: schema: $ref: '#/components/schemas/CreateWorkingTimesRequest' description: Collection of create working times data. required: true responses: '200': description: Success response. The jobId returned with this call can be used to query the corresponding /jobs endpoint for the result of the write operation. content: application/json: schema: $ref: '#/components/schemas/JobIdObject' default: description: 'Error payload. See #/responses for a list of general API errors.' content: application/json: schema: $ref: '#/components/schemas/ApiError' put: tags: - Working Times summary: PUT Working Times description: "Edit already existing working times for persons in HR WORKS. Limits: The maximum number of working times that can be edited with a single API call is 1000." operationId: EditWorkingTimes requestBody: content: application/json: schema: $ref: '#/components/schemas/EditWorkingTimesRequest' description: Collection of edit working times data. required: true responses: '200': description: Success response. The jobId returned with this call can be used to query the corresponding /jobs endpoint for the result of the write operation. content: application/json: schema: $ref: '#/components/schemas/JobIdObject' default: description: 'Error payload. See #/responses for a list of general API errors.' content: application/json: schema: $ref: '#/components/schemas/ApiError' delete: tags: - Working Times summary: DELETE Working Times description: "Delete multiple working times for persons in HR WORKS. Limits: The maximum number of working times that can be deleted with a single API call is 1000." operationId: DeleteWorkingTimes parameters: - name: numbers in: query description: A list of working time numbers to delete. The numbers consist of the personnel number before the underscore and the beginDateAndTime formatted as Unix Time Seconds after the underscore (e.g. "1_1683093600", where 1 is the personnel number and "1683093600" is the begin date and time of the working time). required: true style: form explode: true schema: type: array items: type: string description: The number of an working time. Consists of the personnel number before the underscore and the begin time in unix time seconds after the underscore. responses: '200': description: Success response. The jobId returned with this call can be used to query the corresponding /jobs endpoint for the result of the write operation. content: application/json: schema: $ref: '#/components/schemas/JobIdObject' /v2/working-times/jobs/{jobId}: get: tags: - Working Times summary: GET Working Times Jobs description: After a POST request to the /working-times endpoint was performed, the result can be fetched via the corresponding /jobs endpoint. operationId: GetCreateWorkingTimesStatus parameters: - name: jobId in: path description: The job id of the previous write request. required: true schema: type: string responses: '200': description: Success response. The result can be either pending (containing to response data yet) or finished (containing error or results of the successful write request). content: application/json: schema: oneOf: - $ref: '#/components/schemas/MultiWriteRequestResponse' - $ref: '#/components/schemas/MultiDeleteRequestResponse' discriminator: propertyName: responseType '400': description: This error is only returned by /jobs endpoints. The submitted jobId was invalid - no matching write request to the API could be found. content: application/json: schema: $ref: '#/components/schemas/ApiError' default: description: 'Error payload. See #/responses for a list of general API errors.' content: application/json: schema: $ref: '#/components/schemas/ApiError' /v2/working-times/time-accounts: get: tags: - Working Times summary: GET Time Accounts description: Returns the time accounts of the specified persons. operationId: GetPersonsTimeAccounts parameters: - name: persons in: query style: form explode: true description: 'The HR WORKS usernames of the persons to display data for. Note: Using the optional parameter usePersonnelNumbers, HR WORKS personnel numbers can be passed instead of HR WORKS usernames.' required: false schema: type: array items: type: string - name: usePersonnelNumbers in: query description: 'If set to true, the API will assume the strings in the persons parameter to represent personnel numbers instead of HR WORKS usernames.' required: false schema: type: boolean default: false - name: onlyActive in: query description: 'Set this parameter to false to return persons that have left the company and were set to gone in HR WORKS as well. Note: Deleted persons cannot be returned as the data was removed from HR WORKS. This parameter will be ignored if persons are specified directly via the persons parameter.' required: false schema: type: boolean default: true - name: page in: query description: 'Set this parameter to access a specific page of results. If the parameter is not set, the first page of results is returned. The API returns paging information via the Link header. The page size for this API call is 50.' required: false schema: type: number default: 1 - in: query name: monthYears required: false schema: type: array items: $ref: '#/components/schemas/MonthYear' style: form explode: true description: 'List of month year combinations in the following format: YYYY-MM. Default: The current month.' responses: '200': description: successful operation content: application/json: schema: $ref: '#/components/schemas/GetPersonTimeAccountsResponse' default: description: 'Error payload. See #/responses for a list of general API errors.' content: application/json: schema: $ref: '#/components/schemas/ApiError' /v2/working-times/time-recording-regulations: get: tags: - Working Times summary: GET Time Recording Regulations description: Return all time recording regulations of the company. operationId: GetWorkingTimeRegulations responses: '200': description: successful operation content: application/json: schema: $ref: '#/components/schemas/ListTimeRecordingRegulationsResponse' default: description: 'Error payload. See #/responses for a list of general API errors.' content: application/json: schema: $ref: '#/components/schemas/ApiError' /v2/working-times/projects: get: tags: - Working Times summary: GET Time Tracking Projects description: Returns a list of time tracking projects in the specified date interval. operationId: GetTimeTrackingProjects parameters: - name: beginDate in: query description: The begin date of the interval to look for time tracking projects. Date in YYYY-MM-DD format. required: false schema: type: string format: date - name: endDate in: query description: The end date of the interval to look for time tracking projects. Date in YYYY-MM-DD format. required: false schema: type: string format: date - name: numbers in: query style: form explode: true description: Set this parameter to only get the time tracking projects with the matching projectNumber. required: false schema: type: array items: type: string - name: statusFilter in: query style: form explode: true description: Set this parameter to only get time tracking projects with the given status. required: false schema: type: array items: $ref: '#/components/schemas/TimeTrackingProjectStatus' - name: projectType in: query description: This parameter can be used to apply a filter to the result by specifying a certain project type. required: false schema: $ref: '#/components/schemas/TimeTrackingProjectType' - name: page in: query description: 'Set this parameter to access a specific page of results. If the parameter is not set, the first page of results is returned. The API returns paging information via the Link header. The page size for this API call is 50.' required: false schema: type: number default: 1 - name: projectIds in: query description: 'Set this parameter to recieve only the time tracking projects with the matching projectIds.' style: form explode: true required: false schema: type: array items: type: string - name: projectManagerPersonnelNumber in: query description: 'Set this parameter to only receive the time tracking projects with the matching project manager for the personnelNumber.' required: false schema: type: string - name: projectCustomerId in: query description: 'Set this parameter to only receive the time tracking projects with the matching project customer for the id' required: false schema: type: string responses: '200': description: successful operation content: application/json: schema: $ref: '#/components/schemas/GetTimeTrackingProjectsResponse' default: description: 'Error payload. See #/responses for a list of general API errors.' content: application/json: schema: $ref: "#/components/schemas/ApiError" post: tags: - Working Times summary: POST Time Tracking Projects description: Create time tracking projects. operationId: CreateTimeTrackingProjects requestBody: content: application/json: schema: $ref: "#/components/schemas/CreateTimeTrackingProjectsRequest" description: An array of time tracking projects to create. required: true responses: "200": description: Success response. The jobId returned with this call can be used to query the corresponding /jobs endpoint for the result of the write operation. content: application/json: schema: $ref: "#/components/schemas/JobIdObject" default: description: "Error payload. See #/responses for a list of general API errors." content: application/json: schema: $ref: "#/components/schemas/ApiError" /v2/working-times/projects/jobs/{jobId}: get: tags: - Working Times summary: GET Time Tracking Project Jobs description: After a POST request to the /working-times/projects endpoint was performed, the result can be fetched via the corresponding /jobs endpoint. operationId: GetEditTimeTrackingProjectsStatus parameters: - name: jobId in: path description: The job id of the previous write request. required: true schema: type: string responses: "200": description: Success response. The result can be either pending (containing no response data yet) or finished (containing error or results of the successful write request). content: application/json: schema: $ref: "#/components/schemas/MultiWriteRequestResponse" "400": description: "This error is only returned by /jobs endpoints. The submitted jobId was invalid - no matching write request to the API could be found." content: application/json: schema: $ref: "#/components/schemas/ApiError" default: description: "Error payload. See #/responses for a list of general API errors." content: application/json: schema: $ref: "#/components/schemas/ApiError" /v2/working-times/projects/{id}: get: tags: - Working Times summary: GET Single Time Tracking Project description: Return the data of a specific time tracking project by the given unique id. operationId: GetSingleTimeTrackingProject parameters: - name: id in: path required: true description: The unique id of the time tracking project. schema: type: string responses: '200': description: successful operation content: application/json: schema: $ref: '#/components/schemas/TimeTrackingProject' default: description: 'Error payload. See #/responses for a list of general API errors.' content: application/json: schema: $ref: '#/components/schemas/ApiError' /v2/working-times/projects/assignments: post: tags: - Working Times summary: POST Time Tracking Project Assignments description: Add persons to project teams. operationId: CreateTimeTrackingProjectAssignments requestBody: content: application/json: schema: $ref: "#/components/schemas/CreateTimeTrackingProjectAssignmentsRequest" description: An array of time tracking project assignments to create. required: true responses: "200": description: Success response. The jobId returned with this call can be used to query the corresponding /jobs endpoint for the result of the write operation. content: application/json: schema: $ref: "#/components/schemas/JobIdObject" default: description: "Error payload. See #/responses for a list of general API errors." content: application/json: schema: $ref: "#/components/schemas/ApiError" /v2/working-times/projects/assignments/jobs/{jobId}: get: tags: - Working Times summary: GET Time Tracking Project Assignment Jobs description: After a POST request to the /working-times/projects/assignments endpoint was performed, the result can be fetched via the corresponding /jobs endpoint. operationId: GetEditTimeTrackingProjectAssignmentsStatus parameters: - name: jobId in: path description: The job id of the previous write request. required: true schema: type: string responses: "200": description: Success response. The result can be either pending (containing no response data yet) or finished (containing error or results of the successful write request). content: application/json: schema: $ref: "#/components/schemas/MultiWriteRequestResponse" "400": description: "This error is only returned by /jobs endpoints. The submitted jobId was invalid - no matching write request to the API could be found." content: application/json: schema: $ref: "#/components/schemas/ApiError" default: description: "Error payload. See #/responses for a list of general API errors." content: application/json: schema: $ref: "#/components/schemas/ApiError" /v2/working-times/projects/customers: get: tags: - Working Times summary: GET Project Customers description: Returns a list of time tracking project customers. operationId: ListProjectCustomers parameters: - name: onlyActive in: query description: Set this parameter to false to also receive inactive project customers required: false schema: type: boolean default: true responses: '200': description: successful operation content: application/json: schema: $ref: '#/components/schemas/GetTimeTrackingProjectCustomersResponse' default: description: 'Error payload. See #/responses for a list of general API errors.' content: application/json: schema: $ref: '#/components/schemas/ApiError' post: tags: - Working Times summary: POST Project Customers description: Create new project customers in HR WORKS. operationId: CreateProjectCustomers requestBody: content: application/json: schema: $ref: '#/components/schemas/CreateTimeTrackingProjectCustomersRequest' description: Collection of project customers data. required: true responses: '200': description: Success response. The jobId returned with this call can be used to query the corresponding /jobs endpoint for the result of the write operation. content: application/json: schema: $ref: '#/components/schemas/JobIdObject' default: description: 'Error payload. See #/responses for a list of general API errors.' content: application/json: schema: $ref: '#/components/schemas/ApiError' put: tags: - Working Times summary: PUT Project Customers description: Edit project customers in HR WORKS. operationId: EditProjectCustomers requestBody: content: application/json: schema: $ref: '#/components/schemas/EditTimeTrackingProjectCustomersRequest' description: Collection of project customers data. required: true responses: '200': description: Success response. The jobId returned with this call can be used to query the corresponding /jobs endpoint for the result of the write operation. content: application/json: schema: $ref: '#/components/schemas/JobIdObject' default: description: 'Error payload. See #/responses for a list of general API errors.' content: application/json: schema: $ref: '#/components/schemas/ApiError' /v2/working-times/projects/customers/jobs/{jobId}: get: tags: - Working Times summary: GET Project Customers Jobs description: After a POST or PUT request to the /working-times/projects/customers endpoint was performed, the result can be fetched via the corresponding /jobs endpoint. operationId: GetCreateProjectCustomersJobStatus parameters: - name: jobId in: path description: The job id of the previous write request. required: true schema: type: string responses: '200': description: Success response. The result can be either pending (containing to response data yet) or finished (containing error or results of the successful write request). content: application/json: schema: $ref: '#/components/schemas/MultiWriteRequestResponse' '400': description: This error is only returned by /jobs endpoints. The submitted jobId was invalid - no matching write request to the API could be found. content: application/json: schema: $ref: '#/components/schemas/ApiError' default: description: 'Error payload. See #/responses for a list of general API errors.' content: application/json: schema: $ref: '#/components/schemas/ApiError' /v2/working-times/projects/customers/{customerNumber}: get: tags: - Working Times summary: GET Single Project Customer description: Returns a time tracking project customer by the customer number. operationId: GetProjectCustomer parameters: - name: customerNumber in: path description: The customer number of the project customer. required: true schema: type: string responses: '200': description: successful operation content: application/json: schema: $ref: '#/components/schemas/TimeTrackingProjectCustomer' default: description: 'Error payload. See #/responses for a list of general API errors.' content: application/json: schema: $ref: '#/components/schemas/ApiError' /v2/working-times/kiosks: get: tags: - Working Times summary: GET Time Tracking Kiosks description: Return all kiosks of the company. operationId: ListWorkingTimeKiosks responses: '200': description: successful operation content: application/json: schema: $ref: '#/components/schemas/ListWorkingTimeKiosksResponse' default: description: 'Error payload. See #/responses for a list of general API errors.' content: application/json: schema: $ref: '#/components/schemas/ApiError' /v2/wage-and-salary/types: get: tags: - Wage & Salary summary: GET Wage Types description: Returns all wage types. operationId: ListWageAndSalaryTypes parameters: - name: onlyActive in: query description: Boolean parameter to decide if only active wage types should be returned. required: false schema: type: boolean responses: '200': description: successful operation content: application/json: schema: $ref: '#/components/schemas/ListWageAndSalaryTypesResponse' default: description: 'Error payload. See #/responses for a list of general API errors.' content: application/json: schema: $ref: '#/components/schemas/ApiError' /v2/payroll/files: post: tags: - Wage & Salary summary: POST Payroll File description: Create a new payroll file by sending the binary data in body or an URL to download the file from. operationId: CreatePayrollFile requestBody: content: application/octet-stream: schema: type: string format: binary description: 'The file to add in binary format (required if no file url is provided). Maximum size is 10 MB.' application/json: schema: type: object properties: webhook: $ref: '#/components/schemas/WebhookConfiguration' responses: '200': description: Success response. The jobId returned with this call can be used to query the payroll/files/jobs endpoint for the result of the write operation. content: application/json: schema: $ref: '#/components/schemas/JobIdObject' default: description: 'Error payload. See #/responses for a list of general API errors.' content: application/json: schema: $ref: '#/components/schemas/ApiError' parameters: - name: content-type in: header description: 'The Mime-type of the file, e.g. ''application/pdf'' (required if the file is sent via the request body)' required: false schema: type: string example: application/pdf - name: fileName in: query description: The name of the file to display in HR WORKS. required: true schema: type: string example: testFile.pdf - name: url in: query description: 'The url to download the file from (required if the file is not sent via the request body). The value has to be url-encoded.' required: false schema: type: string - name: personnelNumber in: query description: The personnelNumber of the person to add the payroll file for. Deprecated - use personIdentifierType and personIdentifier instead. required: false deprecated: true schema: type: string - name: personIdentifier in: query description: The identifier of the person to add the payroll file for. Use personIdentifierType to specify what type the value is. required: false schema: type: string - name: personIdentifierType in: query description: The type of the person identifier. Default is uuid. required: false schema: $ref: '#/components/schemas/PersonIdentifierType' example: personId - name: year in: query description: The year that the payroll file belongs to. required: true schema: type: integer example: 2023 - name: month in: query description: 'The month index (value between 1 and 12) that the payroll file belongs to. If no month is given, the file is assumed to refer to the entire year.' required: false schema: type: integer example: 12 /v2/payroll/jobs/{jobId}: get: tags: - Wage & Salary summary: GET Payroll Files Jobs description: After a POST request to the /payroll/files endpoint was performed, the result can be fetched via the corresponding /jobs endpoint. operationId: GetEditPayrollFilesStatus parameters: - name: jobId in: path description: The job id of the previous write request. required: true schema: type: string responses: '200': description: Success response. The result can be either pending (containing to response data yet) or finished (containing error or results of the successful write request). content: application/json: schema: $ref: '#/components/schemas/FileUploadRequestResponse' '400': description: This error is only returned by /jobs endpoints. The submitted jobId was invalid - no matching write request to the API could be found. content: application/json: schema: $ref: '#/components/schemas/ApiError' default: description: 'Error payload. See #/responses for a list of general API errors.' content: application/json: schema: $ref: '#/components/schemas/ApiError' externalDocs: description: Find out more about the API! url: 'https://developers.hrworks.de' servers: - url: 'https://api.hrworks.de' description: Production endpoint with live company data. - url: 'https://api.demo-hrworks.de' description: Test endpoint with dummy data. components: responses: InvalidEndpointError: description: The requested API endpoint does not exists or is unable to process requests with the provided HTTP verb. content: application/json: schema: $ref: '#/components/schemas/ApiError' InvalidCredentialsError: description: The credentials provided with the request were invalid. content: application/json: schema: $ref: '#/components/schemas/ApiError' InvalidBearerTokenError: description: The Bearer token provided in the request was invalid or expired. Please request a new token via the /authentication endpoint. content: application/json: schema: $ref: '#/components/schemas/ApiError' InternalServerError: description: An internal server error occurred. Please retry the request content: application/json: schema: $ref: '#/components/schemas/ApiError' InvalidCustomerNumberError: description: No customer could be found for the customer number associated with the credentials used for the request. This might indicate that either the credentials or the HR WORKS contract are expired. content: application/json: schema: $ref: '#/components/schemas/ApiError' MissingAuthorizationHeaderError: description: Your request did not include an authorization header. content: application/json: schema: $ref: '#/components/schemas/ApiError' MalformedAuthorizationHeaderError: description: The authorization header was malformed. Please check if the authorization headers you generate conform to the format specified in the API reference. content: application/json: schema: $ref: '#/components/schemas/ApiError' MissingParameterError: description: At least one of the required parameters was missing in the request. Refer to the documentation and the error message to determine the required parameters. content: application/json: schema: $ref: '#/components/schemas/ApiError' PermissionDeniedError: description: The credentials associated with this request do not have the necessary permission for this API request. content: application/json: schema: $ref: '#/components/schemas/ApiError' InvalidParameterError: description: At least one of the parameter values was invalid. That might indicate an out-of-bounds value or a person or organization unit identifier that does not exist in HR WORKS. content: application/json: schema: $ref: '#/components/schemas/ApiError' InvalidParameterTypeError: description: At least one of the submitted parameter values did not have the correct type. Refer to the error message for the parameter name and correct type. content: application/json: schema: $ref: '#/components/schemas/ApiError' InvalidPayloadError: description: 'The request contained a payload, but the payload was not provided in valid JSON format.' content: application/json: schema: $ref: '#/components/schemas/ApiError' schemas: Absence: type: object properties: type: type: string description: 'The short identifier of the absence''s type, e.g. "AL" for Annual Leave. The identifiers can be configured in HR WORKS.' beginDate: type: string description: The start date of the absence. Date in YYYY-MM-DD format format: date endDate: type: string description: The end date of the absence. Date in YYYY-MM-DD format format: date isBeginDateHalfDay: type: boolean description: Specifies whether the absence spans only the afternoon of the first day (or only the afternoon for one-day absences). isEndDateHalfDay: type: boolean description: Specifies whether the absence spans only the forenoon of the last day (or only the forenoon for one-day absences). name: type: string description: The full name of the absence type. Identical for all absences of the same type. number: type: string description: A unique identifier of the absence. Consists of the person's license number before the underscore and the running absence number for the respective person after the underscore. status: type: string description: 'The absence''s status, e.g. "Checked, OK".' statusIdentifier: $ref: '#/components/schemas/AbsenceStatus' workingDays: type: number format: float description: The number of working days that fall within the absence's date interval. example: 1.5 workingDaysInDateInterval: type: number format: float description: The number of working days that fall within the absence's date interval and the date interval specified by the beginDate and endDate parameters. example: 1.5 remark: type: string description: The user-entered remark of the absence. substitutes: type: array description: The substitutes assigned to the absence. items: $ref: "#/components/schemas/PersonBaseData" AbsenceData: type: object description: Describes the attributes that can be set while creating/editing absences via the API. properties: type: type: string description: 'The short identifier of the absence''s type, e.g. "AL" for Annual Leave. The identifiers can be configured in HR WORKS.' beginDate: type: string description: The start date of the absence. Date in YYYY-MM-DD format format: date endDate: type: string description: The end date of the absence. Date in YYYY-MM-DD format format: date isBeginDateHalfDay: type: boolean description: Specifies whether the absence spans only the afternoon of the first day (or only the afternoon for one-day absences). isEndDateHalfDay: type: boolean description: "Specifies whether the absence spans only the forenoon of the last day (or only the forenoon for one-day absences)." status: $ref: '#/components/schemas/AbsenceStatus' substitutes: type: array description: The personnel numbers of all persons assigned as substitutes for the absence. items: type: string remark: type: string description: The user-entered remark of the absence. AbsencesDateIntervalData: type: object description: JSON object representing a date interval with the associated absences. properties: beginDate: type: string format: date endDate: type: string format: date absences: type: array items: $ref: "#/components/schemas/Absence" AbsenceStatus: type: string nullable: true enum: - substitutionRequested - cancellationRequested - cancelled - changesRequested - editingChanges - deletionRequested - editing - substitutionRejected - requested - validatedOk - validatedNotOk PersonIdentifierType: type: string nullable: true enum: - personId - personnelNumber - personLicenseNumber - uuid - personIdentifierForKiosk OrganizationUnitIdentifierType: type: string nullable: true enum: - number - uuid AbsenceType: type: object description: A type that can be assigned to absences in HR WORKS. properties: name: type: string description: The name of the absence type that will be displayed to employees. key: type: string description: A unique identifier for the absence type. isActive: type: boolean description: Indicates whether the absence type is currently in use. reducesHolidayEntitlement: type: boolean description: A boolean indicating whether absences of this type will reduces the holiday entitlement days of an employee. default: false reducesHolidayEntitlementForFullMonths: type: boolean description: 'If this boolean is set to true, absences of this type will only reduce the holiday entitlement of an employee if they span a full month.' default: false reducesTimeAccount: type: boolean description: A boolean indicating whether absences of this type will reduces the working time budget of an employee. default: false ignoreVacationBlackout: type: boolean description: A boolean indicating whether this absence type does ignore vacation blackouts. default: false useInMonthPayroll: type: boolean description: A boolean indicating whether this absence type will be used in month payroll accounting. maxVacationDaysPerYear: type: number description: The maximum number of vacation days per employee per year of this absence type. isSubstitutionMandatory: type: boolean description: Does this absence type always require a substitute? default: false substitutionMandatoryAfterDays: type: number description: 'Optional setting. If set, a substitution will be mandatory only after a certain duration of the absence. When creating absence types via the API, isSubstitutionMandatory has to be set to true in order to set substitutionMandatoryAfterDays.' reducesTargetWorkingHours: type: boolean description: A boolean indicating whether this absence type reduces the target working hours of working days. default: false color: type: string description: The color representing the absence type in the HR WORKS GUI. isAdminOnly: type: boolean description: Indicating whether only HR WORKS admins can assign this absence type. default: false isPublic: type: boolean description: Indicating whether this absence type is public. default: false AccumulatedAbsencesDateIntervalData: type: object description: JSON object representing a date interval with the associated absences. properties: beginDate: type: string format: date endDate: type: string format: date absences: type: object additionalProperties: type: number description: The number of absence days that belong to each absence type. AccumulatedRemoteWorkDateIntervalData: type: object description: JSON object representing a date interval with the associated remote work values. properties: beginDate: type: string format: date endDate: type: string format: date remoteWork: type: object additionalProperties: type: number description: The number of remote work days. AccumulatedSickLeavesDateIntervalData: type: object description: JSON object representing a date interval with the associated sick leaves values. properties: beginDate: type: string format: date endDate: type: string format: date sickLeaves: type: object additionalProperties: type: number description: The number of sick leaves that belong to each sick leaves type. Address: type: object properties: additionalData: type: string description: 'Additional data attached to the address, e.g. c/o information.' city: type: string description: The city/town associated with the address. country: type: string description: 'The locale-specific name of the address country, e.g. Germany.' fax: type: string description: 'The fax number associated with the address. Only returned for addresses of permanent establishments.' internationalCountryCode: type: string description: 'The address country code. Given as a 3-digit country code, e.g. DEU.' phone: type: string description: The phone number associated with the address. state: type: string description: 'The ISO 3166-2 ID of the country member state, e.g. DE-BW.' street: type: string description: The street associated with the address. streetNumber: type: string description: The street number. zipCode: type: string description: The postal code of the address. ApiError: type: object description: The representation of an error returned by the API. properties: errorCode: type: number description: 'The HTTP error code, e.g. 403.' type: type: string description: 'A string identifier for the error, e.g. InvalidCredentialsError' errorMessage: type: string description: A text description of the error. Refer to this description in order to identify a solution for the problem. additionalErrors: type: array items: $ref: '#/components/schemas/ApiError' description: Sub-errors that might be attached to the main error object. ApiResourceData: type: object description: Information detailing an object that can be requested via the HR WORKS-API. properties: id: description: 'The identifier of the object, with which it can be rquested via the HR WORKS-API.' type: string example: '3_25' resourceLocation: type: string description: The URL to request the object example: 'http://api.hrworks.de/v2/sick-leaves/3_25' additionalData: type: object ApiWarning: type: object description: The representation of a warning returned by the API. Warnings are generally ignored by write requests and returned only as an fyi. properties: warningNumber: type: number description: The internal warning code. warningMessage: type: string description: A text description of the warning. Applicant: type: object description: The applicant of a job application. properties: address: $ref: '#/components/schemas/Address' birthday: type: string format: date description: The birthday date of the applicant. Date in format YYYY-MM-DD. earliestPossibleJoinDate: type: string format: date description: The earliest possible join date of the applicant. Date in format YYYY-MM-DD. email: type: string description: The email address of the applicant. firstName: type: string description: The first name of the applicant. gender: $ref: '#/components/schemas/Gender' uuid: type: string description: The unique identifier of the person in HR WORKS. This identifier does not change, when the applicant is converted to an employee person. hasNoticePeriod: type: boolean description: Specifies whether the applicant has a notice period at his old position. isActive: type: boolean description: Indicates whether the applicant has an active job application. isSeverelyDisabled: type: boolean description: Specifies wether the applicant has a severely disability. jobApplications: type: array items: $ref: '#/components/schemas/BaseJobApplication' languageCode: type: string description: The language code of the applicant. lastAnnualSalary: $ref: '#/components/schemas/CurrencyValue' lastName: type: string description: The surname of the applicant. noticePeriodTimeAmount: type: integer description: 'Time amount of the notice period, unit is defined by noticePeriodTimeUnit.' noticePeriodTimeReference: type: string description: 'The point in time, the notice period of the applicant references to.' noticePeriodTimeUnit: $ref: '#/components/schemas/Interval' salutation: $ref: '#/components/schemas/Salutation' title: type: string description: 'A honorific used by the person, e.g. "Dr.".' placeOfBirth: type: string description: The city/location where the applicant was born. fieldOfStudy: type: string description: The subject the applicant has studied. AvailableWorkingHoursDateIntervalData: type: object description: JSON object representing a date interval with the associated available working hours. properties: beginDate: type: string format: date endDate: type: string format: date workingHours: type: number regularWorkingHours: type: number remarks: deprecated: true type: array items: type: string relatedEvents: type: object description: 'Events related to the day. Only present, if interval is set to days.' properties: sickLeaves: type: array items: $ref: '#/components/schemas/ApiResourceData' absences: type: array items: $ref: '#/components/schemas/ApiResourceData' holidays: type: array items: $ref: '#/components/schemas/ApiResourceData' BankAccount: type: object description: Describes a bank account. properties: bic: type: string description: The bank account's BIC. iban: type: string description: The bank account's IBAN. bankAccountHolder: type: string description: Can be used to set an alternate bank account holder if the account holder's name is not equal to the employee's name. BaseTimeTrackingProject: type: object description: Time tracking project. properties: name: type: string description: The name of the time tracking project. id: type: string description: The id of the project. number: type: number description: The internal unique number of the project. BorderCrossing: type: object description: The representation of a border crossing. Only returned for austrian persons. properties: originCountryCode: type: string description: The 3-letter country code of the country that was left. destinationCountryCode: type: string description: The 3-letter country code of the country that was entered. date: type: string description: Travel date in YYYY-MM-DD format. format: date time: type: string description: The time of the border crossing. Time in hh:mm format. CareerLevelKey: type: string enum: - notSpecified - apprenticeOrWorkingStudent - executive - manager - professional - seniorExecutive - youngProfessional Confession: type: string nullable: true enum: - no data - other - jewish - old catholic - catholic - protestant - not specified CostCenter: type: object description: Used in cost accounting. Usually a department within the company to which costs can be allocated. properties: name: type: string description: The name of the cost center. number: type: string description: The number (identifier) of the cost center. CostCenterAssignment: type: object description: An assignment of a cost center to either a person or an organization unit. properties: number: type: string description: The number (identifier) of the cost center. personIdentifier: type: string description: Required for person assignments. The identifier of the person to whom the cost center is to be assigned. Use personIdentifierType to specify what type the value is. personnelNumber: type: string description: Deprecated - use personIdentifier instead. The personnel number of the person to whom the cost center is to be assigned. organizationUnitNumber: type: string description: Required for organization unit assignments. The number of the organization unit that the cost center is assigned to. CostObjective: type: object description: Used in cost accounting. An entity to which costs are assigned. properties: name: type: string description: The name of the cost objective. number: type: string description: The number (identifier) of the cost objective. CostObjectiveAssignment: type: object description: An assigment of a cost objective to either a person or an organization unit. properties: number: type: string description: The number (identifier) of the cost objective. personIdentifier: type: string description: Required for person assignments. The identifier of the person to whom the cost objective is to be assigned. Use the personIdentifierType parameter to specify what type the value is. personnelNumber: type: string description: Deprecated - use personIdentifier instead. The personnel number of the person to whom the cost objective is to be assigned. organizationUnitNumber: type: string description: Required for organization unit assignments. The number of the organization unit that the cost objective is assigned to. CostObjectPercentage: type: object properties: costCentre: $ref: '#/components/schemas/CostCenter' costObjective: $ref: '#/components/schemas/CostObjective' mealsPerDiems: $ref: '#/components/schemas/CurrencyValue' mealsDeductionSum: $ref: '#/components/schemas/CurrencyValue' lodgingPerDiems: $ref: '#/components/schemas/CurrencyValue' benefitsInKindSum: $ref: '#/components/schemas/CurrencyValue' CreateAbsenceData: allOf: - $ref: "#/components/schemas/AbsenceData" - type: object required: - type - beginDate - endDate - status - personnelNumber description: "Describes the attributes that can be set while creating absences via the API." properties: personnelNumber: type: string description: "The HR WORKS personnel number of the person that the absence should be assigned to." CreateAbsencesRequest: type: object properties: data: type: array items: $ref: "#/components/schemas/CreateAbsenceData" CreatePersonWorkingTimeResponse: type: object properties: result: $ref: '#/components/schemas/WorkingTime' warnings: type: array description: A collection of all warnings that occurred during the manipulation of this object. Not included if no warnings occurred. Warnings are IGNORED by the HR WORKS server when processing API write requests. items: $ref: '#/components/schemas/ApiWarning' CreatePersonnelFileEntriesRequest: type: object properties: data: type: array items: $ref: '#/components/schemas/PersonnelFileEntryData' CreateRemoteWorkRequest: type: object properties: data: type: array items: $ref: '#/components/schemas/CreateRemoteWorkData' CreateCostCentersRequest: type: object properties: data: type: array items: $ref: '#/components/schemas/CostCenter' CreateCostCenterAssignmentsRequest: type: object properties: data: type: array items: $ref: '#/components/schemas/CostCenterAssignment' CreateCostObjectiveAssignmentsRequest: type: object properties: data: type: array items: $ref: '#/components/schemas/CostObjectiveAssignment' CreateJobApplicationsRequest: type: object properties: data: type: array items: $ref: '#/components/schemas/JobApplicationData' CreateCostObjectivesRequest: type: object properties: data: type: array items: $ref: '#/components/schemas/CostObjective' CreateSickLeavesRequest: type: object properties: data: type: array items: $ref: '#/components/schemas/CreateSickLeaveData' CreateRemoteWorkData: allOf: - $ref: "#/components/schemas/RemoteWorkData" - type: object required: - beginDate - endDate - personnelNumber - statusIdentifier description: "Describes the attributes that can be set while creating remote work via the API." properties: personnelNumber: type: string description: "The HR WORKS personnel number of the person that the remote work should be assigned to." CreateSickLeaveData: allOf: - $ref: "#/components/schemas/SickLeaveData" - type: object required: - type - beginDate - endDate - status - personnelNumber description: "Describes the attributes that can be set while creating sick leaves via the API." CreateTimeTrackingProjectCustomersRequest: type: object properties: data: type: array items: $ref: '#/components/schemas/TimeTrackingProjectCustomerData' CreateTimeTrackingProjectsRequest: type: object properties: data: type: array items: $ref: "#/components/schemas/TimeTrackingProjectData" CreateTimeTrackingProjectAssignmentsRequest: type: object properties: data: type: array items: $ref: "#/components/schemas/TimeTrackingProjectAssignmentData" CreateTravelExpenseReportsRequest: type: object properties: data: type: array items: $ref: '#/components/schemas/TravelExpenseReportData' CreateWebhooksRequest: type: object properties: data: type: array items: $ref: "#/components/schemas/WebhookData" CreateWorkingTimesRequest: type: object properties: deleteOverlappingWorkingTimes: type: boolean description: Set this parameter to delete already existing working times in HR WORKS if the new values overlap with the existing value. default: false data: type: array items: $ref: '#/components/schemas/WorkingTimeData' Credentials: type: object description: A key pair consisting of the public accessKey and the private secretAccessKey. Generated in HR WORKS and used to get access tokens for the API. properties: accessKey: type: string description: The public access key of the credentials. secretAccessKey: type: string description: The secret access key of the credentials. CurrencyValue: type: object properties: currency: type: string description: The code of the currency. value: type: string description: The monetary value with up to 2 decimals. DataError: type: object description: The representation of an error returned by the API. properties: recordId: type: number description: 'The recordId of the object, corresponding to the object order in the write request. (Starts at 1, not 0!)' errors: type: array description: A collection of all errors that occurred during the manipulation of this object. Not included if no errors occurred. items: $ref: '#/components/schemas/ObjectManipulationNotification' EditAbsenceData: allOf: - $ref: "#/components/schemas/AbsenceData" - type: object required: - number description: "Describes the attributes that can be set while editing absences via the API." properties: number: type: string description: A unique identifier of the absence. Consists of the person's license number before the underscore and the running absence number for the respective person after the underscore. example: "1_1" EditAbsencesRequest: type: object properties: data: type: array items: $ref: "#/components/schemas/EditAbsenceData" EditAbsenceTypesRequest: type: object properties: data: type: array items: $ref: '#/components/schemas/AbsenceType' EditHolidaysRequest: type: object properties: data: type: array items: $ref: '#/components/schemas/HolidayData' EditOnboardingDocumentsRequest: type: object properties: data: type: array items: $ref: '#/components/schemas/OnboardingDocumentData' EditOrganizationUnitsRequest: type: object properties: data: type: array items: $ref: '#/components/schemas/OrganizationUnitData' EditPersonsRequest: type: object properties: data: type: array items: $ref: '#/components/schemas/PersonData' EditRemoteWorkData: allOf: - $ref: "#/components/schemas/RemoteWorkData" - type: object required: - number description: "Describes the attributes that can be set while editing remote work via the API." properties: number: type: string description: A unique identifier of the remote work. Consists of the person's license number before the underscore and the running remote work number for the respective person after the underscore. example: "1_1" EditSickLeaveData: allOf: - $ref: "#/components/schemas/SickLeaveData" - type: object required: - number description: "Describes the attributes that can be set while editing sick leaves via the API." properties: number: type: string description: A unique identifier of the sick leave. Consists of the person's license number before the underscore and the running sick leave number for the respective person after the underscore. example: "1_1" EditSickLeavesRequest: type: object properties: data: type: array items: $ref: '#/components/schemas/EditSickLeaveData' EditSickLeaveTypesRequest: type: object properties: data: type: array items: $ref: '#/components/schemas/SickLeaveType' EditPermanentEstablishmentsRequest: type: object properties: data: type: array items: $ref: '#/components/schemas/PermanentEstablishment' EditRemoteWorkRequest: type: object properties: data: type: array items: $ref: "#/components/schemas/EditRemoteWorkData" EditTimeTrackingProjectCustomersRequest: type: object properties: data: type: array items: $ref: '#/components/schemas/TimeTrackingProjectBaseCustomer' EditWebhookData: allOf: - $ref: "#/components/schemas/WebhookData" - type: object required: - id description: "Describes the attributes that can be set while editing a webhook via the API." properties: id: type: number description: The identifier of the webhook. EditWebhooksRequest: type: object properties: data: type: array items: $ref: '#/components/schemas/EditWebhookData' EditWorkingTimesRequest: type: object properties: deleteOverlappingWorkingTimes: type: boolean description: Set this parameter to delete already existing working times in HR WORKS if the new values overlap with the existing value. default: false data: type: array items: $ref: '#/components/schemas/WorkingTimeData' EmergencyContactDegreeOfKinship: type: string nullable: true enum: - child - friend - neighbor - none - parent - partner - relative - sibling - spouse Employment: type: object description: Representation of an employment that can be assigned to persons. Used in the historicized data of a person. properties: employmentType: $ref: '#/components/schemas/EmploymentType' organizationUnitNumber: type: string description: The number of the organization unit this employment belongs to. organizationUnitUuid: type: string description: The unique identifier of the organization unit this employment belongs to. permanentEstablishmentId: type: string description: The ID of the permanent establishment this employment belongs to. position: type: string description: The position of the employment. EmploymentContractTypeKey: type: string enum: - notSpecified - apprenticeship - externalEmployee - internship - marginalEmployment - permanentEmployment - shortTermEmployment - studentJob EmploymentType: type: string nullable: true enum: - apprentice - externalWorker - intern - marginalEmployment - regularEmployee - shortTermEmployment - studentTrainee ExpensesGroup: type: object description: An expenses group for travel expenses accounting. properties: key: type: string description: The unique identifier of the expenses group. name: type: string description: The name of the expenses group. internationalCountryCode: type: string description: The country associated with the expenses group. Given as a 3-digit country code. example: DEU ExpenseReportDay: type: object properties: breakfastDeduction: $ref: '#/components/schemas/CurrencyValue' date: type: string description: Date in YYYY-MM-DD format. format: date dinnerDeduction: $ref: '#/components/schemas/CurrencyValue' lodgingPerDiems: $ref: '#/components/schemas/CurrencyValue' lunchDeduction: $ref: '#/components/schemas/CurrencyValue' mealsDeductionSum: $ref: '#/components/schemas/CurrencyValue' mealsPerDiems: $ref: '#/components/schemas/CurrencyValue' countryCode: type: string description: The 3-digit country code corresponding to the country the day was spent in. overnightStayCountryCode: type: string description: The 3-digit country code corresponding to the overnight stay country. paymentSum: $ref: '#/components/schemas/CurrencyValue' percentageAllocation: description: The percentage allocation of the day for the defined cost objectives and cost centres. type: array items: $ref: '#/components/schemas/CostObjectPercentage' benefitsInKindSum: $ref: '#/components/schemas/CurrencyValue' ExpenseReport: type: object properties: advancesSum: $ref: '#/components/schemas/CurrencyValue' beginDate: type: string description: The start date of the expense report. Date in YYYY-MM-DD format. format: date beginTime: type: string description: 'The start time of the expense report. Time in hh:mm format.' costCenter: $ref: '#/components/schemas/CostCenter' costObjective: $ref: '#/components/schemas/CostObjective' days: type: array items: $ref: '#/components/schemas/ExpenseReportDay' defaultPaymentType: type: string description: The default payment type for the trip. Used for mileages and per diems. Receipts may have differing payment types. destination: type: string description: The travelling destination of the business trip. receiptDocuments: type: array items: type: string description: The download url of the digital receipt document. The url expires after one hour. endDate: type: string description: The end date of the expense report. Date in YYYY-MM-DD format. format: date endTime: type: string description: 'The end time of the expense report. Time in hh:mm format.' isExpenseReport: type: boolean description: Boolean denoting whether the object is a collection of receipts (true) or a full expense report for an actual trip (false). lodgingPerDiemsSum: $ref: '#/components/schemas/CurrencyValue' mealsDeductionSum: $ref: '#/components/schemas/CurrencyValue' mealsPerDiemsSum: $ref: '#/components/schemas/CurrencyValue' mileages: type: array description: Data detailing distances traveled by car or other vehicles during the business trip. items: oneOf: - $ref: '#/components/schemas/MileageSingleDate' - $ref: '#/components/schemas/MileageMultiDate' name: type: string description: The title of the expense report. number: type: string description: A unique identifier of the expense report. Consists of the personnel number of the person associated with the expense report and the running per-person expense report number. overnightStayAfterFirstDay: type: boolean description: Boolean denoting whether the expense report includes an overnight stay after the first day of travelling. Only returned for German expense reports. paymentSum: $ref: '#/components/schemas/CurrencyValue' person: $ref: '#/components/schemas/PersonBaseData' receipts: type: array items: $ref: '#/components/schemas/Receipt' receiptSum: $ref: '#/components/schemas/CurrencyValue' reducedPaymentValueSum: $ref: '#/components/schemas/CurrencyValue' reference: type: integer description: A number that can be set during the travel expenses export in HR WORKS as the head number (number per account) or position number (number per trip). startLocation: type: string description: The location where the business trip started. status: type: string description: 'The status of the expense report, e.g. Checked, OK.' statusIdentifier: $ref: '#/components/schemas/ExpenseReportStatus' stopovers: type: string description: Comma-separated names of stopovers threeMonthsRuleActive: type: boolean description: Boolean denoting whether the three-month rule is active for the expense report. Only returned for German expense reports. totalSum: $ref: '#/components/schemas/CurrencyValue' clientRelatedTrip: type: boolean description: Boolean denoting whether the expense report is assigned to a client. Only returned if the Ingentis InTime integration is active. orderNumberDatevEO: type: string description: Order number for DATEV EO. Only returned if the Ingentis InTime integration is active. borderCrossings: type: array description: Only returned for Austrian persons. A collection of all inter-country travels during the business trip. items: $ref: '#/components/schemas/BorderCrossing' BaseTravelExpenseReportData: type: object required: - personIdentifier - beginDate - endDate description: Describes the attributes that can be set while creating a travel expense report via the API. properties: startLocation: type: string description: The location where the trip started. This cannot be applied for a collection of receipts, see the isExpenseReport boolean. destination: type: string description: The travelling destination of the trip. This cannot be applied for a collection of receipts, see the isExpenseReport boolean. beginDate: type: string description: The start date of the expense report. Date in YYYY-MM-DD format. format: date endDate: type: string description: The end date of the expense report. Date in YYYY-MM-DD format. format: date beginTime: type: string description: 'The start time of the expense report. Time in hh:mm format. This cannot be applied for a collection of receipts, see the isExpenseReport boolean.' endTime: type: string description: 'The end time of the expense report. Time in hh:mm format. This cannot be applied for a collection of receipts, see the isExpenseReport boolean.' stopovers: type: array description: This cannot be applied for a collection of receipts, see the isExpenseReport boolean. items: type: string description: The name of the stopover costCenterNumber: type: string description: 'The number of the cost center of the expense report' costObjectiveNumber: type: string description: 'The number of the cost objective of the expense report' personIdentifier: type: string description: Identifier of the person to create a travel expense report for. Use personIdentifierType to specify what type the value is. remark: type: string description: The remark of the travel expense report. statusIdentifier: $ref: '#/components/schemas/ExpenseReportStatus' reference: type: integer description: The reference number according to accounting. isExpenseReport: type: boolean description: Denoting whether the object is a collection of receipts (true) or a full expense report for an actual trip (false). default: false purpose: type: string description: The purpose of the trip. documentsPhysicallyArchived: type: boolean description: Denoting whether the bookkeeping still has the original receipts. default: false TravelExpenseReportData: allOf: - $ref: '#/components/schemas/BaseTravelExpenseReportData' - type: object properties: threeMonthsRuleActive: type: boolean default: false description: Denoting whether the three-month rule is active for the travel expense report. This can only be applied to a travel expense of a german person. use24HourRule: type: boolean default: false description: Denoting whether the travel will be charged according to the 24 hour rule. This can only be applied to a travel expense of an austrian person. overnightStayAfterFirstDay: type: boolean default: false description: Denoting whether the expense report includes an overnight stay after the first day of travelling. ExpenseReportsDateIntervalData: type: object description: JSON object representing a date interval with the associated expense reports. properties: beginDate: type: string format: date endDate: type: string format: date expenseReports: type: array items: $ref: '#/components/schemas/ExpenseReport' ExpenseReportStatus: type: string nullable: true enum: - editing - editingComplete - validatedOk - validatedNotOk - accountingOk - completed - archived ExternalId: type: object properties: externalSystem: description: The external system this id belongs to. type: string id: description: The value of the id. type: string FileUploadRequestResponse: title: FileUploadRequestResponse allOf: - $ref: '#/components/schemas/WriteRequestResponse' - type: object properties: apiResponse: $ref: '#/components/schemas/FileUploadRequestResult' FileUploadRequestResult: allOf: - $ref: '#/components/schemas/WriteRequestResult' - type: object properties: result: type: string description: The URL of the uploaded file FlatRateType: type: object properties: accountNumber: type: string description: The number of the account assigned to the flat rate type. description: type: string description: The name/short description of the flat rate type. Gender: type: string nullable: true enum: - male - female - diverse - not specified GetAvailableWorkingHoursResponse: type: object additionalProperties: type: array items: $ref: '#/components/schemas/AvailableWorkingHoursDateIntervalData' GetLeaveAccountDataResponse: type: object additionalProperties: $ref: '#/components/schemas/LeaveAccount' GetPersonsDayResponse: type: object description: Person days are sorted by the person identifiers of the requested persons. additionalProperties: $ref: '#/components/schemas/PersonDay' GetPersonMasterDataResponse: type: object properties: persons: type: array items: $ref: '#/components/schemas/Person' GetPersonTimeAccountsResponse: type: object description: Personnel numbers or user IDs of the requested persons. additionalProperties: type: array items: $ref: '#/components/schemas/TimeAccount' GetPersonWorkingTimesResponse: type: object additionalProperties: type: array description: Personnel numbers or user IDs of the requested persons. items: $ref: '#/components/schemas/WorkingTimesDateIntervalData' GetTimeTrackingProjectCustomersResponse: type: object properties: customers: type: array items: $ref: '#/components/schemas/TimeTrackingProjectCustomer' GetTimeTrackingProjectsResponse: type: object properties: projects: type: array items: $ref: '#/components/schemas/TimeTrackingProject' HealthInsurance: type: object properties: careInsuranceBaseRate: $ref: '#/components/schemas/CurrencyValue' careInsuranceTotalAmount: $ref: '#/components/schemas/CurrencyValue' healthInsuranceBaseRate: $ref: '#/components/schemas/CurrencyValue' healthInsuranceTotalAmount: $ref: '#/components/schemas/CurrencyValue' name: type: string description: The name of the health insurance. registrationNumber: type: string description: 'The registration number of the health insurance, only present for type "statutory".' type: $ref: '#/components/schemas/HealthInsuranceType' HealthInsuranceType: type: string nullable: true enum: - private - statutory HighestLevelOfEducationId: type: string enum: - "1" - "2" - "3" - "4" - "9" description: | dictionary: * "1 Ohne Schulabschluss" * "2 Haupt-/Volksschulabschluss" * "3 Mittlere Reife oder gleichwertiger Abschluss" * "4 Abitur/Fachabitur" * "9 Abschluss unbekannt" HighestProfessionalQualificationId: type: string enum: - "1" - "2" - "3" - "4" - "5" - "6" - "9" description: | dictionary: * "1 Ohne beruflichen Ausbildungsabschluss" * "2 Abschluss einer anerkannten Berfusausbildung" * "3 Meister-/Techniker- oder gleichwertiger Fachschulabschluss" * "4 Bachelor" * "5 Diplom/Magister/Master/Staatsexamen" * "6 Promotion" * "9 Abschluss unbekannt" Holiday: type: object description: The representation of a holiday in HR WORKS. properties: date: type: string description: The date of the holiday in YYYY-MM-DD format. format: date isHalfDay: type: boolean description: States whether the holiday spans only the half day. name: type: string description: The name of the holiday as it is displayed to the user. HolidayData: type: object description: 'Input data to create holidays in HR WORKS. Holidays can be created at different levels: For a whole country, for a specific state of a country or for a specific company permanent establishment. This is represented by the permanentEstablishmentId, state and countryCode properties. When creating holidays via POST, at least one of those attributes has to be set. In order to create a state-level holiday, both state and countyCode have to be set.' properties: date: type: string description: The date of the holiday in YYYY-MM-DD format. format: date isHalfDay: type: boolean description: States whether the holiday spans only the half day. name: type: string description: The name of the holiday as it is displayed to the user. permanentEstablishmentId: type: string description: Optional. The ID of the permanent establishment that the holiday is asscociated with. state: type: string description: Optional. The ID of the country member state that the holiday is associated with. countryCode: type: string description: Optional. The three-letter country code that the holiday is associated with. HolidaysByCountryWrapper: type: object properties: permanentEstablishmentHolidays: type: object additionalProperties: description: IDs of the requested permanent establishments. type: array items: $ref: '#/components/schemas/Holiday' stateHolidays: type: object additionalProperties: type: array description: State names. items: $ref: '#/components/schemas/Holiday' generalHolidays: type: array items: $ref: '#/components/schemas/Holiday' HowDidYouHearAboutUsOptions: type: object properties: en: type: array description: All possible english options that describe how the applicant became aware of the post/company. items: type: string de: type: array description: All possible german options that describe how the applicant became aware of the post/company. items: type: string IncludeDataForPersonsDayRequest: type: string nullable: true enum: - workingTimes - remoteWork - travelRequests - expenseReports Interval: type: string nullable: true enum: - days - weeks - months JobApplication: allOf: - $ref: '#/components/schemas/BaseJobApplication' - type: object description: The representation of a job application as configured in HR WORKS. Used for applicant management. properties: applicant: $ref: '#/components/schemas/Applicant' applicationDocuments: type: array items: type: string description: The download link of the job application document. creationDateAndTime: type: string format: date-time description: 'The creation date and time as ISO8601 string, formatted as YYYYMMDD"T"HHMMSS"Z"' example: 20250228T094600Z desiredSalary: type: string description: The desired salary in Euro of the job application. howDidYouHearAboutUs: type: string description: 'A custom or predefined value that describes how the applicant became aware of the post/company.' ipAddress: type: string format: ipv4 description: The IP-Address of the job application creator. mayBePassedWithinCorporateGroup: type: boolean description: Specifies if the application is allowed to be passed within the whole corporate group. permissionToStoreApplication: $ref: '#/components/schemas/PermissionToStoreApplication' postId: type: string description: The ID of the post the job application belongs to. postOfferId: type: string description: The ID of the post offer the application belongs to. remark: type: string description: The remark of the job application. status: type: string description: The status of the job application. userAgent: type: string description: The user agent of the job application creator. hasPrivacyTermsAccepted: type: boolean description: Specifies if the applicant accepted the privacy terms. BaseJobApplication: type: object properties: id: type: string description: The ID of the job application. statusIdentifier: $ref: '#/components/schemas/JobApplicationStatus' postUuid: type: string description: The unique idenifier of the post. JobApplicationData: type: object required: - firstName - lastName - postId properties: postId: type: string description: The ID of the post the application belongs to. postOfferId: type: string description: The ID of the post offer that the application belongs to. salutation: $ref: '#/components/schemas/Salutation' title: type: string description: The title of the applicant. firstName: type: string description: The first name of the applicant. lastName: type: string description: The surname of the applicant. gender: $ref: '#/components/schemas/Gender' email: type: string description: The email address of the applicant in valid format. phone: type: string description: The mobile phone number of the applicant. street: type: string description: The street of the applicants address. streetNumber: type: string description: The street number of the applicants address. additional: type: string description: The additional of the applicants address. zipCode: type: string description: The zip code of the applicants address. city: type: string description: The city of the applicants address. countryCode: type: string description: The three-letter country code of the applicants address. birthday: type: string format: date description: The birthday date of the applicant. Date in YYYY-MM-DD format. lastAnnualSalary: $ref: '#/components/schemas/CurrencyValue' desiredSalary: type: integer description: The desired salary in Euro for this application. earliestPossibleJoinDate: type: string format: date description: The earliest possible join date of the applicant. Date in YYYY-MM-DD format. hasNoticePeriod: type: boolean description: Specifies if the applicant has a notice period. hasPrivacyTermsAccepted: type: boolean default: false description: 'Set to true, if the applicant has accepted the privacy terms.' noticePeriodTimeAmount: type: integer description: 'Time amount of the notice period, unit is defined by noticePeriodTimeUnit' noticePeriodTimeUnit: $ref: '#/components/schemas/Interval' noticePeriodTimeReference: $ref: '#/components/schemas/TimeReference' isSeverelyDisabled: type: boolean description: Specifies if the applicant has a severely disability howDidYouHearAboutUs: type: string description: 'A custom or predefined value that describes how the applicant became aware of the post/company.' remark: type: string description: The remark of the application. permissionToStoreApplication: $ref: '#/components/schemas/PermissionToStoreApplication' mayBePassedWithinCorporateGroup: type: boolean description: Specifies if the application is allowed to be passed within the corporate group. ipAddress: type: string description: The IP-Address of the application creator. userAgent: type: string description: The User Agent of the application creator. creationDateAndTime: type: string format: date-time description: 'The creation date and time as ISO8601 string, formatted as YYYYMMDD"T"HHMMSS"Z"' example: 20250228T094600Z placeOfBirth: type: string description: The city/location where the applicant was born. fieldOfStudy: type: string description: The subject the applicant has studied. JobApplicationStatus: description: Status identifier for job application statuses type: string enum: - applied - employed - inProgress - movedToTalentPool - notEmployed - documentCreation JobIdObject: type: object description: Write requests to the API are handled asynchronously. The initial call returns a job ID on success. properties: jobId: type: string description: A GUID referencing the write request. Can be used for calls to the respective /jobs endpoint. LeaveAccount: type: object description: Information about the leave account of an employee in HR WORKS. properties: holidayEntitlement: type: number description: The total holiday entitlement of the employee. requested: type: number description: The number of requested vacation days. approved: type: number description: The number of approved vacation days. unplanned: type: number description: The number of unplanned/still available vacation days. planned: type: number description: 'The number of planned vacation days - the vacation has not been requested yet, but already created by the employee.' expiring: type: number description: The number of vacation days that will expire at the next expiration date if not used before. nextExpirationDate: type: string format: date description: The next date when unused vacation days will expire. ListAbsencesAccumulatedResponse: type: object additionalProperties: type: array description: Personnel numbers or user IDs of the requested persons. items: $ref: '#/components/schemas/AccumulatedAbsencesDateIntervalData' ListAbsencesResponse: type: object additionalProperties: type: array items: $ref: '#/components/schemas/AbsencesDateIntervalData' ListAbsenceTypesResponse: type: object properties: absenceTypes: type: array items: $ref: '#/components/schemas/AbsenceType' ListCostCentersResponse: type: object properties: costCenters: type: array items: $ref: '#/components/schemas/CostCenter' ListCostObjectivesResponse: type: object properties: costObjectives: type: array items: $ref: '#/components/schemas/CostObjective' ListExpenseReportsResponse: type: object additionalProperties: type: array items: $ref: '#/components/schemas/ExpenseReportsDateIntervalData' ListHolidaysReponse: type: object description: International country codes of all requested countries. additionalProperties: $ref: '#/components/schemas/HolidaysByCountryWrapper' ListJobApplicationsResponse: type: object properties: jobApplications: type: array items: $ref: '#/components/schemas/JobApplication' ListOnboardingDocumentsResponse: type: object properties: onboardingDocuments: type: array items: $ref: '#/components/schemas/OnboardingDocument' ListOrganizationUnitsReponse: type: object properties: organizationUnits: type: array items: $ref: '#/components/schemas/OrganizationUnit' ListPermanentEstablishmentsResponse: type: object properties: permanentEstablishments: type: array items: $ref: '#/components/schemas/PermanentEstablishment' ListPersonnelFileCategoriesResponse: type: object properties: categories: type: array items: $ref: '#/components/schemas/PersonnelFileCategory' ListPersonPersonnelFileEntriesResponse: type: object properties: personnelFileEntries: type: array items: $ref: '#/components/schemas/PersonnelFileEntry' ListPersonsResponse: type: object additionalProperties: type: array items: $ref: '#/components/schemas/PersonBaseData' ListPostsResponse: type: object properties: posts: type: array items: $ref: '#/components/schemas/Post' ListApplicantsResponse: type: object properties: applicants: type: array items: $ref: '#/components/schemas/Applicant' ListPresentPersonsOfOrganizationUnitResponse: type: object properties: persons: type: array items: $ref: '#/components/schemas/PersonBaseData' ListReceiptTypesResponse: type: object properties: receiptTypes: type: object description: "Contains the 3 letter country codes as keys and the respective receipt types as values." additionalProperties: type: array items: $ref: '#/components/schemas/ReceiptType' ListRemoteWorkAccumulatedResponse: type: object additionalProperties: type: array items: $ref: '#/components/schemas/AccumulatedRemoteWorkDateIntervalData' ListRemoteWorkResponse: type: object additionalProperties: type: array items: $ref: '#/components/schemas/RemoteWorkDateIntervalData' ListSickLeavesAccumulatedResponse: type: object additionalProperties: type: array items: $ref: '#/components/schemas/AccumulatedSickLeavesDateIntervalData' ListSickLeavesResponse: type: object additionalProperties: type: array items: $ref: '#/components/schemas/SickLeavesDateIntervalData' ListSickLeaveTypesResponse: type: object properties: sickLeaveTypes: type: array items: $ref: '#/components/schemas/SickLeaveType' ListTimeRecordingRegulationsResponse: type: object properties: timeRecordingRegulations: type: array items: $ref: '#/components/schemas/TimeRecordingRegulation' ListTravelRequestsResponse: type: object additionalProperties: type: array items: $ref: '#/components/schemas/TravelRequestsDateIntervalData' ListVacationTypesResponse: type: object properties: vacationTypes: type: array items: $ref: "#/components/schemas/VacationType" ListWageAndSalaryTypesResponse: type: object properties: wageAndSalaryTypes: type: array items: $ref: '#/components/schemas/WageType' ListWebhooksResponse: type: object properties: webhooks: type: array items: $ref: '#/components/schemas/Webhook' ListWorkingTimeKiosksResponse: type: object properties: kiosks: type: array items: $ref: '#/components/schemas/WorkingTimeKiosk' MaritalStatus: type: string nullable: true enum: - married - widowed - separated - divorced - single - not specified Mileage: type: object description: Used in travel expenses accounting. Contains data about a distance traveled by car. properties: costCenter: $ref: '#/components/schemas/CostCenter' costObjective: $ref: '#/components/schemas/CostObjective' description: type: string description: Text containing additional information about the trip as provided by the user. destination: type: string description: The destination of the trip. distance: $ref: '#/components/schemas/UnitValueTuple' flatRate: $ref: '#/components/schemas/MileageFlatRate' startLocation: type: string description: The location where the trip was started. vehicle: $ref: '#/components/schemas/Vehicle' MileageFlatRate: type: object properties: flatRateType: $ref: '#/components/schemas/FlatRateType' kilometerFlatRate: $ref: '#/components/schemas/CurrencyValue' value: $ref: '#/components/schemas/CurrencyValue' kilometerFlatRateForInvoicing: $ref: '#/components/schemas/CurrencyValue' MileageMultiDate: type: object description: Used in travel expenses accounting. Contains data about a distance traveled by car. This schema is used for travel expenses of Austrian persons, as Austrian travel expenses accounting regulations require specifying arrival and departure date/times separately. allOf: - $ref: "#/components/schemas/Mileage" properties: arrivalDate: type: string description: The arrival date of the vehicle trip in YYYY-MM-DD format. Only returned for austrian persons. format: date arrivalTime: type: string description: The arrival time of the vehicle trip in HH:MM format. Only returned for austrian persons. departureDate: type: string description: The departure date of the vehicle trip in YYYY-MM-DD format. Only returned for austrian persons. format: date departureTime: type: string description: The departure time of the vehicle trip in HH:MM format. Only returned for austrian persons. MileageSingleDate: type: object description: Used in travel expenses accounting. Contains data about a distance traveled by car. Used for travel reports of non-Austrian persons. allOf: - $ref: "#/components/schemas/Mileage" - type: object properties: date: type: string description: The date of the vehicle trip in YYYY-MM-DD format. format: date MonthYear: type: string pattern: '\d{4}-(0[1-9]|1[0-2])' description: A month-year combination in the format "YYYY-MM" TimeAccount: type: object description: JSON object representing a time account of a person in HR WORKS properties: monthYear: $ref: '#/components/schemas/MonthYear' workingHours: type: number description: The total amount of tracked working hours for this month in minutes. targetWorkingHours: type: number description: The planned working hours for this month in minutes. timeCredit: type: number description: The amount of time credit for this month in minutes. carryoverHours: type: number description: The amount of time which was transfered from the previous month to this month in minutes. totalTime: type: number description: The total balance at the end of the month in minutes. timeCorrectionSum: type: number description: The total amount of time corrections for the month in minutes. MultiDeleteResult: type: object properties: total: type: number description: The number of deleted objects. MultiDeleteRequestResponse: title: MultiDeleteRequestResponse allOf: - $ref: '#/components/schemas/WriteRequestResponse' - type: object properties: apiResponse: $ref: '#/components/schemas/MultiDeleteRequestResult' MultiDeleteRequestResult: allOf: - $ref: '#/components/schemas/WriteRequestResult' - type: object properties: result: $ref: '#/components/schemas/MultiDeleteResult' MultiWriteRequestResponse: title: MultiWriteRequestResponse allOf: - $ref: '#/components/schemas/WriteRequestResponse' - type: object properties: apiResponse: $ref: '#/components/schemas/MultiWriteRequestResult' MultiWriteRequestResult: allOf: - $ref: '#/components/schemas/WriteRequestResult' - type: object properties: result: type: array description: 'A JSON representation of the objects that were manipulated or created via the API request. May only contain an abridged version of the data. This property is an array with the same order as the input data. Each object can be identified via the recordId attribute that matches the order of the input data. RecordId counts start at 1, not 0! Only included if NO errors occurred during the processing of the request.' items: $ref: '#/components/schemas/SingleResult' NumericalRange: type: object description: "A range determined by a numerical upper and lower limit." properties: lowerBound: type: number description: "The lower bound of the range." upperBound: type: number description: "The upper bound of the range." ObjectManipulationNotification: type: object description: 'An error or warning that occurred while creating, deleting or editing an object via the API.' properties: text: type: string description: A description text detailing what went wrong. number: type: number description: An error number that is referenced internally in HR WORKS. OnboardingDocument: type: object description: Describes onboarding documents that exist in the company. properties: address: $ref: '#/components/schemas/Address' bankAccount: $ref: '#/components/schemas/BankAccount' birthday: type: string description: The new employee's birthday. Date in YYYY-MM-DD format. format: date birthName: type: string description: The birth name of the new employee. confession: $ref: '#/components/schemas/Confession' countryOfBirth: type: string description: The country where the new employee was born. childAllowanceCategory: description: Only applicable for onboarding documents for German persons. The child allowance category of the person. type: string emergencyContactDegreeOfKinship: $ref: '#/components/schemas/EmergencyContactDegreeOfKinship' emergencyContactName: type: string description: The name of the person's emergency contact. emergencyContactPhone: type: string description: The person's emergency contact phone number. firstName: type: string description: The given name of the new employee. gender: $ref: '#/components/schemas/Gender' hasSecondaryEmployment: type: boolean description: Only applicable for onboarding documents for German persons. Indicates whether the person has a secondary employment. healthInsuranceType: $ref: '#/components/schemas/HealthInsuranceType' id: type: string description: The unique identifier of the onboarding document. isMainActivity: type: boolean description: Only applicable for onboarding documents for German persons. Indicates whether this is the persons main activity. joinDate: type: string description: The date of the person's first working day in the company. Date in YYYY-MM-DD format. format: date languageCode: type: string description: The language code of the new employee. Determines the GUI language of the onboarding tool. Defaults to the language code of the assigned organization unit. lastName: type: string description: The surname of the new employee. maritalStatus: $ref: '#/components/schemas/MaritalStatus' nationality: type: string description: 'The locale-specific name of the nationality of the new employee, e.g. Germany.' noteForOnboardingAdministrator: type: string description: A note that will be displayed for the onboarding administrator in HR WORKS. noteForOnboardingPerson: type: string description: A note that will be displayed for the new employee. organizationUnit: $ref: '#/components/schemas/OrganizationUnit' privateMobilePhoneNumber: type: string description: The private phone number of the new employee. placeOfBirth: type: string description: The city/location where the new employee was born. privateEmail: type: string description: The private email address of the new employee. residencePermitExpiryDate: type: string description: The expiry date of the residence permit of the new employee. Date in YYYY-MM-DD format. format: date salutation: type: string description: The form of address of the new employee. superior: $ref: '#/components/schemas/PersonBaseData' severeDisability: type: boolean description: Specifies if the employee is severely disabled. default: false secondaryEmploymentBeginDate: type: string format: date description: Only applicable for onboarding documents for German persons. The begin date of the person's secondary employment. Date in YYYY-MM-DD format. socialSecurityNumber: type: string description: Returned for German persons only. The person's social security number. statusIdentifier: $ref: '#/components/schemas/OnboardingStatus' status: type: string description: The locale-specific name of the onboarding document's status. title: type: string description: The given title of the new employee. taxCategory: type: string description: Only applicable for onboarding documents for German persons. The tax category of the person. workPermitExpiryDate: type: string format: date description: The expiry date of the work permit of the new employee. Date in YYYY-MM-DD format. organizationUnitUuid: type: string description: The unique identifier of the organization unit this onboarding document belongs to. OnboardingDocumentData: type: object description: Input data for creating a new onboarding document. required: - privateEmail - firstName - lastName - organizationUnitNumber - joinDate properties: firstName: type: string description: The given name of the new employee. lastName: type: string description: The surname of the new employee. organizationUnitNumber: type: string description: The number of the organization unit that the new employee will be assigned to. Determines the assigned country of the employee. privateEmail: type: string description: The private email address of the new employee. joinDate: type: string description: The date of the person's first working day in the company. Date in YYYY-MM-DD format. format: date address: $ref: '#/components/schemas/Address' bankAccount: $ref: '#/components/schemas/BankAccount' birthday: type: string description: The new employee's birthday. Date in YYYY-MM-DD format. format: date nationality: type: string description: The nationality of the new employee. A three-letter country code. gender: $ref: '#/components/schemas/Gender' workPermitExpiryDate: type: string description: The expiry date of the work permit of the new employee. Date in YYYY-MM-DD format. format: date residencePermitExpiryDate: type: string description: The expiry date of the residence permit of the new employee. Date in YYYY-MM-DD format. format: date maritalStatus: $ref: '#/components/schemas/MaritalStatus' emergencyContactDegreeOfKinship: $ref: '#/components/schemas/EmergencyContactDegreeOfKinship' emergencyContactName: description: 'If emergency contact data are known, use this attribute to specify the name of the emergency contact.' type: string emergencyContactPhone: description: 'If emergency contact data are known, use this attribute to specify the phone number of the emergency contact.' type: string salutation: type: string description: The form of address of the new employee. birthName: type: string description: The birth name of the new employee. countryOfBirth: type: string description: The country where the new employee was born. title: type: string description: The title (e.g. Dr.) of the new employee. languageCode: type: string description: The language code of the new employee. Determines the GUI language of the onboarding tool. Defaults to the language code of the assigned organization unit. privateMobilePhoneNumber: type: string description: The private phone number of the new employee. placeOfBirth: type: string description: The city/location where the new employee was born. noteForOnboardingAdministrator: type: string description: A note that will be displayed for the onboarding administrator in HR WORKS. noteForOnboardingPerson: type: string description: A note that will be displayed for the new employee. healthInsuranceType: $ref: '#/components/schemas/HealthInsuranceType' confession: $ref: '#/components/schemas/Confession' socialSecurityNumber: type: string isMainActivity: type: boolean description: Only applicable for onboarding documents for German persons. default: true hasSecondaryEmployment: type: boolean description: Only applicable for onboarding documents for German persons. default: false secondaryEmploymentBeginDate: type: string description: Only applicable for onboarding documents for German persons. taxCategory: description: Only applicable for onboarding documents for German persons. type: string childAllowanceCategory: description: Only applicable for onboarding documents for German persons. type: string OnboardingStatus: type: string nullable: true enum: - activated - created - editingFinished OrganizationUnit: type: object properties: parentOrganizationUnit: $ref: '#/components/schemas/OrganizationUnit' number: type: string description: Unique number associated with the organization unit. name: type: string description: The name of the organization unit. additionalName: type: string description: Alternate name for the organization unit. sapCodeType: $ref: '#/components/schemas/SapCodeType' sapUnitCode: type: string description: The code for the SAP structure. countryCode: type: string description: The organization unit's country. Given as a 3-digit country code. uuid: type: string description: The unique identifier of the organization unit in HR WORKS. This identifier does not change. OrganizationUnitData: type: object required: - number - name - parentOrganizationUnitNumber - countryCode properties: parentOrganizationUnitNumber: type: string description: The number of the organization unit which is the direct parent this organization unit. number: type: string description: Unique number associated with the organization unit. name: type: string description: The name of the organization unit. additionalName: type: string description: Alternate name for the organization unit. sapCodeType: $ref: '#/components/schemas/SapCodeType' sapUnitCode: type: string description: The code for the SAP structure. countryCode: type: string description: The organization unit's country. Given as a 3-digit country code. PaymentAccount: type: object properties: paymentMethod: type: string description: The payment method of the account. Can be cashPrivate, bankTransfer, companyCreditCard, invoice or a custom name. accountNumber: description: The internal number of the payment account. type: string Person: type: object description: 'Describes a person/employee that exists in HR WORKS. NOTE: If your company has defined additional custom free fields for person master data in HR WORKS, the API will return those as well with the assigned field name as key and the respective values set in the person''s master data.' properties: accountPayable: type: string description: The default account payable of the person. address: $ref: '#/components/schemas/Address' bankAccount: $ref: '#/components/schemas/BankAccount' birthday: type: string description: The person's birthday. Date in YYYY-MM-DD format. format: date birthName: type: string description: The birth name of the person. buildingOrRoom: type: string description: The room/building where the person usually works. companyMobilePhoneNumber: type: string description: The number of the person's business mobile phone. costCenter: $ref: '#/components/schemas/CostCenter' costObjective: $ref: '#/components/schemas/CostObjective' countryCode: type: string description: 'The person''s country in HR WORKS, given as a 3-digit country code. This pertains to the country of the person as set in HR WORKS (usually the country of residence), not the nationality that was set in the person master data.' datevPersonnelNumber: type: string description: The person's personnel number in DATEV. Required if the person is assigned to a DATEV client in HR WORKS or if you want to create a new person which is assigned to an organization unit that is associated with a DATEV client. emergencyContactDegreeOfKinship: $ref: '#/components/schemas/EmergencyContactDegreeOfKinship' emergencyContactName: type: string description: The person's emergency contact name. emergencyContactPhone: type: string description: The person's emergency contact phone number. email: type: string description: The person's email address. The value is always the business email address. employmentType: $ref: '#/components/schemas/EmploymentType' expensesGroup: $ref: '#/components/schemas/ExpensesGroup' externalIds: type: array description: The ids of the person in external systems. items: $ref: '#/components/schemas/ExternalId' firstName: type: string description: The person's given name. gender: $ref: '#/components/schemas/Gender' historicizedData: $ref: '#/components/schemas/PersonHistoricizedData' joinDate: type: string description: The date of the person's first working day in the company. Date in YYYY-MM-DD format. format: date languageCode: type: string description: The language set for the HR WORKS GUI for this employee. lastName: type: string description: The person's surname. leaveDate: type: string description: The date of the person's last working day in the company (if set). Date in YYYY-MM-DD format. format: date nationality: type: string description: The nationality of the person. officePhoneNumber: type: string description: The landline office phone number of the person. organizationUnit: $ref: '#/components/schemas/OrganizationUnit' permanentEstablishment: $ref: '#/components/schemas/PermanentEstablishment' shortTimeWorkSchedule: $ref: '#/components/schemas/ShortTimeWorkSchedule' personId: type: string description: The user id assigned to the person. Used as the login name. Unique identifier. personLicenseNumber: type: string description: A unique identifier assigned by HR WORKS on person creation. Cannot be changed. personnelNumber: type: string description: The personnel number assigned to the person. Unique identifier. position: type: string description: 'The job title / position of the person, e.g. ''accountant''.' privateEmail: type: string description: The person's private email address. privateMobilePhoneNumber: type: string description: The person's private mobile phone number. probationEndDate: type: string description: The date on which the probationary period of the person ended or will end. Date in YYYY-MM-DD format. format: date salutation: type: string description: The form of address of the person. secondNationality: type: string description: The second nationality of the person (if any). superior: $ref: '#/components/schemas/PersonBaseData' title: type: string description: 'A honorific used by the person, e.g. "Dr.".' workSchedule: $ref: '#/components/schemas/WorkSchedule' highestLevelOfEducation: type: string description: Returned for German persons only. The highest school degree attained by the person. highestLevelOfEducationId: $ref: '#/components/schemas/HighestLevelOfEducationId' highestProfessionalQualification: type: string description: Returned for German persons only. The advanced education / university degree attained by the person. highestProfessionalQualificationId: $ref: '#/components/schemas/HighestProfessionalQualificationId' socialSecurityNumber: type: string description: Returned for German persons only. The person's social security number. taxpayerIdentificationNumber: type: string description: Returned for German persons only. The person's taxpayer ID. dateOfNotice: type: string description: The date of notice given as a YYY-MM-DD formatted string. reasonForGivingNotice: type: string description: The reason why the employee left the company. triggerForGivingNotice: $ref: '#/components/schemas/TriggerForGivingNotice' isActive: type: boolean description: Denoting whether the employee was set to gone or not. customNameId: type: string description: Only returned if SSO is active for the company. Custom nameID value. profilePictureUrl: type: string description: 'The profile picture of the employee in downloadable form. If you want to store the picture on your end, it is advised to download it on receipt of the API response - the link expires.' timeRecordingRegulation: $ref: '#/components/schemas/TimeRecordingRegulationBaseData' personIdentifierForKiosk: type: string description: Unique number which is created after creating a QR Code card for the person. paymentAccounts: type: array description: All accounts payable of the person. items: $ref: '#/components/schemas/PaymentAccount' uuid: type: string description: The unique identifier of the person in HR WORKS. This identifier does not change. organizationUnitUuid: type: string description: 'The unique identifier of the organization unit the person belongs to.' PersonBaseData: type: object properties: externalIds: type: array description: The ids of the person in external systems. items: $ref: '#/components/schemas/ExternalId' firstName: type: string description: The given name of the person. lastName: type: string description: The surname of the person. personId: type: string description: The HR WORKS username of the person. personnelNumber: type: string description: The personnel number of the person. personIdentifierForKiosk: type: string description: The person identifier for kiosk of the person. datevPersonnelNumber: type: string description: The DATEV personnel number of the person. This attribute is only returned if the DATEV integration is active. uuid: type: string description: The unique identifier of the person in HR WORKS. This identifier does not change. PersonData: type: object description: Describes the attributes that can be set while creating/editing persons via the API. required: - personId - personnelNumber properties: accountPayable: type: string description: 'The default account payable of the person, referenced by the account''s number.' address: $ref: '#/components/schemas/Address' bankAccount: $ref: '#/components/schemas/BankAccount' birthday: type: string description: The person's birthday. Date in YYYY-MM-DD format. format: date buildingOrRoom: type: string description: The room/building where the person usually works. companyMobilePhoneNumber: type: string description: The number of the person's business mobile phone. costCenterNumber: type: string description: 'The default cost center of the person, references by number.' costObjectiveNumber: type: string description: 'The default cost objective of the person, references by number.' countryCode: type: string description: 'The person''s country in HR WORKS, given as a 3-digit country code. This pertains to the country of the person as set in HR WORKS (usually the country of residence), not the nationality that was set in the person master data.' customNameId: type: string description: Only returned if SSO is active for the company. Custom nameID value. datevPersonnelNumber: type: string description: The person's personnel number in DATEV. Required if the person is assigned to a DATEV client in HR WORKS or if you want to create a new person which is assigned to an organization unit that is associated with a DATEV client. email: type: string description: The person's email address. The value is always the business email address. employmentType: $ref: '#/components/schemas/EmploymentType' firstName: type: string description: The person's given name. gender: $ref: '#/components/schemas/Gender' joinDate: type: string description: The date of the person's first working day in the company. Date in YYYY-MM-DD format. format: date lastName: type: string description: The person's surname. leaveDate: type: string description: The date of the person's last working day in the company (if set). Date in YYYY-MM-DD format. format: date nationality: type: string description: The nationality of the person. officePhoneNumber: type: string description: The landline office phone number of the person. organizationUnitNumber: type: string description: The number of the organization unit that the person is assigned to. permanentEstablishmentId: type: string description: The unique identifier of the permanent establishment that the person is assigned to. personId: type: string description: The user id assigned to the person. Used as the login name. Unique identifier. personnelNumber: type: string description: The personnel number assigned to the person. Unique identifier. position: type: string description: 'The job title / position of the person, e.g. ''accountant''.' probationEndDate: type: string description: The date on which the probationary period of the person ended or will end. Date in YYYY-MM-DD format. format: date secondNationality: type: string description: The second nationality of the person (if any). superiorPersonnelNumber: type: string description: The personnel number of the superior assigned to the person. title: type: string description: 'A honorific used by the person, e.g. ''Dr.''.' workScheduleBeginDate: type: string description: The date on which the work schedule assignment starts. Required if workScheduleId is set. Date in YYYY-MM-DD format. format: date workScheduleId: type: string description: The unique identifier of the work schedule assigned to the person. highestLevelOfEducation: type: string description: German persons only. The highest school degree attained by the person. highestLevelOfEducationId: $ref: '#/components/schemas/HighestLevelOfEducationId' highestProfessionalQualification: type: string description: German persons only. The advanced education / university degree attained by the person. highestProfessionalQualificationId: $ref: '#/components/schemas/HighestProfessionalQualificationId' socialSecurityNumber: type: string description: German persons only. The person's social security number. taxpayerIdentificationNumber: type: string description: German persons only. The person's taxpayer ID. personIdentifierForKiosk: type: string description: Unique number which is created after creating a QR Code card for the person. timeRecordingRegulationKey: type: string description: The unique identifier of the time recording regulation assigned to the person. PersonHistoricizedAddressData: type: object properties: beginDate: type: string description: The start date of the assignment. Date in YYYY-MM-DD format. format: date endDate: type: string description: The end date of the assignment. Not present if the assignment time period is set to unlimited. Date in YYYY-MM-DD format. format: date data: $ref: '#/components/schemas/Address' PersonHistoricizedBankAccountData: type: object properties: beginDate: type: string description: The start date of the assignment. Date in YYYY-MM-DD format. format: date endDate: type: string description: The end date of the assignment. Not present if the assignment time period is set to unlimited. Date in YYYY-MM-DD format. format: date data: $ref: '#/components/schemas/BankAccount' PersonHistoricizedData: description: Describes data that is assigned to a person for a period of time. type: object properties: address: type: array items: $ref: '#/components/schemas/PersonHistoricizedAddressData' bankAccount: type: array items: $ref: '#/components/schemas/PersonHistoricizedBankAccountData' healthInsurance: type: array items: $ref: '#/components/schemas/PersonHistoricizedHealthInsuranceData' employment: type: array items: $ref: '#/components/schemas/PersonHistoricizedEmploymentData' severeDisability: type: array items: $ref: '#/components/schemas/PersonHistoricizedSevereDisabilityData' shortTimeWorkSchedule: type: array items: $ref: '#/components/schemas/PersonHistoricizedShortTimeWorkScheduleData' workSchedule: type: array items: $ref: '#/components/schemas/PersonHistoricizedWorkScheduleData' PersonHistoricizedEmploymentData: type: object properties: beginDate: type: string description: The start date of the assignment. Date in YYYY-MM-DD format. format: date endDate: type: string description: The end date of the assignment. Not present if the assignment time period is set to unlimited. Date in YYYY-MM-DD format. format: date data: $ref: '#/components/schemas/Employment' PersonHistoricizedHealthInsuranceData: type: object properties: beginDate: type: string description: The start date of the assignment. Date in YYYY-MM-DD format. format: date endDate: type: string description: The end date of the assignment. Not present if the assignment time period is set to unlimited. Date in YYYY-MM-DD format. format: date data: $ref: '#/components/schemas/HealthInsurance' PersonHistoricizedSevereDisabilityData: type: object properties: beginDate: type: string description: The start date of the assignment. Date in YYYY-MM-DD format. format: date endDate: type: string description: The end date of the assignment. Not present if the assignment time period is set to unlimited. Date in YYYY-MM-DD format. format: date data: $ref: '#/components/schemas/SevereDisability' PersonHistoricizedShortTimeWorkScheduleData: type: object properties: beginDate: type: string description: The start date of the assignment. Date in YYYY-MM-DD format. format: date endDate: type: string description: The end date of the assignment. Date in YYYY-MM-DD format. format: date data: $ref: '#/components/schemas/ShortTimeWorkSchedule' PersonHistoricizedWorkScheduleData: type: object properties: beginDate: type: string description: The start date of the assignment. Date in YYYY-MM-DD format. format: date endDate: type: string description: The end date of the assignment. Not present if the assignment time period is set to unlimited. Date in YYYY-MM-DD format. format: date data: $ref: '#/components/schemas/WorkSchedule' PermanentEstablishment: type: object description: A physical business location of the company. properties: id: type: string name: type: string address: $ref: '#/components/schemas/Address' number: type: string description: The eight-digit identification number of the permanent establishment. PermissionToStoreApplication: type: string description: Describes if and how long an application is allowed to be stored. enum: - notGranted - onlyForApplication - afterApplication PersonDay: type: object properties: targetWorkingTime: type: number holidays: type: array items: $ref: '#/components/schemas/Holiday' workingTimes: type: array items: $ref: '#/components/schemas/WorkingTime' absences: type: array items: $ref: '#/components/schemas/Absence' sickLeaves: type: array items: $ref: '#/components/schemas/SickLeave' travelRequests: type: array items: $ref: '#/components/schemas/TravelRequest' expenseReports: type: array items: $ref: '#/components/schemas/ExpenseReport' remoteWork: type: array items: $ref: '#/components/schemas/RemoteWork' previousDayTimeAccountBalance: type: number description: The working hours balance of the previous day in minutes. PersonnelFileCategory: type: object description: Object representing a category for personnel file entries. properties: name: type: string description: The user-assigned name of the personnel file category. key: type: string description: The unique key of the personnel file category. PersonnelFileEntry: type: object description: A single personnel file entry for a person. properties: category: $ref: '#/components/schemas/PersonnelFileCategory' creationDate: type: string description: The creation date of the personnel file entry in YYYY-MM-DD format. format: date documents: type: array items: type: string description: The download url of the attached pdf document. The url expires after one hour. id: type: string description: The unique ID (an incrementing counter) of the personnel file entry. name: type: string description: The user-assigned name of the personnel file entry. notes: type: string description: A custom comment/note. Can include html tags. resubmissionDate: type: string description: The future date for resubmission of the personnel file entry. Date in YYYY-MM-DD format. format: date changeDate: type: string description: Stores the date when the personnel file entry was most recently edited. Date in YYYY-MM-DD format. format: date changedBy: type: string description: Records the firstname and lastname of the person who last edited a personnel file entry. createdBy: $ref: '#/components/schemas/PersonBaseData' isWageRelevant: type: boolean description: Specifies whether the personnel file is relevant to wages. PersonnelFileEntryData: type: object description: JSON object representing a personnel file entry. required: - name - creationDate - category - personnelNumber properties: name: type: string description: The name of the personnel file entry. category: type: string description: The key of the category for the personnel file entry. All available categories can be fetched via /v2/persons/personnel-file/categories. creationDate: type: string format: date description: The date of creation. personIdentifier: type: string description: Identifier of the person to create an entry for. Use personIdentifierType to specify what type the value is. personnelNumber: type: string description: The personnel number of the person to create an entry for. Only used if no personIdentifier is present. notes: type: string description: The notes of the personnel file entry. isWageRelevant: type: boolean description: Specifies whether the personnel file is relevant to wages. default: false PlaceOfWorkTypeKey: type: string description: The unique key of the place of work type of the post offer. enum: - hybrid - onsite - remote Post: type: object description: Representation of a post. Used in applicant management endpoints. properties: displayName: type: string description: 'The name of the post, to be displayed in a job portal.' name: type: string description: The name of the post. key: type: string description: The unique key of the post. uuid: type: string description: The unique identifier of the post. This identifier does not change. organizationUnitNumber: type: string description: 'The number of the organization unit, the post belongs to.' organizationUnitUuid: type: string description: 'The unique identifier of the organization unit the post belongs to.' contactInformation: type: object properties: contactPerson: $ref: '#/components/schemas/PersonBaseData' phone: type: string description: The telephone number to contact. email: type: string description: The email address to contact. scopeOfActivities: type: string description: The translated scope of activities of the post. scopeOfActivitiesKey: $ref: '#/components/schemas/ScopeOfActivitiesKey' isActive: type: boolean description: Specifies if the post is set to active. postImageUrl: type: string description: The S3-URL of the cover image assigned to the post. postDescriptions: $ref: '#/components/schemas/PostDescriptions' postOffers: type: array items: $ref: '#/components/schemas/PostOffer' howDidYouHearAboutUsOptions: $ref: '#/components/schemas/HowDidYouHearAboutUsOptions' PostDescriptions: type: object description: Description texts of a post. Used in applicant management endpoints. properties: introduction: $ref: '#/components/schemas/TitleDescriptionPair' tasks: $ref: '#/components/schemas/TitleDescriptionPair' profile: $ref: '#/components/schemas/TitleDescriptionPair' offer: $ref: '#/components/schemas/TitleDescriptionPair' summary: $ref: '#/components/schemas/TitleDescriptionPair' PostOffer: type: object description: Representation of a post offer. Used in applicant management endpoints. properties: id: type: string description: The ID of the postOffer. postOfferNameSuffix: type: string description: The post offer name suffix to show after the display name of the post. permanentEstablishments: type: array items: $ref: '#/components/schemas/PermanentEstablishment' placeOfWorkType: type: string description: 'The translated place of work type of the post offer, e.g. ''hybrid''.' placeOfWorkTypeKey: $ref: '#/components/schemas/PlaceOfWorkTypeKey' employmentContract: type: string description: The translated employment contract type of the post offer. employmentContractKey: $ref: '#/components/schemas/EmploymentContractTypeKey' careerLevel: type: string description: 'The career level of the post offer, e.g. ''Professional''.' careerLevelKey: $ref: '#/components/schemas/CareerLevelKey' description: type: string description: Description of the post offer. displayName: type: string description: The name of the post offer to display in job portals. jobPortal: type: string description: Given job portal of the post offer. priority: type: number description: The priority of the post offer. publicationDate: type: string description: The date on which the post offer should be published. Date in YYYY-MM-DD format. format: date validUntilDate: type: string description: 'The date after which the post offer expires. Only present, if the visibility of the offer is set to a limited period of time. Date in YYYY-MM-DD format.' format: date workingTimeModel: type: string description: The translated name of the working time model of the post offer. workingTimeModelKey: $ref: '#/components/schemas/WorkingTimeModelKey' isActive: type: boolean description: Specifies if the post offer is set to active. ProjectTeam: type: object description: Object representing the team of a time tracking project properties: activePersons: type: array items: $ref: '#/components/schemas/PersonBaseData' inactivePersons: type: array items: $ref: '#/components/schemas/PersonBaseData' ProportionalVacationEntitlementCalculation: type: string description: "Specifies how the vacation entitlement should be calculated, if a person joins during the first half of the year or leaves during the second half of the year." enum: - proportionalAtLeastMinimum - minimum - minimumAndAdditional - proportional Receipt: type: object properties: description: type: string description: A text description for the receipt. vatPercentage: type: string description: The value added tax percentage applied to this receipt. totalSum: $ref: '#/components/schemas/CurrencyValue' baseCurrencyTotalSum: $ref: '#/components/schemas/CurrencyValue' netSum: $ref: '#/components/schemas/CurrencyValue' baseCurrencyNetSum: $ref: '#/components/schemas/CurrencyValue' costCenter: $ref: '#/components/schemas/CostCenter' costObjective: $ref: '#/components/schemas/CostObjective' type: type: string description: The short name of the receipt kind. receiptDocument: type: string description: The download url of the digital receipt document that is assigned to the receipt. The url expires after one hour. paymentType: type: string description: The payment type used for the receipt. number: type: string description: Each receipt attached to an expense report has a unique number. The combination of expense report number and receipt number is globally unique. isSelfIssuedReceipt: type: boolean description: 'Boolean indicating whether the travelling person has issued the receipt themselves, e.g. when no official receipt is available.' date: type: string description: 'If the receipt is connected to a specific date, e.g. in case it refers to a stay at an hotel, the date is returned via this property.' format: date persons: type: string deprecated: true description: 'Only returned for meal documentation receipts. A string containing information about the persons that participated in the meal. Deprecated: The persons were split into the externalPersons and internalPersons properties.' externalPersons: type: array description: Only returned for meal documentation receipts. A string list containing information about the persons that participated in the meal and are not employees of the target company. items: type: string description: The names of the external persons. internalPersons: type: array description: Only returned for meal documentation receipts. A string containing information about the persons that participated in the meal and are employees of the target company. items: $ref: '#/components/schemas/PersonBaseData' reason: type: string description: Only returned for meal documentation receipts. The reason for the business dinner. tipGrossAmount: $ref: '#/components/schemas/CurrencyValue' tipVatPercentage: type: string description: Only returned for meal documentation receipts. The VAT percentage for the amount of money spent on tips. drinksGrossAmount: $ref: '#/components/schemas/CurrencyValue' drinksVatPercentage: type: string description: Only returned for meal documentation receipts. The VAT percentage for the amount spent on drinks. breakfastGrossAmount: $ref: '#/components/schemas/CurrencyValue' breakfastVatPercentage: type: string description: Only returned for hotel receipts. The VAT percentage for paid for the breakfast. breakfastIncluded: type: boolean description: Only returned for hotel receipts. Denoting if a breakfast was included in the receipt sum. ancillaryServicesGrossAmount: $ref: '#/components/schemas/CurrencyValue' ancillaryServicesVatPercentage: type: string description: Only returned for hotel receipts. The VAT percentage for paid for ancillary services at the hotel. exchangeRate: type: number description: Only returned if the base currency of the person does not match the payment currency of the receipt. The exchange rate between the user's base currency and the payment currency of the receipt. ReceiptType: type: object properties: name: type: string description: "The name of the receipt type." category: $ref: '#/components/schemas/ReceiptCategory' key: type: string description: The unique identifier of the receipt type. receiptTypeDeduction: type: number description: The percentage reduction of the daily allowance corresponding to the receipt type. isZeroAmountAllowed: type: boolean description: "Indicates if it is possible to record a receipt amounting to 0." isCancellationReceipt: type: boolean description: "Indicates whether the receipt type is a cancellation receipt ('Stornobeleg')" isActive: type: boolean description: "Indicates if the receipt type is active." receiptTypeAccounts: type: array items: $ref: '#/components/schemas/ReceiptTypeAccount' ReceiptTypeAccount: type: object properties: accountNumber: type: string description: "The number of the account." vatPercentage: type: string description: "The value added tax percentage applied to this account." purpose: $ref: '#/components/schemas/ReceiptTypeAccountPurpose' ReceiptCategory: type: string nullable: false enum: - hotelWithAncillaryServices - hotel - gift - defaultReceipt - businessEntertainmentSeparateDrinks - businessEntertainment ReceiptTypeAccountPurpose: type: string description: "The purpose the account is used for." nullable: false enum: - ancillaryServices - breakfast - primaryAccount - drinks - tip TriggerForGivingNotice: type: string description: A set of options describing which entity initiated the process of an employee leaving the company. enum: - employee - employer - mutual RemoteWork: type: object properties: beginDate: type: string description: The start date of the remote work. Date in YYYY-MM-DD format format: date endDate: type: string description: The end date of the remote work. Date in YYYY-MM-DD format format: date isBeginDateHalfDay: type: boolean description: Specifies whether the remote work spans only the afternoon of the first day (or only the afternoon for one-day absences). isEndDateHalfDay: type: boolean description: Specifies whether the remote work spans only the forenoon of the last day (or only the forenoon for one-day absences). number: type: string description: A unique identifier of the remote work. Consists of the person's license number before the underscore and the running remote work number for the respective person after the underscore. status: type: string description: 'The remote work''s status, e.g. "Validated Ok", "Requested".' statusIdentifier: $ref: '#/components/schemas/RemoteWorkStatus' workingDays: type: number format: float description: The number of working days that fall within the remote work's date interval. example: 1.5 workingDaysInDateInterval: type: number format: float description: The number of working days that fall within the remote work's date interval and the date interval specified by the beginDate and endDate parameters. example: 1.5 remark: type: string description: 'A text field for notes or additional information regarding the remote work' RemoteWorkData: type: object description: Describes the attributes that can be set while creating/editing remote work via the API. properties: beginDate: type: string description: The start date of the remote work. Date in YYYY-MM-DD format format: date endDate: type: string description: The end date of the remote work. Date in YYYY-MM-DD format format: date isBeginDateHalfDay: type: boolean description: Specifies whether the remote work spans only the afternoon of the first day (or only the afternoon for one-day absences). nullable: true isEndDateHalfDay: type: boolean description: Specifies whether the remote work spans only the forenoon of the last day (or only the forenoon for one-day absences). nullable: true statusIdentifier: $ref: '#/components/schemas/RemoteWorkStatus' RemoteWorkDateIntervalData: type: object description: JSON object representing a date interval with the associated remote work data. properties: beginDate: type: string format: date endDate: type: string format: date remoteWork: type: array items: $ref: '#/components/schemas/RemoteWork' RemoteWorkStatus: type: string nullable: true enum: - requested - validatedOk - validatedNotOk - changeRequested - cancellationRequested - cancelled Salutation: type: string description: The salutation of the descripted person enum: - mr - ms - none SapCodeType: type: string nullable: true enum: - Client - Company code - Business area ScopeOfActivitiesKey: type: string description: The unique key of the scope of activities of the post. enum: - administration - analysisAndStatistics - consulting - customerService - engineeringAndTechnical - financeAccountingAndControlling - graphicDesignAndArchitecture - healthMedicalAndSocial - hr - itAndSoftwareDevelopment - legal - managementAndCorporateDevelopment - marketingAndAdvertising - notSpecified - otherDisciplines - prAndJournalism - processPlanningAndQa - productionAndManufacturing - productManagement - projectManagement - purchasingMaterialsManagementAndLogistics - salesAndCommerce - researchAndDevelopment SevereDisability: type: object description: JSON object representing a severe disability in person master data. properties: description: type: string description: The user-entered description of the severe disability. ShortTimeWorkSchedule: type: object description: A short time working schedule. properties: name: type: string description: The name of the working schedule. weeklyWorkingHours: type: number description: The total working hours per week. workingDays: type: array description: 'An array of the days in the work schedule. Each day is indexed by a sequence number (e.g. first day in the work schedule) which is mapped to a working day JSON object containing the scheduled working hours for said day and a String identifier for the weekday name (e.g. Wednesday). Thus, the day with the sequence number 1 does not necessarily have to be a Monday - it depends on the configuration of the working schedule in HR WORKS.' items: type: object additionalProperties: $ref: '#/components/schemas/WorkScheduleDay' SickLeave: type: object properties: type: type: string description: 'The short identifier of the sick leave''s type, e.g. "AL" for Annual Leave. The identifiers can be configured in HR WORKS.' beginDate: type: string description: The start date of the sick leave. Date in YYYY-MM-DD format format: date endDate: type: string description: The end date of the sick leave. Date in YYYY-MM-DD format format: date hasElectronicSicknessCertificate: type: boolean description: Specifies if the certificate of the sick-leave is transmitted digitally (eAU). default: false isBeginDateHalfDay: type: boolean description: Specifies whether the sick leave spans only the afternoon of the first day (or only the afternoon for one-day absences). isEndDateHalfDay: type: boolean description: Specifies whether the sick leave spans only the forenoon of the last day (or only the forenoon for one-day absences). name: type: string description: The full name of the sick leave type. Identical for all absences of the same type. number: type: string description: A unique identifier of the sick leave. Consists of the person's license number before the underscore and the running absence number for the respective person after the underscore. status: type: string description: 'The sick leave''s status, e.g. "Checked, OK".' statusIdentifier: $ref: '#/components/schemas/SickLeaveStatus' workingDays: type: number format: float description: The number of working days that fall within the sick leave's date interval. example: 1.5 workingDaysInDateInterval: type: number format: float description: The number of working days that fall within the sick leave's date interval and the date interval specified by the beginDate and endDate parameters. example: 1.5 substitute: $ref: '#/components/schemas/PersonBaseData' remark: type: string description: The user-entered remark of the sick leave. child: type: object description: The child related to the sickness. Only included if the sickness is a sickness of a child. properties: firstName: type: string description: The first name of the child. birthday: type: string description: The birthday of the child. Date in YYYY-MM-DD format. format: date lastName: type: string description: The last name of the child. documents: type: array items: type: string description: The download url of the attached pdf document. The url expires after one hour. SickLeaveData: type: object description: Describes the attributes that can be set while creating/editing sick leaves via the API. properties: type: type: string description: 'The short identifier of the sick leave''s type, e.g. "AL" for Annual Leave. The identifiers can be configured in HR WORKS.' beginDate: type: string description: The start date of the sick leave. Date in YYYY-MM-DD format format: date endDate: type: string description: The end date of the sick leave. Date in YYYY-MM-DD format format: date hasElectronicSicknessCertificate: type: boolean description: Specifies if the certificate of the sick-leave is transmitted digitally (eAU). default: false isBeginDateHalfDay: type: boolean description: Specifies whether the sick leave spans only the afternoon of the first day (or only the afternoon for one-day absences). isEndDateHalfDay: type: boolean description: Specifies whether the sick leave spans only the forenoon of the last day (or only the forenoon for one-day absences). status: $ref: '#/components/schemas/SickLeaveStatus' personnelNumber: type: string description: The HR WORKS personnel number of the person that the sick leave should be assigned to. substitute: type: string description: The personnel number of the person assigned as substitute for the sick leave (if any). SickLeaveStatus: type: string nullable: true enum: - cancellationRequested - cancelled - certificatePending - electronicCertificatePending - electronicCertificateAvailable - electronicCertificateRequestSent - electronicCertificateRequestFailed - reported - validatedOk SickLeaveType: type: object description: A type that can be assigned to sick leaves in HR WORKS. properties: name: type: string description: The name of the sick leave type that will be displayed to employees. key: type: string description: A unique identifier for the sick leave type. isActive: type: boolean description: Indicates whether the sick leave type is currently in use. color: type: string description: The color representing the sick leave type in the HR WORKS GUI. isAdminOnly: type: boolean description: Indicating whether only HR WORKS admins can assign this sick leave type. isPublic: type: boolean description: Indicating whether this sick leave type is public. isSicknessOfChild: type: boolean description: Indicating whether this sick leave type represents the sickness of an employee's child. useInMonthPayroll: type: boolean description: A boolean indicating whether this sick leave type will be used in month payroll accounting. SingleResult: type: object description: A wrapper object for a single-object result of a write (PUT/POST/DELETE) request against the HR WORKS API. properties: errors: type: array description: A collection of all errors that occurred during the manipulation of this object. Not included if no errors occurred. items: $ref: '#/components/schemas/ObjectManipulationNotification' warnings: type: array description: A collection of all warnings that occurred during the manipulation of this object. Not included if no warnings occurred. Warnings are IGNORED by the HR WORKS server when processing API write requests. items: $ref: '#/components/schemas/ObjectManipulationNotification' recordId: type: number description: 'The recordId of the object, corresponding to the object order in the write request. (Starts at 1, not 0!)' data: type: object description: A JSON representation of the object that was manipulated or created via the API request. May only contain an abridged version of the data. additionalProperties: oneOf: - type: string - type: object - type: array items: {} - type: number resourceLocation: type: string description: A link to the single-resource endpoint for the manipulated resource. SingleDeleteRequestResponse: title: SingleDeleteRequestResponse allOf: - $ref: '#/components/schemas/WriteRequestResponse' - type: object properties: apiResponse: $ref: '#/components/schemas/SingleDeleteRequestResult' SingleWriteRequestResponse: title: SingleWriteRequestResponse allOf: - $ref: '#/components/schemas/WriteRequestResponse' - type: object properties: apiResponse: $ref: '#/components/schemas/SingleWriteRequestResult' SingleWriteRequestResult: allOf: - $ref: '#/components/schemas/WriteRequestResult' - type: object properties: result: $ref: '#/components/schemas/SingleResult' SingleDeleteRequestResult: allOf: - $ref: '#/components/schemas/WriteRequestResult' - type: object properties: result: $ref: '#/components/schemas/SingleDeleteResult' SingleDeleteResult: type: object properties: result: type: string enum: - success description: The status "success" if the request had no errors. SickLeavesDateIntervalData: type: object description: JSON object representing a date interval with the associated sick leaves. properties: beginDate: type: string format: date endDate: type: string format: date sickLeaves: type: array items: $ref: '#/components/schemas/SickLeave' TimeReference: type: string description: Defines a reference point in time. enum: - endOfMonth - endOfQuarter - endOfYear - fifteenthOfMonth - fifteenthOrEndOfMonth - onEveryDay TimeRecordingRegulationBaseData: type: object description: The current time recording regulation. properties: title: type: string description: The title of the time recording regulation. key: type: string description: The unique key of the time recording regulation. TimeRecordingRegulation: description: JSON object describing time recording regulations that can be assigned to employees. allOf: - $ref: '#/components/schemas/TimeRecordingRegulationBaseData' - type: object properties: isOnline: type: boolean description: Answer whether working time recording via the HR WORKS application is allowed. isKiosk: type: boolean description: Answer whether working time recording via a terminal/kiosk is allowed. workingTimeTypes: type: array items: $ref: '#/components/schemas/WorkingTimeType' kiosks: type: array items: $ref: '#/components/schemas/WorkingTimeKiosk' earliestBeginTime: type: string description: 'The earliest possible start time according to the time recording regulation. Time in hh:mm format.' latestEndTime: type: string description: 'The latest possible end time according to the time recording regulation. Time in hh:mm format.' editingPeriod: $ref: '#/components/schemas/UnitValueTuple' TimeTrackingProjectStatus: type: string nullable: true enum: - active - completed - planned - blocked TimeTrackingProjectType: type: string nullable: true enum: - subProject - parentProject - parentProjectWithoutSubProjects TimeTrackingProject: type: object description: Object representing a single time tracking project. properties: id: type: string description: The id of the time tracking project. number: type: number description: The number of the project. name: type: string description: Answer the name of the time tracking project. beginDate: type: string description: The begin date of the time tracking project in YYYY-MM-DD format. format: date endDate: type: string description: The end date of the time tracking project in YYYY-MM-DD format. format: date description: type: string description: The description of the time tracking project. parentProject: type: number description: Answer the unique number of the parentProject. statusIdentifier: $ref: '#/components/schemas/TimeTrackingProjectStatus' status: type: string description: Locale-specific string representation of the project status. hourlyBudget: type: string description: The hourly budget in total minutes. hasSubProjects: type: boolean description: Answer whether the time tracking project has any subProjects. projectManager: $ref: '#/components/schemas/PersonBaseData' customer: $ref: '#/components/schemas/TimeTrackingProjectBaseCustomer' projectTeam: $ref: "#/components/schemas/ProjectTeam" TimeTrackingProjectAssignmentData: type: object description: "Object representing a single time tracking project assignment." required: - personIdentifier - projectNumber properties: personIdentifier: type: string description: The identifier of a person in the HR WORKS API. Use the personId here. projectNumber: type: number description: The unique number of the time tracking project. isActive: type: boolean default: true description: Indicating whether the person should have an active assignment. TimeTrackingProjectData: type: object description: "Object representing a single time tracking project." required: - id - name - beginDate - status - projectManagerPersonnelNumber - customerId properties: id: type: string description: The id of the time tracking project. name: type: string description: The name of the time tracking project. beginDate: type: string description: The begin date of the time tracking project in YYYY-MM-DD format. format: date endDate: type: string description: The end date of the time tracking project in YYYY-MM-DD format. format: date nullable: true description: type: string description: The description of the time tracking project. nullable: true parentProjectId: type: string description: Set the parent project id. nullable: true status: $ref: "#/components/schemas/TimeTrackingProjectStatus" hourlyBudget: type: number description: The hourly budget in minutes. This is required for sub projects or projects without sub projects. nullable: true projectManagerPersonnelNumber: type: string description: The personnel number of the project manager. customerId: type: string description: The unique id of the customer. TimeTrackingProjectBaseCustomer: type: object description: Object representing a customer properties: id: type: string description: The unique identifier of the customer. number: type: string description: The customer number. name: type: string description: Name of the customer. isActive: type: boolean description: Indicates whether the customer is currently in use. TimeTrackingProjectCustomer: allOf: - $ref: '#/components/schemas/TimeTrackingProjectBaseCustomer' - type: object description: Object representing a detailed version of the customer properties: activeProjectCount: type: number description: The number of active projects of the customer. totalProjectCount: type: number description: The number of projects of the customer. TimeTrackingProjectCustomerData: type: object description: The time tracking project customer to add in HR WORKS. properties: name: type: string number: type: string Webhook: type: object description: Object representing a single webhook. properties: id: type: number description: 'The id of the webhook.' name: type: string description: 'The name of the webhook.' resource: $ref: '#/components/schemas/WebhookResource' action: $ref: '#/components/schemas/WebhookAction' url: type: string description: 'The callback URL of the webhook that will be notified when resources are manipulated.' accessKey: type: string description: 'The accessKey of the webhook credentials.' isActive: type: boolean description: 'Indicates whether the webhook is currently used.' remark: type: string description: 'The remark of the webhook.' integration: type: string description: 'The name of the integration if used for an integration.' WebhookData: type: object description: Describes the attributes that can be set while creating/editing webhooks via the API. required: - action - name - resource - url properties: action: $ref: '#/components/schemas/WebhookAction' name: type: string description: 'The name of the webhook.' resource: $ref: '#/components/schemas/WebhookResource' url: type: string description: 'The callback URL of the webhook that will be notified when resources are manipulated.' accessKey: type: string description: 'Is required if the webhook is active. The accessKey of the webhook credentials.' isActive: type: boolean default: false description: 'Indicates whether the webhook is currently used.' remark: type: string description: 'The remark of the webhook.' WorkingTime: type: object description: Object representing a single working time. properties: beginDateAndTime: type: string description: The begin time of the working time. Formatted as YYYYMMDD"T"HHMMSS"Z". format: date-time endDateAndTime: type: string description: The end time of the working time. Formatted as YYYYMMDD"T"HHMMSS"Z". format: date-time clockInKioskId: type: number description: The id of the kiosk if the time was started on a Kiosk. clockOutKioskId: type: number description: The id of the kiosk if the time was stoped on a Kiosk. comment: type: string description: The comment referring to the WorkingTime workingTimeType: $ref: '#/components/schemas/WorkingTimeType' project: $ref: '#/components/schemas/BaseTimeTrackingProject' id: type: string description: 'The id of the working time, consisting of the person number and the beginDateAndTime. Formatted as the person number followed by an underscore ''_'' and concluded with the beginDateAndTime as Unix time.' example: '1_1683093600' TitleDescriptionPair: type: object properties: title: type: string description: type: string Token: type: object description: 'A JSON web token. Valid for 15 minutes. Decode the token to see the expiry timestamp and check if your token is still valid before using it for API calls. If the token has already expired, request a new one via the /authentication endpoint.' properties: token: type: string description: The JWT in encoded format. TravelRequest: type: object properties: beginDate: type: string description: The start date of the travel request. Date in YYYY-MM-DD format. format: date endDate: type: string description: The end date of the travel request. Date in YYYY-MM-DD format. format: date costCenter: $ref: '#/components/schemas/CostCenter' costObjective: $ref: '#/components/schemas/CostObjective' destination: type: string description: The travelling destination of the travel request. person: $ref: '#/components/schemas/PersonBaseData' name: type: string description: The title of the travel request. number: type: string description: A unique identifier of the travel request. Consists of the personnel number of the person associated with the travel request and the running per-person travel request number. startLocation: type: string description: The location where the business trip will start. status: type: string description: 'The status of the travel request, e.g. Checked, OK.' statusIdentifier: $ref: '#/components/schemas/TravelRequestStatus' stopovers: type: string description: Comma-separated names of stopovers expectedCosts: $ref: '#/components/schemas/CurrencyValue' destinationCountries: type: string description: Comma-separated names of all destination countries of the travel request. travelExpensesReportNumber: type: string description: 'If the travel request was converted to an expense report, this attribute contains the unique number of said expense report.' TravelRequestsDateIntervalData: type: object description: JSON object representing a date interval with the associated travel requests. properties: beginDate: type: string format: date endDate: type: string format: date travelRequests: type: array items: $ref: '#/components/schemas/TravelRequest' TravelRequestStatus: type: string nullable: true enum: - editing - applied - validatedOk - validatedNotOk UnitValueTuple: type: object properties: unit: type: string description: 'The unit, e.g. km.' value: type: number description: The value with up to 2 decimals. VacationType: type: object description: "A vacation type in HR WORKS." properties: name: type: string description: "The name of the vacation type." key: type: string description: "The key of the vacation type." countryCode: type: string description: "The three-letter country code of the country that the vacation type is associated with." isActive: type: boolean description: "Indicates if the vacation type is currently active." isAssigned: type: boolean description: "Indicates if the vacation type is currently assigned to a person in HR WORKS." isDefault: type: boolean description: "Answer whether the kind of vacation is marked as default vacation type of the company." weeklyWorkingHours: type: number description: "The number of weekly working hours of the vacation type." minimumVacationEntitlement: type: number description: "The minimum number of vacation days of the vacation type." additionalVacationEntitlement: type: number description: "The number of additional vacation entitlement days." disabilityRelatedVacationEntitlement: type: number description: "The number of additional vacation granted to disabled persons." vacationCalculationLeaveSecondHalf: $ref: "#/components/schemas/ProportionalVacationEntitlementCalculation" vacationCalculationEntryFirstHalf: $ref: "#/components/schemas/ProportionalVacationEntitlementCalculation" expirationDays: type: number description: "Specifies after how many days in the following year the vacation entitlement expires." expirationMonths: type: number description: "Specifies after how many months in the following year the vacation entitlement expires." ageRelatedVacationEntitlement: description: "The age dependent boni to vacation." type: array items: $ref: "#/components/schemas/ValueAssociatedNumericalRange" tenureRelatedVacationEntitlement: description: "The tenure dependent boni for vacation." type: array items: $ref: "#/components/schemas/ValueAssociatedNumericalRange" ValueAssociatedNumericalRange: type: object description: "A vacation expression in HR WORKS" properties: range: $ref: "#/components/schemas/NumericalRange" value: type: number description: "The possible increase in value while maintaining the range limited by the upper and lower limits." Vehicle: type: object properties: isPrivateVehicle: type: boolean description: Boolean denoting whether the vehicle is company-owned or privately owned. licensePlateNumber: type: string description: The license plate number of the vehicle. WageType: type: object description: JSON object representing a wage type. properties: number: type: number description: The wage type number. isActive: type: boolean exportKey: type: string type: type: string description: Shows if the wage type is custom or a preconfigured wage type (systemWageType). enum: - systemWageType - customWageType name: type: string internationalCountryCode: type: string importKey: type: string WebhookAction: type: string description: The action type that triggers the webhook (resourceDeactivated is only used with the person resource). enum: - resourceDeactivated - resourceCreated - resourceDeleted - resourceUpdated WebhookConfiguration: type: object properties: url: type: string description: The URL of the webhook. headers: additionalProperties: type: string description: The header values to set in the webhook request. WebhookResource: type: string enum: - person - applicant - absence - sickLeave - remoteWork WorkingTimeModelKey: type: string enum: - notSpecified - fullTime - fullTimeOrPartTime - partTime WorkingTimeTypes: type: string nullable: true enum: - workingTime - businessErrand - doctorsAppointment - educationAndTraining - governmentAgencyAppointment - physicalTherapy - postOffice WorkSchedule: type: object description: A working schedule. properties: name: type: string description: The name of the working schedule. key: type: string description: The key of the working schedule. weeklyWorkingHours: type: number description: The total working hours in a week. workingDays: type: array description: 'An array of the days in the work schedule. Each day is indexed by a sequence number (e.g. first day in the work schedule) which is mapped to a working day JSON object containing the scheduled working hours for said day and a String identifier for the weekday name (e.g. Wednesday). Thus, the day with the sequence number 1 does not necessarily have to be a Monday - it depends on the configuration of the working schedule in HR WORKS.' items: type: object additionalProperties: $ref: '#/components/schemas/WorkScheduleDay' WorkScheduleDay: type: object description: 'A work schedule object consists of an array of WorkScheduleDays. Each day is indexed by a sequence number (e.g. first day in the work schedule) which is mapped to a working day JSON object containing the scheduled working hours for said day and a String identifier for the weekday name (e.g. Wednesday). Thus, the day with the sequence number 1 does not necessarily have to be a Monday - it depends on the configuration of the working schedule in HR WORKS.' properties: workingHours: type: number description: The amount of working hours for the day. day: type: string description: The name of the day. WorkingTimeKiosk: type: object description: A time tracking kiosk. properties: name: type: string id: type: number useQrCode: type: boolean usePin: type: boolean WorkingTimeStatus: type: object description: JSON object describing whether a person is currently clocked in or clocked out. Contains additional information about the current working time if the employee is clocked in. properties: clockedIn: type: boolean description: Flag indicating whether the person is clocked in or clocked oud workingTime: $ref: '#/components/schemas/WorkingTime' WorkingTimeType: type: object description: A time tracking type. properties: name: type: string type: $ref: '#/components/schemas/WorkingTimeTypes' WorkingTimesDateIntervalData: type: object description: JSON object representing a date interval with the associated working times. properties: beginDate: type: string format: date endDate: type: string format: date workingTimeMinutes: type: number targetWorkingTimeMinutes: type: number breakDurationMinutes: type: number workingTimes: type: array items: $ref: '#/components/schemas/WorkingTime' WorkingTimeData: type: object description: A working time object. required: - beginDateAndTime properties: personnelNumber: type: string description: The personnel number of the person. It's required to include either the personnel number or the personIdentifierForKiosk of the person. nullable: true personIdentifierForKiosk: type: string description: Alternative way to identify the person. The personIdentifierForKiosk of the person. It's required to include either the personnel number or the personIdentifierForKiosk of the person. nullable: true beginDateAndTime: type: string description: The begin time of the working time. format: date-time example: 20250108T075200Z endDateAndTime: type: string description: The end time of the working time. format: date-time example: 20250108T115200Z nullable: true type: type: string description: The working time type of the working time. default: workingTime nullable: true projectNumber: type: number description: The unique number of the project nullable: true clockInKioskId: type: number description: The id of the kiosk which was used to clock in. nullable: true clockOutKioskId: type: number description: The id of the kiosk which was used to clock out. nullable: true comment: type: string description: Comment on the working time. nullable: true WriteRequestResponse: type: object properties: status: type: string responseType: type: string description: A string indicating the response type. discriminator: propertyName: responseType WriteRequestResult: type: object description: 'A wrapper object for the result of a write (PUT/POST/DELETE) request against the HR WORKS API. Will EITHER contain one or more errors that occurred while processing the request (meaning the request failed) OR a representation of the objects manipulated/created with the call (meaning the request was successful). Successful requests might also contain warnings that occurred while processing the request, but were ignored.' properties: generalErrors: type: array description: A collection of all general errors that occurred during the write request. Not included if no errors occurred. items: $ref: '#/components/schemas/ApiError' dataErrors: type: array description: 'A collection of all object-specific errors that occurred during the write request. A write request is aborted as soon as an error occurs, so this error collection may be incomplete. Each error contains a recordId that allows matching the errors to input data.' items: $ref: '#/components/schemas/DataError' status: type: string links: {} callbacks: {} securitySchemes: BearerJWT: type: http scheme: bearer bearerFormat: JWT security: - BearerJWT: []