Skip to content

Latest commit

 

History

History
1276 lines (904 loc) · 574 KB

File metadata and controls

1276 lines (904 loc) · 574 KB

Hris

Overview

Available Operations

get_employees

Retrieve all employees.

Not interested in most fields? You can use our our Scopes feature 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)

Example Usage

from kombo import Kombo


with Kombo(
    integration_id="workday:HWUTwvyx2wLoSUHphiWVrp28",
    api_key="<YOUR_BEARER_TOKEN_HERE>",
) as k_client:

    res = k_client.hris.get_employees(page_size=100, include_deleted=False, ignore_unsupported_filters=False)

    while res is not None:
        # Handle items

        res = res.next()

Parameters

Parameter Type Required Description
cursor Optional[str] An optional cursor string used for pagination. This can be retrieved from the next property of the previous page response.
page_size Optional[int] The number of results to return per page. Maximum is 250.
updated_after date 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.

For this endpoint, updated_after matches when the returned record changed, or when related data changed as described below.

| Path | Relationship | Target 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 |

Relationship: Whether adding or removing entries from this list triggers an update (n/a for single references that are not lists). Target Record: Whether changes to the linked record itself trigger an update.
include_deleted Optional[bool] By default, deleted entries are not returned. Use the include_deleted query param to include deleted entries too.
ignore_unsupported_filters Optional[bool] When set to true, filters targeting fields not supported by this integration will be ignored instead of filtering out all results.
ids List[str] Filter by a comma-separated list of IDs such as 222k7eCGyUdgt2JWZDNnkDs3,B5DVmypWENfU6eMe6gYDyJG3.
remote_ids List[str] Filter by a comma-separated list of remote IDs.
employment_statuses List[str] Filter by a comma-separated list of ACTIVE, PENDING, INACTIVE, LEAVE
* ACTIVE: the employee is actively employed
* PENDING: the employee is not actively employed yet (but they signed their contract or are part of an onboarding process)
* INACTIVE: a full-time employee is no longer employed, or, for a contract worker when their contract runs out
* 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)


Leave this blank to get results matching all values.
group_ids List[str] Filter by a comma-separated list of group IDs. We will only return employees that are members of any of the groups.
legal_entity_ids List[str] Filter by a comma-separated list of legal entity IDs. We will only return employees that are members of any of the legal entities.
work_location_ids List[str] Filter by a comma-separated list of work location IDs. We will only return employees who are at any of the work locations.
work_emails List[str] 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.
personal_emails List[str] 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.
custom_fields Optional[str] 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.
retries Optional[utils.RetryConfig] Configuration to override the default retry behavior of the client.

Response

models.GetHrisEmployeesResponse

Errors

Error Type Status Code Content Type
errors.KomboHrisError default application/json
errors.SDKDefaultError 4XX, 5XX */*

get_employee_form

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.

Follow our create employee guide here to learn how this form is generated and how you can use it.

Example Form

{
  "properties": {
    "firstName": {
      "type": "text",
      "label": "First Name",
      "required": true,
      "description": "Employee's first name",
      "unified_key": "first_name",
      "min_length": 1,
      "max_length": 100
    },
    "startDate": {
      "type": "date",
      "label": "Start Date",
      "required": true,
      "description": "Employee's start date",
      "unified_key": "start_date"
    },
    "workLocation": {
      "type": "object",
      "label": "Work Location",
      "required": false,
      "description": "Employee's work location",
      "unified_key": null,
      "properties": {
        "site": {
          "type": "single_select",
          "label": "Site",
          "required": true,
          "description": "Employee's site",
          "unified_key": null,
          "options": {
            "type": "inline",
            "entries": [
              {
                "label": "Site 1",
                "id": "FXrER44xubBqA9DLgZ3PFNNx",
                "unified_value": "1",
                "remote_id": "site_1"
              },
              {
                "label": "Site 2",
                "id": "2rv75UKT2XBoQXsUb9agiTUm",
                "unified_value": "2",
                "remote_id": "site_2"
              }
            ]
          }
        },
        "keyNumbers": {
          "type": "array",
          "label": "Key Numbers",
          "required": false,
          "description": "Employee's key numbers",
          "unified_key": null,
          "min_items": 2,
          "max_items": 5,
          "item_type": {
            "type": "number",
            "label": "Key Number",
            "required": false,
            "description": "The number of the keys which belong to the employee",
            "unified_key": null,
            "min": 0,
            "max": 99
          }
        }
      }
    }
  }
}

Example Usage

from kombo import Kombo


with Kombo(
    integration_id="workday:HWUTwvyx2wLoSUHphiWVrp28",
    api_key="<YOUR_BEARER_TOKEN_HERE>",
) as k_client:

    res = k_client.hris.get_employee_form()

    # Handle response
    print(res)

Parameters

Parameter Type Required Description
request models.GetHrisEmployeesFormRequest ✔️ The request object to use for the request.
retries Optional[utils.RetryConfig] Configuration to override the default retry behavior of the client.

Response

models.GetHrisEmployeesFormPositiveResponse

Errors

Error Type Status Code Content Type
errors.KomboHrisError default application/json
errors.SDKDefaultError 4XX, 5XX */*

