Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

  • для использования функционала планирования отпусков необходимо вкючить включить его на тенанте ...через тпчерез Службу заботы (линк или контакты - Телеграм: @podderzhkavsego_bot 
    Почта: help@hr-link.ru) (question) 
  • админу Кадровику доступны любые изменения, согласование и т.д. в любом периоде. независимо от разрешения планирования
  • Разрешить планирование только Админ
  • после завершения планирования (шаг Х) сотрудники не смогут, руковдители смогут....
  • для планирвания необходимы дост дни  для планирвания
  • планирование осуществляется с учетом регионального календаря сотрудника, если он был загружен сотруднику (Шаг Х)
  • планирование осуществляется только по осн и доп отпуску
  • планирование осуществляется по всем сотрудникам пользователя (развернуть + про согласование)
  • (warning)  справочник типов отпусков пока не используется...планируется в будущем
  • при необходимости, можно загрузить изменения отпусков из внешней системы в Линк (шаг х)

...

No Format
{
    "result": true
}


ШАГ 3.

...

Сотрудники планируют отпуска в HRlink

Шаг выполняется на портале HRlink. 

...

...

tenantHost

...

да

...

clientId

...

Состояние планирования отпусков в системе HRlink.

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

  • ENABLED - Планирование разрешено.
  • DISABLED - Планирование запрещено.

...

Год, на который устанавливается настройка планирования.

  • Допустимо указывать значение только текущего или следующего года.
  • Если год не задан, то по умолчанию, настройка устанавливается на текущий год. 

...

languagebash
titleПример запроса

...

:

(question)  описать правила  (question) 


ШАГ 4. Руководители согласуют отпуска в HRlink

Шаг выполняется на портале HRlink. 

МетодСсылка на документацию OpenAPI

PUT https://{host}/api/v1/clients/{clientId}/vacations/{vacationId}/setApprovingState


https://docs.myhrlink.ru/public/openapi/hr-link/#tag/vacationScheduleManage/operation/setVacationApprovingState


Дополнительная информация:

(question)  описать правила планирования (question) 



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

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

МетодСсылка на документацию OpenAPI

PUT https://{host}/api/v1/clients/{clientId}/vacations/setPlanningState

...

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

No Format
{
    "result": true
}

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

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

...

POST https://{host}/api/v1/clients/{clientId}/employees/getPlannedVacationPeriod

...


Дополнительная информация

  • Опциональный шаг.
    • Если необходимо в текущем году запретить Сотрудникам и Руководителям изменять отпуска, то требуется выполнить этот шаг.
    • После наступления нового календарного года изменение отпусков будет автоматически недоступно для Сотрудника и Руководителя.
  • Завершить планирование может только Администратор.
    • Пользователь должен иметь право VACATIONS_CHANGE_PLANNING_STATE на уровне пользователя клиента или на уровне активного сотрудника.
ПеременнаяОписаниеОбязательность

tenantHost

Хост тенанта, на который должен быть выполнен запрос

да

clientId

ИД клиента HRlinkда
planningState

Состояние планирования отпусков в системе HRlink.

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

  • ENABLED - Планирование разрешено.
  • DISABLED - Планирование запрещено.
да
planningYear

Год, на который устанавливается настройка планирования.

  • Допустимо указывать значение только текущего или следующего года.
  • Если год не задан, то по умолчанию, настройка устанавливается на текущий год. 
нет


Code Block
languagebash
titleПример запроса
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


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

No Format
{
    "result": true
}


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

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

МетодСсылка на документацию OpenAPI

POST https://{host}/api/v1/clients/{clientId}/employees/getPlannedVacationPeriod


https://docs.myhrlink.ru/public/openapi/hr-link/#tag/vacationScheduleGet/operation/getPlannedVacationPeriod


Дополнительная информация

  • Получить спланированные периоды отпусков может как Администратор,  так и Кадровик.
    • Пользователь должен иметь право EMPLOYEE_PLANNED_VACATIONS на уровне пользователя клиента или на уровне активного сотрудника.
ПеременнаяОписаниеОбязательность

tenantHost

Хост тенанта, на который должен быть выполнен запрос

да

clientId

ИД клиента HRlinkда
vacations{}

Данные для фильтрации периодов планируемых отпусков.

  • Даты начала и конца периода либо заданы обе, либо не заданы совсем.
да
startDateFromНачало периода, в который должно попадать начало запрашиваемого планируемого отпуска.нет
startDateToКонец периода, в который должно попадать начало запрашиваемого планируемого отпусканет
status

Статус запрашиваемых планируемых отпусков сотрудников.

