Схема процесса интеграции


Шаги процесса

ШАГ 1. Загрузить доступные дни для планирования на год

Создать задачу массовой синхронизации данных

МетодСсылка на документацию 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

Количество дней основного отпуска, доступных для планирования.

  • Если данные не будут переданы, то они будут записаны как null.
нет
additionalVacationDayCount

Количество дней дополнительного отпуска, доступных для планирования.

  • Если данные не будут переданы, то они будут записаны как null.
нет


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": "{{ИД задачи массовой синхронизации данных}}"
    }
}

ШАГ 1.1 Загрузить региональные календарей сотрудников

Опциональный шаг.

Если календари были загружены ранее и регулярно обновляются у сотрудников, то этот шаг можно пропустить.

Описать на отдельной странице. (warning) 

  1. Загрузка календаря.
  2. Назначение календаря сотруднику.

Где используются календари в системе?

ШАГ 2. Разрешить планирование отпусков на год

Установить состояние возможности планирования отпусков

МетодСсылка на документацию 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.

Может принимать два состояния:

  • ENABLED - Планирование разрешено.
  • DISABLED - Планирование запрещено.
да
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
}



ШАГ 3. Выгрузить спланированные отпуска 

Получить данные о запланированных отпусках сотрудников

МетодСсылка на документацию 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.нет
externalIdID сотрудника во внешней системе.нет
department[]

Список отделов, по которым необходимо получить отпуска.

Если массив пуст ...

да

id

ID отдела в системе HRlink.нет
externalIdID отдела клиента во внешней системе.нет
legalEntity[]

Список юрлиц, по которым необходимо получить отпуска.

Если массив пуст...

да

id

ID юрлица клиента в системе HRlink.нет
externalIdID юрлица клиента во внешней системе.нет
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"
        } 
      ]
    }
  ]
}




Загрузка отпусков из внешней системы в HRlink

Загрузка отпусков из внешней системы в HRlink


Выгрузка спланированных в HRlink отпусков.