create_employee_with_form

Create an employee, based on the form schema.

This endpoint requires the permission **Create and manage employees** to be enabled in [your scope config](/scopes).

Example Request Body

{
  "properties": {
    "firstName": "John",
    "startDate": "2025-01-01",
    "workLocation": {
      "site": "8e422bf8cav",
      "keyNumbers": [
        142,
        525,
        63
      ]
    }
  }
}

Example Usage: Error Response

from kombo import Kombo


with Kombo(
    integration_id="workday:HWUTwvyx2wLoSUHphiWVrp28",
    api_key="<YOUR_BEARER_TOKEN_HERE>",
) as k_client:

    res = k_client.hris.create_employee_with_form(properties={
        "key": 3571.27,
    })

    # Handle response
    print(res)

Example Usage: Minimal Error Response

from kombo import Kombo


with Kombo(
    integration_id="workday:HWUTwvyx2wLoSUHphiWVrp28",
    api_key="<YOUR_BEARER_TOKEN_HERE>",
) as k_client:

    res = k_client.hris.create_employee_with_form(properties={
        "key": 3571.27,
    })

    # Handle response
    print(res)

Example Usage: example1

from kombo import Kombo


with Kombo(
    integration_id="workday:HWUTwvyx2wLoSUHphiWVrp28",
    api_key="<YOUR_BEARER_TOKEN_HERE>",
) as k_client:

    res = k_client.hris.create_employee_with_form(properties={
        "firstName": "John",
        "startDate": "2025-01-01T00:00:00Z",
        "workLocation": {
            "site": "8e422bf8cav",
            "keyNumbers": {
                "0": 142,
                "1": 525,
                "2": 63,
            },
        },
    })

    # Handle response
    print(res)

Parameters

Parameter Type Required Description
properties Dict[str, models.Schema4] ✔️ N/A
retries Optional[utils.RetryConfig] Configuration to override the default retry behavior of the client.

Response

models.PostHrisEmployeesFormPositiveResponse

Errors

Error Type Status Code Content Type
errors.KomboHrisError default application/json
errors.SDKDefaultError 4XX, 5XX */*

add_employee_document

Uploads an document file for the specified employee.

This endpoint requires the permission **Manage documents** to be enabled in [your scope config](/scopes).

Example Request Body

{
  "category_id": "3Cjwu7nA7pH5cX5X1NAPmb7M",
  "document": {
    "name": "Frank Doe Employment Contract.txt",
    "data": "SGkgdGhlcmUsIEtvbWJvIGlzIGN1cnJlbnRseSBoaXJpbmcgZW5naW5lZXJzIHRoYXQgbG92ZSB0byB3b3JrIG9uIGRldmVsb3BlciBwcm9kdWN0cy4=",
    "content_type": "text/plain"
  }
}

Example Usage: Error Response

from kombo import Kombo


with Kombo(
    integration_id="workday:HWUTwvyx2wLoSUHphiWVrp28",
    api_key="<YOUR_BEARER_TOKEN_HERE>",
) as k_client:

    res = k_client.hris.add_employee_document(employee_id="<id>", category_id="<id>", document={
        "name": "<value>",
    })

    # Handle response
    print(res)

Example Usage: Minimal Error Response

from kombo import Kombo


with Kombo(
    integration_id="workday:HWUTwvyx2wLoSUHphiWVrp28",
    api_key="<YOUR_BEARER_TOKEN_HERE>",
) as k_client:

    res = k_client.hris.add_employee_document(employee_id="<id>", category_id="<id>", document={
        "name": "<value>",
    })

    # Handle response
    print(res)

Example Usage: example1

from kombo import Kombo


with Kombo(
    integration_id="workday:HWUTwvyx2wLoSUHphiWVrp28",
    api_key="<YOUR_BEARER_TOKEN_HERE>",
) as k_client:

    res = k_client.hris.add_employee_document(employee_id="GRKdd9dibYKKCrmGRSMJf3wu", category_id="3Cjwu7nA7pH5cX5X1NAPmb7M", document={
        "name": "Frank Doe Employment Contract.txt",
        "content_type": "text/plain",
        "data": "SGkgdGhlcmUsIEtvbWJvIGlzIGN1cnJlbnRseSBoaXJpbmcgZW5naW5lZXJzIHRoYXQgbG92ZSB0byB3b3JrIG9uIGRldmVsb3BlciBwcm9kdWN0cy4=",
    })

    # Handle response
    print(res)

Parameters

Parameter Type Required Description
employee_id str ✔️ POST /hris/employees/:employee_id/documents Parameter
category_id str ✔️ N/A
document models.Document ✔️ N/A
retries Optional[utils.RetryConfig] Configuration to override the default retry behavior of the client.

Response

models.PostHrisEmployeesEmployeeIDDocumentsPositiveResponse

Errors

Error Type Status Code Content Type
errors.KomboHrisError default application/json
errors.SDKDefaultError 4XX, 5XX */*