нет
employees[]

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

  • Если массив пуст, то в ответе будут присутствовать все доступные сотрудники, с учетом иных фильтров.
  • Если массив задан, то передано одно из значений ID сотрудника, или внутренний, или внешний.
да

id

ID сотрудника в системе HRlink.нет
externalIdID сотрудника во внешней системе.нет
department[]

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

  • Если массив пуст, то в ответе будут присутствовать все сотрудники из доступных отделов, с учетом иных фильтров.
  • Если массив задан, то передано одно из значений ID отдела, или внутренний, или внешний.
да

id

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

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

  • Если массив пуст, то в ответе будут присутствовать все сотрудники из доступных юрлиц, с учетом иных фильтров.
  • Если массив задан, то передано одно из значений ID юрлица, или внутренний, или внешний.
да

id

ID юрлица клиента в системе HRlink.нет
externalIdID юрлица клиента во внешней системе.нет
limit

Количество возвращаемых при запросе элементов.

  • Максимальное значение - 100 (question) 
  • Значение по умолчанию - 10
нет
offsetКоличество элементов, которые нужно пропустить при выборке.нет
withoutDismissedEmployees

Вернуть ответ без уволенных сотрудников?

  • По умолчанию, уволенные сотрудники вернутся в ответе.
нет


Code Block
languagebash
titleПример запроса
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

Дополнительная информация

  • Получить спланированные периоды отпусков может как Администратор,  так и Кадровик.
    • Пользователь должен иметь право EMPLOYEE_PLANNED_VACATIONS на уровне пользователя клиента или на уровне активного сотрудника.

...

tenantHost

...

да

...

clientId

...

Данные для фильтрации периодов планируемых отпусков.

  • Даты начала и конца периода либо заданы обе, либо не заданы совсем.

...

Статус запрашиваемых планируемых отпусков сотрудников.

...

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

  • Если массив пуст, то в ответе будут присутствовать все доступные сотрудники, с учетом иных фильтров.
  • Если массив задан, то передано одно из значений ID сотрудника, или внутренний, или внешний.

...

id

...

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

  • Если массив пуст, то в ответе будут присутствовать все сотрудники из доступных отделов, с учетом иных фильтров.
  • Если массив задан, то передано одно из значений ID отдела, или внутренний, или внешний.

...

id

...

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

  • Если массив пуст, то в ответе будут присутствовать все сотрудники из доступных юрлиц, с учетом иных фильтров.
  • Если массив задан, то передано одно из значений ID юрлица, или внутренний, или внешний.

...

id

...

Количество возвращаемых при запросе элементов.

  • Максимальное значение - 100 (question) 
  • Значение по умолчанию - 10

...

Вернуть ответ без уволенных сотрудников?

  • По умолчанию, уволенные сотрудники вернутся в ответе.

...

Code Block
languagebash
titleПример запроса
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
}'

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

No Format
{
  "result": true,
  "employeePlannedVacationPeriods": [
    {
      "idexternalId": "{{ВнутреннийВнешний ИД сотрудника}}"
    }
  ],
  "department": [
    {
      "externalId": "{{Внешний ИД сотрудникаотдела}}",
    }
  ],
  "periodslegalEntity": [
    {
      "externalId": "{{Внешний ИД юрлица}}"
    {}
  ],
      "limit": null,
  "vacationTypeoffset": "Основной"null,
  "withoutDismissedEmployees": true
}'


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

No Format
{
     "result": true,
  "vacationStatusemployeePlannedVacationPeriods": "Ожидает согласования",[
    {
      "dateFromid": "2026-09-15{{Внутренний ИД сотрудника}}",
          "dateToexternalId": "2026-09-28"
{{Внешний ИД сотрудника}}",
      "periods": [
    },
        {
          "vacationType": "ДополнительныйОсновной",
          "vacationStatus": "СогласованоОжидает согласования",
          "dateFrom": "2026-1009-0115",
          "dateTo": "2026-1009-0328"
        } ,
      ]
    }
  ]
}

ШАГ 5. Загрузить обновленные периоды запланированных отпусков в HRlink

...

POST https://{host}/api/v1/clients/{clientId}/bulkDataSyncTasks

type = CLIENT_USER_VACATIONS

...

       {
          "vacationType": "Дополнительный",
          "vacationStatus": "Согласовано",
          "dateFrom": "2026-10-01",
          "dateTo": "2026-10-03"
        } 
      ]
    }
  ]
}


ШАГ 6. Загрузить обновленные периоды запланированных отпусков в HRlink

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

