Перейти к содержимому
Войти Запросить демо

Сотрудники

Группа методов /api/v1/employees позволяет выполнять полный цикл синхронизации сотрудников с внешними HR- и payroll-системами: создавать карточки, обновлять персональные данные, вести исторические таблицы трудоустройства, позиций и компенсаций, а также архивировать уволенных сотрудников.

POST /api/v1/employees

Создаёт карточку нового сотрудника. Email не является обязательным при создании.

Обязательные поля:

ПолеТипОписание
first_namestringИмя
last_namestringФамилия
date_effective_fromstring (date)Дата найма

Опциональные поля:

ПолеОписание
middle_nameОтчество
division_idID дивизиона
department_idID отдела
position_idID должности
position_level_idID грейда
location_idID локации
legal_entity_idID юридического лица
reporting_to_idID руководителя
employment_contract_idID типа договора
employment_type_idID типа трудоустройства
employment_work_pattern_idID графика работы
base_salary_grossЗарплата gross
base_salary_netЗарплата net
currencyВалюта (ISO 4217)
per_typeПериод: hourly, weekly, monthly, yearly

Пример запроса:

{
"first_name": "Иван",
"last_name": "Петров",
"date_effective_from": "2024-01-15",
"department_id": 42,
"position_id": 7,
"base_salary_gross": "150000",
"currency": "RUB",
"per_type": "monthly"
}

GET /api/v1/employees/{employee_id}

Возвращает полную карточку сотрудника, включая текущую позицию, трудоустройство, компенсацию и кастомные поля (custom_fields).


POST /api/v1/employees/search

Возвращает страницу сотрудников. Фильтры: text, employee_ids, manager_ids, department_ids, division_ids, location_ids, job_profile_ids, job_role_ids, employment_type_ids, employment_contract_ids, employee_lifecycle_statuses и is_manager. Максимальный page_size - 500.

Связанные блоки по умолчанию не загружаются - каждый нужно перечислить в employee_fields, иначе соответствующее поле придёт пустым:

ЗначениеЗаполняетЧто внутри
position_job_title, position_division, position_department, position_location, position_level, position_reporting_to, position_comment, position_change_reasonemployee_positionТекущая позиция. Любое из значений поднимает весь блок
employment_employment_type, employment_employment_contract, employment_legal_entity, employment_work_pattern, employment_termination_reasonemployee_employmentТекущее трудоустройство
compensation, compensation_change_reasonemployee_compensationТекущий оклад: base_salary_gross, base_salary_net, currency, per_type
lifecycle_statuslifecycle_statusСтатус жизненного цикла
custom_fieldscustom_fieldsКастомные поля со значениями и правами
time_offtime_offОтпуск, в котором сотрудник находится сегодня - см. ниже
custom_tablescustom_tablesСтроки кастомных таблиц - см. ниже
additional_compensationsadditional_compensationsВыплаты текущего месяца - см. ниже

Пример запроса:

{
"page_number": 1,
"page_size": 100,
"employee_fields": [
"position_job_title",
"position_department",
"compensation",
"custom_fields",
"additional_compensations"
]
}

Заполняется, только если сотрудник в отпуске в день запроса - дата не параметризуется. У остальных приходит null.

{
"date_from": "2024-03-04",
"date_to": "2024-03-15",
"category": { "id": 3, "title": "Ежегодный отпуск" },
"balance_requested": "10.00"
}

Чтобы узнать, кто в отпуске за период, используйте POST /api/v1/time-off/availability/search.

По элементу на таблицу. У исторической таблицы приходит только актуальная строка; за всей историей обращайтесь к методам строк таблицы.

[{
"table_id": 42,
"rows": [{
"id": 5,
"date_effective_from": "2024-01-01",
"is_current": true,
"cells": [{ "field": { "slug": "bonus_amount" }, "value": { "value_float": 5000 } }]
}]
}]

Только выплаты, у которых date_effective_from попадает в текущий месяц (по UTC). За всю историю - GET /api/v1/employees/{employee_id}/additional-compensations.

[{
"id": 1,
"date_effective_from": "2024-03-01",
"compensation_type": { "id": 7, "title": "Бонус" },
"amount": "500.00",
"amount_gross": "500.00",
"amount_net": null,
"currency": "USD",
"description": "Бонус за Q1",
"comment": null
}]

По сотрудникам, на которых у вызывающего нет права просмотра employee_additional_compensation, придёт пустой список.


PUT /api/v1/employees/{employee_id}

Обновляет персональные данные и кастомные поля сотрудника одним запросом.

Обязательные поля: first_name, last_name

Опциональные поля:

ПолеОписание
emailРабочий email
email_personalЛичный email
phoneРабочий телефон
phone_personalЛичный телефон
date_birthДата рождения
genderПол
personnel_numberТабельный номер
address_1, address_2, city, state, zipАдрес
country_idID страны
custom_fieldsdict: {slug: value} - значения кастомных полей сотрудника

Пример запроса:

{
"first_name": "Иван",
"last_name": "Петров",
"email": "[email protected]",
"personnel_number": "EMP-001",
"custom_fields": {
"snils": "123-456-789 00",
"inn": "7712345678"
}
}

DELETE /api/v1/employees/{employee_id}

Переводит сотрудника в архив (увольнение). Это мягкое удаление - данные сохраняются.


Позиция содержит информацию о подразделении, должности, руководителе и локации сотрудника на конкретную дату.

POST /api/v1/employees/{employee_id}/positions
ПолеТипОписание
date_effective_fromstring (date)Дата начала действия
division_idintegerID дивизиона
department_idintegerID отдела
position_idintegerID должности
position_level_idintegerID грейда
reporting_to_idintegerID руководителя
legal_entity_idintegerID юридического лица
location_idintegerID локации
commentstringКомментарий
PUT /api/v1/employees/{employee_id}/positions/{id}
DELETE /api/v1/employees/{employee_id}/positions/{id}
POST /api/v1/employees/{employee_id}/positions/search

Возвращает страницу записей позиций с полными объектами: department, division, position, manager, legal_entity, location. Поддерживает пагинацию.


Трудоустройство фиксирует тип договора, тип занятости, график работы и период работы.

GET /api/v1/employees/{employee_id}/employments

Возвращает полный список записей (текущую и прошлые).

POST /api/v1/employees/{employee_id}/employments
ПолеТипОписание
date_effective_fromstring (date)Дата начала (дата найма)
date_effective_tostring (date)Дата окончания / увольнения
employment_type_idintegerID типа трудоустройства
employment_contract_idintegerID типа договора
work_pattern_idintegerID графика работы
date_probation_endsstring (date)Дата окончания испытательного срока
commentstringКомментарий

Обновить / удалить запись трудоустройства

Заголовок раздела «Обновить / удалить запись трудоустройства»
PUT /api/v1/employees/{employee_id}/employments/{id}
DELETE /api/v1/employees/{employee_id}/employments/{id}

Запись компенсации - версия пакета компенсации сотрудника, действующая с date_effective_from по date_effective_to (день перед началом следующей версии, null у действующей). В пакете лежат регулярные суммы: оклад, надбавки, удержания и взносы работодателя. Разовые выплаты - это дополнительные компенсации.

POST /api/v1/employees/{employee_id}/compensations
ПолеТипОписание
date_effective_fromstring (date)Дата начала действия
base_salary_grossnumberЗарплата gross
base_salary_netnumberЗарплата net
currencystringВалюта (ISO 4217)
per_typestringhourly, weekly, monthly, yearly
change_reason_idintegerID причины изменения
commentstringКомментарий

Метод записывает только оклад. Надбавки и другие строки пакета ведутся в Skailer.

POST /api/v1/employees/{employee_id}/compensations/search

Возвращает страницу версий пакета. В каждой версии есть lines - все регулярные суммы пакета:

{
"id": 812,
"date_effective_from": "2026-01-15",
"date_effective_to": null,
"base_salary_gross": "3000.00",
"currency": "USD",
"per_type": "monthly",
"lines": [
{
"id": 1540,
"compensation_type": { "id": 1, "title": "Basic salary", "is_archived": false },
"amount_gross": "3000.00",
"amount_net": null,
"currency": "USD",
"per_type": "monthly",
"description": null,
"kind": "earning",
"is_included_in_gross": true,
"is_payable_to_employee": true,
"is_included_in_total_cost": true,
"rate_type": "fixed_amount",
"percent": null
},
{
"id": 1541,
"compensation_type": { "id": 2, "title": "Housing allowance", "is_archived": false },
"amount_gross": "500.00",
"amount_net": null,
"currency": "USD",
"per_type": "monthly",
"description": null,
"kind": "earning",
"is_included_in_gross": true,
"is_payable_to_employee": true,
"is_included_in_total_cost": true,
"rate_type": "fixed_amount",
"percent": null
}
]
}
Поле строкиОписание
compensation_typeКомпонент компенсации. Тот же id приходит в compensation_type.id у доп. компенсаций
amount_gross, amount_netСуммы строкой
currency, per_typeВалюта и период строки
kindearning (начисление), deduction (удержание) или employer_contribution (взнос работодателя)
is_included_in_grossСтрока входит в gross
is_payable_to_employeeСтрока выплачивается сотруднику
is_included_in_total_costСтрока входит в полную стоимость для работодателя
rate_type, percentfixed_amount или процентная строка со ставкой; у процентной строки суммы уже посчитаны