get_employee_document_categories

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)

Example Usage

from kombo import Kombo


with Kombo(
    integration_id="workday:HWUTwvyx2wLoSUHphiWVrp28",
    api_key="<YOUR_BEARER_TOKEN_HERE>",
) as k_client:

    res = k_client.hris.get_employee_document_categories(page_size=100, include_deleted=False, ignore_unsupported_filters=False)

    while res is not None:
        # Handle items

        res = res.next()

Parameters

Parameter Type Required Description
cursor Optional[str] An optional cursor string used for pagination. This can be retrieved from the next property of the previous page response.
page_size Optional[int] The number of results to return per page. Maximum is 250.
updated_after date 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.

For this endpoint, only changes to the returned record itself are considered.
include_deleted Optional[bool] By default, deleted entries are not returned. Use the include_deleted query param to include deleted entries too.
ignore_unsupported_filters Optional[bool] When set to true, filters targeting fields not supported by this integration will be ignored instead of filtering out all results.
ids List[str] Filter by a comma-separated list of IDs such as 222k7eCGyUdgt2JWZDNnkDs3,B5DVmypWENfU6eMe6gYDyJG3.
remote_ids List[str] Filter by a comma-separated list of remote IDs.
retries Optional[utils.RetryConfig] Configuration to override the default retry behavior of the client.

Response

models.GetHrisEmployeeDocumentCategoriesResponse

Errors

Error Type Status Code Content Type
errors.KomboHrisError default application/json
errors.SDKDefaultError 4XX, 5XX */*

get_groups

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)

Example Usage

from kombo import Kombo


with Kombo(
    integration_id="workday:HWUTwvyx2wLoSUHphiWVrp28",
    api_key="<YOUR_BEARER_TOKEN_HERE>",
) as k_client:

    res = k_client.hris.get_groups(page_size=100, include_deleted=False, ignore_unsupported_filters=False)

    while res is not None:
        # Handle items

        res = res.next()

Parameters

Parameter Type Required Description
cursor Optional[str] An optional cursor string used for pagination. This can be retrieved from the next property of the previous page response.
page_size Optional[int] The number of results to return per page. Maximum is 250.
updated_after date 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.

For this endpoint, only changes to the returned record itself are considered.
include_deleted Optional[bool] By default, deleted entries are not returned. Use the include_deleted query param to include deleted entries too.
ignore_unsupported_filters Optional[bool] When set to true, filters targeting fields not supported by this integration will be ignored instead of filtering out all results.
ids List[str] Filter by a comma-separated list of IDs such as 222k7eCGyUdgt2JWZDNnkDs3,B5DVmypWENfU6eMe6gYDyJG3.
remote_ids List[str] Filter by a comma-separated list of remote IDs.
types List[str] Filter by a comma-separated list of group types: DEPARTMENT, TEAM, COST_CENTER, or null to filter groups without a type.

Leave this blank to get results matching all values.
name_contains Optional[str] Filter by the name field. Can be used to find a group by keywords present in the group name.
retries Optional[utils.RetryConfig] Configuration to override the default retry behavior of the client.

Response

models.GetHrisGroupsResponse

Errors

Error Type Status Code Content Type
errors.KomboHrisError default application/json
errors.SDKDefaultError 4XX, 5XX */*

get_employments

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)

Example Usage

from kombo import Kombo


with Kombo(
    integration_id="workday:HWUTwvyx2wLoSUHphiWVrp28",
    api_key="<YOUR_BEARER_TOKEN_HERE>",
) as k_client:

    res = k_client.hris.get_employments(page_size=100, include_deleted=False, ignore_unsupported_filters=False)

    while res is not None:
        # Handle items

        res = res.next()