Дополнительная информация

  • Отпуска загружаются по физ.лицам, т.е. по пользователям HRlink. Все сотрудники пользователя будут иметь одинаковые периоды отпуска.
  • Загрузить запланированные отпуска может как Администратор, так и Кадровик.
    • Пользователь должен иметь право BULK_DATA_SYNC_TASKS_CREATE и право VACATIONS_CREATE_AND_UPDATE  на уровне пользователя клиента или на уровне активного сотрудника.
  • Загрузить запланированные отпуска возможно на любой год, вне зависимости от настройки разрешения планирования отпусков и наличия доступных дней отпуска у сотрудника.
  • В одной задаче массовой синхронизации возможно загрузить не более 500 пользователей
ПеременнаяОписаниеОбязательность

tenantHost

Хост тенанта, на который должен быть выполнен запрос

да

clientId

ИД клиента HRlinkда
externalIdИдентификатор пользователя во внешней системе.да
yearГод отпуска.да
withApproval

Являются ли периоды отпуска согласованными.

  • TRUE - отпуска согласованы
  • FALSE- отпуска не согласованы
  • Если флаг не передан, то по умолчанию считаем как FALSE
нет
vacationPeriods[]

Список данных о планируемых отпусках.

  • Все отпуска относятся к заданному году 'year'.
  • Периоды отпусков не пересекаются. 
  • Год начала отпуска совпадает с годом конца отпуска. 
  • Если массив не задан, то произойдет удаление всех ранее сохранённых отпусков за указанных код.
нет
startDateДата начала отпуска.да
endDateДата окончания отпуска.да
type

Тип отпуска.

  • Может принимать следующие значения:

    • MAIN - Основной отпуск
    • ADDITIONAL - Дополнительный отпуск
да


Code Block
languagebash
titleПример запроса
curl --request POST \
--url 'https://{{tenantHost}}/api/v1/clients/{{clientId}}/bulkDataSyncTasks' \
--header 'Impersonated-User-Id: {{clientUserExternalId}}' \
--header 'Impersonated-User-Id-Type: EXTERNAL_ID' \
--header 'master-api-token: master_token_value \
--data '{
    "type": "CLIENT_USER_VACATIONS",
    "data": [
       {

Дополнительная информация

  • Отпуска загружаются по физ.лицам, т.е. по пользователям HRlink. Все сотрудники пользователя будут иметь одинаковые периоды отпуска.
  • Загрузить запланированные отпуска может как Администратор, так и Кадровик.
    • Пользователь должен иметь право BULK_DATA_SYNC_TASKS_CREATE и право VACATIONS_CREATE_AND_UPDATE  на уровне пользователя клиента или на уровне активного сотрудника.
  • Загрузить запланированные отпуска возможно на любой год, вне зависимости от настройки разрешения планирования отпусков и наличия доступных дней отпуска у сотрудника.
  • В одной задаче массовой синхронизации возможно загрузить не более 500 пользователей

...

tenantHost

...

да

...

clientId

...

(question)  Требуется ли утверждение отпусков после выполнения операции создания или обновления?

  • true - требуется утверждения = отпуска не согласованы
  • false - утверждение не требуется = отпуска согласованы

По факту:

  • Если флаг не передан, то по умолчанию считаем FALSE (все периоды отпуска не согласованны)
  • TRUE - отпуска согласованы = не требуют утверждения

Являются ли периоды отпуска согласованными.

...

Список данных о планируемых отпусках.

Массив не задан (null)(question)  то что

...

Тип отпуска.

  • Может принимать следующие значения:

    • MAIN - Основной отпуск
    • ADDITIONAL - Дополнительный отпуск

...

Code Block
languagebash
titleПример запроса
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,
               "basicVacationDayCountexternalId": 28 "{{Внешний ИД сотрудника}}",
           "year": 2025,
             "additionalVacationDayCountwithApproval": 3true,
                   }
"vacationPeriods": [
              {
   ]
       }
    ]
}'

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

No Format
{
  "resultstartDate": true"2025-07-01",
    "employeePlannedVacationPeriods": [
    {
      "idendDate": "{{Внутренний ИД сотрудника}}2025-07-15",
      "externalId": "{{Внешний ИД сотрудника}}",
      "periodstype": [
"MAIN"
             {},
          "vacationType": "Основной",
   {
               "vacationStatusstartDate": "Ожидает согласования2025-10-22",
               "dateFromendDate": "20262025-0910-1523",
               "dateTotype": "2026-09-28ADDITIONAL"
             },
        {
         ] "vacationType": "Дополнительный",
          }
    ]
}'


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

No Format
{
    "vacationStatusresult": "Согласовано"true,
          "dateFrombulkDataSyncTask": "2026-10-01",
  {
        "dateToid": "2026-10-03"
        } 
      ]
    }
  ]{{ИД задачи массовой синхронизации данных}}"
    }
}