openapi: 3.1.0
info:
title: Kombo AI Apply Unified HRIS API API
version: 1.0.0
description: Endpoints for AI-powered job application features.
servers:
- url: https://api.kombo.dev/v1
description: Kombo EU API
- url: https://api.us.kombo.dev/v1
description: Kombo US API
security:
- ApiKey: []
tags:
- name: Unified HRIS API
description: Unified endpoints to access all the HR concepts you might need.
paths:
/hris/provisioning-groups/{group_id}/diff:
post:
operationId: PostHrisProvisioningGroupsGroupIdDiff
summary: Get provisioning diff
description: Get the list of users to provision, deprovision, and optionally update based on the users you've already provisioned in your system.
tags:
- Unified HRIS API
parameters:
- in: header
name: X-Integration-Id
schema:
type: string
description: ID of the integration you want to interact with.
example: bamboohr:HWUTwvyx2wLoSUHphiWVrp28
required: true
- name: group_id
in: path
required: true
description: ID of the provisioning group (currently only `default` is allowed).
schema:
$ref: '#/components/schemas/PostHrisProvisioningGroupsGroupIdDiffParameterGroupId'
examples:
example1:
value: n39n320clr8c5amf8v83nbch
requestBody:
description: POST /hris/provisioning-groups/:group_id/diff Request body
content:
application/json:
schema:
$ref: '#/components/schemas/PostHrisProvisioningGroupsGroupIdDiffRequestBody'
examples:
example1:
value:
provisioned_users:
- origin_id: your_id_123
email: johndoe@example.com
options:
employee_fields:
- id
- first_name
- last_name
responses:
'200':
description: POST /hris/provisioning-groups/:group_id/diff Positive response
content:
application/json:
schema:
$ref: '#/components/schemas/PostHrisProvisioningGroupsGroupIdDiffPositiveResponse'
default:
$ref: '#/components/responses/ErrorResponseHRIS'
/hris/provisioning-groups/{group_id}/setup-links:
post:
operationId: PostHrisProvisioningGroupsGroupIdSetupLinks
summary: Create provisioning setup link (deprecated)
description: "Create a new link that can be passed to the Kombo Connect SDK to open the provisioning setup UI.\n\n\n **This endpoint is deprecated!**\n\n Please use the [Create Setup Flow link endpoint](/v1/post-integrations-integration-id-setup-link) instead. It supports the full Setup Flow (including filtering, field mapping, and any other enabled steps) and works for any integration category, not just HRIS.\n"
tags:
- Unified HRIS API
parameters:
- in: header
name: X-Integration-Id
schema:
type: string
description: ID of the integration you want to interact with.
example: bamboohr:HWUTwvyx2wLoSUHphiWVrp28
required: true
- name: group_id
in: path
required: true
description: ID of the provisioning group (currently only `default` is allowed).
schema:
$ref: '#/components/schemas/PostHrisProvisioningGroupsGroupIdSetupLinksParameterGroupId'
examples:
example1:
value: n39n320clr8c5amf8v83nbch
requestBody:
description: POST /hris/provisioning-groups/:group_id/setup-links Request body
content:
application/json:
schema:
$ref: '#/components/schemas/PostHrisProvisioningGroupsGroupIdSetupLinksRequestBody'
examples:
example1:
value:
language: en
responses:
'200':
description: POST /hris/provisioning-groups/:group_id/setup-links Positive response
content:
application/json:
schema:
$ref: '#/components/schemas/PostHrisProvisioningGroupsGroupIdSetupLinksPositiveResponse'
examples:
example1:
value:
status: success
data:
url: https://connect.kombo.dev/v1/setup?token=GinuMJCpUQ9xdpLmD2ocw8qdiK3qiPCizDCv754EXri2vAX4
expires_at: '2023-10-11T12:00:00.000Z'
default:
$ref: '#/components/responses/ErrorResponseHRIS'
/hris/employees:
get:
operationId: GetHrisEmployees
summary: Get employees
description: 'Retrieve all employees.
Not interested in most fields? You can use our [our Scopes feature](/scopes) to customize what data points are synced.
Top level filters use AND, while individual filters use OR if they accept multiple arguments. That means filters will be resolved like this: `(id IN ids) AND (remote_id IN remote_ids)`'
tags:
- Unified HRIS API
parameters:
- in: header
name: X-Integration-Id
schema:
type: string
description: ID of the integration you want to interact with.
example: bamboohr:HWUTwvyx2wLoSUHphiWVrp28
required: true
- name: cursor
in: query
required: false
description: An optional cursor string used for pagination. This can be retrieved from the `next` property of the previous page response.
schema:
$ref: '#/components/schemas/GetHrisEmployeesParameterCursor'
- name: page_size
in: query
required: false
description: The number of results to return per page. Maximum is 250.
schema:
$ref: '#/components/schemas/GetHrisEmployeesParameterPageSize'
- name: updated_after
in: query
required: false
description: 'Filter the entries based on the modification date in format `YYYY-MM-DDTHH:mm:ss.sssZ`. Returns records where either the record itself **OR** its nested data has been updated since this timestamp, even if the record''s own `changed_at` field remains unchanged.
If you want to track entry deletion, also set the `include_deleted=true` query parameter, because otherwise, deleted entries will be hidden.
For more details, see [Understanding changed_at vs updated_after Behavior](https://docs.kombo.dev/ats/getting-started/fetching-data#understanding-changed_at-vs-updated_after-behavior).
For this endpoint, `updated_after` matches when the returned record changed, or when related data changed as described below.
| Path | Added/Removed | Linked Record |
| --- | --- | --- |
| `employments` | ✓ Yes | ✓ Yes |
| `time_off_balances` | ✓ Yes | ✓ Yes |
| `manager` | n/a | ✓ Yes |
| `group_memberships` | ✓ Yes | ✗ No |
| `legal_entity` | n/a | ✓ Yes |
| `work_location` | n/a | ✓ Yes |
_**Added/Removed**: Whether adding or removing entries from this list triggers an update (n/a for single records). **Linked Record**: Whether changes to the linked record itself trigger an update._'
schema:
$ref: '#/components/schemas/GetHrisEmployeesParameterUpdatedAfter'
- name: include_deleted
in: query
required: false
description: By default, deleted entries are not returned. Use the `include_deleted` query param to include deleted entries too.
schema:
$ref: '#/components/schemas/GetHrisEmployeesParameterIncludeDeleted'
- name: ignore_unsupported_filters
in: query
required: false
description: When set to `true`, filters targeting fields not supported by this integration will be ignored instead of filtering out all results.
schema:
$ref: '#/components/schemas/GetHrisEmployeesParameterIgnoreUnsupportedFilters'
- name: ids
in: query
required: false
description: Filter by a comma-separated list of IDs such as `222k7eCGyUdgt2JWZDNnkDs3,B5DVmypWENfU6eMe6gYDyJG3`.
schema:
$ref: '#/components/schemas/GetHrisEmployeesParameterIds'
- name: remote_ids
in: query
required: false
description: Filter by a comma-separated list of remote IDs.
schema:
$ref: '#/components/schemas/GetHrisEmployeesParameterRemoteIds'
- name: employment_status
in: query
required: false
description: '**(⚠️ Deprecated - Use the `employment_statuses` filter instead.)** Filter by the `employment_status` field.'
schema:
$ref: '#/components/schemas/GetHrisEmployeesParameterEmploymentStatus'
- name: employment_statuses
in: query
required: false
description: "Filter by a comma-separated list of `ACTIVE`, `PENDING`, `INACTIVE`, `LEAVE` \n* `ACTIVE`: the employee is **actively employed** \n* `PENDING`: the employee is **not actively employed yet** (but they signed their contract or are part of an onboarding process) \n* `INACTIVE`: a full-time employee is no longer employed, or, for a contract worker when their contract runs out \n* `LEAVE`: the employee is still employed but **currently on leave** (note that not all HR systems support this status — use our absences API for detailed information) \n \n\nLeave this blank to get results matching all values."
schema:
$ref: '#/components/schemas/GetHrisEmployeesParameterEmploymentStatuses'
- name: group_ids
in: query
required: false
description: Filter by a comma-separated list of group IDs. We will only return employees that are members of _any_ of the groups.
schema:
$ref: '#/components/schemas/GetHrisEmployeesParameterGroupIds'
- name: legal_entity_ids
in: query
required: false
description: Filter by a comma-separated list of legal entity IDs. We will only return employees that are members of _any_ of the legal entities.
schema:
$ref: '#/components/schemas/GetHrisEmployeesParameterLegalEntityIds'
- name: work_location_ids
in: query
required: false
description: Filter by a comma-separated list of work location IDs. We will only return employees who are at _any_ of the work locations.
schema:
$ref: '#/components/schemas/GetHrisEmployeesParameterWorkLocationIds'
- name: work_emails
in: query
required: false
description: Filter by a comma-separated list of work emails. We will only return employees who have _any_ of the work emails. The format of the emails is case-insensitive.
schema:
$ref: '#/components/schemas/GetHrisEmployeesParameterWorkEmails'
- name: personal_emails
in: query
required: false
description: Filter by a comma-separated list of personal emails. We will only return employees who have _any_ of the personal emails. The format of the emails is case-insensitive.
schema:
$ref: '#/components/schemas/GetHrisEmployeesParameterPersonalEmails'
- name: custom_fields
in: query
required: false
description: A JSON string with a single key-value pair like {"fieldKey":"fieldValue"} to filter employees by a specific custom field value. Note that the value must be a string, number, boolean or null and the key must be a valid custom field key. Custom fields with a value of type array or object are not supported.
schema:
$ref: '#/components/schemas/GetHrisEmployeesParameterCustomFields'
responses:
'200':
description: GET /hris/employees Positive response
content:
application/json:
schema:
$ref: '#/components/schemas/GetHrisEmployeesPositiveResponse'
examples:
example1:
value:
status: success
data:
next: eyJwYWdlIjoxMiwibm90ZSI6InRoaXMgaXMganVzdCBhbiBleGFtcGxlIGFuZCBub3QgcmVwcmVzZW50YXRpdmUgZm9yIGEgcmVhbCBjdXJzb3IhIn0=
results:
- id: 26vafvWSRmbhNcxJYqjCzuJg
remote_id: '32'
employee_number: '3243422'
first_name: John
last_name: Doe
nationality: French
display_full_name: John Doe
job_title: Integrations Team Lead
work_email: john.doe@acme.com
personal_email: john@doe.me
mobile_phone_number: 801-555-4687
ssn: 555-32-6395
tax_id: 12 345 678 901
gender: MALE
ethnicity: BLACK_AFRICAN_AMERICAN
marital_status: MARRIED
employment_status: INACTIVE
employment_type: FULL_TIME
weekly_hours: 40
avatar: https://resources.bamboohr.com/images/photo_person_150x150.png
work_location_id: 7E2gyuv6TmvtByzBxW9Sxt53
legal_entity_id: xB32bied320csBSsl3XWdlw33
manager_id: 9pf2pxBB8VX8EQMC9aipW2Bo
home_address:
city: Berlin
country: DE
raw: 'Sonnenallee 63
12045 Berlin
Germany'
state: Berlin
street_1: Sonnenallee 63
street_2: null
zip_code: '12045'
bank_accounts:
- account_number: '1234567890'
bank_name: Commerzbank
bic: COBADEFFXXX
domestic_bank_routing:
number: '34567890'
type: DE_BANKLEITZAHL
holder_name: John Doe
iban: DE12345678901234567890
date_of_birth: '1986-01-01T00:00:00.000Z'
start_date: '2020-04-07T00:00:00.000Z'
termination_date: '2022-05-20T00:00:00.000Z'
remote_created_at: '2020-04-07T12:32:01.000Z'
changed_at: '2022-08-07T14:01:29.196Z'
remote_deleted_at: null
custom_fields: {}
integration_fields: []
remote_data: null
employments:
- id: 12vpXR7BeqYNWDShXRgsonnm
remote_id: '859'
employee_id: 26vafvWSRmbhNcxJYqjCzuJg
job_title: Social Media Marketer
pay_rate: 85000
pay_period: YEAR
pay_frequency: SEMIMONTHLY
employment_type: FULL_TIME
pay_currency: EUR
effective_date: '2021-01-30T00:00:00.000Z'
changed_at: '2022-08-07T14:01:29.196Z'
remote_deleted_at: null
remote_data: null
custom_fields: {}
integration_fields: []
time_off_balances:
- id: FuyRuk5NqP3qTcThED3ymTuE
remote_id: '124123'
employee_id: 2Up4ZCvq1bFVzmzXG6EWzV3j
type_id: BQJaBxRCiqN46G27VTegvkEr
balance: 14
balance_unit: DAYS
changed_at: '2022-08-07T14:01:29.196Z'
remote_deleted_at: null
used: 3
used_unit: DAYS
remote_data: null
manager:
first_name: John
last_name: Doe
display_full_name: John Doe
id: 26vafvWSRmbhNcxJYqjCzuJg
employee_number: '3243422'
work_email: john.doe@acme.com
remote_id: '32'
employment_status: INACTIVE
termination_date: '2022-05-20T00:00:00.000Z'
groups:
- id: 4B9bKBpX5tnwjiG93TAqF7ci
remote_id: '49'
name: Customer Success
type: TEAM
legal_entity:
id: 4B9bKBpX5tnwjiG93TAqF7ci
remote_id: '49'
name: ACME Inc.
address:
city: Berlin
country: DE
raw: 'Sonnenallee 63
12045 Berlin, Berlin
Germany'
state: Berlin
street_1: Sonnenallee 63
street_2: null
zip_code: '12045'
teams:
- id: 4B9bKBpX5tnwjiG93TAqF7ci
remote_id: '49'
name: Customer Success
type: TEAM
work_location:
id: 22st2Ji8XpncEYEak8mvQgQF
remote_id: '1348'
name: Kombo HQ
address:
city: Berlin
country: DE
raw: 'Sonnenallee 63
12045 Berlin, Berlin
Germany'
state: Berlin
street_1: Sonnenallee 63
street_2: null
zip_code: '12045'
type: OFFICE
changed_at: '2022-08-07T14:01:29.196Z'
remote_deleted_at: '2022-08-07T14:01:29.196Z'
remote_data: null
default:
$ref: '#/components/responses/ErrorResponseHRIS'
post:
operationId: PostHrisEmployees
summary: '[DEPRECATED] Create employee'
description: "Create a new employee.\n\n\n We are deprecating this endpoint in favor of the new [create employee form](/hris/features/create-employee) endpoint.\n\n\n\n This endpoint requires the permission **Create and manage employees** to be enabled in [your scope config](/scopes).\n\n\n### Example Request Body\n\n```json\n{\n \"first_name\": \"John\",\n \"last_name\": \"Doe\",\n \"work_email\": \"john.doe@acme.com\",\n \"gender\": \"MALE\",\n \"date_of_birth\": \"1986-01-01\",\n \"start_date\": \"2020-04-07\",\n \"job_title\": \"Integrations Team Lead\",\n \"home_address\": {\n \"city\": \"Berlin\",\n \"country\": \"DE\",\n \"state\": \"Berlin\",\n \"street_1\": \"Sonnenallee 63\",\n \"zip_code\": \"12045\"\n }\n}\n```"
tags:
- Unified HRIS API
parameters:
- in: header
name: X-Integration-Id
schema:
type: string
description: ID of the integration you want to interact with.
example: bamboohr:HWUTwvyx2wLoSUHphiWVrp28
required: true
requestBody:
description: POST /hris/employees Request body
content:
application/json:
schema:
$ref: '#/components/schemas/PostHrisEmployeesRequestBody'
examples:
example1:
value:
first_name: John
last_name: Doe
work_email: john.doe@acme.com
gender: MALE
date_of_birth: '1986-01-01'
start_date: '2020-04-07'
job_title: Integrations Team Lead
home_address:
city: Berlin
country: DE
state: Berlin
street_1: Sonnenallee 63
zip_code: '12045'
responses:
'200':
description: POST /hris/employees Positive response
content:
application/json:
schema:
$ref: '#/components/schemas/PostHrisEmployeesPositiveResponse'
examples:
example1:
value:
status: success
data:
id: 26vafvWSRmbhNcxJYqjCzuJg
remote_id: '32'
employee_number: '3243422'
first_name: John
last_name: Doe
nationality: French
display_full_name: John Doe
job_title: Integrations Team Lead
work_email: john.doe@acme.com
personal_email: john@doe.me
mobile_phone_number: 801-555-4687
ssn: 555-32-6395
tax_id: 12 345 678 901
gender: MALE
ethnicity: BLACK_AFRICAN_AMERICAN
marital_status: MARRIED
employment_status: INACTIVE
employment_type: FULL_TIME
weekly_hours: 40
avatar: https://resources.bamboohr.com/images/photo_person_150x150.png
work_location_id: 7E2gyuv6TmvtByzBxW9Sxt53
legal_entity_id: xB32bied320csBSsl3XWdlw33
manager_id: 9pf2pxBB8VX8EQMC9aipW2Bo
home_address:
city: Berlin
country: DE
raw: 'Sonnenallee 63
12045 Berlin
Germany'
state: Berlin
street_1: Sonnenallee 63
street_2: null
zip_code: '12045'
bank_accounts:
- account_number: '1234567890'
bank_name: Commerzbank
bic: COBADEFFXXX
domestic_bank_routing:
number: '34567890'
type: DE_BANKLEITZAHL
holder_name: John Doe
iban: DE12345678901234567890
date_of_birth: '1986-01-01T00:00:00.000Z'
start_date: '2020-04-07T00:00:00.000Z'
termination_date: '2022-05-20T00:00:00.000Z'
remote_created_at: '2020-04-07T12:32:01.000Z'
changed_at: '2022-08-07T14:01:29.196Z'
remote_deleted_at: null
custom_fields: {}
integration_fields: []
remote_data: null
warnings:
- message: This is an example warning!
default:
$ref: '#/components/responses/ErrorResponseHRIS'
/hris/employees/form:
get:
operationId: GetHrisEmployeesForm
summary: Get employee form
description: "Get the form for creating an employee. This form can be rendered dynamically on your frontend to allow your customers to create employees in their HRIS.\n\nFollow our [create employee guide here](/hris/features/create-employee) to learn how this form is generated and how you can use it.\n\n### Example Form\n```json\n{\n \"properties\": {\n \"firstName\": {\n \"type\": \"text\",\n \"label\": \"First Name\",\n \"required\": true,\n \"description\": \"Employee's first name\",\n \"unified_key\": \"first_name\",\n \"min_length\": 1,\n \"max_length\": 100\n },\n \"startDate\": {\n \"type\": \"date\",\n \"label\": \"Start Date\",\n \"required\": true,\n \"description\": \"Employee's start date\",\n \"unified_key\": \"start_date\"\n },\n \"workLocation\": {\n \"type\": \"object\",\n \"label\": \"Work Location\",\n \"required\": false,\n \"description\": \"Employee's work location\",\n \"unified_key\": null,\n \"properties\": {\n \"site\": {\n \"type\": \"single_select\",\n \"label\": \"Site\",\n \"required\": true,\n \"description\": \"Employee's site\",\n \"unified_key\": null,\n \"options\": {\n \"type\": \"inline\",\n \"entries\": [\n {\n \"label\": \"Site 1\",\n \"id\": \"FXrER44xubBqA9DLgZ3PFNNx\",\n \"unified_value\": \"1\",\n \"remote_id\": \"site_1\"\n },\n {\n \"label\": \"Site 2\",\n \"id\": \"2rv75UKT2XBoQXsUb9agiTUm\",\n \"unified_value\": \"2\",\n \"remote_id\": \"site_2\"\n }\n ]\n }\n },\n \"keyNumbers\": {\n \"type\": \"array\",\n \"label\": \"Key Numbers\",\n \"required\": false,\n \"description\": \"Employee's key numbers\",\n \"unified_key\": null,\n \"min_items\": 2,\n \"max_items\": 5,\n \"item_type\": {\n \"type\": \"number\",\n \"label\": \"Key Number\",\n \"required\": false,\n \"description\": \"The number of the keys which belong to the employee\",\n \"unified_key\": null,\n \"min\": 0,\n \"max\": 99\n }\n }\n }\n }\n }\n}\n```"
tags:
- Unified HRIS API
parameters:
- in: header
name: X-Integration-Id
schema:
type: string
description: ID of the integration you want to interact with.
example: bamboohr:HWUTwvyx2wLoSUHphiWVrp28
required: true
responses:
'200':
description: GET /hris/employees/form Positive response
content:
application/json:
schema:
$ref: '#/components/schemas/GetHrisEmployeesFormPositiveResponse'
examples:
example1:
value:
status: success
data:
properties:
firstName:
label: First Name
required: true
description: Employee's first name
unified_key: first_name
type: text
min_length: 1
max_length: 100
reg_exp: null
startDate:
label: Start Date
required: true
description: Employee's start date
unified_key: start_date
type: date
workLocation:
label: Work Location
required: false
description: Employee's work location
unified_key: null
type: object
properties:
site:
label: Site
required: true
description: Employee's site
unified_key: null
type: single_select
options:
type: inline
entries:
- id: FXrER44xubBqA9DLgZ3PFNNx
label: Site 1
unified_value: '1'
remote_id: site_1
- id: 2rv75UKT2XBoQXsUb9agiTUm
label: Site 2
unified_value: '2'
remote_id: site_2
keyNumbers:
label: Key Numbers
required: false
description: Employee's key numbers
unified_key: null
type: array
item_type:
label: Key Number
required: false
description: The number of the keys which belong to the employee
unified_key: null
type: number
min: 0
max: 99
min_items: 2
max_items: 5
warnings:
- message: This is an example warning!
default:
$ref: '#/components/responses/ErrorResponseHRIS'
post:
operationId: PostHrisEmployeesForm
summary: Create employee with form
description: "Create an employee, based on the form schema.\n\n\n This endpoint requires the permission **Create and manage employees** to be enabled in [your scope config](/scopes).\n\n\n### Example Request Body\n\n```json\n{\n \"properties\": {\n \"firstName\": \"John\",\n \"startDate\": \"2025-01-01\",\n \"workLocation\": {\n \"site\": \"8e422bf8cav\",\n \"keyNumbers\": [\n 142,\n 525,\n 63\n ]\n }\n }\n}\n```"
tags:
- Unified HRIS API
parameters:
- in: header
name: X-Integration-Id
schema:
type: string
description: ID of the integration you want to interact with.
example: bamboohr:HWUTwvyx2wLoSUHphiWVrp28
required: true
requestBody:
description: POST /hris/employees/form Request body
content:
application/json:
schema:
$ref: '#/components/schemas/PostHrisEmployeesFormRequestBody'
examples:
example1:
value:
properties:
firstName: John
startDate: '2025-01-01'
workLocation:
site: 8e422bf8cav
keyNumbers:
- 142
- 525
- 63
responses:
'200':
description: POST /hris/employees/form Positive response
content:
application/json:
schema:
$ref: '#/components/schemas/PostHrisEmployeesFormPositiveResponse'
examples:
example1:
value:
status: success
data:
id: 26vafvWSRmbhNcxJYqjCzuJg
remote_id: '12345'
prehire:
remote_id: null
warnings:
- message: This is an example warning!
default:
$ref: '#/components/responses/ErrorResponseHRIS'
/hris/employees/{employee_id}:
patch:
operationId: PatchHrisEmployeesEmployeeId
summary: Update employee
description: "Update an employee.\n\n\n This endpoint requires the permission **Create and manage employees** to be enabled in [your scope config](/scopes).\n\n\n### Example Request Body\n\n```json\n{\n \"employee_id\": \"BkgfzSr5muN9cUTMD4wDQFn4\",\n \"first_name\": \"John\",\n \"last_name\": \"Doe\",\n \"work_email\": \"john.doe@acme.com\",\n \"ssn\": \"555-32-6395\",\n \"tax_id\": \"12 345 678 901\",\n \"gender\": \"MALE\",\n \"marital_status\": \"MARRIED\",\n \"date_of_birth\": \"1986-01-01\",\n \"start_date\": \"2020-04-07\",\n \"termination_date\": \"2022-05-20\",\n \"job_title\": \"Integrations Team Lead\",\n \"nationality\": \"DE\",\n \"home_address\": {\n \"city\": \"Berlin\",\n \"country\": \"DE\",\n \"state\": \"Berlin\",\n \"street_1\": \"Sonnenallee 63\",\n \"zip_code\": \"12045\"\n }\n}\n```"
tags:
- Unified HRIS API
parameters:
- in: header
name: X-Integration-Id
schema:
type: string
description: ID of the integration you want to interact with.
example: bamboohr:HWUTwvyx2wLoSUHphiWVrp28
required: true
- name: employee_id
in: path
required: true
description: The ID of the employee that should be updated. You can use their Kombo `id` or their ID in the remote system by prefixing it with `remote:` (e.g., `remote:12312`)
schema:
$ref: '#/components/schemas/PatchHrisEmployeesEmployeeIdParameterEmployeeId'
examples:
example1:
value: BkgfzSr5muN9cUTMD4wDQFn4
requestBody:
description: PATCH /hris/employees/:employee_id Request body
content:
application/json:
schema:
$ref: '#/components/schemas/PatchHrisEmployeesEmployeeIdRequestBody'
examples:
example1:
value:
first_name: John
last_name: Doe
work_email: john.doe@acme.com
ssn: 555-32-6395
tax_id: 12 345 678 901
gender: MALE
marital_status: MARRIED
date_of_birth: '1986-01-01'
start_date: '2020-04-07'
termination_date: '2022-05-20'
job_title: Integrations Team Lead
nationality: DE
home_address:
city: Berlin
country: DE
state: Berlin
street_1: Sonnenallee 63
zip_code: '12045'
responses:
'200':
description: PATCH /hris/employees/:employee_id Positive response
content:
application/json:
schema:
$ref: '#/components/schemas/PatchHrisEmployeesEmployeeIdPositiveResponse'
examples:
example1:
value:
status: success
data:
id: 26vafvWSRmbhNcxJYqjCzuJg
remote_id: '32'
employee_number: '3243422'
first_name: John
last_name: Doe
nationality: French
display_full_name: John Doe
job_title: Integrations Team Lead
work_email: john.doe@acme.com
personal_email: john@doe.me
mobile_phone_number: 801-555-4687
ssn: 555-32-6395
tax_id: 12 345 678 901
gender: MALE
ethnicity: BLACK_AFRICAN_AMERICAN
marital_status: MARRIED
employment_status: INACTIVE
employment_type: FULL_TIME
weekly_hours: 40
avatar: https://resources.bamboohr.com/images/photo_person_150x150.png
work_location_id: 7E2gyuv6TmvtByzBxW9Sxt53
legal_entity_id: xB32bied320csBSsl3XWdlw33
manager_id: 9pf2pxBB8VX8EQMC9aipW2Bo
home_address:
city: Berlin
country: DE
raw: 'Sonnenallee 63
12045 Berlin
Germany'
state: Berlin
street_1: Sonnenallee 63
street_2: null
zip_code: '12045'
bank_accounts:
- account_number: '1234567890'
bank_name: Commerzbank
bic: COBADEFFXXX
domestic_bank_routing:
number: '34567890'
type: DE_BANKLEITZAHL
holder_name: John Doe
iban: DE12345678901234567890
date_of_birth: '1986-01-01T00:00:00.000Z'
start_date: '2020-04-07T00:00:00.000Z'
termination_date: '2022-05-20T00:00:00.000Z'
remote_created_at: '2020-04-07T12:32:01.000Z'
changed_at: '2022-08-07T14:01:29.196Z'
remote_deleted_at: null
remote_data: null
warnings:
- message: This is an example warning!
default:
$ref: '#/components/responses/ErrorResponseHRIS'
/hris/employees/{employee_id}/documents:
post:
operationId: PostHrisEmployeesEmployeeIdDocuments
summary: Add document to employee
description: "Uploads an document file for the specified employee.\n\n\n This endpoint requires the permission **Manage documents** to be enabled in [your scope config](/scopes).\n\n\n### Example Request Body\n\n```json\n{\n \"category_id\": \"3Cjwu7nA7pH5cX5X1NAPmb7M\",\n \"document\": {\n \"name\": \"Frank Doe Employment Contract.txt\",\n \"data\": \"SGkgdGhlcmUsIEtvbWJvIGlzIGN1cnJlbnRseSBoaXJpbmcgZW5naW5lZXJzIHRoYXQgbG92ZSB0byB3b3JrIG9uIGRldmVsb3BlciBwcm9kdWN0cy4=\",\n \"content_type\": \"text/plain\"\n }\n}\n```"
tags:
- Unified HRIS API
parameters:
- in: header
name: X-Integration-Id
schema:
type: string
description: ID of the integration you want to interact with.
example: bamboohr:HWUTwvyx2wLoSUHphiWVrp28
required: true
- name: employee_id
in: path
required: true
description: POST /hris/employees/:employee_id/documents Parameter
schema:
$ref: '#/components/schemas/PostHrisEmployeesEmployeeIdDocumentsParameterEmployeeId'
examples:
example1:
value: GRKdd9dibYKKCrmGRSMJf3wu
requestBody:
description: POST /hris/employees/:employee_id/documents Request body
content:
application/json:
schema:
$ref: '#/components/schemas/PostHrisEmployeesEmployeeIdDocumentsRequestBody'
examples:
example1:
value:
category_id: 3Cjwu7nA7pH5cX5X1NAPmb7M
document:
name: Frank Doe Employment Contract.txt
data: SGkgdGhlcmUsIEtvbWJvIGlzIGN1cnJlbnRseSBoaXJpbmcgZW5naW5lZXJzIHRoYXQgbG92ZSB0byB3b3JrIG9uIGRldmVsb3BlciBwcm9kdWN0cy4=
content_type: text/plain
responses:
'200':
description: POST /hris/employees/:employee_id/documents Positive response
content:
application/json:
schema:
$ref: '#/components/schemas/PostHrisEmployeesEmployeeIdDocumentsPositiveResponse'
default:
$ref: '#/components/responses/ErrorResponseHRIS'
/hris/employee-document-categories:
get:
operationId: GetHrisEmployeeDocumentCategories
summary: Get employee document categories
description: 'Get employee document categories.
Top level filters use AND, while individual filters use OR if they accept multiple arguments. That means filters will be resolved like this: `(id IN ids) AND (remote_id IN remote_ids)`'
tags:
- Unified HRIS API
parameters:
- in: header
name: X-Integration-Id
schema:
type: string
description: ID of the integration you want to interact with.
example: bamboohr:HWUTwvyx2wLoSUHphiWVrp28
required: true
- name: cursor
in: query
required: false
description: An optional cursor string used for pagination. This can be retrieved from the `next` property of the previous page response.
schema:
$ref: '#/components/schemas/GetHrisEmployeeDocumentCategoriesParameterCursor'
- name: page_size
in: query
required: false
description: The number of results to return per page. Maximum is 250.
schema:
$ref: '#/components/schemas/GetHrisEmployeeDocumentCategoriesParameterPageSize'
- name: updated_after
in: query
required: false
description: 'Filter the entries based on the modification date in format `YYYY-MM-DDTHH:mm:ss.sssZ`. Returns records where either the record itself **OR** its nested data has been updated since this timestamp, even if the record''s own `changed_at` field remains unchanged.
If you want to track entry deletion, also set the `include_deleted=true` query parameter, because otherwise, deleted entries will be hidden.
For more details, see [Understanding changed_at vs updated_after Behavior](https://docs.kombo.dev/ats/getting-started/fetching-data#understanding-changed_at-vs-updated_after-behavior).
For this endpoint, only changes to the returned record itself are considered.'
schema:
$ref: '#/components/schemas/GetHrisEmployeeDocumentCategoriesParameterUpdatedAfter'
- name: include_deleted
in: query
required: false
description: By default, deleted entries are not returned. Use the `include_deleted` query param to include deleted entries too.
schema:
$ref: '#/components/schemas/GetHrisEmployeeDocumentCategoriesParameterIncludeDeleted'
- name: ignore_unsupported_filters
in: query
required: false
description: When set to `true`, filters targeting fields not supported by this integration will be ignored instead of filtering out all results.
schema:
$ref: '#/components/schemas/GetHrisEmployeeDocumentCategoriesParameterIgnoreUnsupportedFilters'
- name: ids
in: query
required: false
description: Filter by a comma-separated list of IDs such as `222k7eCGyUdgt2JWZDNnkDs3,B5DVmypWENfU6eMe6gYDyJG3`.
schema:
$ref: '#/components/schemas/GetHrisEmployeeDocumentCategoriesParameterIds'
- name: remote_ids
in: query
required: false
description: Filter by a comma-separated list of remote IDs.
schema:
$ref: '#/components/schemas/GetHrisEmployeeDocumentCategoriesParameterRemoteIds'
responses:
'200':
description: GET /hris/employee-document-categories Positive response
content:
application/json:
schema:
$ref: '#/components/schemas/GetHrisEmployeeDocumentCategoriesPositiveResponse'
examples:
example1:
value:
status: success
data:
next: eyJwYWdlIjoxMiwibm90ZSI6InRoaXMgaXMganVzdCBhbiBleGFtcGxlIGFuZCBub3QgcmVwcmVzZW50YXRpdmUgZm9yIGEgcmVhbCBjdXJzb3IhIn0=
results:
- id: 26vafvWSRmbhNcxJYqjCzuJg
remote_id: '32'
name: Employment contract
remote_data: null
changed_at: '2022-08-07T14:01:29.196Z'
remote_deleted_at: null
default:
$ref: '#/components/responses/ErrorResponseHRIS'
/hris/teams:
get:
operationId: GetHrisTeams
summary: Get teams (deprecated)
description: "Get the teams.\n\n\n **This endpoint is deprecated!**\n\n Please use [the `/groups` endpoint](/hris/v1/get-groups) instead. It returns the same data but the naming makes more sense as the model not only includes teams but also departments and cost centers..\n\n\nTop level filters use AND, while individual filters use OR if they accept multiple arguments. That means filters will be resolved like this: `(id IN ids) AND (remote_id IN remote_ids)`"
tags:
- Unified HRIS API
parameters:
- in: header
name: X-Integration-Id
schema:
type: string
description: ID of the integration you want to interact with.
example: bamboohr:HWUTwvyx2wLoSUHphiWVrp28
required: true
- name: cursor
in: query
required: false
description: An optional cursor string used for pagination. This can be retrieved from the `next` property of the previous page response.
schema:
$ref: '#/components/schemas/GetHrisTeamsParameterCursor'
- name: page_size
in: query
required: false
description: The number of results to return per page. Maximum is 250.
schema:
$ref: '#/components/schemas/GetHrisTeamsParameterPageSize'
- name: updated_after
in: query
required: false
description: 'Filter the entries based on the modification date in format `YYYY-MM-DDTHH:mm:ss.sssZ`. Returns records where either the record itself **OR** its nested data has been updated since this timestamp, even if the record''s own `changed_at` field remains unchanged.
If you want to track entry deletion, also set the `include_deleted=true` query parameter, because otherwise, deleted entries will be hidden.
For more details, see [Understanding changed_at vs updated_after Behavior](https://docs.kombo.dev/ats/getting-started/fetching-data#understanding-changed_at-vs-updated_after-behavior).
For this endpoint, only changes to the returned record itself are considered.'
schema:
$ref: '#/components/schemas/GetHrisTeamsParameterUpdatedAfter'
- name: include_deleted
in: query
required: false
description: By default, deleted entries are not returned. Use the `include_deleted` query param to include deleted entries too.
schema:
$ref: '#/components/schemas/GetHrisTeamsParameterIncludeDeleted'
- name: ignore_unsupported_filters
in: query
required: false
description: When set to `true`, filters targeting fields not supported by this integration will be ignored instead of filtering out all results.
schema:
$ref: '#/components/schemas/GetHrisTeamsParameterIgnoreUnsupportedFilters'
- name: ids
in: query
required: false
description: Filter by a comma-separated list of IDs such as `222k7eCGyUdgt2JWZDNnkDs3,B5DVmypWENfU6eMe6gYDyJG3`.
schema:
$ref: '#/components/schemas/GetHrisTeamsParameterIds'
- name: remote_ids
in: query
required: false
description: Filter by a comma-separated list of remote IDs.
schema:
$ref: '#/components/schemas/GetHrisTeamsParameterRemoteIds'
responses:
'200':
description: GET /hris/teams Positive response
content:
application/json:
schema:
$ref: '#/components/schemas/GetHrisTeamsPositiveResponse'
examples:
example1:
value:
status: success
data:
next: eyJwYWdlIjoxMiwibm90ZSI6InRoaXMgaXMganVzdCBhbiBleGFtcGxlIGFuZCBub3QgcmVwcmVzZW50YXRpdmUgZm9yIGEgcmVhbCBjdXJzb3IhIn0=
results:
- id: 4B9bKBpX5tnwjiG93TAqF7ci
remote_id: '49'
name: Customer Success
changed_at: '2022-08-07T14:01:29.196Z'
remote_deleted_at: null
type: TEAM
parent_id: KGaJ5XaVPob8mYVfD49W4DGB
remote_data: null
default:
$ref: '#/components/responses/ErrorResponseHRIS'
/hris/groups:
get:
operationId: GetHrisGroups
summary: Get groups
description: 'Retrieve all "groups" (teams, departments, and cost centers).
Top level filters use AND, while individual filters use OR if they accept multiple arguments. That means filters will be resolved like this: `(id IN ids) AND (remote_id IN remote_ids)`'
tags:
- Unified HRIS API
parameters:
- in: header
name: X-Integration-Id
schema:
type: string
description: ID of the integration you want to interact with.
example: bamboohr:HWUTwvyx2wLoSUHphiWVrp28
required: true
- name: cursor
in: query
required: false
description: An optional cursor string used for pagination. This can be retrieved from the `next` property of the previous page response.
schema:
$ref: '#/components/schemas/GetHrisGroupsParameterCursor'
- name: page_size
in: query
required: false
description: The number of results to return per page. Maximum is 250.
schema:
$ref: '#/components/schemas/GetHrisGroupsParameterPageSize'
- name: updated_after
in: query
required: false
description: 'Filter the entries based on the modification date in format `YYYY-MM-DDTHH:mm:ss.sssZ`. Returns records where either the record itself **OR** its nested data has been updated since this timestamp, even if the record''s own `changed_at` field remains unchanged.
If you want to track entry deletion, also set the `include_deleted=true` query parameter, because otherwise, deleted entries will be hidden.
For more details, see [Understanding changed_at vs updated_after Behavior](https://docs.kombo.dev/ats/getting-started/fetching-data#understanding-changed_at-vs-updated_after-behavior).
For this endpoint, only changes to the returned record itself are considered.'
schema:
$ref: '#/components/schemas/GetHrisGroupsParameterUpdatedAfter'
- name: include_deleted
in: query
required: false
description: By default, deleted entries are not returned. Use the `include_deleted` query param to include deleted entries too.
schema:
$ref: '#/components/schemas/GetHrisGroupsParameterIncludeDeleted'
- name: ignore_unsupported_filters
in: query
required: false
description: When set to `true`, filters targeting fields not supported by this integration will be ignored instead of filtering out all results.
schema:
$ref: '#/components/schemas/GetHrisGroupsParameterIgnoreUnsupportedFilters'
- name: ids
in: query
required: false
description: Filter by a comma-separated list of IDs such as `222k7eCGyUdgt2JWZDNnkDs3,B5DVmypWENfU6eMe6gYDyJG3`.
schema:
$ref: '#/components/schemas/GetHrisGroupsParameterIds'
- name: remote_ids
in: query
required: false
description: Filter by a comma-separated list of remote IDs.
schema:
$ref: '#/components/schemas/GetHrisGroupsParameterRemoteIds'
- name: types
in: query
required: false
description: "Filter by a comma-separated list of group types: `DEPARTMENT`, `TEAM`, `COST_CENTER`, or `null` to filter groups without a type. \n\nLeave this blank to get results matching all values."
schema:
$ref: '#/components/schemas/GetHrisGroupsParameterTypes'
- name: name_contains
in: query
required: false
description: Filter by the `name` field. Can be used to find a group by keywords present in the group name.
schema:
$ref: '#/components/schemas/GetHrisGroupsParameterNameContains'
responses:
'200':
description: GET /hris/groups Positive response
content:
application/json:
schema:
$ref: '#/components/schemas/GetHrisGroupsPositiveResponse'
examples:
example1:
value:
status: success
data:
next: eyJwYWdlIjoxMiwibm90ZSI6InRoaXMgaXMganVzdCBhbiBleGFtcGxlIGFuZCBub3QgcmVwcmVzZW50YXRpdmUgZm9yIGEgcmVhbCBjdXJzb3IhIn0=
results:
- id: 4B9bKBpX5tnwjiG93TAqF7ci
remote_id: '49'
name: Customer Success
changed_at: '2022-08-07T14:01:29.196Z'
remote_deleted_at: null
type: TEAM
parent_id: KGaJ5XaVPob8mYVfD49W4DGB
remote_data: null
default:
$ref: '#/components/responses/ErrorResponseHRIS'
/hris/employments:
get:
operationId: GetHrisEmployments
summary: Get employments
description: 'Retrieve all employments.
Top level filters use AND, while individual filters use OR if they accept multiple arguments. That means filters will be resolved like this: `(id IN ids) AND (remote_id IN remote_ids)`'
tags:
- Unified HRIS API
parameters:
- in: header
name: X-Integration-Id
schema:
type: string
description: ID of the integration you want to interact with.
example: bamboohr:HWUTwvyx2wLoSUHphiWVrp28
required: true
- name: cursor
in: query
required: false
description: An optional cursor string used for pagination. This can be retrieved from the `next` property of the previous page response.
schema:
$ref: '#/components/schemas/GetHrisEmploymentsParameterCursor'
- name: page_size
in: query
required: false
description: The number of results to return per page. Maximum is 250.
schema:
$ref: '#/components/schemas/GetHrisEmploymentsParameterPageSize'
- name: updated_after
in: query
required: false
description: 'Filter the entries based on the modification date in format `YYYY-MM-DDTHH:mm:ss.sssZ`. Returns records where either the record itself **OR** its nested data has been updated since this timestamp, even if the record''s own `changed_at` field remains unchanged.
If you want to track entry deletion, also set the `include_deleted=true` query parameter, because otherwise, deleted entries will be hidden.
For more details, see [Understanding changed_at vs updated_after Behavior](https://docs.kombo.dev/ats/getting-started/fetching-data#understanding-changed_at-vs-updated_after-behavior).
For this endpoint, only changes to the returned record itself are considered.'
schema:
$ref: '#/components/schemas/GetHrisEmploymentsParameterUpdatedAfter'
- name: include_deleted
in: query
required: false
description: By default, deleted entries are not returned. Use the `include_deleted` query param to include deleted entries too.
schema:
$ref: '#/components/schemas/GetHrisEmploymentsParameterIncludeDeleted'
- name: ignore_unsupported_filters
in: query
required: false
description: When set to `true`, filters targeting fields not supported by this integration will be ignored instead of filtering out all results.
schema:
$ref: '#/components/schemas/GetHrisEmploymentsParameterIgnoreUnsupportedFilters'
- name: ids
in: query
required: false
description: Filter by a comma-separated list of IDs such as `222k7eCGyUdgt2JWZDNnkDs3,B5DVmypWENfU6eMe6gYDyJG3`.
schema:
$ref: '#/components/schemas/GetHrisEmploymentsParameterIds'
- name: remote_ids
in: query
required: false
description: Filter by a comma-separated list of remote IDs.
schema:
$ref: '#/components/schemas/GetHrisEmploymentsParameterRemoteIds'
responses:
'200':
description: GET /hris/employments Positive response
content:
application/json:
schema:
$ref: '#/components/schemas/GetHrisEmploymentsPositiveResponse'
examples:
example1:
value:
status: success
data:
next: eyJwYWdlIjoxMiwibm90ZSI6InRoaXMgaXMganVzdCBhbiBleGFtcGxlIGFuZCBub3QgcmVwcmVzZW50YXRpdmUgZm9yIGEgcmVhbCBjdXJzb3IhIn0=
results:
- id: 12vpXR7BeqYNWDShXRgsonnm
remote_id: '859'
employee_id: 26vafvWSRmbhNcxJYqjCzuJg
job_title: Social Media Marketer
pay_rate: 85000
pay_period: YEAR
pay_frequency: SEMIMONTHLY
employment_type: FULL_TIME
pay_currency: EUR
effective_date: '2021-01-30T00:00:00.000Z'
changed_at: '2022-08-07T14:01:29.196Z'
remote_deleted_at: null
remote_data: null
custom_fields: {}
integration_fields: []
default:
$ref: '#/components/responses/ErrorResponseHRIS'
/hris/locations:
get:
operationId: GetHrisLocations
summary: Get work locations
description: 'Retrieve all work locations.
Top level filters use AND, while individual filters use OR if they accept multiple arguments. That means filters will be resolved like this: `(id IN ids) AND (remote_id IN remote_ids)`'
tags:
- Unified HRIS API
parameters:
- in: header
name: X-Integration-Id
schema:
type: string
description: ID of the integration you want to interact with.
example: bamboohr:HWUTwvyx2wLoSUHphiWVrp28
required: true
- name: cursor
in: query
required: false
description: An optional cursor string used for pagination. This can be retrieved from the `next` property of the previous page response.
schema:
$ref: '#/components/schemas/GetHrisLocationsParameterCursor'
- name: page_size
in: query
required: false
description: The number of results to return per page. Maximum is 250.
schema:
$ref: '#/components/schemas/GetHrisLocationsParameterPageSize'
- name: updated_after
in: query
required: false
description: 'Filter the entries based on the modification date in format `YYYY-MM-DDTHH:mm:ss.sssZ`. Returns records where either the record itself **OR** its nested data has been updated since this timestamp, even if the record''s own `changed_at` field remains unchanged.
If you want to track entry deletion, also set the `include_deleted=true` query parameter, because otherwise, deleted entries will be hidden.
For more details, see [Understanding changed_at vs updated_after Behavior](https://docs.kombo.dev/ats/getting-started/fetching-data#understanding-changed_at-vs-updated_after-behavior).
For this endpoint, only changes to the returned record itself are considered.'
schema:
$ref: '#/components/schemas/GetHrisLocationsParameterUpdatedAfter'
- name: include_deleted
in: query
required: false
description: By default, deleted entries are not returned. Use the `include_deleted` query param to include deleted entries too.
schema:
$ref: '#/components/schemas/GetHrisLocationsParameterIncludeDeleted'
- name: ignore_unsupported_filters
in: query
required: false
description: When set to `true`, filters targeting fields not supported by this integration will be ignored instead of filtering out all results.
schema:
$ref: '#/components/schemas/GetHrisLocationsParameterIgnoreUnsupportedFilters'
- name: ids
in: query
required: false
description: Filter by a comma-separated list of IDs such as `222k7eCGyUdgt2JWZDNnkDs3,B5DVmypWENfU6eMe6gYDyJG3`.
schema:
$ref: '#/components/schemas/GetHrisLocationsParameterIds'
- name: remote_ids
in: query
required: false
description: Filter by a comma-separated list of remote IDs.
schema:
$ref: '#/components/schemas/GetHrisLocationsParameterRemoteIds'
- name: name_contains
in: query
required: false
description: Filter by the `name` field. Can be used to find a location by keywords present in the location name.
schema:
$ref: '#/components/schemas/GetHrisLocationsParameterNameContains'
responses:
'200':
description: GET /hris/locations Positive response
content:
application/json:
schema:
$ref: '#/components/schemas/GetHrisLocationsPositiveResponse'
examples:
example1:
value:
status: success
data:
next: eyJwYWdlIjoxMiwibm90ZSI6InRoaXMgaXMganVzdCBhbiBleGFtcGxlIGFuZCBub3QgcmVwcmVzZW50YXRpdmUgZm9yIGEgcmVhbCBjdXJzb3IhIn0=
results:
- id: 22st2Ji8XpncEYEak8mvQgQF
remote_id: '1348'
name: Kombo HQ
address:
city: Berlin
country: DE
raw: 'Sonnenallee 63
12045 Berlin, Berlin
Germany'
state: Berlin
street_1: Sonnenallee 63
street_2: null
zip_code: '12045'
type: OFFICE
changed_at: '2022-08-07T14:01:29.196Z'
remote_deleted_at: '2022-08-07T14:01:29.196Z'
remote_data: null
default:
$ref: '#/components/responses/ErrorResponseHRIS'
/hris/absence-types:
get:
operationId: GetHrisAbsenceTypes
summary: Get absence types
description: 'Retrieve all absence types.
Top level filters use AND, while individual filters use OR if they accept multiple arguments. That means filters will be resolved like this: `(id IN ids) AND (remote_id IN remote_ids)`'
tags:
- Unified HRIS API
parameters:
- in: header
name: X-Integration-Id
schema:
type: string
description: ID of the integration you want to interact with.
example: bamboohr:HWUTwvyx2wLoSUHphiWVrp28
required: true
- name: cursor
in: query
required: false
description: An optional cursor string used for pagination. This can be retrieved from the `next` property of the previous page response.
schema:
$ref: '#/components/schemas/GetHrisAbsenceTypesParameterCursor'
- name: page_size
in: query
required: false
description: The number of results to return per page. Maximum is 250.
schema:
$ref: '#/components/schemas/GetHrisAbsenceTypesParameterPageSize'
- name: updated_after
in: query
required: false
description: 'Filter the entries based on the modification date in format `YYYY-MM-DDTHH:mm:ss.sssZ`. Returns records where either the record itself **OR** its nested data has been updated since this timestamp, even if the record''s own `changed_at` field remains unchanged.
If you want to track entry deletion, also set the `include_deleted=true` query parameter, because otherwise, deleted entries will be hidden.
For more details, see [Understanding changed_at vs updated_after Behavior](https://docs.kombo.dev/ats/getting-started/fetching-data#understanding-changed_at-vs-updated_after-behavior).
For this endpoint, only changes to the returned record itself are considered.'
schema:
$ref: '#/components/schemas/GetHrisAbsenceTypesParameterUpdatedAfter'
- name: include_deleted
in: query
required: false
description: By default, deleted entries are not returned. Use the `include_deleted` query param to include deleted entries too.
schema:
$ref: '#/components/schemas/GetHrisAbsenceTypesParameterIncludeDeleted'
- name: ignore_unsupported_filters
in: query
required: false
description: When set to `true`, filters targeting fields not supported by this integration will be ignored instead of filtering out all results.
schema:
$ref: '#/components/schemas/GetHrisAbsenceTypesParameterIgnoreUnsupportedFilters'
- name: ids
in: query
required: false
description: Filter by a comma-separated list of IDs such as `222k7eCGyUdgt2JWZDNnkDs3,B5DVmypWENfU6eMe6gYDyJG3`.
schema:
$ref: '#/components/schemas/GetHrisAbsenceTypesParameterIds'
- name: remote_ids
in: query
required: false
description: Filter by a comma-separated list of remote IDs.
schema:
$ref: '#/components/schemas/GetHrisAbsenceTypesParameterRemoteIds'
responses:
'200':
description: GET /hris/absence-types Positive response
content:
application/json:
schema:
$ref: '#/components/schemas/GetHrisAbsenceTypesPositiveResponse'
examples:
example1:
value:
status: success
data:
next: eyJwYWdlIjoxMiwibm90ZSI6InRoaXMgaXMganVzdCBhbiBleGFtcGxlIGFuZCBub3QgcmVwcmVzZW50YXRpdmUgZm9yIGEgcmVhbCBjdXJzb3IhIn0=
results:
- id: xzZoKssDaMZAd62kxayzzQvD
remote_id: '91'
name: Vacation
unit: DAYS
half_days_supported: true
exact_times_supported: false
remote_data: null
changed_at: '2022-08-07T14:01:29.196Z'
remote_deleted_at: null
default:
$ref: '#/components/responses/ErrorResponseHRIS'
/hris/time-off-balances:
get:
operationId: GetHrisTimeOffBalances
summary: Get time off balances
description: 'Retrieve all time off balances.
Top level filters use AND, while individual filters use OR if they accept multiple arguments. That means filters will be resolved like this: `(id IN ids) AND (remote_id IN remote_ids)`'
tags:
- Unified HRIS API
parameters:
- in: header
name: X-Integration-Id
schema:
type: string
description: ID of the integration you want to interact with.
example: bamboohr:HWUTwvyx2wLoSUHphiWVrp28
required: true
- name: cursor
in: query
required: false
description: An optional cursor string used for pagination. This can be retrieved from the `next` property of the previous page response.
schema:
$ref: '#/components/schemas/GetHrisTimeOffBalancesParameterCursor'
- name: page_size
in: query
required: false
description: The number of results to return per page. Maximum is 250.
schema:
$ref: '#/components/schemas/GetHrisTimeOffBalancesParameterPageSize'
- name: updated_after
in: query
required: false
description: 'Filter the entries based on the modification date in format `YYYY-MM-DDTHH:mm:ss.sssZ`. Returns records where either the record itself **OR** its nested data has been updated since this timestamp, even if the record''s own `changed_at` field remains unchanged.
If you want to track entry deletion, also set the `include_deleted=true` query parameter, because otherwise, deleted entries will be hidden.
For more details, see [Understanding changed_at vs updated_after Behavior](https://docs.kombo.dev/ats/getting-started/fetching-data#understanding-changed_at-vs-updated_after-behavior).
For this endpoint, `updated_after` matches when the returned record changed, or when related data changed as described below.
| Path | Added/Removed | Linked Record |
| --- | --- | --- |
| `type` | n/a | ✓ Yes |
_**Added/Removed**: Whether adding or removing entries from this list triggers an update (n/a for single records). **Linked Record**: Whether changes to the linked record itself trigger an update._'
schema:
$ref: '#/components/schemas/GetHrisTimeOffBalancesParameterUpdatedAfter'
- name: include_deleted
in: query
required: false
description: By default, deleted entries are not returned. Use the `include_deleted` query param to include deleted entries too.
schema:
$ref: '#/components/schemas/GetHrisTimeOffBalancesParameterIncludeDeleted'
- name: ignore_unsupported_filters
in: query
required: false
description: When set to `true`, filters targeting fields not supported by this integration will be ignored instead of filtering out all results.
schema:
$ref: '#/components/schemas/GetHrisTimeOffBalancesParameterIgnoreUnsupportedFilters'
- name: ids
in: query
required: false
description: Filter by a comma-separated list of IDs such as `222k7eCGyUdgt2JWZDNnkDs3,B5DVmypWENfU6eMe6gYDyJG3`.
schema:
$ref: '#/components/schemas/GetHrisTimeOffBalancesParameterIds'
- name: remote_ids
in: query
required: false
description: Filter by a comma-separated list of remote IDs.
schema:
$ref: '#/components/schemas/GetHrisTimeOffBalancesParameterRemoteIds'
- name: employee_id
in: query
required: false
description: Filter by a specific employee using their ID.
schema:
$ref: '#/components/schemas/GetHrisTimeOffBalancesParameterEmployeeId'
responses:
'200':
description: GET /hris/time-off-balances Positive response
content:
application/json:
schema:
$ref: '#/components/schemas/GetHrisTimeOffBalancesPositiveResponse'
examples:
example1:
value:
status: success
data:
next: eyJwYWdlIjoxMiwibm90ZSI6InRoaXMgaXMganVzdCBhbiBleGFtcGxlIGFuZCBub3QgcmVwcmVzZW50YXRpdmUgZm9yIGEgcmVhbCBjdXJzb3IhIn0=
results:
- id: FuyRuk5NqP3qTcThED3ymTuE
remote_id: '124123'
employee_id: 2Up4ZCvq1bFVzmzXG6EWzV3j
type_id: BQJaBxRCiqN46G27VTegvkEr
balance: 14
balance_unit: DAYS
changed_at: '2022-08-07T14:01:29.196Z'
remote_deleted_at: null
used: 3
used_unit: DAYS
remote_data: null
type:
id: xzZoKssDaMZAd62kxayzzQvD
remote_id: '91'
name: Vacation
unit: DAYS
half_days_supported: true
exact_times_supported: false
remote_data: null
changed_at: '2022-08-07T14:01:29.196Z'
remote_deleted_at: null
default:
$ref: '#/components/responses/ErrorResponseHRIS'
/hris/absences:
get:
operationId: GetHrisAbsences
summary: Get absences
description: 'Retrieve all absences.
Top level filters use AND, while individual filters use OR if they accept multiple arguments. That means filters will be resolved like this: `(id IN ids) AND (remote_id IN remote_ids)`'
tags:
- Unified HRIS API
parameters:
- in: header
name: X-Integration-Id
schema:
type: string
description: ID of the integration you want to interact with.
example: bamboohr:HWUTwvyx2wLoSUHphiWVrp28
required: true
- name: cursor
in: query
required: false
description: An optional cursor string used for pagination. This can be retrieved from the `next` property of the previous page response.
schema:
$ref: '#/components/schemas/GetHrisAbsencesParameterCursor'
- name: page_size
in: query
required: false
description: The number of results to return per page. Maximum is 250.
schema:
$ref: '#/components/schemas/GetHrisAbsencesParameterPageSize'
- name: updated_after
in: query
required: false
description: 'Filter the entries based on the modification date in format `YYYY-MM-DDTHH:mm:ss.sssZ`. Returns records where either the record itself **OR** its nested data has been updated since this timestamp, even if the record''s own `changed_at` field remains unchanged.
If you want to track entry deletion, also set the `include_deleted=true` query parameter, because otherwise, deleted entries will be hidden.
For more details, see [Understanding changed_at vs updated_after Behavior](https://docs.kombo.dev/ats/getting-started/fetching-data#understanding-changed_at-vs-updated_after-behavior).
For this endpoint, `updated_after` matches when the returned record changed, or when related data changed as described below.
| Path | Added/Removed | Linked Record |
| --- | --- | --- |
| `type` | n/a | ✓ Yes |
_**Added/Removed**: Whether adding or removing entries from this list triggers an update (n/a for single records). **Linked Record**: Whether changes to the linked record itself trigger an update._'
schema:
$ref: '#/components/schemas/GetHrisAbsencesParameterUpdatedAfter'
- name: include_deleted
in: query
required: false
description: By default, deleted entries are not returned. Use the `include_deleted` query param to include deleted entries too.
schema:
$ref: '#/components/schemas/GetHrisAbsencesParameterIncludeDeleted'
- name: ignore_unsupported_filters
in: query
required: false
description: When set to `true`, filters targeting fields not supported by this integration will be ignored instead of filtering out all results.
schema:
$ref: '#/components/schemas/GetHrisAbsencesParameterIgnoreUnsupportedFilters'
- name: ids
in: query
required: false
description: Filter by a comma-separated list of IDs such as `222k7eCGyUdgt2JWZDNnkDs3,B5DVmypWENfU6eMe6gYDyJG3`.
schema:
$ref: '#/components/schemas/GetHrisAbsencesParameterIds'
- name: remote_ids
in: query
required: false
description: Filter by a comma-separated list of remote IDs.
schema:
$ref: '#/components/schemas/GetHrisAbsencesParameterRemoteIds'
- name: date_from
in: query
required: false
description: Filter for all the absences that either start _or_ haven't ended yet on/after this day. If you imagine a calendar displaying absences, this defines the left-most visible day. This is a plain date (i.e., `yyyy-MM-dd`), all time information is discarded.
schema:
$ref: '#/components/schemas/GetHrisAbsencesParameterDateFrom'
- name: date_until
in: query
required: false
description: Filter for absences that start on or before this day (but might continue after). If you imagine a calendar displaying absences, this defines the right-most visible day. This is a plain date (i.e., `yyyy-MM-dd`), all time information is discarded.
schema:
$ref: '#/components/schemas/GetHrisAbsencesParameterDateUntil'
- name: type_ids
in: query
required: false
description: Filter by a comma-separated list of absence type IDs.
schema:
$ref: '#/components/schemas/GetHrisAbsencesParameterTypeIds'
- name: employee_id
in: query
required: false
description: Filter by a specific employee using their ID.
schema:
$ref: '#/components/schemas/GetHrisAbsencesParameterEmployeeId'
- name: time_from
in: query
required: false
description: '**(⚠️ Deprecated - Use the `date_from` filter instead.)** Filter for absences that either start after or start before and end after a certain time.'
schema:
$ref: '#/components/schemas/GetHrisAbsencesParameterTimeFrom'
- name: time_until
in: query
required: false
description: '**(⚠️ Deprecated - Use the `date_until` filter instead.)** Filter for absences that start before a certain time.'
schema:
$ref: '#/components/schemas/GetHrisAbsencesParameterTimeUntil'
responses:
'200':
description: GET /hris/absences Positive response
content:
application/json:
schema:
$ref: '#/components/schemas/GetHrisAbsencesPositiveResponse'
examples:
example1:
value:
status: success
data:
next: eyJwYWdlIjoxMiwibm90ZSI6InRoaXMgaXMganVzdCBhbiBleGFtcGxlIGFuZCBub3QgcmVwcmVzZW50YXRpdmUgZm9yIGEgcmVhbCBjdXJzb3IhIn0=
results:
- id: 22st2Ji8XpncEYEak8mvQgQF
remote_id: '1348'
employee_id: JDdUy9kiH5APaGizFrgNmQjM
approver_id: AgXEispYPP1BbToHpqnqcpxy
start_date: '2022-08-04'
end_date: '2022-08-05'
start_half_day: true
end_half_day: false
start_time: '13:15:00'
end_time: '17:00:00'
amount: 2
unit: DAYS
status: APPROVED
employee_note: Visiting my family.
type_id: xzZoKssDaMZAd62kxayzzQvD
remote_created_at: '2022-08-07T14:01:29.196Z'
remote_updated_at: '2022-08-07T14:01:29.196Z'
changed_at: '2022-08-07T14:01:29.196Z'
remote_deleted_at: '2022-08-07T14:01:29.196Z'
remote_data: null
type:
id: xzZoKssDaMZAd62kxayzzQvD
remote_id: '91'
name: Vacation
unit: DAYS
half_days_supported: true
exact_times_supported: false
remote_data: null
changed_at: '2022-08-07T14:01:29.196Z'
remote_deleted_at: null
default:
$ref: '#/components/responses/ErrorResponseHRIS'
post:
operationId: PostHrisAbsences
summary: Create absence
description: "Create a new absence.\n\nCheck [this page](/hris/features/creating-absences) for a detailed guide.\n\n\n This endpoint requires the permission **Manage absences** to be enabled in [your scope config](/scopes).\n\n\n### Example Request Body\n\n```json\n{\n \"employee_id\": \"wXJMxwDvPAjrJ4CyqdV9\",\n \"absence_type_id\": \"3YKtQ7qedsrcCady1jSyAkY1\",\n \"start_date\": \"2019-09-17\",\n \"end_date\": \"2019-09-21\",\n \"start_time\": \"08:30:00\",\n \"end_time\": \"16:00:00\",\n \"start_half_day\": false,\n \"end_half_day\": false,\n \"employee_note\": \"Visiting the aliens\"\n}\n```"
tags:
- Unified HRIS API
parameters:
- in: header
name: X-Integration-Id
schema:
type: string
description: ID of the integration you want to interact with.
example: bamboohr:HWUTwvyx2wLoSUHphiWVrp28
required: true
requestBody:
description: POST /hris/absences Request body
content:
application/json:
schema:
$ref: '#/components/schemas/PostHrisAbsencesRequestBody'
examples:
example1:
value:
employee_id: wXJMxwDvPAjrJ4CyqdV9
absence_type_id: 3YKtQ7qedsrcCady1jSyAkY1
start_date: '2019-09-17'
end_date: '2019-09-21'
start_time: 08:30:00
end_time: '16:00:00'
start_half_day: false
end_half_day: false
employee_note: Visiting the aliens
responses:
'200':
description: POST /hris/absences Positive response
content:
application/json:
schema:
$ref: '#/components/schemas/PostHrisAbsencesPositiveResponse'
examples:
example1:
value:
status: success
data:
id: 22st2Ji8XpncEYEak8mvQgQF
remote_id: '1348'
employee_id: JDdUy9kiH5APaGizFrgNmQjM
approver_id: AgXEispYPP1BbToHpqnqcpxy
start_date: '2022-08-04'
end_date: '2022-08-05'
start_half_day: true
end_half_day: false
start_time: '13:15:00'
end_time: '17:00:00'
amount: 2
unit: DAYS
status: APPROVED
employee_note: Visiting my family.
type_id: xzZoKssDaMZAd62kxayzzQvD
remote_created_at: '2022-08-07T14:01:29.196Z'
remote_updated_at: '2022-08-07T14:01:29.196Z'
changed_at: '2022-08-07T14:01:29.196Z'
remote_deleted_at: '2022-08-07T14:01:29.196Z'
remote_data: null
warnings:
- message: This is an example warning!
default:
$ref: '#/components/responses/ErrorResponseHRIS'
/hris/absences/{absence_id}:
delete:
operationId: DeleteHrisAbsencesAbsenceId
summary: Delete absence
description: "Delete this absence.\n\n\n This endpoint requires the permission **Manage absences** to be enabled in [your scope config](/scopes).\n\n\n### Example Request Body\n\n```json\n{\n \"absence_id\": \"wXJMxwDvPAjrJ4CyqdV9\"\n}\n```"
tags:
- Unified HRIS API
parameters:
- in: header
name: X-Integration-Id
schema:
type: string
description: ID of the integration you want to interact with.
example: bamboohr:HWUTwvyx2wLoSUHphiWVrp28
required: true
- name: absence_id
in: path
required: true
description: The Kombo ID of the absence
schema:
$ref: '#/components/schemas/DeleteHrisAbsencesAbsenceIdParameterAbsenceId'
examples:
example1:
value: wXJMxwDvPAjrJ4CyqdV9
requestBody:
description: DELETE /hris/absences/:absence_id Request body
content:
application/json:
schema:
$ref: '#/components/schemas/DeleteHrisAbsencesAbsenceIdRequestBody'
examples:
example1:
value: {}
responses:
'200':
description: DELETE /hris/absences/:absence_id Positive response
content:
application/json:
schema:
$ref: '#/components/schemas/DeleteHrisAbsencesAbsenceIdPositiveResponse'
examples:
example1:
value:
status: success
data:
id: 22st2Ji8XpncEYEak8mvQgQF
remote_id: '1348'
employee_id: JDdUy9kiH5APaGizFrgNmQjM
approver_id: AgXEispYPP1BbToHpqnqcpxy
start_date: '2022-08-04'
end_date: '2022-08-05'
start_half_day: true
end_half_day: false
start_time: '13:15:00'
end_time: '17:00:00'
amount: 2
unit: DAYS
status: APPROVED
employee_note: Visiting my family.
type_id: xzZoKssDaMZAd62kxayzzQvD
remote_created_at: '2022-08-07T14:01:29.196Z'
remote_updated_at: '2022-08-07T14:01:29.196Z'
changed_at: '2022-08-07T14:01:29.196Z'
remote_deleted_at: '2022-08-07T14:01:29.196Z'
remote_data: null
warnings:
- message: This is an example warning!
default:
$ref: '#/components/responses/ErrorResponseHRIS'
/hris/legal-entities:
get:
operationId: GetHrisLegalEntities
summary: Get legal entities
description: 'Retrieve all legal entites.
Top level filters use AND, while individual filters use OR if they accept multiple arguments. That means filters will be resolved like this: `(id IN ids) AND (remote_id IN remote_ids)`'
tags:
- Unified HRIS API
parameters:
- in: header
name: X-Integration-Id
schema:
type: string
description: ID of the integration you want to interact with.
example: bamboohr:HWUTwvyx2wLoSUHphiWVrp28
required: true
- name: cursor
in: query
required: false
description: An optional cursor string used for pagination. This can be retrieved from the `next` property of the previous page response.
schema:
$ref: '#/components/schemas/GetHrisLegalEntitiesParameterCursor'
- name: page_size
in: query
required: false
description: The number of results to return per page. Maximum is 250.
schema:
$ref: '#/components/schemas/GetHrisLegalEntitiesParameterPageSize'
- name: updated_after
in: query
required: false
description: 'Filter the entries based on the modification date in format `YYYY-MM-DDTHH:mm:ss.sssZ`. Returns records where either the record itself **OR** its nested data has been updated since this timestamp, even if the record''s own `changed_at` field remains unchanged.
If you want to track entry deletion, also set the `include_deleted=true` query parameter, because otherwise, deleted entries will be hidden.
For more details, see [Understanding changed_at vs updated_after Behavior](https://docs.kombo.dev/ats/getting-started/fetching-data#understanding-changed_at-vs-updated_after-behavior).
For this endpoint, only changes to the returned record itself are considered.'
schema:
$ref: '#/components/schemas/GetHrisLegalEntitiesParameterUpdatedAfter'
- name: include_deleted
in: query
required: false
description: By default, deleted entries are not returned. Use the `include_deleted` query param to include deleted entries too.
schema:
$ref: '#/components/schemas/GetHrisLegalEntitiesParameterIncludeDeleted'
- name: ignore_unsupported_filters
in: query
required: false
description: When set to `true`, filters targeting fields not supported by this integration will be ignored instead of filtering out all results.
schema:
$ref: '#/components/schemas/GetHrisLegalEntitiesParameterIgnoreUnsupportedFilters'
- name: ids
in: query
required: false
description: Filter by a comma-separated list of IDs such as `222k7eCGyUdgt2JWZDNnkDs3,B5DVmypWENfU6eMe6gYDyJG3`.
schema:
$ref: '#/components/schemas/GetHrisLegalEntitiesParameterIds'
- name: remote_ids
in: query
required: false
description: Filter by a comma-separated list of remote IDs.
schema:
$ref: '#/components/schemas/GetHrisLegalEntitiesParameterRemoteIds'
- name: name_contains
in: query
required: false
description: Filter by the `name` field. Can be used to find a legal entity by keywords present in the legal entity name.
schema:
$ref: '#/components/schemas/GetHrisLegalEntitiesParameterNameContains'
responses:
'200':
description: GET /hris/legal-entities Positive response
content:
application/json:
schema:
$ref: '#/components/schemas/GetHrisLegalEntitiesPositiveResponse'
examples:
example1:
value:
status: success
data:
next: eyJwYWdlIjoxMiwibm90ZSI6InRoaXMgaXMganVzdCBhbiBleGFtcGxlIGFuZCBub3QgcmVwcmVzZW50YXRpdmUgZm9yIGEgcmVhbCBjdXJzb3IhIn0=
results:
- id: 4B9bKBpX5tnwjiG93TAqF7ci
remote_id: '49'
name: ACME Inc.
address:
city: Berlin
country: DE
raw: 'Sonnenallee 63
12045 Berlin, Berlin
Germany'
state: Berlin
street_1: Sonnenallee 63
street_2: null
zip_code: '12045'
changed_at: '2022-08-07T14:01:29.196Z'
remote_deleted_at: null
remote_data: null
default:
$ref: '#/components/responses/ErrorResponseHRIS'
/hris/timesheets:
get:
operationId: GetHrisTimesheets
summary: Get timesheets
description: 'Get timesheets
Retrieve attendance data and timesheets from HRIS tools.
**Open Beta Feature:** This endpoint is currently in beta. Please reach out to our support team if you need assistance with implementation.
For a detailed explanation of the data model, validation rules, time zones, payable hours, approvals, and break patterns, see the [Time & Attendance guide](/hris/features/time-and-attendance).
Top level filters use AND, while individual filters use OR if they accept multiple arguments. That means filters will be resolved like this: `(id IN ids) AND (remote_id IN remote_ids)`'
tags:
- Unified HRIS API
parameters:
- in: header
name: X-Integration-Id
schema:
type: string
description: ID of the integration you want to interact with.
example: bamboohr:HWUTwvyx2wLoSUHphiWVrp28
required: true
- name: cursor
in: query
required: false
description: An optional cursor string used for pagination. This can be retrieved from the `next` property of the previous page response.
schema:
$ref: '#/components/schemas/GetHrisTimesheetsParameterCursor'
- name: page_size
in: query
required: false
description: The number of results to return per page. Maximum is 250.
schema:
$ref: '#/components/schemas/GetHrisTimesheetsParameterPageSize'
- name: updated_after
in: query
required: false
description: 'Filter the entries based on the modification date in format `YYYY-MM-DDTHH:mm:ss.sssZ`. Returns records where either the record itself **OR** its nested data has been updated since this timestamp, even if the record''s own `changed_at` field remains unchanged.
If you want to track entry deletion, also set the `include_deleted=true` query parameter, because otherwise, deleted entries will be hidden.
For more details, see [Understanding changed_at vs updated_after Behavior](https://docs.kombo.dev/ats/getting-started/fetching-data#understanding-changed_at-vs-updated_after-behavior).
For this endpoint, only changes to the returned record itself are considered.'
schema:
$ref: '#/components/schemas/GetHrisTimesheetsParameterUpdatedAfter'
- name: include_deleted
in: query
required: false
description: By default, deleted entries are not returned. Use the `include_deleted` query param to include deleted entries too.
schema:
$ref: '#/components/schemas/GetHrisTimesheetsParameterIncludeDeleted'
- name: ignore_unsupported_filters
in: query
required: false
description: When set to `true`, filters targeting fields not supported by this integration will be ignored instead of filtering out all results.
schema:
$ref: '#/components/schemas/GetHrisTimesheetsParameterIgnoreUnsupportedFilters'
- name: ids
in: query
required: false
description: Filter by a comma-separated list of IDs such as `222k7eCGyUdgt2JWZDNnkDs3,B5DVmypWENfU6eMe6gYDyJG3`.
schema:
$ref: '#/components/schemas/GetHrisTimesheetsParameterIds'
- name: remote_ids
in: query
required: false
description: Filter by a comma-separated list of remote IDs.
schema:
$ref: '#/components/schemas/GetHrisTimesheetsParameterRemoteIds'
- name: employee_id
in: query
required: false
description: Returns timesheets for a specific employee.
schema:
$ref: '#/components/schemas/GetHrisTimesheetsParameterEmployeeId'
- name: started_before
in: query
required: false
description: Return timesheets whose start time is before the given timestamp.
schema:
$ref: '#/components/schemas/GetHrisTimesheetsParameterStartedBefore'
- name: started_after
in: query
required: false
description: Return timesheets whose start time is on or after the given timestamp.
schema:
$ref: '#/components/schemas/GetHrisTimesheetsParameterStartedAfter'
- name: ended_before
in: query
required: false
description: Return timesheets whose end time is on or before the given timestamp.
schema:
$ref: '#/components/schemas/GetHrisTimesheetsParameterEndedBefore'
- name: ended_after
in: query
required: false
description: Return timesheets whose end time is on or after the given timestamp.
schema:
$ref: '#/components/schemas/GetHrisTimesheetsParameterEndedAfter'
responses:
'200':
description: GET /hris/timesheets Positive response
content:
application/json:
schema:
$ref: '#/components/schemas/GetHrisTimesheetsPositiveResponse'
examples:
example1:
value:
status: success
data:
next: eyJwYWdlIjoxMiwibm90ZSI6InRoaXMgaXMganVzdCBhbiBleGFtcGxlIGFuZCBub3QgcmVwcmVzZW50YXRpdmUgZm9yIGEgcmVhbCBjdXJzb3IhIn0=
results:
- id: C1BB1C36-FE1D-4185-AAB8-0716D8FBA017
remote_id: '446655440000'
employee_id: 289AD550-8659-4305-92B2-6EAA006AAB17
started_at: '2025-04-16T09:02:00.000Z'
ended_at: '2025-04-16T16:59:00.000Z'
timezone: -04:00
payable_hours: 8
unpaid_break_minutes: 30
breaks:
- ended_at: '2025-04-16T12:30:00.000Z'
paid: false
started_at: '2025-04-16T12:00:00.000Z'
approval_status: APPROVED
approved_at: '2025-04-16T17:05:31.000Z'
comment: Sprint planning & code review
custom_fields: {}
integration_fields: []
changed_at: '2022-08-07T14:01:29.196Z'
remote_deleted_at: null
remote_data: {}
default:
$ref: '#/components/responses/ErrorResponseHRIS'
/hris/performance-review-cycles:
get:
operationId: GetHrisPerformanceReviewCycles
summary: Get performance review cycles
description: 'Get performance review cycles
Retrieve performance review cycles data from HRIS tools.
Top level filters use AND, while individual filters use OR if they accept multiple arguments. That means filters will be resolved like this: `(id IN ids) AND (remote_id IN remote_ids)`'
tags:
- Unified HRIS API
parameters:
- in: header
name: X-Integration-Id
schema:
type: string
description: ID of the integration you want to interact with.
example: bamboohr:HWUTwvyx2wLoSUHphiWVrp28
required: true
- name: cursor
in: query
required: false
description: An optional cursor string used for pagination. This can be retrieved from the `next` property of the previous page response.
schema:
$ref: '#/components/schemas/GetHrisPerformanceReviewCyclesParameterCursor'
- name: page_size
in: query
required: false
description: The number of results to return per page. Maximum is 250.
schema:
$ref: '#/components/schemas/GetHrisPerformanceReviewCyclesParameterPageSize'
- name: updated_after
in: query
required: false
description: 'Filter the entries based on the modification date in format `YYYY-MM-DDTHH:mm:ss.sssZ`. Returns records where either the record itself **OR** its nested data has been updated since this timestamp, even if the record''s own `changed_at` field remains unchanged.
If you want to track entry deletion, also set the `include_deleted=true` query parameter, because otherwise, deleted entries will be hidden.
For more details, see [Understanding changed_at vs updated_after Behavior](https://docs.kombo.dev/ats/getting-started/fetching-data#understanding-changed_at-vs-updated_after-behavior).
For this endpoint, only changes to the returned record itself are considered.'
schema:
$ref: '#/components/schemas/GetHrisPerformanceReviewCyclesParameterUpdatedAfter'
- name: include_deleted
in: query
required: false
description: By default, deleted entries are not returned. Use the `include_deleted` query param to include deleted entries too.
schema:
$ref: '#/components/schemas/GetHrisPerformanceReviewCyclesParameterIncludeDeleted'
- name: ignore_unsupported_filters
in: query
required: false
description: When set to `true`, filters targeting fields not supported by this integration will be ignored instead of filtering out all results.
schema:
$ref: '#/components/schemas/GetHrisPerformanceReviewCyclesParameterIgnoreUnsupportedFilters'
- name: ids
in: query
required: false
description: Filter by a comma-separated list of IDs such as `222k7eCGyUdgt2JWZDNnkDs3,B5DVmypWENfU6eMe6gYDyJG3`.
schema:
$ref: '#/components/schemas/GetHrisPerformanceReviewCyclesParameterIds'
- name: remote_ids
in: query
required: false
description: Filter by a comma-separated list of remote IDs.
schema:
$ref: '#/components/schemas/GetHrisPerformanceReviewCyclesParameterRemoteIds'
responses:
'200':
description: GET /hris/performance-review-cycles Positive response
content:
application/json:
schema:
$ref: '#/components/schemas/GetHrisPerformanceReviewCyclesPositiveResponse'
examples:
example1:
value:
status: success
data:
next: eyJwYWdlIjoxMiwibm90ZSI6InRoaXMgaXMganVzdCBhbiBleGFtcGxlIGFuZCBub3QgcmVwcmVzZW50YXRpdmUgZm9yIGEgcmVhbCBjdXJzb3IhIn0=
results:
- id: 4B9bKBpX5tnwjiG93TAqF7ci
remote_id: '1'
name: 2025 Annual Performance Review Cycle
review_period_start_date: '2025-01-01T00:00:00.000Z'
changed_at: '2022-08-07T14:01:29.196Z'
remote_deleted_at: null
remote_data: null
default:
$ref: '#/components/responses/ErrorResponseHRIS'
/hris/performance-reviews:
get:
operationId: GetHrisPerformanceReviews
summary: Get performance reviews
description: 'Get performance reviews
Retrieve performance review data from HRIS tools.
Top level filters use AND, while individual filters use OR if they accept multiple arguments. That means filters will be resolved like this: `(id IN ids) AND (remote_id IN remote_ids)`'
tags:
- Unified HRIS API
parameters:
- in: header
name: X-Integration-Id
schema:
type: string
description: ID of the integration you want to interact with.
example: bamboohr:HWUTwvyx2wLoSUHphiWVrp28
required: true
- name: cursor
in: query
required: false
description: An optional cursor string used for pagination. This can be retrieved from the `next` property of the previous page response.
schema:
$ref: '#/components/schemas/GetHrisPerformanceReviewsParameterCursor'
- name: page_size
in: query
required: false
description: The number of results to return per page. Maximum is 250.
schema:
$ref: '#/components/schemas/GetHrisPerformanceReviewsParameterPageSize'
- name: updated_after
in: query
required: false
description: 'Filter the entries based on the modification date in format `YYYY-MM-DDTHH:mm:ss.sssZ`. Returns records where either the record itself **OR** its nested data has been updated since this timestamp, even if the record''s own `changed_at` field remains unchanged.
If you want to track entry deletion, also set the `include_deleted=true` query parameter, because otherwise, deleted entries will be hidden.
For more details, see [Understanding changed_at vs updated_after Behavior](https://docs.kombo.dev/ats/getting-started/fetching-data#understanding-changed_at-vs-updated_after-behavior).
For this endpoint, `updated_after` matches when the returned record changed, or when related data changed as described below.
| Path | Added/Removed | Linked Record |
| --- | --- | --- |
| `review_cycle` | n/a | ✓ Yes |
| `reviewee` | n/a | ✓ Yes |
| `reviewer` | n/a | ✓ Yes |
_**Added/Removed**: Whether adding or removing entries from this list triggers an update (n/a for single records). **Linked Record**: Whether changes to the linked record itself trigger an update._'
schema:
$ref: '#/components/schemas/GetHrisPerformanceReviewsParameterUpdatedAfter'
- name: include_deleted
in: query
required: false
description: By default, deleted entries are not returned. Use the `include_deleted` query param to include deleted entries too.
schema:
$ref: '#/components/schemas/GetHrisPerformanceReviewsParameterIncludeDeleted'
- name: ignore_unsupported_filters
in: query
required: false
description: When set to `true`, filters targeting fields not supported by this integration will be ignored instead of filtering out all results.
schema:
$ref: '#/components/schemas/GetHrisPerformanceReviewsParameterIgnoreUnsupportedFilters'
- name: ids
in: query
required: false
description: Filter by a comma-separated list of IDs such as `222k7eCGyUdgt2JWZDNnkDs3,B5DVmypWENfU6eMe6gYDyJG3`.
schema:
$ref: '#/components/schemas/GetHrisPerformanceReviewsParameterIds'
- name: remote_ids
in: query
required: false
description: Filter by a comma-separated list of remote IDs.
schema:
$ref: '#/components/schemas/GetHrisPerformanceReviewsParameterRemoteIds'
- name: types
in: query
required: false
description: "Filter by a comma-separated list of `MANAGER`, `DIRECT_REPORT`, `PEER`, `SELF` \n\nLeave this blank to get results matching all values."
schema:
$ref: '#/components/schemas/GetHrisPerformanceReviewsParameterTypes'
- name: review_cycle_ids
in: query
required: false
description: Filter by a comma-separated list of review cycle IDs.
schema:
$ref: '#/components/schemas/GetHrisPerformanceReviewsParameterReviewCycleIds'
- name: reviewee_ids
in: query
required: false
description: Filter by a comma-separated list of reviewee IDs.
schema:
$ref: '#/components/schemas/GetHrisPerformanceReviewsParameterRevieweeIds'
responses:
'200':
description: GET /hris/performance-reviews Positive response
content:
application/json:
schema:
$ref: '#/components/schemas/GetHrisPerformanceReviewsPositiveResponse'
examples:
example1:
value:
status: success
data:
next: eyJwYWdlIjoxMiwibm90ZSI6InRoaXMgaXMganVzdCBhbiBleGFtcGxlIGFuZCBub3QgcmVwcmVzZW50YXRpdmUgZm9yIGEgcmVhbCBjdXJzb3IhIn0=
results:
- id: 4B9bKBpX5tnwjiG93TAqF7ci
remote_id: '1'
type: MANAGER
summary_comment: Good job this year! Let's keep it up for 2024!
summary_rating:
ordered_options:
- Needs improvement
- Below expectations
- Meets expectations
- Exceeds expectations
- Exceptional
type: SINGLE_SELECT
value: Exceeds expectations
changed_at: '2022-08-07T14:01:29.196Z'
remote_deleted_at: null
remote_data: null
reviewee:
id: 26vafvWSRmbhNcxJYqjCzuJg
remote_id: '32'
first_name: John
last_name: Doe
display_full_name: John Doe
work_email: john.doe@acme.com
remote_deleted_at: null
reviewer:
id: 4EeSSSd9Fr8iiW9mPKmjEVWK
remote_id: '1024'
first_name: Peter
last_name: Doe
display_full_name: Peter Doe
work_email: peter.doe@acme.com
remote_deleted_at: null
review_cycle:
id: 4B9bKBpX5tnwjiG93TAqF7ci
remote_id: '1'
name: 2025 Annual Performance Review Cycle
review_period_start_date: '2025-01-01T00:00:00.000Z'
changed_at: '2022-08-07T14:01:29.196Z'
remote_deleted_at: null
remote_data: null
default:
$ref: '#/components/responses/ErrorResponseHRIS'
/hris/skills:
get:
operationId: GetHrisSkills
summary: Get skills
description: 'Get skills
**Closed Beta Feature:** This endpoint is currently in closed beta. We''re testing it with selected customers before its public release. If you''re interested in learning more or getting early access, please reach out.
Retrieve all skills available in the HRIS system. Skills are available on employees and job positions.'
tags:
- Unified HRIS API
parameters:
- in: header
name: X-Integration-Id
schema:
type: string
description: ID of the integration you want to interact with.
example: bamboohr:HWUTwvyx2wLoSUHphiWVrp28
required: true
- name: ids
in: query
required: false
description: Filter by a comma-separated list of IDs such as `222k7eCGyUdgt2JWZDNnkDs3,B5DVmypWENfU6eMe6gYDyJG3`.
schema:
$ref: '#/components/schemas/GetHrisSkillsParameterIds'
- name: remote_ids
in: query
required: false
description: Filter by a comma-separated list of remote IDs.
schema:
$ref: '#/components/schemas/GetHrisSkillsParameterRemoteIds'
- name: name_contains
in: query
required: false
description: Filter by the `name` field. Can be used to find a skills by keywords present in the skill name.
schema:
$ref: '#/components/schemas/GetHrisSkillsParameterNameContains'
responses:
'200':
description: GET /hris/skills Positive response
content:
application/json:
schema:
$ref: '#/components/schemas/GetHrisSkillsPositiveResponse'
examples:
example1:
value:
status: success
data:
next: eyJwYWdlIjoxMiwibm90ZSI6InRoaXMgaXMganVzdCBhbiBleGFtcGxlIGFuZCBub3QgcmVwcmVzZW50YXRpdmUgZm9yIGEgcmVhbCBjdXJzb3IhIn0=
results:
- id: 28KMdr68N8kG9EzLwjsN9aoz
remote_id: '238476582'
name: TypeScript Programming
description: The ability understand and write TypeScript code.
ordered_levels:
- Proficiency Level 1
- Proficiency Level 2
- Proficiency Level 3
- Proficiency Level 4
- Proficiency Level 5
changed_at: '2022-08-07T14:01:29.196Z'
remote_deleted_at: null
remote_data: null
default:
$ref: '#/components/responses/ErrorResponseHRIS'
post:
operationId: PostHrisSkills
summary: Create skill
description: 'Create skill
**Closed Beta Feature:** This endpoint is currently in closed beta. We''re testing it with selected customers before its public release. If you''re interested in learning more or getting early access, please reach out.
Create a new skill in the HRIS system with specified name and levels. Refer to our coverage grid for support of levels.'
tags:
- Unified HRIS API
parameters:
- in: header
name: X-Integration-Id
schema:
type: string
description: ID of the integration you want to interact with.
example: bamboohr:HWUTwvyx2wLoSUHphiWVrp28
required: true
requestBody:
description: POST /hris/skills Request body
content:
application/json:
schema:
$ref: '#/components/schemas/PostHrisSkillsRequestBody'
examples:
example1:
value:
name: TypeScript Programming
responses:
'200':
description: POST /hris/skills Positive response
content:
application/json:
schema:
$ref: '#/components/schemas/PostHrisSkillsPositiveResponse'
examples:
example1:
value:
status: success
data:
id: 28KMdr68N8kG9EzLwjsN9aoz
remote_id: '238476582'
name: TypeScript Programming
description: The ability understand and write TypeScript code.
ordered_levels:
- Proficiency Level 1
- Proficiency Level 2
- Proficiency Level 3
- Proficiency Level 4
- Proficiency Level 5
changed_at: '2022-08-07T14:01:29.196Z'
remote_deleted_at: null
remote_data: null
default:
$ref: '#/components/responses/ErrorResponseHRIS'
/hris/skills/{skill_id}:
patch:
operationId: PatchHrisSkillsSkillId
summary: Update skill
description: 'Update skill
**Closed Beta Feature:** This endpoint is currently in closed beta. We''re testing it with selected customers before its public release. If you''re interested in learning more or getting early access, please reach out.
Update an existing skill in the HRIS system.'
tags:
- Unified HRIS API
parameters:
- in: header
name: X-Integration-Id
schema:
type: string
description: ID of the integration you want to interact with.
example: bamboohr:HWUTwvyx2wLoSUHphiWVrp28
required: true
- name: skill_id
in: path
required: true
description: The ID of the skill
schema:
$ref: '#/components/schemas/PatchHrisSkillsSkillIdParameterSkillId'
requestBody:
description: PATCH /hris/skills/:skill_id Request body
content:
application/json:
schema:
$ref: '#/components/schemas/PatchHrisSkillsSkillIdRequestBody'
responses:
'200':
description: PATCH /hris/skills/:skill_id Positive response
content:
application/json:
schema:
$ref: '#/components/schemas/PatchHrisSkillsSkillIdPositiveResponse'
examples:
example1:
value:
status: success
data:
id: 28KMdr68N8kG9EzLwjsN9aoz
remote_id: '238476582'
name: TypeScript Programming
description: The ability understand and write TypeScript code.
ordered_levels:
- Proficiency Level 1
- Proficiency Level 2
- Proficiency Level 3
- Proficiency Level 4
- Proficiency Level 5
changed_at: '2022-08-07T14:01:29.196Z'
remote_deleted_at: null
remote_data: null
default:
$ref: '#/components/responses/ErrorResponseHRIS'
delete:
operationId: DeleteHrisSkillsSkillId
summary: Delete skill
description: 'Delete skill
**Closed Beta Feature:** This endpoint is currently in closed beta. We''re testing it with selected customers before its public release. If you''re interested in learning more or getting early access, please reach out.
Delete a skill from the HRIS system.'
tags:
- Unified HRIS API
parameters:
- in: header
name: X-Integration-Id
schema:
type: string
description: ID of the integration you want to interact with.
example: bamboohr:HWUTwvyx2wLoSUHphiWVrp28
required: true
- name: skill_id
in: path
required: true
description: The ID of the skill
schema:
$ref: '#/components/schemas/DeleteHrisSkillsSkillIdParameterSkillId'
requestBody:
description: DELETE /hris/skills/:skill_id Request body
content:
application/json:
schema:
$ref: '#/components/schemas/DeleteHrisSkillsSkillIdRequestBody'
responses:
'200':
description: DELETE /hris/skills/:skill_id Positive response
content:
application/json:
schema:
$ref: '#/components/schemas/DeleteHrisSkillsSkillIdPositiveResponse'
examples:
example1:
value:
status: success
data:
id: 28KMdr68N8kG9EzLwjsN9aoz
remote_id: '238476582'
name: TypeScript Programming
description: The ability understand and write TypeScript code.
ordered_levels:
- Proficiency Level 1
- Proficiency Level 2
- Proficiency Level 3
- Proficiency Level 4
- Proficiency Level 5
changed_at: '2022-08-07T14:01:29.196Z'
remote_deleted_at: '2022-08-07T14:01:29.196Z'
remote_data: null
default:
$ref: '#/components/responses/ErrorResponseHRIS'
/hris/employee-skill-assignments:
get:
operationId: GetHrisEmployeeSkillAssignments
summary: Get employee skill assignments
description: 'Get employee skill assignments
**Closed Beta Feature:** This endpoint is currently in closed beta. We''re testing it with selected customers before its public release. If you''re interested in learning more or getting early access, please reach out.
Retrieve all employee skill assignments. These represent the skills that employees possess and their current proficiency levels.'
tags:
- Unified HRIS API
parameters:
- in: header
name: X-Integration-Id
schema:
type: string
description: ID of the integration you want to interact with.
example: bamboohr:HWUTwvyx2wLoSUHphiWVrp28
required: true
- name: ids
in: query
required: false
description: Filter by a comma-separated list of IDs such as `222k7eCGyUdgt2JWZDNnkDs3,B5DVmypWENfU6eMe6gYDyJG3`.
schema:
$ref: '#/components/schemas/GetHrisEmployeeSkillAssignmentsParameterIds'
- name: remote_ids
in: query
required: false
description: Filter by a comma-separated list of remote IDs.
schema:
$ref: '#/components/schemas/GetHrisEmployeeSkillAssignmentsParameterRemoteIds'
- name: employee_ids
in: query
required: false
description: Filter by a comma-separated list of employee IDs.
schema:
$ref: '#/components/schemas/GetHrisEmployeeSkillAssignmentsParameterEmployeeIds'
- name: skill_ids
in: query
required: false
description: Filter by a comma-separated list of skill IDs.
schema:
$ref: '#/components/schemas/GetHrisEmployeeSkillAssignmentsParameterSkillIds'
responses:
'200':
description: GET /hris/employee-skill-assignments Positive response
content:
application/json:
schema:
$ref: '#/components/schemas/GetHrisEmployeeSkillAssignmentsPositiveResponse'
examples:
example1:
value:
status: success
data:
next: eyJwYWdlIjoxMiwibm90ZSI6InRoaXMgaXMganVzdCBhbiBleGFtcGxlIGFuZCBub3QgcmVwcmVzZW50YXRpdmUgZm9yIGEgcmVhbCBjdXJzb3IhIn0=
results:
- id: 8AvRLpxwY5J6pGxfY6fUD81Z
employee_id: 26vafvWSRmbhNcxJYqjCzuJg
skill_id: 28KMdr68N8kG9EzLwjsN9aoz
current_level: Proficiency Level 1
default:
$ref: '#/components/responses/ErrorResponseHRIS'
post:
operationId: PostHrisEmployeeSkillAssignments
summary: Create employee skill assignment
description: 'Create employee skill assignment
**Closed Beta Feature:** This endpoint is currently in closed beta. We''re testing it with selected customers before its public release. If you''re interested in learning more or getting early access, please reach out.
Assign a skill to an employee with a specified skill level.'
tags:
- Unified HRIS API
parameters:
- in: header
name: X-Integration-Id
schema:
type: string
description: ID of the integration you want to interact with.
example: bamboohr:HWUTwvyx2wLoSUHphiWVrp28
required: true
requestBody:
description: POST /hris/employee-skill-assignments Request body
content:
application/json:
schema:
$ref: '#/components/schemas/PostHrisEmployeeSkillAssignmentsRequestBody'
responses:
'200':
description: POST /hris/employee-skill-assignments Positive response
content:
application/json:
schema:
$ref: '#/components/schemas/PostHrisEmployeeSkillAssignmentsPositiveResponse'
examples:
example1:
value:
status: success
data:
id: 8AvRLpxwY5J6pGxfY6fUD81Z
employee_id: 26vafvWSRmbhNcxJYqjCzuJg
skill_id: 28KMdr68N8kG9EzLwjsN9aoz
current_level: Proficiency Level 1
default:
$ref: '#/components/responses/ErrorResponseHRIS'
/hris/employee-skill-assignments/{employee_skill_assignment_id}:
patch:
operationId: PatchHrisEmployeeSkillAssignmentsEmployeeSkillAssignmentId
summary: Update employee skill assignment
description: 'Update employee skill assignment
**Closed Beta Feature:** This endpoint is currently in closed beta. We''re testing it with selected customers before its public release. If you''re interested in learning more or getting early access, please reach out.
Update the skill level for an employee skill assignment.'
tags:
- Unified HRIS API
parameters:
- in: header
name: X-Integration-Id
schema:
type: string
description: ID of the integration you want to interact with.
example: bamboohr:HWUTwvyx2wLoSUHphiWVrp28
required: true
- name: employee_skill_assignment_id
in: path
required: true
description: The ID of the employee skill assignment
schema:
$ref: '#/components/schemas/PatchHrisEmployeeSkillAssignmentsEmployeeSkillAssignmentIdParameterEmployeeSkillAssignmentId'
requestBody:
description: PATCH /hris/employee-skill-assignments/:employee_skill_assignment_id Request body
content:
application/json:
schema:
$ref: '#/components/schemas/PatchHrisEmployeeSkillAssignmentsEmployeeSkillAssignmentIdRequestBody'
responses:
'200':
description: PATCH /hris/employee-skill-assignments/:employee_skill_assignment_id Positive response
content:
application/json:
schema:
$ref: '#/components/schemas/PatchHrisEmployeeSkillAssignmentsEmployeeSkillAssignmentIdPositiveResponse'
examples:
example1:
value:
status: success
data:
id: 8AvRLpxwY5J6pGxfY6fUD81Z
employee_id: 26vafvWSRmbhNcxJYqjCzuJg
skill_id: 28KMdr68N8kG9EzLwjsN9aoz
current_level: Proficiency Level 1
default:
$ref: '#/components/responses/ErrorResponseHRIS'
delete:
operationId: DeleteHrisEmployeeSkillAssignmentsEmployeeSkillAssignmentId
summary: Delete employee skill assignment
description: 'Delete employee skill assignment
**Closed Beta Feature:** This endpoint is currently in closed beta. We''re testing it with selected customers before its public release. If you''re interested in learning more or getting early access, please reach out.
Remove a skill assignment from an employee.'
tags:
- Unified HRIS API
parameters:
- in: header
name: X-Integration-Id
schema:
type: string
description: ID of the integration you want to interact with.
example: bamboohr:HWUTwvyx2wLoSUHphiWVrp28
required: true
- name: employee_skill_assignment_id
in: path
required: true
description: The ID of the employee skill assignment
schema:
$ref: '#/components/schemas/DeleteHrisEmployeeSkillAssignmentsEmployeeSkillAssignmentIdParameterEmployeeSkillAssignmentId'
requestBody:
description: DELETE /hris/employee-skill-assignments/:employee_skill_assignment_id Request body
content:
application/json:
schema:
$ref: '#/components/schemas/DeleteHrisEmployeeSkillAssignmentsEmployeeSkillAssignmentIdRequestBody'
responses:
'200':
description: DELETE /hris/employee-skill-assignments/:employee_skill_assignment_id Positive response
content:
application/json:
schema:
$ref: '#/components/schemas/DeleteHrisEmployeeSkillAssignmentsEmployeeSkillAssignmentIdPositiveResponse'
examples:
example1:
value:
status: success
data:
id: 8AvRLpxwY5J6pGxfY6fUD81Z
employee_id: 26vafvWSRmbhNcxJYqjCzuJg
skill_id: 28KMdr68N8kG9EzLwjsN9aoz
current_level: Proficiency Level 1
default:
$ref: '#/components/responses/ErrorResponseHRIS'
/hris/staffing-entities:
get:
operationId: GetHrisStaffingEntities
summary: Get staffing entities
description: 'Retrieve all staffing entities.
Retrieve all staffing entities (positions, requisitions, and jobs) from the HRIS system.
Many enterprise HRIS platforms distinguish between **positions**, **requisitions**, and **jobs** — three related but different concepts used to manage headcount and hiring. Not every HRIS uses all three, and naming varies across systems, but here is a general overview:
- **Position**: A slot in the organizational structure that represents a role to be filled (or already filled) by one or more employees. Positions typically carry metadata like department, location, cost center, and reporting line. Think of it as "a chair at a desk" — it exists whether someone is sitting in it or not.
- **Requisition**: A formal request to fill a position. When a manager wants to hire for an open position, they usually create a requisition that goes through an approval workflow. Requisitions are time-bound and tied to a specific hiring need. In Kombo''s data model, a requisition''s `parent_id` points to the position it was opened for.
- **Job**: Some systems use "job" as a more generic or lightweight alternative to a requisition. Jobs often represent an ongoing, unlimited hiring need (e.g., a company that is always hiring for "Software Engineer") rather than a one-off backfill. This is reflected in the `OPEN_UNLIMITED` status.
You can use the `model_types` filter to retrieve only the type(s) relevant to your use case. Each record''s `model_type` field tells you which of the three concepts it represents.
Top level filters use AND, while individual filters use OR if they accept multiple arguments. That means filters will be resolved like this: `(id IN ids) AND (remote_id IN remote_ids)`'
tags:
- Unified HRIS API
parameters:
- in: header
name: X-Integration-Id
schema:
type: string
description: ID of the integration you want to interact with.
example: bamboohr:HWUTwvyx2wLoSUHphiWVrp28
required: true
- name: cursor
in: query
required: false
description: An optional cursor string used for pagination. This can be retrieved from the `next` property of the previous page response.
schema:
$ref: '#/components/schemas/GetHrisStaffingEntitiesParameterCursor'
- name: page_size
in: query
required: false
description: The number of results to return per page. Maximum is 250.
schema:
$ref: '#/components/schemas/GetHrisStaffingEntitiesParameterPageSize'
- name: updated_after
in: query
required: false
description: 'Filter the entries based on the modification date in format `YYYY-MM-DDTHH:mm:ss.sssZ`. Returns records where either the record itself **OR** its nested data has been updated since this timestamp, even if the record''s own `changed_at` field remains unchanged.
If you want to track entry deletion, also set the `include_deleted=true` query parameter, because otherwise, deleted entries will be hidden.
For more details, see [Understanding changed_at vs updated_after Behavior](https://docs.kombo.dev/ats/getting-started/fetching-data#understanding-changed_at-vs-updated_after-behavior).
For this endpoint, `updated_after` matches when the returned record changed, or when related data changed as described below.
| Path | Added/Removed | Linked Record |
| --- | --- | --- |
| `locations` | ✓ Yes | ✓ Yes |
| `legal_entities` | ✓ Yes | ✓ Yes |
| `groups` | ✓ Yes | ✓ Yes |
_**Added/Removed**: Whether adding or removing entries from this list triggers an update (n/a for single records). **Linked Record**: Whether changes to the linked record itself trigger an update._'
schema:
$ref: '#/components/schemas/GetHrisStaffingEntitiesParameterUpdatedAfter'
- name: include_deleted
in: query
required: false
description: By default, deleted entries are not returned. Use the `include_deleted` query param to include deleted entries too.
schema:
$ref: '#/components/schemas/GetHrisStaffingEntitiesParameterIncludeDeleted'
- name: ignore_unsupported_filters
in: query
required: false
description: When set to `true`, filters targeting fields not supported by this integration will be ignored instead of filtering out all results.
schema:
$ref: '#/components/schemas/GetHrisStaffingEntitiesParameterIgnoreUnsupportedFilters'
- name: ids
in: query
required: false
description: Filter by a comma-separated list of IDs such as `222k7eCGyUdgt2JWZDNnkDs3,B5DVmypWENfU6eMe6gYDyJG3`.
schema:
$ref: '#/components/schemas/GetHrisStaffingEntitiesParameterIds'
- name: remote_ids
in: query
required: false
description: Filter by a comma-separated list of remote IDs.
schema:
$ref: '#/components/schemas/GetHrisStaffingEntitiesParameterRemoteIds'
- name: model_types
in: query
required: false
description: "Filter by a comma-separated list of `JOB`, `POSITION`, `REQUISITION` \n\nLeave this blank to get results matching all values."
schema:
$ref: '#/components/schemas/GetHrisStaffingEntitiesParameterModelTypes'
- name: statuses
in: query
required: false
description: "Filter by a comma-separated list of `OPEN_LIMITED`, `OPEN_UNLIMITED`, `PENDING`, `FROZEN`, `FILLED`, `CLOSED` \n\nLeave this blank to get results matching all values."
schema:
$ref: '#/components/schemas/GetHrisStaffingEntitiesParameterStatuses'
responses:
'200':
description: GET /hris/staffing-entities Positive response
content:
application/json:
schema:
$ref: '#/components/schemas/GetHrisStaffingEntitiesPositiveResponse'
examples:
example1:
value:
status: success
data:
next: eyJwYWdlIjoxMiwibm90ZSI6InRoaXMgaXMganVzdCBhbiBleGFtcGxlIGFuZCBub3QgcmVwcmVzZW50YXRpdmUgZm9yIGEgcmVhbCBjdXJzb3IhIn0=
results:
- id: 26vafvWSRmbhNcxJYqjCzuJg
remote_id: '32'
name: Software Engineer
model_type: POSITION
description: Description of the position
status: OPEN_UNLIMITED
employment_types:
- remote_label: Vollzeit
unified_type: FULL_TIME
number_of_openings: null
parent_id: KGaJ5XaVPob8mYVfD49W4DGB
remote_url: https://example.com/position/32
remote_created_at: '2022-08-07T14:01:29.196Z'
remote_updated_at: '2022-08-07T14:01:29.196Z'
changed_at: '2022-08-07T14:01:29.196Z'
remote_deleted_at: null
custom_fields: {}
integration_fields: []
remote_data: null
locations:
- id: 22st2Ji8XpncEYEak8mvQgQF
remote_id: '1348'
name: Kombo HQ
type: OFFICE
legal_entities:
- id: 4B9bKBpX5tnwjiG93TAqF7ci
remote_id: '49'
name: ACME Inc.
groups:
- id: 4B9bKBpX5tnwjiG93TAqF7ci
remote_id: '49'
name: Customer Success
type: TEAM
default:
$ref: '#/components/responses/ErrorResponseHRIS'
components:
schemas:
GetHrisTimeOffBalancesParameterIgnoreUnsupportedFilters:
type: string
enum:
- 'true'
- 'false'
default: 'false'
description: When set to `true`, filters targeting fields not supported by this integration will be ignored instead of filtering out all results.
PostHrisAbsencesPositiveResponse:
type: object
properties:
status:
type: string
const: success
data:
type: object
properties:
id:
type: string
description: The globally unique ID of this object generated by Kombo. We recommend using this as a stable primary key for syncing.
remote_id:
type:
- string
- 'null'
description: The raw ID of the object in the remote system. We don't recommend using this as a primary key on your side as it might sometimes be compromised of multiple identifiers if a system doesn't provide a clear primary key.
employee_id:
type: string
description: The Kombo ID of the employee to which the absence belongs to. The ID can be used to retrieve the employee from the `get employees` endpoint.
approver_id:
type:
- string
- 'null'
description: '**(⚠️ Deprecated - We won''t increase coverage for this feature)** The Kombo ID of the employee who is responsible for approving this absence.'
start_date:
description: The date this absence starts in the `yyyy-MM-dd` format.
type: 'null'
end_date:
description: The date this absence ends in the `yyyy-MM-dd` format.
type: 'null'
start_half_day:
type:
- boolean
- 'null'
description: '`true` if the absence starts in the middle of the day, `false` if not, and `null` if the absence type doesn''t support half-day absences. For multi-day absences, this only applies to the first day of the absence.'
end_half_day:
type:
- boolean
- 'null'
description: '`true` if the absence ends in the middle of the day, `false` if not, and `null` if the absence type doesn''t support half-day absences. For multi-day absences, this only applies to the last day of the absence.'
start_time:
description: The time at which this absence starts. Follows the format `HH:mm:ss` (e.g., `14:45:15`).
type: 'null'
end_time:
description: The time at which this absence ends. Follows the format `HH:mm:ss` (e.g., `14:45:15`).
type: 'null'
amount:
type:
- number
- 'null'
format: double
minimum: -1.7976931348623157e+308
description: The amount of time this absence takes.
unit:
type:
- string
- 'null'
enum:
- HOURS
- DAYS
description: The unit of time for this absence. Can be `HOURS` or `DAYS`.
status:
anyOf:
- type: string
enum:
- REQUESTED
- APPROVED
- DECLINED
- CANCELLED
- DELETED
- type: string
description: 'If we can''t find a clear mapping: The original string passed through.'
- type: 'null'
description: The absence’s current status. In rare cases where we can’t find a clear mapping, the original string is passed through.
employee_note:
type:
- string
- 'null'
description: A note the employee has added to this absence.
type_id:
type:
- string
- 'null'
description: The Kombo absence type ID of this absence.
remote_created_at:
description: The date and time the object was created in the remote system.
type:
- string
- 'null'
format: date-time
externalDocs:
url: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toISOString
remote_updated_at:
description: A timestamp retrieved from the remote system, describing when the resource was last updated.
type:
- string
- 'null'
format: date-time
externalDocs:
url: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toISOString
changed_at:
description: The timestamp when this specific record was last modified. This field only updates when properties directly on this record change, NOT when related or nested models change. For filtering that considers nested data changes, use the `updated_after` parameter which will return records when either the record itself OR its related models have been updated.
type: string
format: date-time
externalDocs:
url: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toISOString
remote_deleted_at:
description: The date and time the object was deleted in the remote system. Objects are automatically marked as deleted when Kombo can't retrieve them from the remote system anymore. Kombo will also anonymize entries 14 days after they disappear.
type:
- string
- 'null'
format: date-time
externalDocs:
url: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toISOString
remote_data:
type:
- object
- 'null'
additionalProperties: true
description: 'Includes the data fetched from the remote system.
Please be aware that including this in you scope config might violate other
scopes that are set.
Remote data always has the endpoint path that we got the data from as the
top level key. For example, it could look like: `{ "/companies": { ... }}`
This is not available on all plans. Reach out to Kombo if you need it.'
required:
- id
- remote_id
- employee_id
- approver_id
- start_date
- end_date
- start_half_day
- end_half_day
- start_time
- end_time
- amount
- unit
- employee_note
- type_id
- remote_created_at
- remote_updated_at
- changed_at
- remote_deleted_at
- remote_data
examples:
- id: 22st2Ji8XpncEYEak8mvQgQF
remote_id: '1348'
employee_id: JDdUy9kiH5APaGizFrgNmQjM
approver_id: AgXEispYPP1BbToHpqnqcpxy
start_date: '2022-08-04'
end_date: '2022-08-05'
start_half_day: true
end_half_day: false
start_time: '13:15:00'
end_time: '17:00:00'
amount: 2
unit: DAYS
status: APPROVED
employee_note: Visiting my family.
type_id: xzZoKssDaMZAd62kxayzzQvD
remote_created_at: '2022-08-07T14:01:29.196Z'
remote_updated_at: '2022-08-07T14:01:29.196Z'
changed_at: '2022-08-07T14:01:29.196Z'
remote_deleted_at: '2022-08-07T14:01:29.196Z'
remote_data: null
warnings:
type: array
items:
type: object
properties:
message:
type: string
required:
- message
description: These are the interaction warnings that are shown in the dashboard. They are meant to provide debug information to you. We recommend logging them to the console.
required:
- status
- data
- warnings
GetHrisEmployeesParameterCustomFields:
type: string
description: A JSON string with a single key-value pair like {"fieldKey":"fieldValue"} to filter employees by a specific custom field value. Note that the value must be a string, number, boolean or null and the key must be a valid custom field key. Custom fields with a value of type array or object are not supported.
GetHrisEmploymentsParameterIncludeDeleted:
type: string
enum:
- 'true'
- 'false'
default: 'false'
description: By default, deleted entries are not returned. Use the `include_deleted` query param to include deleted entries too.
GetHrisGroupsParameterIds:
type: string
description: Filter by a comma-separated list of IDs such as `222k7eCGyUdgt2JWZDNnkDs3,B5DVmypWENfU6eMe6gYDyJG3`.
GetHrisTimesheetsParameterPageSize:
type: integer
format: int64
minimum: 1
maximum: 250
default: 100
description: The number of results to return per page. Maximum is 250.
GetHrisLegalEntitiesParameterNameContains:
type: string
description: Filter by the `name` field. Can be used to find a legal entity by keywords present in the legal entity name.
GetHrisTeamsParameterCursor:
type: string
description: An optional cursor string used for pagination. This can be retrieved from the `next` property of the previous page response.
PatchHrisEmployeeSkillAssignmentsEmployeeSkillAssignmentIdPositiveResponse:
type: object
properties:
status:
type: string
const: success
data:
type: object
properties:
id:
type: string
description: The unique identifier for the employee skill assignment
employee_id:
type: string
description: The ID of the employee
skill_id:
type: string
description: The ID of the skill
current_level:
type:
- string
- 'null'
description: The current skill level of the employee
required:
- id
- employee_id
- skill_id
- current_level
examples:
- id: 8AvRLpxwY5J6pGxfY6fUD81Z
employee_id: 26vafvWSRmbhNcxJYqjCzuJg
skill_id: 28KMdr68N8kG9EzLwjsN9aoz
current_level: Proficiency Level 1
required:
- status
- data
GetHrisPerformanceReviewCyclesParameterRemoteIds:
type: string
description: Filter by a comma-separated list of remote IDs.
GetHrisPerformanceReviewsParameterTypes:
type: string
description: "Filter by a comma-separated list of `MANAGER`, `DIRECT_REPORT`, `PEER`, `SELF` \n\nLeave this blank to get results matching all values."
GetHrisLegalEntitiesParameterUpdatedAfter:
description: 'Filter the entries based on the modification date in format `YYYY-MM-DDTHH:mm:ss.sssZ`. Returns records where either the record itself **OR** its nested data has been updated since this timestamp, even if the record''s own `changed_at` field remains unchanged.
If you want to track entry deletion, also set the `include_deleted=true` query parameter, because otherwise, deleted entries will be hidden.
For more details, see [Understanding changed_at vs updated_after Behavior](https://docs.kombo.dev/ats/getting-started/fetching-data#understanding-changed_at-vs-updated_after-behavior).
For this endpoint, only changes to the returned record itself are considered.'
type: string
format: date-time
pattern: ^\d{4}-\d{2}-\d{2}(T\d{2}:\d{2}:\d{2}(\.\d+)?)?Z?$
externalDocs:
url: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toISOString
GetHrisLocationsParameterNameContains:
type: string
description: Filter by the `name` field. Can be used to find a location by keywords present in the location name.
GetHrisEmployeeSkillAssignmentsParameterEmployeeIds:
type: string
description: Filter by a comma-separated list of employee IDs.
GetHrisTimesheetsParameterIds:
type: string
description: Filter by a comma-separated list of IDs such as `222k7eCGyUdgt2JWZDNnkDs3,B5DVmypWENfU6eMe6gYDyJG3`.
GetHrisEmployeesParameterPageSize:
type: integer
format: int64
minimum: 1
maximum: 250
default: 100
description: The number of results to return per page. Maximum is 250.
GetHrisEmployeeDocumentCategoriesParameterRemoteIds:
type: string
description: Filter by a comma-separated list of remote IDs.
GetHrisGroupsParameterTypes:
type: string
description: "Filter by a comma-separated list of group types: `DEPARTMENT`, `TEAM`, `COST_CENTER`, or `null` to filter groups without a type. \n\nLeave this blank to get results matching all values."
PatchHrisEmployeesEmployeeIdParameterEmployeeId:
type: string
description: The ID of the employee that should be updated. You can use their Kombo `id` or their ID in the remote system by prefixing it with `remote:` (e.g., `remote:12312`)
GetHrisPerformanceReviewCyclesParameterIds:
type: string
description: Filter by a comma-separated list of IDs such as `222k7eCGyUdgt2JWZDNnkDs3,B5DVmypWENfU6eMe6gYDyJG3`.
GetHrisAbsenceTypesParameterUpdatedAfter:
description: 'Filter the entries based on the modification date in format `YYYY-MM-DDTHH:mm:ss.sssZ`. Returns records where either the record itself **OR** its nested data has been updated since this timestamp, even if the record''s own `changed_at` field remains unchanged.
If you want to track entry deletion, also set the `include_deleted=true` query parameter, because otherwise, deleted entries will be hidden.
For more details, see [Understanding changed_at vs updated_after Behavior](https://docs.kombo.dev/ats/getting-started/fetching-data#understanding-changed_at-vs-updated_after-behavior).
For this endpoint, only changes to the returned record itself are considered.'
type: string
format: date-time
pattern: ^\d{4}-\d{2}-\d{2}(T\d{2}:\d{2}:\d{2}(\.\d+)?)?Z?$
externalDocs:
url: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toISOString
PostHrisEmployeesRequestBody:
type: object
properties:
first_name:
type: string
description: The first name of the employee.
last_name:
type: string
description: The last name of the employee.
work_email:
type: string
description: The email address of the employee to be created. For tools where the personal email address is required, we map this input to the personal email. This is documented on a per-tool basis.
format: email
gender:
type: string
enum:
- MALE
- FEMALE
- NON_BINARY
- NOT_SPECIFIED
description: The gender of the employee.
job_title:
type: string
description: The title of the position this person is working in.
home_address:
type: object
properties:
street_1:
type: string
street_2:
type: string
city:
type: string
state:
type: string
zip_code:
type: string
country:
type: string
pattern: ^[A-Z]{2}$
description: The uppercase two-letter ISO country (e.g., `DE`). For systems that use codes in formats other than `ISO 3166-1 alpha-2`, Kombo transforms the ISO Codes to the appropriate value.
description: The employee's home address.
date_of_birth:
description: The employee's date of birth. This is a plain date (i.e., `yyyy-MM-dd`), all time information is discarded.
type: string
format: date-time
pattern: ^\d{4}-\d{2}-\d{2}(T\d{2}:\d{2}:\d{2}(\.\d+)?)?Z?$
externalDocs:
url: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toISOString
mobile_phone_number:
type: string
home_phone_number:
type: string
nationality:
type: string
pattern: ^[A-Z]{2}$
description: The uppercase two-letter ISO country (e.g., `DE`). For systems that use codes in formats other than `ISO 3166-1 alpha-2`, Kombo transforms the ISO Codes to the appropriate value.
start_date:
description: Start date of the employee. Also considered to be the hire date. This is a plain date (i.e., `yyyy-MM-dd`), all time information is discarded.
type: string
format: date-time
pattern: ^\d{4}-\d{2}-\d{2}(T\d{2}:\d{2}:\d{2}(\.\d+)?)?Z?$
externalDocs:
url: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toISOString
legal_entity_id:
type: string
description: The Kombo ID of the legal entity the employee should be in. This field is required for certain integrations.
location_id:
type: string
description: The Kombo ID of the location the employee should be in. This field is required for certain integrations.
remote_fields:
type: object
properties:
humaans:
type: object
properties:
employee:
type: object
additionalProperties: true
description: Fields that we will pass through to Humaans `Employee` object.
description: Fields specific to Humaans.
hibob:
type: object
properties:
employee:
type: object
additionalProperties: true
description: Fields that we will pass through to HiBob's `Person` endpoint.
description: Fields specific to HiBob.
sympa:
type: object
properties:
GenericNewHire:
type: object
additionalProperties: true
description: Fields that we will pass through to Sympa's `Employee` object.
description: Fields specific to Sympa.
silae:
type: object
properties:
siret:
type: string
description: The siret of the company. The siret can be found as the remote ID of a Silae legal entity.
employee:
type: object
additionalProperties: true
description: Fields that we will passed through to Silae `Employee` object.
employment:
type: object
additionalProperties: true
description: Fields that we will passed through to Silae `Employment` object.
description: Fields specific to Silae.
peoplehr:
type: object
properties:
job_role_effective_date:
description: The effective date of the employee's current role. This is a plain date (i.e., `yyyy-MM-dd`), all time information is discarded.
type: string
format: date-time
pattern: ^\d{4}-\d{2}-\d{2}(T\d{2}:\d{2}:\d{2}(\.\d+)?)?Z?$
externalDocs:
url: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toISOString
department:
type: string
description: Fields specific to PeopleHR.
zohopeople:
type: object
properties:
employee_id:
type: string
minLength: 1
description: A personnel code used to identify individuals working for the business.
description: Fields specific to Zoho People.
workday:
type: object
properties:
job_requisition_id:
type: string
description: Workday job requisition ID of that the employee should be hired for. Provide either this or `position_id`.
position_id:
type: string
description: Workday position ID of that the employee should be hired to. Provide either this or `job_requisition_id`.
ssn:
type: string
description: The social security number of the employee.
bank_account:
type: object
properties:
iban:
type: string
bic:
type: string
bank_name:
type: string
required:
- iban
- bic
- bank_name
description: The employee's bank account.
description: Fields specific to Workday.
deel:
type: object
properties:
candidate_id:
type: string
description: The unique identifier of the candidate in the ATS.
candidate_link:
type: string
description: The link to the candidate's profile in the ATS.
required:
- candidate_id
- candidate_link
description: Fields specific to Deel.
bamboohr:
type: object
properties:
employee:
type: object
additionalProperties: true
description: Fields that we will pass through to BambooHR `Employee` object.
description: Fields specific to BambooHR.
oracle:
type: object
properties:
group_id:
type: string
description: The business unit group ID for which the employee should be created. It can be found as a group with the type `null`.
department_id:
type: string
description: The department group ID for which the employee should be created. It can be found as a group with the type `DEPARTMENT`.
required:
- group_id
- department_id
description: Fields specific to Oracle HCM.
adpworkforcenow:
type: object
properties:
onboarding_template_code:
type: string
description: The onboarding template to be used for the created employee. View the possible values in the Kombo dashboard by clicking on the ADP Workforce Now integration and viewing the field report in the settings tab.
applicant_payroll_profile_group_code:
type: string
description: The payroll group code (a.k.a. "Company Code") to be used for the created employee. View the possible values in the Kombo dashboard by clicking on the ADP Workforce Now integration and viewing the field report in the settings tab.
manager_position_id:
type: string
description: The position ID of the employment of the manager. Available as mappable custom field on employments. Not the employment ID or employment remote ID!
home_organization_unit_code:
type: string
description: The remote id of a Kombo group with type "DEPARTMENT" that will be used as the employee's home department.
personal_email:
type: string
description: The personal email for the employee.
required:
- onboarding_template_code
- applicant_payroll_profile_group_code
description: Fields specific to ADP Workforce Now.
azuread:
type: object
properties:
password:
type: string
description: Azure / entra requires a password to be set when creating a user. The user has to use the password on his initial sign-in and will be forced to change the password once signed in.
required:
- password
description: Fields specific to Azure AD/Entra ID.
paycor:
type: object
properties:
paygroupRemoteId:
type: string
description: '[REQUIRED] Remote ID of a Kombo Group with type "COST_CENTER"'
departmentRemoteId:
type: string
description: '[REQUIRED] Remote ID of a Kombo Group with type "DEPARTMENT"'
required:
- paygroupRemoteId
- departmentRemoteId
description: Fields specific to Paycor.
planday:
type: object
properties:
department_remote_id:
type: string
description: The remote ID of the department for which the employee should be assigned to. It can be found as a group with the type `DEPARTMENT`.
required:
- department_remote_id
description: Fields specific to PlanDay.
dayforce:
type: object
properties:
social_security_number:
type: string
description: The social security number of the employee
pay_type:
type: string
description: The pay type of the employee. This needs to be a valid XRefCode from Dayforce.
pay_class:
type: string
description: The pay class of the employee. This needs to be a valid XRefCode from Dayforce.
pay_group:
type: string
description: The pay group of the employee. This needs to be a valid XRefCode from Dayforce.
base_rate:
type: number
format: double
minimum: -1.7976931348623157e+308
description: The base rate of the employee.
role:
type: string
description: The role of the employee. This needs to be a valid XRefCode from Dayforce.
location:
type: string
description: The location of the employee. This needs to be a valid XRefCode from Dayforce.
department:
type: string
description: The department of the employee. This needs to be a valid XRefCode from Dayforce.
job:
type: string
description: The job of the employee. This needs to be a valid XRefCode from Dayforce.
country:
type: string
description: The country of the employee. This needs to be a valid XRefCode from Dayforce.
required:
- social_security_number
- pay_type
- pay_class
- pay_group
- base_rate
- role
- location
- department
- job
- country
description: Fields specific to Dayforce.
description: Additional fields that we will pass through to specific HRIS systems.
required:
- first_name
- last_name
GetHrisLocationsPositiveResponse:
type: object
properties:
status:
type: string
const: success
data:
type: object
properties:
next:
type:
- string
- 'null'
description: Cursor string that can be passed to the `cursor` query parameter to get the next page. If this is `null`, then there are no more pages.
results:
type: array
items:
type: object
properties:
id:
type: string
description: The globally unique ID of this object generated by Kombo. We recommend using this as a stable primary key for syncing.
remote_id:
type:
- string
- 'null'
description: The raw ID of the object in the remote system. We don't recommend using this as a primary key on your side as it might sometimes be compromised of multiple identifiers if a system doesn't provide a clear primary key.
name:
type:
- string
- 'null'
description: The work location’s name
address:
type:
- object
- 'null'
properties:
city:
type:
- string
- 'null'
country:
type:
- string
- 'null'
description: Contains the ISO2 country code if possible. If not, it contains the original value.
raw:
type:
- string
- 'null'
description: If we have address data, this is filled with the raw address string.
state:
type:
- string
- 'null'
street_1:
type:
- string
- 'null'
description: If we can parse the address data, this field contains the first part of the street information.
street_2:
type:
- string
- 'null'
zip_code:
type:
- string
- 'null'
description: The work location’s address
type:
type:
- string
- 'null'
description: The work location’s type. A freeform string.
changed_at:
description: The timestamp when this specific record was last modified. This field only updates when properties directly on this record change, NOT when related or nested models change. For filtering that considers nested data changes, use the `updated_after` parameter which will return records when either the record itself OR its related models have been updated.
type: string
format: date-time
externalDocs:
url: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toISOString
remote_deleted_at:
description: The date and time the object was deleted in the remote system. Objects are automatically marked as deleted when Kombo can't retrieve them from the remote system anymore. Kombo will also anonymize entries 14 days after they disappear.
type:
- string
- 'null'
format: date-time
externalDocs:
url: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toISOString
remote_data:
type:
- object
- 'null'
additionalProperties: true
description: 'Includes the data fetched from the remote system.
Please be aware that including this in you scope config might violate other
scopes that are set.
Remote data always has the endpoint path that we got the data from as the
top level key. For example, it could look like: `{ "/companies": { ... }}`
This is not available on all plans. Reach out to Kombo if you need it.'
required:
- id
- remote_id
- name
- type
- changed_at
- remote_deleted_at
- remote_data
examples:
- id: 22st2Ji8XpncEYEak8mvQgQF
remote_id: '1348'
name: Kombo HQ
address:
city: Berlin
country: DE
raw: 'Sonnenallee 63
12045 Berlin, Berlin
Germany'
state: Berlin
street_1: Sonnenallee 63
street_2: null
zip_code: '12045'
type: OFFICE
changed_at: '2022-08-07T14:01:29.196Z'
remote_deleted_at: '2022-08-07T14:01:29.196Z'
remote_data: null
required:
- next
- results
examples:
- next: eyJwYWdlIjoxMiwibm90ZSI6InRoaXMgaXMganVzdCBhbiBleGFtcGxlIGFuZCBub3QgcmVwcmVzZW50YXRpdmUgZm9yIGEgcmVhbCBjdXJzb3IhIn0=
results:
- id: 22st2Ji8XpncEYEak8mvQgQF
remote_id: '1348'
name: Kombo HQ
address:
city: Berlin
country: DE
raw: 'Sonnenallee 63
12045 Berlin, Berlin
Germany'
state: Berlin
street_1: Sonnenallee 63
street_2: null
zip_code: '12045'
type: OFFICE
changed_at: '2022-08-07T14:01:29.196Z'
remote_deleted_at: '2022-08-07T14:01:29.196Z'
remote_data: null
required:
- status
- data
GetHrisSkillsParameterRemoteIds:
type: string
description: Filter by a comma-separated list of remote IDs.
GetHrisEmployeeSkillAssignmentsPositiveResponse:
type: object
properties:
status:
type: string
const: success
data:
type: object
properties:
next:
type:
- string
- 'null'
description: Cursor string that can be passed to the `cursor` query parameter to get the next page. If this is `null`, then there are no more pages.
results:
type: array
items:
type: object
properties:
id:
type: string
description: The unique identifier for the employee skill assignment
employee_id:
type: string
description: The ID of the employee
skill_id:
type: string
description: The ID of the skill
current_level:
type:
- string
- 'null'
description: The current skill level of the employee
required:
- id
- employee_id
- skill_id
- current_level
examples:
- id: 8AvRLpxwY5J6pGxfY6fUD81Z
employee_id: 26vafvWSRmbhNcxJYqjCzuJg
skill_id: 28KMdr68N8kG9EzLwjsN9aoz
current_level: Proficiency Level 1
required:
- next
- results
examples:
- next: eyJwYWdlIjoxMiwibm90ZSI6InRoaXMgaXMganVzdCBhbiBleGFtcGxlIGFuZCBub3QgcmVwcmVzZW50YXRpdmUgZm9yIGEgcmVhbCBjdXJzb3IhIn0=
results:
- id: 8AvRLpxwY5J6pGxfY6fUD81Z
employee_id: 26vafvWSRmbhNcxJYqjCzuJg
skill_id: 28KMdr68N8kG9EzLwjsN9aoz
current_level: Proficiency Level 1
required:
- status
- data
DeleteHrisEmployeeSkillAssignmentsEmployeeSkillAssignmentIdPositiveResponse:
type: object
properties:
status:
type: string
const: success
data:
type: object
properties:
id:
type: string
description: The unique identifier for the employee skill assignment
employee_id:
type: string
description: The ID of the employee
skill_id:
type: string
description: The ID of the skill
current_level:
type:
- string
- 'null'
description: The current skill level of the employee
required:
- id
- employee_id
- skill_id
- current_level
examples:
- id: 8AvRLpxwY5J6pGxfY6fUD81Z
employee_id: 26vafvWSRmbhNcxJYqjCzuJg
skill_id: 28KMdr68N8kG9EzLwjsN9aoz
current_level: Proficiency Level 1
required:
- status
- data
DeleteHrisSkillsSkillIdRequestBody:
type: object
properties: {}
GetHrisEmployeesParameterEmploymentStatus:
type: string
enum:
- ACTIVE
- PENDING
- INACTIVE
- LEAVE
description: '**(⚠️ Deprecated - Use the `employment_statuses` filter instead.)** Filter by the `employment_status` field.'
GetHrisLegalEntitiesParameterIgnoreUnsupportedFilters:
type: string
enum:
- 'true'
- 'false'
default: 'false'
description: When set to `true`, filters targeting fields not supported by this integration will be ignored instead of filtering out all results.
GetHrisAbsencesParameterIgnoreUnsupportedFilters:
type: string
enum:
- 'true'
- 'false'
default: 'false'
description: When set to `true`, filters targeting fields not supported by this integration will be ignored instead of filtering out all results.
PostHrisAbsencesRequestBody:
type: object
properties:
employee_id:
type: string
description: The ID of the employee in Kombo or their ID in the remote system by prefixing it with `remote:` (e.g., `remote:12312`)
absence_type_id:
type: string
description: The ID of the absence type in Kombo (not its `remote_id`).
status:
type: string
enum:
- REQUESTED
- APPROVED
description: The state that the absence should be created in. Some tools may approve absences automatically if they were created for an absence type that does not require approval.
default: REQUESTED
start_date:
description: The date that the absence starts. This is a plain date (i.e., `yyyy-MM-dd`), with all time information discarded.
type: string
format: date-time
pattern: ^\d{4}-\d{2}-\d{2}(T\d{2}:\d{2}:\d{2}(\.\d+)?)?Z?$
externalDocs:
url: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toISOString
end_date:
description: When the absence ends.The date that the absence ends. This is a plain date (i.e., `yyyy-MM-dd`), with all time information discarded.
type: string
format: date-time
pattern: ^\d{4}-\d{2}-\d{2}(T\d{2}:\d{2}:\d{2}(\.\d+)?)?Z?$
externalDocs:
url: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toISOString
start_half_day:
type: boolean
description: '`true` if the absence should start in the middle of the day.'
default: false
end_half_day:
type: boolean
description: '`true` if the absence should end in the middle of the day.'
default: false
amount:
type: number
format: double
minimum: 0
description: The amount of time of the absence. Specifying this also requires specifying `unit`. This is supported by very few tools.
unit:
type: string
enum:
- HOURS
- DAYS
description: The time unit of the `amount` value. Specifying this also requires specifying `amount`.
employee_note:
type:
- string
- 'null'
description: A note describing the reason for this absence.
start_time:
type: string
pattern: ^(?:2[0-3]|[01]?\d):[0-5]?\d(:[0-5]?\d)?$
description: The time of when the absence begins. Follows the format `HH:mm` or `HH:mm:ss` (e.g., `14:45:15`). If `start_time` is specified, `end_time` has to be specified as well.
end_time:
type: string
pattern: ^(?:2[0-3]|[01]?\d):[0-5]?\d(:[0-5]?\d)?$
description: The time of when the absence ends. Follows the format `HH:mm` or `HH:mm:ss` (e.g., `14:45:15`). If `end_time` is specified, `start_time` has to be specified as well.
remote_fields:
type: object
properties:
a3innuvanomina:
type: object
properties:
benefit_type_id:
type: string
enum:
- Delegated Payment
- No Right to Benefit
- Direct payment
description: 'Required for illness absences. Benefit type: Delegated Payment, No Right to Benefit, or Direct payment.'
description: Fields specific to A3 Innuva Nómina.
adpworkforcenow:
type: object
properties:
employment_id:
type: string
description: '[Required] The employment ID of the employee that the absence will be added to.'
paid_leave:
type: boolean
description: Whether the absence is paid or not.
description: Fields specific to ADP Workforce Now.
description: Additional fields that we will pass through to specific HRIS systems.
required:
- employee_id
- absence_type_id
- start_date
- end_date
- employee_note
GetHrisPerformanceReviewCyclesParameterIncludeDeleted:
type: string
enum:
- 'true'
- 'false'
default: 'false'
description: By default, deleted entries are not returned. Use the `include_deleted` query param to include deleted entries too.
GetHrisAbsenceTypesParameterIncludeDeleted:
type: string
enum:
- 'true'
- 'false'
default: 'false'
description: By default, deleted entries are not returned. Use the `include_deleted` query param to include deleted entries too.
GetHrisTeamsParameterRemoteIds:
type: string
description: Filter by a comma-separated list of remote IDs.
Schema3:
type: object
additionalProperties:
$ref: '#/components/schemas/Schema4'
GetHrisGroupsParameterIncludeDeleted:
type: string
enum:
- 'true'
- 'false'
default: 'false'
description: By default, deleted entries are not returned. Use the `include_deleted` query param to include deleted entries too.
GetHrisLocationsParameterIds:
type: string
description: Filter by a comma-separated list of IDs such as `222k7eCGyUdgt2JWZDNnkDs3,B5DVmypWENfU6eMe6gYDyJG3`.
GetHrisEmployeeDocumentCategoriesParameterIncludeDeleted:
type: string
enum:
- 'true'
- 'false'
default: 'false'
description: By default, deleted entries are not returned. Use the `include_deleted` query param to include deleted entries too.
GetHrisGroupsParameterCursor:
type: string
description: An optional cursor string used for pagination. This can be retrieved from the `next` property of the previous page response.
GetHrisTeamsParameterIds:
type: string
description: Filter by a comma-separated list of IDs such as `222k7eCGyUdgt2JWZDNnkDs3,B5DVmypWENfU6eMe6gYDyJG3`.
GetHrisAbsenceTypesParameterIgnoreUnsupportedFilters:
type: string
enum:
- 'true'
- 'false'
default: 'false'
description: When set to `true`, filters targeting fields not supported by this integration will be ignored instead of filtering out all results.
DeleteHrisEmployeeSkillAssignmentsEmployeeSkillAssignmentIdParameterEmployeeSkillAssignmentId:
type: string
description: The ID of the employee skill assignment
GetHrisEmployeesParameterCursor:
type: string
description: An optional cursor string used for pagination. This can be retrieved from the `next` property of the previous page response.
GetHrisPerformanceReviewsParameterReviewCycleIds:
type: string
description: Filter by a comma-separated list of review cycle IDs.
GetHrisAbsencesParameterTimeFrom:
description: '**(⚠️ Deprecated - Use the `date_from` filter instead.)** Filter for absences that either start after or start before and end after a certain time.'
type: string
format: date-time
pattern: ^\d{4}-\d{2}-\d{2}(T\d{2}:\d{2}:\d{2}(\.\d+)?)?Z?$
externalDocs:
url: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toISOString
GetHrisLegalEntitiesParameterIds:
type: string
description: Filter by a comma-separated list of IDs such as `222k7eCGyUdgt2JWZDNnkDs3,B5DVmypWENfU6eMe6gYDyJG3`.
PostHrisProvisioningGroupsGroupIdSetupLinksParameterGroupId:
type: string
description: ID of the provisioning group (currently only `default` is allowed).
GetHrisPerformanceReviewsParameterIgnoreUnsupportedFilters:
type: string
enum:
- 'true'
- 'false'
default: 'false'
description: When set to `true`, filters targeting fields not supported by this integration will be ignored instead of filtering out all results.
GetHrisTimesheetsParameterEndedBefore:
description: Return timesheets whose end time is on or before the given timestamp.
type: string
format: date-time
pattern: ^\d{4}-\d{2}-\d{2}(T\d{2}:\d{2}:\d{2}(\.\d+)?)?Z?$
externalDocs:
url: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toISOString
GetHrisAbsencesParameterTypeIds:
type: string
description: Filter by a comma-separated list of absence type IDs.
PostHrisProvisioningGroupsGroupIdDiffPositiveResponse:
type: object
properties:
status:
type: string
const: success
data:
type: object
properties:
users:
type: object
properties:
to_provision:
type: array
items:
type: object
properties:
email:
type:
- string
- 'null'
pattern: ^(?!\.)(?!.*\.\.)([\w'+-.]*)[\w+-]@([\da-z][\da-z-]*\.)+[a-z]{2,}$
description: The email address of the user.
employee:
type: object
properties:
id:
type: string
remote_id:
type:
- string
- 'null'
first_name:
type:
- string
- 'null'
last_name:
type:
- string
- 'null'
groups:
type: array
items:
type: object
properties:
id:
type: string
remote_id:
type:
- string
- 'null'
name:
type:
- string
- 'null'
required:
- id
- remote_id
- name
avatar:
type:
- string
- 'null'
work_location_id:
type:
- string
- 'null'
legal_entity_id:
type:
- string
- 'null'
description: The field of the underlying employee (which ones are included depends on the `employee_fields` array you supplied).
required:
- email
- employee
description: The users we've found in the HR systems who match the provisioning filters but haven't been provisioned in your system yet.
to_deprovision:
type: array
items:
type: object
properties:
origin_id:
type: string
description: _Your_ ID for this user (that you submitted through `origin_id`).
email:
type: string
description: The email address of the user.
format: email
required:
- origin_id
- email
description: The users who've been provisioned in your system but couldn't be found in the HR system or don't match the provisioning filters.
already_provisioned:
type: array
items:
type: object
properties:
origin_id:
type: string
description: _Your_ ID for this user (that you submitted through `origin_id`).
email:
type: string
description: The email address of the user.
format: email
employee:
type: object
properties:
id:
type: string
remote_id:
type:
- string
- 'null'
first_name:
type:
- string
- 'null'
last_name:
type:
- string
- 'null'
groups:
type: array
items:
type: object
properties:
id:
type: string
remote_id:
type:
- string
- 'null'
name:
type:
- string
- 'null'
required:
- id
- remote_id
- name
avatar:
type:
- string
- 'null'
work_location_id:
type:
- string
- 'null'
legal_entity_id:
type:
- string
- 'null'
description: The field of the underlying employee (which ones are included depends on the `employee_fields` array you supplied).
required:
- origin_id
- email
- employee
description: The users who are in the HR system and match the provisioning filters but have already been provisioned in your system.
required:
- to_provision
- to_deprovision
- already_provisioned
required:
- users
description: The users to provision, deprovision, and optionally update.
required:
- status
- data
GetHrisAbsencesParameterPageSize:
type: integer
format: int64
minimum: 1
maximum: 250
default: 100
description: The number of results to return per page. Maximum is 250.
GetHrisTimesheetsParameterIgnoreUnsupportedFilters:
type: string
enum:
- 'true'
- 'false'
default: 'false'
description: When set to `true`, filters targeting fields not supported by this integration will be ignored instead of filtering out all results.
GetHrisEmployeeDocumentCategoriesParameterPageSize:
type: integer
format: int64
minimum: 1
maximum: 250
default: 100
description: The number of results to return per page. Maximum is 250.
GetHrisLegalEntitiesParameterIncludeDeleted:
type: string
enum:
- 'true'
- 'false'
default: 'false'
description: By default, deleted entries are not returned. Use the `include_deleted` query param to include deleted entries too.
PatchHrisEmployeesEmployeeIdPositiveResponse:
type: object
properties:
status:
type: string
const: success
data:
type: object
properties:
id:
type: string
description: The globally unique ID of this object generated by Kombo. We recommend using this as a stable primary key for syncing.
remote_id:
type: string
description: The raw ID of the object in the remote system. We don't recommend using this as a primary key on your side as it might sometimes be compromised of multiple identifiers if a system doesn't provide a clear primary key.
employee_number:
type:
- string
- 'null'
description: The employee’s organization-internal employee number.
first_name:
type:
- string
- 'null'
description: The employee’s first name.
last_name:
type:
- string
- 'null'
description: The employee’s last name.
nationality:
type:
- string
- 'null'
description: The employee’s nationality.
display_full_name:
type:
- string
- 'null'
description: The employee’s full name, including any middle names. Not all HR systems provide an explicit display name, so we recommend falling back to `first_name` and `last_name`.
job_title:
type:
- string
- 'null'
description: The employee’s job title.
work_email:
type:
- string
- 'null'
pattern: ^(?!\.)(?!.*\.\.)([\w'+-.]*)[\w+-]@([\da-z][\da-z-]*\.)+[a-z]{2,}$
description: The employee’s work email address. If the email address is invalid, we will set this to `null`.
personal_email:
type:
- string
- 'null'
pattern: ^(?!\.)(?!.*\.\.)([\w'+-.]*)[\w+-]@([\da-z][\da-z-]*\.)+[a-z]{2,}$
description: The employee’s personal email address. If the email address is invalid, we will set this to `null`.
mobile_phone_number:
type:
- string
- 'null'
description: The employee’s mobile phone number.
ssn:
type:
- string
- 'null'
description: The employee’s social security number
tax_id:
type:
- string
- 'null'
description: The employee’s tax ID.
gender:
anyOf:
- type: string
enum:
- MALE
- FEMALE
- NON_BINARY
- NOT_SPECIFIED
- type: string
description: 'If we can''t find a clear mapping: The original string passed through.'
- type: 'null'
description: The employee’s gender.
ethnicity:
anyOf:
- type: string
enum:
- WHITE
- ASIAN
- HISPANIC_LATINO
- HAWAIIAN
- NATIVE_AMERICAN
- BLACK_AFRICAN_AMERICAN
- MULTIPLE_ETHNICITIES
- DECLINE_TO_SPECIFY
- type: string
description: 'If we can''t find a clear mapping: The original string passed through.'
- type: 'null'
description: The employee’s ethnicity. In rare cases where we can’t find a clear mapping, the original string is passed through.
marital_status:
anyOf:
- type: string
enum:
- SINGLE
- MARRIED
- DOMESTIC_PARTNERSHIP
- WIDOWED
- DIVORCED
- SEPARATED
- NOT_MARRIED
- type: string
description: 'If we can''t find a clear mapping: The original string passed through.'
- type: 'null'
description: The employee’s current marital status. In rare cases where we can’t find a clear mapping, the original string is passed through.
employment_status:
anyOf:
- type: string
enum:
- ACTIVE
- PENDING
- INACTIVE
- LEAVE
- type: string
description: 'If we can''t find a clear mapping: The original string passed through.'
- type: 'null'
description: "The employee’s current employment status:\n\n- `ACTIVE`: the employee is **actively employed**\n- `PENDING`: the employee is **not actively employed yet** (but they signed their contract or are part of an onboarding process)\n- `INACTIVE`: the employee is **not actively employed** anymore\n- `LEAVE`: the employee is still employed but **currently on leave** (note that not all HR systems support this status — use our absences API for detailed information)\n\n In rare cases where we can’t find a clear mapping, the original string is passed through."
employment_type:
anyOf:
- type: string
enum:
- FULL_TIME
- PART_TIME
- CONTRACT
- INTERNSHIP
- FREELANCE
- WORKING_STUDENT
- APPRENTICESHIP
- TRAINING
- type: string
description: 'If we can''t find a clear mapping: The original string passed through.'
- type: 'null'
description: "The employee’s current employment type:\n\n- `FULL_TIME`: the employee is actively employed\n- `PART_TIME`: the employee is working only part of the usual working hours\n- `CONTRACT`: the employee is working temporarily under a contract\n- `INTERNSHIP`: the employee is working as an intern\n- `FREELANCE`: the employee is working as a freelancer\n- `WORKING_STUDENT`: the employee is working as a working student\n- `APPRENTICESHIP`: the employee is working in an apprenticeship\n- `TRAINING`: the employee is working in a training program\n\n In rare cases where we can’t find a clear mapping, the original string is passed through."
weekly_hours:
type:
- number
- 'null'
format: double
minimum: -1.7976931348623157e+308
description: The employee’s weekly working hours.
avatar:
type:
- string
- 'null'
description: URL to the employee’s avatar. This is either the raw URL from the HR system (in cases where it can be requested without short-lived authentication) _or_ a URL to a temporarily cached version of the file hosted by Kombo. Kombo will delete the cached file after its deletion in the source system.
work_location_id:
type:
- string
- 'null'
description: The Kombo ID of the employee’s work location. The ID can be used to retrieve the work location from the `get work locations` endpoint.
legal_entity_id:
type:
- string
- 'null'
description: The Kombo ID of the employee’s legal entity. The ID can be used to retrieve the legal entity from the `get legal entities` endpoint.
manager_id:
type:
- string
- 'null'
description: The Kombo ID of the employee’s manager. The ID can be used to retrieve the manager from the `get employees` endpoint.
home_address:
type:
- object
- 'null'
properties:
city:
type:
- string
- 'null'
country:
type:
- string
- 'null'
description: Contains the ISO2 country code if possible. If not, it contains the original value.
raw:
type:
- string
- 'null'
description: If we have address data, this is filled with the raw address string.
state:
type:
- string
- 'null'
street_1:
type:
- string
- 'null'
description: If we can parse the address data, this field contains the first part of the street information.
street_2:
type:
- string
- 'null'
zip_code:
type:
- string
- 'null'
description: The employee’s home address.
bank_accounts:
type:
- array
- 'null'
items:
type: object
properties:
iban:
type:
- string
- 'null'
description: The internationally unique IBAN identifying this account. If we detect a valid IBAN from the account number and this field would otherwise be empty, we will automatically populate this field.
bic:
type:
- string
- 'null'
description: The internationally unique BIC/SWIFT code identifying the bank behind this account. If we detect a valid BIC from the domestic bank routing number and this field would otherwise be empty, we will automatically populate this field.
account_number:
type:
- string
- 'null'
description: The bank-specific account number. Some companies use the account number field to put the IBAN here.
holder_name:
type:
- string
- 'null'
description: The name of the holder of this account.
bank_name:
type:
- string
- 'null'
description: The name of the bank behind this account.
domestic_bank_routing:
type:
- object
- 'null'
properties:
number:
type: string
description: Bank routing number (e.g. DE Bankleitzahl, GB Sort Code, US ABA routing number, AU BSB code). This field is not formatted and therefore might contain delimiters (eg. 01-23-45).
type:
type:
- string
- 'null'
enum:
- GB_SORT_CODE
- DE_BANKLEITZAHL
- US_ABA_ROUTING_TRANSIT_NUMBER
- CA_ROUTING_NUMBER
- AU_BSB_CODE
- FR_RIB
description: Enum of the routing type, prefixed with the iso-3166-1-alpha-2 banks origin country. If there is uncertainty about the type, it will be set to null.
required:
- number
- type
description: The employee’s bank accounts.
date_of_birth:
description: The employee’s date of birth.
type:
- string
- 'null'
format: date-time
externalDocs:
url: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toISOString
start_date:
description: The date the employee started working for the organization.
type:
- string
- 'null'
format: date-time
externalDocs:
url: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toISOString
termination_date:
description: The date when the employment ends. Can be in the past or future.
type:
- string
- 'null'
format: date-time
externalDocs:
url: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toISOString
remote_created_at:
description: The date and time the object was created in the remote system.
type:
- string
- 'null'
format: date-time
externalDocs:
url: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toISOString
changed_at:
description: The timestamp when this specific record was last modified. This field only updates when properties directly on this record change, NOT when related or nested models change. For filtering that considers nested data changes, use the `updated_after` parameter which will return records when either the record itself OR its related models have been updated.
type: string
format: date-time
externalDocs:
url: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toISOString
remote_deleted_at:
description: The date and time the object was deleted in the remote system. Objects are automatically marked as deleted when Kombo can't retrieve them from the remote system anymore. Kombo will also anonymize entries 14 days after they disappear.
type:
- string
- 'null'
format: date-time
externalDocs:
url: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toISOString
remote_data:
type:
- object
- 'null'
additionalProperties: true
description: 'Includes the data fetched from the remote system.
Please be aware that including this in you scope config might violate other
scopes that are set.
Remote data always has the endpoint path that we got the data from as the
top level key. For example, it could look like: `{ "/companies": { ... }}`
This is not available on all plans. Reach out to Kombo if you need it.'
required:
- id
- remote_id
- employee_number
- first_name
- last_name
- nationality
- display_full_name
- job_title
- mobile_phone_number
- ssn
- tax_id
- weekly_hours
- avatar
- work_location_id
- legal_entity_id
- manager_id
- date_of_birth
- start_date
- termination_date
- remote_created_at
- changed_at
- remote_deleted_at
- remote_data
examples:
- id: 26vafvWSRmbhNcxJYqjCzuJg
remote_id: '32'
employee_number: '3243422'
first_name: John
last_name: Doe
nationality: French
display_full_name: John Doe
job_title: Integrations Team Lead
work_email: john.doe@acme.com
personal_email: john@doe.me
mobile_phone_number: 801-555-4687
ssn: 555-32-6395
tax_id: 12 345 678 901
gender: MALE
ethnicity: BLACK_AFRICAN_AMERICAN
marital_status: MARRIED
employment_status: INACTIVE
employment_type: FULL_TIME
weekly_hours: 40
avatar: https://resources.bamboohr.com/images/photo_person_150x150.png
work_location_id: 7E2gyuv6TmvtByzBxW9Sxt53
legal_entity_id: xB32bied320csBSsl3XWdlw33
manager_id: 9pf2pxBB8VX8EQMC9aipW2Bo
home_address:
city: Berlin
country: DE
raw: 'Sonnenallee 63
12045 Berlin
Germany'
state: Berlin
street_1: Sonnenallee 63
street_2: null
zip_code: '12045'
bank_accounts:
- account_number: '1234567890'
bank_name: Commerzbank
bic: COBADEFFXXX
domestic_bank_routing:
number: '34567890'
type: DE_BANKLEITZAHL
holder_name: John Doe
iban: DE12345678901234567890
date_of_birth: '1986-01-01T00:00:00.000Z'
start_date: '2020-04-07T00:00:00.000Z'
termination_date: '2022-05-20T00:00:00.000Z'
remote_created_at: '2020-04-07T12:32:01.000Z'
changed_at: '2022-08-07T14:01:29.196Z'
remote_deleted_at: null
remote_data: null
warnings:
type: array
items:
type: object
properties:
message:
type: string
required:
- message
description: These are the interaction warnings that are shown in the dashboard. They are meant to provide debug information to you. We recommend logging them to the console.
required:
- status
- data
- warnings
GetHrisTimeOffBalancesParameterIncludeDeleted:
type: string
enum:
- 'true'
- 'false'
default: 'false'
description: By default, deleted entries are not returned. Use the `include_deleted` query param to include deleted entries too.
GetHrisLocationsParameterIgnoreUnsupportedFilters:
type: string
enum:
- 'true'
- 'false'
default: 'false'
description: When set to `true`, filters targeting fields not supported by this integration will be ignored instead of filtering out all results.
GetHrisEmployeesParameterEmploymentStatuses:
type: string
description: "Filter by a comma-separated list of `ACTIVE`, `PENDING`, `INACTIVE`, `LEAVE` \n* `ACTIVE`: the employee is **actively employed** \n* `PENDING`: the employee is **not actively employed yet** (but they signed their contract or are part of an onboarding process) \n* `INACTIVE`: a full-time employee is no longer employed, or, for a contract worker when their contract runs out \n* `LEAVE`: the employee is still employed but **currently on leave** (note that not all HR systems support this status — use our absences API for detailed information) \n \n\nLeave this blank to get results matching all values."
GetHrisAbsencesParameterEmployeeId:
type: string
description: Filter by a specific employee using their ID.
GetHrisGroupsParameterIgnoreUnsupportedFilters:
type: string
enum:
- 'true'
- 'false'
default: 'false'
description: When set to `true`, filters targeting fields not supported by this integration will be ignored instead of filtering out all results.
GetHrisEmployeeDocumentCategoriesParameterUpdatedAfter:
description: 'Filter the entries based on the modification date in format `YYYY-MM-DDTHH:mm:ss.sssZ`. Returns records where either the record itself **OR** its nested data has been updated since this timestamp, even if the record''s own `changed_at` field remains unchanged.
If you want to track entry deletion, also set the `include_deleted=true` query parameter, because otherwise, deleted entries will be hidden.
For more details, see [Understanding changed_at vs updated_after Behavior](https://docs.kombo.dev/ats/getting-started/fetching-data#understanding-changed_at-vs-updated_after-behavior).
For this endpoint, only changes to the returned record itself are considered.'
type: string
format: date-time
pattern: ^\d{4}-\d{2}-\d{2}(T\d{2}:\d{2}:\d{2}(\.\d+)?)?Z?$
externalDocs:
url: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toISOString
Schema6:
type: array
items:
$ref: '#/components/schemas/Schema4'
GetHrisTeamsParameterUpdatedAfter:
description: 'Filter the entries based on the modification date in format `YYYY-MM-DDTHH:mm:ss.sssZ`. Returns records where either the record itself **OR** its nested data has been updated since this timestamp, even if the record''s own `changed_at` field remains unchanged.
If you want to track entry deletion, also set the `include_deleted=true` query parameter, because otherwise, deleted entries will be hidden.
For more details, see [Understanding changed_at vs updated_after Behavior](https://docs.kombo.dev/ats/getting-started/fetching-data#understanding-changed_at-vs-updated_after-behavior).
For this endpoint, only changes to the returned record itself are considered.'
type: string
format: date-time
pattern: ^\d{4}-\d{2}-\d{2}(T\d{2}:\d{2}:\d{2}(\.\d+)?)?Z?$
externalDocs:
url: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toISOString
GetHrisStaffingEntitiesParameterIncludeDeleted:
type: string
enum:
- 'true'
- 'false'
default: 'false'
description: By default, deleted entries are not returned. Use the `include_deleted` query param to include deleted entries too.
GetHrisPerformanceReviewCyclesPositiveResponse:
type: object
properties:
status:
type: string
const: success
data:
type: object
properties:
next:
type:
- string
- 'null'
description: Cursor string that can be passed to the `cursor` query parameter to get the next page. If this is `null`, then there are no more pages.
results:
type: array
items:
type: object
properties:
id:
type: string
description: The globally unique ID of this object generated by Kombo. We recommend using this as a stable primary key for syncing.
remote_id:
type: string
description: The raw ID of the object in the remote system. We don't recommend using this as a primary key on your side as it might sometimes be compromised of multiple identifiers if a system doesn't provide a clear primary key.
name:
type:
- string
- 'null'
description: The name of the performance review cycle.
review_period_start_date:
description: The start date of the review period of the performance review cycle. It is the start date of the evaluation timeframe and the earliest date reviews can be submitted for this cycle.
type:
- string
- 'null'
format: date-time
externalDocs:
url: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toISOString
changed_at:
description: The timestamp when this specific record was last modified. This field only updates when properties directly on this record change, NOT when related or nested models change. For filtering that considers nested data changes, use the `updated_after` parameter which will return records when either the record itself OR its related models have been updated.
type: string
format: date-time
externalDocs:
url: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toISOString
remote_deleted_at:
description: The date and time the object was deleted in the remote system. Objects are automatically marked as deleted when Kombo can't retrieve them from the remote system anymore. Kombo will also anonymize entries 14 days after they disappear.
type:
- string
- 'null'
format: date-time
externalDocs:
url: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toISOString
remote_data:
type:
- object
- 'null'
additionalProperties: true
description: 'Includes the data fetched from the remote system.
Please be aware that including this in you scope config might violate other
scopes that are set.
Remote data always has the endpoint path that we got the data from as the
top level key. For example, it could look like: `{ "/companies": { ... }}`
This is not available on all plans. Reach out to Kombo if you need it.'
required:
- id
- remote_id
- name
- review_period_start_date
- changed_at
- remote_deleted_at
- remote_data
examples:
- id: 4B9bKBpX5tnwjiG93TAqF7ci
remote_id: '1'
name: 2025 Annual Performance Review Cycle
review_period_start_date: '2025-01-01T00:00:00.000Z'
changed_at: '2022-08-07T14:01:29.196Z'
remote_deleted_at: null
remote_data: null
required:
- next
- results
examples:
- next: eyJwYWdlIjoxMiwibm90ZSI6InRoaXMgaXMganVzdCBhbiBleGFtcGxlIGFuZCBub3QgcmVwcmVzZW50YXRpdmUgZm9yIGEgcmVhbCBjdXJzb3IhIn0=
results:
- id: 4B9bKBpX5tnwjiG93TAqF7ci
remote_id: '1'
name: 2025 Annual Performance Review Cycle
review_period_start_date: '2025-01-01T00:00:00.000Z'
changed_at: '2022-08-07T14:01:29.196Z'
remote_deleted_at: null
remote_data: null
required:
- status
- data
GetHrisPerformanceReviewsParameterPageSize:
type: integer
format: int64
minimum: 1
maximum: 250
default: 100
description: The number of results to return per page. Maximum is 250.
GetHrisTimesheetsParameterEmployeeId:
type: string
description: Returns timesheets for a specific employee.
GetHrisEmploymentsParameterRemoteIds:
type: string
description: Filter by a comma-separated list of remote IDs.
GetHrisTimesheetsParameterRemoteIds:
type: string
description: Filter by a comma-separated list of remote IDs.
PostHrisProvisioningGroupsGroupIdSetupLinksPositiveResponse:
type: object
properties:
status:
type: string
const: success
data:
type: object
properties:
url:
type: string
format: uri
description: The setup link URL to pass to the Kombo Connect SDK.
expires_at:
description: When this link expires.
type: string
format: date-time
externalDocs:
url: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toISOString
required:
- url
- expires_at
examples:
- url: https://connect.kombo.dev/v1/setup?token=GinuMJCpUQ9xdpLmD2ocw8qdiK3qiPCizDCv754EXri2vAX4
expires_at: '2023-10-11T12:00:00.000Z'
required:
- status
- data
DeleteHrisAbsencesAbsenceIdParameterAbsenceId:
type: string
description: The Kombo ID of the absence
PatchHrisEmployeesEmployeeIdRequestBody:
type: object
properties:
first_name:
type: string
description: The first name of the employee.
last_name:
type: string
description: The last name of the employee.
work_email:
type: string
description: The email address of the employee to be updated. For tools where the personal email address is required, we map this input to the personal email. This is documented on a per-tool basis.
format: email
gender:
type: string
enum:
- MALE
- FEMALE
- NON_BINARY
- NOT_SPECIFIED
description: The gender of the employee.
job_title:
type: string
description: The title of the position this person is working in.
home_address:
type: object
properties:
street_1:
type: string
street_2:
type: string
city:
type: string
state:
type: string
zip_code:
type: string
country:
type: string
pattern: ^[A-Z]{2}$
description: The uppercase two-letter ISO country (e.g., `DE`). For systems that use codes in formats other than `ISO 3166-1 alpha-2`, Kombo transforms the ISO Codes to the appropriate value.
description: The employee's home address.
date_of_birth:
description: The employee's date of birth. This is a plain date (i.e., `yyyy-MM-dd`), all time information is discarded.
type: string
format: date-time
pattern: ^\d{4}-\d{2}-\d{2}(T\d{2}:\d{2}:\d{2}(\.\d+)?)?Z?$
externalDocs:
url: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toISOString
mobile_phone_number:
type: string
home_phone_number:
type: string
nationality:
type: string
pattern: ^[A-Z]{2}$
description: The uppercase two-letter ISO country (e.g., `DE`). For systems that use codes in formats other than `ISO 3166-1 alpha-2`, Kombo transforms the ISO Codes to the appropriate value.
start_date:
description: Start date of the employee. Also considered to be the hire date. This is a plain date (i.e., `yyyy-MM-dd`), all time information is discarded.
type: string
format: date-time
pattern: ^\d{4}-\d{2}-\d{2}(T\d{2}:\d{2}:\d{2}(\.\d+)?)?Z?$
externalDocs:
url: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toISOString
legal_entity_id:
type: string
description: The Kombo ID of the legal entity the employee should be in. This field is required for certain integrations.
location_id:
type: string
description: The Kombo ID of the location the employee should be in. This field is required for certain integrations.
remote_fields:
type: object
properties:
humaans:
type: object
properties:
employee:
type: object
additionalProperties: true
description: Fields that we will pass through to Humaans `Employee` object.
description: Fields specific to Humaans.
hibob:
type: object
properties:
employee:
type: object
additionalProperties: true
description: Fields that we will pass through to HiBob's `Person` endpoint.
description: Fields specific to HiBob.
sympa:
type: object
properties:
GenericNewHire:
type: object
additionalProperties: true
description: Fields that we will pass through to Sympa's `Employee` object.
description: Fields specific to Sympa.
silae:
type: object
properties:
siret:
type: string
description: The siret of the company. The siret can be found as the remote ID of a Silae legal entity.
employee:
type: object
additionalProperties: true
description: Fields that we will passed through to Silae `Employee` object.
employment:
type: object
additionalProperties: true
description: Fields that we will passed through to Silae `Employment` object.
description: Fields specific to Silae.
peoplehr:
type: object
properties:
job_role_effective_date:
description: The effective date of the employee's current role. This is a plain date (i.e., `yyyy-MM-dd`), all time information is discarded.
type: string
format: date-time
pattern: ^\d{4}-\d{2}-\d{2}(T\d{2}:\d{2}:\d{2}(\.\d+)?)?Z?$
externalDocs:
url: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toISOString
department:
type: string
description: Fields specific to PeopleHR.
zohopeople:
type: object
properties:
employee_id:
type: string
minLength: 1
description: A personnel code used to identify individuals working for the business.
description: Fields specific to Zoho People.
workday:
type: object
properties:
job_requisition_id:
type: string
description: Workday job requisition ID of that the employee should be hired for. Provide either this or `position_id`.
position_id:
type: string
description: Workday position ID of that the employee should be hired to. Provide either this or `job_requisition_id`.
ssn:
type: string
description: The social security number of the employee.
bank_account:
type: object
properties:
iban:
type: string
bic:
type: string
bank_name:
type: string
required:
- iban
- bic
- bank_name
description: The employee's bank account.
description: Fields specific to Workday.
deel:
type: object
properties:
candidate_id:
type: string
description: The unique identifier of the candidate in the ATS.
candidate_link:
type: string
description: The link to the candidate's profile in the ATS.
required:
- candidate_id
- candidate_link
description: Fields specific to Deel.
bamboohr:
type: object
properties:
employee:
type: object
additionalProperties: true
description: Fields that we will pass through to BambooHR `Employee` object.
description: Fields specific to BambooHR.
oracle:
type: object
properties:
group_id:
type: string
description: The business unit group ID for which the employee should be created. It can be found as a group with the type `null`.
department_id:
type: string
description: The department group ID for which the employee should be created. It can be found as a group with the type `DEPARTMENT`.
required:
- group_id
- department_id
description: Fields specific to Oracle HCM.
adpworkforcenow:
type: object
properties:
onboarding_template_code:
type: string
description: The onboarding template to be used for the created employee. View the possible values in the Kombo dashboard by clicking on the ADP Workforce Now integration and viewing the field report in the settings tab.
applicant_payroll_profile_group_code:
type: string
description: The payroll group code (a.k.a. "Company Code") to be used for the created employee. View the possible values in the Kombo dashboard by clicking on the ADP Workforce Now integration and viewing the field report in the settings tab.
manager_position_id:
type: string
description: The position ID of the employment of the manager. Available as mappable custom field on employments. Not the employment ID or employment remote ID!
home_organization_unit_code:
type: string
description: The remote id of a Kombo group with type "DEPARTMENT" that will be used as the employee's home department.
personal_email:
type: string
description: The personal email for the employee.
required:
- onboarding_template_code
- applicant_payroll_profile_group_code
description: Fields specific to ADP Workforce Now.
azuread:
type: object
properties:
password:
type: string
description: Azure / entra requires a password to be set when creating a user. The user has to use the password on his initial sign-in and will be forced to change the password once signed in.
required:
- password
description: Fields specific to Azure AD/Entra ID.
paycor:
type: object
properties:
paygroupRemoteId:
type: string
description: '[REQUIRED] Remote ID of a Kombo Group with type "COST_CENTER"'
departmentRemoteId:
type: string
description: '[REQUIRED] Remote ID of a Kombo Group with type "DEPARTMENT"'
required:
- paygroupRemoteId
- departmentRemoteId
description: Fields specific to Paycor.
planday:
type: object
properties:
department_remote_id:
type: string
description: The remote ID of the department for which the employee should be assigned to. It can be found as a group with the type `DEPARTMENT`.
required:
- department_remote_id
description: Fields specific to PlanDay.
dayforce:
type: object
properties:
social_security_number:
type: string
description: The social security number of the employee
pay_type:
type: string
description: The pay type of the employee. This needs to be a valid XRefCode from Dayforce.
pay_class:
type: string
description: The pay class of the employee. This needs to be a valid XRefCode from Dayforce.
pay_group:
type: string
description: The pay group of the employee. This needs to be a valid XRefCode from Dayforce.
base_rate:
type: number
format: double
minimum: -1.7976931348623157e+308
description: The base rate of the employee.
role:
type: string
description: The role of the employee. This needs to be a valid XRefCode from Dayforce.
location:
type: string
description: The location of the employee. This needs to be a valid XRefCode from Dayforce.
department:
type: string
description: The department of the employee. This needs to be a valid XRefCode from Dayforce.
job:
type: string
description: The job of the employee. This needs to be a valid XRefCode from Dayforce.
country:
type: string
description: The country of the employee. This needs to be a valid XRefCode from Dayforce.
required:
- social_security_number
- pay_type
- pay_class
- pay_group
- base_rate
- role
- location
- department
- job
- country
description: Fields specific to Dayforce.
description: Additional fields that we will pass through to specific HRIS systems.
ssn:
type: string
description: The social security number of the employee.
marital_status:
type: string
enum:
- SINGLE
- MARRIED
- DOMESTIC_PARTNERSHIP
- WIDOWED
- DIVORCED
- SEPARATED
- NOT_MARRIED
description: The marital status of an employee.
termination_date:
description: The date on which the employment ends. This date can be in the past or in the future. This is a plain date (i.e., `yyyy-MM-dd`), all time information is discarded.
type: string
format: date-time
pattern: ^\d{4}-\d{2}-\d{2}(T\d{2}:\d{2}:\d{2}(\.\d+)?)?Z?$
externalDocs:
url: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toISOString
tax_id:
type: string
description: Tax ID of the employee. Most countries have different formats of that. In Germany, this is the `Steuer ID` and in the US it's the `TIN`.
required:
- work_email
GetHrisStaffingEntitiesParameterModelTypes:
type: string
description: "Filter by a comma-separated list of `JOB`, `POSITION`, `REQUISITION` \n\nLeave this blank to get results matching all values."
GetHrisTimeOffBalancesParameterIds:
type: string
description: Filter by a comma-separated list of IDs such as `222k7eCGyUdgt2JWZDNnkDs3,B5DVmypWENfU6eMe6gYDyJG3`.
GetHrisStaffingEntitiesParameterIds:
type: string
description: Filter by a comma-separated list of IDs such as `222k7eCGyUdgt2JWZDNnkDs3,B5DVmypWENfU6eMe6gYDyJG3`.
GetHrisTimeOffBalancesParameterEmployeeId:
type: string
description: Filter by a specific employee using their ID.
GetHrisEmploymentsParameterCursor:
type: string
description: An optional cursor string used for pagination. This can be retrieved from the `next` property of the previous page response.
GetHrisAbsenceTypesParameterRemoteIds:
type: string
description: Filter by a comma-separated list of remote IDs.
GetHrisLegalEntitiesPositiveResponse:
type: object
properties:
status:
type: string
const: success
data:
type: object
properties:
next:
type:
- string
- 'null'
description: Cursor string that can be passed to the `cursor` query parameter to get the next page. If this is `null`, then there are no more pages.
results:
type: array
items:
type: object
properties:
id:
type: string
description: The globally unique ID of this object generated by Kombo. We recommend using this as a stable primary key for syncing.
remote_id:
type:
- string
- 'null'
description: The raw ID of the object in the remote system. We don't recommend using this as a primary key on your side as it might sometimes be compromised of multiple identifiers if a system doesn't provide a clear primary key.
name:
type:
- string
- 'null'
description: The legal entity’s name.
address:
type:
- object
- 'null'
properties:
city:
type:
- string
- 'null'
country:
type:
- string
- 'null'
description: Contains the ISO2 country code if possible. If not, it contains the original value.
raw:
type:
- string
- 'null'
description: If we have address data, this is filled with the raw address string.
state:
type:
- string
- 'null'
street_1:
type:
- string
- 'null'
description: If we can parse the address data, this field contains the first part of the street information.
street_2:
type:
- string
- 'null'
zip_code:
type:
- string
- 'null'
description: The legal entity’s address.
changed_at:
description: The timestamp when this specific record was last modified. This field only updates when properties directly on this record change, NOT when related or nested models change. For filtering that considers nested data changes, use the `updated_after` parameter which will return records when either the record itself OR its related models have been updated.
type: string
format: date-time
externalDocs:
url: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toISOString
remote_deleted_at:
description: The date and time the object was deleted in the remote system. Objects are automatically marked as deleted when Kombo can't retrieve them from the remote system anymore. Kombo will also anonymize entries 14 days after they disappear.
type:
- string
- 'null'
format: date-time
externalDocs:
url: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toISOString
remote_data:
type:
- object
- 'null'
additionalProperties: true
description: 'Includes the data fetched from the remote system.
Please be aware that including this in you scope config might violate other
scopes that are set.
Remote data always has the endpoint path that we got the data from as the
top level key. For example, it could look like: `{ "/companies": { ... }}`
This is not available on all plans. Reach out to Kombo if you need it.'
required:
- id
- remote_id
- name
- changed_at
- remote_deleted_at
- remote_data
examples:
- id: 4B9bKBpX5tnwjiG93TAqF7ci
remote_id: '49'
name: ACME Inc.
address:
city: Berlin
country: DE
raw: 'Sonnenallee 63
12045 Berlin, Berlin
Germany'
state: Berlin
street_1: Sonnenallee 63
street_2: null
zip_code: '12045'
changed_at: '2022-08-07T14:01:29.196Z'
remote_deleted_at: null
remote_data: null
required:
- next
- results
examples:
- next: eyJwYWdlIjoxMiwibm90ZSI6InRoaXMgaXMganVzdCBhbiBleGFtcGxlIGFuZCBub3QgcmVwcmVzZW50YXRpdmUgZm9yIGEgcmVhbCBjdXJzb3IhIn0=
results:
- id: 4B9bKBpX5tnwjiG93TAqF7ci
remote_id: '49'
name: ACME Inc.
address:
city: Berlin
country: DE
raw: 'Sonnenallee 63
12045 Berlin, Berlin
Germany'
state: Berlin
street_1: Sonnenallee 63
street_2: null
zip_code: '12045'
changed_at: '2022-08-07T14:01:29.196Z'
remote_deleted_at: null
remote_data: null
required:
- status
- data
GetHrisTimesheetsParameterCursor:
type: string
description: An optional cursor string used for pagination. This can be retrieved from the `next` property of the previous page response.
GetHrisEmployeeDocumentCategoriesParameterCursor:
type: string
description: An optional cursor string used for pagination. This can be retrieved from the `next` property of the previous page response.
GetHrisEmploymentsParameterPageSize:
type: integer
format: int64
minimum: 1
maximum: 250
default: 100
description: The number of results to return per page. Maximum is 250.
GetHrisLocationsParameterRemoteIds:
type: string
description: Filter by a comma-separated list of remote IDs.
GetHrisEmployeeSkillAssignmentsParameterRemoteIds:
type: string
description: Filter by a comma-separated list of remote IDs.
GetHrisTimeOffBalancesParameterCursor:
type: string
description: An optional cursor string used for pagination. This can be retrieved from the `next` property of the previous page response.
GetHrisEmployeeDocumentCategoriesPositiveResponse:
type: object
properties:
status:
type: string
const: success
data:
type: object
properties:
next:
type:
- string
- 'null'
description: Cursor string that can be passed to the `cursor` query parameter to get the next page. If this is `null`, then there are no more pages.
results:
type: array
items:
type: object
properties:
id:
type: string
description: The globally unique ID of this object generated by Kombo. We recommend using this as a stable primary key for syncing.
remote_id:
type:
- string
- 'null'
description: The raw ID of the object in the remote system. We don't recommend using this as a primary key on your side as it might sometimes be compromised of multiple identifiers if a system doesn't provide a clear primary key.
name:
type:
- string
- 'null'
description: The employee document category name. For example, "Employment contract".
remote_data:
type:
- object
- 'null'
additionalProperties: true
description: 'Includes the data fetched from the remote system.
Please be aware that including this in you scope config might violate other
scopes that are set.
Remote data always has the endpoint path that we got the data from as the
top level key. For example, it could look like: `{ "/companies": { ... }}`
This is not available on all plans. Reach out to Kombo if you need it.'
changed_at:
description: The timestamp when this specific record was last modified. This field only updates when properties directly on this record change, NOT when related or nested models change. For filtering that considers nested data changes, use the `updated_after` parameter which will return records when either the record itself OR its related models have been updated.
type: string
format: date-time
externalDocs:
url: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toISOString
remote_deleted_at:
description: The date and time the object was deleted in the remote system. Objects are automatically marked as deleted when Kombo can't retrieve them from the remote system anymore. Kombo will also anonymize entries 14 days after they disappear.
type:
- string
- 'null'
format: date-time
externalDocs:
url: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toISOString
required:
- id
- remote_id
- name
- remote_data
- changed_at
- remote_deleted_at
examples:
- id: 26vafvWSRmbhNcxJYqjCzuJg
remote_id: '32'
name: Employment contract
remote_data: null
changed_at: '2022-08-07T14:01:29.196Z'
remote_deleted_at: null
required:
- next
- results
examples:
- next: eyJwYWdlIjoxMiwibm90ZSI6InRoaXMgaXMganVzdCBhbiBleGFtcGxlIGFuZCBub3QgcmVwcmVzZW50YXRpdmUgZm9yIGEgcmVhbCBjdXJzb3IhIn0=
results:
- id: 26vafvWSRmbhNcxJYqjCzuJg
remote_id: '32'
name: Employment contract
remote_data: null
changed_at: '2022-08-07T14:01:29.196Z'
remote_deleted_at: null
required:
- status
- data
GetHrisPerformanceReviewCyclesParameterCursor:
type: string
description: An optional cursor string used for pagination. This can be retrieved from the `next` property of the previous page response.
GetHrisGroupsParameterPageSize:
type: integer
format: int64
minimum: 1
maximum: 250
default: 100
description: The number of results to return per page. Maximum is 250.
GetHrisTimesheetsPositiveResponse:
type: object
properties:
status:
type: string
const: success
data:
type: object
properties:
next:
type:
- string
- 'null'
description: Cursor string that can be passed to the `cursor` query parameter to get the next page. If this is `null`, then there are no more pages.
results:
type: array
items:
type: object
properties:
id:
type: string
description: The globally unique ID of this object generated by Kombo. We recommend using this as a stable primary key for syncing.
remote_id:
type:
- string
- 'null'
description: The raw ID of the object in the remote system. We don't recommend using this as a primary key on your side as it might sometimes be compromised of multiple identifiers if a system doesn't provide a clear primary key.
employee_id:
type: string
description: The Kombo ID of the employee to which the timesheet belongs. The ID can be used to retrieve the employee from the `get employees` endpoint.
started_at:
description: Start time of the shift, converted into UTC time zone.
type:
- string
- 'null'
format: date-time
externalDocs:
url: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toISOString
ended_at:
description: End time of the shift, converted into UTC time zone.
type:
- string
- 'null'
format: date-time
externalDocs:
url: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toISOString
timezone:
type:
- string
- 'null'
pattern: ^[+-](?:0\d|1[0-4]):[0-5]\d$
description: The ISO 8601 numeric UTC offset of the timesheet location in the format ±HH:MM (e.g., "+02:00", "-05:30"). If null, the original offset information was not available. You can use this to display the right timezone for the timesheet in the UI.
payable_hours:
type:
- number
- 'null'
format: double
minimum: -1.7976931348623157e+308
description: Payable hours including grace periods - only if available in the HRIS. Won't be calculated through Kombo.
unpaid_break_minutes:
type:
- number
- 'null'
format: double
minimum: -1.7976931348623157e+308
description: Unpaid break in minutes - will be from the HRIS or calculated by Kombo if we have concrete unpaid break times.
breaks:
type:
- array
- 'null'
items:
type: object
properties:
ended_at:
anyOf:
- description: YYYY-MM-DDTHH:mm:ss.sssZ
type: string
format: date-time
externalDocs:
url: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toISOString
- type: string
format: date-time
pattern: ^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(\.\d+)?Z$
description: End time of the break.
paid:
type: boolean
description: Whether the break is paid or unpaid.
started_at:
anyOf:
- description: YYYY-MM-DDTHH:mm:ss.sssZ
type: string
format: date-time
externalDocs:
url: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toISOString
- type: string
format: date-time
pattern: ^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(\.\d+)?Z$
description: Start time of the break.
required:
- ended_at
- paid
- started_at
description: Concrete times of the breaks.
approval_status:
type:
- string
- 'null'
description: Approval status of the shift. Can be PENDING, APPROVED, REJECTED, or null.
approved_at:
description: The time when the shift was approved.
type:
- string
- 'null'
format: date-time
externalDocs:
url: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toISOString
comment:
type:
- string
- 'null'
description: Comment on the shift.
custom_fields:
type:
- object
- 'null'
additionalProperties: true
description: A key-value store of fields not covered by the schema. [Read more](/custom-fields)
integration_fields:
type: array
items:
type: object
properties:
id:
type: string
description: The globally unique ID of this object.
key:
type: string
description: The key of the field in the remote system.
type:
type: string
enum:
- DEFAULT
- CUSTOM
description: '- `DEFAULT`: static fields in the remote system.
- `CUSTOM`: fields that are created/editable by the user.'
value:
type: 'null'
description: The field's value.
label:
type:
- string
- 'null'
description: The label of the field. (not always available)
required:
- id
- key
- type
- label
description: An array of selected passthrough integration fields. [Read more](/integration-fields)
examples:
- - id: 5NVFhMpB9Ah6by44tzNjZLyE
key: firstName
type: DEFAULT
value: Frank
label: First Name
- id: 8nuajYpoRd5GnxEQaaWKUDYQ
key: customTshirtSize
type: CUSTOM
value: XL
label: T-Shirt Size
changed_at:
description: The timestamp when this specific record was last modified. This field only updates when properties directly on this record change, NOT when related or nested models change. For filtering that considers nested data changes, use the `updated_after` parameter which will return records when either the record itself OR its related models have been updated.
type: string
format: date-time
externalDocs:
url: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toISOString
remote_deleted_at:
description: The date and time the object was deleted in the remote system. Objects are automatically marked as deleted when Kombo can't retrieve them from the remote system anymore. Kombo will also anonymize entries 14 days after they disappear.
type:
- string
- 'null'
format: date-time
externalDocs:
url: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toISOString
remote_data:
type:
- object
- 'null'
additionalProperties: true
description: 'Includes the data fetched from the remote system.
Please be aware that including this in you scope config might violate other
scopes that are set.
Remote data always has the endpoint path that we got the data from as the
top level key. For example, it could look like: `{ "/companies": { ... }}`
This is not available on all plans. Reach out to Kombo if you need it.'
required:
- id
- remote_id
- employee_id
- started_at
- ended_at
- timezone
- payable_hours
- unpaid_break_minutes
- approval_status
- approved_at
- comment
- custom_fields
- integration_fields
- changed_at
- remote_deleted_at
- remote_data
examples:
- id: C1BB1C36-FE1D-4185-AAB8-0716D8FBA017
remote_id: '446655440000'
employee_id: 289AD550-8659-4305-92B2-6EAA006AAB17
started_at: '2025-04-16T09:02:00.000Z'
ended_at: '2025-04-16T16:59:00.000Z'
timezone: -04:00
payable_hours: 8
unpaid_break_minutes: 30
breaks:
- ended_at: '2025-04-16T12:30:00.000Z'
paid: false
started_at: '2025-04-16T12:00:00.000Z'
approval_status: APPROVED
approved_at: '2025-04-16T17:05:31.000Z'
comment: Sprint planning & code review
custom_fields: {}
integration_fields: []
changed_at: '2022-08-07T14:01:29.196Z'
remote_deleted_at: null
remote_data: {}
required:
- next
- results
examples:
- next: eyJwYWdlIjoxMiwibm90ZSI6InRoaXMgaXMganVzdCBhbiBleGFtcGxlIGFuZCBub3QgcmVwcmVzZW50YXRpdmUgZm9yIGEgcmVhbCBjdXJzb3IhIn0=
results:
- id: C1BB1C36-FE1D-4185-AAB8-0716D8FBA017
remote_id: '446655440000'
employee_id: 289AD550-8659-4305-92B2-6EAA006AAB17
started_at: '2025-04-16T09:02:00.000Z'
ended_at: '2025-04-16T16:59:00.000Z'
timezone: -04:00
payable_hours: 8
unpaid_break_minutes: 30
breaks:
- ended_at: '2025-04-16T12:30:00.000Z'
paid: false
started_at: '2025-04-16T12:00:00.000Z'
approval_status: APPROVED
approved_at: '2025-04-16T17:05:31.000Z'
comment: Sprint planning & code review
custom_fields: {}
integration_fields: []
changed_at: '2022-08-07T14:01:29.196Z'
remote_deleted_at: null
remote_data: {}
required:
- status
- data
PatchHrisSkillsSkillIdPositiveResponse:
type: object
properties:
status:
type: string
const: success
data:
type: object
properties:
id:
type: string
description: The globally unique ID of this object generated by Kombo. We recommend using this as a stable primary key for syncing.
remote_id:
type: string
description: The raw ID of the object in the remote system. We don't recommend using this as a primary key on your side as it might sometimes be compromised of multiple identifiers if a system doesn't provide a clear primary key.
name:
type: string
description: The name of the skill.
description:
type:
- string
- 'null'
description: The description of the skill.
ordered_levels:
type:
- array
- 'null'
items:
type: string
description: List of available skill levels in order of proficiency (e.g., ["Beginner", "Intermediate", "Advanced"]).
changed_at:
description: The timestamp when this specific record was last modified. This field only updates when properties directly on this record change, NOT when related or nested models change. For filtering that considers nested data changes, use the `updated_after` parameter which will return records when either the record itself OR its related models have been updated.
type: string
format: date-time
externalDocs:
url: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toISOString
remote_deleted_at:
description: The date and time the object was deleted in the remote system. Objects are automatically marked as deleted when Kombo can't retrieve them from the remote system anymore. Kombo will also anonymize entries 14 days after they disappear.
type:
- string
- 'null'
format: date-time
externalDocs:
url: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toISOString
remote_data:
type:
- object
- 'null'
additionalProperties: true
description: 'Includes the data fetched from the remote system.
Please be aware that including this in you scope config might violate other
scopes that are set.
Remote data always has the endpoint path that we got the data from as the
top level key. For example, it could look like: `{ "/companies": { ... }}`
This is not available on all plans. Reach out to Kombo if you need it.'
required:
- id
- remote_id
- name
- description
- ordered_levels
- changed_at
- remote_deleted_at
- remote_data
examples:
- id: 28KMdr68N8kG9EzLwjsN9aoz
remote_id: '238476582'
name: TypeScript Programming
description: The ability understand and write TypeScript code.
ordered_levels:
- Proficiency Level 1
- Proficiency Level 2
- Proficiency Level 3
- Proficiency Level 4
- Proficiency Level 5
changed_at: '2022-08-07T14:01:29.196Z'
remote_deleted_at: null
remote_data: null
required:
- status
- data
PostHrisProvisioningGroupsGroupIdDiffParameterGroupId:
type: string
description: ID of the provisioning group (currently only `default` is allowed).
GetHrisEmployeesParameterPersonalEmails:
type: string
description: Filter by a comma-separated list of personal emails. We will only return employees who have _any_ of the personal emails. The format of the emails is case-insensitive.
GetHrisAbsencesPositiveResponse:
type: object
properties:
status:
type: string
const: success
data:
type: object
properties:
next:
type:
- string
- 'null'
description: Cursor string that can be passed to the `cursor` query parameter to get the next page. If this is `null`, then there are no more pages.
results:
type: array
items:
type: object
properties:
id:
type: string
description: The globally unique ID of this object generated by Kombo. We recommend using this as a stable primary key for syncing.
remote_id:
type:
- string
- 'null'
description: The raw ID of the object in the remote system. We don't recommend using this as a primary key on your side as it might sometimes be compromised of multiple identifiers if a system doesn't provide a clear primary key.
employee_id:
type: string
description: The Kombo ID of the employee to which the absence belongs to. The ID can be used to retrieve the employee from the `get employees` endpoint.
approver_id:
type:
- string
- 'null'
description: '**(⚠️ Deprecated - We won''t increase coverage for this feature)** The Kombo ID of the employee who is responsible for approving this absence.'
start_date:
description: The date this absence starts in the `yyyy-MM-dd` format.
type: 'null'
end_date:
description: The date this absence ends in the `yyyy-MM-dd` format.
type: 'null'
start_half_day:
type:
- boolean
- 'null'
description: '`true` if the absence starts in the middle of the day, `false` if not, and `null` if the absence type doesn''t support half-day absences. For multi-day absences, this only applies to the first day of the absence.'
end_half_day:
type:
- boolean
- 'null'
description: '`true` if the absence ends in the middle of the day, `false` if not, and `null` if the absence type doesn''t support half-day absences. For multi-day absences, this only applies to the last day of the absence.'
start_time:
description: The time at which this absence starts. Follows the format `HH:mm:ss` (e.g., `14:45:15`).
type: 'null'
end_time:
description: The time at which this absence ends. Follows the format `HH:mm:ss` (e.g., `14:45:15`).
type: 'null'
amount:
type:
- number
- 'null'
format: double
minimum: -1.7976931348623157e+308
description: The amount of time this absence takes.
unit:
type:
- string
- 'null'
enum:
- HOURS
- DAYS
description: The unit of time for this absence. Can be `HOURS` or `DAYS`.
status:
anyOf:
- type: string
enum:
- REQUESTED
- APPROVED
- DECLINED
- CANCELLED
- DELETED
- type: string
description: 'If we can''t find a clear mapping: The original string passed through.'
- type: 'null'
description: The absence’s current status. In rare cases where we can’t find a clear mapping, the original string is passed through.
employee_note:
type:
- string
- 'null'
description: A note the employee has added to this absence.
type_id:
type:
- string
- 'null'
description: The Kombo absence type ID of this absence.
remote_created_at:
description: The date and time the object was created in the remote system.
type:
- string
- 'null'
format: date-time
externalDocs:
url: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toISOString
remote_updated_at:
description: A timestamp retrieved from the remote system, describing when the resource was last updated.
type:
- string
- 'null'
format: date-time
externalDocs:
url: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toISOString
changed_at:
description: The timestamp when this specific record was last modified. This field only updates when properties directly on this record change, NOT when related or nested models change. For filtering that considers nested data changes, use the `updated_after` parameter which will return records when either the record itself OR its related models have been updated.
type: string
format: date-time
externalDocs:
url: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toISOString
remote_deleted_at:
description: The date and time the object was deleted in the remote system. Objects are automatically marked as deleted when Kombo can't retrieve them from the remote system anymore. Kombo will also anonymize entries 14 days after they disappear.
type:
- string
- 'null'
format: date-time
externalDocs:
url: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toISOString
remote_data:
type:
- object
- 'null'
additionalProperties: true
description: 'Includes the data fetched from the remote system.
Please be aware that including this in you scope config might violate other
scopes that are set.
Remote data always has the endpoint path that we got the data from as the
top level key. For example, it could look like: `{ "/companies": { ... }}`
This is not available on all plans. Reach out to Kombo if you need it.'
type:
type:
- object
- 'null'
properties:
id:
type: string
description: The globally unique ID of this object generated by Kombo. We recommend using this as a stable primary key for syncing.
remote_id:
type: string
description: The raw ID of the object in the remote system. We don't recommend using this as a primary key on your side as it might sometimes be compromised of multiple identifiers if a system doesn't provide a clear primary key.
name:
type:
- string
- 'null'
description: The absence’s name.
unit:
type:
- string
- 'null'
enum:
- HOURS
- DAYS
description: The time-unit of the absence.
half_days_supported:
type:
- boolean
- 'null'
description: Whether the integration supports half-day absences (represented through `start_half_day` and `end_half_day`) for this absence type.
exact_times_supported:
type:
- boolean
- 'null'
description: '`true` if the system supports exact times (absences with a `start_time` and an `end_time`) for this absence, `false` if not.'
remote_data:
type:
- object
- 'null'
additionalProperties: true
description: 'Includes the data fetched from the remote system.
Please be aware that including this in you scope config might violate other
scopes that are set.
Remote data always has the endpoint path that we got the data from as the
top level key. For example, it could look like: `{ "/companies": { ... }}`
This is not available on all plans. Reach out to Kombo if you need it.'
changed_at:
description: The timestamp when this specific record was last modified. This field only updates when properties directly on this record change, NOT when related or nested models change. For filtering that considers nested data changes, use the `updated_after` parameter which will return records when either the record itself OR its related models have been updated.
type: string
format: date-time
externalDocs:
url: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toISOString
remote_deleted_at:
description: The date and time the object was deleted in the remote system. Objects are automatically marked as deleted when Kombo can't retrieve them from the remote system anymore. Kombo will also anonymize entries 14 days after they disappear.
type:
- string
- 'null'
format: date-time
externalDocs:
url: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toISOString
required:
- id
- remote_id
- name
- unit
- half_days_supported
- exact_times_supported
- remote_data
- changed_at
- remote_deleted_at
examples:
- id: xzZoKssDaMZAd62kxayzzQvD
remote_id: '91'
name: Vacation
unit: DAYS
half_days_supported: true
exact_times_supported: false
remote_data: null
changed_at: '2022-08-07T14:01:29.196Z'
remote_deleted_at: null
required:
- id
- remote_id
- employee_id
- approver_id
- start_date
- end_date
- start_half_day
- end_half_day
- start_time
- end_time
- amount
- unit
- employee_note
- type_id
- remote_created_at
- remote_updated_at
- changed_at
- remote_deleted_at
- remote_data
- type
required:
- next
- results
examples:
- next: eyJwYWdlIjoxMiwibm90ZSI6InRoaXMgaXMganVzdCBhbiBleGFtcGxlIGFuZCBub3QgcmVwcmVzZW50YXRpdmUgZm9yIGEgcmVhbCBjdXJzb3IhIn0=
results:
- id: 22st2Ji8XpncEYEak8mvQgQF
remote_id: '1348'
employee_id: JDdUy9kiH5APaGizFrgNmQjM
approver_id: AgXEispYPP1BbToHpqnqcpxy
start_date: '2022-08-04'
end_date: '2022-08-05'
start_half_day: true
end_half_day: false
start_time: '13:15:00'
end_time: '17:00:00'
amount: 2
unit: DAYS
status: APPROVED
employee_note: Visiting my family.
type_id: xzZoKssDaMZAd62kxayzzQvD
remote_created_at: '2022-08-07T14:01:29.196Z'
remote_updated_at: '2022-08-07T14:01:29.196Z'
changed_at: '2022-08-07T14:01:29.196Z'
remote_deleted_at: '2022-08-07T14:01:29.196Z'
remote_data: null
type:
id: xzZoKssDaMZAd62kxayzzQvD
remote_id: '91'
name: Vacation
unit: DAYS
half_days_supported: true
exact_times_supported: false
remote_data: null
changed_at: '2022-08-07T14:01:29.196Z'
remote_deleted_at: null
required:
- status
- data
GetHrisEmployeesParameterGroupIds:
type: string
description: Filter by a comma-separated list of group IDs. We will only return employees that are members of _any_ of the groups.
GetHrisAbsencesParameterIncludeDeleted:
type: string
enum:
- 'true'
- 'false'
default: 'false'
description: By default, deleted entries are not returned. Use the `include_deleted` query param to include deleted entries too.
GetHrisPerformanceReviewCyclesParameterIgnoreUnsupportedFilters:
type: string
enum:
- 'true'
- 'false'
default: 'false'
description: When set to `true`, filters targeting fields not supported by this integration will be ignored instead of filtering out all results.
GetHrisEmployeeSkillAssignmentsParameterSkillIds:
type: string
description: Filter by a comma-separated list of skill IDs.
PostHrisSkillsPositiveResponse:
type: object
properties:
status:
type: string
const: success
data:
type: object
properties:
id:
type: string
description: The globally unique ID of this object generated by Kombo. We recommend using this as a stable primary key for syncing.
remote_id:
type: string
description: The raw ID of the object in the remote system. We don't recommend using this as a primary key on your side as it might sometimes be compromised of multiple identifiers if a system doesn't provide a clear primary key.
name:
type: string
description: The name of the skill.
description:
type:
- string
- 'null'
description: The description of the skill.
ordered_levels:
type:
- array
- 'null'
items:
type: string
description: List of available skill levels in order of proficiency (e.g., ["Beginner", "Intermediate", "Advanced"]).
changed_at:
description: The timestamp when this specific record was last modified. This field only updates when properties directly on this record change, NOT when related or nested models change. For filtering that considers nested data changes, use the `updated_after` parameter which will return records when either the record itself OR its related models have been updated.
type: string
format: date-time
externalDocs:
url: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toISOString
remote_deleted_at:
description: The date and time the object was deleted in the remote system. Objects are automatically marked as deleted when Kombo can't retrieve them from the remote system anymore. Kombo will also anonymize entries 14 days after they disappear.
type:
- string
- 'null'
format: date-time
externalDocs:
url: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toISOString
remote_data:
type:
- object
- 'null'
additionalProperties: true
description: 'Includes the data fetched from the remote system.
Please be aware that including this in you scope config might violate other
scopes that are set.
Remote data always has the endpoint path that we got the data from as the
top level key. For example, it could look like: `{ "/companies": { ... }}`
This is not available on all plans. Reach out to Kombo if you need it.'
required:
- id
- remote_id
- name
- description
- ordered_levels
- changed_at
- remote_deleted_at
- remote_data
examples:
- id: 28KMdr68N8kG9EzLwjsN9aoz
remote_id: '238476582'
name: TypeScript Programming
description: The ability understand and write TypeScript code.
ordered_levels:
- Proficiency Level 1
- Proficiency Level 2
- Proficiency Level 3
- Proficiency Level 4
- Proficiency Level 5
changed_at: '2022-08-07T14:01:29.196Z'
remote_deleted_at: null
remote_data: null
required:
- status
- data
GetHrisLegalEntitiesParameterRemoteIds:
type: string
description: Filter by a comma-separated list of remote IDs.
GetHrisAbsencesParameterTimeUntil:
description: '**(⚠️ Deprecated - Use the `date_until` filter instead.)** Filter for absences that start before a certain time.'
type: string
format: date-time
pattern: ^\d{4}-\d{2}-\d{2}(T\d{2}:\d{2}:\d{2}(\.\d+)?)?Z?$
externalDocs:
url: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toISOString
GetHrisEmployeesParameterIds:
type: string
description: Filter by a comma-separated list of IDs such as `222k7eCGyUdgt2JWZDNnkDs3,B5DVmypWENfU6eMe6gYDyJG3`.
GetHrisEmployeesParameterWorkLocationIds:
type: string
description: Filter by a comma-separated list of work location IDs. We will only return employees who are at _any_ of the work locations.
GetHrisTimeOffBalancesParameterUpdatedAfter:
description: 'Filter the entries based on the modification date in format `YYYY-MM-DDTHH:mm:ss.sssZ`. Returns records where either the record itself **OR** its nested data has been updated since this timestamp, even if the record''s own `changed_at` field remains unchanged.
If you want to track entry deletion, also set the `include_deleted=true` query parameter, because otherwise, deleted entries will be hidden.
For more details, see [Understanding changed_at vs updated_after Behavior](https://docs.kombo.dev/ats/getting-started/fetching-data#understanding-changed_at-vs-updated_after-behavior).
For this endpoint, `updated_after` matches when the returned record changed, or when related data changed as described below.
| Path | Added/Removed | Linked Record |
| --- | --- | --- |
| `type` | n/a | ✓ Yes |
_**Added/Removed**: Whether adding or removing entries from this list triggers an update (n/a for single records). **Linked Record**: Whether changes to the linked record itself trigger an update._'
type: string
format: date-time
pattern: ^\d{4}-\d{2}-\d{2}(T\d{2}:\d{2}:\d{2}(\.\d+)?)?Z?$
externalDocs:
url: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toISOString
GetHrisTeamsPositiveResponse:
type: object
properties:
status:
type: string
const: success
data:
type: object
properties:
next:
type:
- string
- 'null'
description: Cursor string that can be passed to the `cursor` query parameter to get the next page. If this is `null`, then there are no more pages.
results:
type: array
items:
type: object
properties:
id:
type: string
description: The globally unique ID of this object generated by Kombo. We recommend using this as a stable primary key for syncing.
remote_id:
type: string
description: The raw ID of the object in the remote system. We don't recommend using this as a primary key on your side as it might sometimes be compromised of multiple identifiers if a system doesn't provide a clear primary key.
name:
type:
- string
- 'null'
description: The name of the group.
changed_at:
description: The timestamp when this specific record was last modified. This field only updates when properties directly on this record change, NOT when related or nested models change. For filtering that considers nested data changes, use the `updated_after` parameter which will return records when either the record itself OR its related models have been updated.
type: string
format: date-time
externalDocs:
url: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toISOString
remote_deleted_at:
description: The date and time the object was deleted in the remote system. Objects are automatically marked as deleted when Kombo can't retrieve them from the remote system anymore. Kombo will also anonymize entries 14 days after they disappear.
type:
- string
- 'null'
format: date-time
externalDocs:
url: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toISOString
type:
type:
- string
- 'null'
enum:
- DEPARTMENT
- TEAM
- COST_CENTER
description: Type of the group.
parent_id:
type:
- string
- 'null'
description: The Kombo ID of the group’s parent group in the organizational structure. The ID can be used to retrieve the group from the `get groups` endpoint.
remote_data:
type:
- object
- 'null'
additionalProperties: true
description: 'Includes the data fetched from the remote system.
Please be aware that including this in you scope config might violate other
scopes that are set.
Remote data always has the endpoint path that we got the data from as the
top level key. For example, it could look like: `{ "/companies": { ... }}`
This is not available on all plans. Reach out to Kombo if you need it.'
required:
- id
- remote_id
- name
- changed_at
- remote_deleted_at
- type
- parent_id
- remote_data
examples:
- id: 4B9bKBpX5tnwjiG93TAqF7ci
remote_id: '49'
name: Customer Success
changed_at: '2022-08-07T14:01:29.196Z'
remote_deleted_at: null
type: TEAM
parent_id: KGaJ5XaVPob8mYVfD49W4DGB
remote_data: null
required:
- next
- results
examples:
- next: eyJwYWdlIjoxMiwibm90ZSI6InRoaXMgaXMganVzdCBhbiBleGFtcGxlIGFuZCBub3QgcmVwcmVzZW50YXRpdmUgZm9yIGEgcmVhbCBjdXJzb3IhIn0=
results:
- id: 4B9bKBpX5tnwjiG93TAqF7ci
remote_id: '49'
name: Customer Success
changed_at: '2022-08-07T14:01:29.196Z'
remote_deleted_at: null
type: TEAM
parent_id: KGaJ5XaVPob8mYVfD49W4DGB
remote_data: null
required:
- status
- data
PostHrisEmployeesPositiveResponse:
type: object
properties:
status:
type: string
const: success
data:
type: object
properties:
id:
type: string
description: The globally unique ID of this object generated by Kombo. We recommend using this as a stable primary key for syncing.
remote_id:
type: string
description: The raw ID of the object in the remote system. We don't recommend using this as a primary key on your side as it might sometimes be compromised of multiple identifiers if a system doesn't provide a clear primary key.
employee_number:
type:
- string
- 'null'
description: The employee’s organization-internal employee number.
first_name:
type:
- string
- 'null'
description: The employee’s first name.
last_name:
type:
- string
- 'null'
description: The employee’s last name.
nationality:
type:
- string
- 'null'
description: The employee’s nationality.
display_full_name:
type:
- string
- 'null'
description: The employee’s full name, including any middle names. Not all HR systems provide an explicit display name, so we recommend falling back to `first_name` and `last_name`.
job_title:
type:
- string
- 'null'
description: The employee’s job title.
work_email:
type:
- string
- 'null'
pattern: ^(?!\.)(?!.*\.\.)([\w'+-.]*)[\w+-]@([\da-z][\da-z-]*\.)+[a-z]{2,}$
description: The employee’s work email address. If the email address is invalid, we will set this to `null`.
personal_email:
type:
- string
- 'null'
pattern: ^(?!\.)(?!.*\.\.)([\w'+-.]*)[\w+-]@([\da-z][\da-z-]*\.)+[a-z]{2,}$
description: The employee’s personal email address. If the email address is invalid, we will set this to `null`.
mobile_phone_number:
type:
- string
- 'null'
description: The employee’s mobile phone number.
ssn:
type:
- string
- 'null'
description: The employee’s social security number
tax_id:
type:
- string
- 'null'
description: The employee’s tax ID.
gender:
anyOf:
- type: string
enum:
- MALE
- FEMALE
- NON_BINARY
- NOT_SPECIFIED
- type: string
description: 'If we can''t find a clear mapping: The original string passed through.'
- type: 'null'
description: The employee’s gender.
ethnicity:
anyOf:
- type: string
enum:
- WHITE
- ASIAN
- HISPANIC_LATINO
- HAWAIIAN
- NATIVE_AMERICAN
- BLACK_AFRICAN_AMERICAN
- MULTIPLE_ETHNICITIES
- DECLINE_TO_SPECIFY
- type: string
description: 'If we can''t find a clear mapping: The original string passed through.'
- type: 'null'
description: The employee’s ethnicity. In rare cases where we can’t find a clear mapping, the original string is passed through.
marital_status:
anyOf:
- type: string
enum:
- SINGLE
- MARRIED
- DOMESTIC_PARTNERSHIP
- WIDOWED
- DIVORCED
- SEPARATED
- NOT_MARRIED
- type: string
description: 'If we can''t find a clear mapping: The original string passed through.'
- type: 'null'
description: The employee’s current marital status. In rare cases where we can’t find a clear mapping, the original string is passed through.
employment_status:
anyOf:
- type: string
enum:
- ACTIVE
- PENDING
- INACTIVE
- LEAVE
- type: string
description: 'If we can''t find a clear mapping: The original string passed through.'
- type: 'null'
description: "The employee’s current employment status:\n\n- `ACTIVE`: the employee is **actively employed**\n- `PENDING`: the employee is **not actively employed yet** (but they signed their contract or are part of an onboarding process)\n- `INACTIVE`: the employee is **not actively employed** anymore\n- `LEAVE`: the employee is still employed but **currently on leave** (note that not all HR systems support this status — use our absences API for detailed information)\n\n In rare cases where we can’t find a clear mapping, the original string is passed through."
employment_type:
anyOf:
- type: string
enum:
- FULL_TIME
- PART_TIME
- CONTRACT
- INTERNSHIP
- FREELANCE
- WORKING_STUDENT
- APPRENTICESHIP
- TRAINING
- type: string
description: 'If we can''t find a clear mapping: The original string passed through.'
- type: 'null'
description: "The employee’s current employment type:\n\n- `FULL_TIME`: the employee is actively employed\n- `PART_TIME`: the employee is working only part of the usual working hours\n- `CONTRACT`: the employee is working temporarily under a contract\n- `INTERNSHIP`: the employee is working as an intern\n- `FREELANCE`: the employee is working as a freelancer\n- `WORKING_STUDENT`: the employee is working as a working student\n- `APPRENTICESHIP`: the employee is working in an apprenticeship\n- `TRAINING`: the employee is working in a training program\n\n In rare cases where we can’t find a clear mapping, the original string is passed through."
weekly_hours:
type:
- number
- 'null'
format: double
minimum: -1.7976931348623157e+308
description: The employee’s weekly working hours.
avatar:
type:
- string
- 'null'
description: URL to the employee’s avatar. This is either the raw URL from the HR system (in cases where it can be requested without short-lived authentication) _or_ a URL to a temporarily cached version of the file hosted by Kombo. Kombo will delete the cached file after its deletion in the source system.
work_location_id:
type:
- string
- 'null'
description: The Kombo ID of the employee’s work location. The ID can be used to retrieve the work location from the `get work locations` endpoint.
legal_entity_id:
type:
- string
- 'null'
description: The Kombo ID of the employee’s legal entity. The ID can be used to retrieve the legal entity from the `get legal entities` endpoint.
manager_id:
type:
- string
- 'null'
description: The Kombo ID of the employee’s manager. The ID can be used to retrieve the manager from the `get employees` endpoint.
home_address:
type:
- object
- 'null'
properties:
city:
type:
- string
- 'null'
country:
type:
- string
- 'null'
description: Contains the ISO2 country code if possible. If not, it contains the original value.
raw:
type:
- string
- 'null'
description: If we have address data, this is filled with the raw address string.
state:
type:
- string
- 'null'
street_1:
type:
- string
- 'null'
description: If we can parse the address data, this field contains the first part of the street information.
street_2:
type:
- string
- 'null'
zip_code:
type:
- string
- 'null'
description: The employee’s home address.
bank_accounts:
type:
- array
- 'null'
items:
type: object
properties:
iban:
type:
- string
- 'null'
description: The internationally unique IBAN identifying this account. If we detect a valid IBAN from the account number and this field would otherwise be empty, we will automatically populate this field.
bic:
type:
- string
- 'null'
description: The internationally unique BIC/SWIFT code identifying the bank behind this account. If we detect a valid BIC from the domestic bank routing number and this field would otherwise be empty, we will automatically populate this field.
account_number:
type:
- string
- 'null'
description: The bank-specific account number. Some companies use the account number field to put the IBAN here.
holder_name:
type:
- string
- 'null'
description: The name of the holder of this account.
bank_name:
type:
- string
- 'null'
description: The name of the bank behind this account.
domestic_bank_routing:
type:
- object
- 'null'
properties:
number:
type: string
description: Bank routing number (e.g. DE Bankleitzahl, GB Sort Code, US ABA routing number, AU BSB code). This field is not formatted and therefore might contain delimiters (eg. 01-23-45).
type:
type:
- string
- 'null'
enum:
- GB_SORT_CODE
- DE_BANKLEITZAHL
- US_ABA_ROUTING_TRANSIT_NUMBER
- CA_ROUTING_NUMBER
- AU_BSB_CODE
- FR_RIB
description: Enum of the routing type, prefixed with the iso-3166-1-alpha-2 banks origin country. If there is uncertainty about the type, it will be set to null.
required:
- number
- type
description: The employee’s bank accounts.
date_of_birth:
description: The employee’s date of birth.
type:
- string
- 'null'
format: date-time
externalDocs:
url: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toISOString
start_date:
description: The date the employee started working for the organization.
type:
- string
- 'null'
format: date-time
externalDocs:
url: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toISOString
termination_date:
description: The date when the employment ends. Can be in the past or future.
type:
- string
- 'null'
format: date-time
externalDocs:
url: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toISOString
remote_created_at:
description: The date and time the object was created in the remote system.
type:
- string
- 'null'
format: date-time
externalDocs:
url: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toISOString
changed_at:
description: The timestamp when this specific record was last modified. This field only updates when properties directly on this record change, NOT when related or nested models change. For filtering that considers nested data changes, use the `updated_after` parameter which will return records when either the record itself OR its related models have been updated.
type: string
format: date-time
externalDocs:
url: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toISOString
remote_deleted_at:
description: The date and time the object was deleted in the remote system. Objects are automatically marked as deleted when Kombo can't retrieve them from the remote system anymore. Kombo will also anonymize entries 14 days after they disappear.
type:
- string
- 'null'
format: date-time
externalDocs:
url: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toISOString
custom_fields:
type:
- object
- 'null'
additionalProperties: true
description: A key-value store of fields not covered by the schema. [Read more](/custom-fields)
integration_fields:
type: array
items:
type: object
properties:
id:
type: string
description: The globally unique ID of this object.
key:
type: string
description: The key of the field in the remote system.
type:
type: string
enum:
- DEFAULT
- CUSTOM
description: '- `DEFAULT`: static fields in the remote system.
- `CUSTOM`: fields that are created/editable by the user.'
value:
type: 'null'
description: The field's value.
label:
type:
- string
- 'null'
description: The label of the field. (not always available)
required:
- id
- key
- type
- label
description: An array of selected passthrough integration fields. [Read more](/integration-fields)
examples:
- - id: 5NVFhMpB9Ah6by44tzNjZLyE
key: firstName
type: DEFAULT
value: Frank
label: First Name
- id: 8nuajYpoRd5GnxEQaaWKUDYQ
key: customTshirtSize
type: CUSTOM
value: XL
label: T-Shirt Size
remote_data:
type:
- object
- 'null'
additionalProperties: true
description: 'Includes the data fetched from the remote system.
Please be aware that including this in you scope config might violate other
scopes that are set.
Remote data always has the endpoint path that we got the data from as the
top level key. For example, it could look like: `{ "/companies": { ... }}`
This is not available on all plans. Reach out to Kombo if you need it.'
required:
- id
- remote_id
- employee_number
- first_name
- last_name
- nationality
- display_full_name
- job_title
- mobile_phone_number
- ssn
- tax_id
- weekly_hours
- avatar
- work_location_id
- legal_entity_id
- manager_id
- date_of_birth
- start_date
- termination_date
- remote_created_at
- changed_at
- remote_deleted_at
- custom_fields
- integration_fields
- remote_data
examples:
- id: 26vafvWSRmbhNcxJYqjCzuJg
remote_id: '32'
employee_number: '3243422'
first_name: John
last_name: Doe
nationality: French
display_full_name: John Doe
job_title: Integrations Team Lead
work_email: john.doe@acme.com
personal_email: john@doe.me
mobile_phone_number: 801-555-4687
ssn: 555-32-6395
tax_id: 12 345 678 901
gender: MALE
ethnicity: BLACK_AFRICAN_AMERICAN
marital_status: MARRIED
employment_status: INACTIVE
employment_type: FULL_TIME
weekly_hours: 40
avatar: https://resources.bamboohr.com/images/photo_person_150x150.png
work_location_id: 7E2gyuv6TmvtByzBxW9Sxt53
legal_entity_id: xB32bied320csBSsl3XWdlw33
manager_id: 9pf2pxBB8VX8EQMC9aipW2Bo
home_address:
city: Berlin
country: DE
raw: 'Sonnenallee 63
12045 Berlin
Germany'
state: Berlin
street_1: Sonnenallee 63
street_2: null
zip_code: '12045'
bank_accounts:
- account_number: '1234567890'
bank_name: Commerzbank
bic: COBADEFFXXX
domestic_bank_routing:
number: '34567890'
type: DE_BANKLEITZAHL
holder_name: John Doe
iban: DE12345678901234567890
date_of_birth: '1986-01-01T00:00:00.000Z'
start_date: '2020-04-07T00:00:00.000Z'
termination_date: '2022-05-20T00:00:00.000Z'
remote_created_at: '2020-04-07T12:32:01.000Z'
changed_at: '2022-08-07T14:01:29.196Z'
remote_deleted_at: null
custom_fields: {}
integration_fields: []
remote_data: null
warnings:
type: array
items:
type: object
properties:
message:
type: string
required:
- message
description: These are the interaction warnings that are shown in the dashboard. They are meant to provide debug information to you. We recommend logging them to the console.
required:
- status
- data
- warnings
GetHrisSkillsPositiveResponse:
type: object
properties:
status:
type: string
const: success
data:
type: object
properties:
next:
type:
- string
- 'null'
description: Cursor string that can be passed to the `cursor` query parameter to get the next page. If this is `null`, then there are no more pages.
results:
type: array
items:
type: object
properties:
id:
type: string
description: The globally unique ID of this object generated by Kombo. We recommend using this as a stable primary key for syncing.
remote_id:
type: string
description: The raw ID of the object in the remote system. We don't recommend using this as a primary key on your side as it might sometimes be compromised of multiple identifiers if a system doesn't provide a clear primary key.
name:
type: string
description: The name of the skill.
description:
type:
- string
- 'null'
description: The description of the skill.
ordered_levels:
type:
- array
- 'null'
items:
type: string
description: List of available skill levels in order of proficiency (e.g., ["Beginner", "Intermediate", "Advanced"]).
changed_at:
description: The timestamp when this specific record was last modified. This field only updates when properties directly on this record change, NOT when related or nested models change. For filtering that considers nested data changes, use the `updated_after` parameter which will return records when either the record itself OR its related models have been updated.
type: string
format: date-time
externalDocs:
url: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toISOString
remote_deleted_at:
description: The date and time the object was deleted in the remote system. Objects are automatically marked as deleted when Kombo can't retrieve them from the remote system anymore. Kombo will also anonymize entries 14 days after they disappear.
type:
- string
- 'null'
format: date-time
externalDocs:
url: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toISOString
remote_data:
type:
- object
- 'null'
additionalProperties: true
description: 'Includes the data fetched from the remote system.
Please be aware that including this in you scope config might violate other
scopes that are set.
Remote data always has the endpoint path that we got the data from as the
top level key. For example, it could look like: `{ "/companies": { ... }}`
This is not available on all plans. Reach out to Kombo if you need it.'
required:
- id
- remote_id
- name
- description
- ordered_levels
- changed_at
- remote_deleted_at
- remote_data
examples:
- id: 28KMdr68N8kG9EzLwjsN9aoz
remote_id: '238476582'
name: TypeScript Programming
description: The ability understand and write TypeScript code.
ordered_levels:
- Proficiency Level 1
- Proficiency Level 2
- Proficiency Level 3
- Proficiency Level 4
- Proficiency Level 5
changed_at: '2022-08-07T14:01:29.196Z'
remote_deleted_at: null
remote_data: null
required:
- next
- results
examples:
- next: eyJwYWdlIjoxMiwibm90ZSI6InRoaXMgaXMganVzdCBhbiBleGFtcGxlIGFuZCBub3QgcmVwcmVzZW50YXRpdmUgZm9yIGEgcmVhbCBjdXJzb3IhIn0=
results:
- id: 28KMdr68N8kG9EzLwjsN9aoz
remote_id: '238476582'
name: TypeScript Programming
description: The ability understand and write TypeScript code.
ordered_levels:
- Proficiency Level 1
- Proficiency Level 2
- Proficiency Level 3
- Proficiency Level 4
- Proficiency Level 5
changed_at: '2022-08-07T14:01:29.196Z'
remote_deleted_at: null
remote_data: null
required:
- status
- data
GetHrisLegalEntitiesParameterPageSize:
type: integer
format: int64
minimum: 1
maximum: 250
default: 100
description: The number of results to return per page. Maximum is 250.
Schema5:
type: object
additionalProperties:
$ref: '#/components/schemas/Schema4'
GetHrisPerformanceReviewsParameterCursor:
type: string
description: An optional cursor string used for pagination. This can be retrieved from the `next` property of the previous page response.
GetHrisStaffingEntitiesParameterStatuses:
type: string
description: "Filter by a comma-separated list of `OPEN_LIMITED`, `OPEN_UNLIMITED`, `PENDING`, `FROZEN`, `FILLED`, `CLOSED` \n\nLeave this blank to get results matching all values."
GetHrisEmploymentsPositiveResponse:
type: object
properties:
status:
type: string
const: success
data:
type: object
properties:
next:
type:
- string
- 'null'
description: Cursor string that can be passed to the `cursor` query parameter to get the next page. If this is `null`, then there are no more pages.
results:
type: array
items:
type: object
properties:
id:
type: string
description: The globally unique ID of this object generated by Kombo. We recommend using this as a stable primary key for syncing.
remote_id:
type:
- string
- 'null'
description: The raw ID of the object in the remote system. We don't recommend using this as a primary key on your side as it might sometimes be compromised of multiple identifiers if a system doesn't provide a clear primary key.
employee_id:
type: string
description: The Kombo ID of the employment’s employee. The ID can be used to retrieve the employee from the `get employees` endpoint.
job_title:
type:
- string
- 'null'
description: This field can contain historic job titles. Please use the `job_title` field on the employee for the active job title of an employee.
pay_rate:
type:
- number
- 'null'
format: double
minimum: -1.7976931348623157e+308
description: The monetary amount paid to an employee.
pay_period:
anyOf:
- type: string
enum:
- HOUR
- DAY
- WEEK
- TWO_WEEKS
- HALF_MONTH
- MONTH
- TWO_MONTHS
- QUARTER
- HALF_YEAR
- YEAR
- type: string
description: 'If we can''t find a clear mapping: The original string passed through.'
- type: 'null'
description: 'The time interval which the `pay_rate` is describing.
A `pay_rate` value of `12000` with a `pay_period` of `YEAR` would indicate that the employee receives 12000 over the course of a year. In rare cases where we can’t find a clear mapping, the original string is passed through.'
pay_frequency:
anyOf:
- type: string
enum:
- DAILY
- WEEKLY
- BIWEEKLY
- MONTHLY
- SEMIMONTHLY
- QUARTERLY
- SEMIANNUALLY
- ANNUALLY
- PRO_RATA
- type: string
description: 'If we can''t find a clear mapping: The original string passed through.'
- type: 'null'
description: 'The time interval at which the employee receives payment.
A `pay_rate` of `12000`, with a `pay_period` of `YEAR`, and a `pay_frequency` of `MONTHLY` would indicate that the employee is paid 1000 every month. In rare cases where we can’t find a clear mapping, the original string is passed through.'
employment_type:
anyOf:
- type: string
enum:
- FULL_TIME
- PART_TIME
- CONTRACT
- INTERNSHIP
- FREELANCE
- WORKING_STUDENT
- APPRENTICESHIP
- TRAINING
- type: string
description: 'If we can''t find a clear mapping: The original string passed through.'
- type: 'null'
description: "The employee’s current employment type:\n\n- `FULL_TIME`: the employee is actively employed\n- `PART_TIME`: the employee is working only part of the usual working hours\n- `CONTRACT`: the employee is working temporarily under a contract\n- `INTERNSHIP`: the employee is working as an intern\n- `FREELANCE`: the employee is working as a freelancer\n- `WORKING_STUDENT`: the employee is working as a working student\n- `APPRENTICESHIP`: the employee is working in an apprenticeship\n- `TRAINING`: the employee is working in a training program\n\n In rare cases where we can’t find a clear mapping, the original string is passed through."
pay_currency:
type:
- string
- 'null'
description: The currency that the employee is paid in. Usually returned in [ISO 4217 currency codes](https://www.iso.org/iso-4217-currency-codes.html).
effective_date:
description: The date of when the employment started.
type:
- string
- 'null'
format: date-time
externalDocs:
url: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toISOString
changed_at:
description: The timestamp when this specific record was last modified. This field only updates when properties directly on this record change, NOT when related or nested models change. For filtering that considers nested data changes, use the `updated_after` parameter which will return records when either the record itself OR its related models have been updated.
type: string
format: date-time
externalDocs:
url: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toISOString
remote_deleted_at:
description: The date and time the object was deleted in the remote system. Objects are automatically marked as deleted when Kombo can't retrieve them from the remote system anymore. Kombo will also anonymize entries 14 days after they disappear.
type:
- string
- 'null'
format: date-time
externalDocs:
url: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toISOString
remote_data:
type:
- object
- 'null'
additionalProperties: true
description: 'Includes the data fetched from the remote system.
Please be aware that including this in you scope config might violate other
scopes that are set.
Remote data always has the endpoint path that we got the data from as the
top level key. For example, it could look like: `{ "/companies": { ... }}`
This is not available on all plans. Reach out to Kombo if you need it.'
custom_fields:
type:
- object
- 'null'
additionalProperties: true
description: A key-value store of fields not covered by the schema. [Read more](/custom-fields)
integration_fields:
type: array
items:
type: object
properties:
id:
type: string
description: The globally unique ID of this object.
key:
type: string
description: The key of the field in the remote system.
type:
type: string
enum:
- DEFAULT
- CUSTOM
description: '- `DEFAULT`: static fields in the remote system.
- `CUSTOM`: fields that are created/editable by the user.'
value:
type: 'null'
description: The field's value.
label:
type:
- string
- 'null'
description: The label of the field. (not always available)
required:
- id
- key
- type
- label
description: An array of selected passthrough integration fields. [Read more](/integration-fields)
examples:
- - id: 5NVFhMpB9Ah6by44tzNjZLyE
key: firstName
type: DEFAULT
value: Frank
label: First Name
- id: 8nuajYpoRd5GnxEQaaWKUDYQ
key: customTshirtSize
type: CUSTOM
value: XL
label: T-Shirt Size
required:
- id
- remote_id
- employee_id
- job_title
- pay_rate
- pay_currency
- effective_date
- changed_at
- remote_deleted_at
- remote_data
- custom_fields
- integration_fields
examples:
- id: 12vpXR7BeqYNWDShXRgsonnm
remote_id: '859'
employee_id: 26vafvWSRmbhNcxJYqjCzuJg
job_title: Social Media Marketer
pay_rate: 85000
pay_period: YEAR
pay_frequency: SEMIMONTHLY
employment_type: FULL_TIME
pay_currency: EUR
effective_date: '2021-01-30T00:00:00.000Z'
changed_at: '2022-08-07T14:01:29.196Z'
remote_deleted_at: null
remote_data: null
custom_fields: {}
integration_fields: []
required:
- next
- results
examples:
- next: eyJwYWdlIjoxMiwibm90ZSI6InRoaXMgaXMganVzdCBhbiBleGFtcGxlIGFuZCBub3QgcmVwcmVzZW50YXRpdmUgZm9yIGEgcmVhbCBjdXJzb3IhIn0=
results:
- id: 12vpXR7BeqYNWDShXRgsonnm
remote_id: '859'
employee_id: 26vafvWSRmbhNcxJYqjCzuJg
job_title: Social Media Marketer
pay_rate: 85000
pay_period: YEAR
pay_frequency: SEMIMONTHLY
employment_type: FULL_TIME
pay_currency: EUR
effective_date: '2021-01-30T00:00:00.000Z'
changed_at: '2022-08-07T14:01:29.196Z'
remote_deleted_at: null
remote_data: null
custom_fields: {}
integration_fields: []
required:
- status
- data
GetHrisTeamsParameterIgnoreUnsupportedFilters:
type: string
enum:
- 'true'
- 'false'
default: 'false'
description: When set to `true`, filters targeting fields not supported by this integration will be ignored instead of filtering out all results.
GetHrisEmployeesParameterRemoteIds:
type: string
description: Filter by a comma-separated list of remote IDs.
GetHrisAbsencesParameterRemoteIds:
type: string
description: Filter by a comma-separated list of remote IDs.
GetHrisAbsencesParameterIds:
type: string
description: Filter by a comma-separated list of IDs such as `222k7eCGyUdgt2JWZDNnkDs3,B5DVmypWENfU6eMe6gYDyJG3`.
GetHrisLocationsParameterIncludeDeleted:
type: string
enum:
- 'true'
- 'false'
default: 'false'
description: By default, deleted entries are not returned. Use the `include_deleted` query param to include deleted entries too.
GetHrisAbsenceTypesParameterIds:
type: string
description: Filter by a comma-separated list of IDs such as `222k7eCGyUdgt2JWZDNnkDs3,B5DVmypWENfU6eMe6gYDyJG3`.
Schema4:
oneOf:
- type: string
- type: number
format: double
minimum: -1.7976931348623157e+308
- type: boolean
- $ref: '#/components/schemas/Schema5'
- $ref: '#/components/schemas/Schema6'
DeleteHrisSkillsSkillIdPositiveResponse:
type: object
properties:
status:
type: string
const: success
data:
type: object
properties:
id:
type: string
description: The globally unique ID of this object generated by Kombo. We recommend using this as a stable primary key for syncing.
remote_id:
type: string
description: The raw ID of the object in the remote system. We don't recommend using this as a primary key on your side as it might sometimes be compromised of multiple identifiers if a system doesn't provide a clear primary key.
name:
type: string
description: The name of the skill.
description:
type:
- string
- 'null'
description: The description of the skill.
ordered_levels:
type:
- array
- 'null'
items:
type: string
description: List of available skill levels in order of proficiency (e.g., ["Beginner", "Intermediate", "Advanced"]).
changed_at:
description: The timestamp when this specific record was last modified. This field only updates when properties directly on this record change, NOT when related or nested models change. For filtering that considers nested data changes, use the `updated_after` parameter which will return records when either the record itself OR its related models have been updated.
type: string
format: date-time
externalDocs:
url: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toISOString
remote_deleted_at:
description: The date and time the object was deleted in the remote system. Objects are automatically marked as deleted when Kombo can't retrieve them from the remote system anymore. Kombo will also anonymize entries 14 days after they disappear.
type:
- string
- 'null'
format: date-time
externalDocs:
url: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toISOString
remote_data:
type:
- object
- 'null'
additionalProperties: true
description: 'Includes the data fetched from the remote system.
Please be aware that including this in you scope config might violate other
scopes that are set.
Remote data always has the endpoint path that we got the data from as the
top level key. For example, it could look like: `{ "/companies": { ... }}`
This is not available on all plans. Reach out to Kombo if you need it.'
required:
- id
- remote_id
- name
- description
- ordered_levels
- changed_at
- remote_deleted_at
- remote_data
examples:
- id: 28KMdr68N8kG9EzLwjsN9aoz
remote_id: '238476582'
name: TypeScript Programming
description: The ability understand and write TypeScript code.
ordered_levels:
- Proficiency Level 1
- Proficiency Level 2
- Proficiency Level 3
- Proficiency Level 4
- Proficiency Level 5
changed_at: '2022-08-07T14:01:29.196Z'
remote_deleted_at: '2022-08-07T14:01:29.196Z'
remote_data: null
required:
- status
- data
GetHrisPerformanceReviewCyclesParameterPageSize:
type: integer
format: int64
minimum: 1
maximum: 250
default: 100
description: The number of results to return per page. Maximum is 250.
GetHrisPerformanceReviewsParameterRemoteIds:
type: string
description: Filter by a comma-separated list of remote IDs.
GetHrisTimeOffBalancesParameterPageSize:
type: integer
format: int64
minimum: 1
maximum: 250
default: 100
description: The number of results to return per page. Maximum is 250.
GetHrisStaffingEntitiesParameterIgnoreUnsupportedFilters:
type: string
enum:
- 'true'
- 'false'
default: 'false'
description: When set to `true`, filters targeting fields not supported by this integration will be ignored instead of filtering out all results.
DeleteHrisAbsencesAbsenceIdPositiveResponse:
type: object
properties:
status:
type: string
const: success
data:
type: object
properties:
id:
type: string
description: The globally unique ID of this object generated by Kombo. We recommend using this as a stable primary key for syncing.
remote_id:
type:
- string
- 'null'
description: The raw ID of the object in the remote system. We don't recommend using this as a primary key on your side as it might sometimes be compromised of multiple identifiers if a system doesn't provide a clear primary key.
employee_id:
type: string
description: The Kombo ID of the employee to which the absence belongs to. The ID can be used to retrieve the employee from the `get employees` endpoint.
approver_id:
type:
- string
- 'null'
description: '**(⚠️ Deprecated - We won''t increase coverage for this feature)** The Kombo ID of the employee who is responsible for approving this absence.'
start_date:
description: The date this absence starts in the `yyyy-MM-dd` format.
type: 'null'
end_date:
description: The date this absence ends in the `yyyy-MM-dd` format.
type: 'null'
start_half_day:
type:
- boolean
- 'null'
description: '`true` if the absence starts in the middle of the day, `false` if not, and `null` if the absence type doesn''t support half-day absences. For multi-day absences, this only applies to the first day of the absence.'
end_half_day:
type:
- boolean
- 'null'
description: '`true` if the absence ends in the middle of the day, `false` if not, and `null` if the absence type doesn''t support half-day absences. For multi-day absences, this only applies to the last day of the absence.'
start_time:
description: The time at which this absence starts. Follows the format `HH:mm:ss` (e.g., `14:45:15`).
type: 'null'
end_time:
description: The time at which this absence ends. Follows the format `HH:mm:ss` (e.g., `14:45:15`).
type: 'null'
amount:
type:
- number
- 'null'
format: double
minimum: -1.7976931348623157e+308
description: The amount of time this absence takes.
unit:
type:
- string
- 'null'
enum:
- HOURS
- DAYS
description: The unit of time for this absence. Can be `HOURS` or `DAYS`.
status:
anyOf:
- type: string
enum:
- REQUESTED
- APPROVED
- DECLINED
- CANCELLED
- DELETED
- type: string
description: 'If we can''t find a clear mapping: The original string passed through.'
- type: 'null'
description: The absence’s current status. In rare cases where we can’t find a clear mapping, the original string is passed through.
employee_note:
type:
- string
- 'null'
description: A note the employee has added to this absence.
type_id:
type:
- string
- 'null'
description: The Kombo absence type ID of this absence.
remote_created_at:
description: The date and time the object was created in the remote system.
type:
- string
- 'null'
format: date-time
externalDocs:
url: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toISOString
remote_updated_at:
description: A timestamp retrieved from the remote system, describing when the resource was last updated.
type:
- string
- 'null'
format: date-time
externalDocs:
url: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toISOString
changed_at:
description: The timestamp when this specific record was last modified. This field only updates when properties directly on this record change, NOT when related or nested models change. For filtering that considers nested data changes, use the `updated_after` parameter which will return records when either the record itself OR its related models have been updated.
type: string
format: date-time
externalDocs:
url: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toISOString
remote_deleted_at:
description: The date and time the object was deleted in the remote system. Objects are automatically marked as deleted when Kombo can't retrieve them from the remote system anymore. Kombo will also anonymize entries 14 days after they disappear.
type:
- string
- 'null'
format: date-time
externalDocs:
url: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toISOString
remote_data:
type:
- object
- 'null'
additionalProperties: true
description: 'Includes the data fetched from the remote system.
Please be aware that including this in you scope config might violate other
scopes that are set.
Remote data always has the endpoint path that we got the data from as the
top level key. For example, it could look like: `{ "/companies": { ... }}`
This is not available on all plans. Reach out to Kombo if you need it.'
required:
- id
- remote_id
- employee_id
- approver_id
- start_date
- end_date
- start_half_day
- end_half_day
- start_time
- end_time
- amount
- unit
- employee_note
- type_id
- remote_created_at
- remote_updated_at
- changed_at
- remote_deleted_at
- remote_data
examples:
- id: 22st2Ji8XpncEYEak8mvQgQF
remote_id: '1348'
employee_id: JDdUy9kiH5APaGizFrgNmQjM
approver_id: AgXEispYPP1BbToHpqnqcpxy
start_date: '2022-08-04'
end_date: '2022-08-05'
start_half_day: true
end_half_day: false
start_time: '13:15:00'
end_time: '17:00:00'
amount: 2
unit: DAYS
status: APPROVED
employee_note: Visiting my family.
type_id: xzZoKssDaMZAd62kxayzzQvD
remote_created_at: '2022-08-07T14:01:29.196Z'
remote_updated_at: '2022-08-07T14:01:29.196Z'
changed_at: '2022-08-07T14:01:29.196Z'
remote_deleted_at: '2022-08-07T14:01:29.196Z'
remote_data: null
warnings:
type: array
items:
type: object
properties:
message:
type: string
required:
- message
description: These are the interaction warnings that are shown in the dashboard. They are meant to provide debug information to you. We recommend logging them to the console.
required:
- status
- data
- warnings
GetHrisLocationsParameterCursor:
type: string
description: An optional cursor string used for pagination. This can be retrieved from the `next` property of the previous page response.
GetHrisPerformanceReviewsParameterRevieweeIds:
type: string
description: Filter by a comma-separated list of reviewee IDs.
GetHrisGroupsPositiveResponse:
type: object
properties:
status:
type: string
const: success
data:
type: object
properties:
next:
type:
- string
- 'null'
description: Cursor string that can be passed to the `cursor` query parameter to get the next page. If this is `null`, then there are no more pages.
results:
type: array
items:
type: object
properties:
id:
type: string
description: The globally unique ID of this object generated by Kombo. We recommend using this as a stable primary key for syncing.
remote_id:
type: string
description: The raw ID of the object in the remote system. We don't recommend using this as a primary key on your side as it might sometimes be compromised of multiple identifiers if a system doesn't provide a clear primary key.
name:
type:
- string
- 'null'
description: The name of the group.
changed_at:
description: The timestamp when this specific record was last modified. This field only updates when properties directly on this record change, NOT when related or nested models change. For filtering that considers nested data changes, use the `updated_after` parameter which will return records when either the record itself OR its related models have been updated.
type: string
format: date-time
externalDocs:
url: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toISOString
remote_deleted_at:
description: The date and time the object was deleted in the remote system. Objects are automatically marked as deleted when Kombo can't retrieve them from the remote system anymore. Kombo will also anonymize entries 14 days after they disappear.
type:
- string
- 'null'
format: date-time
externalDocs:
url: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toISOString
type:
type:
- string
- 'null'
enum:
- DEPARTMENT
- TEAM
- COST_CENTER
description: Type of the group.
parent_id:
type:
- string
- 'null'
description: The Kombo ID of the group’s parent group in the organizational structure. The ID can be used to retrieve the group from the `get groups` endpoint.
remote_data:
type:
- object
- 'null'
additionalProperties: true
description: 'Includes the data fetched from the remote system.
Please be aware that including this in you scope config might violate other
scopes that are set.
Remote data always has the endpoint path that we got the data from as the
top level key. For example, it could look like: `{ "/companies": { ... }}`
This is not available on all plans. Reach out to Kombo if you need it.'
required:
- id
- remote_id
- name
- changed_at
- remote_deleted_at
- type
- parent_id
- remote_data
examples:
- id: 4B9bKBpX5tnwjiG93TAqF7ci
remote_id: '49'
name: Customer Success
changed_at: '2022-08-07T14:01:29.196Z'
remote_deleted_at: null
type: TEAM
parent_id: KGaJ5XaVPob8mYVfD49W4DGB
remote_data: null
required:
- next
- results
examples:
- next: eyJwYWdlIjoxMiwibm90ZSI6InRoaXMgaXMganVzdCBhbiBleGFtcGxlIGFuZCBub3QgcmVwcmVzZW50YXRpdmUgZm9yIGEgcmVhbCBjdXJzb3IhIn0=
results:
- id: 4B9bKBpX5tnwjiG93TAqF7ci
remote_id: '49'
name: Customer Success
changed_at: '2022-08-07T14:01:29.196Z'
remote_deleted_at: null
type: TEAM
parent_id: KGaJ5XaVPob8mYVfD49W4DGB
remote_data: null
required:
- status
- data
GetHrisGroupsParameterNameContains:
type: string
description: Filter by the `name` field. Can be used to find a group by keywords present in the group name.
GetHrisAbsencesParameterCursor:
type: string
description: An optional cursor string used for pagination. This can be retrieved from the `next` property of the previous page response.
GetHrisTeamsParameterPageSize:
type: integer
format: int64
minimum: 1
maximum: 250
default: 100
description: The number of results to return per page. Maximum is 250.
GetHrisAbsencesParameterUpdatedAfter:
description: 'Filter the entries based on the modification date in format `YYYY-MM-DDTHH:mm:ss.sssZ`. Returns records where either the record itself **OR** its nested data has been updated since this timestamp, even if the record''s own `changed_at` field remains unchanged.
If you want to track entry deletion, also set the `include_deleted=true` query parameter, because otherwise, deleted entries will be hidden.
For more details, see [Understanding changed_at vs updated_after Behavior](https://docs.kombo.dev/ats/getting-started/fetching-data#understanding-changed_at-vs-updated_after-behavior).
For this endpoint, `updated_after` matches when the returned record changed, or when related data changed as described below.
| Path | Added/Removed | Linked Record |
| --- | --- | --- |
| `type` | n/a | ✓ Yes |
_**Added/Removed**: Whether adding or removing entries from this list triggers an update (n/a for single records). **Linked Record**: Whether changes to the linked record itself trigger an update._'
type: string
format: date-time
pattern: ^\d{4}-\d{2}-\d{2}(T\d{2}:\d{2}:\d{2}(\.\d+)?)?Z?$
externalDocs:
url: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toISOString
GetHrisAbsencesParameterDateUntil:
description: Filter for absences that start on or before this day (but might continue after). If you imagine a calendar displaying absences, this defines the right-most visible day. This is a plain date (i.e., `yyyy-MM-dd`), all time information is discarded.
type: string
format: date-time
pattern: ^\d{4}-\d{2}-\d{2}(T\d{2}:\d{2}:\d{2}(\.\d+)?)?Z?$
externalDocs:
url: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toISOString
GetHrisPerformanceReviewCyclesParameterUpdatedAfter:
description: 'Filter the entries based on the modification date in format `YYYY-MM-DDTHH:mm:ss.sssZ`. Returns records where either the record itself **OR** its nested data has been updated since this timestamp, even if the record''s own `changed_at` field remains unchanged.
If you want to track entry deletion, also set the `include_deleted=true` query parameter, because otherwise, deleted entries will be hidden.
For more details, see [Understanding changed_at vs updated_after Behavior](https://docs.kombo.dev/ats/getting-started/fetching-data#understanding-changed_at-vs-updated_after-behavior).
For this endpoint, only changes to the returned record itself are considered.'
type: string
format: date-time
pattern: ^\d{4}-\d{2}-\d{2}(T\d{2}:\d{2}:\d{2}(\.\d+)?)?Z?$
externalDocs:
url: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toISOString
GetHrisStaffingEntitiesParameterCursor:
type: string
description: An optional cursor string used for pagination. This can be retrieved from the `next` property of the previous page response.
GetHrisEmployeeSkillAssignmentsParameterIds:
type: string
description: Filter by a comma-separated list of IDs such as `222k7eCGyUdgt2JWZDNnkDs3,B5DVmypWENfU6eMe6gYDyJG3`.
GetHrisGroupsParameterUpdatedAfter:
description: 'Filter the entries based on the modification date in format `YYYY-MM-DDTHH:mm:ss.sssZ`. Returns records where either the record itself **OR** its nested data has been updated since this timestamp, even if the record''s own `changed_at` field remains unchanged.
If you want to track entry deletion, also set the `include_deleted=true` query parameter, because otherwise, deleted entries will be hidden.
For more details, see [Understanding changed_at vs updated_after Behavior](https://docs.kombo.dev/ats/getting-started/fetching-data#understanding-changed_at-vs-updated_after-behavior).
For this endpoint, only changes to the returned record itself are considered.'
type: string
format: date-time
pattern: ^\d{4}-\d{2}-\d{2}(T\d{2}:\d{2}:\d{2}(\.\d+)?)?Z?$
externalDocs:
url: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toISOString
GetHrisEmployeesParameterLegalEntityIds:
type: string
description: Filter by a comma-separated list of legal entity IDs. We will only return employees that are members of _any_ of the legal entities.
PostHrisProvisioningGroupsGroupIdDiffRequestBody:
type: object
properties:
provisioned_users:
type: array
items:
type: object
properties:
origin_id:
type: string
description: _Your_ ID for this user (_not_ an ID retrieved from Kombo).
email:
type: string
description: This user's email address.
format: email
required:
- origin_id
- email
description: Array of the already provisioned users in your system.
options:
type: object
properties:
employee_fields:
type: array
items:
type: string
enum:
- id
- remote_id
- first_name
- last_name
- groups
- avatar
- work_location_id
- legal_entity_id
description: The employee fields relevant for your use case.
required:
- employee_fields
description: Options to customize what we return.
required:
- provisioned_users
- options
GetHrisGroupsParameterRemoteIds:
type: string
description: Filter by a comma-separated list of remote IDs.
DeleteHrisEmployeeSkillAssignmentsEmployeeSkillAssignmentIdRequestBody:
type: object
properties: {}
Schema2:
discriminator:
propertyName: type
anyOf:
- type: object
properties:
label:
type: string
required:
type: boolean
description:
type:
- string
- 'null'
unified_key:
type:
- string
- 'null'
enum:
- first_name
- last_name
- date_of_birth
- gender
- home_address.city
- home_address.country
- home_address.state
- home_address.street_1
- home_address.street_2
- home_address.zip_code
- job_title
- legal_entity_id
- location_id
- mobile_phone_number
- home_phone_number
- nationality
- start_date
- work_email
- private_email
- yearly_salary
type:
type: string
const: text
min_length:
type:
- number
- 'null'
format: double
minimum: -1.7976931348623157e+308
max_length:
type:
- number
- 'null'
format: double
minimum: -1.7976931348623157e+308
reg_exp:
type:
- string
- 'null'
required:
- label
- required
- type
- type: object
properties:
label:
type: string
required:
type: boolean
description:
type:
- string
- 'null'
unified_key:
type:
- string
- 'null'
enum:
- first_name
- last_name
- date_of_birth
- gender
- home_address.city
- home_address.country
- home_address.state
- home_address.street_1
- home_address.street_2
- home_address.zip_code
- job_title
- legal_entity_id
- location_id
- mobile_phone_number
- home_phone_number
- nationality
- start_date
- work_email
- private_email
- yearly_salary
type:
type: string
const: number
min:
type:
- number
- 'null'
format: double
minimum: -1.7976931348623157e+308
max:
type:
- number
- 'null'
format: double
minimum: -1.7976931348623157e+308
required:
- label
- required
- type
- type: object
properties:
label:
type: string
required:
type: boolean
description:
type:
- string
- 'null'
unified_key:
type:
- string
- 'null'
enum:
- first_name
- last_name
- date_of_birth
- gender
- home_address.city
- home_address.country
- home_address.state
- home_address.street_1
- home_address.street_2
- home_address.zip_code
- job_title
- legal_entity_id
- location_id
- mobile_phone_number
- home_phone_number
- nationality
- start_date
- work_email
- private_email
- yearly_salary
type:
type: string
const: date
required:
- label
- required
- type
- type: object
properties:
label:
type: string
required:
type: boolean
description:
type:
- string
- 'null'
unified_key:
type:
- string
- 'null'
enum:
- first_name
- last_name
- date_of_birth
- gender
- home_address.city
- home_address.country
- home_address.state
- home_address.street_1
- home_address.street_2
- home_address.zip_code
- job_title
- legal_entity_id
- location_id
- mobile_phone_number
- home_phone_number
- nationality
- start_date
- work_email
- private_email
- yearly_salary
type:
type: string
const: single_select
options:
discriminator:
propertyName: type
anyOf:
- type: object
properties:
type:
type: string
const: inline
entries:
type: array
items:
type: object
properties:
id:
type: string
label:
type: string
unified_value:
type: string
remote_id:
oneOf:
- type: string
- type: number
format: double
minimum: -1.7976931348623157e+308
required:
- id
- label
- remote_id
required:
- type
- entries
- type: object
properties:
type:
type: string
const: referenced
link:
type: string
required:
- type
- link
required:
- label
- required
- type
- options
- type: object
properties:
label:
type: string
required:
type: boolean
description:
type:
- string
- 'null'
unified_key:
type:
- string
- 'null'
type:
type: string
const: multi_select
min_items:
type:
- number
- 'null'
format: double
minimum: -1.7976931348623157e+308
max_items:
type:
- number
- 'null'
format: double
minimum: -1.7976931348623157e+308
options:
discriminator:
propertyName: type
anyOf:
- type: object
properties:
type:
type: string
const: inline
entries:
type: array
items:
type: object
properties:
id:
type: string
label:
type: string
unified_value:
type: string
remote_id:
oneOf:
- type: string
- type: number
format: double
minimum: -1.7976931348623157e+308
required:
- id
- label
- remote_id
required:
- type
- entries
- type: object
properties:
type:
type: string
const: referenced
link:
type: string
required:
- type
- link
required:
- label
- required
- type
- options
- type: object
properties:
label:
type: string
required:
type: boolean
description:
type:
- string
- 'null'
unified_key:
type:
- string
- 'null'
enum:
- first_name
- last_name
- date_of_birth
- gender
- home_address.city
- home_address.country
- home_address.state
- home_address.street_1
- home_address.street_2
- home_address.zip_code
- job_title
- legal_entity_id
- location_id
- mobile_phone_number
- home_phone_number
- nationality
- start_date
- work_email
- private_email
- yearly_salary
type:
type: string
const: checkbox
required:
- label
- required
- type
- type: object
properties:
label:
type: string
required:
type: boolean
description:
type:
- string
- 'null'
unified_key:
type:
- string
- 'null'
enum:
- first_name
- last_name
- date_of_birth
- gender
- home_address.city
- home_address.country
- home_address.state
- home_address.street_1
- home_address.street_2
- home_address.zip_code
- job_title
- legal_entity_id
- location_id
- mobile_phone_number
- home_phone_number
- nationality
- start_date
- work_email
- private_email
- yearly_salary
type:
type: string
const: object
properties:
$ref: '#/components/schemas/Schema1'
required:
- label
- required
- type
- properties
- type: object
properties:
label:
type: string
required:
type: boolean
description:
type:
- string
- 'null'
unified_key:
type:
- string
- 'null'
enum:
- first_name
- last_name
- date_of_birth
- gender
- home_address.city
- home_address.country
- home_address.state
- home_address.street_1
- home_address.street_2
- home_address.zip_code
- job_title
- legal_entity_id
- location_id
- mobile_phone_number
- home_phone_number
- nationality
- start_date
- work_email
- private_email
- yearly_salary
type:
type: string
const: array
item_type:
$ref: '#/components/schemas/Schema2'
min_items:
type:
- number
- 'null'
format: double
minimum: -1.7976931348623157e+308
max_items:
type:
- number
- 'null'
format: double
minimum: -1.7976931348623157e+308
required:
- label
- required
- type
- item_type
- type: object
properties:
label:
type: string
required:
type: boolean
description:
type:
- string
- 'null'
unified_key:
type:
- string
- 'null'
enum:
- first_name
- last_name
- date_of_birth
- gender
- home_address.city
- home_address.country
- home_address.state
- home_address.street_1
- home_address.street_2
- home_address.zip_code
- job_title
- legal_entity_id
- location_id
- mobile_phone_number
- home_phone_number
- nationality
- start_date
- work_email
- private_email
- yearly_salary
type:
type: string
const: file
file_restrictions:
type: object
properties:
accepted_mime_types:
type: array
items:
type: string
max_file_size:
type:
- number
- 'null'
format: double
minimum: -1.7976931348623157e+308
required:
- accepted_mime_types
required:
- label
- required
- type
- file_restrictions
PostHrisEmployeesEmployeeIdDocumentsParameterEmployeeId:
type: string
GetHrisPerformanceReviewsParameterUpdatedAfter:
description: 'Filter the entries based on the modification date in format `YYYY-MM-DDTHH:mm:ss.sssZ`. Returns records where either the record itself **OR** its nested data has been updated since this timestamp, even if the record''s own `changed_at` field remains unchanged.
If you want to track entry deletion, also set the `include_deleted=true` query parameter, because otherwise, deleted entries will be hidden.
For more details, see [Understanding changed_at vs updated_after Behavior](https://docs.kombo.dev/ats/getting-started/fetching-data#understanding-changed_at-vs-updated_after-behavior).
For this endpoint, `updated_after` matches when the returned record changed, or when related data changed as described below.
| Path | Added/Removed | Linked Record |
| --- | --- | --- |
| `review_cycle` | n/a | ✓ Yes |
| `reviewee` | n/a | ✓ Yes |
| `reviewer` | n/a | ✓ Yes |
_**Added/Removed**: Whether adding or removing entries from this list triggers an update (n/a for single records). **Linked Record**: Whether changes to the linked record itself trigger an update._'
type: string
format: date-time
pattern: ^\d{4}-\d{2}-\d{2}(T\d{2}:\d{2}:\d{2}(\.\d+)?)?Z?$
externalDocs:
url: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toISOString
GetHrisTeamsParameterIncludeDeleted:
type: string
enum:
- 'true'
- 'false'
default: 'false'
description: By default, deleted entries are not returned. Use the `include_deleted` query param to include deleted entries too.
GetHrisTimesheetsParameterUpdatedAfter:
description: 'Filter the entries based on the modification date in format `YYYY-MM-DDTHH:mm:ss.sssZ`. Returns records where either the record itself **OR** its nested data has been updated since this timestamp, even if the record''s own `changed_at` field remains unchanged.
If you want to track entry deletion, also set the `include_deleted=true` query parameter, because otherwise, deleted entries will be hidden.
For more details, see [Understanding changed_at vs updated_after Behavior](https://docs.kombo.dev/ats/getting-started/fetching-data#understanding-changed_at-vs-updated_after-behavior).
For this endpoint, only changes to the returned record itself are considered.'
type: string
format: date-time
pattern: ^\d{4}-\d{2}-\d{2}(T\d{2}:\d{2}:\d{2}(\.\d+)?)?Z?$
externalDocs:
url: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toISOString
GetHrisTimeOffBalancesParameterRemoteIds:
type: string
description: Filter by a comma-separated list of remote IDs.
DeleteHrisSkillsSkillIdParameterSkillId:
type: string
description: The ID of the skill
PostHrisProvisioningGroupsGroupIdSetupLinksRequestBody:
type: object
properties:
language:
type:
- string
- 'null'
enum:
- en
- de
- fr
- it
- es
default: en
description: Language of the UI. Please note that the provisioning setup UI is _not_ translated yet but we're working on it and setting this already will make sure the translations appear once released.
PostHrisEmployeesFormRequestBody:
type: object
properties:
properties:
$ref: '#/components/schemas/Schema3'
required:
- properties
GetHrisEmploymentsParameterIgnoreUnsupportedFilters:
type: string
enum:
- 'true'
- 'false'
default: 'false'
description: When set to `true`, filters targeting fields not supported by this integration will be ignored instead of filtering out all results.
GetHrisTimesheetsParameterStartedBefore:
description: Return timesheets whose start time is before the given timestamp.
type: string
format: date-time
pattern: ^\d{4}-\d{2}-\d{2}(T\d{2}:\d{2}:\d{2}(\.\d+)?)?Z?$
externalDocs:
url: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toISOString
GetHrisAbsenceTypesParameterPageSize:
type: integer
format: int64
minimum: 1
maximum: 250
default: 100
description: The number of results to return per page. Maximum is 250.
GetHrisTimesheetsParameterIncludeDeleted:
type: string
enum:
- 'true'
- 'false'
default: 'false'
description: By default, deleted entries are not returned. Use the `include_deleted` query param to include deleted entries too.
Schema1:
type: object
additionalProperties:
discriminator:
propertyName: type
anyOf:
- type: object
properties:
label:
type: string
required:
type: boolean
description:
type:
- string
- 'null'
unified_key:
type:
- string
- 'null'
enum:
- first_name
- last_name
- date_of_birth
- gender
- home_address.city
- home_address.country
- home_address.state
- home_address.street_1
- home_address.street_2
- home_address.zip_code
- job_title
- legal_entity_id
- location_id
- mobile_phone_number
- home_phone_number
- nationality
- start_date
- work_email
- private_email
- yearly_salary
type:
type: string
const: text
min_length:
type:
- number
- 'null'
format: double
minimum: -1.7976931348623157e+308
max_length:
type:
- number
- 'null'
format: double
minimum: -1.7976931348623157e+308
reg_exp:
type:
- string
- 'null'
required:
- label
- required
- type
- type: object
properties:
label:
type: string
required:
type: boolean
description:
type:
- string
- 'null'
unified_key:
type:
- string
- 'null'
enum:
- first_name
- last_name
- date_of_birth
- gender
- home_address.city
- home_address.country
- home_address.state
- home_address.street_1
- home_address.street_2
- home_address.zip_code
- job_title
- legal_entity_id
- location_id
- mobile_phone_number
- home_phone_number
- nationality
- start_date
- work_email
- private_email
- yearly_salary
type:
type: string
const: number
min:
type:
- number
- 'null'
format: double
minimum: -1.7976931348623157e+308
max:
type:
- number
- 'null'
format: double
minimum: -1.7976931348623157e+308
required:
- label
- required
- type
- type: object
properties:
label:
type: string
required:
type: boolean
description:
type:
- string
- 'null'
unified_key:
type:
- string
- 'null'
enum:
- first_name
- last_name
- date_of_birth
- gender
- home_address.city
- home_address.country
- home_address.state
- home_address.street_1
- home_address.street_2
- home_address.zip_code
- job_title
- legal_entity_id
- location_id
- mobile_phone_number
- home_phone_number
- nationality
- start_date
- work_email
- private_email
- yearly_salary
type:
type: string
const: date
required:
- label
- required
- type
- type: object
properties:
label:
type: string
required:
type: boolean
description:
type:
- string
- 'null'
unified_key:
type:
- string
- 'null'
enum:
- first_name
- last_name
- date_of_birth
- gender
- home_address.city
- home_address.country
- home_address.state
- home_address.street_1
- home_address.street_2
- home_address.zip_code
- job_title
- legal_entity_id
- location_id
- mobile_phone_number
- home_phone_number
- nationality
- start_date
- work_email
- private_email
- yearly_salary
type:
type: string
const: single_select
options:
discriminator:
propertyName: type
anyOf:
- type: object
properties:
type:
type: string
const: inline
entries:
type: array
items:
type: object
properties:
id:
type: string
label:
type: string
unified_value:
type: string
remote_id:
oneOf:
- type: string
- type: number
format: double
minimum: -1.7976931348623157e+308
required:
- id
- label
- remote_id
required:
- type
- entries
- type: object
properties:
type:
type: string
const: referenced
link:
type: string
required:
- type
- link
required:
- label
- required
- type
- options
- type: object
properties:
label:
type: string
required:
type: boolean
description:
type:
- string
- 'null'
unified_key:
type:
- string
- 'null'
type:
type: string
const: multi_select
min_items:
type:
- number
- 'null'
format: double
minimum: -1.7976931348623157e+308
max_items:
type:
- number
- 'null'
format: double
minimum: -1.7976931348623157e+308
options:
discriminator:
propertyName: type
anyOf:
- type: object
properties:
type:
type: string
const: inline
entries:
type: array
items:
type: object
properties:
id:
type: string
label:
type: string
unified_value:
type: string
remote_id:
oneOf:
- type: string
- type: number
format: double
minimum: -1.7976931348623157e+308
required:
- id
- label
- remote_id
required:
- type
- entries
- type: object
properties:
type:
type: string
const: referenced
link:
type: string
required:
- type
- link
required:
- label
- required
- type
- options
- type: object
properties:
label:
type: string
required:
type: boolean
description:
type:
- string
- 'null'
unified_key:
type:
- string
- 'null'
enum:
- first_name
- last_name
- date_of_birth
- gender
- home_address.city
- home_address.country
- home_address.state
- home_address.street_1
- home_address.street_2
- home_address.zip_code
- job_title
- legal_entity_id
- location_id
- mobile_phone_number
- home_phone_number
- nationality
- start_date
- work_email
- private_email
- yearly_salary
type:
type: string
const: checkbox
required:
- label
- required
- type
- type: object
properties:
label:
type: string
required:
type: boolean
description:
type:
- string
- 'null'
unified_key:
type:
- string
- 'null'
enum:
- first_name
- last_name
- date_of_birth
- gender
- home_address.city
- home_address.country
- home_address.state
- home_address.street_1
- home_address.street_2
- home_address.zip_code
- job_title
- legal_entity_id
- location_id
- mobile_phone_number
- home_phone_number
- nationality
- start_date
- work_email
- private_email
- yearly_salary
type:
type: string
const: object
properties:
$ref: '#/components/schemas/Schema1'
required:
- label
- required
- type
- properties
- type: object
properties:
label:
type: string
required:
type: boolean
description:
type:
- string
- 'null'
unified_key:
type:
- string
- 'null'
enum:
- first_name
- last_name
- date_of_birth
- gender
- home_address.city
- home_address.country
- home_address.state
- home_address.street_1
- home_address.street_2
- home_address.zip_code
- job_title
- legal_entity_id
- location_id
- mobile_phone_number
- home_phone_number
- nationality
- start_date
- work_email
- private_email
- yearly_salary
type:
type: string
const: array
item_type:
$ref: '#/components/schemas/Schema2'
min_items:
type:
- number
- 'null'
format: double
minimum: -1.7976931348623157e+308
max_items:
type:
- number
- 'null'
format: double
minimum: -1.7976931348623157e+308
required:
- label
- required
- type
- item_type
- type: object
properties:
label:
type: string
required:
type: boolean
description:
type:
- string
- 'null'
unified_key:
type:
- string
- 'null'
enum:
- first_name
- last_name
- date_of_birth
- gender
- home_address.city
- home_address.country
- home_address.state
- home_address.street_1
- home_address.street_2
- home_address.zip_code
- job_title
- legal_entity_id
- location_id
- mobile_phone_number
- home_phone_number
- nationality
- start_date
- work_email
- private_email
- yearly_salary
type:
type: string
const: file
file_restrictions:
type: object
properties:
accepted_mime_types:
type: array
items:
type: string
max_file_size:
type:
- number
- 'null'
format: double
minimum: -1.7976931348623157e+308
required:
- accepted_mime_types
required:
- label
- required
- type
- file_restrictions
GetHrisStaffingEntitiesPositiveResponse:
type: object
properties:
status:
type: string
const: success
data:
type: object
properties:
next:
type:
- string
- 'null'
description: Cursor string that can be passed to the `cursor` query parameter to get the next page. If this is `null`, then there are no more pages.
results:
type: array
items:
type: object
properties:
id:
type: string
description: The globally unique ID of this object generated by Kombo. We recommend using this as a stable primary key for syncing.
remote_id:
type: string
description: The raw ID of the object in the remote system. We don't recommend using this as a primary key on your side as it might sometimes be compromised of multiple identifiers if a system doesn't provide a clear primary key.
name:
type:
- string
- 'null'
description: The name/title of the staffing entity.
model_type:
type:
- string
- 'null'
enum:
- JOB
- POSITION
- REQUISITION
description: The remote model type of the record. Possible values are "JOB", "POSITION" or "REQUISITION". We recommend that users of our `create employee` endpoint ask the customer whether they want to hire into positions or requisitions.
description:
type:
- string
- 'null'
description: A text description of the staffing entity — typically covering responsibilities, requirements, and scope. Commonly referred to as the "job description" in HRIS systems. May contain HTML, depending on the source system.
status:
type:
- string
- 'null'
enum:
- OPEN_LIMITED
- OPEN_UNLIMITED
- PENDING
- FROZEN
- FILLED
- CLOSED
examples:
- OPEN_UNLIMITED
description: "The status of the staffing entity.\n OPEN_LIMITED: The staffing entity is open and has a limited number of openings. Refer to the `number_of_openings` field to get the number of openings.\n OPEN_UNLIMITED: The staffing entity is open and has an unlimited number of openings. Some enterprise systems refer to this as \"Evergreen\".\n PENDING: The staffing entity is pending approval or is waiting to be published.\n FROZEN: The staffing entity is frozen (hiring freeze) and does not accept applications/hires.\n FILLED: The staffing entity is filled (to its maximum capacity) and not available for new hires.\n CLOSED: The staffing entity is closed and not available for new hires."
employment_types:
type:
- array
- 'null'
items:
type: object
properties:
remote_label:
type: string
description: The label of the employment type how it appears in the remote system.
unified_type:
type:
- string
- 'null'
enum:
- FULL_TIME
- PART_TIME
- CONTRACT
- INTERNSHIP
- FREELANCE
- WORKING_STUDENT
- APPRENTICESHIP
- TRAINING
description: The unified type, how Kombo categorize this label.
required:
- remote_label
- unified_type
description: The employment types available for/used by the staffing entity. Use the `remote_label` for display in your UI as it is consistent with the language of the remote system. Use the `unified_type` for internal categorization as it is unified across all tools.
number_of_openings:
type:
- number
- 'null'
format: double
minimum: -1.7976931348623157e+308
description: The number of openings for the staffing entity. Only meaningful for staffing entities with the status "OPEN_LIMITED".
parent_id:
type:
- string
- 'null'
description: The Kombo ID of the staffing entity’s parent. Usually it’s the position/job that was used to create the requisition. The ID can be used to retrieve the parent staffing entity from the `get staffing entity` endpoint.
remote_url:
type:
- string
- 'null'
format: uri
description: URL to the staffing entity in the HRIS system. Use this to implement backlinks into the HRIS/Enterprise System.
remote_created_at:
description: The date and time the object was created in the remote system.
type:
- string
- 'null'
format: date-time
externalDocs:
url: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toISOString
remote_updated_at:
description: A timestamp retrieved from the remote system, describing when the resource was last updated.
type:
- string
- 'null'
format: date-time
externalDocs:
url: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toISOString
changed_at:
description: The timestamp when this specific record was last modified. This field only updates when properties directly on this record change, NOT when related or nested models change. For filtering that considers nested data changes, use the `updated_after` parameter which will return records when either the record itself OR its related models have been updated.
type: string
format: date-time
externalDocs:
url: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toISOString
remote_deleted_at:
description: The date and time the object was deleted in the remote system. Objects are automatically marked as deleted when Kombo can't retrieve them from the remote system anymore. Kombo will also anonymize entries 14 days after they disappear.
type:
- string
- 'null'
format: date-time
externalDocs:
url: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toISOString
custom_fields:
type:
- object
- 'null'
additionalProperties: true
description: A key-value store of fields not covered by the schema. [Read more](/custom-fields)
integration_fields:
type: array
items:
type: object
properties:
id:
type: string
description: The globally unique ID of this object.
key:
type: string
description: The key of the field in the remote system.
type:
type: string
enum:
- DEFAULT
- CUSTOM
description: '- `DEFAULT`: static fields in the remote system.
- `CUSTOM`: fields that are created/editable by the user.'
value:
type: 'null'
description: The field's value.
label:
type:
- string
- 'null'
description: The label of the field. (not always available)
required:
- id
- key
- type
- label
description: An array of selected passthrough integration fields. [Read more](/integration-fields)
examples:
- - id: 5NVFhMpB9Ah6by44tzNjZLyE
key: firstName
type: DEFAULT
value: Frank
label: First Name
- id: 8nuajYpoRd5GnxEQaaWKUDYQ
key: customTshirtSize
type: CUSTOM
value: XL
label: T-Shirt Size
remote_data:
type:
- object
- 'null'
additionalProperties: true
description: 'Includes the data fetched from the remote system.
Please be aware that including this in you scope config might violate other
scopes that are set.
Remote data always has the endpoint path that we got the data from as the
top level key. For example, it could look like: `{ "/companies": { ... }}`
This is not available on all plans. Reach out to Kombo if you need it.'
locations:
type: array
items:
type: object
properties:
id:
type: string
description: The globally unique ID of this object generated by Kombo. We recommend using this as a stable primary key for syncing.
remote_id:
type:
- string
- 'null'
description: The raw ID of the object in the remote system. We don't recommend using this as a primary key on your side as it might sometimes be compromised of multiple identifiers if a system doesn't provide a clear primary key.
name:
type:
- string
- 'null'
description: The work location’s name
type:
type:
- string
- 'null'
description: The work location’s type. A freeform string.
required:
- id
- remote_id
- name
- type
examples:
- id: 22st2Ji8XpncEYEak8mvQgQF
remote_id: '1348'
name: Kombo HQ
type: OFFICE
description: The physical work locations associated with this staffing entity. A position or requisition can be linked to one or more offices or sites where the role is to be filled.
legal_entities:
type: array
items:
type: object
properties:
id:
type: string
description: The globally unique ID of this object generated by Kombo. We recommend using this as a stable primary key for syncing.
remote_id:
type:
- string
- 'null'
description: The raw ID of the object in the remote system. We don't recommend using this as a primary key on your side as it might sometimes be compromised of multiple identifiers if a system doesn't provide a clear primary key.
name:
type:
- string
- 'null'
description: The legal entity’s name.
required:
- id
- remote_id
- name
examples:
- id: 4B9bKBpX5tnwjiG93TAqF7ci
remote_id: '49'
name: ACME Inc.
description: The legal entities (companies or sub-companies) associated with this staffing entity. Indicates which employing entities within the organization the position or requisition belongs to.
groups:
type: array
items:
type: object
properties:
id:
type: string
description: The globally unique ID of this object generated by Kombo. We recommend using this as a stable primary key for syncing.
remote_id:
type: string
description: The raw ID of the object in the remote system. We don't recommend using this as a primary key on your side as it might sometimes be compromised of multiple identifiers if a system doesn't provide a clear primary key.
name:
type:
- string
- 'null'
description: The name of the group.
type:
type:
- string
- 'null'
enum:
- DEPARTMENT
- TEAM
- COST_CENTER
description: Type of the group.
required:
- id
- remote_id
- name
- type
examples:
- id: 4B9bKBpX5tnwjiG93TAqF7ci
remote_id: '49'
name: Customer Success
type: TEAM
description: The organizational groups (such as departments, teams, or cost centers) associated with this staffing entity.
required:
- id
- remote_id
- name
- model_type
- description
- status
- number_of_openings
- parent_id
- remote_url
- remote_created_at
- remote_updated_at
- changed_at
- remote_deleted_at
- custom_fields
- integration_fields
- remote_data
- locations
- legal_entities
- groups
required:
- next
- results
examples:
- next: eyJwYWdlIjoxMiwibm90ZSI6InRoaXMgaXMganVzdCBhbiBleGFtcGxlIGFuZCBub3QgcmVwcmVzZW50YXRpdmUgZm9yIGEgcmVhbCBjdXJzb3IhIn0=
results:
- id: 26vafvWSRmbhNcxJYqjCzuJg
remote_id: '32'
name: Software Engineer
model_type: POSITION
description: Description of the position
status: OPEN_UNLIMITED
employment_types:
- remote_label: Vollzeit
unified_type: FULL_TIME
number_of_openings: null
parent_id: KGaJ5XaVPob8mYVfD49W4DGB
remote_url: https://example.com/position/32
remote_created_at: '2022-08-07T14:01:29.196Z'
remote_updated_at: '2022-08-07T14:01:29.196Z'
changed_at: '2022-08-07T14:01:29.196Z'
remote_deleted_at: null
custom_fields: {}
integration_fields: []
remote_data: null
locations:
- id: 22st2Ji8XpncEYEak8mvQgQF
remote_id: '1348'
name: Kombo HQ
type: OFFICE
legal_entities:
- id: 4B9bKBpX5tnwjiG93TAqF7ci
remote_id: '49'
name: ACME Inc.
groups:
- id: 4B9bKBpX5tnwjiG93TAqF7ci
remote_id: '49'
name: Customer Success
type: TEAM
required:
- status
- data
GetHrisAbsenceTypesParameterCursor:
type: string
description: An optional cursor string used for pagination. This can be retrieved from the `next` property of the previous page response.
PatchHrisSkillsSkillIdParameterSkillId:
type: string
description: The ID of the skill
GetHrisEmploymentsParameterIds:
type: string
description: Filter by a comma-separated list of IDs such as `222k7eCGyUdgt2JWZDNnkDs3,B5DVmypWENfU6eMe6gYDyJG3`.
PostHrisEmployeesEmployeeIdDocumentsPositiveResponse:
type: object
properties:
status:
type: string
const: success
data:
type: object
warnings:
type: array
items:
type: object
properties:
message:
type: string
required:
- message
description: These are the interaction warnings that are shown in the dashboard. They are meant to provide debug information to you. We recommend logging them to the console.
required:
- status
- data
- warnings
GetHrisStaffingEntitiesParameterPageSize:
type: integer
format: int64
minimum: 1
maximum: 250
default: 100
description: The number of results to return per page. Maximum is 250.
GetHrisSkillsParameterIds:
type: string
description: Filter by a comma-separated list of IDs such as `222k7eCGyUdgt2JWZDNnkDs3,B5DVmypWENfU6eMe6gYDyJG3`.
GetHrisTimeOffBalancesPositiveResponse:
type: object
properties:
status:
type: string
const: success
data:
type: object
properties:
next:
type:
- string
- 'null'
description: Cursor string that can be passed to the `cursor` query parameter to get the next page. If this is `null`, then there are no more pages.
results:
type: array
items:
type: object
properties:
id:
type: string
description: The globally unique ID of this object generated by Kombo. We recommend using this as a stable primary key for syncing.
remote_id:
type:
- string
- 'null'
description: The raw ID of the object in the remote system. We don't recommend using this as a primary key on your side as it might sometimes be compromised of multiple identifiers if a system doesn't provide a clear primary key.
employee_id:
type: string
description: The Kombo ID of the employee to which the balance belongs to. The ID can be used to retrieve the employee from the `get employees` endpoint.
type_id:
type: string
balance:
type:
- number
- 'null'
format: double
minimum: -1.7976931348623157e+308
description: The amount of time available to the employee.
balance_unit:
type:
- string
- 'null'
enum:
- HOURS
- DAYS
description: The time-unit of the balance.
changed_at:
description: The timestamp when this specific record was last modified. This field only updates when properties directly on this record change, NOT when related or nested models change. For filtering that considers nested data changes, use the `updated_after` parameter which will return records when either the record itself OR its related models have been updated.
type: string
format: date-time
externalDocs:
url: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toISOString
remote_deleted_at:
description: The date and time the object was deleted in the remote system. Objects are automatically marked as deleted when Kombo can't retrieve them from the remote system anymore. Kombo will also anonymize entries 14 days after they disappear.
type:
- string
- 'null'
format: date-time
externalDocs:
url: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toISOString
used:
type:
- number
- 'null'
format: double
minimum: -1.7976931348623157e+308
description: The amount of time used by the employee.
used_unit:
type:
- string
- 'null'
enum:
- HOURS
- DAYS
description: The time-unit of the used time.
remote_data:
type:
- object
- 'null'
additionalProperties: true
description: 'Includes the data fetched from the remote system.
Please be aware that including this in you scope config might violate other
scopes that are set.
Remote data always has the endpoint path that we got the data from as the
top level key. For example, it could look like: `{ "/companies": { ... }}`
This is not available on all plans. Reach out to Kombo if you need it.'
type:
type: object
properties:
id:
type: string
description: The globally unique ID of this object generated by Kombo. We recommend using this as a stable primary key for syncing.
remote_id:
type: string
description: The raw ID of the object in the remote system. We don't recommend using this as a primary key on your side as it might sometimes be compromised of multiple identifiers if a system doesn't provide a clear primary key.
name:
type:
- string
- 'null'
description: The absence’s name.
unit:
type:
- string
- 'null'
enum:
- HOURS
- DAYS
description: The time-unit of the absence.
half_days_supported:
type:
- boolean
- 'null'
description: Whether the integration supports half-day absences (represented through `start_half_day` and `end_half_day`) for this absence type.
exact_times_supported:
type:
- boolean
- 'null'
description: '`true` if the system supports exact times (absences with a `start_time` and an `end_time`) for this absence, `false` if not.'
remote_data:
type:
- object
- 'null'
additionalProperties: true
description: 'Includes the data fetched from the remote system.
Please be aware that including this in you scope config might violate other
scopes that are set.
Remote data always has the endpoint path that we got the data from as the
top level key. For example, it could look like: `{ "/companies": { ... }}`
This is not available on all plans. Reach out to Kombo if you need it.'
changed_at:
description: The timestamp when this specific record was last modified. This field only updates when properties directly on this record change, NOT when related or nested models change. For filtering that considers nested data changes, use the `updated_after` parameter which will return records when either the record itself OR its related models have been updated.
type: string
format: date-time
externalDocs:
url: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toISOString
remote_deleted_at:
description: The date and time the object was deleted in the remote system. Objects are automatically marked as deleted when Kombo can't retrieve them from the remote system anymore. Kombo will also anonymize entries 14 days after they disappear.
type:
- string
- 'null'
format: date-time
externalDocs:
url: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toISOString
required:
- id
- remote_id
- name
- unit
- half_days_supported
- exact_times_supported
- remote_data
- changed_at
- remote_deleted_at
examples:
- id: xzZoKssDaMZAd62kxayzzQvD
remote_id: '91'
name: Vacation
unit: DAYS
half_days_supported: true
exact_times_supported: false
remote_data: null
changed_at: '2022-08-07T14:01:29.196Z'
remote_deleted_at: null
required:
- id
- remote_id
- employee_id
- type_id
- balance
- balance_unit
- changed_at
- remote_deleted_at
- used
- used_unit
- remote_data
- type
required:
- next
- results
examples:
- next: eyJwYWdlIjoxMiwibm90ZSI6InRoaXMgaXMganVzdCBhbiBleGFtcGxlIGFuZCBub3QgcmVwcmVzZW50YXRpdmUgZm9yIGEgcmVhbCBjdXJzb3IhIn0=
results:
- id: FuyRuk5NqP3qTcThED3ymTuE
remote_id: '124123'
employee_id: 2Up4ZCvq1bFVzmzXG6EWzV3j
type_id: BQJaBxRCiqN46G27VTegvkEr
balance: 14
balance_unit: DAYS
changed_at: '2022-08-07T14:01:29.196Z'
remote_deleted_at: null
used: 3
used_unit: DAYS
remote_data: null
type:
id: xzZoKssDaMZAd62kxayzzQvD
remote_id: '91'
name: Vacation
unit: DAYS
half_days_supported: true
exact_times_supported: false
remote_data: null
changed_at: '2022-08-07T14:01:29.196Z'
remote_deleted_at: null
required:
- status
- data
GetHrisEmployeesFormPositiveResponse:
type: object
properties:
status:
type: string
const: success
data:
type: object
properties:
properties:
type: object
additionalProperties:
discriminator:
propertyName: type
anyOf:
- type: object
properties:
label:
type: string
required:
type: boolean
description:
type:
- string
- 'null'
unified_key:
type:
- string
- 'null'
enum:
- first_name
- last_name
- date_of_birth
- gender
- home_address.city
- home_address.country
- home_address.state
- home_address.street_1
- home_address.street_2
- home_address.zip_code
- job_title
- legal_entity_id
- location_id
- mobile_phone_number
- home_phone_number
- nationality
- start_date
- work_email
- private_email
- yearly_salary
type:
type: string
const: text
min_length:
type:
- number
- 'null'
format: double
minimum: -1.7976931348623157e+308
max_length:
type:
- number
- 'null'
format: double
minimum: -1.7976931348623157e+308
reg_exp:
type:
- string
- 'null'
required:
- label
- required
- type
- type: object
properties:
label:
type: string
required:
type: boolean
description:
type:
- string
- 'null'
unified_key:
type:
- string
- 'null'
enum:
- first_name
- last_name
- date_of_birth
- gender
- home_address.city
- home_address.country
- home_address.state
- home_address.street_1
- home_address.street_2
- home_address.zip_code
- job_title
- legal_entity_id
- location_id
- mobile_phone_number
- home_phone_number
- nationality
- start_date
- work_email
- private_email
- yearly_salary
type:
type: string
const: number
min:
type:
- number
- 'null'
format: double
minimum: -1.7976931348623157e+308
max:
type:
- number
- 'null'
format: double
minimum: -1.7976931348623157e+308
required:
- label
- required
- type
- type: object
properties:
label:
type: string
required:
type: boolean
description:
type:
- string
- 'null'
unified_key:
type:
- string
- 'null'
enum:
- first_name
- last_name
- date_of_birth
- gender
- home_address.city
- home_address.country
- home_address.state
- home_address.street_1
- home_address.street_2
- home_address.zip_code
- job_title
- legal_entity_id
- location_id
- mobile_phone_number
- home_phone_number
- nationality
- start_date
- work_email
- private_email
- yearly_salary
type:
type: string
const: date
required:
- label
- required
- type
- type: object
properties:
label:
type: string
required:
type: boolean
description:
type:
- string
- 'null'
unified_key:
type:
- string
- 'null'
enum:
- first_name
- last_name
- date_of_birth
- gender
- home_address.city
- home_address.country
- home_address.state
- home_address.street_1
- home_address.street_2
- home_address.zip_code
- job_title
- legal_entity_id
- location_id
- mobile_phone_number
- home_phone_number
- nationality
- start_date
- work_email
- private_email
- yearly_salary
type:
type: string
const: single_select
options:
discriminator:
propertyName: type
anyOf:
- type: object
properties:
type:
type: string
const: inline
entries:
type: array
items:
type: object
properties:
id:
type: string
label:
type: string
unified_value:
type: string
remote_id:
oneOf:
- type: string
- type: number
format: double
minimum: -1.7976931348623157e+308
required:
- id
- label
- remote_id
required:
- type
- entries
- type: object
properties:
type:
type: string
const: referenced
link:
type: string
required:
- type
- link
required:
- label
- required
- type
- options
- type: object
properties:
label:
type: string
required:
type: boolean
description:
type:
- string
- 'null'
unified_key:
type:
- string
- 'null'
type:
type: string
const: multi_select
min_items:
type:
- number
- 'null'
format: double
minimum: -1.7976931348623157e+308
max_items:
type:
- number
- 'null'
format: double
minimum: -1.7976931348623157e+308
options:
discriminator:
propertyName: type
anyOf:
- type: object
properties:
type:
type: string
const: inline
entries:
type: array
items:
type: object
properties:
id:
type: string
label:
type: string
unified_value:
type: string
remote_id:
oneOf:
- type: string
- type: number
format: double
minimum: -1.7976931348623157e+308
required:
- id
- label
- remote_id
required:
- type
- entries
- type: object
properties:
type:
type: string
const: referenced
link:
type: string
required:
- type
- link
required:
- label
- required
- type
- options
- type: object
properties:
label:
type: string
required:
type: boolean
description:
type:
- string
- 'null'
unified_key:
type:
- string
- 'null'
enum:
- first_name
- last_name
- date_of_birth
- gender
- home_address.city
- home_address.country
- home_address.state
- home_address.street_1
- home_address.street_2
- home_address.zip_code
- job_title
- legal_entity_id
- location_id
- mobile_phone_number
- home_phone_number
- nationality
- start_date
- work_email
- private_email
- yearly_salary
type:
type: string
const: checkbox
required:
- label
- required
- type
- type: object
properties:
label:
type: string
required:
type: boolean
description:
type:
- string
- 'null'
unified_key:
type:
- string
- 'null'
enum:
- first_name
- last_name
- date_of_birth
- gender
- home_address.city
- home_address.country
- home_address.state
- home_address.street_1
- home_address.street_2
- home_address.zip_code
- job_title
- legal_entity_id
- location_id
- mobile_phone_number
- home_phone_number
- nationality
- start_date
- work_email
- private_email
- yearly_salary
type:
type: string
const: object
properties:
$ref: '#/components/schemas/Schema1'
required:
- label
- required
- type
- properties
- type: object
properties:
label:
type: string
required:
type: boolean
description:
type:
- string
- 'null'
unified_key:
type:
- string
- 'null'
enum:
- first_name
- last_name
- date_of_birth
- gender
- home_address.city
- home_address.country
- home_address.state
- home_address.street_1
- home_address.street_2
- home_address.zip_code
- job_title
- legal_entity_id
- location_id
- mobile_phone_number
- home_phone_number
- nationality
- start_date
- work_email
- private_email
- yearly_salary
type:
type: string
const: array
item_type:
$ref: '#/components/schemas/Schema2'
min_items:
type:
- number
- 'null'
format: double
minimum: -1.7976931348623157e+308
max_items:
type:
- number
- 'null'
format: double
minimum: -1.7976931348623157e+308
required:
- label
- required
- type
- item_type
- type: object
properties:
label:
type: string
required:
type: boolean
description:
type:
- string
- 'null'
unified_key:
type:
- string
- 'null'
enum:
- first_name
- last_name
- date_of_birth
- gender
- home_address.city
- home_address.country
- home_address.state
- home_address.street_1
- home_address.street_2
- home_address.zip_code
- job_title
- legal_entity_id
- location_id
- mobile_phone_number
- home_phone_number
- nationality
- start_date
- work_email
- private_email
- yearly_salary
type:
type: string
const: file
file_restrictions:
type: object
properties:
accepted_mime_types:
type: array
items:
type: string
max_file_size:
type:
- number
- 'null'
format: double
minimum: -1.7976931348623157e+308
required:
- accepted_mime_types
required:
- label
- required
- type
- file_restrictions
required:
- properties
examples:
- properties:
firstName:
label: First Name
required: true
description: Employee's first name
unified_key: first_name
type: text
min_length: 1
max_length: 100
reg_exp: null
startDate:
label: Start Date
required: true
description: Employee's start date
unified_key: start_date
type: date
workLocation:
label: Work Location
required: false
description: Employee's work location
unified_key: null
type: object
properties:
site:
label: Site
required: true
description: Employee's site
unified_key: null
type: single_select
options:
type: inline
entries:
- id: FXrER44xubBqA9DLgZ3PFNNx
label: Site 1
unified_value: '1'
remote_id: site_1
- id: 2rv75UKT2XBoQXsUb9agiTUm
label: Site 2
unified_value: '2'
remote_id: site_2
keyNumbers:
label: Key Numbers
required: false
description: Employee's key numbers
unified_key: null
type: array
item_type:
label: Key Number
required: false
description: The number of the keys which belong to the employee
unified_key: null
type: number
min: 0
max: 99
min_items: 2
max_items: 5
warnings:
type: array
items:
type: object
properties:
message:
type: string
required:
- message
description: These are the interaction warnings that are shown in the dashboard. They are meant to provide debug information to you. We recommend logging them to the console.
required:
- status
- data
- warnings
GetHrisSkillsParameterNameContains:
type: string
description: Filter by the `name` field. Can be used to find a skills by keywords present in the skill name.
GetHrisStaffingEntitiesParameterUpdatedAfter:
description: 'Filter the entries based on the modification date in format `YYYY-MM-DDTHH:mm:ss.sssZ`. Returns records where either the record itself **OR** its nested data has been updated since this timestamp, even if the record''s own `changed_at` field remains unchanged.
If you want to track entry deletion, also set the `include_deleted=true` query parameter, because otherwise, deleted entries will be hidden.
For more details, see [Understanding changed_at vs updated_after Behavior](https://docs.kombo.dev/ats/getting-started/fetching-data#understanding-changed_at-vs-updated_after-behavior).
For this endpoint, `updated_after` matches when the returned record changed, or when related data changed as described below.
| Path | Added/Removed | Linked Record |
| --- | --- | --- |
| `locations` | ✓ Yes | ✓ Yes |
| `legal_entities` | ✓ Yes | ✓ Yes |
| `groups` | ✓ Yes | ✓ Yes |
_**Added/Removed**: Whether adding or removing entries from this list triggers an update (n/a for single records). **Linked Record**: Whether changes to the linked record itself trigger an update._'
type: string
format: date-time
pattern: ^\d{4}-\d{2}-\d{2}(T\d{2}:\d{2}:\d{2}(\.\d+)?)?Z?$
externalDocs:
url: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toISOString
PostHrisEmployeeSkillAssignmentsPositiveResponse:
type: object
properties:
status:
type: string
const: success
data:
type: object
properties:
id:
type: string
description: The unique identifier for the employee skill assignment
employee_id:
type: string
description: The ID of the employee
skill_id:
type: string
description: The ID of the skill
current_level:
type:
- string
- 'null'
description: The current skill level of the employee
required:
- id
- employee_id
- skill_id
- current_level
examples:
- id: 8AvRLpxwY5J6pGxfY6fUD81Z
employee_id: 26vafvWSRmbhNcxJYqjCzuJg
skill_id: 28KMdr68N8kG9EzLwjsN9aoz
current_level: Proficiency Level 1
required:
- status
- data
GetHrisLocationsParameterUpdatedAfter:
description: 'Filter the entries based on the modification date in format `YYYY-MM-DDTHH:mm:ss.sssZ`. Returns records where either the record itself **OR** its nested data has been updated since this timestamp, even if the record''s own `changed_at` field remains unchanged.
If you want to track entry deletion, also set the `include_deleted=true` query parameter, because otherwise, deleted entries will be hidden.
For more details, see [Understanding changed_at vs updated_after Behavior](https://docs.kombo.dev/ats/getting-started/fetching-data#understanding-changed_at-vs-updated_after-behavior).
For this endpoint, only changes to the returned record itself are considered.'
type: string
format: date-time
pattern: ^\d{4}-\d{2}-\d{2}(T\d{2}:\d{2}:\d{2}(\.\d+)?)?Z?$
externalDocs:
url: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toISOString
GetHrisLocationsParameterPageSize:
type: integer
format: int64
minimum: 1
maximum: 250
default: 100
description: The number of results to return per page. Maximum is 250.
GetHrisEmployeesParameterIncludeDeleted:
type: string
enum:
- 'true'
- 'false'
default: 'false'
description: By default, deleted entries are not returned. Use the `include_deleted` query param to include deleted entries too.
GetHrisEmployeesPositiveResponse:
type: object
properties:
status:
type: string
const: success
data:
type: object
properties:
next:
type:
- string
- 'null'
description: Cursor string that can be passed to the `cursor` query parameter to get the next page. If this is `null`, then there are no more pages.
results:
type: array
items:
type: object
properties:
id:
type: string
description: The globally unique ID of this object generated by Kombo. We recommend using this as a stable primary key for syncing.
remote_id:
type: string
description: The raw ID of the object in the remote system. We don't recommend using this as a primary key on your side as it might sometimes be compromised of multiple identifiers if a system doesn't provide a clear primary key.
employee_number:
type:
- string
- 'null'
description: The employee’s organization-internal employee number.
first_name:
type:
- string
- 'null'
description: The employee’s first name.
last_name:
type:
- string
- 'null'
description: The employee’s last name.
nationality:
type:
- string
- 'null'
description: The employee’s nationality.
display_full_name:
type:
- string
- 'null'
description: The employee’s full name, including any middle names. Not all HR systems provide an explicit display name, so we recommend falling back to `first_name` and `last_name`.
job_title:
type:
- string
- 'null'
description: The employee’s job title.
work_email:
type:
- string
- 'null'
pattern: ^(?!\.)(?!.*\.\.)([\w'+-.]*)[\w+-]@([\da-z][\da-z-]*\.)+[a-z]{2,}$
description: The employee’s work email address. If the email address is invalid, we will set this to `null`.
personal_email:
type:
- string
- 'null'
pattern: ^(?!\.)(?!.*\.\.)([\w'+-.]*)[\w+-]@([\da-z][\da-z-]*\.)+[a-z]{2,}$
description: The employee’s personal email address. If the email address is invalid, we will set this to `null`.
mobile_phone_number:
type:
- string
- 'null'
description: The employee’s mobile phone number.
ssn:
type:
- string
- 'null'
description: The employee’s social security number
tax_id:
type:
- string
- 'null'
description: The employee’s tax ID.
gender:
anyOf:
- type: string
enum:
- MALE
- FEMALE
- NON_BINARY
- NOT_SPECIFIED
- type: string
description: 'If we can''t find a clear mapping: The original string passed through.'
- type: 'null'
description: The employee’s gender.
ethnicity:
anyOf:
- type: string
enum:
- WHITE
- ASIAN
- HISPANIC_LATINO
- HAWAIIAN
- NATIVE_AMERICAN
- BLACK_AFRICAN_AMERICAN
- MULTIPLE_ETHNICITIES
- DECLINE_TO_SPECIFY
- type: string
description: 'If we can''t find a clear mapping: The original string passed through.'
- type: 'null'
description: The employee’s ethnicity. In rare cases where we can’t find a clear mapping, the original string is passed through.
marital_status:
anyOf:
- type: string
enum:
- SINGLE
- MARRIED
- DOMESTIC_PARTNERSHIP
- WIDOWED
- DIVORCED
- SEPARATED
- NOT_MARRIED
- type: string
description: 'If we can''t find a clear mapping: The original string passed through.'
- type: 'null'
description: The employee’s current marital status. In rare cases where we can’t find a clear mapping, the original string is passed through.
employment_status:
anyOf:
- type: string
enum:
- ACTIVE
- PENDING
- INACTIVE
- LEAVE
- type: string
description: 'If we can''t find a clear mapping: The original string passed through.'
- type: 'null'
description: "The employee’s current employment status:\n\n- `ACTIVE`: the employee is **actively employed**\n- `PENDING`: the employee is **not actively employed yet** (but they signed their contract or are part of an onboarding process)\n- `INACTIVE`: the employee is **not actively employed** anymore\n- `LEAVE`: the employee is still employed but **currently on leave** (note that not all HR systems support this status — use our absences API for detailed information)\n\n In rare cases where we can’t find a clear mapping, the original string is passed through."
employment_type:
anyOf:
- type: string
enum:
- FULL_TIME
- PART_TIME
- CONTRACT
- INTERNSHIP
- FREELANCE
- WORKING_STUDENT
- APPRENTICESHIP
- TRAINING
- type: string
description: 'If we can''t find a clear mapping: The original string passed through.'
- type: 'null'
description: "The employee’s current employment type:\n\n- `FULL_TIME`: the employee is actively employed\n- `PART_TIME`: the employee is working only part of the usual working hours\n- `CONTRACT`: the employee is working temporarily under a contract\n- `INTERNSHIP`: the employee is working as an intern\n- `FREELANCE`: the employee is working as a freelancer\n- `WORKING_STUDENT`: the employee is working as a working student\n- `APPRENTICESHIP`: the employee is working in an apprenticeship\n- `TRAINING`: the employee is working in a training program\n\n In rare cases where we can’t find a clear mapping, the original string is passed through."
weekly_hours:
type:
- number
- 'null'
format: double
minimum: -1.7976931348623157e+308
description: The employee’s weekly working hours.
avatar:
type:
- string
- 'null'
description: URL to the employee’s avatar. This is either the raw URL from the HR system (in cases where it can be requested without short-lived authentication) _or_ a URL to a temporarily cached version of the file hosted by Kombo. Kombo will delete the cached file after its deletion in the source system.
work_location_id:
type:
- string
- 'null'
description: The Kombo ID of the employee’s work location. The ID can be used to retrieve the work location from the `get work locations` endpoint.
legal_entity_id:
type:
- string
- 'null'
description: The Kombo ID of the employee’s legal entity. The ID can be used to retrieve the legal entity from the `get legal entities` endpoint.
manager_id:
type:
- string
- 'null'
description: The Kombo ID of the employee’s manager. The ID can be used to retrieve the manager from the `get employees` endpoint.
home_address:
type:
- object
- 'null'
properties:
city:
type:
- string
- 'null'
country:
type:
- string
- 'null'
description: Contains the ISO2 country code if possible. If not, it contains the original value.
raw:
type:
- string
- 'null'
description: If we have address data, this is filled with the raw address string.
state:
type:
- string
- 'null'
street_1:
type:
- string
- 'null'
description: If we can parse the address data, this field contains the first part of the street information.
street_2:
type:
- string
- 'null'
zip_code:
type:
- string
- 'null'
description: The employee’s home address.
bank_accounts:
type:
- array
- 'null'
items:
type: object
properties:
iban:
type:
- string
- 'null'
description: The internationally unique IBAN identifying this account. If we detect a valid IBAN from the account number and this field would otherwise be empty, we will automatically populate this field.
bic:
type:
- string
- 'null'
description: The internationally unique BIC/SWIFT code identifying the bank behind this account. If we detect a valid BIC from the domestic bank routing number and this field would otherwise be empty, we will automatically populate this field.
account_number:
type:
- string
- 'null'
description: The bank-specific account number. Some companies use the account number field to put the IBAN here.
holder_name:
type:
- string
- 'null'
description: The name of the holder of this account.
bank_name:
type:
- string
- 'null'
description: The name of the bank behind this account.
domestic_bank_routing:
type:
- object
- 'null'
properties:
number:
type: string
description: Bank routing number (e.g. DE Bankleitzahl, GB Sort Code, US ABA routing number, AU BSB code). This field is not formatted and therefore might contain delimiters (eg. 01-23-45).
type:
type:
- string
- 'null'
enum:
- GB_SORT_CODE
- DE_BANKLEITZAHL
- US_ABA_ROUTING_TRANSIT_NUMBER
- CA_ROUTING_NUMBER
- AU_BSB_CODE
- FR_RIB
description: Enum of the routing type, prefixed with the iso-3166-1-alpha-2 banks origin country. If there is uncertainty about the type, it will be set to null.
required:
- number
- type
description: The employee’s bank accounts.
date_of_birth:
description: The employee’s date of birth.
type:
- string
- 'null'
format: date-time
externalDocs:
url: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toISOString
start_date:
description: The date the employee started working for the organization.
type:
- string
- 'null'
format: date-time
externalDocs:
url: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toISOString
termination_date:
description: The date when the employment ends. Can be in the past or future.
type:
- string
- 'null'
format: date-time
externalDocs:
url: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toISOString
remote_created_at:
description: The date and time the object was created in the remote system.
type:
- string
- 'null'
format: date-time
externalDocs:
url: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toISOString
changed_at:
description: The timestamp when this specific record was last modified. This field only updates when properties directly on this record change, NOT when related or nested models change. For filtering that considers nested data changes, use the `updated_after` parameter which will return records when either the record itself OR its related models have been updated.
type: string
format: date-time
externalDocs:
url: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toISOString
remote_deleted_at:
description: The date and time the object was deleted in the remote system. Objects are automatically marked as deleted when Kombo can't retrieve them from the remote system anymore. Kombo will also anonymize entries 14 days after they disappear.
type:
- string
- 'null'
format: date-time
externalDocs:
url: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toISOString
custom_fields:
type:
- object
- 'null'
additionalProperties: true
description: A key-value store of fields not covered by the schema. [Read more](/custom-fields)
integration_fields:
type: array
items:
type: object
properties:
id:
type: string
description: The globally unique ID of this object.
key:
type: string
description: The key of the field in the remote system.
type:
type: string
enum:
- DEFAULT
- CUSTOM
description: '- `DEFAULT`: static fields in the remote system.
- `CUSTOM`: fields that are created/editable by the user.'
value:
type: 'null'
description: The field's value.
label:
type:
- string
- 'null'
description: The label of the field. (not always available)
required:
- id
- key
- type
- label
description: An array of selected passthrough integration fields. [Read more](/integration-fields)
examples:
- - id: 5NVFhMpB9Ah6by44tzNjZLyE
key: firstName
type: DEFAULT
value: Frank
label: First Name
- id: 8nuajYpoRd5GnxEQaaWKUDYQ
key: customTshirtSize
type: CUSTOM
value: XL
label: T-Shirt Size
remote_data:
type:
- object
- 'null'
additionalProperties: true
description: 'Includes the data fetched from the remote system.
Please be aware that including this in you scope config might violate other
scopes that are set.
Remote data always has the endpoint path that we got the data from as the
top level key. For example, it could look like: `{ "/companies": { ... }}`
This is not available on all plans. Reach out to Kombo if you need it.'
employments:
type: array
items:
type: object
properties:
id:
type: string
description: The globally unique ID of this object generated by Kombo. We recommend using this as a stable primary key for syncing.
remote_id:
type:
- string
- 'null'
description: The raw ID of the object in the remote system. We don't recommend using this as a primary key on your side as it might sometimes be compromised of multiple identifiers if a system doesn't provide a clear primary key.
employee_id:
type: string
description: The Kombo ID of the employment’s employee. The ID can be used to retrieve the employee from the `get employees` endpoint.
job_title:
type:
- string
- 'null'
description: This field can contain historic job titles. Please use the `job_title` field on the employee for the active job title of an employee.
pay_rate:
type:
- number
- 'null'
format: double
minimum: -1.7976931348623157e+308
description: The monetary amount paid to an employee.
pay_period:
anyOf:
- type: string
enum:
- HOUR
- DAY
- WEEK
- TWO_WEEKS
- HALF_MONTH
- MONTH
- TWO_MONTHS
- QUARTER
- HALF_YEAR
- YEAR
- type: string
description: 'If we can''t find a clear mapping: The original string passed through.'
- type: 'null'
description: 'The time interval which the `pay_rate` is describing.
A `pay_rate` value of `12000` with a `pay_period` of `YEAR` would indicate that the employee receives 12000 over the course of a year. In rare cases where we can’t find a clear mapping, the original string is passed through.'
pay_frequency:
anyOf:
- type: string
enum:
- DAILY
- WEEKLY
- BIWEEKLY
- MONTHLY
- SEMIMONTHLY
- QUARTERLY
- SEMIANNUALLY
- ANNUALLY
- PRO_RATA
- type: string
description: 'If we can''t find a clear mapping: The original string passed through.'
- type: 'null'
description: 'The time interval at which the employee receives payment.
A `pay_rate` of `12000`, with a `pay_period` of `YEAR`, and a `pay_frequency` of `MONTHLY` would indicate that the employee is paid 1000 every month. In rare cases where we can’t find a clear mapping, the original string is passed through.'
employment_type:
anyOf:
- type: string
enum:
- FULL_TIME
- PART_TIME
- CONTRACT
- INTERNSHIP
- FREELANCE
- WORKING_STUDENT
- APPRENTICESHIP
- TRAINING
- type: string
description: 'If we can''t find a clear mapping: The original string passed through.'
- type: 'null'
description: "The employee’s current employment type:\n\n- `FULL_TIME`: the employee is actively employed\n- `PART_TIME`: the employee is working only part of the usual working hours\n- `CONTRACT`: the employee is working temporarily under a contract\n- `INTERNSHIP`: the employee is working as an intern\n- `FREELANCE`: the employee is working as a freelancer\n- `WORKING_STUDENT`: the employee is working as a working student\n- `APPRENTICESHIP`: the employee is working in an apprenticeship\n- `TRAINING`: the employee is working in a training program\n\n In rare cases where we can’t find a clear mapping, the original string is passed through."
pay_currency:
type:
- string
- 'null'
description: The currency that the employee is paid in. Usually returned in [ISO 4217 currency codes](https://www.iso.org/iso-4217-currency-codes.html).
effective_date:
description: The date of when the employment started.
type:
- string
- 'null'
format: date-time
externalDocs:
url: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toISOString
changed_at:
description: The timestamp when this specific record was last modified. This field only updates when properties directly on this record change, NOT when related or nested models change. For filtering that considers nested data changes, use the `updated_after` parameter which will return records when either the record itself OR its related models have been updated.
type: string
format: date-time
externalDocs:
url: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toISOString
remote_deleted_at:
description: The date and time the object was deleted in the remote system. Objects are automatically marked as deleted when Kombo can't retrieve them from the remote system anymore. Kombo will also anonymize entries 14 days after they disappear.
type:
- string
- 'null'
format: date-time
externalDocs:
url: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toISOString
remote_data:
type:
- object
- 'null'
additionalProperties: true
description: 'Includes the data fetched from the remote system.
Please be aware that including this in you scope config might violate other
scopes that are set.
Remote data always has the endpoint path that we got the data from as the
top level key. For example, it could look like: `{ "/companies": { ... }}`
This is not available on all plans. Reach out to Kombo if you need it.'
custom_fields:
type:
- object
- 'null'
additionalProperties: true
description: A key-value store of fields not covered by the schema. [Read more](/custom-fields)
integration_fields:
type: array
items:
type: object
properties:
id:
type: string
description: The globally unique ID of this object.
key:
type: string
description: The key of the field in the remote system.
type:
type: string
enum:
- DEFAULT
- CUSTOM
description: '- `DEFAULT`: static fields in the remote system.
- `CUSTOM`: fields that are created/editable by the user.'
value:
type: 'null'
description: The field's value.
label:
type:
- string
- 'null'
description: The label of the field. (not always available)
required:
- id
- key
- type
- label
description: An array of selected passthrough integration fields. [Read more](/integration-fields)
examples:
- - id: 5NVFhMpB9Ah6by44tzNjZLyE
key: firstName
type: DEFAULT
value: Frank
label: First Name
- id: 8nuajYpoRd5GnxEQaaWKUDYQ
key: customTshirtSize
type: CUSTOM
value: XL
label: T-Shirt Size
required:
- id
- remote_id
- employee_id
- job_title
- pay_rate
- pay_currency
- effective_date
- changed_at
- remote_deleted_at
- remote_data
- custom_fields
- integration_fields
examples:
- id: 12vpXR7BeqYNWDShXRgsonnm
remote_id: '859'
employee_id: 26vafvWSRmbhNcxJYqjCzuJg
job_title: Social Media Marketer
pay_rate: 85000
pay_period: YEAR
pay_frequency: SEMIMONTHLY
employment_type: FULL_TIME
pay_currency: EUR
effective_date: '2021-01-30T00:00:00.000Z'
changed_at: '2022-08-07T14:01:29.196Z'
remote_deleted_at: null
remote_data: null
custom_fields: {}
integration_fields: []
time_off_balances:
type: array
items:
type: object
properties:
id:
type: string
description: The globally unique ID of this object generated by Kombo. We recommend using this as a stable primary key for syncing.
remote_id:
type:
- string
- 'null'
description: The raw ID of the object in the remote system. We don't recommend using this as a primary key on your side as it might sometimes be compromised of multiple identifiers if a system doesn't provide a clear primary key.
employee_id:
type: string
description: The Kombo ID of the employee to which the balance belongs to. The ID can be used to retrieve the employee from the `get employees` endpoint.
type_id:
type: string
balance:
type:
- number
- 'null'
format: double
minimum: -1.7976931348623157e+308
description: The amount of time available to the employee.
balance_unit:
type:
- string
- 'null'
enum:
- HOURS
- DAYS
description: The time-unit of the balance.
changed_at:
description: The timestamp when this specific record was last modified. This field only updates when properties directly on this record change, NOT when related or nested models change. For filtering that considers nested data changes, use the `updated_after` parameter which will return records when either the record itself OR its related models have been updated.
type: string
format: date-time
externalDocs:
url: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toISOString
remote_deleted_at:
description: The date and time the object was deleted in the remote system. Objects are automatically marked as deleted when Kombo can't retrieve them from the remote system anymore. Kombo will also anonymize entries 14 days after they disappear.
type:
- string
- 'null'
format: date-time
externalDocs:
url: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toISOString
used:
type:
- number
- 'null'
format: double
minimum: -1.7976931348623157e+308
description: The amount of time used by the employee.
used_unit:
type:
- string
- 'null'
enum:
- HOURS
- DAYS
description: The time-unit of the used time.
remote_data:
type:
- object
- 'null'
additionalProperties: true
description: 'Includes the data fetched from the remote system.
Please be aware that including this in you scope config might violate other
scopes that are set.
Remote data always has the endpoint path that we got the data from as the
top level key. For example, it could look like: `{ "/companies": { ... }}`
This is not available on all plans. Reach out to Kombo if you need it.'
required:
- id
- remote_id
- employee_id
- type_id
- balance
- balance_unit
- changed_at
- remote_deleted_at
- used
- used_unit
- remote_data
examples:
- id: FuyRuk5NqP3qTcThED3ymTuE
remote_id: '124123'
employee_id: 2Up4ZCvq1bFVzmzXG6EWzV3j
type_id: BQJaBxRCiqN46G27VTegvkEr
balance: 14
balance_unit: DAYS
changed_at: '2022-08-07T14:01:29.196Z'
remote_deleted_at: null
used: 3
used_unit: DAYS
remote_data: null
manager:
type:
- object
- 'null'
properties:
first_name:
type:
- string
- 'null'
description: The employee’s first name.
last_name:
type:
- string
- 'null'
description: The employee’s last name.
display_full_name:
type:
- string
- 'null'
description: The employee’s full name, including any middle names. Not all HR systems provide an explicit display name, so we recommend falling back to `first_name` and `last_name`.
id:
type: string
description: The globally unique ID of this object generated by Kombo. We recommend using this as a stable primary key for syncing.
employee_number:
type:
- string
- 'null'
description: The employee’s organization-internal employee number.
work_email:
type:
- string
- 'null'
pattern: ^(?!\.)(?!.*\.\.)([\w'+-.]*)[\w+-]@([\da-z][\da-z-]*\.)+[a-z]{2,}$
description: The employee’s work email address. If the email address is invalid, we will set this to `null`.
remote_id:
type: string
description: The raw ID of the object in the remote system. We don't recommend using this as a primary key on your side as it might sometimes be compromised of multiple identifiers if a system doesn't provide a clear primary key.
employment_status:
anyOf:
- type: string
enum:
- ACTIVE
- PENDING
- INACTIVE
- LEAVE
- type: string
description: 'If we can''t find a clear mapping: The original string passed through.'
- type: 'null'
description: "The employee’s current employment status:\n\n- `ACTIVE`: the employee is **actively employed**\n- `PENDING`: the employee is **not actively employed yet** (but they signed their contract or are part of an onboarding process)\n- `INACTIVE`: the employee is **not actively employed** anymore\n- `LEAVE`: the employee is still employed but **currently on leave** (note that not all HR systems support this status — use our absences API for detailed information)\n\n In rare cases where we can’t find a clear mapping, the original string is passed through."
termination_date:
description: The date when the employment ends. Can be in the past or future.
type:
- string
- 'null'
format: date-time
externalDocs:
url: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toISOString
required:
- first_name
- last_name
- display_full_name
- id
- employee_number
- remote_id
- termination_date
examples:
- first_name: John
last_name: Doe
display_full_name: John Doe
id: 26vafvWSRmbhNcxJYqjCzuJg
employee_number: '3243422'
work_email: john.doe@acme.com
remote_id: '32'
employment_status: INACTIVE
termination_date: '2022-05-20T00:00:00.000Z'
groups:
type: array
items:
type: object
properties:
id:
type: string
description: The globally unique ID of this object generated by Kombo. We recommend using this as a stable primary key for syncing.
remote_id:
type: string
description: The raw ID of the object in the remote system. We don't recommend using this as a primary key on your side as it might sometimes be compromised of multiple identifiers if a system doesn't provide a clear primary key.
name:
type:
- string
- 'null'
description: The name of the group.
type:
type:
- string
- 'null'
enum:
- DEPARTMENT
- TEAM
- COST_CENTER
description: Type of the group.
required:
- id
- remote_id
- name
- type
examples:
- id: 4B9bKBpX5tnwjiG93TAqF7ci
remote_id: '49'
name: Customer Success
type: TEAM
legal_entity:
type:
- object
- 'null'
properties:
id:
type: string
description: The globally unique ID of this object generated by Kombo. We recommend using this as a stable primary key for syncing.
remote_id:
type:
- string
- 'null'
description: The raw ID of the object in the remote system. We don't recommend using this as a primary key on your side as it might sometimes be compromised of multiple identifiers if a system doesn't provide a clear primary key.
name:
type:
- string
- 'null'
description: The legal entity’s name.
address:
type:
- object
- 'null'
properties:
city:
type:
- string
- 'null'
country:
type:
- string
- 'null'
description: Contains the ISO2 country code if possible. If not, it contains the original value.
raw:
type:
- string
- 'null'
description: If we have address data, this is filled with the raw address string.
state:
type:
- string
- 'null'
street_1:
type:
- string
- 'null'
description: If we can parse the address data, this field contains the first part of the street information.
street_2:
type:
- string
- 'null'
zip_code:
type:
- string
- 'null'
description: The legal entity’s address.
required:
- id
- remote_id
- name
examples:
- id: 4B9bKBpX5tnwjiG93TAqF7ci
remote_id: '49'
name: ACME Inc.
address:
city: Berlin
country: DE
raw: 'Sonnenallee 63
12045 Berlin, Berlin
Germany'
state: Berlin
street_1: Sonnenallee 63
street_2: null
zip_code: '12045'
teams:
type: array
items:
type: object
properties:
id:
type: string
description: The globally unique ID of this object generated by Kombo. We recommend using this as a stable primary key for syncing.
remote_id:
type: string
description: The raw ID of the object in the remote system. We don't recommend using this as a primary key on your side as it might sometimes be compromised of multiple identifiers if a system doesn't provide a clear primary key.
name:
type:
- string
- 'null'
description: The name of the group.
type:
type:
- string
- 'null'
enum:
- DEPARTMENT
- TEAM
- COST_CENTER
description: Type of the group.
required:
- id
- remote_id
- name
- type
examples:
- id: 4B9bKBpX5tnwjiG93TAqF7ci
remote_id: '49'
name: Customer Success
type: TEAM
description: '**(⚠️ Deprecated - Please use `groups` instead. It includes the same data and the naming is less confusing.)** Maintained field for backwards compatibility.'
work_location:
type:
- object
- 'null'
properties:
id:
type: string
description: The globally unique ID of this object generated by Kombo. We recommend using this as a stable primary key for syncing.
remote_id:
type:
- string
- 'null'
description: The raw ID of the object in the remote system. We don't recommend using this as a primary key on your side as it might sometimes be compromised of multiple identifiers if a system doesn't provide a clear primary key.
name:
type:
- string
- 'null'
description: The work location’s name
address:
type:
- object
- 'null'
properties:
city:
type:
- string
- 'null'
country:
type:
- string
- 'null'
description: Contains the ISO2 country code if possible. If not, it contains the original value.
raw:
type:
- string
- 'null'
description: If we have address data, this is filled with the raw address string.
state:
type:
- string
- 'null'
street_1:
type:
- string
- 'null'
description: If we can parse the address data, this field contains the first part of the street information.
street_2:
type:
- string
- 'null'
zip_code:
type:
- string
- 'null'
description: The work location’s address
type:
type:
- string
- 'null'
description: The work location’s type. A freeform string.
changed_at:
description: The timestamp when this specific record was last modified. This field only updates when properties directly on this record change, NOT when related or nested models change. For filtering that considers nested data changes, use the `updated_after` parameter which will return records when either the record itself OR its related models have been updated.
type: string
format: date-time
externalDocs:
url: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toISOString
remote_deleted_at:
description: The date and time the object was deleted in the remote system. Objects are automatically marked as deleted when Kombo can't retrieve them from the remote system anymore. Kombo will also anonymize entries 14 days after they disappear.
type:
- string
- 'null'
format: date-time
externalDocs:
url: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toISOString
remote_data:
type:
- object
- 'null'
additionalProperties: true
description: 'Includes the data fetched from the remote system.
Please be aware that including this in you scope config might violate other
scopes that are set.
Remote data always has the endpoint path that we got the data from as the
top level key. For example, it could look like: `{ "/companies": { ... }}`
This is not available on all plans. Reach out to Kombo if you need it.'
required:
- id
- remote_id
- name
- type
- changed_at
- remote_deleted_at
- remote_data
examples:
- id: 22st2Ji8XpncEYEak8mvQgQF
remote_id: '1348'
name: Kombo HQ
address:
city: Berlin
country: DE
raw: 'Sonnenallee 63
12045 Berlin, Berlin
Germany'
state: Berlin
street_1: Sonnenallee 63
street_2: null
zip_code: '12045'
type: OFFICE
changed_at: '2022-08-07T14:01:29.196Z'
remote_deleted_at: '2022-08-07T14:01:29.196Z'
remote_data: null
required:
- id
- remote_id
- employee_number
- first_name
- last_name
- nationality
- display_full_name
- job_title
- mobile_phone_number
- ssn
- tax_id
- weekly_hours
- avatar
- work_location_id
- legal_entity_id
- manager_id
- date_of_birth
- start_date
- termination_date
- remote_created_at
- changed_at
- remote_deleted_at
- custom_fields
- integration_fields
- remote_data
- employments
- time_off_balances
- manager
- groups
- legal_entity
- teams
- work_location
required:
- next
- results
examples:
- next: eyJwYWdlIjoxMiwibm90ZSI6InRoaXMgaXMganVzdCBhbiBleGFtcGxlIGFuZCBub3QgcmVwcmVzZW50YXRpdmUgZm9yIGEgcmVhbCBjdXJzb3IhIn0=
results:
- id: 26vafvWSRmbhNcxJYqjCzuJg
remote_id: '32'
employee_number: '3243422'
first_name: John
last_name: Doe
nationality: French
display_full_name: John Doe
job_title: Integrations Team Lead
work_email: john.doe@acme.com
personal_email: john@doe.me
mobile_phone_number: 801-555-4687
ssn: 555-32-6395
tax_id: 12 345 678 901
gender: MALE
ethnicity: BLACK_AFRICAN_AMERICAN
marital_status: MARRIED
employment_status: INACTIVE
employment_type: FULL_TIME
weekly_hours: 40
avatar: https://resources.bamboohr.com/images/photo_person_150x150.png
work_location_id: 7E2gyuv6TmvtByzBxW9Sxt53
legal_entity_id: xB32bied320csBSsl3XWdlw33
manager_id: 9pf2pxBB8VX8EQMC9aipW2Bo
home_address:
city: Berlin
country: DE
raw: 'Sonnenallee 63
12045 Berlin
Germany'
state: Berlin
street_1: Sonnenallee 63
street_2: null
zip_code: '12045'
bank_accounts:
- account_number: '1234567890'
bank_name: Commerzbank
bic: COBADEFFXXX
domestic_bank_routing:
number: '34567890'
type: DE_BANKLEITZAHL
holder_name: John Doe
iban: DE12345678901234567890
date_of_birth: '1986-01-01T00:00:00.000Z'
start_date: '2020-04-07T00:00:00.000Z'
termination_date: '2022-05-20T00:00:00.000Z'
remote_created_at: '2020-04-07T12:32:01.000Z'
changed_at: '2022-08-07T14:01:29.196Z'
remote_deleted_at: null
custom_fields: {}
integration_fields: []
remote_data: null
employments:
- id: 12vpXR7BeqYNWDShXRgsonnm
remote_id: '859'
employee_id: 26vafvWSRmbhNcxJYqjCzuJg
job_title: Social Media Marketer
pay_rate: 85000
pay_period: YEAR
pay_frequency: SEMIMONTHLY
employment_type: FULL_TIME
pay_currency: EUR
effective_date: '2021-01-30T00:00:00.000Z'
changed_at: '2022-08-07T14:01:29.196Z'
remote_deleted_at: null
remote_data: null
custom_fields: {}
integration_fields: []
time_off_balances:
- id: FuyRuk5NqP3qTcThED3ymTuE
remote_id: '124123'
employee_id: 2Up4ZCvq1bFVzmzXG6EWzV3j
type_id: BQJaBxRCiqN46G27VTegvkEr
balance: 14
balance_unit: DAYS
changed_at: '2022-08-07T14:01:29.196Z'
remote_deleted_at: null
used: 3
used_unit: DAYS
remote_data: null
manager:
first_name: John
last_name: Doe
display_full_name: John Doe
id: 26vafvWSRmbhNcxJYqjCzuJg
employee_number: '3243422'
work_email: john.doe@acme.com
remote_id: '32'
employment_status: INACTIVE
termination_date: '2022-05-20T00:00:00.000Z'
groups:
- id: 4B9bKBpX5tnwjiG93TAqF7ci
remote_id: '49'
name: Customer Success
type: TEAM
legal_entity:
id: 4B9bKBpX5tnwjiG93TAqF7ci
remote_id: '49'
name: ACME Inc.
address:
city: Berlin
country: DE
raw: 'Sonnenallee 63
12045 Berlin, Berlin
Germany'
state: Berlin
street_1: Sonnenallee 63
street_2: null
zip_code: '12045'
teams:
- id: 4B9bKBpX5tnwjiG93TAqF7ci
remote_id: '49'
name: Customer Success
type: TEAM
work_location:
id: 22st2Ji8XpncEYEak8mvQgQF
remote_id: '1348'
name: Kombo HQ
address:
city: Berlin
country: DE
raw: 'Sonnenallee 63
12045 Berlin, Berlin
Germany'
state: Berlin
street_1: Sonnenallee 63
street_2: null
zip_code: '12045'
type: OFFICE
changed_at: '2022-08-07T14:01:29.196Z'
remote_deleted_at: '2022-08-07T14:01:29.196Z'
remote_data: null
required:
- status
- data
PatchHrisEmployeeSkillAssignmentsEmployeeSkillAssignmentIdRequestBody:
type: object
properties:
current_level:
type:
- string
- 'null'
description: The current skill level of the employee. Can be `null` to remove the skill level.
required:
- current_level
GetHrisEmployeeDocumentCategoriesParameterIgnoreUnsupportedFilters:
type: string
enum:
- 'true'
- 'false'
default: 'false'
description: When set to `true`, filters targeting fields not supported by this integration will be ignored instead of filtering out all results.
GetHrisPerformanceReviewsParameterIncludeDeleted:
type: string
enum:
- 'true'
- 'false'
default: 'false'
description: By default, deleted entries are not returned. Use the `include_deleted` query param to include deleted entries too.
PatchHrisEmployeeSkillAssignmentsEmployeeSkillAssignmentIdParameterEmployeeSkillAssignmentId:
type: string
description: The ID of the employee skill assignment
GetHrisStaffingEntitiesParameterRemoteIds:
type: string
description: Filter by a comma-separated list of remote IDs.
PostHrisEmployeeSkillAssignmentsRequestBody:
type: object
properties:
employee_id:
type: string
description: The ID of the employee
skill_id:
type: string
description: The ID of the skill
current_level:
type: string
description: The current skill level of the employee
required:
- employee_id
- skill_id
DeleteHrisAbsencesAbsenceIdRequestBody:
type: object
properties:
remote_fields:
type: object
properties:
adpworkforcenow:
type: object
properties:
employment_id:
type: string
description: '[Required] The employment ID of the employee that the absence will be deleted from.'
description: Fields specific to ADP Workforce Now.
description: Additional fields that we will pass through to specific HRIS systems.
GetHrisEmploymentsParameterUpdatedAfter:
description: 'Filter the entries based on the modification date in format `YYYY-MM-DDTHH:mm:ss.sssZ`. Returns records where either the record itself **OR** its nested data has been updated since this timestamp, even if the record''s own `changed_at` field remains unchanged.
If you want to track entry deletion, also set the `include_deleted=true` query parameter, because otherwise, deleted entries will be hidden.
For more details, see [Understanding changed_at vs updated_after Behavior](https://docs.kombo.dev/ats/getting-started/fetching-data#understanding-changed_at-vs-updated_after-behavior).
For this endpoint, only changes to the returned record itself are considered.'
type: string
format: date-time
pattern: ^\d{4}-\d{2}-\d{2}(T\d{2}:\d{2}:\d{2}(\.\d+)?)?Z?$
externalDocs:
url: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toISOString
PatchHrisSkillsSkillIdRequestBody:
type: object
properties:
name:
type: string
description: The name of the skill
levels:
type: array
items:
type: string
description: List of available skill levels (e.g., ["Beginner", "Intermediate", "Advanced"])
GetHrisAbsenceTypesPositiveResponse:
type: object
properties:
status:
type: string
const: success
data:
type: object
properties:
next:
type:
- string
- 'null'
description: Cursor string that can be passed to the `cursor` query parameter to get the next page. If this is `null`, then there are no more pages.
results:
type: array
items:
type: object
properties:
id:
type: string
description: The globally unique ID of this object generated by Kombo. We recommend using this as a stable primary key for syncing.
remote_id:
type: string
description: The raw ID of the object in the remote system. We don't recommend using this as a primary key on your side as it might sometimes be compromised of multiple identifiers if a system doesn't provide a clear primary key.
name:
type:
- string
- 'null'
description: The absence’s name.
unit:
type:
- string
- 'null'
enum:
- HOURS
- DAYS
description: The time-unit of the absence.
half_days_supported:
type:
- boolean
- 'null'
description: Whether the integration supports half-day absences (represented through `start_half_day` and `end_half_day`) for this absence type.
exact_times_supported:
type:
- boolean
- 'null'
description: '`true` if the system supports exact times (absences with a `start_time` and an `end_time`) for this absence, `false` if not.'
remote_data:
type:
- object
- 'null'
additionalProperties: true
description: 'Includes the data fetched from the remote system.
Please be aware that including this in you scope config might violate other
scopes that are set.
Remote data always has the endpoint path that we got the data from as the
top level key. For example, it could look like: `{ "/companies": { ... }}`
This is not available on all plans. Reach out to Kombo if you need it.'
changed_at:
description: The timestamp when this specific record was last modified. This field only updates when properties directly on this record change, NOT when related or nested models change. For filtering that considers nested data changes, use the `updated_after` parameter which will return records when either the record itself OR its related models have been updated.
type: string
format: date-time
externalDocs:
url: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toISOString
remote_deleted_at:
description: The date and time the object was deleted in the remote system. Objects are automatically marked as deleted when Kombo can't retrieve them from the remote system anymore. Kombo will also anonymize entries 14 days after they disappear.
type:
- string
- 'null'
format: date-time
externalDocs:
url: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toISOString
required:
- id
- remote_id
- name
- unit
- half_days_supported
- exact_times_supported
- remote_data
- changed_at
- remote_deleted_at
examples:
- id: xzZoKssDaMZAd62kxayzzQvD
remote_id: '91'
name: Vacation
unit: DAYS
half_days_supported: true
exact_times_supported: false
remote_data: null
changed_at: '2022-08-07T14:01:29.196Z'
remote_deleted_at: null
required:
- next
- results
examples:
- next: eyJwYWdlIjoxMiwibm90ZSI6InRoaXMgaXMganVzdCBhbiBleGFtcGxlIGFuZCBub3QgcmVwcmVzZW50YXRpdmUgZm9yIGEgcmVhbCBjdXJzb3IhIn0=
results:
- id: xzZoKssDaMZAd62kxayzzQvD
remote_id: '91'
name: Vacation
unit: DAYS
half_days_supported: true
exact_times_supported: false
remote_data: null
changed_at: '2022-08-07T14:01:29.196Z'
remote_deleted_at: null
required:
- status
- data
GetHrisAbsencesParameterDateFrom:
description: Filter for all the absences that either start _or_ haven't ended yet on/after this day. If you imagine a calendar displaying absences, this defines the left-most visible day. This is a plain date (i.e., `yyyy-MM-dd`), all time information is discarded.
type: string
format: date-time
pattern: ^\d{4}-\d{2}-\d{2}(T\d{2}:\d{2}:\d{2}(\.\d+)?)?Z?$
externalDocs:
url: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toISOString
PostHrisSkillsRequestBody:
type: object
properties:
name:
type: string
description: The name of the skill
levels:
type: array
items:
type: string
description: List of available skill levels (e.g., ["Beginner", "Intermediate", "Advanced"])
required:
- name
GetHrisTimesheetsParameterEndedAfter:
description: Return timesheets whose end time is on or after the given timestamp.
type: string
format: date-time
pattern: ^\d{4}-\d{2}-\d{2}(T\d{2}:\d{2}:\d{2}(\.\d+)?)?Z?$
externalDocs:
url: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toISOString
GetHrisEmployeesParameterIgnoreUnsupportedFilters:
type: string
enum:
- 'true'
- 'false'
default: 'false'
description: When set to `true`, filters targeting fields not supported by this integration will be ignored instead of filtering out all results.
GetHrisTimesheetsParameterStartedAfter:
description: Return timesheets whose start time is on or after the given timestamp.
type: string
format: date-time
pattern: ^\d{4}-\d{2}-\d{2}(T\d{2}:\d{2}:\d{2}(\.\d+)?)?Z?$
externalDocs:
url: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toISOString
PostHrisEmployeesEmployeeIdDocumentsRequestBody:
type: object
properties:
category_id:
type: string
document:
type: object
properties:
name:
type: string
description: File name of the file you want to upload. We recommend providing something human-readable with a valid file extension (like `Resume.pdf`), as this might be shown in your customer's system.
content_type:
type: string
pattern: ^[\w.-]+\/[\w.-]+$
description: 'Content/MIME type of the file (e.g., `application/pdf`).
If you provide `data`, this is required. If you provide `data_url`, this is optional and we''ll attempt to use the `Content-Type` header of the response.
**Note:** Please validate that the content type you provide is actually meaningful (and not something generic like [`application/octet-stream`](https://developer.mozilla.org/en-US/docs/Web/HTTP/Guides/MIME_types#applicationoctet-stream)). Especially when using object storage (like AWS S3), it''s easy to accidentally discard the content types of user-provided files, so make sure to explicitly persist them when processing uploads from your users (see guides for [AWS](https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingMetadata.html#SysMetadata), [Google Cloud](https://cloud.google.com/storage/docs/metadata#content-type), and [Azure](https://learn.microsoft.com/en-us/rest/api/storageservices/put-blob#request-headers-all-blob-types)).'
data_url:
type: string
format: uri
description: 'URL to the file you want to upload that can be accessed without authentication headers. We will download the content immediately when receiving the request, so the URL can be short-lived.
If you''re using an object storage provider (like AWS S3), we strongly recommend providing a signed URL for secure access (see guides for [AWS](https://docs.aws.amazon.com/AmazonS3/latest/userguide/ShareObjectPreSignedURL.html), [Google Cloud](https://cloud.google.com/storage/docs/access-control/signed-urls), and [Azure](https://learn.microsoft.com/en-us/azure/storage/common/storage-sas-overview)).
**Note:** You must provide either this or `data_url`. We recommend `data_url` over `data` for most cases.'
data:
type: string
description: 'Base64-encoded contents of the file you want to upload.
**Note:** You must provide either this or `data_url`. We recommend `data_url` over `data` for most cases.'
required:
- name
required:
- category_id
- document
PostHrisEmployeesFormPositiveResponse:
type: object
properties:
status:
type: string
const: success
data:
type: object
properties:
id:
type:
- string
- 'null'
description: The Kombo id of the created employee. If null, we only created a pre-hire which shows up in the next sync after a successful onboarding.
remote_id:
type:
- string
- 'null'
description: The raw ID of the created employee in the remote system. This is only populated when `id` is set (i.e., when a full employee was created). For pre-hires, use the `prehire` object instead.
prehire:
type: object
properties:
remote_id:
type:
- string
- 'null'
description: The temporary ID returned by the remote system when creating a pre-hire.
required:
- remote_id
description: An object containing the temporary pre-hire information from the remote system. This ID may change or become invalid when the pre-hire becomes a full employee. Only populated when `id` is null.
required:
- id
- remote_id
- prehire
examples:
- id: 26vafvWSRmbhNcxJYqjCzuJg
remote_id: '12345'
prehire:
remote_id: null
warnings:
type: array
items:
type: object
properties:
message:
type: string
required:
- message
description: These are the interaction warnings that are shown in the dashboard. They are meant to provide debug information to you. We recommend logging them to the console.
required:
- status
- data
- warnings
GetHrisPerformanceReviewsPositiveResponse:
type: object
properties:
status:
type: string
const: success
data:
type: object
properties:
next:
type:
- string
- 'null'
description: Cursor string that can be passed to the `cursor` query parameter to get the next page. If this is `null`, then there are no more pages.
results:
type: array
items:
type: object
properties:
id:
type: string
description: The globally unique ID of this object generated by Kombo. We recommend using this as a stable primary key for syncing.
remote_id:
type: string
description: The raw ID of the object in the remote system. We don't recommend using this as a primary key on your side as it might sometimes be compromised of multiple identifiers if a system doesn't provide a clear primary key.
type:
type:
- string
- 'null'
enum:
- MANAGER
- DIRECT_REPORT
- PEER
- SELF
description: 'The relationship between the reviewee and reviewer. Manager: The reviewer is the manager of the reviewee. Direct Report: The reviewer is a direct report of the reviewee (reverse MANAGER). Peer: The reviewer is a peer of the reviewee. Self: The reviewer is the reviewee himself/herself. null: The relationship cannot be determined or the reviewer is missing.'
summary_comment:
type:
- string
- 'null'
description: The summary comment of the performance review.
summary_rating:
discriminator:
propertyName: type
anyOf:
- type: object
properties:
type:
type: string
const: NUMERIC
min:
type:
- number
- 'null'
format: double
minimum: -1.7976931348623157e+308
description: The minimum value of the summary rating.
max:
type:
- number
- 'null'
format: double
minimum: -1.7976931348623157e+308
description: The maximum value of the summary rating.
value:
type:
- number
- 'null'
format: double
minimum: -1.7976931348623157e+308
description: The numeric value of the summary rating.
required:
- type
- min
- max
- value
- type: object
properties:
type:
type: string
const: SINGLE_SELECT
ordered_options:
type:
- array
- 'null'
items:
type: string
description: The options of the summary rating. Ordered from bad to good.
value:
type:
- string
- 'null'
description: The text value of the summary rating.
required:
- type
- ordered_options
- value
- type: 'null'
description: The summary rating of the performance review.
changed_at:
description: The timestamp when this specific record was last modified. This field only updates when properties directly on this record change, NOT when related or nested models change. For filtering that considers nested data changes, use the `updated_after` parameter which will return records when either the record itself OR its related models have been updated.
type: string
format: date-time
externalDocs:
url: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toISOString
remote_deleted_at:
description: The date and time the object was deleted in the remote system. Objects are automatically marked as deleted when Kombo can't retrieve them from the remote system anymore. Kombo will also anonymize entries 14 days after they disappear.
type:
- string
- 'null'
format: date-time
externalDocs:
url: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toISOString
remote_data:
type:
- object
- 'null'
additionalProperties: true
description: 'Includes the data fetched from the remote system.
Please be aware that including this in you scope config might violate other
scopes that are set.
Remote data always has the endpoint path that we got the data from as the
top level key. For example, it could look like: `{ "/companies": { ... }}`
This is not available on all plans. Reach out to Kombo if you need it.'
reviewee:
type: object
properties:
id:
type: string
description: The globally unique ID of this object generated by Kombo. We recommend using this as a stable primary key for syncing.
remote_id:
type: string
description: The raw ID of the object in the remote system. We don't recommend using this as a primary key on your side as it might sometimes be compromised of multiple identifiers if a system doesn't provide a clear primary key.
first_name:
type:
- string
- 'null'
description: The employee’s first name.
last_name:
type:
- string
- 'null'
description: The employee’s last name.
display_full_name:
type:
- string
- 'null'
description: The employee’s full name, including any middle names. Not all HR systems provide an explicit display name, so we recommend falling back to `first_name` and `last_name`.
work_email:
type:
- string
- 'null'
pattern: ^(?!\.)(?!.*\.\.)([\w'+-.]*)[\w+-]@([\da-z][\da-z-]*\.)+[a-z]{2,}$
description: The employee’s work email address. If the email address is invalid, we will set this to `null`.
remote_deleted_at:
description: The date and time the object was deleted in the remote system. Objects are automatically marked as deleted when Kombo can't retrieve them from the remote system anymore. Kombo will also anonymize entries 14 days after they disappear.
type:
- string
- 'null'
format: date-time
externalDocs:
url: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toISOString
required:
- id
- remote_id
- first_name
- last_name
- display_full_name
- remote_deleted_at
description: The employee receiving the review.
examples:
- id: 26vafvWSRmbhNcxJYqjCzuJg
remote_id: '32'
first_name: John
last_name: Doe
display_full_name: John Doe
work_email: john.doe@acme.com
remote_deleted_at: null
- id: 26vafvWSRmbhNcxJYqjCzuJg
remote_id: '32'
first_name: John
last_name: Doe
display_full_name: John Doe
work_email: john.doe@acme.com
remote_deleted_at: null
reviewer:
type:
- object
- 'null'
properties:
id:
type: string
description: The globally unique ID of this object generated by Kombo. We recommend using this as a stable primary key for syncing.
remote_id:
type: string
description: The raw ID of the object in the remote system. We don't recommend using this as a primary key on your side as it might sometimes be compromised of multiple identifiers if a system doesn't provide a clear primary key.
first_name:
type:
- string
- 'null'
description: The employee’s first name.
last_name:
type:
- string
- 'null'
description: The employee’s last name.
display_full_name:
type:
- string
- 'null'
description: The employee’s full name, including any middle names. Not all HR systems provide an explicit display name, so we recommend falling back to `first_name` and `last_name`.
work_email:
type:
- string
- 'null'
pattern: ^(?!\.)(?!.*\.\.)([\w'+-.]*)[\w+-]@([\da-z][\da-z-]*\.)+[a-z]{2,}$
description: The employee’s work email address. If the email address is invalid, we will set this to `null`.
remote_deleted_at:
description: The date and time the object was deleted in the remote system. Objects are automatically marked as deleted when Kombo can't retrieve them from the remote system anymore. Kombo will also anonymize entries 14 days after they disappear.
type:
- string
- 'null'
format: date-time
externalDocs:
url: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toISOString
required:
- id
- remote_id
- first_name
- last_name
- display_full_name
- remote_deleted_at
description: The employee giving/writing the review.
examples:
- id: 4EeSSSd9Fr8iiW9mPKmjEVWK
remote_id: '1024'
first_name: Peter
last_name: Doe
display_full_name: Peter Doe
work_email: peter.doe@acme.com
remote_deleted_at: null
review_cycle:
type:
- object
- 'null'
properties:
id:
type: string
description: The globally unique ID of this object generated by Kombo. We recommend using this as a stable primary key for syncing.
remote_id:
type: string
description: The raw ID of the object in the remote system. We don't recommend using this as a primary key on your side as it might sometimes be compromised of multiple identifiers if a system doesn't provide a clear primary key.
name:
type:
- string
- 'null'
description: The name of the performance review cycle.
review_period_start_date:
description: The start date of the review period of the performance review cycle. It is the start date of the evaluation timeframe and the earliest date reviews can be submitted for this cycle.
type:
- string
- 'null'
format: date-time
externalDocs:
url: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toISOString
changed_at:
description: The timestamp when this specific record was last modified. This field only updates when properties directly on this record change, NOT when related or nested models change. For filtering that considers nested data changes, use the `updated_after` parameter which will return records when either the record itself OR its related models have been updated.
type: string
format: date-time
externalDocs:
url: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toISOString
remote_deleted_at:
description: The date and time the object was deleted in the remote system. Objects are automatically marked as deleted when Kombo can't retrieve them from the remote system anymore. Kombo will also anonymize entries 14 days after they disappear.
type:
- string
- 'null'
format: date-time
externalDocs:
url: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toISOString
remote_data:
type:
- object
- 'null'
additionalProperties: true
description: 'Includes the data fetched from the remote system.
Please be aware that including this in you scope config might violate other
scopes that are set.
Remote data always has the endpoint path that we got the data from as the
top level key. For example, it could look like: `{ "/companies": { ... }}`
This is not available on all plans. Reach out to Kombo if you need it.'
required:
- id
- remote_id
- name
- review_period_start_date
- changed_at
- remote_deleted_at
- remote_data
examples:
- id: 4B9bKBpX5tnwjiG93TAqF7ci
remote_id: '1'
name: 2025 Annual Performance Review Cycle
review_period_start_date: '2025-01-01T00:00:00.000Z'
changed_at: '2022-08-07T14:01:29.196Z'
remote_deleted_at: null
remote_data: null
required:
- id
- remote_id
- type
- summary_comment
- changed_at
- remote_deleted_at
- remote_data
- reviewee
- reviewer
- review_cycle
required:
- next
- results
examples:
- next: eyJwYWdlIjoxMiwibm90ZSI6InRoaXMgaXMganVzdCBhbiBleGFtcGxlIGFuZCBub3QgcmVwcmVzZW50YXRpdmUgZm9yIGEgcmVhbCBjdXJzb3IhIn0=
results:
- id: 4B9bKBpX5tnwjiG93TAqF7ci
remote_id: '1'
type: MANAGER
summary_comment: Good job this year! Let's keep it up for 2024!
summary_rating:
ordered_options:
- Needs improvement
- Below expectations
- Meets expectations
- Exceeds expectations
- Exceptional
type: SINGLE_SELECT
value: Exceeds expectations
changed_at: '2022-08-07T14:01:29.196Z'
remote_deleted_at: null
remote_data: null
reviewee:
id: 26vafvWSRmbhNcxJYqjCzuJg
remote_id: '32'
first_name: John
last_name: Doe
display_full_name: John Doe
work_email: john.doe@acme.com
remote_deleted_at: null
reviewer:
id: 4EeSSSd9Fr8iiW9mPKmjEVWK
remote_id: '1024'
first_name: Peter
last_name: Doe
display_full_name: Peter Doe
work_email: peter.doe@acme.com
remote_deleted_at: null
review_cycle:
id: 4B9bKBpX5tnwjiG93TAqF7ci
remote_id: '1'
name: 2025 Annual Performance Review Cycle
review_period_start_date: '2025-01-01T00:00:00.000Z'
changed_at: '2022-08-07T14:01:29.196Z'
remote_deleted_at: null
remote_data: null
required:
- status
- data
GetHrisEmployeeDocumentCategoriesParameterIds:
type: string
description: Filter by a comma-separated list of IDs such as `222k7eCGyUdgt2JWZDNnkDs3,B5DVmypWENfU6eMe6gYDyJG3`.
GetHrisEmployeesParameterUpdatedAfter:
description: 'Filter the entries based on the modification date in format `YYYY-MM-DDTHH:mm:ss.sssZ`. Returns records where either the record itself **OR** its nested data has been updated since this timestamp, even if the record''s own `changed_at` field remains unchanged.
If you want to track entry deletion, also set the `include_deleted=true` query parameter, because otherwise, deleted entries will be hidden.
For more details, see [Understanding changed_at vs updated_after Behavior](https://docs.kombo.dev/ats/getting-started/fetching-data#understanding-changed_at-vs-updated_after-behavior).
For this endpoint, `updated_after` matches when the returned record changed, or when related data changed as described below.
| Path | Added/Removed | Linked Record |
| --- | --- | --- |
| `employments` | ✓ Yes | ✓ Yes |
| `time_off_balances` | ✓ Yes | ✓ Yes |
| `manager` | n/a | ✓ Yes |
| `group_memberships` | ✓ Yes | ✗ No |
| `legal_entity` | n/a | ✓ Yes |
| `work_location` | n/a | ✓ Yes |
_**Added/Removed**: Whether adding or removing entries from this list triggers an update (n/a for single records). **Linked Record**: Whether changes to the linked record itself trigger an update._'
type: string
format: date-time
pattern: ^\d{4}-\d{2}-\d{2}(T\d{2}:\d{2}:\d{2}(\.\d+)?)?Z?$
externalDocs:
url: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toISOString
GetHrisPerformanceReviewsParameterIds:
type: string
description: Filter by a comma-separated list of IDs such as `222k7eCGyUdgt2JWZDNnkDs3,B5DVmypWENfU6eMe6gYDyJG3`.
GetHrisEmployeesParameterWorkEmails:
type: string
description: Filter by a comma-separated list of work emails. We will only return employees who have _any_ of the work emails. The format of the emails is case-insensitive.
GetHrisLegalEntitiesParameterCursor:
type: string
description: An optional cursor string used for pagination. This can be retrieved from the `next` property of the previous page response.
responses:
ErrorResponseHRIS:
description: The standard error response with the error codes for the HRIS use case.
content:
application/json:
schema:
type: object
properties:
status:
type: string
enum:
- error
error:
type: object
properties:
code:
type:
- string
- 'null'
enum:
- PLATFORM.RATE_LIMIT_EXCEEDED
- PLATFORM.CONCURRENCY_LIMIT_EXCEEDED
- PLATFORM.INTEGRATION_NOT_FOUND
- PLATFORM.INPUT_INVALID
- PLATFORM.UNKNOWN_ERROR
- PLATFORM.IP_NOT_WHITELISTED
- PLATFORM.AUTHENTICATION_INVALID
- PLATFORM.TASK_TIMED_OUT
- INTEGRATION.PERMISSION_MISSING
- INTEGRATION.AUTHENTICATION_INVALID
- INTEGRATION.QA_FAILED
- INTEGRATION.SETUP_SYNC_PENDING
- INTEGRATION.SETUP_INCOMPLETE
- INTEGRATION.INACTIVE
- INTEGRATION.MODEL_NOT_AVAILABLE
- INTEGRATION.MODEL_DISABLED
- INTEGRATION.ACTION_NOT_AVAILABLE
- INTEGRATION.ACTION_DISABLED
- REMOTE.SERVICE_UNAVAILABLE
- REMOTE.RATE_LIMIT_EXCEEDED
- REMOTE.INPUT_INVALID
- REMOTE.UNKNOWN_HTTP_ERROR
- HRIS.EMPLOYEE_ALREADY_EXISTS
example: HRIS.EMPLOYEE_ALREADY_EXISTS
description: Some errors include an error code that can be used to identify their cause. See the [Error Handling Docs](https://docs.kombo.dev/guides/errors) for more information. For your error handling logic please use the error `code` instead of other properties (e.g. message, http status code, ...).
title:
type:
- string
- 'null'
description: A static, human-readable label.
message:
type: string
description: A dynamic, detailed description of what went wrong in this specific instance.
log_url:
type:
- string
- 'null'
format: uri
description: The log page in the Kombo UI lists every interaction with full details. If you need assistance, share that link with our support team.
required:
- code
- title
- message
- log_url
description: Error details with structured code for programmatic handling.
required:
- status
- error
examples:
Error Response:
description: When building error handling logic, always use the `code` field to identify specific error types programmatically. See the complete list of error codes in the [docs](https://docs.kombo.dev/guides/errors).
value:
status: error
error:
code: INTEGRATION.MODEL_NOT_AVAILABLE
title: This data model isn't supported for the selected integration.
message: The "employees" model is not yet available for Greenhouse. Please reach out to Kombo if you need this functionality.
log_url: https://app.kombo.dev/my-prod/logs?interactionId=123456
Minimal Error Response:
description: The "message" is always required while other fields can also be `null`. See the [docs](https://docs.kombo.dev/guides/errors) for more information.
value:
status: error
error:
code: null
title: null
message: The message is always in the response.
log_url: null
securitySchemes:
ApiKey:
type: http
scheme: bearer
description: Create an API key on the [Secrets](https://app.kombo.dev/secrets) page in the Kombo dashboard.