Parameters

Parameter Type Required Description
cursor Optional[str] An optional cursor string used for pagination. This can be retrieved from the next property of the previous page response.
page_size Optional[int] The number of results to return per page. Maximum is 250.
updated_after date 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.

For this endpoint, only changes to the returned record itself are considered.
include_deleted Optional[bool] By default, deleted entries are not returned. Use the include_deleted query param to include deleted entries too.
ignore_unsupported_filters Optional[bool] When set to true, filters targeting fields not supported by this integration will be ignored instead of filtering out all results.
ids List[str] Filter by a comma-separated list of IDs such as 222k7eCGyUdgt2JWZDNnkDs3,B5DVmypWENfU6eMe6gYDyJG3.
remote_ids List[str] Filter by a comma-separated list of remote IDs.
retries Optional[utils.RetryConfig] Configuration to override the default retry behavior of the client.

Response

models.GetHrisEmploymentsResponse

Errors

Error Type Status Code Content Type
errors.KomboHrisError default application/json
errors.SDKDefaultError 4XX, 5XX */*

get_locations

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)

Example Usage

from kombo import Kombo


with Kombo(
    integration_id="workday:HWUTwvyx2wLoSUHphiWVrp28",
    api_key="<YOUR_BEARER_TOKEN_HERE>",
) as k_client:

    res = k_client.hris.get_locations(page_size=100, include_deleted=False, ignore_unsupported_filters=False)

    while res is not None:
        # Handle items

        res = res.next()

Parameters

Parameter Type Required Description
cursor Optional[str] An optional cursor string used for pagination. This can be retrieved from the next property of the previous page response.
page_size Optional[int] The number of results to return per page. Maximum is 250.
updated_after date 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.

For this endpoint, only changes to the returned record itself are considered.
include_deleted Optional[bool] By default, deleted entries are not returned. Use the include_deleted query param to include deleted entries too.
ignore_unsupported_filters Optional[bool] When set to true, filters targeting fields not supported by this integration will be ignored instead of filtering out all results.
ids List[str] Filter by a comma-separated list of IDs such as 222k7eCGyUdgt2JWZDNnkDs3,B5DVmypWENfU6eMe6gYDyJG3.
remote_ids List[str] Filter by a comma-separated list of remote IDs.
name_contains Optional[str] Filter by the name field. Can be used to find a location by keywords present in the location name.
retries Optional[utils.RetryConfig] Configuration to override the default retry behavior of the client.

Response

models.GetHrisLocationsResponse

Errors

Error Type Status Code Content Type
errors.KomboHrisError default application/json
errors.SDKDefaultError 4XX, 5XX */*

get_absence_types

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)

Example Usage

from kombo import Kombo


with Kombo(
    integration_id="workday:HWUTwvyx2wLoSUHphiWVrp28",
    api_key="<YOUR_BEARER_TOKEN_HERE>",
) as k_client:

    res = k_client.hris.get_absence_types(page_size=100, include_deleted=False, ignore_unsupported_filters=False)

    while res is not None:
        # Handle items

        res = res.next()

Parameters

Parameter Type Required Description
cursor Optional[str] An optional cursor string used for pagination. This can be retrieved from the next property of the previous page response.
page_size Optional[int] The number of results to return per page. Maximum is 250.
updated_after date 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.

For this endpoint, only changes to the returned record itself are considered.
include_deleted Optional[bool] By default, deleted entries are not returned. Use the include_deleted query param to include deleted entries too.
ignore_unsupported_filters Optional[bool] When set to true, filters targeting fields not supported by this integration will be ignored instead of filtering out all results.
ids List[str] Filter by a comma-separated list of IDs such as 222k7eCGyUdgt2JWZDNnkDs3,B5DVmypWENfU6eMe6gYDyJG3.
remote_ids List[str] Filter by a comma-separated list of remote IDs.
retries Optional[utils.RetryConfig] Configuration to override the default retry behavior of the client.

Response

models.GetHrisAbsenceTypesResponse

Errors

