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

Отпуска (Time-off)

Группа методов /api/v1/time-off позволяет читать конфигурацию политик отпусков организации, историю начислений и списаний по каждому сотруднику, а также его актуальный баланс на любую дату.

GET /api/v1/time-off/categories

Возвращает все политики/категории отпусков организации.

Поля ответа (каждая категория):

ПолеТипОписание
idintegerID категории
titlestringНазвание
descriptionstringОписание
category_typestringТип: manual, accrues_time, flexible
paid_typestringОплачиваемость
period_track_typestringЕдиница учёта: часы или дни
emojistringЭмодзи
colorstringЦвет
policies_countintegerКоличество привязанных политик
is_archivedbooleanАрхивирована ли категория
is_parental_leavebooleanЯвляется ли декретным отпуском

Пример ответа:

[
{
"id": 3,
"title": "Ежегодный оплачиваемый",
"category_type": "accrues_time",
"paid_type": "paid",
"period_track_type": "days",
"policies_count": 2,
"is_archived": false,
"is_parental_leave": false
}
]

POST /api/v1/time-off/logs/search

Возвращает страницу записей об отпусках - начисления, списания, истечения срока и корректировки.

Параметры запроса:

ПолеТипОписание
employee_idintegerID сотрудника (обязательно)
page_numberintegerНомер страницы
category_idsarray[integer]Фильтр по категориям отпусков
action_typesarray[string]Типы: accrual, used, expired, adjustment
request_statusesarray[string]Статусы заявок

Поля ответа (каждая запись):

Каждая запись содержит два объекта: time_off_log и, при наличии заявки, approval_request_details.

time_off_log:

ПолеТипОписание
idintegerID записи
date_adjustmentstring (date)Дата корректировки
employee_idintegerID сотрудника
categoryobjectКатегория отпуска
balancestringИзменение баланса
actionstringТип действия
balance_typestringТип баланса
date_fromstringНачало периода отпуска
date_tostringКонец периода отпуска
date_expirestringДата истечения начисления
commentstringКомментарий
filesarrayПрикреплённые файлы

approval_request_details (если есть заявка):

ПолеТипОписание
idintegerID заявки
typestringТип заявки
statusstringСтатус заявки
confirmationsarrayСписок подтверждений
datetime_created_atstringДата создания

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

{
"employee_id": 123,
"page_number": 1,
"action_types": ["used", "accrual"],
"category_ids": [3, 5]
}

POST /api/v1/time-off/employee/balance

Возвращает баланс по всем категориям отпусков, к которым подключён сотрудник, на указанную дату.

Параметры запроса:

ПолеТипОписание
employee_idintegerID сотрудника (обязательно)
date_balancestring (date)Дата, на которую запрашивается баланс (обязательно)

Поля ответа (каждая категория):

ПолеТипОписание
idintegerID категории
titlestringНазвание категории
category_typestringТип категории
period_track_typestringЕдиница учёта
balance.available_balancestringДоступный баланс
balance.total_booked_amountstringЗабронировано (одобренные заявки)
is_archivedbooleanАрхивирована ли категория

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

{
"employee_id": 123,
"date_balance": "2024-06-30"
}

Пример ответа:

[
{
"id": 3,
"title": "Ежегодный оплачиваемый",
"category_type": "accrues_time",
"period_track_type": "days",
"balance": {
"available_balance": "12.5",
"total_booked_amount": "3.0"
},
"is_archived": false
}
]

Задача: периодически синхронизировать данные об отпусках с payroll-системой.

  1. Получить категории (один раз, кешировать):

    GET /api/v1/time-off/categories
  2. Выгрузить историю за период по каждому сотруднику:

    POST /api/v1/time-off/logs/search

    С фильтром по action_types: ["used", "accrual"] и нужными category_ids.

  3. Получить актуальный баланс на конец расчётного периода:

    POST /api/v1/time-off/employee/balance

    С параметром date_balance - датой среза.

Совет: используйте date_adjustment из time_off_log для инкрементальной синхронизации - запрашивайте только записи с датой корректировки позднее последней успешной синхронизации.