lines равен null, если у API-пользователя нет права на поле employee_compensation_lines. Выплаты вне ведомости не возвращаются.

PUT /api/v1/employees/{employee_id}/compensations/{id}
DELETE /api/v1/employees/{employee_id}/compensations/{id}

Дополнительные компенсации - разовые выплаты: бонусы, премии, компенсации расходов. У выплаты одна дата - date_effective_from, даты окончания нет. Регулярные надбавки - это строки пакета компенсации.

GET /api/v1/employees/{employee_id}/additional-compensations
POST /api/v1/employees/{employee_id}/additional-compensations
ПолеТипОписание
compensation_type_idintegerID компонента компенсации (обязательно)
date_effective_fromstring (date)Дата выплаты (обязательно)
amount_grossnumberСумма gross
amount_netnumberСумма net
amountnumberУстаревшее: пишется в amount_gross, если amount_gross не передан
currencystringВалюта
descriptionstringОписание
commentstringКомментарий
custom_fieldsobjectЗначения кастомных колонок по слагу колонки

Прежние поля type, frequency_type и date_effective_to игнорируются: любая запись сохраняется как разовая выплата.

PUT /api/v1/employees/{employee_id}/additional-compensations/{id}
DELETE /api/v1/employees/{employee_id}/additional-compensations/{id}

Позволяет писать произвольные строки в кастомные таблицы, привязанные к сотруднику (например, «Бонусы начисленные», «Реквизиты выплат»). Список доступных таблиц и их slug полей получается через GET /api/v1/custom-fields/tables.

POST /api/v1/employees/{employee_id}/field-tables/{table_id}/rows
ПолеТипОписание
date_effective_fromstring (date)Дата начала действия строки
cellsobject{slug: value} - значения ячеек

Поддерживаемые типы значений в cells:

  • text / textarea / email / phone - строка
  • number / currency / percentage - число
  • date - строка YYYY-MM-DD
  • datetime - строка ISO 8601
  • select - ID опции
  • switch - boolean
  • employee_reference - integer (ID сотрудника)

Пример запроса:

{
"date_effective_from": "2024-01-01",
"cells": {
"bonus_amount": 50000,
"bonus_currency": "RUB",
"bonus_comment": "Квартальный бонус Q1"
}
}
PUT /api/v1/employees/{employee_id}/field-tables/{table_id}/rows/{id}
DELETE /api/v1/employees/{employee_id}/field-tables/{table_id}/rows/{id}

Справочники для полей department_id, division_id и команд у сотрудников и вакансий.

GET /api/v1/departments/all

Возвращает все департаменты, включая архивные: id, title, emoji, image_url, parent_id, manager (полная карточка сотрудника или null), employees_count и is_archived.

Нужно любое из прав: settings_roles_permissions, settings_departments, manage_jobs, manage_leave_policies, manage_approval_policy, see_departments_structure, employee_position_department.

GET /api/v1/divisions/all

Возвращает все дивизионы, включая архивные: id, title и is_archived.

Нужно любое из прав: settings_roles_permissions, settings_divisions, manage_jobs, manage_leave_policies, manage_approval_policy, employee_position_division.

POST /api/v1/teams/search
ПолеТипОписание
textstringПоиск по названию команды
employee_idsarray[integer]Команды, в которых состоят эти сотрудники
page_numberintegerНомер страницы, с 1

Возвращает страницу команд, отсортированных по названию. В каждой команде id, title, description, emoji, background_url, links (title, url) и members (id, employee, role, sort, description).

Нужно любое из прав: manage_teams >= view, settings_roles_permissions, manage_leave_policies, manage_approval_policy.


Полный цикл создания нового сотрудника из HR/payroll-системы:

  1. Создать сотрудника - POST /api/v1/employees с базовыми данными и датой найма.
  2. Обновить персональные данные - PUT /api/v1/employees/{id} с email, телефоном, кастомными полями.
  3. Зафиксировать трудоустройство - POST /api/v1/employees/{id}/employments с типом договора.
  4. Зафиксировать компенсацию - POST /api/v1/employees/{id}/compensations с зарплатой.
  5. Записать строки в кастомные таблицы - POST /api/v1/employees/{id}/field-tables/{table_id}/rows для бонусов, реквизитов и т.п.

При увольнении:

  1. Закрыть трудоустройство - PUT /api/v1/employees/{id}/employments/{id} (добавить date_effective_to).
  2. Архивировать сотрудника - DELETE /api/v1/employees/{id}.