Error Type Status Code Content Type
errors.KomboHrisError default application/json
errors.SDKDefaultError 4XX, 5XX */*

get_time_off_balances

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)

Example Usage

from kombo import Kombo


with Kombo(
    integration_id="workday:HWUTwvyx2wLoSUHphiWVrp28",
    api_key="<YOUR_BEARER_TOKEN_HERE>",
) as k_client:

    res = k_client.hris.get_time_off_balances(page_size=100, include_deleted=False, ignore_unsupported_filters=False)

    while res is not None:
        # Handle items

        res = res.next()

Parameters

Parameter Type Required Description
cursor Optional[str] An optional cursor string used for pagination. This can be retrieved from the next property of the previous page response.
page_size Optional[int] The number of results to return per page. Maximum is 250.
updated_after date 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.

For this endpoint, updated_after matches when the returned record changed, or when related data changed as described below.

| Path | Relationship | Target Record |
| --- | --- | --- |
| type | n/a | ✓ Yes |

Relationship: Whether adding or removing entries from this list triggers an update (n/a for single references that are not lists). Target Record: Whether changes to the linked record itself trigger an update.
include_deleted Optional[bool] By default, deleted entries are not returned. Use the include_deleted query param to include deleted entries too.
ignore_unsupported_filters Optional[bool] When set to true, filters targeting fields not supported by this integration will be ignored instead of filtering out all results.
ids List[str] Filter by a comma-separated list of IDs such as 222k7eCGyUdgt2JWZDNnkDs3,B5DVmypWENfU6eMe6gYDyJG3.
remote_ids List[str] Filter by a comma-separated list of remote IDs.
employee_id Optional[str] Filter by a specific employee using their ID.
retries Optional[utils.RetryConfig] Configuration to override the default retry behavior of the client.

Response

models.GetHrisTimeOffBalancesResponse

Errors

Error Type Status Code Content Type
errors.KomboHrisError default application/json
errors.SDKDefaultError 4XX, 5XX */*

get_absences

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)

Example Usage

from kombo import Kombo


with Kombo(
    integration_id="workday:HWUTwvyx2wLoSUHphiWVrp28",
    api_key="<YOUR_BEARER_TOKEN_HERE>",
) as k_client:

    res = k_client.hris.get_absences(page_size=100, include_deleted=False, ignore_unsupported_filters=False)

    while res is not None:
        # Handle items

        res = res.next()

Parameters

Parameter Type Required Description
cursor Optional[str] An optional cursor string used for pagination. This can be retrieved from the next property of the previous page response.
page_size Optional[int] The number of results to return per page. Maximum is 250.
updated_after date 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.

For this endpoint, updated_after matches when the returned record changed, or when related data changed as described below.

| Path | Relationship | Target Record |
| --- | --- | --- |
| type | n/a | ✓ Yes |

Relationship: Whether adding or removing entries from this list triggers an update (n/a for single references that are not lists). Target Record: Whether changes to the linked record itself trigger an update.
include_deleted Optional[bool] By default, deleted entries are not returned. Use the include_deleted query param to include deleted entries too.
ignore_unsupported_filters Optional[bool] When set to true, filters targeting fields not supported by this integration will be ignored instead of filtering out all results.
ids List[str] Filter by a comma-separated list of IDs such as 222k7eCGyUdgt2JWZDNnkDs3,B5DVmypWENfU6eMe6gYDyJG3.
remote_ids List[str] Filter by a comma-separated list of remote IDs.
date_from date 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.
date_until date 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_ids List[str] Filter by a comma-separated list of absence type IDs.
employee_id Optional[str] Filter by a specific employee using their ID.
retries Optional[utils.RetryConfig] Configuration to override the default retry behavior of the client.

Response

models.GetHrisAbsencesResponse

Errors

