naftiko: 1.0.0-alpha2
info:
label: Kombo API — Unified HRIS API
description: 'Kombo API — Unified HRIS API. 31 operations. Lead operation: Get absence types. Self-contained Naftiko capability
covering one Kombo business surface.'
tags:
- Kombo
- Unified HRIS API
created: '2026-05-19'
modified: '2026-05-19'
binds:
- namespace: env
keys:
KOMBO_API_KEY: KOMBO_API_KEY
capability:
consumes:
- type: http
namespace: kombo-unified-hris-api
baseUri: https://api.kombo.dev/v1
description: Kombo API — Unified HRIS API business capability. Self-contained, no shared references.
resources:
- name: hris-absence-types
path: /hris/absence-types
operations:
- name: gethrisabsencetypes
method: GET
description: Get absence types
outputRawFormat: json
outputParameters:
- name: result
type: object
value: $.
inputParameters:
- name: X-Integration-Id
in: header
type: string
description: ID of the integration you want to interact with.
required: true
- name: cursor
in: query
type: string
description: An optional cursor string used for pagination. This can be retrieved from the `next` property of the
previous page response.
- name: page_size
in: query
type: string
description: The number of results to return per page. Maximum is 250.
- name: updated_after
in: query
type: string
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 ha
- name: include_deleted
in: query
type: string
description: By default, deleted entries are not returned. Use the `include_deleted` query param to include deleted
entries too.
- name: ignore_unsupported_filters
in: query
type: string
description: When set to `true`, filters targeting fields not supported by this integration will be ignored instead
of filtering out all results.
- name: ids
in: query
type: string
description: Filter by a comma-separated list of IDs such as `222k7eCGyUdgt2JWZDNnkDs3,B5DVmypWENfU6eMe6gYDyJG3`.
- name: remote_ids
in: query
type: string
description: Filter by a comma-separated list of remote IDs.
- name: hris-absences
path: /hris/absences
operations:
- name: gethrisabsences
method: GET
description: Get absences
outputRawFormat: json
outputParameters:
- name: result
type: object
value: $.
inputParameters:
- name: X-Integration-Id
in: header
type: string
description: ID of the integration you want to interact with.
required: true
- name: cursor
in: query
type: string
description: An optional cursor string used for pagination. This can be retrieved from the `next` property of the
previous page response.
- name: page_size
in: query
type: string
description: The number of results to return per page. Maximum is 250.
- name: updated_after
in: query
type: string
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 ha
- name: include_deleted
in: query
type: string
description: By default, deleted entries are not returned. Use the `include_deleted` query param to include deleted
entries too.
- name: ignore_unsupported_filters
in: query
type: string
description: When set to `true`, filters targeting fields not supported by this integration will be ignored instead
of filtering out all results.
- name: ids
in: query
type: string
description: Filter by a comma-separated list of IDs such as `222k7eCGyUdgt2JWZDNnkDs3,B5DVmypWENfU6eMe6gYDyJG3`.
- name: remote_ids
in: query
type: string
description: Filter by a comma-separated list of remote IDs.
- name: date_from
in: query
type: string
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-mos
- name: date_until
in: query
type: string
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 visi
- name: type_ids
in: query
type: string
description: Filter by a comma-separated list of absence type IDs.
- name: employee_id
in: query
type: string
description: Filter by a specific employee using their ID.
- name: time_from
in: query
type: string
description: '**(⚠️ Deprecated - Use the `date_from` filter instead.)** Filter for absences that either start after
or start before and end after a certain time.'
- name: time_until
in: query
type: string
description: '**(⚠️ Deprecated - Use the `date_until` filter instead.)** Filter for absences that start before a
certain time.'
- name: posthrisabsences
method: POST
description: Create absence
outputRawFormat: json
outputParameters:
- name: result
type: object
value: $.
inputParameters:
- name: X-Integration-Id
in: header
type: string
description: ID of the integration you want to interact with.
required: true
- name: body
in: body
type: object
description: Request body (JSON).
required: false
- name: hris-absences-absence_id
path: /hris/absences/{absence_id}
operations:
- name: deletehrisabsencesabsenceid
method: DELETE
description: Delete absence
outputRawFormat: json
outputParameters:
- name: result
type: object
value: $.
inputParameters:
- name: X-Integration-Id
in: header
type: string
description: ID of the integration you want to interact with.
required: true
- name: absence_id
in: path
type: string
description: The Kombo ID of the absence
required: true
- name: body
in: body
type: object
description: Request body (JSON).
required: false
- name: hris-employee-document-categories
path: /hris/employee-document-categories
operations:
- name: gethrisemployeedocumentcategories
method: GET
description: Get employee document categories
outputRawFormat: json
outputParameters:
- name: result
type: object
value: $.
inputParameters:
- name: X-Integration-Id
in: header
type: string
description: ID of the integration you want to interact with.
required: true
- name: cursor
in: query
type: string
description: An optional cursor string used for pagination. This can be retrieved from the `next` property of the
previous page response.
- name: page_size
in: query
type: string
description: The number of results to return per page. Maximum is 250.
- name: updated_after
in: query
type: string
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 ha
- name: include_deleted
in: query
type: string
description: By default, deleted entries are not returned. Use the `include_deleted` query param to include deleted
entries too.
- name: ignore_unsupported_filters
in: query
type: string
description: When set to `true`, filters targeting fields not supported by this integration will be ignored instead
of filtering out all results.
- name: ids
in: query
type: string
description: Filter by a comma-separated list of IDs such as `222k7eCGyUdgt2JWZDNnkDs3,B5DVmypWENfU6eMe6gYDyJG3`.
- name: remote_ids
in: query
type: string
description: Filter by a comma-separated list of remote IDs.
- name: hris-employee-skill-assignments
path: /hris/employee-skill-assignments
operations:
- name: gethrisemployeeskillassignments
method: GET
description: Get employee skill assignments
outputRawFormat: json
outputParameters:
- name: result
type: object
value: $.
inputParameters:
- name: X-Integration-Id
in: header
type: string
description: ID of the integration you want to interact with.
required: true
- name: ids
in: query
type: string
description: Filter by a comma-separated list of IDs such as `222k7eCGyUdgt2JWZDNnkDs3,B5DVmypWENfU6eMe6gYDyJG3`.
- name: remote_ids
in: query
type: string
description: Filter by a comma-separated list of remote IDs.
- name: employee_ids
in: query
type: string
description: Filter by a comma-separated list of employee IDs.
- name: skill_ids
in: query
type: string
description: Filter by a comma-separated list of skill IDs.
- name: posthrisemployeeskillassignments
method: POST
description: Create employee skill assignment
outputRawFormat: json
outputParameters:
- name: result
type: object
value: $.
inputParameters:
- name: X-Integration-Id
in: header
type: string
description: ID of the integration you want to interact with.
required: true
- name: body
in: body
type: object
description: Request body (JSON).
required: false
- name: hris-employee-skill-assignments-employee_skill_assignment_id
path: /hris/employee-skill-assignments/{employee_skill_assignment_id}
operations:
- name: patchhrisemployeeskillassignmentsemployeeskillassignmentid
method: PATCH
description: Update employee skill assignment
outputRawFormat: json
outputParameters:
- name: result
type: object
value: $.
inputParameters:
- name: X-Integration-Id
in: header
type: string
description: ID of the integration you want to interact with.
required: true
- name: employee_skill_assignment_id
in: path
type: string
description: The ID of the employee skill assignment
required: true
- name: body
in: body
type: object
description: Request body (JSON).
required: false
- name: deletehrisemployeeskillassignmentsemployeeskillassignmentid
method: DELETE
description: Delete employee skill assignment
outputRawFormat: json
outputParameters:
- name: result
type: object
value: $.
inputParameters:
- name: X-Integration-Id
in: header
type: string
description: ID of the integration you want to interact with.
required: true
- name: employee_skill_assignment_id
in: path
type: string
description: The ID of the employee skill assignment
required: true
- name: body
in: body
type: object
description: Request body (JSON).
required: false
- name: hris-employees
path: /hris/employees
operations:
- name: gethrisemployees
method: GET
description: Get employees
outputRawFormat: json
outputParameters:
- name: result
type: object
value: $.
inputParameters:
- name: X-Integration-Id
in: header
type: string
description: ID of the integration you want to interact with.
required: true
- name: cursor
in: query
type: string
description: An optional cursor string used for pagination. This can be retrieved from the `next` property of the
previous page response.
- name: page_size
in: query
type: string
description: The number of results to return per page. Maximum is 250.
- name: updated_after
in: query
type: string
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 ha
- name: include_deleted
in: query
type: string
description: By default, deleted entries are not returned. Use the `include_deleted` query param to include deleted
entries too.
- name: ignore_unsupported_filters
in: query
type: string
description: When set to `true`, filters targeting fields not supported by this integration will be ignored instead
of filtering out all results.
- name: ids
in: query
type: string
description: Filter by a comma-separated list of IDs such as `222k7eCGyUdgt2JWZDNnkDs3,B5DVmypWENfU6eMe6gYDyJG3`.
- name: remote_ids
in: query
type: string
description: Filter by a comma-separated list of remote IDs.
- name: employment_status
in: query
type: string
description: '**(⚠️ Deprecated - Use the `employment_statuses` filter instead.)** Filter by the `employment_status`
field.'
- name: employment_statuses
in: query
type: string
description: 'Filter by a comma-separated list of `ACTIVE`, `PENDING`, `INACTIVE`, `LEAVE` '
- name: group_ids
in: query
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.
- name: legal_entity_ids
in: query
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.
- name: work_location_ids
in: query
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.
- name: work_emails
in: query
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.
- name: personal_emails
in: query
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-insen
- name: custom_fields
in: query
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 st
- name: posthrisemployees
method: POST
description: '[DEPRECATED] Create employee'
outputRawFormat: json
outputParameters:
- name: result
type: object
value: $.
inputParameters:
- name: X-Integration-Id
in: header
type: string
description: ID of the integration you want to interact with.
required: true
- name: body
in: body
type: object
description: Request body (JSON).
required: false
- name: hris-employees-form
path: /hris/employees/form
operations:
- name: gethrisemployeesform
method: GET
description: Get employee form
outputRawFormat: json
outputParameters:
- name: result
type: object
value: $.
inputParameters:
- name: X-Integration-Id
in: header
type: string
description: ID of the integration you want to interact with.
required: true
- name: posthrisemployeesform
method: POST
description: Create employee with form
outputRawFormat: json
outputParameters:
- name: result
type: object
value: $.
inputParameters:
- name: X-Integration-Id
in: header
type: string
description: ID of the integration you want to interact with.
required: true
- name: body
in: body
type: object
description: Request body (JSON).
required: false
- name: hris-employees-employee_id
path: /hris/employees/{employee_id}
operations:
- name: patchhrisemployeesemployeeid
method: PATCH
description: Update employee
outputRawFormat: json
outputParameters:
- name: result
type: object
value: $.
inputParameters:
- name: X-Integration-Id
in: header
type: string
description: ID of the integration you want to interact with.
required: true
- name: employee_id
in: path
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
required: true
- name: body
in: body
type: object
description: Request body (JSON).
required: false
- name: hris-employees-employee_id-documents
path: /hris/employees/{employee_id}/documents
operations:
- name: posthrisemployeesemployeeiddocuments
method: POST
description: Add document to employee
outputRawFormat: json
outputParameters:
- name: result
type: object
value: $.
inputParameters:
- name: X-Integration-Id
in: header
type: string
description: ID of the integration you want to interact with.
required: true
- name: employee_id
in: path
type: string
description: POST /hris/employees/:employee_id/documents Parameter
required: true
- name: body
in: body
type: object
description: Request body (JSON).
required: false
- name: hris-employments
path: /hris/employments
operations:
- name: gethrisemployments
method: GET
description: Get employments
outputRawFormat: json
outputParameters:
- name: result
type: object
value: $.
inputParameters:
- name: X-Integration-Id
in: header
type: string
description: ID of the integration you want to interact with.
required: true
- name: cursor
in: query
type: string
description: An optional cursor string used for pagination. This can be retrieved from the `next` property of the
previous page response.
- name: page_size
in: query
type: string
description: The number of results to return per page. Maximum is 250.
- name: updated_after
in: query
type: string
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 ha
- name: include_deleted
in: query
type: string
description: By default, deleted entries are not returned. Use the `include_deleted` query param to include deleted
entries too.
- name: ignore_unsupported_filters
in: query
type: string
description: When set to `true`, filters targeting fields not supported by this integration will be ignored instead
of filtering out all results.
- name: ids
in: query
type: string
description: Filter by a comma-separated list of IDs such as `222k7eCGyUdgt2JWZDNnkDs3,B5DVmypWENfU6eMe6gYDyJG3`.
- name: remote_ids
in: query
type: string
description: Filter by a comma-separated list of remote IDs.
- name: hris-groups
path: /hris/groups
operations:
- name: gethrisgroups
method: GET
description: Get groups
outputRawFormat: json
outputParameters:
- name: result
type: object
value: $.
inputParameters:
- name: X-Integration-Id
in: header
type: string
description: ID of the integration you want to interact with.
required: true
- name: cursor
in: query
type: string
description: An optional cursor string used for pagination. This can be retrieved from the `next` property of the
previous page response.
- name: page_size
in: query
type: string
description: The number of results to return per page. Maximum is 250.
- name: updated_after
in: query
type: string
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 ha
- name: include_deleted
in: query
type: string
description: By default, deleted entries are not returned. Use the `include_deleted` query param to include deleted
entries too.
- name: ignore_unsupported_filters
in: query
type: string
description: When set to `true`, filters targeting fields not supported by this integration will be ignored instead
of filtering out all results.
- name: ids
in: query
type: string
description: Filter by a comma-separated list of IDs such as `222k7eCGyUdgt2JWZDNnkDs3,B5DVmypWENfU6eMe6gYDyJG3`.
- name: remote_ids
in: query
type: string
description: Filter by a comma-separated list of remote IDs.
- name: types
in: query
type: string
description: 'Filter by a comma-separated list of group types: `DEPARTMENT`, `TEAM`, `COST_CENTER`, or `null` to
filter groups without a type. '
- name: name_contains
in: query
type: string
description: Filter by the `name` field. Can be used to find a group by keywords present in the group name.
- name: hris-legal-entities
path: /hris/legal-entities
operations:
- name: gethrislegalentities
method: GET
description: Get legal entities
outputRawFormat: json
outputParameters:
- name: result
type: object
value: $.
inputParameters:
- name: X-Integration-Id
in: header
type: string
description: ID of the integration you want to interact with.
required: true
- name: cursor
in: query
type: string
description: An optional cursor string used for pagination. This can be retrieved from the `next` property of the
previous page response.
- name: page_size
in: query
type: string
description: The number of results to return per page. Maximum is 250.
- name: updated_after
in: query
type: string
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 ha
- name: include_deleted
in: query
type: string
description: By default, deleted entries are not returned. Use the `include_deleted` query param to include deleted
entries too.
- name: ignore_unsupported_filters
in: query
type: string
description: When set to `true`, filters targeting fields not supported by this integration will be ignored instead
of filtering out all results.
- name: ids
in: query
type: string
description: Filter by a comma-separated list of IDs such as `222k7eCGyUdgt2JWZDNnkDs3,B5DVmypWENfU6eMe6gYDyJG3`.
- name: remote_ids
in: query
type: string
description: Filter by a comma-separated list of remote IDs.
- name: name_contains
in: query
type: string
description: Filter by the `name` field. Can be used to find a legal entity by keywords present in the legal entity
name.
- name: hris-locations
path: /hris/locations
operations:
- name: gethrislocations
method: GET
description: Get work locations
outputRawFormat: json
outputParameters:
- name: result
type: object
value: $.
inputParameters:
- name: X-Integration-Id
in: header
type: string
description: ID of the integration you want to interact with.
required: true
- name: cursor
in: query
type: string
description: An optional cursor string used for pagination. This can be retrieved from the `next` property of the
previous page response.
- name: page_size
in: query
type: string
description: The number of results to return per page. Maximum is 250.
- name: updated_after
in: query
type: string
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 ha
- name: include_deleted
in: query
type: string
description: By default, deleted entries are not returned. Use the `include_deleted` query param to include deleted
entries too.
- name: ignore_unsupported_filters
in: query
type: string
description: When set to `true`, filters targeting fields not supported by this integration will be ignored instead
of filtering out all results.
- name: ids
in: query
type: string
description: Filter by a comma-separated list of IDs such as `222k7eCGyUdgt2JWZDNnkDs3,B5DVmypWENfU6eMe6gYDyJG3`.
- name: remote_ids
in: query
type: string
description: Filter by a comma-separated list of remote IDs.
- name: name_contains
in: query
type: string
description: Filter by the `name` field. Can be used to find a location by keywords present in the location name.
- name: hris-performance-review-cycles
path: /hris/performance-review-cycles
operations:
- name: gethrisperformancereviewcycles
method: GET
description: Get performance review cycles
outputRawFormat: json
outputParameters:
- name: result
type: object
value: $.
inputParameters:
- name: X-Integration-Id
in: header
type: string
description: ID of the integration you want to interact with.
required: true
- name: cursor
in: query
type: string
description: An optional cursor string used for pagination. This can be retrieved from the `next` property of the
previous page response.
- name: page_size
in: query
type: string
description: The number of results to return per page. Maximum is 250.
- name: updated_after
in: query
type: string
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 ha
- name: include_deleted
in: query
type: string
description: By default, deleted entries are not returned. Use the `include_deleted` query param to include deleted
entries too.
- name: ignore_unsupported_filters
in: query
type: string
description: When set to `true`, filters targeting fields not supported by this integration will be ignored instead
of filtering out all results.
- name: ids
in: query
type: string
description: Filter by a comma-separated list of IDs such as `222k7eCGyUdgt2JWZDNnkDs3,B5DVmypWENfU6eMe6gYDyJG3`.
- name: remote_ids
in: query
type: string
description: Filter by a comma-separated list of remote IDs.
- name: hris-performance-reviews
path: /hris/performance-reviews
operations:
- name: gethrisperformancereviews
method: GET
description: Get performance reviews
outputRawFormat: json
outputParameters:
- name: result
type: object
value: $.
inputParameters:
- name: X-Integration-Id
in: header
type: string
description: ID of the integration you want to interact with.
required: true
- name: cursor
in: query
type: string
description: An optional cursor string used for pagination. This can be retrieved from the `next` property of the
previous page response.
- name: page_size
in: query
type: string
description: The number of results to return per page. Maximum is 250.
- name: updated_after
in: query
type: string
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 ha
- name: include_deleted
in: query
type: string
description: By default, deleted entries are not returned. Use the `include_deleted` query param to include deleted
entries too.
- name: ignore_unsupported_filters
in: query
type: string
description: When set to `true`, filters targeting fields not supported by this integration will be ignored instead
of filtering out all results.
- name: ids
in: query
type: string
description: Filter by a comma-separated list of IDs such as `222k7eCGyUdgt2JWZDNnkDs3,B5DVmypWENfU6eMe6gYDyJG3`.
- name: remote_ids
in: query
type: string
description: Filter by a comma-separated list of remote IDs.
- name: types
in: query
type: string
description: 'Filter by a comma-separated list of `MANAGER`, `DIRECT_REPORT`, `PEER`, `SELF` '
- name: review_cycle_ids
in: query
type: string
description: Filter by a comma-separated list of review cycle IDs.
# --- truncated at 32 KB (81 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/kombo/refs/heads/main/capabilities/kombo-unified-hris-api.yaml