Схема процесса интеграции
Общие правила планирования нужны
| Метод | Ссылка на документацию OpenAPI |
|---|---|
POST https://{host}/api/v1/clients/{clientId}/bulkDataSyncTasks type = EMPLOYEE_VACATIONS_PLANNING | https://docs.myhrlink.ru/public/openapi/hr-link/#tag/otherDataSync/operation/createBulkDataSyncTask |
Дополнительная информация
| Переменная | Описание | Обязательность |
|---|---|---|
tenantHost | Хост тенанта, на который должен быть выполнен запрос | да |
clientId | ИД клиента HRlink | да |
| externalId | Внешний идентификатор сотрудника.
| да |
| legalEntityExternalId | Внешний идентификатор юрлица сотрудника. | нет |
| availableVacationsPlanning[] | Массив с данными для планирования.
| нет |
| planningYear | Год, на который будут планироваться отпуска | нет |
| basicVacationDayCount | Количество дней основного отпуска, доступных для планирования.
| нет |
| additionalVacationDayCount | Количество дней дополнительного отпуска, доступных для планирования.
| нет |
curl --location 'https://{{tenantHost}}/api/v1/clients/{{clientId}}/bulkDataSyncTasks' \
--header 'Impersonated-User-Id: {{clientUserExternalId}}' \
--header 'Impersonated-User-Id-Type: EXTERNAL_ID' \
--data '{
"type": "EMPLOYEE_VACATIONS_PLANNING",
"data": [
{
"externalId": "{{Внешний ИД сотрудника}}",
"legalEntityExternalId": "{{Внешний ИД юрлица}}",
"availableVacationsPlanning": [
{
"planningYear": 2026,
"basicVacationDayCount": 28,
"additionalVacationDayCount": 3
}
]
}
]
}' |
Пример ответа
{
"result": true,
"bulkDataSyncTask": {
"id": "{{ИД задачи массовой синхронизации данных}}"
}
} |
Опциональный шаг.
Если календари были загружены ранее и регулярно обновляются у сотрудников, то этот шаг можно пропустить.
Описать на отдельной странице.
Где используются календари в системе?
Установить состояние возможности планирования отпусков
| Метод | Ссылка на документацию OpenAPI |
|---|---|
PUT https://{host}/api/v1/clients/{clientId}/vacations/setPlanningState | https://docs.myhrlink.ru/public/openapi/hr-link/#tag/vacationScheduleManage/operation/setPlanningState |
Дополнительная информация
| Переменная | Описание | Обязательность |
|---|---|---|
tenantHost | Хост тенанта, на который должен быть выполнен запрос | да |
clientId | ИД клиента HRlink | да |
| planningState | Состояние планирования отпусков в системе HRlink. Может принимать два состояния:
| да |
| planningYear | Год, на который устанавливается настройка планирования.
| нет |
curl --request PUT \
--url 'https://{{tenantHost}}/api/v1/clients/{clientId}/vacations/setPlanningState?planningState=ENABLED&planningYear=2026' \
--header 'Impersonated-User-Id: {{clientUserExternalId}}' \
--header 'Impersonated-User-Id-Type: EXTERNAL_ID' \
--header 'master-api-token: master_token_value
|
Пример ответа
{
"result": true
} |
Установить состояние возможности планирования отпусков
| Метод | Ссылка на документацию OpenAPI |
|---|---|
PUT https://{host}/api/v1/clients/{clientId}/vacations/setPlanningState | https://docs.myhrlink.ru/public/openapi/hr-link/#tag/vacationScheduleManage/operation/setPlanningState |
Дополнительная информация
| Переменная | Описание | Обязательность |
|---|---|---|
tenantHost | Хост тенанта, на который должен быть выполнен запрос | да |
clientId | ИД клиента HRlink | да |
| planningState | Состояние планирования отпусков в системе HRlink. Может принимать два состояния:
| да |
| planningYear | Год, на который устанавливается настройка планирования.
| нет |
curl --request PUT \
--url 'https://{{tenantHost}}/api/v1/clients/{clientId}/vacations/setPlanningState?planningState=DISABLED&planningYear=2026' \
--header 'Impersonated-User-Id: {{clientUserExternalId}}' \
--header 'Impersonated-User-Id-Type: EXTERNAL_ID' \
--header 'master-api-token: master_token_value
|
Пример ответа
{
"result": true
} |
Получить данные о запланированных отпусках сотрудников
| Метод | Ссылка на документацию OpenAPI |
|---|---|
POST https://{host}/api/v1/clients/{clientId}/employees/getPlannedVacationPeriod | https://docs.myhrlink.ru/public/openapi/hr-link/#tag/vacationScheduleGet/operation/getPlannedVacationPeriod |
Дополнительная информация
| Переменная | Описание | Обязательность |
|---|---|---|
tenantHost | Хост тенанта, на который должен быть выполнен запрос | да |
clientId | ИД клиента HRlink | да |
| vacations{} | Данные для фильтрации периодов планируемых отпусков.
| да |
| startDateFrom | Начало периода, в который должно попадать начало запрашиваемого планируемого отпуска. | нет |
| startDateTo | Конец периода, в который должно попадать начало запрашиваемого планируемого отпуска | нет |
| status | Статус запрашиваемых планируемых отпусков сотрудников. | нет |
| employees[] | Список сотрудников, по которым необходимо получить отпуска.
| да |
id | ID сотрудника в системе HRlink. | нет |
| externalId | ID сотрудника во внешней системе. | нет |
| department[] | Список отделов, по которым необходимо получить отпуска.
| да |
id | ID отдела в системе HRlink. | нет |
| externalId | ID отдела клиента во внешней системе. | нет |
| legalEntity[] | Список юрлиц, по которым необходимо получить отпуска.
| да |
id | ID юрлица клиента в системе HRlink. | нет |
| externalId | ID юрлица клиента во внешней системе. | нет |
| limit | Количество возвращаемых при запросе элементов.
| нет |
| offset | Количество элементов, которые нужно пропустить при выборке. | нет |
| withoutDismissedEmployees | Вернуть ответ без уволенных сотрудников?
| нет |
curl --request POST \
--url 'https://{{tenantHost}}/api/v1/clients/{clientId}/employees/getPlannedVacationPeriod' \
--header 'Impersonated-User-Id: {{clientUserExternalId}}' \
--header 'Impersonated-User-Id-Type: EXTERNAL_ID' \
--header 'master-api-token: master_token_value
--data '{
"vacations": {
"startDateFrom": "2026-01-01",
"startDateTo": "2026-12-01",
"status": "ALL"
},
"employees": [
{
"externalId": "{{Внешний ИД сотрудника}}"
}
],
"department": [
{
"externalId": "{{Внешний ИД отдела}}"
}
],
"legalEntity": [
{
"externalId": "{{Внешний ИД юрлица}}"
}
],
"limit": null,
"offset": null,
"withoutDismissedEmployees": true
}'
|
Пример ответа
{
"result": true,
"employeePlannedVacationPeriods": [
{
"id": "{{Внутренний ИД сотрудника}}",
"externalId": "{{Внешний ИД сотрудника}}",
"periods": [
{
"vacationType": "Основной",
"vacationStatus": "Ожидает согласования",
"dateFrom": "2026-09-15",
"dateTo": "2026-09-28"
},
{
"vacationType": "Дополнительный",
"vacationStatus": "Согласовано",
"dateFrom": "2026-10-01",
"dateTo": "2026-10-03"
}
]
}
]
} |
| Метод | Ссылка на документацию OpenAPI |
|---|---|
POST https://{host}/api/v1/clients/{clientId}/bulkDataSyncTasks type = CLIENT_USER_VACATIONS | https://docs.myhrlink.ru/public/openapi/hr-link/#tag/otherDataSync/operation/createBulkDataSyncTask |
Дополнительная информация
| Переменная | Описание | Обязательность |
|---|---|---|
tenantHost | Хост тенанта, на который должен быть выполнен запрос | да |
clientId | ИД клиента HRlink | да |
| vacations{} | Данные для фильтрации периодов планируемых отпусков.
| да |
| startDateFrom | Начало периода, в который должно попадать начало запрашиваемого планируемого отпуска. | нет |
| startDateTo | Конец периода, в который должно попадать начало запрашиваемого планируемого отпуска | нет |
| status | Статус запрашиваемых планируемых отпусков сотрудников. | нет |
| employees[] | Список сотрудников, по которым необходимо получить отпуска.
| да |
id | ID сотрудника в системе HRlink. | нет |
| externalId | ID сотрудника во внешней системе. | нет |
| department[] | Список отделов, по которым необходимо получить отпуска.
| да |
id | ID отдела в системе HRlink. | нет |
| externalId | ID отдела клиента во внешней системе. | нет |
| legalEntity[] | Список юрлиц, по которым необходимо получить отпуска.
| да |
id | ID юрлица клиента в системе HRlink. | нет |
| externalId | ID юрлица клиента во внешней системе. | нет |
| limit | Количество возвращаемых при запросе элементов.
| нет |
| offset | Количество элементов, которые нужно пропустить при выборке. | нет |
| withoutDismissedEmployees | Вернуть ответ без уволенных сотрудников?
| нет |
curl --request POST \
--url 'https://{{tenantHost}}/api/v1/clients/{{clientId}}/bulkDataSyncTasks' \
--header 'Impersonated-User-Id: {{clientUserExternalId}}' \
--header 'Impersonated-User-Id-Type: EXTERNAL_ID' \
--data '{
"type": "EMPLOYEE_VACATIONS_PLANNING",
"data": [
{
"externalId": "{{Внешний ИД сотрудника}}",
"legalEntityExternalId": "{{Внешний ИД юрлица}}",
"availableVacationsPlanning": [
{
"planningYear": 2026,
"basicVacationDayCount": 28,
"additionalVacationDayCount": 3
}
]
}
]
}'
|
Пример ответа
{
"result": true,
"employeePlannedVacationPeriods": [
{
"id": "{{Внутренний ИД сотрудника}}",
"externalId": "{{Внешний ИД сотрудника}}",
"periods": [
{
"vacationType": "Основной",
"vacationStatus": "Ожидает согласования",
"dateFrom": "2026-09-15",
"dateTo": "2026-09-28"
},
{
"vacationType": "Дополнительный",
"vacationStatus": "Согласовано",
"dateFrom": "2026-10-01",
"dateTo": "2026-10-03"
}
]
}
]
} |