Error Type Status Code Content Type
errors.KomboHrisError default application/json
errors.SDKDefaultError 4XX, 5XX */*

create_absence

Create a new absence.

Check this page for a detailed guide.

This endpoint requires the permission **Manage absences** to be enabled in [your scope config](/scopes).

Example Request Body

{
  "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"
}

Example Usage: Error Response

from kombo import Kombo
from kombo.utils import parse_datetime


with Kombo(
    integration_id="workday:HWUTwvyx2wLoSUHphiWVrp28",
    api_key="<YOUR_BEARER_TOKEN_HERE>",
) as k_client:

    res = k_client.hris.create_absence(employee_id="<id>", absence_type_id="<id>", start_date=parse_datetime("2023-09-09T17:57:22.170Z"), end_date=parse_datetime("2024-03-21T09:03:29.368Z"), employee_note="<value>", status="REQUESTED", start_half_day=False, end_half_day=False)

    # Handle response
    print(res)

Example Usage: Minimal Error Response

from kombo import Kombo
from kombo.utils import parse_datetime


with Kombo(
    integration_id="workday:HWUTwvyx2wLoSUHphiWVrp28",
    api_key="<YOUR_BEARER_TOKEN_HERE>",
) as k_client:

    res = k_client.hris.create_absence(employee_id="<id>", absence_type_id="<id>", start_date=parse_datetime("2023-09-09T17:57:22.170Z"), end_date=parse_datetime("2024-03-21T09:03:29.368Z"), employee_note="<value>", status="REQUESTED", start_half_day=False, end_half_day=False)

    # Handle response
    print(res)

Example Usage: example1

from kombo import Kombo
from kombo.utils import parse_datetime


with Kombo(
    integration_id="workday:HWUTwvyx2wLoSUHphiWVrp28",
    api_key="<YOUR_BEARER_TOKEN_HERE>",
) as k_client:

    res = k_client.hris.create_absence(employee_id="wXJMxwDvPAjrJ4CyqdV9", absence_type_id="3YKtQ7qedsrcCady1jSyAkY1", start_date=parse_datetime("2019-09-17T00:00:00Z"), end_date=parse_datetime("2019-09-21T00:00:00Z"), employee_note="Visiting the aliens", status="REQUESTED", start_half_day=False, end_half_day=False, start_time="08:30:00", end_time="16:00:00")

    # Handle response
    print(res)

Parameters

Parameter Type Required Description
employee_id str ✔️ 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 str ✔️ The ID of the absence type in Kombo (not its remote_id).
start_date date ✔️ The date that the absence starts. This is a plain date (i.e., yyyy-MM-dd), with all time information discarded.

end_date date ✔️ 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.

employee_note Nullable[str] ✔️ A note describing the reason for this absence.
status Optional[models.PostHrisAbsencesRequestBodyStatus] 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.
start_half_day Optional[bool] true if the absence should start in the middle of the day.
end_half_day Optional[bool] true if the absence should end in the middle of the day.
amount Optional[float] The amount of time of the absence. Specifying this also requires specifying unit. This is supported by very few tools.
unit Optional[models.PostHrisAbsencesRequestBodyUnit] The time unit of the amount value. Specifying this also requires specifying amount.
start_time Optional[str] 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 Optional[str] 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 Optional[models.PostHrisAbsencesRequestBodyRemoteFields] Additional fields that we will pass through to specific HRIS systems.
retries Optional[utils.RetryConfig] Configuration to override the default retry behavior of the client.

Response

models.PostHrisAbsencesPositiveResponse

Errors

Error Type Status Code Content Type
errors.KomboHrisError default application/json
errors.SDKDefaultError 4XX, 5XX */*

delete_absence

Delete this absence.

This endpoint requires the permission **Manage absences** to be enabled in [your scope config](/scopes).

Example Request Body

{
  "absence_id": "wXJMxwDvPAjrJ4CyqdV9"
}

Example Usage: Error Response

from kombo import Kombo


with Kombo(
    integration_id="workday:HWUTwvyx2wLoSUHphiWVrp28",
    api_key="<YOUR_BEARER_TOKEN_HERE>",
) as k_client:

    res = k_client.hris.delete_absence(absence_id="<id>")

    # Handle response
    print(res)

Example Usage: Minimal Error Response

from kombo import Kombo


with Kombo(
    integration_id="workday:HWUTwvyx2wLoSUHphiWVrp28",
    api_key="<YOUR_BEARER_TOKEN_HERE>",
) as k_client:

    res = k_client.hris.delete_absence(absence_id="<id>")

    # Handle response
    print(res)

Example Usage: example1

from kombo import Kombo


with Kombo(
    integration_id="workday:HWUTwvyx2wLoSUHphiWVrp28",
    api_key="<YOUR_BEARER_TOKEN_HERE>",
) as k_client:

    res = k_client.hris.delete_absence(absence_id="wXJMxwDvPAjrJ4CyqdV9")

    # Handle response
    print(res)

Parameters

Parameter Type Required Description
absence_id str ✔️ The Kombo ID of the absence
remote_fields Optional[models.DeleteHrisAbsencesAbsenceIDRequestBodyRemoteFields] Additional fields that we will pass through to specific HRIS systems.
retries Optional[utils.RetryConfig] Configuration to override the default retry behavior of the client.

Response

models.DeleteHrisAbsencesAbsenceIDPositiveResponse

Errors

