Kombo Unified HRIS API API

Unified endpoints to access all the HR concepts you might need.

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/kombo-unified-hris-api-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no email required.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

kombo-unified-hris-api-api-openapi.yml Raw ↑
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<Warning>\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</Warning>"
      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.


        <Note>Not interested in most fields? You can use our [our Scopes feature](/scopes) to customize what data points are synced.</Note>


        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<Warning>\n  We are deprecating this endpoint in favor of the new [create employee form](/hris/features/create-employee) endpoint.\n</Warning>\n\n<Note>\n  This endpoint requires the permission **Create and manage employees** to be enabled in [your scope config](/scopes).\n</Note>\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<Note>\n  This endpoint requires the permission **Create and manage employees** to be enabled in [your scope config](/scopes).\n</Note>\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<Note>\n  This endpoint requires the permission **Create and manage employees** to be enabled in [your scope config](/scopes).\n</Note>\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\": \"In

# --- truncated at 32 KB (530 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/kombo/refs/heads/main/openapi/kombo-unified-hris-api-api-openapi.yml