{"files":{"SKILL.md":"---\nname: hris-api\ndescription: \"HRIS API skill. Use when working with HRIS for hris. Covers 25 endpoints.\"\nversion: 1.0.0\ngenerator: lapsh\n---\n\n# HRIS API\nAPI version: 10.24.12\n\n## Auth\nApiKey Authorization in header\n\n## Base URL\nhttps://unify.apideck.com\n\n## Setup\n1. Set your API key in the appropriate header\n2. GET /hris/employees -- list employees\n3. POST /hris/employees -- create first employee\n\n## Endpoints\n25 endpoints across 1 group. See references/api-spec.lap for full details.\n\n### Hris\n| Method | Path | Description |\n|--------|------|-------------|\n| GET | /hris/employees | List Employees |\n| POST | /hris/employees | Create Employee |\n| GET | /hris/employees/{id} | Get Employee |\n| PATCH | /hris/employees/{id} | Update Employee |\n| DELETE | /hris/employees/{id} | Delete Employee |\n| GET | /hris/companies | List Companies |\n| POST | /hris/companies | Create Company |\n| GET | /hris/companies/{id} | Get Company |\n| PATCH | /hris/companies/{id} | Update Company |\n| DELETE | /hris/companies/{id} | Delete Company |\n| GET | /hris/departments | List Departments |\n| POST | /hris/departments | Create Department |\n| GET | /hris/departments/{id} | Get Department |\n| PATCH | /hris/departments/{id} | Update Department |\n| DELETE | /hris/departments/{id} | Delete Department |\n| GET | /hris/payrolls | List Payroll |\n| GET | /hris/payrolls/{payroll_id} | Get Payroll |\n| GET | /hris/payrolls/employees/{employee_id} | List Employee Payrolls |\n| GET | /hris/payrolls/employees/{employee_id}/payrolls/{payroll_id} | Get Employee Payroll |\n| GET | /hris/schedules/employees/{employee_id} | List Employee Schedules |\n| GET | /hris/time-off-requests | List Time Off Requests |\n| POST | /hris/time-off-requests | Create Time Off Request |\n| GET | /hris/time-off-requests/employees/{employee_id}/time-off-requests/{id} | Get Time Off Request |\n| PATCH | /hris/time-off-requests/employees/{employee_id}/time-off-requests/{id} | Update Time Off Request |\n| DELETE | /hris/time-off-requests/employees/{employee_id}/time-off-requests/{id} | Delete Time Off Request |\n\n## Common Questions\nMatch user requests to endpoints in references/api-spec.lap. Key patterns:\n- \"List all employees?\" -> GET /hris/employees\n- \"Create a employee?\" -> POST /hris/employees\n- \"Get employee details?\" -> GET /hris/employees/{id}\n- \"Partially update a employee?\" -> PATCH /hris/employees/{id}\n- \"Delete a employee?\" -> DELETE /hris/employees/{id}\n- \"List all companies?\" -> GET /hris/companies\n- \"Create a company?\" -> POST /hris/companies\n- \"Get company details?\" -> GET /hris/companies/{id}\n- \"Partially update a company?\" -> PATCH /hris/companies/{id}\n- \"Delete a company?\" -> DELETE /hris/companies/{id}\n- \"List all departments?\" -> GET /hris/departments\n- \"Create a department?\" -> POST /hris/departments\n- \"Get department details?\" -> GET /hris/departments/{id}\n- \"Partially update a department?\" -> PATCH /hris/departments/{id}\n- \"Delete a department?\" -> DELETE /hris/departments/{id}\n- \"List all payrolls?\" -> GET /hris/payrolls\n- \"Get payroll details?\" -> GET /hris/payrolls/{payroll_id}\n- \"List all time-off-requests?\" -> GET /hris/time-off-requests\n- \"Create a time-off-request?\" -> POST /hris/time-off-requests\n- \"Get time-off-request details?\" -> GET /hris/time-off-requests/employees/{employee_id}/time-off-requests/{id}\n- \"Partially update a time-off-request?\" -> PATCH /hris/time-off-requests/employees/{employee_id}/time-off-requests/{id}\n- \"Delete a time-off-request?\" -> DELETE /hris/time-off-requests/employees/{employee_id}/time-off-requests/{id}\n- \"How to authenticate?\" -> See Auth section above\n\n## Response Tips\n- Check response schemas in references/api-spec.lap for field details\n- Paginated endpoints accept limit/offset or cursor parameters\n- Create/update endpoints return the modified resource on success\n- Error responses include status codes and descriptions in the spec\n\n## References\n- Full spec: See references/api-spec.lap for complete endpoint details, parameter tables, and response schemas\n\n> Generated from the official API spec by [LAP](https://lap.sh)\n","references/api-spec.lap":"@lap v0.3\n# Machine-readable API spec. Each @endpoint block is one API call.\n@api HRIS API\n@base https://unify.apideck.com\n@version 10.24.10\n@auth ApiKey Authorization in header\n@common_fields {x-apideck-consumer-id: str # ID of the consumer which you want to get or push data from, x-apideck-app-id: str # The ID of your Unify application, raw: bool=false # Include raw response. Mostly used for debugging purposes, x-apideck-service-id: str # Provide the service id you want to call (e.g., pipedrive). Only needed when a consumer has activated multiple integrations for a Unified API.}\n@endpoints 25\n@hint download_for_search\n@toc hris(25)\n\n@endpoint GET /hris/employees\n@desc List Employees\n@optional {cursor: str # Cursor to start from. You can find cursors for next/previous pages in the meta.cursors property of the response., limit: int=20 # Number of results to return. Minimum 1, Maximum 200, Default 20, filter: map # Apply filters, sort: map # Apply sorting, pass_through: map # Optional unmapped key/values that will be passed through to downstream as query parameters. Ie: ?pass_through[search]=leads becomes ?search=leads, fields: str # The 'fields' parameter allows API users to specify the fields they want to include in the API response. If this parameter is not present, the API will return all available fields. If this parameter is present, only the fields specified in the comma-separated string will be included in the response. Nested properties can also be requested by using a dot notation. Example: `fields=name,email,addresses.city`In the example above, the response will only include the fields \"name\", \"email\" and \"addresses.city\". If any other fields are available, they will be excluded.}\n@returns(200) {status_code: int, status: str, service: str, resource: str, operation: str, data: [map], _raw: map?, meta: map{items_on_page: int, cursors: map{previous: str?, current: str?, next: str?}}, links: map{previous: str?, current: str, next: str?}} # Employees\n@errors {400: Bad Request, 401: Unauthorized, 402: Payment Required, 404: The specified resource was not found, 422: Unprocessable}\n\n@endpoint POST /hris/employees\n@desc Create Employee\n@optional {id: str # A unique identifier for an object., downstream_id: str # The third-party API ID of original entity, first_name: str # The first name of the person., last_name: str # The last name of the person., middle_name: str # Middle name of the person., display_name: str # The name used to display the employee, often a combination of their first and last names., preferred_name: str # The name the employee prefers to be addressed by, which may be different from their legal name., initials: str # The initials of the person, usually derived from their first, middle, and last names., salutation: str # A formal salutation for the person. For example, 'Mr', 'Mrs', title: str # The job title of the person., marital_status: str # The marital status of the employee., partner: map{id: str, first_name: str, last_name: str, middle_name: str, gender: str, initials: str, birthday: str(date), deceased_on: str(date), custom_mappings: map}, division: str # The division the person is currently in. Usually a collection of departments or teams or regions., division_id: str # Unique identifier of the division this employee belongs to., department: str # The department the person is currently in. [Deprecated](https://developers.apideck.com/changelog) in favor of the dedicated department_id and department_name field., department_id: str # Unique identifier of the department ID this employee belongs to., department_name: str # Name of the department this employee belongs to., team: map{id: str, name: str} # The team the person is currently in., company_id: str # The unique identifier of the company., company_name: str # The name of the company., employment_start_date: str # A Start Date is the date that the employee started working at the company, employment_end_date: str # An End Date is the date that the employee ended working at the company, leaving_reason: str(dismissed/resigned/redundancy/retired/other) # The reason because the employment ended., employee_number: str # An Employee Number, Employee ID or Employee Code, is a unique number that has been assigned to each individual staff member within a company., employment_status: str(active/inactive/terminated/other) # The employment status of the employee, indicating whether they are currently employed, inactive, terminated, or in another status., employment_role: map{type: str, sub_type: str}, ethnicity: str # The ethnicity of the employee, manager: map{id: str, name: str, first_name: str, last_name: str, email: str(email), employment_status: str}, direct_reports: [str] # Direct reports is an array of ids that reflect the individuals in an organizational hierarchy who are directly supervised by this specific employee., social_security_number: str # A unique identifier assigned by the government. This field is considered sensitive information and may be subject to special security and privacy restrictions., birthday: str(date) # The date of birth of the person., deceased_on: str(date) # The date the person deceased., country_of_birth: str # Country code according to ISO 3166-1 alpha-2., description: str # A description of the object., gender: str(male/female/unisex/other/not_specified) # The gender represents the gender identity of a person., pronouns: str # The preferred pronouns of the person., preferred_language: str # language code according to ISO 639-1. For the United States - EN, languages: [str], nationalities: [str], photo_url: str # The URL of the photo of a person., timezone: str # The time zone related to the resource. The value is a string containing a standard time zone identifier, e.g. Europe/London., source: str # When the employee is imported as a new hire, this field indicates what system (e.g. the name of the ATS) this employee was imported from., source_id: str # Unique identifier of the employee in the system this employee was imported from (e.g. the ID in the ATS)., record_url: str, jobs: [map{id: str, employee_id: str, title: str, role: str, start_date: str(date), end_date: str(date), compensation_rate: num, currency: str, payment_unit: str, hired_at: str(date), is_primary: bool, is_manager: bool, status: str, location: map}], compensations: [map{id: str, job_id: str, rate: num, payment_unit: str, currency: str, flsa_status: str, effective_date: str, payment_frequency: str}], works_remote: bool # Indicates if the employee works from a remote location., addresses: [map{id: str, type: str, string: str, name: str, line1: str, line2: str, line3: str, line4: str, line5: str, street_number: str, city: str, state: str, postal_code: str, country: str, latitude: str, longitude: str, county: str, contact_name: str, salutation: str, phone_number: str, fax: str, email: str, website: str, notes: str, row_version: str}], phone_numbers: [map{id: str, country_code: str, area_code: str, number!: str, extension: str, type: str}], emails: [map{id: str, email!: str(email), type: str}], custom_fields: [map{id: str, name: str, description: str, value: any}], social_links: [map{id: str, url!: str, type: str}], bank_accounts: [map{bank_name: str, account_number: str, account_name: str, account_type: str, iban: str, bic: str, routing_number: str, bsb_number: str, branch_identifier: str, bank_code: str, currency: str, country: str}], tax_code: str, tax_id: str, dietary_preference: str # Indicate the employee's dietary preference., food_allergies: [str] # Indicate the employee's food allergies., probation_period: map{start_date: str(date), end_date: str(date)}, tags: [str], custom_mappings: map # When custom mappings are configured on the resource, the result is included here., row_version: str # A binary value used to detect updates to a object and prevent data conflicts. It is incremented each time an update is made to the object., deleted: bool # Flag to indicate if the object is deleted., updated_by: str # The user who last updated the object., created_by: str # The user who created the object., updated_at: str(date-time) # The date and time when the object was last updated., created_at: str(date-time) # The date and time when the object was created., pass_through: [map{service_id!: str, operation_id: str, extend_object: map, extend_paths: [map]}] # The pass_through property allows passing service-specific, custom data or structured modifications in request body when creating or updating resources.}\n@returns(201) {status_code: int, status: str, service: str, resource: str, operation: str, data: map{id: str}, _raw: map?} # Employees\n@errors {400: Bad Request, 401: Unauthorized, 402: Payment Required, 404: The specified resource was not found, 422: Unprocessable}\n\n@endpoint GET /hris/employees/{id}\n@desc Get Employee\n@required {id: str # ID of the record you are acting upon.}\n@optional {fields: str # The 'fields' parameter allows API users to specify the fields they want to include in the API response. If this parameter is not present, the API will return all available fields. If this parameter is present, only the fields specified in the comma-separated string will be included in the response. Nested properties can also be requested by using a dot notation. Example: `fields=name,email,addresses.city`In the example above, the response will only include the fields \"name\", \"email\" and \"addresses.city\". If any other fields are available, they will be excluded., filter: map # Apply filters, pass_through: map # Optional unmapped key/values that will be passed through to downstream as query parameters. Ie: ?pass_through[search]=leads becomes ?search=leads}\n@returns(200) {status_code: int, status: str, service: str, resource: str, operation: str, data: map{id: str?, downstream_id: str?, first_name: str?, last_name: str?, middle_name: str?, display_name: str?, preferred_name: str?, initials: str?, salutation: str?, title: str?, marital_status: str?, partner: map{id: str?, first_name: str?, last_name: str?, middle_name: str?, gender: str?, initials: str?, birthday: str(date)?, deceased_on: str(date)?, custom_mappings: map?}, division: str?, division_id: str?, department: str?, department_id: str?, department_name: str?, team: map?{id: str?, name: str?}, company_id: str?, company_name: str?, employment_start_date: str?, employment_end_date: str?, leaving_reason: str?, employee_number: str?, employment_status: str?, employment_role: map{type: str?, sub_type: str?}, ethnicity: str?, manager: map{id: str?, name: str?, first_name: str?, last_name: str?, email: str(email)?, employment_status: str?}, direct_reports: [str]?, social_security_number: str?, birthday: str(date)?, deceased_on: str(date)?, country_of_birth: str?, description: str?, gender: str?, pronouns: str?, preferred_language: str?, languages: [str], nationalities: [str], photo_url: str?, timezone: str?, source: str?, source_id: str?, record_url: str?, jobs: [map]?, compensations: [map]?, works_remote: bool?, addresses: [map], phone_numbers: [map], emails: [map], custom_fields: [map], social_links: [map], bank_accounts: [map], tax_code: str?, tax_id: str?, dietary_preference: str?, food_allergies: [str]?, probation_period: map{start_date: str(date)?, end_date: str(date)?}, tags: [str]?, custom_mappings: map?, row_version: str?, deleted: bool?, updated_by: str?, created_by: str?, updated_at: str(date-time)?, created_at: str(date-time)?, pass_through: [map]}, _raw: map?} # Employees\n@errors {400: Bad Request, 401: Unauthorized, 402: Payment Required, 404: The specified resource was not found, 422: Unprocessable}\n\n@endpoint PATCH /hris/employees/{id}\n@desc Update Employee\n@required {id: str # ID of the record you are acting upon.}\n@optional {id: str # A unique identifier for an object., downstream_id: str # The third-party API ID of original entity, first_name: str # The first name of the person., last_name: str # The last name of the person., middle_name: str # Middle name of the person., display_name: str # The name used to display the employee, often a combination of their first and last names., preferred_name: str # The name the employee prefers to be addressed by, which may be different from their legal name., initials: str # The initials of the person, usually derived from their first, middle, and last names., salutation: str # A formal salutation for the person. For example, 'Mr', 'Mrs', title: str # The job title of the person., marital_status: str # The marital status of the employee., partner: map{id: str, first_name: str, last_name: str, middle_name: str, gender: str, initials: str, birthday: str(date), deceased_on: str(date), custom_mappings: map}, division: str # The division the person is currently in. Usually a collection of departments or teams or regions., division_id: str # Unique identifier of the division this employee belongs to., department: str # The department the person is currently in. [Deprecated](https://developers.apideck.com/changelog) in favor of the dedicated department_id and department_name field., department_id: str # Unique identifier of the department ID this employee belongs to., department_name: str # Name of the department this employee belongs to., team: map{id: str, name: str} # The team the person is currently in., company_id: str # The unique identifier of the company., company_name: str # The name of the company., employment_start_date: str # A Start Date is the date that the employee started working at the company, employment_end_date: str # An End Date is the date that the employee ended working at the company, leaving_reason: str(dismissed/resigned/redundancy/retired/other) # The reason because the employment ended., employee_number: str # An Employee Number, Employee ID or Employee Code, is a unique number that has been assigned to each individual staff member within a company., employment_status: str(active/inactive/terminated/other) # The employment status of the employee, indicating whether they are currently employed, inactive, terminated, or in another status., employment_role: map{type: str, sub_type: str}, ethnicity: str # The ethnicity of the employee, manager: map{id: str, name: str, first_name: str, last_name: str, email: str(email), employment_status: str}, direct_reports: [str] # Direct reports is an array of ids that reflect the individuals in an organizational hierarchy who are directly supervised by this specific employee., social_security_number: str # A unique identifier assigned by the government. This field is considered sensitive information and may be subject to special security and privacy restrictions., birthday: str(date) # The date of birth of the person., deceased_on: str(date) # The date the person deceased., country_of_birth: str # Country code according to ISO 3166-1 alpha-2., description: str # A description of the object., gender: str(male/female/unisex/other/not_specified) # The gender represents the gender identity of a person., pronouns: str # The preferred pronouns of the person., preferred_language: str # language code according to ISO 639-1. For the United States - EN, languages: [str], nationalities: [str], photo_url: str # The URL of the photo of a person., timezone: str # The time zone related to the resource. The value is a string containing a standard time zone identifier, e.g. Europe/London., source: str # When the employee is imported as a new hire, this field indicates what system (e.g. the name of the ATS) this employee was imported from., source_id: str # Unique identifier of the employee in the system this employee was imported from (e.g. the ID in the ATS)., record_url: str, jobs: [map{id: str, employee_id: str, title: str, role: str, start_date: str(date), end_date: str(date), compensation_rate: num, currency: str, payment_unit: str, hired_at: str(date), is_primary: bool, is_manager: bool, status: str, location: map}], compensations: [map{id: str, job_id: str, rate: num, payment_unit: str, currency: str, flsa_status: str, effective_date: str, payment_frequency: str}], works_remote: bool # Indicates if the employee works from a remote location., addresses: [map{id: str, type: str, string: str, name: str, line1: str, line2: str, line3: str, line4: str, line5: str, street_number: str, city: str, state: str, postal_code: str, country: str, latitude: str, longitude: str, county: str, contact_name: str, salutation: str, phone_number: str, fax: str, email: str, website: str, notes: str, row_version: str}], phone_numbers: [map{id: str, country_code: str, area_code: str, number!: str, extension: str, type: str}], emails: [map{id: str, email!: str(email), type: str}], custom_fields: [map{id: str, name: str, description: str, value: any}], social_links: [map{id: str, url!: str, type: str}], bank_accounts: [map{bank_name: str, account_number: str, account_name: str, account_type: str, iban: str, bic: str, routing_number: str, bsb_number: str, branch_identifier: str, bank_code: str, currency: str, country: str}], tax_code: str, tax_id: str, dietary_preference: str # Indicate the employee's dietary preference., food_allergies: [str] # Indicate the employee's food allergies., probation_period: map{start_date: str(date), end_date: str(date)}, tags: [str], custom_mappings: map # When custom mappings are configured on the resource, the result is included here., row_version: str # A binary value used to detect updates to a object and prevent data conflicts. It is incremented each time an update is made to the object., deleted: bool # Flag to indicate if the object is deleted., updated_by: str # The user who last updated the object., created_by: str # The user who created the object., updated_at: str(date-time) # The date and time when the object was last updated., created_at: str(date-time) # The date and time when the object was created., pass_through: [map{service_id!: str, operation_id: str, extend_object: map, extend_paths: [map]}] # The pass_through property allows passing service-specific, custom data or structured modifications in request body when creating or updating resources.}\n@returns(200) {status_code: int, status: str, service: str, resource: str, operation: str, data: map{id: str}, _raw: map?} # Employees\n@errors {400: Bad Request, 401: Unauthorized, 402: Payment Required, 404: The specified resource was not found, 422: Unprocessable}\n\n@endpoint DELETE /hris/employees/{id}\n@desc Delete Employee\n@required {id: str # ID of the record you are acting upon.}\n@returns(200) {status_code: int, status: str, service: str, resource: str, operation: str, data: map{id: str}, _raw: map?} # Employees\n@errors {400: Bad Request, 401: Unauthorized, 402: Payment Required, 404: The specified resource was not found, 422: Unprocessable}\n\n@endpoint GET /hris/companies\n@desc List Companies\n@optional {cursor: str # Cursor to start from. You can find cursors for next/previous pages in the meta.cursors property of the response., limit: int=20 # Number of results to return. Minimum 1, Maximum 200, Default 20, pass_through: map # Optional unmapped key/values that will be passed through to downstream as query parameters. Ie: ?pass_through[search]=leads becomes ?search=leads, fields: str # The 'fields' parameter allows API users to specify the fields they want to include in the API response. If this parameter is not present, the API will return all available fields. If this parameter is present, only the fields specified in the comma-separated string will be included in the response. Nested properties can also be requested by using a dot notation. Example: `fields=name,email,addresses.city`In the example above, the response will only include the fields \"name\", \"email\" and \"addresses.city\". If any other fields are available, they will be excluded.}\n@returns(200) {status_code: int, status: str, service: str, resource: str, operation: str, data: [map], _raw: map?, meta: map{items_on_page: int, cursors: map{previous: str?, current: str?, next: str?}}, links: map{previous: str?, current: str, next: str?}} # Companies\n@errors {400: Bad Request, 401: Unauthorized, 402: Payment Required, 404: The specified resource was not found, 422: Unprocessable}\n\n@endpoint POST /hris/companies\n@desc Create Company\n@required {legal_name: str}\n@optional {id: str # A unique identifier for an object., display_name: str, subdomain: str, status: str(active/inactive/trial/other), company_number: str # An Company Number, Company ID or Company Code, is a unique number that has been assigned to each company., currency: str(UNKNOWN_CURRENCY/AED/AFN/ALL/AMD/ANG/AOA/ARS/AUD/AWG/AZN/BAM/BBD/BDT/BGN/BHD/BIF/BMD/BND/BOB/BOV/BRL/BSD/BTN/BWP/BYR/BZD/CAD/CDF/CHE/CHF/CHW/CLF/CLP/CNY/COP/COU/CRC/CUC/CUP/CVE/CZK/DJF/DKK/DOP/DZD/EGP/ERN/ETB/EUR/FJD/FKP/GBP/GEL/GHS/GIP/GMD/GNF/GTQ/GYD/HKD/HNL/HRK/HTG/HUF/IDR/ILS/INR/IQD/IRR/ISK/JMD/JOD/JPY/KES/KGS/KHR/KMF/KPW/KRW/KWD/KYD/KZT/LAK/LBP/LKR/LRD/LSL/LTL/LVL/LYD/MAD/MDL/MGA/MKD/MMK/MNT/MOP/MRO/MUR/MVR/MWK/MXN/MXV/MYR/MZN/NAD/NGN/NIO/NOK/NPR/NZD/OMR/PAB/PEN/PGK/PHP/PKR/PLN/PYG/QAR/RON/RSD/RUB/RWF/SAR/SBD/SCR/SDG/SEK/SGD/SHP/SLL/SOS/SRD/SSP/STD/SVC/SYP/SZL/THB/TJS/TMT/TND/TOP/TRC/TRY/TTD/TWD/TZS/UAH/UGX/USD/USN/USS/UYI/UYU/UZS/VEF/VND/VUV/WST/XAF/XAG/XAU/XBA/XBB/XBC/XBD/XCD/XDR/XOF/XPD/XPF/XPT/XTS/XXX/YER/ZAR/ZMK/ZMW/BTC/ETH) # Indicates the associated currency for an amount of money. Values correspond to [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217)., addresses: [map{id: str, type: str, string: str, name: str, line1: str, line2: str, line3: str, line4: str, line5: str, street_number: str, city: str, state: str, postal_code: str, country: str, latitude: str, longitude: str, county: str, contact_name: str, salutation: str, phone_number: str, fax: str, email: str, website: str, notes: str, row_version: str}], phone_numbers: [map{id: str, country_code: str, area_code: str, number!: str, extension: str, type: str}], emails: [map{id: str, email!: str(email), type: str}], websites: [map{id: str, url!: str, type: str}], debtor_id: str, custom_mappings: map # When custom mappings are configured on the resource, the result is included here., deleted: bool, updated_by: str # The user who last updated the object., created_by: str # The user who created the object., updated_at: str(date-time) # The date and time when the object was last updated., created_at: str(date-time) # The date and time when the object was created., pass_through: [map{service_id!: str, operation_id: str, extend_object: map, extend_paths: [map]}] # The pass_through property allows passing service-specific, custom data or structured modifications in request body when creating or updating resources.}\n@returns(201) {status_code: int, status: str, service: str, resource: str, operation: str, data: map{id: str}, _raw: map?} # Companies\n@errors {400: Bad Request, 401: Unauthorized, 402: Payment Required, 404: The specified resource was not found, 422: Unprocessable}\n\n@endpoint GET /hris/companies/{id}\n@desc Get Company\n@required {id: str # ID of the record you are acting upon.}\n@optional {fields: str # The 'fields' parameter allows API users to specify the fields they want to include in the API response. If this parameter is not present, the API will return all available fields. If this parameter is present, only the fields specified in the comma-separated string will be included in the response. Nested properties can also be requested by using a dot notation. Example: `fields=name,email,addresses.city`In the example above, the response will only include the fields \"name\", \"email\" and \"addresses.city\". If any other fields are available, they will be excluded.}\n@returns(200) {status_code: int, status: str, service: str, resource: str, operation: str, data: map{id: str, legal_name: str?, display_name: str?, subdomain: str?, status: str, company_number: str?, currency: str?, addresses: [map], phone_numbers: [map], emails: [map], websites: [map], debtor_id: str?, custom_mappings: map?, deleted: bool, updated_by: str?, created_by: str?, updated_at: str(date-time)?, created_at: str(date-time)?, pass_through: [map]}, _raw: map?} # Company\n@errors {400: Bad Request, 401: Unauthorized, 402: Payment Required, 404: The specified resource was not found, 422: Unprocessable}\n\n@endpoint PATCH /hris/companies/{id}\n@desc Update Company\n@required {id: str # ID of the record you are acting upon., legal_name: str}\n@optional {id: str # A unique identifier for an object., display_name: str, subdomain: str, status: str(active/inactive/trial/other), company_number: str # An Company Number, Company ID or Company Code, is a unique number that has been assigned to each company., currency: str(UNKNOWN_CURRENCY/AED/AFN/ALL/AMD/ANG/AOA/ARS/AUD/AWG/AZN/BAM/BBD/BDT/BGN/BHD/BIF/BMD/BND/BOB/BOV/BRL/BSD/BTN/BWP/BYR/BZD/CAD/CDF/CHE/CHF/CHW/CLF/CLP/CNY/COP/COU/CRC/CUC/CUP/CVE/CZK/DJF/DKK/DOP/DZD/EGP/ERN/ETB/EUR/FJD/FKP/GBP/GEL/GHS/GIP/GMD/GNF/GTQ/GYD/HKD/HNL/HRK/HTG/HUF/IDR/ILS/INR/IQD/IRR/ISK/JMD/JOD/JPY/KES/KGS/KHR/KMF/KPW/KRW/KWD/KYD/KZT/LAK/LBP/LKR/LRD/LSL/LTL/LVL/LYD/MAD/MDL/MGA/MKD/MMK/MNT/MOP/MRO/MUR/MVR/MWK/MXN/MXV/MYR/MZN/NAD/NGN/NIO/NOK/NPR/NZD/OMR/PAB/PEN/PGK/PHP/PKR/PLN/PYG/QAR/RON/RSD/RUB/RWF/SAR/SBD/SCR/SDG/SEK/SGD/SHP/SLL/SOS/SRD/SSP/STD/SVC/SYP/SZL/THB/TJS/TMT/TND/TOP/TRC/TRY/TTD/TWD/TZS/UAH/UGX/USD/USN/USS/UYI/UYU/UZS/VEF/VND/VUV/WST/XAF/XAG/XAU/XBA/XBB/XBC/XBD/XCD/XDR/XOF/XPD/XPF/XPT/XTS/XXX/YER/ZAR/ZMK/ZMW/BTC/ETH) # Indicates the associated currency for an amount of money. Values correspond to [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217)., addresses: [map{id: str, type: str, string: str, name: str, line1: str, line2: str, line3: str, line4: str, line5: str, street_number: str, city: str, state: str, postal_code: str, country: str, latitude: str, longitude: str, county: str, contact_name: str, salutation: str, phone_number: str, fax: str, email: str, website: str, notes: str, row_version: str}], phone_numbers: [map{id: str, country_code: str, area_code: str, number!: str, extension: str, type: str}], emails: [map{id: str, email!: str(email), type: str}], websites: [map{id: str, url!: str, type: str}], debtor_id: str, custom_mappings: map # When custom mappings are configured on the resource, the result is included here., deleted: bool, updated_by: str # The user who last updated the object., created_by: str # The user who created the object., updated_at: str(date-time) # The date and time when the object was last updated., created_at: str(date-time) # The date and time when the object was created., pass_through: [map{service_id!: str, operation_id: str, extend_object: map, extend_paths: [map]}] # The pass_through property allows passing service-specific, custom data or structured modifications in request body when creating or updating resources.}\n@returns(200) {status_code: int, status: str, service: str, resource: str, operation: str, data: map{id: str}, _raw: map?} # Companies\n@errors {400: Bad Request, 401: Unauthorized, 402: Payment Required, 404: The specified resource was not found, 422: Unprocessable}\n\n@endpoint DELETE /hris/companies/{id}\n@desc Delete Company\n@required {id: str # ID of the record you are acting upon.}\n@returns(200) {status_code: int, status: str, service: str, resource: str, operation: str, data: map{id: str}, _raw: map?} # Companies\n@errors {400: Bad Request, 401: Unauthorized, 402: Payment Required, 404: The specified resource was not found, 422: Unprocessable}\n\n@endpoint GET /hris/departments\n@desc List Departments\n@optional {cursor: str # Cursor to start from. You can find cursors for next/previous pages in the meta.cursors property of the response., limit: int=20 # Number of results to return. Minimum 1, Maximum 200, Default 20, pass_through: map # Optional unmapped key/values that will be passed through to downstream as query parameters. Ie: ?pass_through[search]=leads becomes ?search=leads, fields: str # The 'fields' parameter allows API users to specify the fields they want to include in the API response. If this parameter is not present, the API will return all available fields. If this parameter is present, only the fields specified in the comma-separated string will be included in the response. Nested properties can also be requested by using a dot notation. Example: `fields=name,email,addresses.city`In the example above, the response will only include the fields \"name\", \"email\" and \"addresses.city\". If any other fields are available, they will be excluded.}\n@returns(200) {status_code: int, status: str, service: str, resource: str, operation: str, data: [map], _raw: map?, meta: map{items_on_page: int, cursors: map{previous: str?, current: str?, next: str?}}, links: map{previous: str?, current: str, next: str?}} # Departments\n@errors {400: Bad Request, 401: Unauthorized, 402: Payment Required, 404: The specified resource was not found, 422: Unprocessable}\n\n@endpoint POST /hris/departments\n@desc Create Department\n@optional {id: str # A unique identifier for an object., parent_id: str # Parent ID, name: str # Department name, code: str, description: str, custom_mappings: map # When custom mappings are configured on the resource, the result is included here., updated_by: str # The user who last updated the object., created_by: str # The user who created the object., updated_at: str(date-time) # The date and time when the object was last updated., created_at: str(date-time) # The date and time when the object was created., pass_through: [map{service_id!: str, operation_id: str, extend_object: map, extend_paths: [map]}] # The pass_through property allows passing service-specific, custom data or structured modifications in request body when creating or updating resources.}\n@returns(201) {status_code: int, status: str, service: str, resource: str, operation: str, data: map{id: str}, _raw: map?} # Departments\n@errors {400: Bad Request, 401: Unauthorized, 402: Payment Required, 404: The specified resource was not found, 422: Unprocessable}\n\n@endpoint GET /hris/departments/{id}\n@desc Get Department\n@required {id: str # ID of the record you are acting upon.}\n@optional {fields: str # The 'fields' parameter allows API users to specify the fields they want to include in the API response. If this parameter is not present, the API will return all available fields. If this parameter is present, only the fields specified in the comma-separated string will be included in the response. Nested properties can also be requested by using a dot notation. Example: `fields=name,email,addresses.city`In the example above, the response will only include the fields \"name\", \"email\" and \"addresses.city\". If any other fields are available, they will be excluded.}\n@returns(200) {status_code: int, status: str, service: str, resource: str, operation: str, data: map{id: str, parent_id: str?, name: str?, code: str?, description: str?, custom_mappings: map?, updated_by: str?, created_by: str?, updated_at: str(date-time)?, created_at: str(date-time)?, pass_through: [map]}, _raw: map?} # Departments\n@errors {400: Bad Request, 401: Unauthorized, 402: Payment Required, 404: The specified resource was not found, 422: Unprocessable}\n\n@endpoint PATCH /hris/departments/{id}\n@desc Update Department\n@required {id: str # ID of the record you are acting upon.}\n@optional {id: str # A unique identifier for an object., parent_id: str # Parent ID, name: str # Department name, code: str, description: str, custom_mappings: map # When custom mappings are configured on the resource, the result is included here., updated_by: str # The user who last updated the object., created_by: str # The user who created the object., updated_at: str(date-time) # The date and time when the object was last updated., created_at: str(date-time) # The date and time when the object was created., pass_through: [map{service_id!: str, operation_id: str, extend_object: map, extend_paths: [map]}] # The pass_through property allows passing service-specific, custom data or structured modifications in request body when creating or updating resources.}\n@returns(200) {status_code: int, status: str, service: str, resource: str, operation: str, data: map{id: str}, _raw: map?} # Departments\n@errors {400: Bad Request, 401: Unauthorized, 402: Payment Required, 404: The specified resource was not found, 422: Unprocessable}\n\n@endpoint DELETE /hris/departments/{id}\n@desc Delete Department\n@required {id: str # ID of the record you are acting upon.}\n@returns(200) {status_code: int, status: str, service: str, resource: str, operation: str, data: map{id: str}, _raw: map?} # Departments\n@errors {400: Bad Request, 401: Unauthorized, 402: Payment Required, 404: The specified resource was not found, 422: Unprocessable}\n\n@endpoint GET /hris/payrolls\n@desc List Payroll\n@optional {filter: map # Apply filters, pass_through: map # Optional unmapped key/values that will be passed through to downstream as query parameters. Ie: ?pass_through[search]=leads becomes ?search=leads, fields: str # The 'fields' parameter allows API users to specify the fields they want to include in the API response. If this parameter is not present, the API will return all available fields. If this parameter is present, only the fields specified in the comma-separated string will be included in the response. Nested properties can also be requested by using a dot notation. Example: `fields=name,email,addresses.city`In the example above, the response will only include the fields \"name\", \"email\" and \"addresses.city\". If any other fields are available, they will be excluded.}\n@returns(200) {status_code: int, status: str, service: str, resource: str, operation: str, data: [map], _raw: map?} # Payrolls\n@errors {400: Bad Request, 401: Unauthorized, 402: Payment Required, 404: The specified resource was not found, 422: Unprocessable}\n\n@endpoint GET /hris/payrolls/{payroll_id}\n@desc Get Payroll\n@required {payroll_id: str # ID of the payroll you are acting upon.}\n@optional {fields: str # The 'fields' parameter allows API users to specify the fields they want to include in the API response. If this parameter is not present, the API will return all available fields. If this parameter is present, only the fields specified in the comma-separated string will be included in the response. Nested properties can also be requested by using a dot notation. Example: `fields=name,email,addresses.city`In the example above, the response will only include the fields \"name\", \"email\" and \"addresses.city\". If any other fields are available, they will be excluded.}\n@returns(200) {status_code: int, status: str, service: str, resource: str, operation: str, data: map{id: str?, company_id: str?, processed: bool?, processed_date: str?, check_date: str?, start_date: str?, end_date: str?, totals: map{company_debit: num?, tax_debit: num?, check_amount: num?, net_pay: num?, gross_pay: num?, employer_taxes: num?, employee_taxes: num?, employer_benefit_contributions: num?, employee_benefit_deductions: num?}, compensations: [map], custom_mappings: map?}, _raw: map?} # Payrolls\n@errors {400: Bad Request, 401: Unauthorized, 402: Payment Required, 404: The specified resource was not found, 422: Unprocessable}\n\n@endpoint GET /hris/payrolls/employees/{employee_id}\n@desc List Employee Payrolls\n@required {employee_id: str # ID of the employee you are acting upon.}\n@optional {filter: map # Apply filters, pass_through: map # Optional unmapped key/values that will be passed through to downstream as query parameters. Ie: ?pass_through[search]=leads becomes ?search=leads, fields: str # The 'fields' parameter allows API users to specify the fields they want to include in the API response. If this parameter is not present, the API will return all available fields. If this parameter is present, only the fields specified in the comma-separated string will be included in the response. Nested properties can also be requested by using a dot notation. Example: `fields=name,email,addresses.city`In the example above, the response will only include the fields \"name\", \"email\" and \"addresses.city\". If any other fields are available, they will be excluded.}\n@returns(200) {status_code: int, status: str, service: str, resource: str, operation: str, data: [map], _raw: map?} # EmployeePayrolls\n@errors {400: Bad Request, 401: Unauthorized, 402: Payment Required, 404: The specified resource was not found, 422: Unprocessable}\n\n@endpoint GET /hris/payrolls/employees/{employee_id}/payrolls/{payroll_id}\n@desc Get Employee Payroll\n@required {payroll_id: str # ID of the payroll you are acting upon., employee_id: str # ID of the employee you are acting upon.}\n@optional {fields: str # The 'fields' parameter allows API users to specify the fields they want to include in the API response. If this parameter is not present, the API will return all available fields. If this parameter is present, only the fields specified in the comma-separated string will be included in the response. Nested properties can also be requested by using a dot notation. Example: `fields=name,email,addresses.city`In the example above, the response will only include the fields \"name\", \"email\" and \"addresses.city\". If any other fields are available, they will be excluded.}\n@returns(200) {status_code: int, status: str, service: str, resource: str, operation: str, data: map{id: str?, employee_id: str?, company_id: str?, processed: bool?, processed_date: str?, check_date: str?, start_date: str?, end_date: str?, totals: map{company_debit: num?, tax_debit: num?, check_amount: num?, net_pay: num?, gross_pay: num?, employer_taxes: num?, employee_taxes: num?, employer_benefit_contributions: num?, employee_benefit_deductions: num?}, compensations: [map]}, _raw: map?} # Payrolls\n@errors {400: Bad Request, 401: Unauthorized, 402: Payment Required, 404: The specified resource was not found, 422: Unprocessable}\n\n@endpoint GET /hris/schedules/employees/{employee_id}\n@desc List Employee Schedules\n@required {employee_id: str # ID of the employee you are acting upon.}\n@optional {pass_through: map # Optional unmapped key/values that will be passed through to downstream as query parameters. Ie: ?pass_through[search]=leads becomes ?search=leads, fields: str # The 'fields' parameter allows API users to specify the fields they want to include in the API response. If this parameter is not present, the API will return all available fields. If this parameter is present, only the fields specified in the comma-separated string will be included in the response. Nested properties can also be requested by using a dot notation. Example: `fields=name,email,addresses.city`In the example above, the response will only include the fields \"name\", \"email\" and \"addresses.city\". If any other fields are available, they will be excluded.}\n@returns(200) {status_code: int, status: str, service: str, resource: str, operation: str, data: map{employee: map{id: str?, downstream_id: str?, first_name: str?, last_name: str?, middle_name: str?, display_name: str?, preferred_name: str?, initials: str?, salutation: str?, title: str?, marital_status: str?, partner: map{id: str?, first_name: str?, last_name: str?, middle_name: str?, gender: str?, initials: str?, birthday: str(date)?, deceased_on: str(date)?, custom_mappings: map?}, division: str?, division_id: str?, department: str?, department_id: str?, department_name: str?, team: map?{id: str?, name: str?}, company_id: str?, company_name: str?, employment_start_date: str?, employment_end_date: str?, leaving_reason: str?, employee_number: str?, employment_status: str?, employment_role: map{type: str?, sub_type: str?}, ethnicity: str?, manager: map{id: str?, name: str?, first_name: str?, last_name: str?, email: str(email)?, employment_status: str?}, direct_reports: [str]?, social_security_number: str?, birthday: str(date)?, deceased_on: str(date)?, country_of_birth: str?, description: str?, gender: str?, pronouns: str?, preferred_language: str?, languages: [str], nationalities: [str], photo_url: str?, timezone: str?, source: str?, source_id: str?, record_url: str?, jobs: [map]?, compensations: [map]?, works_remote: bool?, addresses: [map], phone_numbers: [map], emails: [map], custom_fields: [map], social_links: [map], bank_accounts: [map], tax_code: str?, tax_id: str?, dietary_preference: str?, food_allergies: [str]?, probation_period: map{start_date: str(date)?, end_date: str(date)?}, tags: [str]?, custom_mappings: map?, row_version: str?, deleted: bool?, updated_by: str?, created_by: str?, updated_at: str(date-time)?, created_at: str(date-time)?, pass_through: [map]}, schedules: [map]?}, _raw: map?} # EmployeeSchedules\n@errors {400: Bad Request, 401: Unauthorized, 402: Payment Required, 404: The specified resource was not found, 422: Unprocessable}\n\n@endpoint GET /hris/time-off-requests\n@desc List Time Off Requests\n@optional {cursor: str # Cursor to start from. You can find cursors for next/previous pages in the meta.cursors property of the response., limit: int=20 # Number of results to return. Minimum 1, Maximum 200, Default 20, filter: map # Apply filters, pass_through: map # Optional unmapped key/values that will be passed through to downstream as query parameters. Ie: ?pass_through[search]=leads becomes ?search=leads, fields: str # The 'fields' parameter allows API users to specify the fields they want to include in the API response. If this parameter is not present, the API will return all available fields. If this parameter is present, only the fields specified in the comma-separated string will be included in the response. Nested properties can also be requested by using a dot notation. Example: `fields=name,email,addresses.city`In the example above, the response will only include the fields \"name\", \"email\" and \"addresses.city\". If any other fields are available, they will be excluded.}\n@returns(200) {status_code: int, status: str, service: str, resource: str, operation: str, data: [map], _raw: map?, meta: map{items_on_page: int, cursors: map{previous: str?, current: str?, next: str?}}, links: map{previous: str?, current: str, next: str?}} # TimeOffRequests\n@errors {400: Bad Request, 401: Unauthorized, 402: Payment Required, 404: The specified resource was not found, 422: Unprocessable}\n\n@endpoint POST /hris/time-off-requests\n@desc Create Time Off Request\n@optional {id: str # A unique identifier for an object., employee_id: str # ID of the employee, policy_id: str # ID of the policy, status: str(requested/approved/declined/cancelled/deleted/other) # The status of the time off request., description: str # Description of the time off request., start_date: str # The start date of the time off request., end_date: str # The end date of the time off request., request_date: str # The date the request was made., request_type: str(vacation/sick/personal/jury_duty/volunteer/bereavement/other) # The type of request, approval_date: str # The date the request was approved, units: str(days/hours/other) # The unit of time off requested. Possible values include: `hours`, `days`, or `other`., amount: num # The amount of time off requested., day_part: str # The day part of the time off request., notes: map{employee: str, manager: str}, custom_mappings: map # When custom mappings are configured on the resource, the result is included here., updated_by: str # The user who last updated the object., created_by: str # The user who created the object., updated_at: str(date-time) # The date and time when the object was last updated., created_at: str(date-time) # The date and time when the object was created., pass_through: [map{service_id!: str, operation_id: str, extend_object: map, extend_paths: [map]}] # The pass_through property allows passing service-specific, custom data or structured modifications in request body when creating or updating resources., policy_type: str # The policy type of the time off request}\n@returns(201) {status_code: int, status: str, service: str, resource: str, operation: str, data: map{id: str}, _raw: map?} # TimeOffRequests\n@errors {400: Bad Request, 401: Unauthorized, 402: Payment Required, 404: The specified resource was not found, 422: Unprocessable}\n\n@endpoint GET /hris/time-off-requests/employees/{employee_id}/time-off-requests/{id}\n@desc Get Time Off Request\n@required {id: str # ID of the record you are acting upon., employee_id: str # ID of the employee you are acting upon.}\n@optional {fields: str # The 'fields' parameter allows API users to specify the fields they want to include in the API response. If this parameter is not present, the API will return all available fields. If this parameter is present, only the fields specified in the comma-separated string will be included in the response. Nested properties can also be requested by using a dot notation. Example: `fields=name,email,addresses.city`In the example above, the response will only include the fields \"name\", \"email\" and \"addresses.city\". If any other fields are available, they will be excluded.}\n@returns(200) {status_code: int, status: str, service: str, resource: str, operation: str, data: map{id: str, employee_id: str?, policy_id: str?, status: str?, description: str?, start_date: str?, end_date: str?, request_date: str?, request_type: str?, approval_date: str?, units: str?, amount: num?, day_part: str?, notes: map{employee: str?, manager: str?}, custom_mappings: map?, updated_by: str?, created_by: str?, updated_at: str(date-time)?, created_at: str(date-time)?, pass_through: [map], policy_type: str}, _raw: map?} # TimeOffRequests\n@errors {400: Bad Request, 401: Unauthorized, 402: Payment Required, 404: The specified resource was not found, 422: Unprocessable}\n\n@endpoint PATCH /hris/time-off-requests/employees/{employee_id}/time-off-requests/{id}\n@desc Update Time Off Request\n@required {id: str # ID of the record you are acting upon., employee_id: str # ID of the employee you are acting upon.}\n@optional {id: str # A unique identifier for an object., employee_id: str # ID of the employee, policy_id: str # ID of the policy, status: str(requested/approved/declined/cancelled/deleted/other) # The status of the time off request., description: str # Description of the time off request., start_date: str # The start date of the time off request., end_date: str # The end date of the time off request., request_date: str # The date the request was made., request_type: str(vacation/sick/personal/jury_duty/volunteer/bereavement/other) # The type of request, approval_date: str # The date the request was approved, units: str(days/hours/other) # The unit of time off requested. Possible values include: `hours`, `days`, or `other`., amount: num # The amount of time off requested., day_part: str # The day part of the time off request., notes: map{employee: str, manager: str}, custom_mappings: map # When custom mappings are configured on the resource, the result is included here., updated_by: str # The user who last updated the object., created_by: str # The user who created the object., updated_at: str(date-time) # The date and time when the object was last updated., created_at: str(date-time) # The date and time when the object was created., pass_through: [map{service_id!: str, operation_id: str, extend_object: map, extend_paths: [map]}] # The pass_through property allows passing service-specific, custom data or structured modifications in request body when creating or updating resources., policy_type: str # The policy type of the time off request}\n@returns(200) {status_code: int, status: str, service: str, resource: str, operation: str, data: map{id: str}, _raw: map?} # TimeOffRequests\n@errors {400: Bad Request, 401: Unauthorized, 402: Payment Required, 404: The specified resource was not found, 422: Unprocessable}\n\n@endpoint DELETE /hris/time-off-requests/employees/{employee_id}/time-off-requests/{id}\n@desc Delete Time Off Request\n@required {id: str # ID of the record you are acting upon., employee_id: str # ID of the employee you are acting upon.}\n@returns(200) {status_code: int, status: str, service: str, resource: str, operation: str, data: map{id: str}, _raw: map?} # TimeOffRequests\n@errors {400: Bad Request, 401: Unauthorized, 402: Payment Required, 404: The specified resource was not found, 422: Unprocessable}\n\n@end\n"}}