Error Type Status Code Content Type
errors.KomboHrisError default application/json
errors.SDKDefaultError 4XX, 5XX */*

get_legal_entities

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)

Example Usage

from kombo import Kombo


with Kombo(
    integration_id="workday:HWUTwvyx2wLoSUHphiWVrp28",
    api_key="<YOUR_BEARER_TOKEN_HERE>",
) as k_client:

    res = k_client.hris.get_legal_entities(page_size=100, include_deleted=False, ignore_unsupported_filters=False)

    while res is not None:
        # Handle items

        res = res.next()

Parameters

Parameter Type Required Description
cursor Optional[str] An optional cursor string used for pagination. This can be retrieved from the next property of the previous page response.
page_size Optional[int] The number of results to return per page. Maximum is 250.
updated_after date 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.

For this endpoint, only changes to the returned record itself are considered.
include_deleted Optional[bool] By default, deleted entries are not returned. Use the include_deleted query param to include deleted entries too.
ignore_unsupported_filters Optional[bool] When set to true, filters targeting fields not supported by this integration will be ignored instead of filtering out all results.
ids List[str] Filter by a comma-separated list of IDs such as 222k7eCGyUdgt2JWZDNnkDs3,B5DVmypWENfU6eMe6gYDyJG3.
remote_ids List[str] Filter by a comma-separated list of remote IDs.
name_contains Optional[str] Filter by the name field. Can be used to find a legal entity by keywords present in the legal entity name.
retries Optional[utils.RetryConfig] Configuration to override the default retry behavior of the client.

Response

models.GetHrisLegalEntitiesResponse

Errors

Error Type Status Code Content Type
errors.KomboHrisError default application/json
errors.SDKDefaultError 4XX, 5XX */*

get_timesheets

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.

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)

Example Usage

from kombo import Kombo


with Kombo(
    integration_id="workday:HWUTwvyx2wLoSUHphiWVrp28",
    api_key="<YOUR_BEARER_TOKEN_HERE>",
) as k_client:

    res = k_client.hris.get_timesheets(page_size=100, include_deleted=False, ignore_unsupported_filters=False)

    while res is not None:
        # Handle items

        res = res.next()

Parameters

Parameter Type Required Description
cursor Optional[str] An optional cursor string used for pagination. This can be retrieved from the next property of the previous page response.
page_size Optional[int] The number of results to return per page. Maximum is 250.
updated_after date 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.

For this endpoint, only changes to the returned record itself are considered.
include_deleted Optional[bool] By default, deleted entries are not returned. Use the include_deleted query param to include deleted entries too.
ignore_unsupported_filters Optional[bool] When set to true, filters targeting fields not supported by this integration will be ignored instead of filtering out all results.
ids List[str] Filter by a comma-separated list of IDs such as 222k7eCGyUdgt2JWZDNnkDs3,B5DVmypWENfU6eMe6gYDyJG3.
remote_ids List[str] Filter by a comma-separated list of remote IDs.
employee_id Optional[str] Returns timesheets for a specific employee.
started_before date Return timesheets whose start time is before the given timestamp.
started_after date Return timesheets whose start time is on or after the given timestamp.
ended_before date Return timesheets whose end time is on or before the given timestamp.
ended_after date Return timesheets whose end time is on or after the given timestamp.
retries Optional[utils.RetryConfig] Configuration to override the default retry behavior of the client.

Response

models.GetHrisTimesheetsResponse

Errors

Error Type Status Code Content Type
errors.KomboHrisError default application/json
errors.SDKDefaultError 4XX, 5XX */*

get_performance_review_cycles

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)

Example Usage

from kombo import Kombo


with Kombo(
    integration_id="workday:HWUTwvyx2wLoSUHphiWVrp28",
    api_key="<YOUR_BEARER_TOKEN_HERE>",
) as k_client:

    res = k_client.hris.get_performance_review_cycles(page_size=100, include_deleted=False, ignore_unsupported_filters=False)

    while res is not None:
        # Handle items

        res = res.next()

Parameters

Parameter Type Required Description
cursor Optional[str] An optional cursor string used for pagination. This can be retrieved from the next property of the previous page response.
page_size Optional[int] The number of results to return per page. Maximum is 250.
updated_after date 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.

For this endpoint, only changes to the returned record itself are considered.
include_deleted Optional[bool] By default, deleted entries are not returned. Use the include_deleted query param to include deleted entries too.
ignore_unsupported_filters Optional[bool] When set to true, filters targeting fields not supported by this integration will be ignored instead of filtering out all results.
ids List[str] Filter by a comma-separated list of IDs such as 222k7eCGyUdgt2JWZDNnkDs3,B5DVmypWENfU6eMe6gYDyJG3.
remote_ids List[str] Filter by a comma-separated list of remote IDs.
retries Optional[utils.RetryConfig] Configuration to override the default retry behavior of the client.

Response

models.GetHrisPerformanceReviewCyclesResponse

Errors

Error Type Status Code Content Type
errors.KomboHrisError default application/json
errors.SDKDefaultError 4XX, 5XX */*

get_performance_reviews

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)

Example Usage

from kombo import Kombo


with Kombo(
    integration_id="workday:HWUTwvyx2wLoSUHphiWVrp28",
    api_key="<YOUR_BEARER_TOKEN_HERE>",
) as k_client:

    res = k_client.hris.get_performance_reviews(page_size=100, include_deleted=False, ignore_unsupported_filters=False)

    while res is not None:
        # Handle items

        res = res.next()

Parameters

Parameter Type Required Description
cursor Optional[str] An optional cursor string used for pagination. This can be retrieved from the next property of the previous page response.
page_size Optional[int] The number of results to return per page. Maximum is 250.
updated_after date 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.

For this endpoint, updated_after matches when the returned record changed, or when related data changed as described below.

| Path | Relationship | Target Record |
| --- | --- | --- |
| review_cycle | n/a | ✓ Yes |
| reviewee | n/a | ✓ Yes |
| reviewer | n/a | ✓ Yes |

Relationship: Whether adding or removing entries from this list triggers an update (n/a for single references that are not lists). Target Record: Whether changes to the linked record itself trigger an update.
include_deleted Optional[bool] By default, deleted entries are not returned. Use the include_deleted query param to include deleted entries too.
ignore_unsupported_filters Optional[bool] When set to true, filters targeting fields not supported by this integration will be ignored instead of filtering out all results.
ids List[str] Filter by a comma-separated list of IDs such as 222k7eCGyUdgt2JWZDNnkDs3,B5DVmypWENfU6eMe6gYDyJG3.
remote_ids List[str] Filter by a comma-separated list of remote IDs.
types List[str] Filter by a comma-separated list of MANAGER, DIRECT_REPORT, PEER, SELF

Leave this blank to get results matching all values.
review_cycle_ids List[str] Filter by a comma-separated list of review cycle IDs.
reviewee_ids List[str] Filter by a comma-separated list of reviewee IDs.
retries Optional[utils.RetryConfig] Configuration to override the default retry behavior of the client.

Response

models.GetHrisPerformanceReviewsResponse

Errors

Error Type Status Code Content Type
errors.KomboHrisError default application/json
errors.SDKDefaultError 4XX, 5XX */*

get_staffing_entities

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)

Example Usage

from kombo import Kombo


with Kombo(
    integration_id="workday:HWUTwvyx2wLoSUHphiWVrp28",
    api_key="<YOUR_BEARER_TOKEN_HERE>",
) as k_client:

    res = k_client.hris.get_staffing_entities(page_size=100, include_deleted=False, ignore_unsupported_filters=False)

    while res is not None:
        # Handle items

        res = res.next()

Parameters

Parameter Type Required Description
cursor Optional[str] An optional cursor string used for pagination. This can be retrieved from the next property of the previous page response.
page_size Optional[int] The number of results to return per page. Maximum is 250.
updated_after date 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.

For this endpoint, updated_after matches when the returned record changed, or when related data changed as described below.

| Path | Relationship | Target Record |
| --- | --- | --- |
| locations | ✓ Yes | ✓ Yes |
| legal_entities | ✓ Yes | ✓ Yes |
| groups | ✓ Yes | ✓ Yes |

Relationship: Whether adding or removing entries from this list triggers an update (n/a for single references that are not lists). Target Record: Whether changes to the linked record itself trigger an update.
include_deleted Optional[bool] By default, deleted entries are not returned. Use the include_deleted query param to include deleted entries too.
ignore_unsupported_filters Optional[bool] When set to true, filters targeting fields not supported by this integration will be ignored instead of filtering out all results.
ids List[str] Filter by a comma-separated list of IDs such as 222k7eCGyUdgt2JWZDNnkDs3,B5DVmypWENfU6eMe6gYDyJG3.
remote_ids List[str] Filter by a comma-separated list of remote IDs.
model_types List[str] Filter by a comma-separated list of JOB, POSITION, REQUISITION

Leave this blank to get results matching all values.
statuses List[str] Filter by a comma-separated list of OPEN_LIMITED, OPEN_UNLIMITED, PENDING, FROZEN, FILLED, CLOSED

Leave this blank to get results matching all values.
retries Optional[utils.RetryConfig] Configuration to override the default retry behavior of the client.

Response

models.GetHrisStaffingEntitiesResponse

Errors

Error Type Status Code Content Type
errors.KomboHrisError default application/json
errors.SDKDefaultError 4XX, 5XX */*