openapi: 3.1.0
info:
  title: HRlink REST API
  version: 2.102.0
servers:
  - url: https://{host}
    description: Сервер для выполнения запросов
    variables:
      host:
        default: portal.hr-link.ru
tags:
  - name: currentUser
    x-displayName: Текущий пользователь
    description: Методы для получения информации о текущем пользователе.
  - name: apiToken
    x-displayName: Текущий токен
    description: Метод для получения информации о токене, под которым выполняется запрос.
  - name: bulkDataSync
    x-displayName: Массовая синхронизация
    description: Методы для одновременной синхронизации юрлиц, отделов, должностей, сотрудников и пользователей одним пакетом задач.
  - name: import
    x-displayName: Импорт данных
    description: Методы для импорта данных из внешних систем.
  - name: export
    x-displayName: Экспорт данных
    description: Методы для выгрузки данных во внешние системы.
  - name: legalEntities
    x-displayName: Юрлица
    description: Методы для работы с юридическими лицами.
  - name: departments
    x-displayName: Отделы
    description: |
      В рамках одного клиента (clientId) всегда существует сущность «Корневой отдел». Она создается в момент создания клиента и не требует создания вручную. Все создаваемые отделы так или иначе должны быть потомками корневого отдела (напрямую или транзитивно).

      Корневой отдел не может быть удален. Он может быть только переименован, и ему можно назначить внешний ID (externalId).
  - name: positions
    x-displayName: Должности
    description: Методы для работы с должностями.
  - name: customStructures
    x-displayName: Пользовательские справочники
    description: Методы для работы с пользовательскими справочниками.
  - name: users
    x-displayName: Пользователи
    description: Методы для работы с пользователями клиента (clientUser).
  - name: employees
    x-displayName: Сотрудники
    description: Методы для работы с сотрудниками.
  - name: substitutions
    x-displayName: Замещения
    description: Методы для управления замещениями пользователей.
  - name: nqesIssuing
    x-displayName: Выпуск УНЭП
    description: Методы для выпуска и обслуживания УНЭП пользователей.
  - name: documents
    x-displayName: Документы
    description: 'Методы для работы с документами: создание, получение, удаление, валидация перед отправкой, реестры и архивы.'
  - name: documentGroups
    x-displayName: Группы документов
    description: Методы для работы с группами документов.
  - name: documentSigning
    x-displayName: Подписание документов
    description: Методы для отправки документа на подписание и подписания различными способами.
  - name: documentBulkSigning
    x-displayName: Массовое подписание документов
    description: |
      Методы для сценария массового подписания документов.

      ### Типовой процесс:
      1. Пользователь создаёт процесс массового подписания.
      2. Пользователь просматривает документы процесса и для каждого документа решает, включать его в пакет подписания или исключать.
      3. Если есть пакет ЛНА, он подписывается в первую очередь.
      4. После ЛНА подписываются пакет руководителя и/или пакет сотрудника, эти два пакета можно подписывать в любом порядке.
      5. Для каждого пакета используется подходящий способ подписи:
         - УНЭП: создание запроса и подтверждение кодом;
         - ПЭП: подписание пакета;
         - УКЭП: подписание пакета.
      6. Для отслеживания прогресса доступны методы получения процесса и состояния запроса подписания.
  - name: documentAnnulation
    x-displayName: Аннулирование документов
    description: Методы для аннулирования документов.
  - name: documentTypes
    x-displayName: Типы документов
    description: Методы для работы с типами документов.
  - name: documentComments
    x-displayName: Комментарии к документам
    description: Методы для работы с комментариями к документам.
  - name: applications
    x-displayName: Заявления
    description: |
      Методы для работы с заявлениями: создание, получение реестра, выгрузка файлов и архивов, удаление.

      В API одно заявление технически представлено как группа заявлений с одним элементом — отсюда смешанные пути `/applications/{applicationId}` и `/applicationGroups/{applicationGroupId}`.
  - name: applicationSigning
    x-displayName: Подписание заявлений
    description: Методы для подписания заявлений различными способами.
  - name: applicationTypes
    x-displayName: Типы заявлений
    description: Методы для работы с типами заявлений.
  - name: applicationComments
    x-displayName: Комментарии к заявлениям
    description: Методы для работы с комментариями к заявлениям.
  - name: normativeActs
    x-displayName: ЛНА
    description: Методы для работы с локальными нормативными актами.
  - name: normativeActsSigning
    x-displayName: Отправка ЛНА на подписание
    description: Методы для отправки ЛНА на подписание сотрудникам.
  - name: attorneys
    x-displayName: Доверенности
    description: Методы для работы с машиночитаемыми доверенностями (МЧД).
  - name: attorneysSigning
    x-displayName: Подписание доверенностей
    description: Методы для подписания доверенностей.
  - name: vacationSchedule
    x-displayName: График отпусков
    description: Методы для работы с графиком отпусков сотрудников.
  - name: vacationTypes
    x-displayName: Типы отпусков
    description: Методы для работы с типами отпусков.
  - name: routeTemplates
    x-displayName: Шаблоны маршрутов
    description: Методы для управления шаблонами маршрутов подписания.
  - name: productionCalendar
    x-displayName: Производственный календарь
    description: Методы для работы с производственным календарем.
  - name: mintrud
    x-displayName: Справочники Минтруда
    description: Методы для получения справочников Минтруда.
  - name: files
    x-displayName: Файлы
    description: Методы для загрузки и скачивания файлов.
  - name: news
    x-displayName: Новости
    description: Методы для работы с новостями.
paths:
  /api/v3/clients/{clientId}/applicationGroups:
    post:
      tags:
        - applications
      summary: Создать черновик
      operationId: applicationGroupCreateV3
      security:
        - SessionCookieAuth: []
        - UserApiTokenAuth: []
        - MasterTokenAuth: []
      description: |
        ### Описание метода

        Метод создает черновик группы заявлений сотрудника. В группе заявлений может быть только одно заявление.

        ### Валидации запроса

        - Запрос проходит базовые проверки данных черновика группы заявлений.
      parameters:
        - $ref: '#/components/parameters/FormatParameter'
        - name: Impersonated-User-Id
          description: Идентификатор пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            format: uuid
        - name: Impersonated-User-Id-Type
          description: Тип идентификатора пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            enum:
              - HR_LINK_ID
              - SNILS
              - EXTERNAL_ID
        - name: Impersonated-User-Id-External-System-Type
          description: |
            Идентификатор внешней системы при аутентификации через мастер-токен.
          in: header
          schema:
            type: string
        - name: clientId
          in: path
          required: true
          description: Идентификатор клиента.
          schema:
            type: string
            format: uuid
      requestBody:
        description: Тело запроса CreateApplicationGroupV3DTO
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateApplicationGroupV3DTO'
      responses:
        '200':
          description: Успешная операция.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    type: boolean
                  applicationGroup:
                    $ref: '#/components/schemas/ApplicationGroupWithSigningRouteDTO'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '429':
          $ref: '#/components/responses/TooManyRequests'
  /api/v1/clients/{clientId}/applicationGroups/{applicationGroupId}/convertedFile:
    post:
      tags:
        - applications
      summary: Конвертировать файл для подписания
      operationId: applicationGroupConvertFile
      security:
        - SessionCookieAuth: []
        - UserApiTokenAuth: []
        - MasterTokenAuth: []
      description: |
        ### Описание метода

        ### Валидации запроса

        - Клиент существует, не удалён, и к нему относится пользователь, выполняющий операцию.
        - ID группы заявлений соответствует формату UUID.
        - По переданному ID существует группа заявлений.
        - Группа заявлений по заданному ID относится к клиенту.
        - Пользователю клиента доступна группа заявлений.
        - ID сотрудников по маршруту заданы, существуют, активны (не уволены).
        - Если тип заявления не является шаблонным, то ID файла задан.
        - Если тип заявления является шаблонным, то все обязательные поля по шаблону заполнены и прошли проверки на ограничения.
        - Все системные поля заявления, включая дату подачи, проходят валидацию.
        - Если по типу заявления установлена обязательность вложений, то вложения приложены к заявлению.
        - Если установлен запрет на вложения, то вложений быть не должно.
        - У заявителя есть возможность подписания заявления согласно настройке типа подписания у участника маршрута.
        - Проверяет группу заявлений и возвращает её.
        - Проверяет данные участников группы заявлений и возвращает группу заявлений.
        - Проверяет, что данные всех участников маршрута подписания указаны корректно.
        - Проверяет, что структура компании корректна для автозаполнения участников маршрута подписания.
        - Проверяет, что сотрудники участников маршрута подписания не являются одним пользователем клиента на одном этапе маршрута подписания.
        - Проверяет, что все участники маршрута не уволены.
        - Проверяет, что все системные поля заявления заданы корректно.
        - Проверяет, что все пользовательские поля заявления заданы корректно.
        - Проверяет корректность вложений для указанной группы заявлений.
        - ID клиента соответствует формату UUID.
        - По заданному ID клиента существует клиент.
        - Пользователь, выполняющий операцию, относится к клиенту.
        - Проверяет, что ID файла заявления задан.
        - Проверяет системные поля на корректность и возвращает данные системных полей, не заполняемых пользователем.
        - Выполняется проверка обязательных системных полей.
        - По заданному ID существует группа заявлений.
        - Пользователь клиента является создателем группы заявлений.
        - Пользователь клиента является заявителем.
        - Пользователь клиента является активным заместителем как минимум одного из подписантов группы заявлений.
        - Пользователь клиента является получателем группы заявление и документооборот заявления успешно завершен подписанием со стороны всех участников.
        - Если пользователю необходимо получить черновик заявления, проверяет, что он ему доступен, иначе в группе хотя бы одно заявление не является черновиком.
        - Пользователь клиента имеет право на получение группы заявлений.
        - Проверка выполняется только для тех автозаполняемых участников, которые заполняются по руководителю отдела, управленческому руководителю и которые обязательны и не были заданы в теле запроса.
        - Проверяет, что автозаполнение руководителя отдела сотрудника с учетом иерархии отделов возможно.
        - Список пользовательских полей не равен null.
        - Список пользовательских полей не содержит пустых элементов.
        - Все ID и значения указанных пользовательских полей не равны null.
        - По всем заданным ID пользовательские поля существуют.
        - Все пользовательские поля для подстановки в шаблон принадлежат заданному типу заявления.
        - Если указаны значения автовычисляемых пользовательских полей, то они корректны.
        - Все обязательные пользовательские поля для подстановки в шаблон заданы.
        - Все значения пользовательских полей для подстановки в шаблон указаны корректно.
        - Для всех пользовательских полей с типом `SINGLE_SELECT` заданное значение поля должно быть из списка предлагаемых значений.
        - Выполняет валидацию пользовательских полей шаблона типа заявления.
        - Если настройка вложений типа заявления соответствует `MANDATORY`, то файлы вложений должны быть заданы.
        - Если настройка вложений типа заявления соответствует `DISABLE`, то файлы вложений не должны быть заданы.
        - Проверяет, что текущий пользователь относится к заданному клиенту и возвращает пользователя клиента, если он существует.
        - Проверяет, что ID клиента, заданный в виде строки, соответствует формату, и возвращает типизированный ID клиента.
        - Проверяет существование клиента по заданному ID и возвращает клиента, если он существует.
        - Проверяет, что клиент не удален.
        - Множество валидаций системных полей для подстановки в заявление.
        - Проверяет, что ID группы заявлений, заданный в виде строки, соответствует формату, и возвращает типизированный ID группы заявлений.
        - Проверяет, что группа заявлений сотрудника относится к заданному клиенту.
        - Проверяет, что черновик заявления доступен пользователю.
        - Проверяет, что в группе заявлений есть хотя бы одно заявление, не являющееся черновиком.
        - Пользователь является подписантом хотя бы в одном заявлении из группы заявлений и уже настал момент, когда ему стало доступно подписание заявления.
        - Среди подписантов заявления, которым уже стало доступно подписание заявления, есть подписант, который относится к участнику с типом `ROLE` и пользователь клиента имеет необходимую роль.
        - Пользователь клиента имеет право на получение группы заявлений на уровне роли пользователя клиента или сотрудника.
        - Проверяет, что автоопределение участника подписания возможно.
        - Проверка выполняется только для тех автозаполняемых участников, которые заполняются по руководителю отдела и управленческому руководителю.
        - Проверяет, что переданные в запросе неизменяемые участники маршрута подписания соответствуют участникам, выбранным автоматически.
        - При невозможности автоматического выбора участника для сравнения с переданным в запросе, проверка на соответствие участнику выбранному автоматически не выполняется.
        - Проверка выполняется только для тех автозаполняемых участников, которые заполняются по руководителю отдела и управленческому руководителю.
        - Проверка выполняется только для тех автозаполняемых участников, которые заполняются руководителем отдела сотрудника с учетом иерархии отделов.
        - Проверяет, что список пользовательских полей для подстановки в шаблон не равен null.
        - Проверяет, что пользовательские поля для подстановки в шаблон не равны null.
        - Проверяет, что ID и значение пользовательского поля для подстановки в шаблон не равны null.
        - Проверяет, что все пользовательские поля для подстановки в шаблон принадлежат заданному типу заявления.
        - Проверяет, что все обязательные пользовательские поля для подстановки в шаблон заданы.
        - Проверяет, что все значения пользовательских полей для подстановки в шаблон указаны корректно.
        - Проверяет, что значения пользовательских полей для подстановки в шаблон заявления сотрудника с типом `SINGLE_SELECT` соответствует одному из предложенных вариантов.
        - Возвращает список валидаций поля шаблона типа заявления по коллекции ID пользовательских полей заявления.
        - Проверяет, что файлы вложений заявлений заданы.
        - Проверяет, что файлы вложений заявлений не заданы.
        - Проверяет, что сотрудник корректен для автоопределения его руководителя `DEPARTMENT_HEAD_MANAGER`.
        - Сотрудник должен иметь отдел, и у отдела или его родительских должен быть руководитель.
        - Проверяет, что сотрудник корректен для автоопределения его руководителя `FUNCTIONAL_HEAD_MANAGER`.
        - У сотрудника должен быть задан ID управленческого руководителя.
        - Руководитель по заданному ID должен существовать.
        - Руководитель не должен быть уволен.
        - Проверяет наличие включенной настройки управленческой структуры.
        - Проверяет, что для указанных автовычисляемых полей шаблона типа заявления существуют конфигурации.
        - Проверяет, что для указанных конфигураций автовычисляемых полей указанный список ID пользовательских полей содержит все поля, необходимые для расчёта значений автовычисляемых полей.
        - Проверяет, что значения автовычисляемых полей, полученные из тела запроса, совпадают с рассчитанными значениями.
        - Проверяет, что сотрудник по заданному ID существует.
        - Проверяет, что данный сотрудник работает.
        - Проверяет, что для указанной конфигурации автовычисляемого поля указанный список ID пользовательских полей содержит все поля, необходимые для расчёта значения автовычисляемого поля.
        - Проверяет, что сотрудник по заданному ID во внешней системе существует и возвращает его, если он существует.
        - Если юрлицо указано, то существование сотрудника проверяется в заданном юрлице.
        - Если юрлицо не указано, то существование сотрудника проверяется в клиенте с заданным ID.
      parameters:
        - $ref: '#/components/parameters/FormatParameter'
        - name: Impersonated-User-Id
          description: Идентификатор пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            format: uuid
        - name: Impersonated-User-Id-Type
          description: Тип идентификатора пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            enum:
              - HR_LINK_ID
              - SNILS
              - EXTERNAL_ID
        - name: Impersonated-User-Id-External-System-Type
          description: |
            Идентификатор внешней системы при аутентификации через мастер-токен.
          in: header
          schema:
            type: string
        - name: clientId
          in: path
          required: true
          description: Идентификатор клиента.
          schema:
            type: string
            format: uuid
        - name: applicationGroupId
          in: path
          required: true
          description: Идентификатор группы заявлений в HRlink.
          schema:
            type: string
            format: uuid
      responses:
        '200':
          description: Успешная операция.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    type: boolean
                  convertedFileProcess:
                    $ref: '#/components/schemas/ApplicationConvertedFileProcessDTO'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '429':
          $ref: '#/components/responses/TooManyRequests'
  /api/v1/clients/{clientId}/applications/{applicationId}/convertedFile:
    get:
      tags:
        - applications
      summary: Скачать заявление (PDF/A)
      operationId: applicationGetConvertedFileUrl
      security:
        - SessionCookieAuth: []
        - UserApiTokenAuth: []
        - MasterTokenAuth: []
      description: |
        ### Описание метода

        Возвращает редирект для скачивания файла заявления сотрудника в формате PDF/A.

        ### Валидации запроса

        - Клиент существует, не удалён, и к нему относится пользователь, выполняющий операцию.
        - ID заявления сотрудника соответствует формату UUID.
        - По заданному ID существует заявление сотрудника.
        - Заявление сотрудника по заданному ID относится к клиенту.
        - У текущего пользователя есть право получить данные заявления сотрудника.
        - Есть возможность получить требуемый файл запрошенного заявления.
        - Проверяет возможность получения требуемого файла и возвращает кеш валидации.
        - ID клиента соответствует формату UUID.
        - По заданному ID клиента существует клиент.
        - Пользователь, выполняющий операцию, относится к клиенту.
        - Проверяет, что ID заявления сотрудника, заданный в виде строки, соответствует формату, и возвращает типизированный ID заявления сотрудника.
        - Проверяет, что по заданному ID существует заявление сотрудника.
        - Проверяет, что заявление сотрудника относится к клиенту.
        - Пользователь клиента является создателем заявления.
        - Пользователь клиента является заявителем.
        - Пользователь клиента является получателем группы заявление и документооборот заявления успешно завершен подписанием со стороны всех участников.
        - Заявление не является черновиком и пользователь клиента имеет право на получение заявления в качестве подписанта или на уровне роли пользователя клиента или сотрудника.
        - Проверяет, что текущий пользователь относится к заданному клиенту и возвращает пользователя клиента, если он существует.
        - Проверяет, что ID клиента, заданный в виде строки, соответствует формату, и возвращает типизированный ID клиента.
        - Проверяет существование клиента по заданному ID и возвращает клиента, если он существует.
        - Проверяет, что клиент не удален.
        - Проверяет, что заявление не является черновиком, то есть хотя бы один подписант принял решение.
        - Пользователь является подписантом заявления и уже настал момент, когда ему стало доступно подписание заявления.
        - Среди подписантов заявления, которым уже стало доступно подписание, есть подписант с ролевым типом участника, и пользователь клиента имеет необходимую роль.
        - Пользователь клиента имеет право на получение заявлений на уровне роли пользователя клиента или сотрудника.
      parameters:
        - $ref: '#/components/parameters/FormatParameter'
        - name: Impersonated-User-Id
          description: Идентификатор пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            format: uuid
        - name: Impersonated-User-Id-Type
          description: Тип идентификатора пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            enum:
              - HR_LINK_ID
              - SNILS
              - EXTERNAL_ID
        - name: Impersonated-User-Id-External-System-Type
          description: |
            Идентификатор внешней системы при аутентификации через мастер-токен.
          in: header
          schema:
            type: string
        - name: clientId
          in: path
          required: true
          description: Идентификатор клиента.
          schema:
            type: string
            format: uuid
        - name: applicationId
          in: path
          required: true
          description: Идентификатор заявления в HRlink.
          schema:
            type: string
            format: uuid
      responses:
        '200':
          description: Этот код ответа не используется, при успехе выполнения метод всегда возвращает ответ с кодом 303.
        '303':
          description: |
            HTTP-заголовок `Location` будет содержать URL, по которому скачивается файл.<br/>
            ✍️ Postman и некоторые другие API-клиенты по умолчанию следуют редиректам и сразу скачивают файл, указанный в
            HTTP-заголовке `Location`. Это поведение настраивается на стороне клиента.
          headers:
            Location:
              schema:
                type: string
              description: URL, по которому скачивается файл
              example: https://host.hr-link.ru/api/v1/files?token=<<одноразовый_токен>>
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '429':
          $ref: '#/components/responses/TooManyRequests'
  /api/v1/clients/{clientId}/applications/{applicationId}/printFormFile:
    get:
      tags:
        - applications
      summary: Скачать печатную форму заявления
      operationId: applicationGetPrintFormFile
      security:
        - SessionCookieAuth: []
        - UserApiTokenAuth: []
        - MasterTokenAuth: []
      description: |
        ### Описание метода

        Результатом выполнения метода будет 303 See Other, а HTTP-заголовок Location будет содержать ссылку для скачивания файла печатной формы заявления, которая будет действительна в течение 5 минут. В случае, если печатная форма заявления еще не была изготовлена, метод вернет ссылку на оригинальный файл, преобразованный в pdf.

        ### Валидации запроса

        - Клиент существует, не удалён, и к нему относится пользователь, выполняющий операцию.
        - ID заявления сотрудника соответствует формату UUID.
        - По заданному ID существует заявление сотрудника.
        - Заявление сотрудника по заданному ID относится к клиенту.
        - У текущего пользователя есть право получить данные заявления сотрудника.
        - Есть возможность получить требуемый файл запрошенного заявления.
        - Проверяет возможность получения требуемого файла и возвращает кеш валидации.
        - ID клиента соответствует формату UUID.
        - По заданному ID клиента существует клиент.
        - Пользователь, выполняющий операцию, относится к клиенту.
        - Проверяет, что ID заявления сотрудника, заданный в виде строки, соответствует формату, и возвращает типизированный ID заявления сотрудника.
        - Проверяет, что по заданному ID существует заявление сотрудника.
        - Проверяет, что заявление сотрудника относится к клиенту.
        - Пользователь клиента является создателем заявления.
        - Пользователь клиента является заявителем.
        - Пользователь клиента является получателем группы заявление и документооборот заявления успешно завершен подписанием со стороны всех участников.
        - Заявление не является черновиком и пользователь клиента имеет право на получение заявления в качестве подписанта или на уровне роли пользователя клиента или сотрудника.
        - Проверяет, что текущий пользователь относится к заданному клиенту и возвращает пользователя клиента, если он существует.
        - Проверяет, что ID клиента, заданный в виде строки, соответствует формату, и возвращает типизированный ID клиента.
        - Проверяет существование клиента по заданному ID и возвращает клиента, если он существует.
        - Проверяет, что клиент не удален.
        - Проверяет, что заявление не является черновиком, то есть хотя бы один подписант принял решение.
        - Пользователь является подписантом заявления и уже настал момент, когда ему стало доступно подписание заявления.
        - Среди подписантов заявления, которым уже стало доступно подписание, есть подписант с ролевым типом участника, и пользователь клиента имеет необходимую роль.
        - Пользователь клиента имеет право на получение заявлений на уровне роли пользователя клиента или сотрудника.
      parameters:
        - $ref: '#/components/parameters/FormatParameter'
        - name: Impersonated-User-Id
          description: Идентификатор пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            format: uuid
        - name: Impersonated-User-Id-Type
          description: Тип идентификатора пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            enum:
              - HR_LINK_ID
              - SNILS
              - EXTERNAL_ID
        - name: Impersonated-User-Id-External-System-Type
          description: |
            Идентификатор внешней системы при аутентификации через мастер-токен.
          in: header
          schema:
            type: string
        - name: clientId
          in: path
          required: true
          description: Идентификатор клиента.
          schema:
            type: string
            format: uuid
        - name: applicationId
          in: path
          required: true
          description: Идентификатор заявления в HRlink.
          schema:
            type: string
            format: uuid
      responses:
        '200':
          description: Этот код ответа не используется, при успехе выполнения метод всегда возвращает ответ с кодом 303.
        '303':
          description: |
            HTTP-заголовок `Location` будет содержать URL, по которому скачивается файл.<br/>
            ✍️ Postman и некоторые другие API-клиенты по умолчанию следуют редиректам и сразу скачивают файл, указанный в
            HTTP-заголовке `Location`. Это поведение настраивается на стороне клиента.
          headers:
            Location:
              schema:
                type: string
              description: URL, по которому скачивается файл
              example: https://host.hr-link.ru/api/v1/files?token=<<одноразовый_токен>>
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '429':
          $ref: '#/components/responses/TooManyRequests'
  /api/v1/clients/{clientId}/applicationGroups/{applicationGroupId}/attachments:
    post:
      tags:
        - applications
      summary: Добавить вложения
      operationId: applicationGroupAddApplicationGroupAttachments
      security:
        - SessionCookieAuth: []
        - UserApiTokenAuth: []
        - MasterTokenAuth: []
      description: |
        ### Описание метода

        Выполняет загрузку вложений к существующему заявлению.

        ### Валидации запроса

        - Клиент существует, не удалён, и к нему относится пользователь, выполняющий операцию.
        - Тело запроса задано.
        - Массив ID файлов задан и не пустой (аннотация).
        - Группа заявлений задана корректно.
        - Группа заявлений не удалена.
        - Группа заявлений не отклонена.
        - Для типа заявления разрешено добавление файлов вложений.
        - Для группы заявлений не истёк период хранения вложений.
        - Пользователю клиента доступна группа заявлений.
        - ID файлов вложений группы заявлений заданы корректно для их добавления.
        - ID клиента соответствует формату UUID.
        - По заданному ID клиента существует клиент.
        - Пользователь, выполняющий операцию, относится к клиенту.
        - ID группы заявлений соответствует формату UUID.
        - По заданному ID существует группа заявлений.
        - Группа заявлений по заданному ID относится к клиенту.
        - Проверяет, что группа заявлений сотрудника не удалена.
        - Проверяет, что группа заявлений не отклонена.
        - Проверяет, что добавление файлов вложений разрешено для заданного типа заявления.
        - Проверяет, что для заданной группы заявлений не истёк период хранения вложений.
        - Пользователь клиента является создателем группы заявлений.
        - Пользователь клиента является заявителем.
        - Пользователь клиента является активным заместителем как минимум одного из подписантов группы заявлений.
        - Пользователь клиента является получателем группы заявление и документооборот заявления успешно завершен подписанием со стороны всех участников.
        - Если пользователю необходимо получить черновик заявления, проверяет, что он ему доступен, иначе в группе хотя бы одно заявление не является черновиком.
        - Пользователь клиента имеет право на получение группы заявлений.
        - Проверяет, что файлы вложений группы заявлений заданы корректно для их добавления.
        - Проверяет, что текущий пользователь относится к заданному клиенту и возвращает пользователя клиента, если он существует.
        - Проверяет, что ID клиента, заданный в виде строки, соответствует формату, и возвращает типизированный ID клиента.
        - Проверяет существование клиента по заданному ID и возвращает клиента, если он существует.
        - Проверяет, что клиент не удален.
        - Проверяет, что ID группы заявлений, заданный в виде строки, соответствует формату, и возвращает типизированный ID группы заявлений.
        - Проверяет, что группа заявлений сотрудника относится к заданному клиенту.
        - Проверяет, что черновик заявления доступен пользователю.
        - Проверяет, что в группе заявлений есть хотя бы одно заявление, не являющееся черновиком.
        - Пользователь является подписантом хотя бы в одном заявлении из группы заявлений и уже настал момент, когда ему стало доступно подписание заявления.
        - Среди подписантов заявления, которым уже стало доступно подписание заявления, есть подписант, который относится к участнику с типом `ROLE` и пользователь клиента имеет необходимую роль.
        - Пользователь клиента имеет право на получение группы заявлений на уровне роли пользователя клиента или сотрудника.
        - Список не содержит null элементов.
        - Общее количество уникальных ID файлов вложений группы заявлений, как загружаемых, так и уже загруженных, не превышает допустимого значения.
        - Файлы вложения с заданными ID существуют.
        - Файлы вложения имеют допустимый формат.
        - Текущий пользователь является тем, кто загрузил файлы вложений.
        - Проверяет, что количество файлов вложений не превышает допустимого лимита.
        - Проверяет, что файл вложения с заданным ID существует.
        - Проверяет, что файл вложения имеет допустимый формат.
        - Проверяет, что текущий пользователь является тем, кто загрузил соответствующий файл вложения.
      parameters:
        - $ref: '#/components/parameters/FormatParameter'
        - name: Impersonated-User-Id
          description: Идентификатор пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            format: uuid
        - name: Impersonated-User-Id-Type
          description: Тип идентификатора пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            enum:
              - HR_LINK_ID
              - SNILS
              - EXTERNAL_ID
        - name: Impersonated-User-Id-External-System-Type
          description: |
            Идентификатор внешней системы при аутентификации через мастер-токен.
          in: header
          schema:
            type: string
        - name: clientId
          in: path
          required: true
          description: Идентификатор клиента.
          schema:
            type: string
            format: uuid
        - name: applicationGroupId
          in: path
          required: true
          description: Идентификатор группы заявлений в HRlink.
          schema:
            type: string
            format: uuid
      requestBody:
        description: Тело запроса ApplicationGroupAddAttachmentsRequestDto
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ApplicationGroupAddAttachmentsRequestDto'
      responses:
        '200':
          description: Успешная операция.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    type: boolean
                  applicationGroup:
                    $ref: '#/components/schemas/ApplicationGroupWithSigningRouteDTO'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '429':
          $ref: '#/components/responses/TooManyRequests'
  /api/v1/clients/{clientId}/applicationGroups/{applicationGroupId}/attachments/{attachmentId}:
    get:
      tags:
        - applications
      summary: Скачать вложение заявлений
      operationId: applicationGroupGetApplicationGroupAttachment
      security:
        - SessionCookieAuth: []
        - UserApiTokenAuth: []
        - MasterTokenAuth: []
      description: |
        ### Описание метода

        Возвращает редирект для скачивания файла вложения группы заявлений сотрудника.

        ### Валидации запроса

        - Клиент существует, не удалён, и к нему относится пользователь, выполняющий операцию.
        - ID группы заявлений соответствует формату UUID.
        - По заданному ID существует группа заявлений.
        - Группа заявлений по заданному ID относится к клиенту.
        - Пользователю клиента доступна группа заявлений.
        - ID вложения группы заявлений соответствует формату UUID.
        - По заданному ID существует вложение группы заявлений.
        - Вложение группы заявлений сотрудника относится к заданной группе заявлений.
        - Вложение группы заявлений сотрудника не удалено и не подлежит удалению по сроку хранения.
        - ID клиента соответствует формату UUID.
        - По заданному ID клиента существует клиент.
        - Пользователь, выполняющий операцию, относится к клиенту.
        - Пользователь клиента является создателем группы заявлений.
        - Пользователь клиента является заявителем.
        - Пользователь клиента является активным заместителем как минимум одного из подписантов группы заявлений.
        - Пользователь клиента является получателем группы заявление и документооборот заявления успешно завершен подписанием со стороны всех участников.
        - Если пользователю необходимо получить черновик заявления, проверяет, что он ему доступен, иначе в группе хотя бы одно заявление не является черновиком.
        - Пользователь клиента имеет право на получение группы заявлений.
        - Проверяет, что ID вложения группы заявлений сотрудника, заданный в виде строки, соответствует формату, и возвращает типизированный ID вложения группы заявлений сотрудника.
        - Проверяет, что по заданному ID существует вложение группы заявлений сотрудника.
        - Проверяет, что вложение группы заявлений сотрудника относится к заданной группе заявлений.
        - Проверяет, что вложение группы заявлений сотрудника не удалено и не подлежит удалению по сроку хранения.
        - Проверяет, что текущий пользователь относится к заданному клиенту и возвращает пользователя клиента, если он существует.
        - Проверяет, что ID клиента, заданный в виде строки, соответствует формату, и возвращает типизированный ID клиента.
        - Проверяет существование клиента по заданному ID и возвращает клиента, если он существует.
        - Проверяет, что клиент не удален.
        - Проверяет, что ID группы заявлений, заданный в виде строки, соответствует формату, и возвращает типизированный ID группы заявлений.
        - Проверяет, что группа заявлений сотрудника относится к заданному клиенту.
        - Проверяет, что черновик заявления доступен пользователю.
        - Проверяет, что в группе заявлений есть хотя бы одно заявление, не являющееся черновиком.
        - Пользователь является подписантом хотя бы в одном заявлении из группы заявлений и уже настал момент, когда ему стало доступно подписание заявления.
        - Среди подписантов заявления, которым уже стало доступно подписание заявления, есть подписант, который относится к участнику с типом `ROLE` и пользователь клиента имеет необходимую роль.
        - Пользователь клиента имеет право на получение группы заявлений на уровне роли пользователя клиента или сотрудника.
        - Проверяет, что для заданной группы заявлений не истёк период хранения вложений.
      parameters:
        - $ref: '#/components/parameters/FormatParameter'
        - name: Impersonated-User-Id
          description: Идентификатор пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            format: uuid
        - name: Impersonated-User-Id-Type
          description: Тип идентификатора пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            enum:
              - HR_LINK_ID
              - SNILS
              - EXTERNAL_ID
        - name: Impersonated-User-Id-External-System-Type
          description: |
            Идентификатор внешней системы при аутентификации через мастер-токен.
          in: header
          schema:
            type: string
        - name: clientId
          in: path
          required: true
          description: Идентификатор клиента.
          schema:
            type: string
            format: uuid
        - name: applicationGroupId
          in: path
          required: true
          description: Идентификатор группы заявлений в HRlink.
          schema:
            type: string
            format: uuid
        - name: attachmentId
          in: path
          required: true
          description: Идентификатор вложения в HRlink.
          schema:
            type: string
            format: uuid
      responses:
        '200':
          description: Этот код ответа не используется, при успехе выполнения метод всегда возвращает ответ с кодом 303.
        '303':
          description: |
            HTTP-заголовок `Location` будет содержать URL, по которому скачивается файл.<br/>
            ✍️ Postman и некоторые другие API-клиенты по умолчанию следуют редиректам и сразу скачивают файл, указанный в
            HTTP-заголовке `Location`. Это поведение настраивается на стороне клиента.
          headers:
            Location:
              schema:
                type: string
              description: URL, по которому скачивается файл
              example: https://host.hr-link.ru/api/v1/files?token=<<одноразовый_токен>>
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '429':
          $ref: '#/components/responses/TooManyRequests'
    delete:
      tags:
        - applications
      summary: Удалить вложение
      operationId: applicationGroupDeleteApplicationGroupAttachment
      security:
        - SessionCookieAuth: []
        - UserApiTokenAuth: []
        - MasterTokenAuth: []
      description: |
        ### Описание метода

        Удаляет вложение из группы заявлений и возвращает обновленные данные группы с маршрутом подписания. Для успешного выполнения метода необходимо выполнение всех следующих условий:
        - ID клиента соответствует формату UUID
        - По заданному ID клиента существует клиент
        - Пользователь, выполняющий операцию, относится к клиенту
        - ID группы заявлений соответствует формату UUID
        - По заданному ID существует группа заявлений
        - Группа заявлений по заданному ID относится к клиенту
        - Пользователю клиента доступно удаление вложений из данной группы заявлений
        - ID вложения группы заявлений соответствует формату UUID
        - По заданному ID существует вложение группы заявлений
        - Вложение группы заявлений сотрудника относится к заданной группе заявлений

        ### Валидации запроса

        - ID клиента соответствует формату UUID.
        - По заданному ID клиента существует клиент.
        - Пользователь, выполняющий операцию, относится к клиенту.
        - ID группы заявлений соответствует формату UUID.
        - По заданному ID существует группа заявлений.
        - Группа заявлений по заданному ID относится к клиенту.
        - Пользователю клиента доступно удаление вложений из данной группы заявлений.
        - ID вложения группы заявлений соответствует формату UUID.
        - По заданному ID существует вложение группы заявлений.
        - Вложение группы заявлений сотрудника относится к заданной группе заявлений.
        - Проверяет, что ID вложения группы заявлений сотрудника, заданный в виде строки, соответствует формату, и возвращает типизированный ID вложения группы заявлений сотрудника.
        - Проверяет, что по заданному ID существует вложение группы заявлений сотрудника.
        - Проверяет, что вложение группы заявлений сотрудника относится к заданной группе заявлений.
        - Проверяет, что текущий пользователь относится к заданному клиенту и возвращает пользователя клиента, если он существует.
        - Проверяет, что ID клиента, заданный в виде строки, соответствует формату, и возвращает типизированный ID клиента.
        - Проверяет существование клиента по заданному ID и возвращает клиента, если он существует.
        - Проверяет, что клиент не удален.
        - Проверяет, что ID группы заявлений, заданный в виде строки, соответствует формату, и возвращает типизированный ID группы заявлений.
        - Проверяет, что группа заявлений сотрудника относится к заданному клиенту.
      parameters:
        - $ref: '#/components/parameters/FormatParameter'
        - name: Impersonated-User-Id
          description: Идентификатор пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            format: uuid
        - name: Impersonated-User-Id-Type
          description: Тип идентификатора пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            enum:
              - HR_LINK_ID
              - SNILS
              - EXTERNAL_ID
        - name: Impersonated-User-Id-External-System-Type
          description: |
            Идентификатор внешней системы при аутентификации через мастер-токен.
          in: header
          schema:
            type: string
        - name: clientId
          in: path
          required: true
          description: ID клиента.
          schema:
            type: string
        - name: applicationGroupId
          in: path
          required: true
          description: ID группы заявлений сотрудника.
          schema:
            type: string
        - name: attachmentId
          in: path
          required: true
          description: ID вложения группы заявлений сотрудника.
          schema:
            type: string
      responses:
        '200':
          description: Успешная операция.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    type: boolean
                  applicationGroup:
                    $ref: '#/components/schemas/ApplicationGroupWithSigningRouteDTO'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '429':
          $ref: '#/components/responses/TooManyRequests'
  /api/v2/clients/{clientId}/applicationGroups/getEmployeeRegistry:
    post:
      tags:
        - applications
      summary: Реестр заявлений сотрудника (v2)
      operationId: applicationGroupRegistryGetEmployeeRegistryV2
      security:
        - SessionCookieAuth: []
        - UserApiTokenAuth: []
        - MasterTokenAuth: []
      description: |
        ### Описание метода

        Возвращает реестр групп заявлений сотрудника для API версии 2.

        ### Валидации запроса

        Дополнительных валидаций запроса нет.
      parameters:
        - $ref: '#/components/parameters/FormatParameter'
        - name: Impersonated-User-Id
          description: Идентификатор пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            format: uuid
        - name: Impersonated-User-Id-Type
          description: Тип идентификатора пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            enum:
              - HR_LINK_ID
              - SNILS
              - EXTERNAL_ID
        - name: Impersonated-User-Id-External-System-Type
          description: |
            Идентификатор внешней системы при аутентификации через мастер-токен.
          in: header
          schema:
            type: string
        - name: clientId
          in: path
          required: true
          description: Идентификатор клиента.
          schema:
            type: string
            format: uuid
      requestBody:
        description: Тело запроса ApplicationGroupRegistryV2FilterDTO
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ApplicationGroupRegistryV2FilterDTO'
      responses:
        '200':
          description: Успешная операция.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    type: boolean
                  applicationGroups:
                    type: array
                    description: Список данных групп заявлений.
                    items:
                      $ref: '#/components/schemas/ApplicationGroupWithSigningRouteDTO'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '429':
          $ref: '#/components/responses/TooManyRequests'
  /api/v2/clients/{clientId}/applicationGroups/getHrRegistry:
    post:
      tags:
        - applications
      summary: Реестр заявлений кадровика (v2)
      operationId: applicationGroupRegistryGetHrRegistryV2
      security:
        - SessionCookieAuth: []
        - UserApiTokenAuth: []
        - MasterTokenAuth: []
      description: |
        ### Описание метода

        Возвращает реестр групп заявлений кадровика (API v2).

        Тело запроса обязательно. Если фильтры не используются, передайте пустой объект `{}`.

        Поля `applicationCreatedDateFrom` и `applicationCreatedDateTo` должны быть в формате ISO 8601:
        - дата и время разделяются символом `T`;
        - поддерживаются таймзоны `Z`, `±hh` (от `-18` до `+18`) и `±hh:mm`;
        - дата и время передаются в полном виде: `YYYY-MM-DDTHH:mm:ss[.SSSSSS][timezone]`.

        По умолчанию ответ отсортирован по ID документа. Чтобы изменить сортировку, укажите поле `sort[]`.

        ### Валидации запроса

        - Данные для получения реестра групп заявлений корректны.
        - У пользователя клиента есть право `APPLICATION_GROUPS` на уровне пользователя клиента или на уровне сотрудника клиента.
        - Количество уникальных структур не превышает заданный лимит.
        - У пользователя клиента есть доступ ко всем переданным элементам структур.
        - Проверяется, что у пользователя клиента с указанным ID есть требуемое право (с использованием кэша прав).
        - Проверяется, что все элементы пользовательских структур с переданными ID существуют.
        - Проверяется, что количество уникальных структурных элементов не превышает лимит для запросов реестров.
        - Проверяется, что переданные элементы входят в список разрешенных пользователю элементов пользовательских структур.
        - Проверяется, что элемент пользовательской структуры существует по его ID.
      parameters:
        - $ref: '#/components/parameters/FormatParameter'
        - name: Impersonated-User-Id
          description: Идентификатор пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            format: uuid
        - name: Impersonated-User-Id-Type
          description: Тип идентификатора пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            enum:
              - HR_LINK_ID
              - SNILS
              - EXTERNAL_ID
        - name: Impersonated-User-Id-External-System-Type
          description: |
            Идентификатор внешней системы при аутентификации через мастер-токен.
          in: header
          schema:
            type: string
        - name: clientId
          in: path
          required: true
          description: Идентификатор клиента.
          schema:
            type: string
            format: uuid
      requestBody:
        description: Тело запроса ApplicationGroupRegistryV2FilterDTO
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ApplicationGroupRegistryV2FilterDTO'
      responses:
        '200':
          description: Успешная операция.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    type: boolean
                  applicationGroups:
                    type: array
                    description: Реестр групп заявлений кадровика.
                    items:
                      $ref: '#/components/schemas/ApplicationGroupWithSigningRouteDTO'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '429':
          $ref: '#/components/responses/TooManyRequests'
  /api/v2/clients/{clientId}/applicationGroups/{applicationGroupId}:
    get:
      tags:
        - applications
      summary: Получить группу заявлений
      operationId: applicationGroupGetApplicationGroupV2
      security:
        - SessionCookieAuth: []
        - UserApiTokenAuth: []
        - MasterTokenAuth: []
      description: |
        ### Описание метода

        Возвращает группу заявлений сотрудника по `clientId` и `applicationGroupId`. Доступ к группе получают: создатель группы, заявитель, активный заместитель хотя бы одного подписанта, получатель после завершения документооборота, а также пользователь клиента с правом на получение группы заявлений. Черновики видит только их создатель.

        ### Валидации запроса

        - `clientId` соответствует формату UUID; клиент существует и не удалён.
        - Пользователь, выполняющий операцию, относится к клиенту.
        - `applicationGroupId` корректен; группа заявлений существует и доступна пользователю клиента.
        - Пользователь клиента — один из: создатель группы заявлений, заявитель, активный заместитель хотя бы одного подписанта, получатель группы заявлений с завершённым документооборотом (все участники подписали).
        - Если в группе все заявления — черновики, текущий пользователь является их создателем. Иначе в группе есть хотя бы одно заявление не в статусе черновика.
        - Пользователь клиента — подписант хотя бы одного заявления группы, и момент подписания для него наступил. Если подписант относится к участнику с типом `ROLE`, у пользователя клиента есть нужная роль.
        - У пользователя клиента есть право на получение группы заявлений на уровне пользователя клиента или сотрудника.
      parameters:
        - $ref: '#/components/parameters/FormatParameter'
        - name: Impersonated-User-Id
          description: Идентификатор пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            format: uuid
        - name: Impersonated-User-Id-Type
          description: Тип идентификатора пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            enum:
              - HR_LINK_ID
              - SNILS
              - EXTERNAL_ID
        - name: Impersonated-User-Id-External-System-Type
          description: |
            Идентификатор внешней системы при аутентификации через мастер-токен.
          in: header
          schema:
            type: string
        - name: clientId
          in: path
          required: true
          description: Идентификатор клиента.
          schema:
            type: string
            format: uuid
        - name: applicationGroupId
          in: path
          required: true
          description: Идентификатор группы заявлений в HRlink.
          schema:
            type: string
            format: uuid
      responses:
        '200':
          description: Успешная операция.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    type: boolean
                  applicationGroup:
                    $ref: '#/components/schemas/ApplicationGroupWithSigningRouteDTO'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '429':
          $ref: '#/components/responses/TooManyRequests'
    delete:
      tags:
        - applications
      summary: Удалить группу заявлений
      operationId: applicationGroupDeleteApplicationGroupV2
      security:
        - SessionCookieAuth: []
        - UserApiTokenAuth: []
        - MasterTokenAuth: []
      description: |
        ### Описание метода

        Удаляет группу заявлений сотрудника по `clientId` и `applicationGroupId`.

        Удалять группу заявлений может:
        - создатель черновика без активных подписаний;
        - пользователь клиента с правом `APPLICATION_GROUPS_DELETE` на уровне пользователя клиента или сотрудника одного из юрлиц — если маршрут подписания допускает удаление на текущем этапе и каждое заявление группы находится в состоянии, допускающем удаление.

        Дополнительные ограничения: документооборот заявления не завершён; активных подписаний через портал «Работа России», Госключ и УНЭП нет; запрос на подписание и СМС-подтверждение не в состоянии `IN_PROGRESS`. Если валидатор операции требует проверки ключа маршрута, группа должна быть запущена по маршруту с ключом `APPROVER_AND_HR`.

        ### Валидации запроса

        - `clientId` соответствует формату UUID; клиент существует и не удалён.
        - Пользователь, выполняющий операцию, относится к клиенту.
        - `applicationGroupId` соответствует формату UUID; группа заявлений существует, относится к клиенту и не удалена.
        - Если валидатор операции требует проверки ключа маршрута подписания, группа заявлений запущена по маршруту с ключом `APPROVER_AND_HR`.
        - Документооборот заявления не завершён.
        - Ни одно заявление группы не имеет активного подписания через портал «Работа России» или Госключ.
        - Для группы заявлений не активен процесс подписания УНЭП.
        - Запрос на подписание группы заявлений не в состоянии `IN_PROGRESS`.
        - СМС-подтверждение подписания группы заявлений сотрудника не в состоянии `IN_PROGRESS`.
        - Если группа заявлений — черновик: текущий пользователь является её создателем (участник этапа маршрута подписания с типом `EMPLOYEE`), у черновика нет активных подписаний.
        - Иначе у пользователя клиента есть право `APPLICATION_GROUPS_DELETE` на уровне пользователя клиента или сотрудника одного из юрлиц; на маршруте подписания, по которому отправлена группа, есть этап, до которого включительно можно удалять заявления; текущий этап маршрута подписания каждого заявления — не позже этого этапа; каждое заявление группы находится в состоянии, допускающем удаление.
      parameters:
        - $ref: '#/components/parameters/FormatParameter'
        - name: Impersonated-User-Id
          description: Идентификатор пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            format: uuid
        - name: Impersonated-User-Id-Type
          description: Тип идентификатора пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            enum:
              - HR_LINK_ID
              - SNILS
              - EXTERNAL_ID
        - name: Impersonated-User-Id-External-System-Type
          description: |
            Идентификатор внешней системы при аутентификации через мастер-токен.
          in: header
          schema:
            type: string
        - name: clientId
          in: path
          required: true
          description: Идентификатор клиента.
          schema:
            type: string
            format: uuid
        - name: applicationGroupId
          in: path
          required: true
          description: Идентификатор группы заявлений в HRlink.
          schema:
            type: string
            format: uuid
      responses:
        '200':
          description: Успешная операция.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    type: boolean
                  applicationGroup:
                    $ref: '#/components/schemas/ApplicationGroupWithSigningRouteDTO'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '429':
          $ref: '#/components/responses/TooManyRequests'
  /api/v1/clients/{clientId}/applications/{applicationId}/archive:
    get:
      tags:
        - applications
      summary: Скачать архив КЭДО
      operationId: applicationDownloadArchive
      security:
        - SessionCookieAuth: []
        - UserApiTokenAuth: []
        - MasterTokenAuth: []
      description: |
        ### Описание метода

        Метод для скачивания архива КЭДО заявления, содержащего файл заявления
        и файлы подписей к нему по ID заявления во внешней системе.
        Результатом выполнения метода будет 303 See Other, а HTTP-заголовок
        Location будет содержать одноразовую ссылку для скачивания файла
        zip-архива, содержащего файл заявления и файлы подписей к нему: //file.hr-link.ru/api/v1/files?token=:token Имя файла zip-архива документооборота будет сгенерированно в соответствии со следующим форматом: {СНИЛС}_{ТипДокумента}_№{НомерДокумента}от{ДатаДокумента}; где {СНИЛС}
        - это СНИЛС сотрудника-подписанта. Например, 13165063630_Согласие_на_обработк_№12К_от_2020-12-09. Скачать архив документооборота можно только для заявлений, отправленных на подписание. В архиве документооборота может быть одна подпись, и может быть обе подписи. Это зависит от того, кто подписал заявление на момент скачивания архива документооборота.

        ### Валидации запроса

        - Клиент существует, не удалён, и к нему относится пользователь, выполняющий операцию.
        - ID заявления сотрудника соответствует формату UUID.
        - По заданному ID существует заявление сотрудника.
        - Заявление сотрудника по заданному ID относится к клиенту.
        - У текущего пользователя есть право получить данные заявления сотрудника.
        - Есть возможность получить требуемый файл запрошенного заявления.
        - Проверяет возможность получения требуемого файла и возвращает кеш валидации.
        - ID клиента соответствует формату UUID.
        - По заданному ID клиента существует клиент.
        - Пользователь, выполняющий операцию, относится к клиенту.
        - Проверяет, что ID заявления сотрудника, заданный в виде строки, соответствует формату, и возвращает типизированный ID заявления сотрудника.
        - Проверяет, что по заданному ID существует заявление сотрудника.
        - Проверяет, что заявление сотрудника относится к клиенту.
        - Пользователь клиента является создателем заявления.
        - Пользователь клиента является заявителем.
        - Пользователь клиента является получателем группы заявление и документооборот заявления успешно завершен подписанием со стороны всех участников.
        - Заявление не является черновиком и пользователь клиента имеет право на получение заявления в качестве подписанта или на уровне роли пользователя клиента или сотрудника.
        - Проверяет, что текущий пользователь относится к заданному клиенту и возвращает пользователя клиента, если он существует.
        - Проверяет, что ID клиента, заданный в виде строки, соответствует формату, и возвращает типизированный ID клиента.
        - Проверяет существование клиента по заданному ID и возвращает клиента, если он существует.
        - Проверяет, что клиент не удален.
        - Проверяет, что заявление не является черновиком, то есть хотя бы один подписант принял решение.
        - Пользователь является подписантом заявления и уже настал момент, когда ему стало доступно подписание заявления.
        - Среди подписантов заявления, которым уже стало доступно подписание заявления, есть подписант, который относится к участнику с типом `ROLE` и пользователь клиента имеет необходимую роль.
        - Пользователь клиента имеет право на получение заявлений на уровне роли пользователя клиента или сотрудника.
      parameters:
        - $ref: '#/components/parameters/FormatParameter'
        - name: Impersonated-User-Id
          description: Идентификатор пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            format: uuid
        - name: Impersonated-User-Id-Type
          description: Тип идентификатора пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            enum:
              - HR_LINK_ID
              - SNILS
              - EXTERNAL_ID
        - name: Impersonated-User-Id-External-System-Type
          description: |
            Идентификатор внешней системы при аутентификации через мастер-токен.
          in: header
          schema:
            type: string
        - name: clientId
          in: path
          required: true
          description: Идентификатор клиента.
          schema:
            type: string
            format: uuid
        - name: applicationId
          in: path
          required: true
          description: Идентификатор заявления в HRlink.
          schema:
            type: string
            format: uuid
      responses:
        '200':
          description: Этот код ответа не используется, при успехе выполнения метод всегда возвращает ответ с кодом 303.
        '303':
          description: |
            HTTP-заголовок `Location` будет содержать URL, по которому скачивается файл.<br/>
            ✍️ Postman и некоторые другие API-клиенты по умолчанию следуют редиректам и сразу скачивают файл, указанный в
            HTTP-заголовке `Location`. Это поведение настраивается на стороне клиента.
          headers:
            Location:
              schema:
                type: string
              description: URL, по которому скачивается файл
              example: https://host.hr-link.ru/api/v1/files?token=<<одноразовый_токен>>
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '429':
          $ref: '#/components/responses/TooManyRequests'
  /api/v1/clients/{clientId}/applications/{applicationId}/markAsSeen:
    put:
      tags:
        - applications
      summary: Отметить как просмотренное
      operationId: applicationMarkAsSeen
      security:
        - SessionCookieAuth: []
        - UserApiTokenAuth: []
        - MasterTokenAuth: []
      description: |
        ### Описание метода

        > **⚠️ Будьте осторожны!**
        >
        > Методы PUT перезаписывают запись целиком: любые непереданные поля считаются null и затирают данные в БД.
        > Поэтому при обновлении нужно указывать все поля.
         Отмечает заявление как просмотренное для заданного получателя заявления.

        ### Валидации запроса

        - Клиент существует, не удалён, и к нему относится пользователь, выполняющий операцию.
        - Заданное ID заявления соответствует формату UUID.
        - По заданному ID существует заявление.
        - Заявление по заданному ID относится к клиенту.
        - Пользователь клиента является получателем в заявлении и документооборот по заявлению успешно завершен (заявление не было отклонено).
        - Тело запроса задано.
        - Если в теле запроса задана версия заявления, то она равна версии на модели.
        - ID клиента соответствует формату UUID.
        - По заданному ID клиента существует клиент.
        - Пользователь, выполняющий операцию, относится к клиенту.
        - Проверяет, что ID заявления сотрудника, заданный в виде строки, соответствует формату, и возвращает типизированный ID заявления сотрудника.
        - Проверяет, что по заданному ID существует заявление сотрудника.
        - Проверяет, что заявление сотрудника относится к клиенту.
        - Пользователь клиента является получателем в заявлении.
        - Документооборот по заявлению завершен.
        - Заявление не было отклонено.
        - Проверяет, что если ожидаемая версия задана, то она равна версии заявления.
        - Проверяет, что текущий пользователь относится к заданному клиенту и возвращает пользователя клиента, если он существует.
        - Проверяет, что ID клиента, заданный в виде строки, соответствует формату, и возвращает типизированный ID клиента.
        - Проверяет существование клиента по заданному ID и возвращает клиента, если он существует.
        - Проверяет, что клиент не удален.
      parameters:
        - $ref: '#/components/parameters/FormatParameter'
        - name: Impersonated-User-Id
          description: Идентификатор пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            format: uuid
        - name: Impersonated-User-Id-Type
          description: Тип идентификатора пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            enum:
              - HR_LINK_ID
              - SNILS
              - EXTERNAL_ID
        - name: Impersonated-User-Id-External-System-Type
          description: |
            Идентификатор внешней системы при аутентификации через мастер-токен.
          in: header
          schema:
            type: string
        - name: clientId
          in: path
          required: true
          description: Идентификатор клиента.
          schema:
            type: string
            format: uuid
        - name: applicationId
          in: path
          required: true
          description: Идентификатор заявления в HRlink.
          schema:
            type: string
            format: uuid
      requestBody:
        description: Тело запроса ApplicationMarkAsSeenDto
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ApplicationMarkAsSeenDto'
      responses:
        '200':
          description: Успешная операция.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    type: boolean
                  application:
                    $ref: '#/components/schemas/ApplicationWithGroupDTO'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '429':
          $ref: '#/components/responses/TooManyRequests'
  /api/v1/clients/{clientId}/applications/{applicationId}/responsibles:
    post:
      tags:
        - applications
      summary: Назначить ответственного
      operationId: applicationTakeResponsibility
      security:
        - SessionCookieAuth: []
        - UserApiTokenAuth: []
        - MasterTokenAuth: []
      description: |
        ### Описание метода

        Устанавливает ответственного заявления сотрудника.

        ### Валидации запроса

        - Тело запроса задано.
        - Элементы тела запроса заданы корректно.
        - Клиент задан корректно.
        - ID заявления соответствует формату UUID.
        - ID участника этапа запущенного маршрута подписания задан и соответствует формату UUID.
        - По заданному ID существует заявление сотрудника.
        - Если в теле запроса задана версия заявления, то она равна версии на модели.
        - Заявление сотрудника относится к клиенту.
        - Заявление не удалено.
        - Дополнительные условия для заявления выполнены.
        - По заданному ID существует участник этапа маршрута подписания.
        - Участник этапа маршрута подписания относится к запущенному маршруту подписания заявления.
        - Дополнительные условия для этапа и участника запущенного маршрута выполнены.
        - Если пользователь не является текущим ответственным, то он является или может стать подписантом заявления, который относится к заданному участнику этапа маршрута подписания.
        - Подписание заявления корректно.
        - Подписант заявления, который относится к заданному участнику этапа маршрута подписания, является активным.
        - Проверяет, что элементы тела запроса заданы корректно.
        - Заявление не является черновиком.
        - Выполняет проверку дополнительных условий для этапа и участника запущенного маршрута подписания.
        - Проверяет, что пользователь клиента может выполнить целевое действие с заявлением в качестве участника маршрута подписания.
        - Проверяет, что подписант заявления, который относится к заданному участнику этапа маршрута подписания, является активным.
        - Выполняет проверку подписания заявления.
        - ID клиента соответствует формату UUID.
        - По заданному ID клиента существует клиент.
        - Пользователь, выполняющий операцию, относится к клиенту.
        - Проверяет, что ID заявления сотрудника, заданный в виде строки, соответствует формату, и возвращает типизированный ID заявления сотрудника.
        - Проверяет, что ID участника этапа запущенного маршрута подписания задан.
        - Проверяет, что по заданному ID существует заявление сотрудника.
        - Проверяет, что если ожидаемая версия задана, то она равна версии заявления.
        - Проверяет, что заявление сотрудника относится к клиенту.
        - Проверяет, что заявление не удалено.
        - Проверяет, что по заданному ID существует участник этапа запущенного маршрута подписания.
        - Проверяет, что участник этапа запущенного маршрута подписания относится к запущенному маршруту подписания заявления.
        - Проверяет, что заявление не является черновиком, то есть хотя бы один подписант принял решение.
        - Проверяет, что пользователь клиента является или может стать подписантом заявления, который относится к заданному участнику этапа маршрута подписания.
        - Проверяет, что подписант заявления может выполнить действие сейчас.
        - Проверяет, что текущий пользователь относится к заданному клиенту и возвращает пользователя клиента, если он существует.
        - Проверяет, что ID клиента, заданный в виде строки, соответствует формату, и возвращает типизированный ID клиента.
        - Проверяет существование клиента по заданному ID и возвращает клиента, если он существует.
        - Проверяет, что клиент не удален.
      parameters:
        - $ref: '#/components/parameters/FormatParameter'
        - name: Impersonated-User-Id
          description: Идентификатор пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            format: uuid
        - name: Impersonated-User-Id-Type
          description: Тип идентификатора пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            enum:
              - HR_LINK_ID
              - SNILS
              - EXTERNAL_ID
        - name: Impersonated-User-Id-External-System-Type
          description: |
            Идентификатор внешней системы при аутентификации через мастер-токен.
          in: header
          schema:
            type: string
        - name: clientId
          in: path
          required: true
          description: Идентификатор клиента.
          schema:
            type: string
            format: uuid
        - name: applicationId
          in: path
          required: true
          description: Идентификатор заявления в HRlink.
          schema:
            type: string
            format: uuid
      requestBody:
        description: Тело запроса TakeResponsibilityApplicationDTO
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/TakeResponsibilityApplicationDTO'
      responses:
        '200':
          description: Успешная операция.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    type: boolean
                  application:
                    $ref: '#/components/schemas/ApplicationWithGroupDTO'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '429':
          $ref: '#/components/responses/TooManyRequests'
  /api/v1/clients/{clientId}/applications/{applicationId}/comments:
    delete:
      tags:
        - applicationComments
      summary: Удалить комментарии к заявлению
      operationId: applicationCommentsDelete
      security:
        - SessionCookieAuth: []
        - UserApiTokenAuth: []
        - MasterTokenAuth: []
      description: |
        ### Описание метода

        Удаляет комментарии к заявлению.

        ### Валидации запроса

        - Тело запроса задано.
        - Клиент существует, не удалён, и к нему относится пользователь, выполняющий операцию.
        - ID заявления задан корректно.
        - Пользователь имеет доступ к заявлению.
        - Заявление не является удалённым.
        - Тело запроса задано корректно.
        - ID клиента соответствует формату UUID.
        - По заданному ID клиента существует клиент.
        - Пользователь, выполняющий операцию, относится к клиенту.
        - Проверяет, что по заданному ID существует заявление сотрудника.
        - Пользователь клиента является создателем заявления.
        - Пользователь клиента является заявителем.
        - Пользователь клиента является получателем группы заявлений и документооборот заявления успешно завершен подписанием со стороны всех участников.
        - Заявление не является черновиком и пользователь клиента имеет право на получение заявления в качестве подписанта или на уровне роли пользователя клиента или сотрудника.
        - Проверяет, что заявление не удалено.
        - Массив, содержащий данные комментариев, задан.
        - Массив, содержащий данные комментариев, не содержит пустых элементов.
        - Комментарии, заданные в теле запроса существуют по заданным ID.
        - Пользователь, выполняющий операцию, является автором заданных комментариев.
        - Если задана версия комментария, она задана корректно.
        - Выполняет проверку, что текущий пользователь относится к заданному клиенту и возвращает пользователя клиента, если он существует.
        - Проверяет, что ID клиента, заданный в виде строки, соответствует формату, и возвращает типизированный ID клиента.
        - Выполняет проверку существования клиента по заданному ID и возвращает клиента в случае, если он существует.
        - Проверяет, что клиент не удален.
        - Проверяет, что заявление не является черновиком, то есть хотя бы один подписант принял решение.
        - Пользователь является подписантом заявления и уже настал момент, когда ему стало доступно подписание заявления.
        - Среди подписантов заявления, которым уже стало доступно подписание заявления, есть подписант, который относится к участнику с типом {@link SigningRouteParticipantType#ROLE} и пользователь клиента имеет необходимую роль.
        - Пользователь клиента имеет право на получение заявлений на уровне роли пользователя клиента или сотрудника.
        - Проверяет, что ID комментариев заданы.
        - Проверяет, что комментарии к заданной сущности существуют по заданным ID.
        - Проверяет, что пользователь с заданным ID является автором заданных комментариев.
        - Проверяет, что если версия комментария задана, она соответствует текущей версии комментария.
      parameters:
        - $ref: '#/components/parameters/FormatParameter'
        - name: Impersonated-User-Id
          description: Идентификатор пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            format: uuid
        - name: Impersonated-User-Id-Type
          description: Тип идентификатора пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            enum:
              - HR_LINK_ID
              - SNILS
              - EXTERNAL_ID
        - name: Impersonated-User-Id-External-System-Type
          description: |
            Идентификатор внешней системы при аутентификации через мастер-токен.
          in: header
          schema:
            type: string
        - name: clientId
          in: path
          required: true
          description: Идентификатор клиента.
          schema:
            type: string
            format: uuid
        - name: applicationId
          in: path
          required: true
          description: Идентификатор заявления в HRlink.
          schema:
            type: string
            format: uuid
      requestBody:
        description: Тело запроса DeleteCommentsDTO
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DeleteCommentsDTO'
      responses:
        '200':
          description: Успешная операция.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    type: boolean
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '429':
          $ref: '#/components/responses/TooManyRequests'
    post:
      tags:
        - applicationComments
      summary: Создать комментарий к заявлению
      operationId: applicationCommentsCreate
      security:
        - SessionCookieAuth: []
        - UserApiTokenAuth: []
        - MasterTokenAuth: []
      description: |
        ### Описание метода

        Создаёт комментарий к заявлению.

        ### Валидации запроса

        - Тело запроса задано.
        - Текст комментария задан и не является пустой строкой.
        - Клиент существует, не удалён, и к нему относится пользователь, выполняющий операцию.
        - ID заявления задан корректно.
        - Пользователь имеет доступ к заявлению.
        - Заявление не является черновиком.
        - Заявление не является удалённым.
        - Проверяет, что текст комментария задан и не является пустой строкой.
        - ID клиента соответствует формату UUID.
        - По заданному ID клиента существует клиент.
        - Пользователь, выполняющий операцию, относится к клиенту.
        - Проверяет, что по заданному ID существует заявление сотрудника.
        - Пользователь клиента является создателем заявления.
        - Пользователь клиента является заявителем.
        - Пользователь клиента является получателем группы заявлений и документооборот заявления успешно завершен подписанием со стороны всех участников.
        - Заявление не является черновиком и пользователь клиента имеет право на получение заявления в качестве подписанта или на уровне роли пользователя клиента или сотрудника.
        - Проверяет, что заявление не является черновиком, то есть хотя бы один подписант принял решение.
        - Проверяет, что заявление не удалено.
        - Выполняет проверку, что текущий пользователь относится к заданному клиенту и возвращает пользователя клиента, если он существует.
        - Проверяет, что ID клиента, заданный в виде строки, соответствует формату, и возвращает типизированный ID клиента.
        - Выполняет проверку существования клиента по заданному ID и возвращает клиента в случае, если он существует.
        - Проверяет, что клиент не удален.
        - Пользователь является подписантом заявления и уже настал момент, когда ему стало доступно подписание заявления.
        - Среди подписантов заявления, которым уже стало доступно подписание заявления, есть подписант, который относится к участнику с типом {@link SigningRouteParticipantType#ROLE} и пользователь клиента имеет необходимую роль.
        - Пользователь клиента имеет право на получение заявлений на уровне роли пользователя клиента или сотрудника.
      parameters:
        - $ref: '#/components/parameters/FormatParameter'
        - name: Impersonated-User-Id
          description: Идентификатор пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            format: uuid
        - name: Impersonated-User-Id-Type
          description: Тип идентификатора пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            enum:
              - HR_LINK_ID
              - SNILS
              - EXTERNAL_ID
        - name: Impersonated-User-Id-External-System-Type
          description: |
            Идентификатор внешней системы при аутентификации через мастер-токен.
          in: header
          schema:
            type: string
        - name: clientId
          in: path
          required: true
          description: Идентификатор клиента.
          schema:
            type: string
            format: uuid
        - name: applicationId
          in: path
          required: true
          description: Идентификатор заявления в HRlink.
          schema:
            type: string
            format: uuid
      requestBody:
        description: Тело запроса CreateCommentDTO
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateCommentDTO'
      responses:
        '200':
          description: Успешная операция.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    type: boolean
                  comment:
                    $ref: '#/components/schemas/ChatCommentDTO'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '429':
          $ref: '#/components/responses/TooManyRequests'
    get:
      tags:
        - applicationComments
      summary: Получить данные комментариев к заявлению
      operationId: applicationCommentsGetComments
      security:
        - SessionCookieAuth: []
        - UserApiTokenAuth: []
        - MasterTokenAuth: []
      description: |
        ### Описание метода

        Возвращает данные комментариев к заявлению.

        ### Валидации запроса

        - Клиент существует, не удалён, и к нему относится пользователь, выполняющий операцию.
        - ID заявления задан корректно.
        - Пользователь имеет доступ к заявлению.
        - Заявление не является черновиком.
        - ID клиента соответствует формату UUID.
        - По заданному ID клиента существует клиент.
        - Пользователь, выполняющий операцию, относится к клиенту.
        - Проверяет, что по заданному ID существует заявление сотрудника.
        - Пользователь клиента является создателем заявления.
        - Пользователь клиента является заявителем.
        - Пользователь клиента является получателем группы заявлений и документооборот заявления успешно завершен подписанием со стороны всех участников.
        - Заявление не является черновиком и пользователь клиента имеет право на получение заявления в качестве подписанта или на уровне роли пользователя клиента или сотрудника.
        - Проверяет, что заявление не является черновиком, то есть хотя бы один подписант принял решение.
        - Выполняет проверку, что текущий пользователь относится к заданному клиенту и возвращает пользователя клиента, если он существует.
        - Проверяет, что ID клиента, заданный в виде строки, соответствует формату, и возвращает типизированный ID клиента.
        - Выполняет проверку существования клиента по заданному ID и возвращает клиента в случае, если он существует.
        - Проверяет, что клиент не удален.
        - Пользователь является подписантом заявления и уже настал момент, когда ему стало доступно подписание заявления.
        - Среди подписантов заявления, которым уже стало доступно подписание заявления, есть подписант, который относится к участнику с типом {@link SigningRouteParticipantType#ROLE} и пользователь клиента имеет необходимую роль.
        - Пользователь клиента имеет право на получение заявлений на уровне роли пользователя клиента или сотрудника.
      parameters:
        - $ref: '#/components/parameters/FormatParameter'
        - name: Impersonated-User-Id
          description: Идентификатор пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            format: uuid
        - name: Impersonated-User-Id-Type
          description: Тип идентификатора пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            enum:
              - HR_LINK_ID
              - SNILS
              - EXTERNAL_ID
        - name: Impersonated-User-Id-External-System-Type
          description: |
            Идентификатор внешней системы при аутентификации через мастер-токен.
          in: header
          schema:
            type: string
        - name: clientId
          in: path
          required: true
          description: Идентификатор клиента.
          schema:
            type: string
            format: uuid
        - name: applicationId
          in: path
          required: true
          description: Идентификатор заявления в HRlink.
          schema:
            type: string
            format: uuid
      responses:
        '200':
          description: Успешная операция.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    type: boolean
                  comments:
                    type: array
                    description: Список данных комментариев к заявлению.
                    items:
                      $ref: '#/components/schemas/ChatCommentDTO'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '429':
          $ref: '#/components/responses/TooManyRequests'
  /api/v1/clients/{clientId}/documents/{documentId}/comments:
    delete:
      tags:
        - documentComments
      summary: Удалить комментарии к документу
      operationId: documentCommentsDelete
      security:
        - SessionCookieAuth: []
        - UserApiTokenAuth: []
        - MasterTokenAuth: []
      description: |
        ### Описание метода

        Удаляет комментарии к документу.

        ### Валидации запроса

        - Клиент существует, не удалён, и к нему относится пользователь, выполняющий операцию.
        - ID документа задан корректно.
        - Пользователь имеет доступ к документу.
        - Документ не является удалённым.
        - Тело запроса задано корректно.
        - ID клиента соответствует формату UUID.
        - По заданному ID клиента существует клиент.
        - Пользователь, выполняющий операцию, относится к клиенту.
        - Выполняет проверку, что документ существует по заданным ID и возвращает документ, если он существует.
        - Проверяет наличие у пользователя клиента прав для получения документа, в том числе через связанные сущности.
        - Выполняет проверку, что документ не удален.
        - Массив, содержащий данные комментариев, задан.
        - Массив, содержащий данные комментариев, не содержит пустых элементов.
        - Комментарии, заданные в теле запроса существуют по заданным ID.
        - Пользователь, выполняющий операцию, является автором заданных комментариев.
        - Если задана версия комментария, она задана корректно.
        - Выполняет проверку, что текущий пользователь относится к заданному клиенту и возвращает пользователя клиента, если он существует.
        - Проверяет, что ID клиента, заданный в виде строки, соответствует формату, и возвращает типизированный ID клиента.
        - Выполняет проверку существования клиента по заданному ID и возвращает клиента в случае, если он существует.
        - Проверяет, что клиент не удален.
        - Выполняет проверку существования документа по заданному ID во внешней системе и возвращает документ, если он существует.
        - Проверяет, что ID комментариев заданы.
        - Проверяет, что комментарии к заданной сущности существуют по заданным ID.
        - Проверяет, что пользователь с заданным ID является автором заданных комментариев.
        - Проверяет, что если версия комментария задана, она соответствует текущей версии комментария.
      parameters:
        - $ref: '#/components/parameters/FormatParameter'
        - name: Impersonated-User-Id
          description: Идентификатор пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            format: uuid
        - name: Impersonated-User-Id-Type
          description: Тип идентификатора пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            enum:
              - HR_LINK_ID
              - SNILS
              - EXTERNAL_ID
        - name: Impersonated-User-Id-External-System-Type
          description: |
            Идентификатор внешней системы при аутентификации через мастер-токен.
          in: header
          schema:
            type: string
        - name: clientId
          in: path
          required: true
          description: Идентификатор клиента.
          schema:
            type: string
            format: uuid
        - name: documentId
          in: path
          required: true
          description: Идентификатор документа в системе HRlink.
          schema:
            type: string
            format: uuid
      requestBody:
        description: Тело запроса DeleteCommentsDTO
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DeleteCommentsDTO'
      responses:
        '200':
          description: Успешная операция.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    type: boolean
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '429':
          $ref: '#/components/responses/TooManyRequests'
    post:
      tags:
        - documentComments
      summary: Создать комментарий к документу
      operationId: documentCommentsCreate
      security:
        - SessionCookieAuth: []
        - UserApiTokenAuth: []
        - MasterTokenAuth: []
      description: |
        ### Описание метода

        Создаёт комментарий к документу.

        ### Валидации запроса

        - Тело запроса задано.
        - Текст комментария задан и не является пустой строкой.
        - Клиент существует, не удалён, и к нему относится пользователь, выполняющий операцию.
        - ID документа задан корректно.
        - Пользователь имеет доступ к документу.
        - Документ не является черновиком.
        - Документ не является удалённым.
        - Проверяет, что текст комментария задан и не является пустой строкой.
        - ID клиента соответствует формату UUID.
        - По заданному ID клиента существует клиент.
        - Пользователь, выполняющий операцию, относится к клиенту.
        - Выполняет проверку, что документ существует по заданным ID и возвращает документ, если он существует.
        - Проверяет наличие у пользователя клиента прав для получения документа, в том числе через связанные сущности.
        - Выполняет проверку, что документ не является черновиком.
        - Выполняет проверку, что документ не удален.
        - Выполняет проверку, что текущий пользователь относится к заданному клиенту и возвращает пользователя клиента, если он существует.
        - Проверяет, что ID клиента, заданный в виде строки, соответствует формату, и возвращает типизированный ID клиента.
        - Выполняет проверку существования клиента по заданному ID и возвращает клиента в случае, если он существует.
        - Проверяет, что клиент не удален.
        - Выполняет проверку существования документа по заданному ID во внешней системе и возвращает документ, если он существует.
      parameters:
        - $ref: '#/components/parameters/FormatParameter'
        - name: Impersonated-User-Id
          description: Идентификатор пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            format: uuid
        - name: Impersonated-User-Id-Type
          description: Тип идентификатора пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            enum:
              - HR_LINK_ID
              - SNILS
              - EXTERNAL_ID
        - name: Impersonated-User-Id-External-System-Type
          description: |
            Идентификатор внешней системы при аутентификации через мастер-токен.
          in: header
          schema:
            type: string
        - name: clientId
          in: path
          required: true
          description: Идентификатор клиента.
          schema:
            type: string
            format: uuid
        - name: documentId
          in: path
          required: true
          description: Идентификатор документа в системе HRlink.
          schema:
            type: string
            format: uuid
      requestBody:
        description: Тело запроса CreateCommentDTO
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateCommentDTO'
      responses:
        '200':
          description: Успешная операция.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    type: boolean
                  comment:
                    $ref: '#/components/schemas/ChatCommentDTO'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '429':
          $ref: '#/components/responses/TooManyRequests'
    get:
      tags:
        - documentComments
      summary: Получить данные комментариев к документу
      operationId: documentCommentsGetComments
      security:
        - SessionCookieAuth: []
        - UserApiTokenAuth: []
        - MasterTokenAuth: []
      description: |
        ### Описание метода

        Возвращает данные комментариев к документу.

        ### Валидации запроса

        - Клиент существует, не удалён, и к нему относится пользователь, выполняющий операцию.
        - ID документа задан корректно.
        - Пользователь имеет доступ к документу.
        - Документ не является черновиком.
        - ID клиента соответствует формату UUID.
        - По заданному ID клиента существует клиент.
        - Пользователь, выполняющий операцию, относится к клиенту.
        - Выполняет проверку, что документ существует по заданным ID и возвращает документ, если он существует.
        - Проверяет наличие у пользователя клиента прав для получения документа, в том числе через связанные сущности.
        - Выполняет проверку, что документ не является черновиком.
        - Выполняет проверку, что текущий пользователь относится к заданному клиенту и возвращает пользователя клиента, если он существует.
        - Проверяет, что ID клиента, заданный в виде строки, соответствует формату, и возвращает типизированный ID клиента.
        - Выполняет проверку существования клиента по заданному ID и возвращает клиента в случае, если он существует.
        - Проверяет, что клиент не удален.
        - Выполняет проверку существования документа по заданному ID во внешней системе и возвращает документ, если он существует.
      parameters:
        - $ref: '#/components/parameters/FormatParameter'
        - name: Impersonated-User-Id
          description: Идентификатор пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            format: uuid
        - name: Impersonated-User-Id-Type
          description: Тип идентификатора пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            enum:
              - HR_LINK_ID
              - SNILS
              - EXTERNAL_ID
        - name: Impersonated-User-Id-External-System-Type
          description: |
            Идентификатор внешней системы при аутентификации через мастер-токен.
          in: header
          schema:
            type: string
        - name: clientId
          in: path
          required: true
          description: Идентификатор клиента.
          schema:
            type: string
            format: uuid
        - name: documentId
          in: path
          required: true
          description: Идентификатор документа в системе HRlink.
          schema:
            type: string
            format: uuid
      responses:
        '200':
          description: Успешная операция.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    type: boolean
                  comments:
                    type: array
                    description: Список данных комментариев к документу.
                    items:
                      $ref: '#/components/schemas/ChatCommentDTO'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '429':
          $ref: '#/components/responses/TooManyRequests'
  /api/v1/clients/{clientId}/applicationGroups/{applicationGroupId}/signBySes:
    post:
      tags:
        - applicationSigning
      summary: Подать заявление (ПЭП, Сотрудник-заявитель)
      operationId: applicationGroupSignBySes
      security:
        - SessionCookieAuth: []
        - UserApiTokenAuth: []
        - MasterTokenAuth: []
      description: |
        ### Когда использовать

        Сотрудник-заявитель подписывает ПЭП собственное заявление, чтобы **подать** его на согласование. Подписант определяется по контексту авторизации — пользователь, выполняющий запрос, должен совпадать с автором заявления. Тело запроса не требуется.

        Для согласования заявления участником маршрута (например, руководителем) используйте [Согласовать заявление (ПЭП, участник маршрута)](/public/api/hrlink/application-sign-by-ses).

        ### Условия

        - На тенанте включена возможность подписания заявлений Сотрудником через ПЭП. Настройку выполняет персональный менеджер HRlink.
        - Группа заявлений разрешает подписание ПЭП.
        - Пользователь, выполняющий запрос, — автор заявления (Заявитель).
      parameters:
        - $ref: '#/components/parameters/FormatParameter'
        - name: Impersonated-User-Id
          description: Идентификатор пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            format: uuid
        - name: Impersonated-User-Id-Type
          description: Тип идентификатора пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            enum:
              - HR_LINK_ID
              - SNILS
              - EXTERNAL_ID
        - name: Impersonated-User-Id-External-System-Type
          description: |
            Идентификатор внешней системы при аутентификации через мастер-токен.
          in: header
          schema:
            type: string
        - name: clientId
          in: path
          required: true
          description: Идентификатор клиента.
          schema:
            type: string
            format: uuid
        - name: applicationGroupId
          in: path
          required: true
          description: Идентификатор группы заявлений в HRlink.
          schema:
            type: string
            format: uuid
      responses:
        '200':
          description: Успешная операция.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    type: boolean
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '429':
          $ref: '#/components/responses/TooManyRequests'
  /api/v1/clients/{clientId}/applicationGroups/{applicationGroupId}/sign/nqes:
    post:
      tags:
        - applicationSigning
      summary: Запросить код подписания (УНЭП)
      operationId: applicationGroupSignByNqes
      security:
        - SessionCookieAuth: []
        - UserApiTokenAuth: []
        - MasterTokenAuth: []
      description: |
        ### Описание метода

        Подписывает группу заявлений сотрудника с помощью УНЭП.

        ### Валидации запроса

        - Выполняются общие проверки подписания группы заявлений сотрудника.
        - Пользователь, выполняющий операцию, владеет ровно одним активным УНЭП'ом.
        - Пользователь не имеет подтверждённой задачи на смену канала подписания УНЭП в нетерминальной стадии.
        - Правила проверки для провайдера выполнены.
        - Проверяет, что у пользователя есть ровно один активный УНЭП.
      parameters:
        - $ref: '#/components/parameters/FormatParameter'
        - name: Impersonated-User-Id
          description: Идентификатор пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            format: uuid
        - name: Impersonated-User-Id-Type
          description: Тип идентификатора пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            enum:
              - HR_LINK_ID
              - SNILS
              - EXTERNAL_ID
        - name: Impersonated-User-Id-External-System-Type
          description: |
            Идентификатор внешней системы при аутентификации через мастер-токен.
          in: header
          schema:
            type: string
        - name: clientId
          in: path
          required: true
          description: Идентификатор клиента.
          schema:
            type: string
            format: uuid
        - name: applicationGroupId
          in: path
          required: true
          description: Идентификатор группы заявлений в HRlink.
          schema:
            type: string
            format: uuid
      responses:
        '200':
          description: Успешная операция.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    type: boolean
                  signingRequestId:
                    description: Идентификатор запроса на подписание.
                    type: string
                    format: uuid
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '429':
          $ref: '#/components/responses/TooManyRequests'
    put:
      tags:
        - applicationSigning
      summary: Подтвердить подписание (УНЭП)
      operationId: applicationGroupConfirmNqesSigning
      security:
        - SessionCookieAuth: []
        - UserApiTokenAuth: []
        - MasterTokenAuth: []
      description: |
        ### Описание метода

        > **⚠️ Будьте осторожны!**
        >
        > Методы PUT перезаписывают запись целиком: любые непереданные поля считаются null и затирают данные в БД.
        > Поэтому при обновлении нужно указывать все поля.
         Подтверждает подписание с помощью УНЭП группы заявлений сотрудника.

        ### Валидации запроса

        - ID группы заявлений соответствует формату UUID.
        - Клиент существует, не удалён, и к нему относится пользователь, выполняющий операцию.
        - По заданному ID существует группа заявлений.
        - Группа заявлений по заданному ID относится к клиенту.
        - Пользователь, выполняющий операцию, является владельцем группы заявлений по заданному ID, то есть в каждом заявлении текущий пользователь является тем сотрудником, которому оно принадлежит.
        - Группа заявлений не удалена.
        - Группа заявлений не подписана.
        - Никакое заявление из группы не имеет активного подписания через портал «Работа России» или Госключ.
        - Существует запрос на подписания группы заявлений сотрудника.
        - Группа заявлений не была изменена.
        - Если по группе заявлений уже запущен процесс подписания, то он находится в статусе ожидания SMS-кода и не истёк.
        - Не существует активных подтверждений подписания группы заявлений сотрудника.
        - ID клиента соответствует формату UUID.
        - По заданному ID клиента существует клиент.
        - Пользователь, выполняющий операцию, относится к клиенту.
        - Проверяет, что группа заявлений сотрудника относится к заданному пользователю.
        - Проверяет, что группа заявлений сотрудника не удалена.
        - Проверяет, что группа заявлений сотрудника не подписана заявителем, и возвращает заявителя.
        - Проверяет, что никакое заявление из списка не имеет активного подписания через портал «Работа России» или Госключ.
        - Проверяет, что не существует активных подтверждений подписания группы заявлений сотрудника.
        - Проверяет, что текущий пользователь относится к заданному клиенту и возвращает пользователя клиента, если он существует.
        - Проверяет, что ID клиента, заданный в виде строки, соответствует формату, и возвращает типизированный ID клиента.
        - Проверяет существование клиента по заданному ID и возвращает клиента, если он существует.
        - Проверяет, что клиент не удален.
        - Проверяет, что ID группы заявлений, заданный в виде строки, соответствует формату, и возвращает типизированный ID группы заявлений.
        - Проверяет, что группа заявлений сотрудника относится к заданному клиенту.
      parameters:
        - $ref: '#/components/parameters/FormatParameter'
        - name: Impersonated-User-Id
          description: Идентификатор пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            format: uuid
        - name: Impersonated-User-Id-Type
          description: Тип идентификатора пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            enum:
              - HR_LINK_ID
              - SNILS
              - EXTERNAL_ID
        - name: Impersonated-User-Id-External-System-Type
          description: |
            Идентификатор внешней системы при аутентификации через мастер-токен.
          in: header
          schema:
            type: string
        - name: clientId
          in: path
          required: true
          description: Идентификатор клиента.
          schema:
            type: string
            format: uuid
        - name: applicationGroupId
          in: path
          required: true
          description: Идентификатор группы заявлений в HRlink.
          schema:
            type: string
            format: uuid
      requestBody:
        description: Тело запроса CodeDTO
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CodeDTO'
      responses:
        '200':
          description: Успешная операция.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    type: boolean
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '429':
          $ref: '#/components/responses/TooManyRequests'
  /api/v1/clients/{clientId}/applications/{applicationId}/signBySes:
    post:
      tags:
        - applicationSigning
      summary: Согласовать заявление (ПЭП, участник маршрута)
      operationId: applicationSignBySes
      security:
        - SessionCookieAuth: []
        - UserApiTokenAuth: []
        - MasterTokenAuth: []
      description: |
        ### Когда использовать

        Участник маршрута подписания (руководитель, согласующий, ответственный или другая роль маршрута) подписывает ПЭП уже поданное заявление, чтобы **согласовать** его на своём этапе.

        В отличие от подачи заявления автором, здесь подписант **должен явно указать** `participantId` — идентификатор своей роли в активном этапе маршрута. Это нужно, потому что у одного пользователя в маршруте может быть несколько ролей, и API не угадывает, от чьего лица идёт согласование.
        Поле `version` поддерживает оптимистическую блокировку: если оно задано и не совпадает с серверной версией, заявление не подписывается.

        Для подачи заявления самим Сотрудником-заявителем используйте [Подать заявление (ПЭП, Сотрудник-заявитель)](/public/api/hrlink/application-group-sign-by-ses).

        ### Условия

        - Заявление существует, относится к указанному клиенту и не удалено.
        - Заявление не является черновиком — хотя бы один подписант уже принял решение по нему.
        - Указанный `participantId` ссылается на участника активного этапа маршрута подписания, и этот участник связан с маршрутом данного заявления.
        - Пользователь, выполняющий запрос, — это либо текущий ответственный по заявлению, либо подписант, привязанный к указанному участнику.
        - Подписант, связанный с участником, активен и может выполнить действие сейчас (этап и участник проходят дополнительные проверки маршрута).
        - Если в теле передан `version` — он совпадает с версией заявления на сервере.
      parameters:
        - $ref: '#/components/parameters/FormatParameter'
        - name: Impersonated-User-Id
          description: Идентификатор пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            format: uuid
        - name: Impersonated-User-Id-Type
          description: Тип идентификатора пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            enum:
              - HR_LINK_ID
              - SNILS
              - EXTERNAL_ID
        - name: Impersonated-User-Id-External-System-Type
          description: |
            Идентификатор внешней системы при аутентификации через мастер-токен.
          in: header
          schema:
            type: string
        - name: clientId
          in: path
          required: true
          description: Идентификатор клиента.
          schema:
            type: string
            format: uuid
        - name: applicationId
          in: path
          required: true
          description: Идентификатор заявления в HRlink.
          schema:
            type: string
            format: uuid
      requestBody:
        description: Тело запроса ApplicationSignBySesDTO
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ApplicationSignBySesDTO'
      responses:
        '200':
          description: Успешная операция.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    type: boolean
                  application:
                    $ref: '#/components/schemas/ApplicationWithGroupDTO'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '429':
          $ref: '#/components/responses/TooManyRequests'
  /api/v1/clients/{clientId}/applications/{applicationId}/sign/prr:
    post:
      tags:
        - applicationSigning
      summary: Подписать через ПРР
      operationId: applicationSignViaPrr
      security:
        - SessionCookieAuth: []
        - UserApiTokenAuth: []
        - MasterTokenAuth: []
      description: |
        ### Описание метода

        Запускает процесс подписания заявления через портал «Работа России».

        ### Валидации запроса

        - Клиент существует, не удалён, и к нему относится пользователь, выполняющий операцию.
        - ID заявления сотрудника соответствует формату UUID.
        - По заданному ID существует заявление сотрудника.
        - Заявление сотрудника по заданному ID относится к клиенту.
        - Заявление не имеет активного подписания, отличного от ПРР.
        - Группа заявлений не имеет активного подписания через УНЭП.
        - Файл заявления сотрудника был сконвертирован в PDF/A формат.
        - Существует настройка юрлица клиента на портале «Работа России».
        - Заявление находится в корректном состоянии для подписания с помощью ПРР текущим пользователем.
        - ID клиента соответствует формату UUID.
        - По заданному ID клиента существует клиент.
        - Пользователь, выполняющий операцию, относится к клиенту.
        - Проверяет, что ID заявления сотрудника, заданный в виде строки, соответствует формату, и возвращает типизированный ID заявления сотрудника.
        - Проверяет, что по заданному ID существует заявление сотрудника.
        - Проверяет, что заявление сотрудника относится к клиенту.
        - Проверяет, что заявление не имеет активного подписания, отличного от ПРР.
        - Проверяет, что файл заявления сотрудника был сконвертирован в PDF/A формат.
        - Проверяет, что существует настройка юрлица клиента на портале «Работа России» по заданному ID юрлица.
        - Заявление не удалено.
        - Заявление является черновиком.
        - Текущий пользователь является заявителем.
        - Участник маршрута, соответствующий подписанту, имеет корректный порядок подписания для выполнения операции.
        - Тип подписания через ПРР доступен подписанту заявления.
        - У пользователя включена возможность подписывать через ПРР.
        - ID группы заявлений соответствует формату UUID.
        - По заданному ID существует группа заявлений.
        - Группа заявлений по заданному ID относится к клиенту.
        - Проверяет, что данные полей для подстановки в шаблон корректны.
        - Проверяет, что текущий пользователь относится к заданному клиенту и возвращает пользователя клиента, если он существует.
        - Проверяет, что ID клиента, заданный в виде строки, соответствует формату, и возвращает типизированный ID клиента.
        - Проверяет существование клиента по заданному ID и возвращает клиента, если он существует.
        - Проверяет, что клиент не удален.
        - Проверяет, что заявление не удалено.
        - Проверяет, что заявление является черновиком.
        - Проверяет, что пользователь клиента является заявителем, и возвращает подписанта с типом участника `EMPLOYEE`.
        - Проверяет, что порядок подписания подписанта корректен для подписания заявления с помощью ПРР.
        - Проверяет, что у пользователя включена возможность подписывать через ПРР.
        - Проверяет, что ID группы заявлений, заданный в виде строки, соответствует формату, и возвращает типизированный ID группы заявлений.
        - Проверяет, что группа заявлений сотрудника относится к заданному клиенту.
        - Проверяет, что данные пользовательских полей для подстановки в шаблон корректны.
        - Проверяет, что поле типа справочник является корректным.
        - Проверяет, что элемент пользовательской структуры существует по его ID, и что его название соответствует указанному.
        - Проверяет, что юрлицо клиента по заданному ID существует, и что его название соответствует указанному.
        - Проверяет, что отдел клиента по заданному ID существует, и что его название соответствует указанному.
        - Проверяет, что должность сотрудника по заданному ID существует, и что её название соответствует указанному.
        - Проверяет, что элемент пользовательской структуры существует по его ID.
        - Проверяет, что юрлицо клиента существует по заданным ID и возвращает юрлицо клиента, если он существует.
        - Проверяет существование отдела клиента по заданному ID и возвращает отдел клиента, если он существует.
        - Проверяет существование должности сотрудника по заданному ID и возвращает должность сотрудника, если она существует.
      parameters:
        - $ref: '#/components/parameters/FormatParameter'
        - name: Impersonated-User-Id
          description: Идентификатор пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            format: uuid
        - name: Impersonated-User-Id-Type
          description: Тип идентификатора пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            enum:
              - HR_LINK_ID
              - SNILS
              - EXTERNAL_ID
        - name: Impersonated-User-Id-External-System-Type
          description: |
            Идентификатор внешней системы при аутентификации через мастер-токен.
          in: header
          schema:
            type: string
        - name: clientId
          in: path
          required: true
          description: Идентификатор клиента.
          schema:
            type: string
            format: uuid
        - name: applicationId
          in: path
          required: true
          description: Идентификатор заявления в HRlink.
          schema:
            type: string
            format: uuid
      responses:
        '200':
          description: Успешная операция.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    type: boolean
                  signingRequestId:
                    description: ID запроса на подписание.
                    type: string
                    format: uuid
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '429':
          $ref: '#/components/responses/TooManyRequests'
  /api/v1/clients/{clientId}/applications/{applicationId}/sign/govKey:
    post:
      tags:
        - applicationSigning
      summary: Подписать через Госключ
      operationId: applicationSignThroughGovKey
      security:
        - SessionCookieAuth: []
        - UserApiTokenAuth: []
        - MasterTokenAuth: []
      description: |
        ### Описание метода

        Подписывает заявление через Госключ.

        ### Валидации запроса

        - Проверяет, что данные полей для подстановки в шаблон корректны.
        - Проверяет, что данные пользовательских полей для подстановки в шаблон корректны.
        - Проверяет, что поле типа справочник является корректным.
        - Проверяет, что элемент пользовательской структуры существует по его ID, и что его название соответствует указанному.
        - Проверяет, что юрлицо клиента по заданному ID существует, и что его название соответствует указанному.
        - Проверяет, что отдел клиента по заданному ID существует, и что его название соответствует указанному.
        - Проверяет, что должность сотрудника по заданному ID существует, и что её название соответствует указанному.
        - Проверяет, что элемент пользовательской структуры существует по его ID.
        - Проверяет, что юрлицо клиента существует по заданным ID и возвращает юрлицо клиента, если он существует.
        - Проверяет существование отдела клиента по заданному ID и возвращает отдел клиента, если он существует.
        - Проверяет существование должности сотрудника по заданному ID и возвращает должность сотрудника, если она существует.
      parameters:
        - $ref: '#/components/parameters/FormatParameter'
        - name: Impersonated-User-Id
          description: Идентификатор пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            format: uuid
        - name: Impersonated-User-Id-Type
          description: Тип идентификатора пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            enum:
              - HR_LINK_ID
              - SNILS
              - EXTERNAL_ID
        - name: Impersonated-User-Id-External-System-Type
          description: |
            Идентификатор внешней системы при аутентификации через мастер-токен.
          in: header
          schema:
            type: string
        - name: clientId
          in: path
          required: true
          description: Идентификатор клиента.
          schema:
            type: string
            format: uuid
        - name: applicationId
          in: path
          required: true
          description: Идентификатор заявления в HRlink.
          schema:
            type: string
            format: uuid
      requestBody:
        description: Тело запроса ApplicationSignThroughGovKeyDTO
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ApplicationSignThroughGovKeyDTO'
      responses:
        '200':
          description: Успешная операция.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    type: boolean
                  application:
                    $ref: '#/components/schemas/ApplicationWithGroupDTO'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '429':
          $ref: '#/components/responses/TooManyRequests'
  /api/v1/clients/{clientId}/applications/{applicationId}/reject:
    put:
      tags:
        - applicationSigning
      summary: Отклонить заявление
      operationId: applicationReject
      security:
        - SessionCookieAuth: []
        - UserApiTokenAuth: []
        - MasterTokenAuth: []
      description: |
        ### Описание метода

        > **⚠️ Будьте осторожны!**
        >
        > Методы PUT перезаписывают запись целиком: любые непереданные поля считаются null и затирают данные в БД.
        > Поэтому при обновлении нужно указывать все поля.
         Отклоняет заявление сотрудника.

        ### Валидации запроса

        - Тело запроса задано.
        - Элементы тела запроса заданы корректно.
        - Клиент задан корректно.
        - ID заявления соответствует формату UUID.
        - ID участника этапа запущенного маршрута подписания задан и соответствует формату UUID.
        - По заданному ID существует заявление сотрудника.
        - Если в теле запроса задана версия заявления, то она равна версии на модели.
        - Заявление сотрудника относится к клиенту.
        - Заявление не удалено.
        - Дополнительные условия для заявления выполнены.
        - По заданному ID существует участник этапа маршрута подписания.
        - Участник этапа маршрута подписания относится к запущенному маршруту подписания заявления.
        - Дополнительные условия для этапа и участника запущенного маршрута выполнены.
        - Если пользователь не является текущим ответственным, то он является или может стать подписантом заявления, который относится к заданному участнику этапа маршрута подписания.
        - Подписание заявления корректно.
        - Подписант заявления, который относится к заданному участнику этапа маршрута подписания, является активным.
        - Проверяет, что элементы тела запроса заданы корректно.
        - Заявление не является черновиком.
        - Выполняет проверку дополнительных условий для этапа и участника запущенного маршрута подписания.
        - Проверяет, что пользователь клиента может выполнить целевое действие с заявлением в качестве участника маршрута подписания.
        - Проверяет, что подписант заявления, который относится к заданному участнику этапа маршрута подписания, является активным.
        - Выполняет проверку подписания заявления.
        - ID клиента соответствует формату UUID.
        - По заданному ID клиента существует клиент.
        - Пользователь, выполняющий операцию, относится к клиенту.
        - Проверяет, что ID заявления сотрудника, заданный в виде строки, соответствует формату, и возвращает типизированный ID заявления сотрудника.
        - Проверяет, что ID участника этапа запущенного маршрута подписания задан.
        - Проверяет, что по заданному ID существует заявление сотрудника.
        - Проверяет, что если ожидаемая версия задана, то она равна версии заявления.
        - Проверяет, что заявление сотрудника относится к клиенту.
        - Проверяет, что заявление не удалено.
        - Проверяет, что по заданному ID существует участник этапа запущенного маршрута подписания.
        - Проверяет, что участник этапа запущенного маршрута подписания относится к запущенному маршруту подписания заявления.
        - Проверяет, что заявление не является черновиком, то есть хотя бы один подписант принял решение.
        - Проверяет, что пользователь клиента является или может стать подписантом заявления, который относится к заданному участнику этапа маршрута подписания.
        - Проверяет, что подписант заявления может выполнить действие сейчас.
        - Проверяет, что текущий пользователь относится к заданному клиенту и возвращает пользователя клиента, если он существует.
        - Проверяет, что ID клиента, заданный в виде строки, соответствует формату, и возвращает типизированный ID клиента.
        - Проверяет существование клиента по заданному ID и возвращает клиента, если он существует.
        - Проверяет, что клиент не удален.
      parameters:
        - $ref: '#/components/parameters/FormatParameter'
        - name: Impersonated-User-Id
          description: Идентификатор пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            format: uuid
        - name: Impersonated-User-Id-Type
          description: Тип идентификатора пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            enum:
              - HR_LINK_ID
              - SNILS
              - EXTERNAL_ID
        - name: Impersonated-User-Id-External-System-Type
          description: |
            Идентификатор внешней системы при аутентификации через мастер-токен.
          in: header
          schema:
            type: string
        - name: clientId
          in: path
          required: true
          description: Идентификатор клиента.
          schema:
            type: string
            format: uuid
        - name: applicationId
          in: path
          required: true
          description: Идентификатор заявления в HRlink.
          schema:
            type: string
            format: uuid
      requestBody:
        description: Тело запроса RejectApplicationDTO
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RejectApplicationDTO'
      responses:
        '200':
          description: Успешная операция.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    type: boolean
                  application:
                    $ref: '#/components/schemas/ApplicationWithGroupDTO'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '429':
          $ref: '#/components/responses/TooManyRequests'
  /api/v1/applicationTypes:
    get:
      tags:
        - applicationTypes
      summary: Получить типы заявлений
      operationId: applicationTypeGetApplicationTypes
      security:
        - SessionCookieAuth: []
        - UserApiTokenAuth: []
        - MasterTokenAuth: []
      description: |
        ### Описание метода

        Типы заявлений бывают:
        - Заявление из файла
        - только один тип, когда основой заявления
        является файл, приложенный пользователем, подавшим заявление. Тип
        имеет флаг "templatable": false.
        - Все остальные типы
        - заявления из шаблона, когда основой заявления
        является ранее загруженный шаблон формата docx. Такие типы имеют
        флаг "templatable": true.

        ### Валидации запроса

        - Пользователь, выполняющий запрос, принадлежит перво-созданному клиенту на тенанте.
        - Проверяет, что текущий пользователь относится к заданному клиенту и возвращает пользователя клиента, если он существует.
      parameters:
        - $ref: '#/components/parameters/FormatParameter'
        - name: Impersonated-User-Id
          description: Идентификатор пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            format: uuid
        - name: Impersonated-User-Id-Type
          description: Тип идентификатора пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            enum:
              - HR_LINK_ID
              - SNILS
              - EXTERNAL_ID
        - name: Impersonated-User-Id-External-System-Type
          description: |
            Идентификатор внешней системы при аутентификации через мастер-токен.
          in: header
          schema:
            type: string
      responses:
        '200':
          description: Успешная операция.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    type: boolean
                  applicationTypes:
                    type: array
                    description: Справочник типов заявлений сотрудника.
                    items:
                      $ref: '#/components/schemas/ApplicationTypeDTO'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '429':
          $ref: '#/components/responses/TooManyRequests'
    post:
      tags:
        - applicationTypes
      summary: Создать тип заявления
      operationId: applicationTypeCreateApplicationType
      security:
        - SessionCookieAuth: []
        - UserApiTokenAuth: []
        - MasterTokenAuth: []
      description: |
        ### Описание метода

        ### Валидации запроса

        - По ID пользователя системы существует пользователь клиента в заданном тенанте.
        - Тело запроса создания данных типа заявления сотрудника задано.
        - Пользователь имеет необходимые права для выполнения операции.
        - Обязательные поля указаны корректно.
        - Заданный ID шаблона маршрута подписания не null.
        - По заданному ID шаблона маршрута подписания существует шаблон маршрута подписания.
        - Шаблон маршрута подписания является корректным для использования.
        - Список данных специфичных для конкретных юрлиц задан корректно.
        - Наименования полей, указанных в шаблоне типа заявления, заданы корректно.
        - Данные о доступе отдела клиента к типу заявления заданы корректно.
        - Если в теле запроса задан код типа документа по Минтруд, то он существует.
        - Если задан список разрешенных маршрутов подписания с привязкой к отделам сотрудника, то данные в нем заданы корректно.
        - Если подсказка к вложениям заявления задана, то ее длина не превышает максимально допустимого значения.
        - Для заданного пользовательского поля с типом `CATALOG` указаны настройки пользовательского поля.
        - Для пользовательских полей с типом `CATALOG` настройки с типом `CUSTOM_STRUCTURES_CATALOG` указаны корректно.
      parameters:
        - $ref: '#/components/parameters/FormatParameter'
        - name: Impersonated-User-Id
          description: Идентификатор пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            format: uuid
        - name: Impersonated-User-Id-Type
          description: Тип идентификатора пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            enum:
              - HR_LINK_ID
              - SNILS
              - EXTERNAL_ID
        - name: Impersonated-User-Id-External-System-Type
          description: |
            Идентификатор внешней системы при аутентификации через мастер-токен.
          in: header
          schema:
            type: string
      requestBody:
        description: Тело запроса CreateApplicationTypeDTO
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateApplicationTypeDTO'
      responses:
        '200':
          description: Успешная операция.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    type: boolean
                  applicationType:
                    $ref: '#/components/schemas/ApplicationTypeDTO'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '429':
          $ref: '#/components/responses/TooManyRequests'
  /api/v1/clients/{clientId}/applicationTypes/{applicationTypeId}:
    put:
      tags:
        - applicationTypes
      summary: Обновить тип заявления (v1)
      operationId: applicationTypeUpdateApplicationTypeByClientIdV1
      security:
        - SessionCookieAuth: []
        - UserApiTokenAuth: []
        - MasterTokenAuth: []
      description: |
        ### Описание метода

        Обновляет данные типа заявления сотрудника для указанного клиента (версия 1).
        ### Валидации запроса

        - Выполняет валидацию данных для обновления данных типа заявления сотрудника для ID клиента API версии 1.
      parameters:
        - $ref: '#/components/parameters/FormatParameter'
        - name: Impersonated-User-Id
          description: Идентификатор пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            format: uuid
        - name: Impersonated-User-Id-Type
          description: Тип идентификатора пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            enum:
              - HR_LINK_ID
              - SNILS
              - EXTERNAL_ID
        - name: Impersonated-User-Id-External-System-Type
          description: |
            Идентификатор внешней системы при аутентификации через мастер-токен.
          in: header
          schema:
            type: string
        - name: clientId
          in: path
          required: true
          description: Идентификатор клиента.
          schema:
            type: string
            format: uuid
        - name: applicationTypeId
          in: path
          required: true
          description: Идентификатор типа заявления в HRlink.
          schema:
            type: string
            format: uuid
      requestBody:
        description: Тело запроса ApplicationTypeUpdateV9DTO
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ApplicationTypeUpdateV9DTO'
      responses:
        '200':
          description: Успешная операция.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    type: boolean
                  applicationType:
                    $ref: '#/components/schemas/ApplicationTypeDTO'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '429':
          $ref: '#/components/responses/TooManyRequests'
  /api/v1/applicationTypes/{applicationTypeId}/sortOrder:
    put:
      tags:
        - applicationTypes
      summary: Изменить сортировку типов
      operationId: applicationTypeChangeSortOrder
      security:
        - SessionCookieAuth: []
        - UserApiTokenAuth: []
        - MasterTokenAuth: []
      description: |
        ### Описание метода

        > **⚠️ Будьте осторожны!**
        >
        > Методы PUT перезаписывают запись целиком: любые непереданные поля считаются null и затирают данные в БД.
        > Поэтому при обновлении нужно указывать все поля.
         Изменяет порядок сортировки типов заявлений сотрудника.

        ### Валидации запроса

        - Тело запроса передано.
        - Пользователь имеет право менять порядок сортировки на уровне пользователя клиента.
        - В указанном тенанте существует тип заявления с переданным ID.
        - Передано новое значение порядка сортировки.
        - Если указана версия, она должна совпадать с версией модели.
      parameters:
        - $ref: '#/components/parameters/FormatParameter'
        - name: Impersonated-User-Id
          description: Идентификатор пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            format: uuid
        - name: Impersonated-User-Id-Type
          description: Тип идентификатора пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            enum:
              - HR_LINK_ID
              - SNILS
              - EXTERNAL_ID
        - name: Impersonated-User-Id-External-System-Type
          description: |
            Идентификатор внешней системы при аутентификации через мастер-токен.
          in: header
          schema:
            type: string
        - name: applicationTypeId
          in: path
          required: true
          description: Идентификатор типа заявления в HRlink.
          schema:
            type: string
            format: uuid
      requestBody:
        description: Тело запроса ApplicationTypeSortOrderChangeDTO
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ApplicationTypeSortOrderChangeDTO'
      responses:
        '200':
          description: Успешная операция.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    type: boolean
                  applicationTypes:
                    type: array
                    description: Список типов заявления сотрудника.
                    items:
                      $ref: '#/components/schemas/ApplicationTypeDTO'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '429':
          $ref: '#/components/responses/TooManyRequests'
  /api/v1/clients/{clientId}/applicationTypes/{applicationTypeId}/templateFile:
    get:
      tags:
        - applicationTypes
      summary: Скачать шаблон заявления
      operationId: applicationTypeGetTemplateFileUrl
      security:
        - SessionCookieAuth: []
        - UserApiTokenAuth: []
        - MasterTokenAuth: []
      description: |
        ### Описание метода

        Результатом выполнения метода будет ответ 303 See Other, а
        HTTP-заголовок Location будет содержать URL, по которому скачивается файл шаблона заявления.

        ### Валидации запроса

        - ID типа заявления сотрудника соответствует формату UUID.
        - Клиент существует, не удалён, и к нему относится пользователь, выполняющий операцию.
        - Пользователь имеет права для получения файла шаблона типа заявления сотрудника.
        - По заданному ID существует тип заявления сотрудника.
        - Тип заявления сотрудника является шаблонным.
        - Если задан ID юрлица, то он должен соответствовать формату UUID.
        - Если задан ID юрлица, то по ID должно существовать юрлицо.
        - Если задан ID юрлица, то должен существовать файл шаблона специфичный для этого юрлица.
        - Если задан ID юрлица, то пользователь клиента должен иметь доступ к юрлицу с заданным ID.
        - Проверяет, что ID типа заявления сотрудника, заданный в виде строки, соответствует формату, и возвращает типизированный ID типа заявления сотрудника.
        - ID клиента соответствует формату UUID.
        - По заданному ID клиента существует клиент.
        - Пользователь, выполняющий операцию, относится к клиенту.
        - Проверяет, есть ли у пользователя клиента с заданным ID заданное право на уровне пользователя клиента.
        - Проверяет, что тип заявления сотрудников существует.
        - Проверяет, что тип заявления сотрудника является шаблонным.
        - ID юрлица указан.
        - Юрлицо клиента существует по заданному ID.
        - Если указан ID юрлица в системе Hr-link, то юрлицо относится к заданному клиенту.
        - Проверяет, что юрлицо клиента существует по заданным ID и возвращает юрлицо клиента, если он существует.
        - Проверяет, что для типа заявления существует файл шаблона специфичный для заданного юрлица.
        - Проверяет, что пользователь клиента имеет доступ к юрлицу с заданным ID.
        - Проверяет, что текущий пользователь относится к заданному клиенту и возвращает пользователя клиента, если он существует.
        - Проверяет, что ID клиента, заданный в виде строки, соответствует формату, и возвращает типизированный ID клиента.
        - Проверяет существование клиента по заданному ID и возвращает клиента, если он существует.
        - Проверяет, что клиент не удален.
        - Проверяет, что ID юрлица указано.
        - Проверяет, что заданное юрлицо относится к заданному клиенту.
        - Проверяет, что пользователь клиента имеет доступ ко всем юрлицам в заданном списке.
      parameters:
        - $ref: '#/components/parameters/FormatParameter'
        - name: Impersonated-User-Id
          description: Идентификатор пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            format: uuid
        - name: Impersonated-User-Id-Type
          description: Тип идентификатора пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            enum:
              - HR_LINK_ID
              - SNILS
              - EXTERNAL_ID
        - name: Impersonated-User-Id-External-System-Type
          description: |
            Идентификатор внешней системы при аутентификации через мастер-токен.
          in: header
          schema:
            type: string
        - name: clientId
          in: path
          required: true
          description: Идентификатор клиента.
          schema:
            type: string
            format: uuid
        - name: applicationTypeId
          in: path
          required: true
          description: Идентификатор типа заявления в HRlink.
          schema:
            type: string
            format: uuid
        - name: legalEntityId
          in: query
          description: ID юридического лица в системе HRlink.
          schema:
            type: string
            format: uuid
      responses:
        '200':
          description: Этот код ответа не используется, при успехе выполнения метод всегда возвращает ответ с кодом 303.
        '303':
          description: |
            HTTP-заголовок `Location` будет содержать URL, по которому скачивается файл.<br/>
            ✍️ Postman и некоторые другие API-клиенты по умолчанию следуют редиректам и сразу скачивают файл, указанный в
            HTTP-заголовке `Location`. Это поведение настраивается на стороне клиента.
          headers:
            Location:
              schema:
                type: string
              description: URL, по которому скачивается файл
              example: https://host.hr-link.ru/api/v1/files?token=<<одноразовый_токен>>
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '429':
          $ref: '#/components/responses/TooManyRequests'
  /api/v1/applicationTypes/{applicationTypeId}/fields/calculate:
    post:
      tags:
        - applicationTypes
      summary: Автовычисляемые значения полей
      operationId: applicationTypeGetValuesForAutoCalculatedTemplateFields
      security:
        - SessionCookieAuth: []
        - UserApiTokenAuth: []
        - MasterTokenAuth: []
      description: |
        ### Описание метода

        Возвращает рассчитанные значения или информацию об ошибке расчёта для автовычисляемых полей шаблона типа заявления, указанных в теле запроса.
        Если для некоторого автовычисляемого поля в запросе не указаны все необходимые пользовательские поля (из списка `userFields`) или дерево конфигурации автовычисляемого поля имеет некорректную структуру, то для этого поля вместо рассчитанного значения возвращается информация об ошибке. Для остальных полей возвращаются их рассчитанные значения.

        ### Валидации запроса

        - Тело запроса задано.
        - По ID пользователя системы существует пользователь клиента в заданном тенанте.
        - Существует шаблонный тип заявления с указанным ID.
        - Указан корректный список с ID автовычисляемых полей.
        - Для указанных автовычисляемых полей существуют конфигурации автовычисляемых полей.
        - Указан корректный список с данными пользовательских полей заявления.
        - Указан ID юрлица или ID юрлица во внешней системе.
        - По указанному ID юрлица существует юрлицо.
        - Если не указан ID юрлица, то по указанному ID юрлица во внешней системе существует юрлицо.
        - Указан ID сотрудника или ID сотрудника во внешней системе.
        - По указанному ID сотрудника заявителя или по внешнему ID сотрудника заявителя и юрлицу существует сотрудник.
        - Указана дата группы заявлений сотрудника заявителя.
      parameters:
        - $ref: '#/components/parameters/FormatParameter'
        - name: Impersonated-User-Id
          description: Идентификатор пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            format: uuid
        - name: Impersonated-User-Id-Type
          description: Тип идентификатора пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            enum:
              - HR_LINK_ID
              - SNILS
              - EXTERNAL_ID
        - name: Impersonated-User-Id-External-System-Type
          description: |
            Идентификатор внешней системы при аутентификации через мастер-токен.
          in: header
          schema:
            type: string
        - name: applicationTypeId
          in: path
          required: true
          description: Идентификатор типа заявления в HRlink.
          schema:
            type: string
            format: uuid
      requestBody:
        description: Тело запроса GetValuesForAutoCalculatedTemplateFieldsDTO
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/GetValuesForAutoCalculatedTemplateFieldsDTO'
      responses:
        '200':
          description: Успешная операция.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    type: boolean
                  calculationResults:
                    type: array
                    description: Рассчитанные значения.
                    items:
                      $ref: '#/components/schemas/AutoCalculatedTemplateFieldCalculationResultDTO'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '429':
          $ref: '#/components/responses/TooManyRequests'
  /api/v1/applicationTypeFields/system:
    get:
      tags:
        - applicationTypes
      summary: Системные поля шаблонов
      operationId: applicationTypeFieldGetApplicationTypeSystemFields
      security:
        - SessionCookieAuth: []
        - UserApiTokenAuth: []
        - MasterTokenAuth: []
      description: |
        ### Описание метода

        Возвращает справочник системных полей для шаблонов заявлений сотрудника.

        ### Валидации запроса

        Дополнительных валидаций запроса нет.
      parameters:
        - $ref: '#/components/parameters/FormatParameter'
        - name: Impersonated-User-Id
          description: Идентификатор пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            format: uuid
        - name: Impersonated-User-Id-Type
          description: Тип идентификатора пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            enum:
              - HR_LINK_ID
              - SNILS
              - EXTERNAL_ID
        - name: Impersonated-User-Id-External-System-Type
          description: |
            Идентификатор внешней системы при аутентификации через мастер-токен.
          in: header
          schema:
            type: string
      responses:
        '200':
          description: Успешная операция.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    type: boolean
                  fields:
                    type: array
                    description: Справочник системных полей для шаблонов заявлений сотрудника.
                    items:
                      $ref: '#/components/schemas/ApplicationTypeTemplateFieldDTO'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '429':
          $ref: '#/components/responses/TooManyRequests'
  /api/v1/clients/{clientId}/attorneys:
    post:
      tags:
        - attorneys
      summary: Создать МЧД
      operationId: attorneyCreate
      security:
        - SessionCookieAuth: []
        - UserApiTokenAuth: []
        - MasterTokenAuth: []
      description: |
        ### Описание метода

        ### Валидации запроса

        - Клиент существует, не удалён, и к нему относится пользователь, выполняющий операцию.
        - Тело запроса задано.
        - ID юрлица задан корректно.
        - Если задан ID юрлица, то оно относится к заданному клиенту.
        - Пользователь клиента имеет право `ATTORNEYS_CREATE` на уровне пользователя клиента или на уровне сотрудника в указанном юрлице.
        - Данные указанного юрлица корректны для создания МЧД.
        - У юрлица задан руководитель.
        - Данные руководителя указанного юрлица корректны для создания МЧД.
        - Представитель существует по заданному в запросе ID или в данном клиенте по ID во внешней системе.
        - Если задан ID представителя, то он относится к заданному клиенту.
        - Данные указанного представителя корректны для создания МЧД.
        - Полномочия доверенности заданы корректно.
        - Сроки действия доверенности заданы корректно.
        - ID клиента соответствует формату UUID.
        - По заданному ID клиента существует клиент.
        - Пользователь, выполняющий операцию, относится к клиенту.
        - ID юрлица указан.
        - Юрлицо клиента существует по заданному ID.
        - Если указан ID юрлица в системе Hr-link, то юрлицо относится к заданному клиенту.
        - Проверяет, есть ли у пользователя клиента заданное право на уровне пользователя клиента по заданным данным аутентификации.
        - Проверяет, что МЧД с заданным ID во внешней системе не существует для заданного клиента.
        - У юрлица задан ОГРН.
        - Если юрлицо не является ИП, то задан КПП.
        - Если юрлицо не является ИП, то задан код региона.
        - Если юрлицо не является ИП, то его название не превышает максимально допустимое количество символов.
        - Проверяет, что у юрлица есть руководитель.
        - Должность руководителя не превышает максимально допустимое количество символов.
        - Название документа, подтверждающего полномочия руководителя юрлица, не превышает максимально допустимое количество символов.
        - У руководителя есть СНИЛС.
        - В личных данных руководителя юрлица задана фамилия.
        - В личных данных руководителя юрлица задано имя.
        - Фамилия руководителя юрлица не превышает максимально допустимое количество символов.
        - Имя руководителя юрлица не превышает максимально допустимое количество символов.
        - Отчество руководителя юрлица не превышает максимально допустимое количество символов.
        - Если юрлицо является ИП, то ИНН руководителя юрлица задан и совпадает с ИНН юрлица.
        - Полномочия заданы.
        - Полномочия заданы в текстовом виде.
        - Полномочия доверенности в текстовом виде не превышают максимально допустимую длину.
        - Дата выдачи МЧД задана.
        - Дата окончания действия МЧД задана.
        - Дата выдачи МЧД не раньше сегодняшнего дня.
        - Дата выдачи МЧД не позже даты окончания действия МЧД.
        - Проверяет, что текущий пользователь относится к заданному клиенту и возвращает пользователя клиента, если он существует.
        - Проверяет, что ID клиента, заданный в виде строки, соответствует формату, и возвращает типизированный ID клиента.
        - Проверяет существование клиента по заданному ID и возвращает клиента, если он существует.
        - Проверяет, что клиент не удален.
        - Проверяет, что ID юрлица указано.
        - Проверяет, что юрлицо клиента существует по заданным ID и возвращает юрлицо клиента, если он существует.
        - Проверяет, что заданное юрлицо относится к заданному клиенту.
        - Проверяет, что ОГРН юрлица указано.
        - Проверяет, что КПП юрлица указано.
        - Проверяет, что регион юрлица указан.
        - Проверяет наличие фамилии в данных о человеке.
        - Проверяет наличие имени в данных о человеке.
        - Проверяет, что ИНН руководителя юрлица задан и совпадает с ИНН юрлица.
        - Проверка должна вызываться, когда юрлицо является ИП.
        - Проверяет, что заданный пользователь клиента принадлежит клиенту с заданным ID.
        - В личных данных доверителя задана фамилия.
        - В личных данных доверителя задано имя.
        - Фамилия доверителя не превышает максимально допустимое количество символов.
        - Имя доверителя не превышает максимально допустимое количество символов.
        - В личных данных доверителя задана дата рождения.
        - В личных данных доверителя задан СНИЛС.
        - В личных данных доверителя задан ИНН.
        - В личных данных доверителя задан паспорт.
        - Номер паспорта корректен.
        - У паспорта есть данные.
        - В данных паспорта корректно задано гражданство.
        - Если паспорт РФ, то задан код подразделения.
        - Если паспорт РФ, то заданы данные о том, кем выдан паспорт.
        - Если паспорт РФ, то корректно задан код выдавшего подразделения.
        - Если паспорт не РФ, то его номер не превышает допустимой длины.
        - Допустимая длина данных, кто выдал паспорт, не превышает допустимой длины.
        - Проверяет наличие даты рождения в данных о человеке.
        - Проверяет наличие СНИЛС в личных документах.
        - Проверяет наличие ИНН в личных документах.
        - Проверяет наличие паспорта в личных документах.
        - Проверяет, что номер документа человека задан корректно.
        - Проверяет, что в данных паспорта есть дата выдачи.
        - Выполняет валидацию кода страны для гражданства.
        - Проверяет, что задано, кем выдан паспорт.
        - Выполняет валидацию кода подразделения, выдавшего паспорт.
      parameters:
        - $ref: '#/components/parameters/FormatParameter'
        - name: Impersonated-User-Id
          description: Идентификатор пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            format: uuid
        - name: Impersonated-User-Id-Type
          description: Тип идентификатора пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            enum:
              - HR_LINK_ID
              - SNILS
              - EXTERNAL_ID
        - name: Impersonated-User-Id-External-System-Type
          description: |
            Идентификатор внешней системы при аутентификации через мастер-токен.
          in: header
          schema:
            type: string
        - name: clientId
          in: path
          required: true
          description: Идентификатор клиента.
          schema:
            type: string
            format: uuid
      requestBody:
        description: Тело запроса CreateAttorneyDTO
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateAttorneyDTO'
      responses:
        '200':
          description: Успешная операция.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    type: boolean
                  attorney:
                    $ref: '#/components/schemas/AttorneyDTO'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '429':
          $ref: '#/components/responses/TooManyRequests'
  /api/v1/clients/{clientId}/attorneys/import:
    post:
      tags:
        - attorneys
      summary: Импортировать МЧД
      operationId: attorneyImportAttorney
      security:
        - SessionCookieAuth: []
        - UserApiTokenAuth: []
        - MasterTokenAuth: []
      description: |
        ### Описание метода

        Импортирует МЧД.

        ### Валидации запроса

        - Клиент существует, не удалён, и к нему относится пользователь, выполняющий операцию.
        - Пользователь клиента имеет право `ATTORNEYS_IMPORT` на уровне пользователя клиента или право `ATTORNEYS_IMPORT` на уровне сотрудника в любом юрлице.
        - ID xml-файла соответствует формату UUID.
        - XML-файл с заданным ID существует.
        - Файл МЧД с заданным ID имеет расширение .xml.
        - ID файла с подписью соответствует формату UUID.
        - Файл с подписью с заданным ID существует.
        - Файл с подписью с заданным ID является валидным файлом подписи.
        - Файл подписи соответствует файлу МЧД.
        - В карточке юрлица заполнено лицо, действующее без доверенности.
        - Длина текстовых полномочий не более 10,000 символов.
        - Проверяет, что у юрлица заполнено лицо действующее без доверенности.
        - Проверяет, что длинна текстовых полномочий не превышает максимальную допустимую.
        - ID клиента соответствует формату UUID.
        - По заданному ID клиента существует клиент.
        - Пользователь, выполняющий операцию, относится к клиенту.
        - Проверяет, есть ли у пользователя клиента с заданным ID заданное право и возвращает кэш наличия прав у пользователя клиента.
        - Проверяет, что файл с заданным ID существует.
        - Проверяет, что файл является файлом с одним из указанных расширений.
        - Проверяет, что подпись корректна и возвращает её данные.
        - Проверяет корректность подписи УКЭП соответствующему файлу МЧД.
        - Если в настройке тенанта выключен флаг проверки подписи УКЭП и файла, тогда пропускаем данную валидацию.
        - Проверяет, что текущий пользователь относится к заданному клиенту и возвращает пользователя клиента, если он существует.
        - Проверяет, что ID клиента, заданный в виде строки, соответствует формату, и возвращает типизированный ID клиента.
        - Проверяет существование клиента по заданному ID и возвращает клиента, если он существует.
        - Проверяет, что клиент не удален.
        - Проверяет, что подписи УКЭП и соответствующие файлы корректны.
        - Возвращаются только результаты проверки, которые завершились неуспешно.
        - Если все подписи УКЭП и файлы прошли проверку, тогда возвращается пустой список.
        - В случае успешной проверки всех подписей УКЭП и соответствующих файлов возвращается пустой список.
      parameters:
        - $ref: '#/components/parameters/FormatParameter'
        - name: Impersonated-User-Id
          description: Идентификатор пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            format: uuid
        - name: Impersonated-User-Id-Type
          description: Тип идентификатора пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            enum:
              - HR_LINK_ID
              - SNILS
              - EXTERNAL_ID
        - name: Impersonated-User-Id-External-System-Type
          description: |
            Идентификатор внешней системы при аутентификации через мастер-токен.
          in: header
          schema:
            type: string
        - name: clientId
          in: path
          required: true
          description: Идентификатор клиента.
          schema:
            type: string
            format: uuid
      requestBody:
        description: Тело запроса ImportAttorneyDTO
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ImportAttorneyDTO'
      responses:
        '200':
          description: Успешная операция.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    type: boolean
                  attorney:
                    $ref: '#/components/schemas/AttorneyDTO'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '429':
          $ref: '#/components/responses/TooManyRequests'
  /api/v1/clients/{clientId}/attorneys/sendToSigning:
    put:
      tags:
        - attorneysSigning
      summary: Массовая отправка на подписание
      operationId: attorneySendToSigning
      security:
        - SessionCookieAuth: []
        - UserApiTokenAuth: []
        - MasterTokenAuth: []
      description: |
        ### Описание метода

        > **⚠️ Будьте осторожны!**
        >
        > Методы PUT перезаписывают запись целиком: любые непереданные поля считаются null и затирают данные в БД.
        > Поэтому при обновлении нужно указывать все поля.
         Выполняет массовую отправку МЧД на подписание.

        ### Валидации запроса

        - Тело запроса задано.
        - Список данных МЧД задан.
        - Количество отправляемых на подписание МЧД не превышает лимит.
        - В списке МЧД нет пустых элементов.
        - Клиент существует, не удалён, и к нему относится пользователь, выполняющий операцию.
        - Данные ID МЧД заданы корректно.
        - Каждый МЧД существует по заданному ID.
        - Каждый МЧД относится к заданному клиенту.
        - Версия каждого МЧД задана корректно.
        - Среди отправляемых на подписание МЧД нет подписанных.
        - Среди отправляемых на подписание МЧД нет отправленных на подписание.
        - Среди отправляемых на подписание МЧД нет удалённых.
        - Все участники отправляемых на подписание МЧД являются подтвержденными пользователями.
        - Пользователь клиента имеет право на отправку МЧД на подписание.
        - Проверяет, что данные МЧД заданы.
        - Проверяет, что количество отправляемых на подписание МЧД не превышает допустимого значения.
        - ID клиента соответствует формату UUID.
        - По заданному ID клиента существует клиент.
        - Пользователь, выполняющий операцию, относится к клиенту.
        - Проверяет, что для МЧД задан или ID в системе HR-Link, или ID во внешней системе.
        - Проверяет, что по заданным ID в системе HR-Link или ID во внешней системе существует МЧД.
        - Проверяет, что МЧД принадлежит клиенту с заданным ID.
        - Проверяет, что указана корректная версия данных МЧД.
        - Проверяет, что все участники списка МЧД являются подтвержденными пользователями.
        - Проверяет, что у пользователя клиента есть доступ на отправку на подписание всех МЧД.
        - Проверяет, что текущий пользователь относится к заданному клиенту и возвращает пользователя клиента, если он существует.
        - Проверяет, что ID клиента, заданный в виде строки, соответствует формату, и возвращает типизированный ID клиента.
        - Проверяет существование клиента по заданному ID и возвращает клиента, если он существует.
        - Проверяет, что клиент не удален.
        - Проверяет, что МЧД принадлежит клиенту с заданным ID.
        - Проверяет, что участник МЧД является подтвержденным пользователем.
      parameters:
        - $ref: '#/components/parameters/FormatParameter'
        - name: Impersonated-User-Id
          description: Идентификатор пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            format: uuid
        - name: Impersonated-User-Id-Type
          description: Тип идентификатора пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            enum:
              - HR_LINK_ID
              - SNILS
              - EXTERNAL_ID
        - name: Impersonated-User-Id-External-System-Type
          description: |
            Идентификатор внешней системы при аутентификации через мастер-токен.
          in: header
          schema:
            type: string
        - name: clientId
          in: path
          required: true
          description: Идентификатор клиента.
          schema:
            type: string
            format: uuid
      requestBody:
        description: Тело запроса AttorneysSendToSigningDTO
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AttorneysSendToSigningDTO'
      responses:
        '200':
          description: Успешная операция.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    type: boolean
                  attorneys:
                    type: array
                    description: Список данных МЧД.
                    items:
                      $ref: '#/components/schemas/AttorneyDTO'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '429':
          $ref: '#/components/responses/TooManyRequests'
  /api/v1/clients/{clientId}/attorneysByExternalId/{attorneyExternalId}:
    get:
      tags:
        - attorneys
      summary: Получить МЧД по внешнему ID
      operationId: attorneyGetByExternalId
      security:
        - SessionCookieAuth: []
        - UserApiTokenAuth: []
        - MasterTokenAuth: []
      description: |
        ### Описание метода

        Возвращает данные МЧД по ID МЧД во внешней системе.

        ### Валидации запроса

        - Клиент существует, не удалён, и к нему относится пользователь, выполняющий операцию.
        - ID МЧД задан корректно.
        - Пользователь клиента имеет право на получение заданной МЧД.
        - Проверяет, что ID МЧД задан корректно и возвращает МЧД в случае, если он существует.
        - ID клиента соответствует формату UUID.
        - По заданному ID клиента существует клиент.
        - Пользователь, выполняющий операцию, относится к клиенту.
        - Имеет право `ATTORNEYS` на уровне пользователя клиента.
        - Имеет право `ATTORNEYS` как сотрудник юрлица, к которому относится МЧД.
        - Является представителем заданной МЧД.
        - Является руководителем юрлица заданной МЧД.
        - Проверяет, что текущий пользователь относится к заданному клиенту и возвращает пользователя клиента, если он существует.
        - Проверяет, что ID клиента, заданный в виде строки, соответствует формату, и возвращает типизированный ID клиента.
        - Проверяет существование клиента по заданному ID и возвращает клиента, если он существует.
        - Проверяет, что клиент не удален.
      parameters:
        - $ref: '#/components/parameters/FormatParameter'
        - name: Impersonated-User-Id
          description: Идентификатор пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            format: uuid
        - name: Impersonated-User-Id-Type
          description: Тип идентификатора пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            enum:
              - HR_LINK_ID
              - SNILS
              - EXTERNAL_ID
        - name: Impersonated-User-Id-External-System-Type
          description: |
            Идентификатор внешней системы при аутентификации через мастер-токен.
          in: header
          schema:
            type: string
        - name: clientId
          in: path
          required: true
          description: Идентификатор клиента.
          schema:
            type: string
            format: uuid
        - name: attorneyExternalId
          in: path
          required: true
          description: Идентификатор доверенности во внешней системе.
          schema:
            type: string
      responses:
        '200':
          description: Успешная операция.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    type: boolean
                  attorney:
                    $ref: '#/components/schemas/AttorneyDTO'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '429':
          $ref: '#/components/responses/TooManyRequests'
    delete:
      tags:
        - attorneys
      summary: Удалить МЧД по внешнему ID
      operationId: attorneyDeleteByExternalId
      security:
        - SessionCookieAuth: []
        - UserApiTokenAuth: []
        - MasterTokenAuth: []
      description: |
        ### Описание метода

        Удаляет МЧД с возможностью восстановления по ID во внешней системе.

        ### Валидации запроса

        - Тело запроса задано.
        - Клиент существует, не удалён, и к нему относится пользователь, выполняющий операцию.
        - ID доверенности должен соответствовать формату UUID.
        - Доверенность с заданным ID должна существовать.
        - Доверенность должна принадлежать заданному клиенту.
        - Версия МЧД задана корректно.
        - Пользователь клиента имеет право на удаление.
        - Доверенность не удалена ранее.
        - Проверяет, что ID МЧД задан корректно и возвращает МЧД в случае, если он существует и МЧД не была удалена ранее.
        - ID клиента соответствует формату UUID.
        - По заданному ID клиента существует клиент.
        - Пользователь, выполняющий операцию, относится к клиенту.
        - Проверяет, что указана корректная версия данных МЧД.
        - Проверяет, есть ли у пользователя клиента с заданным ID заданное право и возвращает кэш наличия прав у пользователя клиента.
        - Проверяет, что МЧД не удалена.
        - Проверяет, что текущий пользователь относится к заданному клиенту и возвращает пользователя клиента, если он существует.
        - Проверяет, что ID клиента, заданный в виде строки, соответствует формату, и возвращает типизированный ID клиента.
        - Проверяет существование клиента по заданному ID и возвращает клиента, если он существует.
        - Проверяет, что клиент не удален.
      parameters:
        - $ref: '#/components/parameters/FormatParameter'
        - name: Impersonated-User-Id
          description: Идентификатор пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            format: uuid
        - name: Impersonated-User-Id-Type
          description: Тип идентификатора пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            enum:
              - HR_LINK_ID
              - SNILS
              - EXTERNAL_ID
        - name: Impersonated-User-Id-External-System-Type
          description: |
            Идентификатор внешней системы при аутентификации через мастер-токен.
          in: header
          schema:
            type: string
        - name: clientId
          in: path
          required: true
          description: Идентификатор клиента.
          schema:
            type: string
            format: uuid
        - name: attorneyExternalId
          in: path
          required: true
          description: Идентификатор доверенности во внешней системе.
          schema:
            type: string
      requestBody:
        description: Тело запроса DeleteOrRestoreAttorneyDTO
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DeleteOrRestoreAttorneyDTO'
      responses:
        '200':
          description: Успешная операция.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    type: boolean
                  attorney:
                    $ref: '#/components/schemas/AttorneyDTO'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '429':
          $ref: '#/components/responses/TooManyRequests'
    put:
      tags:
        - attorneys
      summary: Обновить МЧД по внешнему ID
      operationId: attorneyUpdateAttorneyByExternalId
      security:
        - SessionCookieAuth: []
        - UserApiTokenAuth: []
        - MasterTokenAuth: []
      description: |
        ### Описание метода

        > **⚠️ Будьте осторожны!**
        >
        > Методы PUT перезаписывают запись целиком: любые непереданные поля считаются null и затирают данные в БД.
        > Поэтому при обновлении нужно указывать все поля.
         Обновляет МЧД по ID во внешней системе.

        ### Валидации запроса

        - Тело запроса задано.
        - Клиент существует, не удалён, и к нему относится пользователь, выполняющий операцию.
        - МЧД задана корректно.
        - Если задана версия МЧД, то она корректна.
        - МЧД находится в статусе черновика и не удалена.
        - ID юрлица задан корректно.
        - Если задан ID юрлица, то оно относится к заданному клиенту.
        - Пользователь клиента имеет право `ATTORNEYS_UPDATE` на уровне пользователя клиента или на уровне сотрудника в указанном юрлице.
        - Внешний ID МЧД задан корректно для редактирования.
        - Данные указанного юрлица корректны для создания МЧД.
        - Данные руководителя юрлица заданы корректно.
        - Данные представителя МЧД заданы корректно.
        - Полномочия доверенности заданы корректно.
        - Сроки действия доверенности заданы корректно.
        - ID МЧД задана корректно.
        - МЧД должна существовать по заданному ID.
        - МЧД должна принадлежать заданному клиенту.
        - ID клиента соответствует формату UUID.
        - По заданному ID клиента существует клиент.
        - Пользователь, выполняющий операцию, относится к клиенту.
        - Проверяет, что указана корректная версия данных МЧД.
        - МЧД находится в статусе черновика.
        - МЧД не удалена.
        - ID юрлица указан.
        - Юрлицо клиента существует по заданному ID.
        - Если указан ID юрлица в системе Hr-link, то юрлицо относится к заданному клиенту.
        - Проверяет, есть ли у пользователя клиента заданное право на уровне пользователя клиента по заданным данным аутентификации.
        - Заданный внешний ID МЧД равен внешнему ID редактируемой МЧД.
        - В заданном клиенте не существует МЧД с заданным внешним ID.
        - У юрлица задан ОГРН.
        - Если юрлицо не является ИП, то задан КПП.
        - Если юрлицо не является ИП, то задан код региона.
        - Если юрлицо не является ИП, то его название не превышает максимально допустимое количество символов.
        - У юрлица задан руководитель.
        - Данные руководителя указанного юрлица корректны для создания МЧД.
        - Представитель существует по заданному в запросе ID или в данном клиенте по ID во внешней системе.
        - Если задан ID представителя, то он относится к заданному клиенту.
        - Данные указанного представителя корректны для создания МЧД.
        - Полномочия заданы.
        - Полномочия заданы в текстовом виде.
        - Полномочия доверенности в текстовом виде не превышают максимально допустимую длину.
        - Дата выдачи МЧД задана.
        - Дата окончания действия МЧД задана.
        - Дата выдачи МЧД не раньше дня выдачи МЧД до редактирования.
        - Дата выдачи МЧД не позже даты окончания действия МЧД.
        - Проверяет, что текущий пользователь относится к заданному клиенту и возвращает пользователя клиента, если он существует.
        - Проверяет, что ID клиента, заданный в виде строки, соответствует формату, и возвращает типизированный ID клиента.
        - Проверяет существование клиента по заданному ID и возвращает клиента, если он существует.
        - Проверяет, что клиент не удален.
        - Проверяет, что МЧД находится в статусе черновика.
        - Проверяет, что МЧД не удалена.
        - Проверяет, что ID юрлица указано.
        - Проверяет, что юрлицо клиента существует по заданным ID и возвращает юрлицо клиента, если он существует.
        - Проверяет, что заданное юрлицо относится к заданному клиенту.
        - Проверяет, что ОГРН юрлица указано.
        - Проверяет, что КПП юрлица указано.
        - Проверяет, что регион юрлица указан.
        - Проверяет, что у юрлица есть руководитель.
        - Должность руководителя не превышает максимально допустимое количество символов.
        - Название документа, подтверждающего полномочия руководителя юрлица, не превышает максимально допустимое количество символов.
        - У руководителя есть СНИЛС.
        - В личных данных руководителя юрлица задана фамилия.
        - В личных данных руководителя юрлица задано имя.
        - Фамилия руководителя юрлица не превышает максимально допустимое количество символов.
        - Имя руководителя юрлица не превышает максимально допустимое количество символов.
        - Отчество руководителя юрлица не превышает максимально допустимое количество символов.
        - Если юрлицо является ИП, то ИНН руководителя юрлица задан и совпадает с ИНН юрлица.
        - Проверяет, что заданный пользователь клиента принадлежит клиенту с заданным ID.
        - В личных данных доверителя задана фамилия.
        - В личных данных доверителя задано имя.
        - Фамилия доверителя не превышает максимально допустимое количество символов.
        - Имя доверителя не превышает максимально допустимое количество символов.
        - В личных данных доверителя задана дата рождения.
        - В личных данных доверителя задан СНИЛС.
        - В личных данных доверителя задан ИНН.
        - В личных данных доверителя задан паспорт.
        - Номер паспорта корректен.
        - У паспорта есть данные.
        - В данных паспорта корректно задано гражданство.
        - Если паспорт РФ, то задан код подразделения.
        - Если паспорт РФ, то заданы данные о том, кем выдан паспорт.
        - Если паспорт РФ, то корректно задан код выдавшего подразделения.
        - Если паспорт не РФ, то его номер не превышает допустимой длины.
        - Допустимая длина данных, кто выдал паспорт, не превышает допустимой длины.
        - Проверяет наличие фамилии в данных о человеке.
        - Проверяет наличие имени в данных о человеке.
        - Проверяет, что ИНН руководителя юрлица задан и совпадает с ИНН юрлица.
        - Проверка должна вызываться, когда юрлицо является ИП.
        - Проверяет наличие даты рождения в данных о человеке.
        - Проверяет наличие СНИЛС в личных документах.
        - Проверяет наличие ИНН в личных документах.
        - Проверяет наличие паспорта в личных документах.
        - Проверяет, что номер документа человека задан корректно.
        - Проверяет, что в данных паспорта есть дата выдачи.
        - Выполняет валидацию кода страны для гражданства.
        - Проверяет, что задано, кем выдан паспорт.
        - Выполняет валидацию кода подразделения, выдавшего паспорт.
      parameters:
        - $ref: '#/components/parameters/FormatParameter'
        - name: Impersonated-User-Id
          description: Идентификатор пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            format: uuid
        - name: Impersonated-User-Id-Type
          description: Тип идентификатора пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            enum:
              - HR_LINK_ID
              - SNILS
              - EXTERNAL_ID
        - name: Impersonated-User-Id-External-System-Type
          description: |
            Идентификатор внешней системы при аутентификации через мастер-токен.
          in: header
          schema:
            type: string
        - name: clientId
          in: path
          required: true
          description: Идентификатор клиента.
          schema:
            type: string
            format: uuid
        - name: attorneyExternalId
          in: path
          required: true
          description: Идентификатор доверенности во внешней системе.
          schema:
            type: string
      requestBody:
        description: Тело запроса CreateAttorneyDTO
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateAttorneyDTO'
      responses:
        '200':
          description: Успешная операция.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    type: boolean
                  attorney:
                    $ref: '#/components/schemas/AttorneyDTO'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '429':
          $ref: '#/components/responses/TooManyRequests'
  /api/v1/clients/{clientId}/attorneysByExternalId/{attorneyExternalId}/archive:
    get:
      tags:
        - attorneys
      summary: Скачать архив МЧД по внешнему ID
      operationId: attorneyGetArchiveFileByExternalId
      security:
        - SessionCookieAuth: []
        - UserApiTokenAuth: []
        - MasterTokenAuth: []
      description: |
        ### Описание метода

        Возвращает редирект для скачивания файла архива МЧД по ID МЧД во внешней системе.

        ### Валидации запроса

        - Клиент существует, не удалён, и к нему относится пользователь, выполняющий операцию.
        - ID МЧД задан корректно.
        - Пользователь клиента имеет право на получение заданного МЧД.
        - МЧД отправлена на подпись.
        - МЧД подписана.
        - У МЧД есть файл архива.
        - МЧД не удалена ранее или пользователь обладает правами администратора.
        - Проверяет, что ID МЧД задан корректно и возвращает МЧД в случае, если она существует.
        - ID клиента соответствует формату UUID.
        - По заданному ID клиента существует клиент.
        - Пользователь, выполняющий операцию, относится к клиенту.
        - Имеет право `ATTORNEYS` на уровне пользователя клиента.
        - Имеет право `ATTORNEYS` как сотрудник юрлица, к которому относится МЧД.
        - Является представителем заданной МЧД.
        - Является руководителем юрлица заданной МЧД.
        - Проверяет, что МЧД отправлена на подпись.
        - Проверяет, что МЧД подписана.
        - Проверяет, что МЧД имеет файл архива.
        - Проверяет, что пользователь может запрашивать удаленную МЧД.
        - Проверяет, что текущий пользователь относится к заданному клиенту и возвращает пользователя клиента, если он существует.
        - Проверяет, что ID клиента, заданный в виде строки, соответствует формату, и возвращает типизированный ID клиента.
        - Проверяет существование клиента по заданному ID и возвращает клиента, если он существует.
        - Проверяет, что клиент не удален.
      parameters:
        - $ref: '#/components/parameters/FormatParameter'
        - name: Impersonated-User-Id
          description: Идентификатор пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            format: uuid
        - name: Impersonated-User-Id-Type
          description: Тип идентификатора пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            enum:
              - HR_LINK_ID
              - SNILS
              - EXTERNAL_ID
        - name: Impersonated-User-Id-External-System-Type
          description: |
            Идентификатор внешней системы при аутентификации через мастер-токен.
          in: header
          schema:
            type: string
        - name: clientId
          in: path
          required: true
          description: Идентификатор клиента.
          schema:
            type: string
            format: uuid
        - name: attorneyExternalId
          in: path
          required: true
          description: Идентификатор доверенности во внешней системе.
          schema:
            type: string
      responses:
        '200':
          description: Этот код ответа не используется, при успехе выполнения метод всегда возвращает ответ с кодом 303.
        '303':
          description: |
            HTTP-заголовок `Location` будет содержать URL, по которому скачивается файл.<br/>
            ✍️ Postman и некоторые другие API-клиенты по умолчанию следуют редиректам и сразу скачивают файл, указанный в
            HTTP-заголовке `Location`. Это поведение настраивается на стороне клиента.
          headers:
            Location:
              schema:
                type: string
              description: URL, по которому скачивается файл
              example: https://host.hr-link.ru/api/v1/files?token=<<одноразовый_токен>>
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '429':
          $ref: '#/components/responses/TooManyRequests'
  /api/v1/clients/{clientId}/attorneysByExternalId/{attorneyExternalId}/restore:
    put:
      tags:
        - attorneys
      summary: Восстановить МЧД по внешнему ID
      operationId: attorneyRestoreByExternalId
      security:
        - SessionCookieAuth: []
        - UserApiTokenAuth: []
        - MasterTokenAuth: []
      description: |
        ### Описание метода

        > **⚠️ Будьте осторожны!**
        >
        > Методы PUT перезаписывают запись целиком: любые непереданные поля считаются null и затирают данные в БД.
        > Поэтому при обновлении нужно указывать все поля.
         Восстанавливает МЧД после удаления по ID во внешней системе.

        ### Валидации запроса

        - Тело запроса задано.
        - Клиент существует, не удалён, и к нему относится пользователь, выполняющий операцию.
        - ID доверенности должен соответствовать формату UUID.
        - Доверенность с заданным ID должна существовать.
        - Доверенность должна принадлежать заданному клиенту.
        - Версия МЧД задана корректно.
        - Пользователь клиента имеет право на удаление.
        - Доверенность удалена ранее.
        - Проверяет, что ID МЧД задан корректно и возвращает МЧД в случае, если он существует и МЧД была удалена ранее.
        - ID клиента соответствует формату UUID.
        - По заданному ID клиента существует клиент.
        - Пользователь, выполняющий операцию, относится к клиенту.
        - Проверяет, что указана корректная версия данных МЧД.
        - Проверяет, есть ли у пользователя клиента с заданным ID заданное право и возвращает кэш наличия прав у пользователя клиента.
        - Проверяет, что МЧД удалена.
        - Проверяет, что текущий пользователь относится к заданному клиенту и возвращает пользователя клиента, если он существует.
        - Проверяет, что ID клиента, заданный в виде строки, соответствует формату, и возвращает типизированный ID клиента.
        - Проверяет существование клиента по заданному ID и возвращает клиента, если он существует.
        - Проверяет, что клиент не удален.
      parameters:
        - $ref: '#/components/parameters/FormatParameter'
        - name: Impersonated-User-Id
          description: Идентификатор пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            format: uuid
        - name: Impersonated-User-Id-Type
          description: Тип идентификатора пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            enum:
              - HR_LINK_ID
              - SNILS
              - EXTERNAL_ID
        - name: Impersonated-User-Id-External-System-Type
          description: |
            Идентификатор внешней системы при аутентификации через мастер-токен.
          in: header
          schema:
            type: string
        - name: clientId
          in: path
          required: true
          description: Идентификатор клиента.
          schema:
            type: string
            format: uuid
        - name: attorneyExternalId
          in: path
          required: true
          description: Идентификатор доверенности во внешней системе.
          schema:
            type: string
      requestBody:
        description: Тело запроса DeleteOrRestoreAttorneyDTO
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DeleteOrRestoreAttorneyDTO'
      responses:
        '200':
          description: Успешная операция.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    type: boolean
                  attorney:
                    $ref: '#/components/schemas/AttorneyDTO'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '429':
          $ref: '#/components/responses/TooManyRequests'
  /api/v1/clients/{clientId}/attorneysByExternalId/{attorneyExternalId}/sign:
    put:
      tags:
        - attorneysSigning
      summary: Подписать МЧД по внешнему ID
      operationId: attorneySignByExternalId
      security:
        - SessionCookieAuth: []
        - UserApiTokenAuth: []
        - MasterTokenAuth: []
      description: |
        ### Описание метода

        > **⚠️ Будьте осторожны!**
        >
        > Методы PUT перезаписывают запись целиком: любые непереданные поля считаются null и затирают данные в БД.
        > Поэтому при обновлении нужно указывать все поля.
         Подписывает МЧД по ID МЧД во внешней системе.

        ### Валидации запроса

        - Клиент существует, не удалён, и к нему относится пользователь, выполняющий операцию.
        - Тело запроса задано.
        - Подпись задана.
        - МЧД существует по заданному ID.
        - Пользователь клиента является доверителем заданного МЧД.
        - Если задана версия МЧД, то она корректна.
        - МЧД имеет корректный статус для подписания.
        - Подпись является корректной для подписания доверителем заданной МЧД.
        - Файл подписи соответствует файлу МЧД.
        - Проверяет, что ID МЧД задан корректно и возвращает МЧД в случае, если он существует.
        - ID клиента соответствует формату UUID.
        - По заданному ID клиента существует клиент.
        - Пользователь, выполняющий операцию, относится к клиенту.
        - Проверяет, что подпись задана.
        - Проверяет, что пользователь клиента является доверителем МЧД.
        - Проверяет, что указана корректная версия данных МЧД.
        - МЧД не удалена.
        - МЧД отправлена на подпись.
        - МЧД не подписана.
        - Проверяет, что аккредитация УЦ выпустившего сертификат не была отозвана.
        - Проверка выполняется только при включенной глобальной настройке блокировки подписания УКЭП выпущенных УЦ без аккредитации, при условии что на уровне тенанта выключена настройка игнорирования этого запрета.
        - Сертификат подписи корректен.
        - Сертификат подписи является корректным сертификатом юрлица или ИП.
        - Данные ИНН и СНИЛС владельца сертификата совпадает с данными ИНН и СНИЛС доверителя МЧД.
        - Данные ИНН и ОГРН юрлица сертификата совпадают с данными ИНН и ОГРН юрлица МЧД.
        - Проверяет корректность подписи УКЭП соответствующему файлу МЧД.
        - Если в настройке тенанта выключен флаг проверки подписи УКЭП и файла, тогда пропускаем данную валидацию.
        - Выполняет проверку типа подписи CAdES, исходя из настроек тенанта.
        - Если в настройках тенанта включено требование использовать тип подписи CAdES-X Long Type 1, то тип подписи должен соответствовать настройке.
        - Проверяет, что текущий пользователь относится к заданному клиенту и возвращает пользователя клиента, если он существует.
        - Проверяет, что ID клиента, заданный в виде строки, соответствует формату, и возвращает типизированный ID клиента.
        - Проверяет существование клиента по заданному ID и возвращает клиента, если он существует.
        - Проверяет, что клиент не удален.
        - Проверяет, что МЧД не удалена.
        - Проверяет, что МЧД отправлена на подпись.
        - Проверяет, что МЧД не подписана.
        - Проверяет, что подпись корректна и возвращает её данные.
        - Проверяет, что данные владельца сертификата совпадает с данными доверителя МЧД.
        - Проверяет, что юрлицо сертификата совпадает с юрлицом МЧД.
        - Проверяет, что сертификат подписи является корректным сертификатом юрлица или ИП.
        - Проверяет, что подписи УКЭП и соответствующие файлы корректны.
        - Возвращаются только результаты проверки, которые завершились неуспешно.
        - Если все подписи УКЭП и файлы прошли проверку, тогда возвращается пустой список.
        - В случае успешной проверки всех подписей УКЭП и соответствующих файлов возвращается пустой список.
      parameters:
        - $ref: '#/components/parameters/FormatParameter'
        - name: Impersonated-User-Id
          description: Идентификатор пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            format: uuid
        - name: Impersonated-User-Id-Type
          description: Тип идентификатора пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            enum:
              - HR_LINK_ID
              - SNILS
              - EXTERNAL_ID
        - name: Impersonated-User-Id-External-System-Type
          description: |
            Идентификатор внешней системы при аутентификации через мастер-токен.
          in: header
          schema:
            type: string
        - name: clientId
          in: path
          required: true
          description: Идентификатор клиента.
          schema:
            type: string
            format: uuid
        - name: attorneyExternalId
          in: path
          required: true
          description: Идентификатор доверенности во внешней системе.
          schema:
            type: string
      requestBody:
        description: Тело запроса AttorneySignByQesDTO
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AttorneySignByQesDTO'
      responses:
        '200':
          description: Успешная операция.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    type: boolean
                  attorney:
                    $ref: '#/components/schemas/AttorneyDTO'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '429':
          $ref: '#/components/responses/TooManyRequests'
  /api/v1/clients/{clientId}/attorneysByExternalId/{attorneyExternalId}/xml:
    get:
      tags:
        - attorneys
      summary: Скачать XML МЧД по внешнему ID
      operationId: attorneyGetXmlFileByExternalId
      security:
        - SessionCookieAuth: []
        - UserApiTokenAuth: []
        - MasterTokenAuth: []
      description: |
        ### Описание метода

        Возвращает редирект для скачивания XML файла МЧД по ID во внешней системе.

        ### Валидации запроса

        - Клиент существует, не удалён, и к нему относится пользователь, выполняющий операцию.
        - ID МЧД задан корректно.
        - Пользователь клиента имеет право на получение заданного МЧД.
        - У МЧД есть XML-файл.
        - Проверяет, что ID МЧД задан корректно и возвращает МЧД в случае, если он существует.
        - ID клиента соответствует формату UUID.
        - По заданному ID клиента существует клиент.
        - Пользователь, выполняющий операцию, относится к клиенту.
        - Имеет право `ATTORNEYS` на уровне пользователя клиента.
        - Имеет право `ATTORNEYS` как сотрудник юрлица, к которому относится МЧД.
        - Является представителем заданной МЧД.
        - Является руководителем юрлица заданной МЧД.
        - Проверяет, что МЧД имеет XML-файл.
        - Проверяет, что текущий пользователь относится к заданному клиенту и возвращает пользователя клиента, если он существует.
        - Проверяет, что ID клиента, заданный в виде строки, соответствует формату, и возвращает типизированный ID клиента.
        - Проверяет существование клиента по заданному ID и возвращает клиента, если он существует.
        - Проверяет, что клиент не удален.
      parameters:
        - $ref: '#/components/parameters/FormatParameter'
        - name: Impersonated-User-Id
          description: Идентификатор пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            format: uuid
        - name: Impersonated-User-Id-Type
          description: Тип идентификатора пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            enum:
              - HR_LINK_ID
              - SNILS
              - EXTERNAL_ID
        - name: Impersonated-User-Id-External-System-Type
          description: |
            Идентификатор внешней системы при аутентификации через мастер-токен.
          in: header
          schema:
            type: string
        - name: clientId
          in: path
          required: true
          description: Идентификатор клиента.
          schema:
            type: string
            format: uuid
        - name: attorneyExternalId
          in: path
          required: true
          description: Идентификатор доверенности во внешней системе.
          schema:
            type: string
      responses:
        '200':
          description: Этот код ответа не используется, при успехе выполнения метод всегда возвращает ответ с кодом 303.
        '303':
          description: |
            HTTP-заголовок `Location` будет содержать URL, по которому скачивается файл.<br/>
            ✍️ Postman и некоторые другие API-клиенты по умолчанию следуют редиректам и сразу скачивают файл, указанный в
            HTTP-заголовке `Location`. Это поведение настраивается на стороне клиента.
          headers:
            Location:
              schema:
                type: string
              description: URL, по которому скачивается файл
              example: https://host.hr-link.ru/api/v1/files?token=<<одноразовый_токен>>
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '429':
          $ref: '#/components/responses/TooManyRequests'
  /api/v1/clients/{clientId}/attorneys/getEmployeeRegistry:
    post:
      tags:
        - attorneys
      summary: Реестр МЧД (сотрудник)
      operationId: attorneyRegistryGetEmployeeRegistry
      security:
        - SessionCookieAuth: []
        - UserApiTokenAuth: []
        - MasterTokenAuth: []
      description: |
        ### Описание метода

        Возвращает данные реестра МЧД для сотрудника.

        ### Валидации запроса

        - Выполняет валидацию данных для получения реестра МЧД сотрудника.
        - Для успешного прохождения валидации необходимо, чтобы данные для получения реестра МЧД были корректны.
      parameters:
        - $ref: '#/components/parameters/FormatParameter'
        - name: Impersonated-User-Id
          description: Идентификатор пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            format: uuid
        - name: Impersonated-User-Id-Type
          description: Тип идентификатора пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            enum:
              - HR_LINK_ID
              - SNILS
              - EXTERNAL_ID
        - name: Impersonated-User-Id-External-System-Type
          description: |
            Идентификатор внешней системы при аутентификации через мастер-токен.
          in: header
          schema:
            type: string
        - name: clientId
          in: path
          required: true
          description: Идентификатор клиента.
          schema:
            type: string
            format: uuid
      requestBody:
        description: Тело запроса AttorneyRegistryFilterDTO
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AttorneyRegistryFilterDTO'
      responses:
        '200':
          description: Успешная операция.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    type: boolean
                  attorneys:
                    type: array
                    description: Список доверенностей.
                    items:
                      $ref: '#/components/schemas/AttorneyDTO'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '429':
          $ref: '#/components/responses/TooManyRequests'
  /api/v1/clients/{clientId}/attorneys/getHrRegistry:
    post:
      tags:
        - attorneys
      summary: Реестр МЧД (кадровик)
      operationId: attorneyRegistryGetHrRegistry
      security:
        - SessionCookieAuth: []
        - UserApiTokenAuth: []
        - MasterTokenAuth: []
      description: |
        ### Описание метода

        Для выполнения этого метода у пользователя должно быть право `ATTORNEYS` на уровне пользователя или сотрудника.

        ### Валидации запроса

        - Данные для получения реестра МЧД корректны.
        - У пользователя клиента есть право `ATTORNEYS` на уровне пользователя клиента или право `ATTORNEYS` на уровне сотрудника клиента.
        - Проверяет, есть ли у пользователя клиента с заданным ID заданное право и возвращает кэш наличия прав у пользователя клиента.
      parameters:
        - $ref: '#/components/parameters/FormatParameter'
        - name: Impersonated-User-Id
          description: Идентификатор пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            format: uuid
        - name: Impersonated-User-Id-Type
          description: Тип идентификатора пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            enum:
              - HR_LINK_ID
              - SNILS
              - EXTERNAL_ID
        - name: Impersonated-User-Id-External-System-Type
          description: |
            Идентификатор внешней системы при аутентификации через мастер-токен.
          in: header
          schema:
            type: string
        - name: clientId
          in: path
          required: true
          description: Идентификатор клиента.
          schema:
            type: string
            format: uuid
      requestBody:
        description: Тело запроса AttorneyRegistryFilterDTO
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AttorneyRegistryFilterDTO'
      responses:
        '200':
          description: Успешная операция.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    type: boolean
                  attorneys:
                    type: array
                    description: Список доверенностей.
                    items:
                      $ref: '#/components/schemas/AttorneyDTO'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '429':
          $ref: '#/components/responses/TooManyRequests'
  /api/v1/clients/{clientId}/bulkDataSyncTasks:
    post:
      tags:
        - bulkDataSync
      summary: Создать задачу синхронизации
      operationId: bulkDataSyncTaskCreateBulkDataSyncTask
      security:
        - SessionCookieAuth: []
        - UserApiTokenAuth: []
        - MasterTokenAuth: []
      description: |
        ### Описание метода

        Ставит **асинхронную** задачу массовой синхронизации данных. Метод сразу возвращает `bulkDataSyncTask.id` — идентификатор задачи. Прогресс и итог обработки запрашиваются методом [`bulkDataSyncTaskGetBulkDataSyncTaskStatus`](/public/api/hrlink/bulk-data-sync-task-get-bulk-data-sync-task-status) (`GET /api/v1/clients/{clientId}/bulkDataSyncTasks/{taskId}`) — он отдаёт статус задачи и результаты по каждой модели из массива `data` (создана, обновлена, пропущена, ошибка).

        Что делает задача — определяется полем `type`: юрлица, отделы, должности, пользователи клиента вместе с их сотрудниками, календари и т. д. Структура `data` и `parameters` зависит от `type` — подсхемы `CreateBulkDataSyncTaskDTO_<TYPE>` описывают каждый случай отдельно. Поле `externalId` обязательно у каждого элемента `data` для всех типов; внутри одной задачи `externalId` должны быть уникальны.

        Bulk sync — основной способ загрузки и поддержки оргструктуры. Пошаговый сценарий: гайд [Синхронизация сотрудников](/public/guides/sync-employees).

        ### Права доступа

        Базовое право — `BULK_DATA_SYNC_TASKS_CREATE` на уровне `ClientUser` или `Employee`. Для отдельных типов задач требуются **дополнительные** права:

        | `type` | Доп. право (`ClientUserPermission`) |
        |---|---|
        | `CALENDARS` | `CALENDAR_CREATE` + `CALENDAR_YEARS_EDIT` |
        | `CUSTOM_STRUCTURES` | `CUSTOM_STRUCTURES_CREATE` + `CUSTOM_STRUCTURES_UPDATE` |

        ### Лимиты на размер `data`

        Лимит элементов задаётся **per-type**, единого ограничения нет:

        | `type` | Лимит |
        |---|---|
        | `EMPLOYEE_FUNCTIONAL_MANAGERS` | 1000 |
        | `EMPLOYEE_VACATIONS`, `EMPLOYEE_VACATIONS_V2`, `EMPLOYEE_VACATIONS_PLANNING`, `EMPLOYEE_CUSTOM_STRUCTURE_ELEMENTS` | 500 |
        | `CLIENT_USER_VACATIONS` | 500 |
        | `LEGAL_ENTITIES`, `CLIENT_DEPARTMENTS`, `EMPLOYEE_POSITIONS`, `CLIENT_USERS_*`, `CALENDARS`, `CUSTOM_STRUCTURES` | не проверяется на стороне сервера |

        Для типов без серверного лимита рекомендуется бить выборку на порции **500 элементов** — так нагрузка на API остаётся ровной, а отдельные ошибки не «вытягивают» вместе с собой большой пакет.

        ### Параллельные задачи одного типа

        `bulkDataSyncTaskCreateBulkDataSyncTask` **не блокирует** запуск второй задачи того же `type`, пока предыдущая не завершилась. Однако последствия зависят от типа: для `CLIENT_DEPARTMENTS` параллельные задачи могут конкурировать за один справочник, для `LEGAL_ENTITIES` это менее опасно. Безопаснее запускать задачи одного типа **последовательно** — после `SUCCEEDED`/`FAILED`/`PARTIALLY_SUCCEEDED` предыдущей.

        ### Валидации запроса

        - Тело запроса задано.
        - Поле `type` задано.
        - Поле `data` задано и не пусто.
        - Все элементы `data` не равны `null`.
        - Клиент существует, не удалён, и пользователь относится к клиенту.
        - У пользователя есть право `BULK_DATA_SYNC_TASKS_CREATE` (на уровне ClientUser или Employee).
        - `parameters` корректны для заданного `type` (см. подсхему `CreateBulkDataSyncTaskDTO_<TYPE>`).
        - `data` корректны для заданного `type` — детальные правила в подсхеме `CreateBulkDataSyncTaskDTO_<TYPE>`. Общие правила для всех типов: `externalId` задан у каждого элемента и уникален в пределах задачи.
        - Лимит `data` (если применим к типу) не превышен.
        - Дополнительные type-specific права (см. таблицу выше) предоставлены.
      parameters:
        - $ref: '#/components/parameters/FormatParameter'
        - name: Impersonated-User-Id
          description: Идентификатор пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            format: uuid
        - name: Impersonated-User-Id-Type
          description: Тип идентификатора пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            enum:
              - HR_LINK_ID
              - SNILS
              - EXTERNAL_ID
        - name: Impersonated-User-Id-External-System-Type
          description: |
            Идентификатор внешней системы при аутентификации через мастер-токен.
          in: header
          schema:
            type: string
        - name: clientId
          in: path
          required: true
          description: Идентификатор клиента.
          schema:
            type: string
            format: uuid
      requestBody:
        description: Тело запроса CreateBulkDataSyncTaskDTO
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateBulkDataSyncTaskDTO'
      responses:
        '200':
          description: Успешная операция.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    type: boolean
                  bulkDataSyncTask:
                    type: object
                    properties:
                      id:
                        description: Идентификатор задачи массовой синхронизации данных.
                        type: string
                        format: uuid
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '429':
          $ref: '#/components/responses/TooManyRequests'
  /api/v1/clients/{clientId}/bulkDataSyncTasks/{taskId}:
    get:
      tags:
        - bulkDataSync
      summary: Статус задачи синхронизации
      operationId: bulkDataSyncTaskGetBulkDataSyncTaskStatus
      security:
        - SessionCookieAuth: []
        - UserApiTokenAuth: []
        - MasterTokenAuth: []
      description: |
        ### Описание метода

        Возвращает статус задачи массовой синхронизации данных.

        ### Валидации запроса

        - ID задачи массовой синхронизации данных соответствует формату UUID.
        - Клиент существует, не удалён, и к нему относится пользователь, выполняющий операцию.
        - Задача массовой синхронизации данных существует по заданному ID.
        - У пользователя клиента есть право на получение задач массовой синхронизации данных.
        - В клиенте существует задача массовой синхронизации по заданному ID.
        - Проверяет, что ID задачи массовой синхронизации данных в виде строки соответствует формату UUID, и возвращает типизированный ID задачи массовой синхронизации данных.
        - ID клиента соответствует формату UUID.
        - По заданному ID клиента существует клиент.
        - Пользователь, выполняющий операцию, относится к клиенту.
        - Проверяет, есть ли у пользователя клиента с заданным ID заданное право и возвращает кэш наличия прав у пользователя клиента.
        - Проверяет существование задачи массовой синхронизации данных по заданному ID в заданном клиенте.
        - Проверяет, что текущий пользователь относится к заданному клиенту и возвращает пользователя клиента, если он существует.
        - Проверяет, что ID клиента, заданный в виде строки, соответствует формату, и возвращает типизированный ID клиента.
        - Проверяет существование клиента по заданному ID и возвращает клиента, если он существует.
        - Проверяет, что клиент не удален.
      parameters:
        - $ref: '#/components/parameters/FormatParameter'
        - name: Impersonated-User-Id
          description: Идентификатор пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            format: uuid
        - name: Impersonated-User-Id-Type
          description: Тип идентификатора пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            enum:
              - HR_LINK_ID
              - SNILS
              - EXTERNAL_ID
        - name: Impersonated-User-Id-External-System-Type
          description: |
            Идентификатор внешней системы при аутентификации через мастер-токен.
          in: header
          schema:
            type: string
        - name: clientId
          in: path
          required: true
          description: Идентификатор клиента.
          schema:
            type: string
            format: uuid
        - name: taskId
          in: path
          required: true
          description: Идентификатор задачи в HRlink.
          schema:
            type: string
            format: uuid
      responses:
        '200':
          description: Успешная операция.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    type: boolean
                  bulkDataSyncTask:
                    $ref: '#/components/schemas/BulkDataSyncTaskStatusDTO'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '429':
          $ref: '#/components/responses/TooManyRequests'
  /api/v1/clients/{clientId}/bulkDataSyncTasks/status:
    post:
      tags:
        - bulkDataSync
      summary: Статусы задач синхронизации
      operationId: bulkDataSyncTaskGetBulkDataSyncTasksStatuses
      security:
        - SessionCookieAuth: []
        - UserApiTokenAuth: []
        - MasterTokenAuth: []
      description: |
        ### Описание метода

        Возвращает статусы задач массовой синхронизации данных.

        ### Валидации запроса

        - Тело запроса задано.
        - В теле запроса задан и не пуст список ID задач массовой синхронизации.
        - Список с ID задач массовой синхронизации не содержит пустых элементов.
        - Клиент существует, не удалён, и к нему относится пользователь, выполняющий операцию.
        - У пользователя клиента есть право на получение задач массовой синхронизации данных.
        - Задачи с заданными ID существуют в заданном клиенте.
        - Проверяет, что список ID задач массовой синхронизации данных задан и не пуст.
        - Проверяет, что элементы списка ID задач массовой синхронизации данных не являются пустыми.
        - ID клиента соответствует формату UUID.
        - По заданному ID клиента существует клиент.
        - Пользователь, выполняющий операцию, относится к клиенту.
        - Проверяет, есть ли у пользователя клиента с заданным ID заданное право и возвращает кэш наличия прав у пользователя клиента.
        - Выполняет проверку, существуют ли все задачи массовой синхронизации данных по заданному списку ID.
        - Проверяет, что текущий пользователь относится к заданному клиенту и возвращает пользователя клиента, если он существует.
        - Проверяет, что ID клиента, заданный в виде строки, соответствует формату, и возвращает типизированный ID клиента.
        - Проверяет существование клиента по заданному ID и возвращает клиента, если он существует.
        - Проверяет, что клиент не удален.
      parameters:
        - $ref: '#/components/parameters/FormatParameter'
        - name: Impersonated-User-Id
          description: Идентификатор пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            format: uuid
        - name: Impersonated-User-Id-Type
          description: Тип идентификатора пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            enum:
              - HR_LINK_ID
              - SNILS
              - EXTERNAL_ID
        - name: Impersonated-User-Id-External-System-Type
          description: |
            Идентификатор внешней системы при аутентификации через мастер-токен.
          in: header
          schema:
            type: string
        - name: clientId
          in: path
          required: true
          description: Идентификатор клиента.
          schema:
            type: string
            format: uuid
      requestBody:
        description: Тело запроса GetBulkDataSyncTasksStatusesDTO
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/GetBulkDataSyncTasksStatusesDTO'
      responses:
        '200':
          description: Успешная операция.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    type: boolean
                  bulkDataSyncTasks:
                    type: array
                    description: Список данных статуса задач массовой синхронизации данных.
                    items:
                      $ref: '#/components/schemas/BulkDataSyncTaskStatusDTO_WithoutData'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '429':
          $ref: '#/components/responses/TooManyRequests'
  /api/v1/clients/{clientId}/calendars:
    get:
      tags:
        - productionCalendar
      summary: Получить календари
      operationId: calendarGetClientCalendars
      security:
        - SessionCookieAuth: []
        - UserApiTokenAuth: []
        - MasterTokenAuth: []
      description: |
        ### Описание метода

        Получает данные по доступным клиенту календарям.

        ### Валидации запроса

        - Пользователь клиента существует и относится к заданному клиенту.
        - ID клиента соответствует формату UUID.
        - По заданному ID клиента существует клиент.
        - Пользователь, выполняющий операцию, относится к клиенту.
        - Проверяет, что текущий пользователь относится к заданному клиенту и возвращает пользователя клиента, если он существует.
        - Проверяет, что ID клиента, заданный в виде строки, соответствует формату, и возвращает типизированный ID клиента.
        - Проверяет существование клиента по заданному ID и возвращает клиента, если он существует.
        - Проверяет, что клиент не удален.
      parameters:
        - $ref: '#/components/parameters/FormatParameter'
        - name: Impersonated-User-Id
          description: Идентификатор пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            format: uuid
        - name: Impersonated-User-Id-Type
          description: Тип идентификатора пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            enum:
              - HR_LINK_ID
              - SNILS
              - EXTERNAL_ID
        - name: Impersonated-User-Id-External-System-Type
          description: |
            Идентификатор внешней системы при аутентификации через мастер-токен.
          in: header
          schema:
            type: string
        - name: clientId
          in: path
          required: true
          description: Идентификатор клиента.
          schema:
            type: string
            format: uuid
      responses:
        '200':
          description: Успешная операция.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    type: boolean
                  calendars:
                    type: array
                    description: Поле не описано.
                    items:
                      $ref: '#/components/schemas/CalendarWithYearsDto'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '429':
          $ref: '#/components/responses/TooManyRequests'
    post:
      tags:
        - productionCalendar
      summary: Создать календарь
      operationId: calendarCreateCalendar
      security:
        - SessionCookieAuth: []
        - UserApiTokenAuth: []
        - MasterTokenAuth: []
      description: |
        ### Описание метода

        Создаёт календарь клиента.

        ### Валидации запроса

        - Пользователь клиента существует и относится к заданному клиенту.
        - Пользователь клиента имеет право `CALENDAR_CREATE`.
        - ID клиента соответствует формату UUID.
        - По заданному ID клиента существует клиент.
        - Пользователь, выполняющий операцию, относится к клиенту.
        - Проверяет наличие у пользователя прав на создание календаря.
        - Проверяет, что текущий пользователь относится к заданному клиенту и возвращает пользователя клиента, если он существует.
        - Проверяет, что ID клиента, заданный в виде строки, соответствует формату, и возвращает типизированный ID клиента.
        - Проверяет существование клиента по заданному ID и возвращает клиента, если он существует.
        - Проверяет, что клиент не удален.
      parameters:
        - $ref: '#/components/parameters/FormatParameter'
        - name: Impersonated-User-Id
          description: Идентификатор пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            format: uuid
        - name: Impersonated-User-Id-Type
          description: Тип идентификатора пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            enum:
              - HR_LINK_ID
              - SNILS
              - EXTERNAL_ID
        - name: Impersonated-User-Id-External-System-Type
          description: |
            Идентификатор внешней системы при аутентификации через мастер-токен.
          in: header
          schema:
            type: string
        - name: clientId
          in: path
          required: true
          description: Идентификатор клиента.
          schema:
            type: string
            format: uuid
      requestBody:
        description: Тело запроса CreateCalendarDto
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateCalendarDto'
      responses:
        '200':
          description: Успешная операция.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    type: boolean
                  calendar:
                    $ref: '#/components/schemas/CalendarDto'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '429':
          $ref: '#/components/responses/TooManyRequests'
  /api/v1/clients/{clientId}/calendarsByExternalId/{externalId}/years:
    get:
      tags:
        - productionCalendar
      summary: Получить годы календаря по внешнему ID
      operationId: calendarGetCalendarYearsByExternalId
      security:
        - SessionCookieAuth: []
        - UserApiTokenAuth: []
        - MasterTokenAuth: []
      description: |
        ### Описание метода

        Для успешного выполения запросов необходимо выполнение следующих условий:
        - Внешний ID календаря задан.
        - Календарь существует по заданному внешнему ID.
        - В запросе задан query-параметр `yearFrom`, содержащий начало диапазона годов, и он является числом.
        - Если в запросе задан query-параметр `yearTo`, содержащий окончание диапазона годов, то он является числом.
        - Начало диапазона годов не превышает конец диапазона.

        ### Валидации запроса

        - Запрос содержит yearFrom.
        - yearFrom является числом.
        - Если запрос содержит параметр yearTo, то он является числом.
        - ID календаря (внешний или внутренний) имеет допустимый формат.
        - Пользователь клиента существует и относится к заданному клиенту.
        - Проверяет, что ID календаря обладает верным форматом.
        - Проверяет, что в запросе задан query-параметр 'yearFrom', содержащий начало диапазона годов, и что он является числом.
        - Проверяет, что если в запросе задан query-параметр 'yearTo', содержащий окончание диапазона годов, то он является числом.
        - ID клиента соответствует формату UUID.
        - По заданному ID клиента существует клиент.
        - Пользователь, выполняющий операцию, относится к клиенту.
        - Проверяет, что текущий пользователь относится к заданному клиенту и возвращает пользователя клиента, если он существует.
        - Проверяет, что ID клиента, заданный в виде строки, соответствует формату, и возвращает типизированный ID клиента.
        - Проверяет существование клиента по заданному ID и возвращает клиента, если он существует.
        - Проверяет, что клиент не удален.
      parameters:
        - $ref: '#/components/parameters/FormatParameter'
        - name: Impersonated-User-Id
          description: Идентификатор пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            format: uuid
        - name: Impersonated-User-Id-Type
          description: Тип идентификатора пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            enum:
              - HR_LINK_ID
              - SNILS
              - EXTERNAL_ID
        - name: Impersonated-User-Id-External-System-Type
          description: |
            Идентификатор внешней системы при аутентификации через мастер-токен.
          in: header
          schema:
            type: string
        - name: clientId
          in: path
          required: true
          description: Идентификатор клиента.
          schema:
            type: string
            format: uuid
        - name: externalId
          in: path
          required: true
          description: Идентификатор календаря во внешней системе.
          schema:
            type: string
        - name: yearFrom
          in: query
          description: Левая граница диапазона.
          required: true
          schema:
            type: integer
            format: int64
            example: 2024
        - name: yearTo
          in: query
          description: Правая граница диапазона.
          schema:
            type: integer
            format: int64
            example: 2025
      responses:
        '200':
          description: Успешная операция.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    type: boolean
                  calendar:
                    $ref: '#/components/schemas/CalendarWithYearsAndDatesDto'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '429':
          $ref: '#/components/responses/TooManyRequests'
    put:
      tags:
        - productionCalendar
      summary: Загрузить годы календаря по внешнему ID
      operationId: calendarUploadYearsByExternalId
      security:
        - SessionCookieAuth: []
        - UserApiTokenAuth: []
        - MasterTokenAuth: []
      description: |
        ### Описание метода

        > **⚠️ Будьте осторожны!**
        >
        > Методы PUT перезаписывают запись целиком: любые непереданные поля считаются null и затирают данные в БД.
        > Поэтому при обновлении нужно указывать все поля.
         Загружает данные по годам календаря по его внешнему ID.

        ### Валидации запроса

        - ID календаря имеет допустимый формат.
        - Пользователь клиента существует и относится к заданному клиенту.
        - Пользователь клиента имеет право `CALENDAR_YEARS_EDIT`.
        - Проверяет, что внешний или внутренний ID календаря обладает ожидаемым форматом.
        - ID клиента соответствует формату UUID.
        - По заданному ID клиента существует клиент.
        - Пользователь, выполняющий операцию, относится к клиенту.
        - Проверяет наличие у пользователя прав на редактирование годов календаря.
        - Проверяет, что текущий пользователь относится к заданному клиенту и возвращает пользователя клиента, если он существует.
        - Проверяет, что ID клиента, заданный в виде строки, соответствует формату, и возвращает типизированный ID клиента.
        - Проверяет существование клиента по заданному ID и возвращает клиента, если он существует.
        - Проверяет, что клиент не удален.
      parameters:
        - $ref: '#/components/parameters/FormatParameter'
        - name: Impersonated-User-Id
          description: Идентификатор пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            format: uuid
        - name: Impersonated-User-Id-Type
          description: Тип идентификатора пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            enum:
              - HR_LINK_ID
              - SNILS
              - EXTERNAL_ID
        - name: Impersonated-User-Id-External-System-Type
          description: |
            Идентификатор внешней системы при аутентификации через мастер-токен.
          in: header
          schema:
            type: string
        - name: clientId
          in: path
          required: true
          description: Идентификатор клиента.
          schema:
            type: string
            format: uuid
        - name: externalId
          in: path
          required: true
          description: Идентификатор календаря во внешней системе.
          schema:
            type: string
      requestBody:
        description: Тело запроса YearsUploadDto
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/YearsUploadDto'
      responses:
        '200':
          description: Успешная операция.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    type: boolean
                  calendar:
                    $ref: '#/components/schemas/CalendarWithYearsAndDatesDto'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '429':
          $ref: '#/components/responses/TooManyRequests'
  /api/v1/clients/{clientId}/departments:
    get:
      tags:
        - departments
      summary: Получить отделы
      operationId: clientDepartmentGetClientDepartments
      security:
        - SessionCookieAuth: []
        - UserApiTokenAuth: []
        - MasterTokenAuth: []
      description: |
        ### Описание метода

        ### Валидации запроса

        - Клиент существует, не удалён, и к нему относится пользователь, выполняющий операцию.
        - Пользователь, выполняющий операцию, имеет права для получения данных отделов клиента.
        - Если задан ID родительского отдела: * ID родительского отдела соответствует формату UUID.
        - Отдел с заданным ID родительского отдела существует.
        - Отдел с заданным ID родительского отдела принадлежит к заданному клиенту.
        - ID родительского отдела соответствует формату UUID.
        - ID клиента соответствует формату UUID.
        - По заданному ID клиента существует клиент.
        - Пользователь, выполняющий операцию, относится к клиенту.
        - Пользователь клиента имеет право DEPARTMENTS.
        - Пользователь клиента имеет право DEPARTMENTS на уровне одного из юрлиц.
        - Проверяет существование отдела клиента по заданному ID и возвращает отдел клиента, если он существует.
        - Проверяет, что заданный отдел клиента относится к заданному клиенту.
        - Проверяет, что текущий пользователь относится к заданному клиенту и возвращает пользователя клиента, если он существует.
        - Проверяет, что ID клиента, заданный в виде строки, соответствует формату, и возвращает типизированный ID клиента.
        - Проверяет существование клиента по заданному ID и возвращает клиента, если он существует.
        - Проверяет, что клиент не удален.
      parameters:
        - $ref: '#/components/parameters/FormatParameter'
        - name: Impersonated-User-Id
          description: Идентификатор пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            format: uuid
        - name: Impersonated-User-Id-Type
          description: Тип идентификатора пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            enum:
              - HR_LINK_ID
              - SNILS
              - EXTERNAL_ID
        - name: Impersonated-User-Id-External-System-Type
          description: |
            Идентификатор внешней системы при аутентификации через мастер-токен.
          in: header
          schema:
            type: string
        - name: clientId
          in: path
          required: true
          description: Идентификатор клиента.
          schema:
            type: string
            format: uuid
        - name: parentId
          in: query
          description: ID родительского отдела.
          schema:
            type: string
            format: uuid
            default: null
            x-nullable: true
        - name: includeChildren
          in: query
          description: Включать ли дочерние отделы в выборку?
          schema:
            type: boolean
            x-nullable: true
            default: true
      responses:
        '200':
          description: Успешная операция.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    type: boolean
                  clientDepartments:
                    type: array
                    description: Список данных всех отделов клиента.
                    items:
                      $ref: '#/components/schemas/ClientDepartmentDTO'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '429':
          $ref: '#/components/responses/TooManyRequests'
  /api/v1/clients/{clientId}/departments/{departmentExternalId}/externalId:
    get:
      tags:
        - departments
      summary: Получить отдел по внешнему ID
      operationId: clientDepartmentGetClientDepartmentByExternalId
      security:
        - SessionCookieAuth: []
        - UserApiTokenAuth: []
        - MasterTokenAuth: []
      description: |
        ### Описание метода

        ### Валидации запроса

        - Клиент существует, не удалён, и к нему относится пользователь, выполняющий операцию.
        - Пользователь, выполняющий операцию, имеет права для получения данных отделов клиента.
        - По указанному ID отдела во внешней системе в клиенте существует отдел.
        - ID клиента соответствует формату UUID.
        - По заданному ID клиента существует клиент.
        - Пользователь, выполняющий операцию, относится к клиенту.
        - Пользователь клиента имеет право DEPARTMENTS.
        - Пользователь клиента имеет право DEPARTMENTS на уровне одного из юрлиц.
        - Проверяет существование отдела клиента по заданному ID во внешней системе и возвращает отдела клиента, если он существует.
        - Проверяет, что текущий пользователь относится к заданному клиенту и возвращает пользователя клиента, если он существует.
        - Проверяет, что ID клиента, заданный в виде строки, соответствует формату, и возвращает типизированный ID клиента.
        - Проверяет существование клиента по заданному ID и возвращает клиента, если он существует.
        - Проверяет, что клиент не удален.
      parameters:
        - $ref: '#/components/parameters/FormatParameter'
        - name: Impersonated-User-Id
          description: Идентификатор пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            format: uuid
        - name: Impersonated-User-Id-Type
          description: Тип идентификатора пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            enum:
              - HR_LINK_ID
              - SNILS
              - EXTERNAL_ID
        - name: Impersonated-User-Id-External-System-Type
          description: |
            Идентификатор внешней системы при аутентификации через мастер-токен.
          in: header
          schema:
            type: string
        - name: clientId
          in: path
          required: true
          description: Идентификатор клиента.
          schema:
            type: string
            format: uuid
        - name: departmentExternalId
          in: path
          required: true
          description: Идентификатор отдела во внешней системе.
          schema:
            type: string
      responses:
        '200':
          description: Успешная операция.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    type: boolean
                  clientDepartment:
                    $ref: '#/components/schemas/ClientDepartmentDTO'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '429':
          $ref: '#/components/responses/TooManyRequests'
  /api/v1/clients/{clientId}/users:
    get:
      tags:
        - users
      summary: Получить пользователей
      operationId: clientUserGetClientUsers
      security:
        - SessionCookieAuth: []
        - UserApiTokenAuth: []
        - MasterTokenAuth: []
      description: |
        ### Описание метода

        Получить пользователей клиента, с учетом фильтрации и пагинации.

        ### Валидации запроса

        - Если задано контекстное право, то оно должно существовать и соответствовать контексту получения пользователей клиента.
        - Клиент существует, не удалён, и к нему относится пользователь, выполняющий операцию.
        - Каждый ID пользователя клиента является корректным UUID.
        - По каждому ID пользователя клиента существует соответствующий пользователь клиента.
        - Каждый пользователь клиента относится к заданному клиенту.
        - Количество элементов, которое нужно пропустить при выборке с пагинацией, корректно.
        - Количество возвращаемых при запросе элементов корректно.
        - У пользователя клиента должно быть право на получение пользователей клиента.
        - Если у пользователя клиента нет права выполнять операцию на уровне пользователя, то текущий пользователь клиента имеет доступ до указанных пользователей клиента, по праву на уровне сотрудника.
        - Если у пользователя клиента нет права выполнять операцию на уровне пользователя, то список ID ролей пользователя пуст.
        - Каждый ID роли пользователя является корректным UUID.
        - По каждому ID роли пользователя существует роль пользователя.
        - Проверяет, что заданное контекстное право существует и соответствует контексту получения данных о пользователях клиента.
        - ID клиента соответствует формату UUID.
        - По заданному ID клиента существует клиент.
        - Пользователь, выполняющий операцию, относится к клиенту.
        - Проверяет, что пользователи клиента существуют по всем заданным ID, и возвращает список пользователей клиента.
        - Проверяет, что заданный пользователь клиента принадлежит клиенту с заданным ID.
        - Проверяет, что параметры пагинации заданы корректно.
        - Проверяет корректность лимита и смещения пагинации.
        - Проверяет, что текущий пользователь клиента или его замещаемые имеет доступ до указанных пользователей клиента.
        - Проверяет, что список ID ролей пользователя пуст.
        - Проверяет, что все роли пользователя по заданному списку ID существуют.
        - Проверяет, что заданное контекстное право существует.
        - Проверяет, что текущий пользователь относится к заданному клиенту и возвращает пользователя клиента, если он существует.
        - Проверяет, что ID клиента, заданный в виде строки, соответствует формату, и возвращает типизированный ID клиента.
        - Проверяет существование клиента по заданному ID и возвращает клиента, если он существует.
        - Проверяет, что клиент не удален.
        - Проверяет, что количество элементов, которое нужно пропустить при выборке с пагинацией, корректно.
        - Проверяет, что заданное количество возвращаемых при запросе элементов корректно.
        - Проверяет, что текущий пользователь клиента имеет доступ до указанных пользователей клиента, по указанным доступным юрлицам и отделам.
      parameters:
        - $ref: '#/components/parameters/FormatParameter'
        - name: Impersonated-User-Id
          description: Идентификатор пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            format: uuid
        - name: Impersonated-User-Id-Type
          description: Тип идентификатора пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            enum:
              - HR_LINK_ID
              - SNILS
              - EXTERNAL_ID
        - name: Impersonated-User-Id-External-System-Type
          description: |
            Идентификатор внешней системы при аутентификации через мастер-токен.
          in: header
          schema:
            type: string
        - name: clientId
          in: path
          required: true
          description: Идентификатор клиента.
          schema:
            type: string
            format: uuid
        - name: ids
          in: query
          description: Список ID, по которым нужно производить поиск.
          schema:
            type: array
            minItems: 1
            items:
              type: string
              format: uuid
        - name: search
          in: query
          description: Поисковый запрос для ФИО, СНИЛС или ИНН пользователя.
          schema:
            type: string
            default: ''
            x-nullable: true
        - name: userRoleIds
          in: query
          description: Список ID ролей пользователя.
          schema:
            type: array
            items:
              type: string
              format: uuid
        - name: offset
          in: query
          description: Количество элементов, которое нужно пропустить при выборке.
          schema:
            type: integer
            default: 0
            minimum: 0
            x-nullable: true
        - name: limit
          in: query
          description: |
            Количество возвращаемых при запросе элементов.
            Максимальное количество задается в конфигурации приложения.
          schema:
            type: integer
            default: 10
            minimum: 0
            x-nullable: true
        - name: confirmationStatus
          in: query
          description: |
            Статус подтверждения пользователя.

            - `CONFIRMED` — пользователь подтверждён.

            - `NOT_CONFIRMED` — пользователь не подтверждён.
          schema:
            type: string
            enum:
              - CONFIRMED
              - NOT_CONFIRMED
            x-nullable: true
        - name: disabledStatus
          in: query
          description: |
            Статус отключения пользователя.

            - `DISABLED` — пользователь отключён.

            - `NOT_DISABLED` — пользователь не отключён.
          schema:
            type: string
            enum:
              - DISABLED
              - NOT_DISABLED
            x-nullable: true
        - name: employeeStatus
          in: query
          description: |
            Статус сотрудников пользователя клиента.

            - `NO_EMPLOYEES` — у пользователя клиента нет сотрудников.

            - `WITH_EMPLOYEES` — у пользователя клиента есть хотя бы один сотрудник.
          schema:
            type: string
            enum:
              - NO_EMPLOYEES
              - WITH_EMPLOYEES
            x-nullable: true
        - name: permissionContext
          in: query
          description: |
            Контекстное право, , в контексте которого выполняется операция.
            - `ATTORNEYS` — Право для получения МЧД.
            - `ATTORNEYS_CREATE` — Право на создание МЧД.
            - `ATTORNEYS_UPDATE` — Право на редактирование МЧД.
            - `CLIENT_USER_ROLES_ASSIGN` — Право на назначение ролей пользователей клиента.
            - `EMPLOYEES_UPDATE` — Право для редактирования сотрудника.
            - `LEGAL_ENTITIES_CREATE` — Право для создания юрлиц.
            - `LEGAL_ENTITIES_UPDATE` — Право для редактирования юрлиц.
          schema:
            type: string
            enum:
              - ATTORNEYS
              - ATTORNEYS_CREATE
              - ATTORNEYS_UPDATE
              - CLIENT_USER_ROLES_ASSIGN
              - EMPLOYEES_UPDATE
              - LEGAL_ENTITIES_CREATE
              - LEGAL_ENTITIES_UPDATE
      responses:
        '200':
          description: Успешная операция.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    type: boolean
                  clientUsers:
                    type: array
                    description: Список данных пользователей клиента.
                    items:
                      $ref: '#/components/schemas/ClientUserWithDocumentsDTO'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '429':
          $ref: '#/components/responses/TooManyRequests'
  /api/v1/clients/{clientId}/users/{id}:
    put:
      tags:
        - users
      summary: Обновить пользователя клиента
      operationId: clientUserUpdateClientUser
      security:
        - SessionCookieAuth: []
        - UserApiTokenAuth: []
        - MasterTokenAuth: []
      description: |
        ### Описание метода

        > **⚠️ Будьте осторожны!**
        >
        > Методы PUT перезаписывают запись целиком: любые непереданные поля считаются null и затирают данные в БД.
        > Поэтому при обновлении указывайте все поля.

        Обновляет данные пользователя клиента (ФИО, документы, телефон, email, внешние ID и каналы оповещения) по идентификатору пользователя клиента в системе HRlink. Используйте параметр `changeNqesSigningConfirmationChannelNeeded`, если необходимо переназначить канал подтверждения подписания УНЭП.

        ### Валидации запроса

        - ID пользователя клиента (`id`) соответствует формату UUID.
        - Тело запроса задано.
        - Клиент существует по заданному `clientId`, не удалён, и к нему относится пользователь, выполняющий операцию.
        - Обновляемый пользователь клиента существует (активен или отключён) и принадлежит заданному клиенту.
        - У пользователя, выполняющего операцию, есть право `CLIENT_USERS_UPDATE` на уровне пользователя клиента или на уровне сотрудника.
        - Если список `userExternalIds` задан — он не содержит null-элементов, типы внешних систем существуют, и каждый внешний ID либо принадлежит обновляемому пользователю, либо не закреплён ни за кем.
        - В заданном клиенте нет другого пользователя клиента с заданным `externalId` пользователя.
        - Фамилия (`lastName`) задана.
        - В персональных документах (`personalDocuments`) не указаны тип и ID документа одновременно.
        - Все документы с указанным `id` относятся к обновляемому человеку.
        - Все номера документов заданы корректно.
        - Сочетания типа и номера документа не пересекаются с документами других людей.
        - В списке документов нет двух документов одного типа.
        - Данные паспорта корректны: код подразделения, код региона, почтовый индекс.
        - В документах задан СНИЛС и паспорт.
        - Адрес регистрации в документах не передан (поле зарезервировано).
        - Версия каждого документа с `id` совпадает с актуальной версией в БД.
        - Версия данных о человеке (`version`) актуальна.
        - Если задан `phone` — он соответствует формату мобильного номера и не занят другим пользователем тенанта.
        - Если задан `email` — он соответствует формату; если новый email отсутствует среди текущих каналов уведомлений пользователя, он не занят в системе.
        - У тенанта есть активный пакет лицензий.
        - Если `changeNqesSigningConfirmationChannelNeeded=true` — смена канала подтверждения подписания УНЭП допустима для текущего сертификата пользователя.
      parameters:
        - $ref: '#/components/parameters/FormatParameter'
        - name: Impersonated-User-Id
          description: Идентификатор пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            format: uuid
        - name: Impersonated-User-Id-Type
          description: Тип идентификатора пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            enum:
              - HR_LINK_ID
              - SNILS
              - EXTERNAL_ID
        - name: Impersonated-User-Id-External-System-Type
          description: |
            Идентификатор внешней системы при аутентификации через мастер-токен.
          in: header
          schema:
            type: string
        - name: clientId
          in: path
          required: true
          description: Идентификатор клиента.
          schema:
            type: string
            format: uuid
        - name: id
          in: path
          required: true
          description: Идентификатор пользователя клиента в системе HRlink.
          schema:
            type: string
            format: uuid
        - name: changeNqesSigningConfirmationChannelNeeded
          in: query
          required: false
          description: |
            Признак необходимости переназначить канал подтверждения подписания УНЭП. Если `true`, канал будет переопределён в соответствии с новыми данными пользователя.
          schema:
            type: boolean
            default: false
      requestBody:
        description: Тело запроса UpdateClientUserDTO
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateClientUserDTO'
      responses:
        '200':
          description: Успешная операция.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    type: boolean
                  clientUser:
                    $ref: '#/components/schemas/ClientUserSingleFullInfoDTO'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '429':
          $ref: '#/components/responses/TooManyRequests'
  /api/v1/clients/{clientId}/users/{externalId}/externalId:
    put:
      tags:
        - users
      summary: Обновить пользователя клиента по внешнему ID
      operationId: clientUserUpdateClientUserByExternalId
      security:
        - SessionCookieAuth: []
        - UserApiTokenAuth: []
        - MasterTokenAuth: []
      description: |
        ### Описание метода

        > **⚠️ Будьте осторожны!**
        >
        > Методы PUT перезаписывают запись целиком: любые непереданные поля считаются null и затирают данные в БД.
        > Поэтому при обновлении указывайте все поля.

        Обновляет данные пользователя клиента (ФИО, документы, телефон, email, внешние ID и каналы оповещения) по идентификатору пользователя во внешней системе. Используйте параметр `changeNqesSigningConfirmationChannelNeeded`, если необходимо переназначить канал подтверждения подписания УНЭП.

        ### Валидации запроса

        - Тело запроса задано.
        - Клиент существует по заданному `clientId`, не удалён, и к нему относится пользователь, выполняющий операцию.
        - У клиента есть пользователь (активен или отключён) с заданным `externalId`.
        - У пользователя, выполняющего операцию, есть право `CLIENT_USERS_UPDATE` на уровне пользователя клиента или на уровне сотрудника.
        - Если список `userExternalIds` задан — он не содержит null-элементов, типы внешних систем существуют, и каждый внешний ID либо принадлежит обновляемому пользователю, либо не закреплён ни за кем.
        - В заданном клиенте нет другого пользователя клиента с `externalId`, переданным в теле запроса.
        - Фамилия (`lastName`) задана.
        - В персональных документах (`personalDocuments`) не указаны тип и ID документа одновременно.
        - Все документы с указанным `id` относятся к обновляемому человеку.
        - Все номера документов заданы корректно.
        - Сочетания типа и номера документа не пересекаются с документами других людей.
        - В списке документов нет двух документов одного типа.
        - Данные паспорта корректны: код подразделения, код региона, почтовый индекс.
        - В документах задан СНИЛС и паспорт.
        - Адрес регистрации в документах не передан (поле зарезервировано).
        - Версия каждого документа с `id` совпадает с актуальной версией в БД.
        - Версия данных о человеке (`version`) актуальна.
        - Если задан `phone` — он соответствует формату мобильного номера и не занят другим пользователем тенанта.
        - Если задан `email` — он соответствует формату; если новый email отсутствует среди текущих каналов уведомлений пользователя, он не занят в системе.
        - У тенанта есть активный пакет лицензий.
        - Если `changeNqesSigningConfirmationChannelNeeded=true` — смена канала подтверждения подписания УНЭП допустима для текущего сертификата пользователя.
      parameters:
        - $ref: '#/components/parameters/FormatParameter'
        - name: Impersonated-User-Id
          description: Идентификатор пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            format: uuid
        - name: Impersonated-User-Id-Type
          description: Тип идентификатора пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            enum:
              - HR_LINK_ID
              - SNILS
              - EXTERNAL_ID
        - name: Impersonated-User-Id-External-System-Type
          description: |
            Идентификатор внешней системы при аутентификации через мастер-токен.
          in: header
          schema:
            type: string
        - name: clientId
          in: path
          required: true
          description: Идентификатор клиента.
          schema:
            type: string
            format: uuid
        - name: externalId
          in: path
          required: true
          description: Идентификатор пользователя клиента во внешней системе.
          schema:
            type: string
        - name: changeNqesSigningConfirmationChannelNeeded
          in: query
          required: false
          description: |
            Признак необходимости переназначить канал подтверждения подписания УНЭП. Если `true`, канал будет переопределён в соответствии с новыми данными пользователя.
          schema:
            type: boolean
            default: false
      requestBody:
        description: Тело запроса UpdateClientUserDTO
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateClientUserDTO'
      responses:
        '200':
          description: Успешная операция.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    type: boolean
                  clientUser:
                    $ref: '#/components/schemas/ClientUserSingleFullInfoDTO'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '429':
          $ref: '#/components/responses/TooManyRequests'
  /api/v1/clients/{clientId}/users/{clientUserId}/nameDeclensions:
    put:
      tags:
        - users
      summary: Обновить склонения ФИО
      operationId: clientUserUpdateUserNameDeclensions
      security:
        - SessionCookieAuth: []
        - UserApiTokenAuth: []
        - MasterTokenAuth: []
      description: |
        ### Описание метода

        > **⚠️ Будьте осторожны!**
        >
        > Методы PUT перезаписывают запись целиком: любые непереданные поля считаются null и затирают данные в БД.
        > Поэтому при обновлении нужно указывать все поля.

        ### Валидации запроса

        - Тело задано.
        - Клиент существует, не удалён, и к нему относится пользователь, выполняющий операцию.
        - ID пользователя клиента соответствует формату UUID.
        - Пользователь клиента должен существовать по заданному ID.
        - Пользователь клиента принадлежит заданному клиенту.
        - Указана корректная версия данных пользователя клиента.
        - Указана корректная версия данных о человеке (person version).
        - Текущий пользователь имеет право `CLIENT_USERS_UPDATE` на уровне пользователя клиента или право `CLIENT_USERS_UPDATE` на уровне сотрудника.
        - Список склонений ФИО не null.
        - Элементы списка склонений ФИО не null.
        - Данные склонений ФИО корректны.
        - ID клиента соответствует формату UUID.
        - По заданному ID клиента существует клиент.
        - Пользователь, выполняющий операцию, относится к клиенту.
        - Проверяет, что ID пользователя клиента, заданный в виде строки, соответствует формату, и возвращает типизированный ID пользователя клиента.
        - Проверяет, что заданный пользователь клиента принадлежит клиенту с заданным ID.
        - Проверяет, что указана корректная версия данных.
        - Проверяет, есть ли у пользователя клиента с заданным ID заданное право и возвращает кэш наличия прав у пользователя клиента.
        - Проверяет, что список склонений ФИО пользователя задан.
        - Падеж задан.
        - Тип склоняемой части имени пользователя задан.
        - Склонённое по падежу значение задано.
        - В списке склонений ФИО нет повторяющихся сочетаний падежа и типа части имени.
        - Проверяет, что текущий пользователь относится к заданному клиенту и возвращает пользователя клиента, если он существует.
        - Проверяет, что ID клиента, заданный в виде строки, соответствует формату, и возвращает типизированный ID клиента.
        - Проверяет существование клиента по заданному ID и возвращает клиента, если он существует.
        - Проверяет, что клиент не удален.
        - Проверяет, что в переданном списке склонений ФИО заданы все поля.
        - Проверяет, что в переданном списке склонений ФИО нет повторяющихся сочетаний падежа и типа части имени.
      parameters:
        - $ref: '#/components/parameters/FormatParameter'
        - name: Impersonated-User-Id
          description: Идентификатор пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            format: uuid
        - name: Impersonated-User-Id-Type
          description: Тип идентификатора пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            enum:
              - HR_LINK_ID
              - SNILS
              - EXTERNAL_ID
        - name: Impersonated-User-Id-External-System-Type
          description: |
            Идентификатор внешней системы при аутентификации через мастер-токен.
          in: header
          schema:
            type: string
        - name: clientId
          in: path
          required: true
          description: Идентификатор клиента.
          schema:
            type: string
            format: uuid
        - name: clientUserId
          in: path
          required: true
          description: Идентификатор пользователя клиента в системе HRlink.
          schema:
            type: string
            format: uuid
      requestBody:
        description: Тело запроса UpdateUserNameDeclensionsDTO
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateUserNameDeclensionsDTO'
      responses:
        '200':
          description: Успешная операция.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    type: boolean
                  clientUser:
                    $ref: '#/components/schemas/ClientUserSingleFullInfoDTO'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '429':
          $ref: '#/components/responses/TooManyRequests'
  /api/v1/clients/{clientId}/users/{snils}/snils:
    get:
      tags:
        - users
      summary: Получить пользователя по СНИЛС
      operationId: clientUserGetClientUserBySnils
      security:
        - SessionCookieAuth: []
        - UserApiTokenAuth: []
        - MasterTokenAuth: []
      description: |
        ### Описание метода

        В качестве snils можно передавать только выражение содержащее 11 цифр, если передано что-то другое, то такой запрос не будет найден в системе.
        При отсутствии у запрашиваемого пользователя права на юрлицо, в котором находится сотрудник, поле legalEntities в ответе будет пустым массивом.

        ### Валидации запроса

        - Клиент существует, не удалён, и к нему относится пользователь, выполняющий операцию.
        - СНИСЛ задан корректно.
        - У пользователя клиента должно быть право на получение данных о пользователе клиента.
        - У пользователя клиента должно быть право на получение персональных данных пользователя клиента.
        - Пользователь по заданному СНИЛС должен существовать в системе.
        - Пользователь по заданному СНИЛС должен относится к заданному клиенту.
        - ID клиента соответствует формату UUID.
        - По заданному ID клиента существует клиент.
        - Пользователь, выполняющий операцию, относится к клиенту.
        - Проверяет, есть ли у пользователя клиента с заданным ID заданное право и возвращает кэш наличия прав у пользователя клиента.
        - Проверяет, есть ли у пользователя клиента с заданным ID заданное право, учитывая замещения.
        - Проверяет, что пользователь по заданному СНИЛС существует и возвращает ID пользователя в случае, когда пользователь существует.
        - Проверяет, что пользователь с указанным СНИЛС относится к заданному клиенту и возвращает пользователя клиента, если он существует.
        - Проверяет, что текущий пользователь относится к заданному клиенту и возвращает пользователя клиента, если он существует.
        - Проверяет, что ID клиента, заданный в виде строки, соответствует формату, и возвращает типизированный ID клиента.
        - Проверяет существование клиента по заданному ID и возвращает клиента, если он существует.
        - Проверяет, что клиент не удален.
        - Проверяет, что пользователь относится к заданному клиенту и возвращает пользователя клиента, если он существует.
      parameters:
        - $ref: '#/components/parameters/FormatParameter'
        - name: Impersonated-User-Id
          description: Идентификатор пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            format: uuid
        - name: Impersonated-User-Id-Type
          description: Тип идентификатора пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            enum:
              - HR_LINK_ID
              - SNILS
              - EXTERNAL_ID
        - name: Impersonated-User-Id-External-System-Type
          description: |
            Идентификатор внешней системы при аутентификации через мастер-токен.
          in: header
          schema:
            type: string
        - name: clientId
          in: path
          required: true
          description: Идентификатор клиента.
          schema:
            type: string
            format: uuid
        - name: snils
          in: path
          required: true
          description: СНИЛС.
          schema:
            type: string
            pattern: ^\d{11}$
      responses:
        '200':
          description: Успешная операция.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    type: boolean
                  clientUser:
                    $ref: '#/components/schemas/ClientUserSingleFullInfoDTO'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '429':
          $ref: '#/components/responses/TooManyRequests'
  /api/v1/clients/{clientId}/users/invitations/validate:
    post:
      tags:
        - users
      summary: Валидировать массовое приглашение
      operationId: clientUserValidateInvitations
      security:
        - SessionCookieAuth: []
        - UserApiTokenAuth: []
        - MasterTokenAuth: []
      description: |
        ### Описание метода

        ### Валидации запроса

        - Тело запроса задано.
        - В теле запроса задан тип приглашения.
        - В теле запроса корректно задан список с данными для приглашения пользователей клиента.
        - Клиент существует, не удалён, и к нему относится пользователь, выполняющий операцию.
        - У текущего пользователя есть права для приглашения.
        - Данные для приглашения каждого пользователя клиента в списке заданы корректно.
        - Тенант должен иметь активный пакет лицензий.
        - Тенант должен иметь свободные лицензии пользователя для всех приглашаемых пользователей клиента.
        - Тенант должен иметь свободные лицензии администраторов для всех приглашаемых пользователей клиента с его правами.
        - Лимит на выполнение операций создания печатной формы файла для заданного тенанта не будет превышен.
        - Существует активный пакет СМС и лимит СМС в пакете лицензий не должен быть исчерпан или превышен в результате данного действия.
        - Список задан.
        - Список не содержит пустых элементов.
        - Данные для приглашения каждого пользователя клиента корректны.
        - Пользователь клиента, который выполняет приглашение, не совпадает с приглашаемыми пользователями.
        - Приглашаемые пользователи клиента не повторяются.
        - Тип приглашения задан.
        - Тип приглашения не `WHATS_APP`.
        - ID клиента соответствует формату UUID.
        - По заданному ID клиента существует клиент.
        - Пользователь, выполняющий операцию, относится к клиенту.
        - Производит проверку, что у тенанта есть активный пакет лицензий.
        - Если у тенанта никогда ещё не было пакетов лицензий, то проверка пропускается.
        - Производит проверку, что у тенанта имеется требуемое количество доступных лицензий пользователя.
        - Выполняет проверку и возвращает результат проверки, что у тенанта есть требуемое количество доступных лицензий администраторов или кадровиков.
        - Задан ID пользователя клиента.
        - Задан логин для приглашения.
        - Пользователь клиента по заданному ID существует.
        - Пользователь клиента принадлежит заданному клиенту.
        - Логин задан корректно.
        - Список типов подписания для включения при приглашении пользователя задан корректно.
        - Если в теле запроса задан тип канала подтверждения подписания УНЭП, в списке типов подписания для включения должен быть задан УНЭП.
        - Если в теле запроса задан тип канала подтверждения подписания ПРР, данные для включения возможности подписания через ПРР заданы корректно.
        - Проверяет, что пользователь клиента, который осуществляет приглашение, не совпадает с приглашаемым пользователем.
        - Проверяет, что текущий пользователь относится к заданному клиенту и возвращает пользователя клиента, если он существует.
        - Проверяет, что ID клиента, заданный в виде строки, соответствует формату, и возвращает типизированный ID клиента.
        - Проверяет существование клиента по заданному ID и возвращает клиента, если он существует.
        - Проверяет, что клиент не удален.
        - Возвращает результат неуспешно пройденной проверки.
        - Проверка пройдена?
        - Список данных для включения ПРР задан и не пустой.
        - Список данных для включения ПРР не содержит пустых элементов.
        - Пользователь клиента, выполняющий операцию, имеет право `CLIENT_USERS_INVITE` на уровне пользователя клиента или право `CLIENT_USERS_INVITE` на уровне юрлица, в котором происходит включение подписания через ПРР.
        - ID юрлиц заданы корректно.
        - ID руководителей заданы корректно.
        - Среди ID юрлиц нет повторяющихся данных.
        - Проверяет, что ID пользователя клиента задан в данных приглашения.
        - Проверяет, что заданный пользователь клиента принадлежит клиенту с заданным ID.
        - В списке нет дубликатов типов подписания.
        - В списке нет одновременно значений «УНЭП с очной идентификацией» и «УНЭП с удалённой идентификацией».
        - Заданные типы подписания можно включать при заданном типе приглашения.
        - Проверяет, что в данных пользователей для включения типов подписания содержится одно из значений УНЭП: `NQES_REMOTE` или `NQES_IN_PERSON`.
        - ID юрлица задано.
        - Юрлицо существует по заданному ID.
        - Юрлицо относится к заданному клиенту.
        - Пользователь имеет доступ к заданному юрлицу.
        - Проверяет, что в списке ID юрлиц, переданного в данных для включения возможности подписания через ПРР нет дубликатов.
        - ID руководителя задан.
        - Руководитель задан корректно.
        - Проверяет, что в списке типов подписания для включения не содержится дубликатов.
        - Проверяет, что среди типов подписания для включения нет одновременно значений УНЭП с удалённой и очной идентификацией.
        - Проверяет, что типы подписания для включения можно задавать при данном типе приглашения.
        - Проверяет, что ID юрлица задан.
        - Проверяет, что юрлицо клиента существует по заданным ID и возвращает юрлицо клиента, если он существует.
        - Проверяет, что заданное юрлицо относится к заданному клиенту.
        - Проверяет, что список ID юрлиц содержит только доступные юрлица.
        - Проверяет, что ID руководителя задан.
        - Руководитель существует по заданному ID.
        - Руководитель относится к заданному клиенту.
        - Руководитель относится к заданному юрлицу.
        - Руководитель обладает правом `HEAD_MANAGER`.
        - Руководитель является активным и не уволенным.
        - Проверяет, что сотрудник по заданному ID существует.
        - Проверяет, что сотрудник принадлежит клиенту с заданным ID.
        - Проверяет, что сотрудник относится к юрлицу.
        - Проверяет, что данный сотрудник работает.
        - Проверяет, что сотрудник по заданному ID во внешней системе существует и возвращает его, если он существует.
        - Если юрлицо указано, то существование сотрудника проверяется в заданном юрлице.
        - Если юрлицо не указано, то существование сотрудника проверяется в клиенте с заданным ID.
        - Проверяет, что заданный сотрудник относится к заданному клиенту.
      parameters:
        - $ref: '#/components/parameters/FormatParameter'
        - name: Impersonated-User-Id
          description: Идентификатор пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            format: uuid
        - name: Impersonated-User-Id-Type
          description: Тип идентификатора пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            enum:
              - HR_LINK_ID
              - SNILS
              - EXTERNAL_ID
        - name: Impersonated-User-Id-External-System-Type
          description: |
            Идентификатор внешней системы при аутентификации через мастер-токен.
          in: header
          schema:
            type: string
        - name: clientId
          in: path
          required: true
          description: Идентификатор клиента.
          schema:
            type: string
            format: uuid
      requestBody:
        description: Тело запроса ManyClientUserInvitationsDTO
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ManyClientUserInvitationsDTO'
      responses:
        '200':
          description: Успешная операция.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    type: boolean
                  validationResults:
                    type: array
                    description: Список результатов валидации приглашений.
                    items:
                      $ref: '#/components/schemas/ClientUserInvitationValidationResult'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '429':
          $ref: '#/components/responses/TooManyRequests'
  /api/v1/clients/{clientId}/users/invite:
    post:
      tags:
        - users
      summary: Массовое приглашение пользователей
      operationId: clientUserInviteMany
      security:
        - SessionCookieAuth: []
        - UserApiTokenAuth: []
        - MasterTokenAuth: []
      description: |
        ### Описание метода

        ### Валидации запроса

        - Тело запроса задано.
        - В теле запроса задан тип приглашения.
        - В теле запроса корректно задан список с данными для приглашения пользователей клиента.
        - Клиент существует, не удалён, и к нему относится пользователь, выполняющий операцию.
        - У текущего пользователя есть права для приглашения.
        - Данные для приглашения каждого пользователя клиента в списке заданы корректно.
        - Тенант должен иметь активный пакет лицензий.
        - Тенант должен иметь свободные лицензии пользователя для всех приглашаемых пользователей клиента.
        - Тенант должен иметь свободные лицензии администраторов для всех приглашаемых пользователей клиента с его правами.
        - Лимит на выполнение операций создания печатной формы файла для заданного тенанта не будет превышен.
        - Существует активный пакет СМС и лимит СМС в пакете лицензий не должен быть исчерпан или превышен в результате данного действия.
        - Список задан.
        - Список не содержит пустых элементов.
        - Данные для приглашения каждого пользователя клиента корректны.
        - Пользователь клиента, который выполняет приглашение, не совпадает с приглашаемыми пользователями.
        - Приглашаемые пользователи клиента не повторяются.
        - Тип приглашения задан.
        - Тип приглашения не `WHATS_APP`.
        - ID клиента соответствует формату UUID.
        - По заданному ID клиента существует клиент.
        - Пользователь, выполняющий операцию, относится к клиенту.
        - Производит проверку, что у тенанта есть активный пакет лицензий.
        - Если у тенанта никогда ещё не было пакетов лицензий, то проверка пропускается.
        - Производит проверку, что у тенанта имеется требуемое количество доступных лицензий пользователя.
        - Выполняет проверку и возвращает результат проверки, что у тенанта есть требуемое количество доступных лицензий администраторов или кадровиков.
        - Задан ID пользователя клиента.
        - Задан логин для приглашения.
        - Пользователь клиента по заданному ID существует.
        - Пользователь клиента принадлежит заданному клиенту.
        - Логин задан корректно.
        - Список типов подписания для включения при приглашении пользователя задан корректно.
        - Если в теле запроса задан тип канала подтверждения подписания УНЭП, в списке типов подписания для включения должен быть задан УНЭП.
        - Если в теле запроса задан тип канала подтверждения подписания ПРР, данные для включения возможности подписания через ПРР заданы корректно.
        - Проверяет, что пользователь клиента, который осуществляет приглашение, не совпадает с приглашаемым пользователем.
        - Проверяет, что текущий пользователь относится к заданному клиенту и возвращает пользователя клиента, если он существует.
        - Проверяет, что ID клиента, заданный в виде строки, соответствует формату, и возвращает типизированный ID клиента.
        - Проверяет существование клиента по заданному ID и возвращает клиента, если он существует.
        - Проверяет, что клиент не удален.
        - Возвращает результат неуспешно пройденной проверки.
        - Проверка пройдена?
        - Список данных для включения ПРР задан и не пустой.
        - Список данных для включения ПРР не содержит пустых элементов.
        - Пользователь клиента, выполняющий операцию, имеет право `CLIENT_USERS_INVITE` на уровне пользователя клиента или право `CLIENT_USERS_INVITE` на уровне юрлица, в котором происходит включение подписания через ПРР.
        - ID юрлиц заданы корректно.
        - ID руководителей заданы корректно.
        - Среди ID юрлиц нет повторяющихся данных.
        - Проверяет, что ID пользователя клиента задан в данных приглашения.
        - Проверяет, что заданный пользователь клиента принадлежит клиенту с заданным ID.
        - В списке нет дубликатов типов подписания.
        - В списке нет одновременно значений «УНЭП с очной идентификацией» и «УНЭП с удалённой идентификацией».
        - Заданные типы подписания можно включать при заданном типе приглашения.
        - Проверяет, что в данных пользователей для включения типов подписания содержится одно из значений УНЭП: `NQES_REMOTE` или `NQES_IN_PERSON`.
        - ID юрлица задано.
        - Юрлицо существует по заданному ID.
        - Юрлицо относится к заданному клиенту.
        - Пользователь имеет доступ к заданному юрлицу.
        - Проверяет, что в списке ID юрлиц, переданного в данных для включения возможности подписания через ПРР нет дубликатов.
        - ID руководителя задан.
        - Руководитель задан корректно.
        - Проверяет, что в списке типов подписания для включения не содержится дубликатов.
        - Проверяет, что среди типов подписания для включения нет одновременно значений УНЭП с удалённой и очной идентификацией.
        - Проверяет, что типы подписания для включения можно задавать при данном типе приглашения.
        - Проверяет, что ID юрлица задан.
        - Проверяет, что юрлицо клиента существует по заданным ID и возвращает юрлицо клиента, если он существует.
        - Проверяет, что заданное юрлицо относится к заданному клиенту.
        - Проверяет, что список ID юрлиц содержит только доступные юрлица.
        - Проверяет, что ID руководителя задан.
        - Руководитель существует по заданному ID.
        - Руководитель относится к заданному клиенту.
        - Руководитель относится к заданному юрлицу.
        - Руководитель обладает правом `HEAD_MANAGER`.
        - Руководитель является активным и не уволенным.
        - Проверяет, что сотрудник по заданному ID существует.
        - Проверяет, что сотрудник принадлежит клиенту с заданным ID.
        - Проверяет, что сотрудник относится к юрлицу.
        - Проверяет, что данный сотрудник работает.
        - Проверяет, что сотрудник по заданному ID во внешней системе существует и возвращает его, если он существует.
        - Если юрлицо указано, то существование сотрудника проверяется в заданном юрлице.
        - Если юрлицо не указано, то существование сотрудника проверяется в клиенте с заданным ID.
        - Проверяет, что заданный сотрудник относится к заданному клиенту.
      parameters:
        - $ref: '#/components/parameters/FormatParameter'
        - name: Impersonated-User-Id
          description: Идентификатор пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            format: uuid
        - name: Impersonated-User-Id-Type
          description: Тип идентификатора пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            enum:
              - HR_LINK_ID
              - SNILS
              - EXTERNAL_ID
        - name: Impersonated-User-Id-External-System-Type
          description: |
            Идентификатор внешней системы при аутентификации через мастер-токен.
          in: header
          schema:
            type: string
        - name: clientId
          in: path
          required: true
          description: Идентификатор клиента.
          schema:
            type: string
            format: uuid
      requestBody:
        description: Тело запроса ManyClientUserInvitationsDTO
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ManyClientUserInvitationsDTO'
      responses:
        '200':
          description: Успешная операция.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    type: boolean
                  invitations:
                    type: array
                    description: Список выполненных приглашений.
                    items:
                      $ref: '#/components/schemas/InvitedClientUserDTO'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '429':
          $ref: '#/components/responses/TooManyRequests'
  /api/v1/clients/{clientId}/usersByExternalId/{userExternalId}/nqesChannelChangeRequests:
    post:
      tags:
        - nqesIssuing
      summary: Сменить канал УНЭП по внешнему ID
      operationId: clientUserNqesChannelChangingChangeNqesChannelByExternalId
      security:
        - SessionCookieAuth: []
        - UserApiTokenAuth: []
        - MasterTokenAuth: []
      description: |
        ### Описание метода

        Создаёт запрос на запуск процесса смены канала подписания УНЭП пользователя клиента.

        ### Валидации запроса

        - Тело запроса задано.
        - Указанный пользователь клиента по ID во внешней системе существует.
        - Клиент существует, не удалён, и к нему относится пользователь, выполняющий операцию.
        - Пользователь клиента является подтверждённым.
        - Пользователь клиента не отключен от системы.
        - Пользователь не имеет активного запроса для операции запуска процесса смены канала подписания УНЭП.
        - Пользователь выпустил УНЭП.
        - У пользователя завершен процесс выпуска УНЭП.
        - Новое текстовое значение канала подписания УНЭП задано корректно.
        - Переданный новый канал подтверждения подписания в заявке на выпуск УНЭП отличается от текущего активного.
        - Текущий пользователь клиента имеет право для создания запроса на запуск процесса смены канала подписания УНЭП.
        - ID клиента соответствует формату UUID.
        - По заданному ID клиента существует клиент.
        - Пользователь, выполняющий операцию, относится к клиенту.
        - Проверяет, что текущий пользователь относится к заданному клиенту и возвращает пользователя клиента, если он существует.
        - Проверяет, что ID клиента, заданный в виде строки, соответствует формату, и возвращает типизированный ID клиента.
        - Проверяет существование клиента по заданному ID и возвращает клиента, если он существует.
        - Проверяет, что клиент не удален.
      parameters:
        - $ref: '#/components/parameters/FormatParameter'
        - name: Impersonated-User-Id
          description: Идентификатор пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            format: uuid
        - name: Impersonated-User-Id-Type
          description: Тип идентификатора пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            enum:
              - HR_LINK_ID
              - SNILS
              - EXTERNAL_ID
        - name: Impersonated-User-Id-External-System-Type
          description: |
            Идентификатор внешней системы при аутентификации через мастер-токен.
          in: header
          schema:
            type: string
        - name: clientId
          in: path
          required: true
          description: Идентификатор клиента.
          schema:
            type: string
            format: uuid
        - name: userExternalId
          in: path
          required: true
          description: Идентификатор пользователя во внешней системе.
          schema:
            type: string
      requestBody:
        description: Тело запроса NqesChannelChangeDTO
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/NqesChannelChangeDTO'
      responses:
        '200':
          description: Успешная операция.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    type: boolean
                  request:
                    type: object
                    properties:
                      id:
                        description: Идентификатор запроса на смену канала подписания УНЭП пользователя.
                        type: string
                        format: uuid
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '429':
          $ref: '#/components/responses/TooManyRequests'
  /api/v1/clients/{clientId}/users/{clientUserId}/employeeRoles:
    get:
      tags:
        - users
      summary: Получить роли сотрудника пользователя клиента по юрлицам
      operationId: clientUserEmployeeRoleGetClientUserWithEmployeeRoles
      security:
        - SessionCookieAuth: []
        - UserApiTokenAuth: []
        - MasterTokenAuth: []
      description: |
        ### Описание метода

        Возвращает данные пользователя клиента вместе с его ролями сотрудника, сгруппированными по юрлицам.
        Роли берутся как на уровне сотрудника (для неуволенных сотрудников), так и через связки прав сотрудника пользователя клиента в конкретных юрлицах.

        ### Необходимые права

        `CLIENT_USER_EMPLOYEE_ROLES` на уровне пользователя клиента.
      parameters:
        - name: Impersonated-User-Id
          description: Идентификатор пользователя при аутентификации через мастер-токен.
          in: header
          schema:
            type: string
            format: uuid
        - name: Impersonated-User-Id-Type
          description: Тип идентификатора пользователя при аутентификации через мастер-токен.
          in: header
          schema:
            type: string
            enum:
              - HR_LINK_ID
              - SNILS
              - EXTERNAL_ID
        - name: Impersonated-User-Id-External-System-Type
          description: Идентификатор внешней системы при аутентификации через мастер-токен.
          in: header
          schema:
            type: string
        - name: clientId
          in: path
          required: true
          description: Идентификатор клиента.
          schema:
            type: string
            format: uuid
        - name: clientUserId
          in: path
          required: true
          description: Идентификатор пользователя клиента.
          schema:
            type: string
            format: uuid
      responses:
        '200':
          description: Успешная операция.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    type: boolean
                  clientUser:
                    $ref: '#/components/schemas/ClientUserWithEmployeeRolesGroupedByLegalEntityDTO'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '429':
          $ref: '#/components/responses/TooManyRequests'
    put:
      tags:
        - users
      summary: Создать или обновить роли сотрудника пользователя клиента
      operationId: clientUserEmployeeRoleCreateOrUpdate
      security:
        - SessionCookieAuth: []
        - UserApiTokenAuth: []
        - MasterTokenAuth: []
      description: |
        ### Описание метода

        > **⚠️ Будьте осторожны!**
        >
        > Методы PUT перезаписывают запись целиком: любые непереданные поля считаются null и затирают данные в БД.
        > Поэтому при обновлении нужно указывать все поля.

        Создаёт или обновляет роли сотрудника пользователя клиента в указанных юрлицах. Позволяет назначить кадровику или руководителю права в юрлицах, где они не числятся как сотрудники.

        ### Необходимые права

        `CLIENT_USER_EMPLOYEE_ROLES_UPDATE` на уровне пользователя клиента.

        ### Валидации запроса

        - У пользователя клиента должен существовать активный сотрудник хотя бы в одном юрлице.
        - Для каждой роли из тела запроса у пользователя должен быть сотрудник с аналогичной ролью в каком-либо юрлице.
        - В указанных юрлицах не должно быть активного сотрудника этого пользователя.
      parameters:
        - name: Impersonated-User-Id
          description: Идентификатор пользователя при аутентификации через мастер-токен.
          in: header
          schema:
            type: string
            format: uuid
        - name: Impersonated-User-Id-Type
          description: Тип идентификатора пользователя при аутентификации через мастер-токен.
          in: header
          schema:
            type: string
            enum:
              - HR_LINK_ID
              - SNILS
              - EXTERNAL_ID
        - name: Impersonated-User-Id-External-System-Type
          description: Идентификатор внешней системы при аутентификации через мастер-токен.
          in: header
          schema:
            type: string
        - name: clientId
          in: path
          required: true
          description: Идентификатор клиента.
          schema:
            type: string
            format: uuid
        - name: clientUserId
          in: path
          required: true
          description: Идентификатор пользователя клиента.
          schema:
            type: string
            format: uuid
      requestBody:
        description: Роли сотрудника по юрлицам.
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateClientUserEmployeeRoleDTO'
      responses:
        '200':
          description: Успешная операция.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    type: boolean
                  clientUser:
                    $ref: '#/components/schemas/ClientUserWithEmployeeRolesGroupedByLegalEntityDTO'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '429':
          $ref: '#/components/responses/TooManyRequests'
  /api/v1/clients/{clientId}/users/{clientUserId}/employeesAndRoles:
    get:
      tags:
        - users
      summary: Получить сотрудников и роли пользователя клиента
      operationId: clientUserEmployeeRoleGetEmployeesAndRoles
      security:
        - SessionCookieAuth: []
        - UserApiTokenAuth: []
        - MasterTokenAuth: []
      description: |
        ### Описание метода

        Возвращает всех активных сотрудников пользователя клиента и все его роли-связки в юрлицах, где у пользователя нет сотрудника.
      parameters:
        - name: Impersonated-User-Id
          description: Идентификатор пользователя при аутентификации через мастер-токен.
          in: header
          schema:
            type: string
            format: uuid
        - name: Impersonated-User-Id-Type
          description: Тип идентификатора пользователя при аутентификации через мастер-токен.
          in: header
          schema:
            type: string
            enum:
              - HR_LINK_ID
              - SNILS
              - EXTERNAL_ID
        - name: Impersonated-User-Id-External-System-Type
          description: Идентификатор внешней системы при аутентификации через мастер-токен.
          in: header
          schema:
            type: string
        - name: clientId
          in: path
          required: true
          description: Идентификатор клиента.
          schema:
            type: string
            format: uuid
        - name: clientUserId
          in: path
          required: true
          description: Идентификатор пользователя клиента.
          schema:
            type: string
            format: uuid
      responses:
        '200':
          description: Успешная операция.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    type: boolean
                  employeesAndRoles:
                    $ref: '#/components/schemas/GetEmployeesAndRolesResponseDto'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '429':
          $ref: '#/components/responses/TooManyRequests'
  /api/v1/clients/{clientId}/users/issue/nqes:
    post:
      tags:
        - nqesIssuing
      summary: Выпустить УНЭП
      operationId: clientUserNqesIssuingIssueNqes
      security:
        - SessionCookieAuth: []
        - UserApiTokenAuth: []
        - MasterTokenAuth: []
      description: |
        ### Описание метода

        ### Валидации запроса

        - Клиент существует, не удалён, и к нему относится пользователь, выполняющий операцию.
        - Пользователи клиента, которым будет инициирован выпуск УНЭП, должны быть уникальными.
        - Текущий пользователь клиента имеет право для создания заявки на выпуск УНЭП сотруднику или на уровне ролей пользователя клиента или на уровне ролей сотрудников клиента.
        - Указанные пользователи клиента существуют.
        - Пользователи клиента принадлежат указанному клиенту.
        - Пользователи клиента являются подтверждёнными.
        - Если номера телефонов сотрудников заданы, они являются корректными.
        - Если электронные почты сотрудников заданы, они корректны и не превышают допустимой длины.
        - Каналы подтверждения для сотрудников заданы.
        - Данные для выпуска УНЭП корректны.
        - Пользователь не имеет активного запроса для операции запуска процесса смены канала подписания УНЭП.
        - У пользователей нет активного УНЭП.
        - Пользователи не ожидают выпуск УНЭП.
        - Правила валидации для конкретного провайдера выполнены.
        - Проверяет, что канал подтверждения задан.
        - ID клиента соответствует формату UUID.
        - По заданному ID клиента существует клиент.
        - Пользователь, выполняющий операцию, относится к клиенту.
        - Проверяет, что пользователи клиента, которым будет инициирован выпуск УНЭП
        - уникальны.
        - Проверяет, что заданный пользователь клиента имеет заданное право или уровне ролей пользователя клиента или на уровне ролей сотрудников клиента.
        - Проверяет, что заданный пользователь клиента принадлежит клиенту с заданным ID.
        - Проверяет, что пользователь клиента является подтверждённым.
        - Проверяет, что пользователь не имеет активного запроса для операции запуска процесса смены канала подписания УНЭП.
        - Проверяет что у пользователя нет активного УНЭП.
        - Проверяет что пользователь не ожидает выпуск УНЭП.
        - Проверяет, что верификация СНИЛС человека прошла успешно или не требуется.
        - Проверяет, что текущий пользователь относится к заданному клиенту и возвращает пользователя клиента, если он существует.
        - Проверяет, что ID клиента, заданный в виде строки, соответствует формату, и возвращает типизированный ID клиента.
        - Проверяет существование клиента по заданному ID и возвращает клиента, если он существует.
        - Проверяет, что клиент не удален.
      parameters:
        - $ref: '#/components/parameters/FormatParameter'
        - name: Impersonated-User-Id
          description: Идентификатор пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            format: uuid
        - name: Impersonated-User-Id-Type
          description: Тип идентификатора пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            enum:
              - HR_LINK_ID
              - SNILS
              - EXTERNAL_ID
        - name: Impersonated-User-Id-External-System-Type
          description: |
            Идентификатор внешней системы при аутентификации через мастер-токен.
          in: header
          schema:
            type: string
        - name: clientId
          in: path
          required: true
          description: Идентификатор клиента.
          schema:
            type: string
            format: uuid
      requestBody:
        description: Тело запроса ClientUsersNqesIssuingDTO
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ClientUsersNqesIssuingDTO'
      responses:
        '200':
          description: Успешная операция.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    type: boolean
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '429':
          $ref: '#/components/responses/TooManyRequests'
  /api/v1/clients/{clientId}/users/nqesIssues/cancel:
    post:
      tags:
        - nqesIssuing
      summary: Отменить выпуск УНЭП
      operationId: clientUserNqesIssuingCancel
      security:
        - SessionCookieAuth: []
        - UserApiTokenAuth: []
        - MasterTokenAuth: []
      description: |
        ### Описание метода

        Производит отмену заявки на выпуск УНЭП пользователю клиента.

        ### Валидации запроса

        - Клиент существует, не удалён, и к нему относится пользователь, выполняющий операцию.
        - Пользователь клиента, которому будет отменена задача на выпуск УНЭП существует.
        - Текущий пользователь имеет право на отмену задачи на выпуск УНЭП.
        - Пользователь имеет задачу на выпуск УНЭП для отмены.
        - ID клиента соответствует формату UUID.
        - По заданному ID клиента существует клиент.
        - Пользователь, выполняющий операцию, относится к клиенту.
        - Проверяет, есть ли у пользователя клиента с заданным ID заданное право и возвращает кэш наличия прав у пользователя клиента.
        - Проверяет, что у пользователя есть задача на выпуск УНЭП в корректном для отмены статусе и возвращает ID задачи.
        - Проверяет, что текущий пользователь относится к заданному клиенту и возвращает пользователя клиента, если он существует.
        - Проверяет, что ID клиента, заданный в виде строки, соответствует формату, и возвращает типизированный ID клиента.
        - Проверяет существование клиента по заданному ID и возвращает клиента, если он существует.
        - Проверяет, что клиент не удален.
      parameters:
        - $ref: '#/components/parameters/FormatParameter'
        - name: Impersonated-User-Id
          description: Идентификатор пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            format: uuid
        - name: Impersonated-User-Id-Type
          description: Тип идентификатора пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            enum:
              - HR_LINK_ID
              - SNILS
              - EXTERNAL_ID
        - name: Impersonated-User-Id-External-System-Type
          description: |
            Идентификатор внешней системы при аутентификации через мастер-токен.
          in: header
          schema:
            type: string
        - name: clientId
          in: path
          required: true
          description: Идентификатор клиента.
          schema:
            type: string
            format: uuid
      requestBody:
        description: Тело запроса CancelNqesIssueRequestDto
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CancelNqesIssueRequestDto'
      responses:
        '200':
          description: Успешная операция.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    type: boolean
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '429':
          $ref: '#/components/responses/TooManyRequests'
  /api/v1/clients/{clientId}/usersByExternalId/{clientUserExternalId}/substitutions:
    post:
      tags:
        - substitutions
      summary: Создать замещение по внешнему ID
      operationId: clientUserSubstitutionCreateClientUserSubstitutionByExternalId
      security:
        - SessionCookieAuth: []
        - UserApiTokenAuth: []
        - MasterTokenAuth: []
      description: |
        ### Описание метода

        Добавляет пользователю заместителя.

        ### Валидации запроса

        - Тело запроса задано.
        - ID клиента соответствует формату UUID.
        - Клиент существует по заданному ID.
        - Замещаемый пользователь клиента существует по заданному внешнему ID.
        - Данные замещения заданы корректно.
      parameters:
        - $ref: '#/components/parameters/FormatParameter'
        - name: Impersonated-User-Id
          description: Идентификатор пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            format: uuid
        - name: Impersonated-User-Id-Type
          description: Тип идентификатора пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            enum:
              - HR_LINK_ID
              - SNILS
              - EXTERNAL_ID
        - name: Impersonated-User-Id-External-System-Type
          description: |
            Идентификатор внешней системы при аутентификации через мастер-токен.
          in: header
          schema:
            type: string
        - name: clientId
          in: path
          required: true
          description: Идентификатор клиента.
          schema:
            type: string
            format: uuid
        - name: clientUserExternalId
          in: path
          required: true
          description: Идентификатор пользователя клиента во внешней системе.
          schema:
            type: string
      requestBody:
        description: Тело запроса CreateSubstitutionRequestDto
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateSubstitutionRequestDto'
      responses:
        '200':
          description: Успешная операция.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    type: boolean
                  substitutedBy:
                    $ref: '#/components/schemas/SubstitutionResponseDto'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '429':
          $ref: '#/components/responses/TooManyRequests'
  /api/v1/clients/{clientId}/usersByExternalId/{clientUserExternalId}/substitutions/{substitutionId}:
    delete:
      tags:
        - substitutions
      summary: Удалить замещение по внешнему ID
      operationId: clientUserSubstitutionDeleteClientUserSubstitutionByExternalId
      security:
        - SessionCookieAuth: []
        - UserApiTokenAuth: []
        - MasterTokenAuth: []
      description: |
        ### Описание метода

        Удаляет замещение пользователя по идентификатору пользователя во внешней системе.

        ### Валидации запроса

        - ID клиента соответствует формату UUID.
        - Клиент должен существовать по заданному ID.
        - Замещаемый пользователь клиента существует по заданному ID во внешней системе. Замещаемый пользователь клиента относится к заданному клиенту.
        - Валидации операции удаления замещения.
      parameters:
        - $ref: '#/components/parameters/FormatParameter'
        - name: Impersonated-User-Id
          description: Идентификатор пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            format: uuid
        - name: Impersonated-User-Id-Type
          description: Тип идентификатора пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            enum:
              - HR_LINK_ID
              - SNILS
              - EXTERNAL_ID
        - name: Impersonated-User-Id-External-System-Type
          description: |
            Идентификатор внешней системы при аутентификации через мастер-токен.
          in: header
          schema:
            type: string
        - name: clientId
          in: path
          required: true
          description: Идентификатор клиента.
          schema:
            type: string
            format: uuid
        - name: clientUserExternalId
          in: path
          required: true
          description: Идентификатор пользователя клиента во внешней системе.
          schema:
            type: string
        - name: substitutionId
          in: path
          required: true
          description: Идентификатор замещения в HRlink.
          schema:
            type: string
            format: uuid
      requestBody:
        description: Тело запроса VersionDTO
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/VersionDTO'
      responses:
        '200':
          description: Успешная операция.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    type: boolean
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '429':
          $ref: '#/components/responses/TooManyRequests'
  /api/v1/clients/{clientId}/customStructures:
    get:
      tags:
        - customStructures
      summary: Получить справочники
      operationId: customStructureGetAll
      security:
        - SessionCookieAuth: []
        - UserApiTokenAuth: []
        - MasterTokenAuth: []
      description: |
        ### Описание метода

        ### Валидации запроса

        - Клиент существует, не удалён, и к нему относится пользователь, выполняющий операцию.
        - Пользователь, выполняющий операцию, должен являться пользователем данного клиента.
        - Контекстное право должно быть задано.
        - Контекстное право должно разрешать получение реестра пользовательских структур.
        - У пользователя, выполняющего операцию, должно быть право на уровне пользователя клиента или сотрудника клиента, соответствующее переданному контекстному праву.
        - ID клиента соответствует формату UUID.
        - По заданному ID клиента существует клиент.
        - Пользователь, выполняющий операцию, относится к клиенту.
        - Проверяет, есть ли у пользователя клиента заданное право с учётом контекста текущей операции.
        - Метод используется для валидаций контекстного права в новых методах, которые не требуют обратной совместимости.
        - Проверяет, что текущий пользователь относится к заданному клиенту и возвращает пользователя клиента, если он существует.
        - Проверяет, что ID клиента, заданный в виде строки, соответствует формату, и возвращает типизированный ID клиента.
        - Проверяет существование клиента по заданному ID и возвращает клиента, если он существует.
        - Проверяет, что клиент не удален.
        - Проверяет, есть ли у пользователя клиента с заданным ID заданное хотя бы одно из указанных прав на уровне пользователя клиента или на уровне активного (неуволенного) сотрудника.
        - Проверяет, есть ли у пользователя клиента заданное право с учётом контекста текущей операции и возвращает кеш наличия прав у пользователя клиента.
        - Проверяет, что существует право на уровне пользователя клиента или на уровне сотрудника, соответствующее контекстному праву.
      parameters:
        - $ref: '#/components/parameters/FormatParameter'
        - name: Impersonated-User-Id
          description: Идентификатор пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            format: uuid
        - name: Impersonated-User-Id-Type
          description: Тип идентификатора пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            enum:
              - HR_LINK_ID
              - SNILS
              - EXTERNAL_ID
        - name: Impersonated-User-Id-External-System-Type
          description: |
            Идентификатор внешней системы при аутентификации через мастер-токен.
          in: header
          schema:
            type: string
        - name: clientId
          in: path
          required: true
          description: Идентификатор клиента.
          schema:
            type: string
            format: uuid
        - name: permissionContext
          in: query
          description: |
            Контекстное право, , в контексте которого выполняется операция.
            - `CUSTOM_STRUCTURES_CREATE` — Право создания пользовательского справочника структур.
            - `CUSTOM_STRUCTURES_UPDATE` — Право редактировать пользовательский справочник структур.
            - `CUSTOM_STRUCTURES` — Право на получение пользовательских справочников структур.
            - `EMPLOYEES` — Право для получения сотрудников.
            - `DOCUMENTS` — Право на получение документов.
            - `APPLICATION_GROUPS` — Право для получения групп заявлений.
            - `APPLICATION_TYPES_CREATE` — Право для создания типов заявлений.
            - `APPLICATION_TYPES_UPDATE` — Право для обновления типов заявлений.
            - `PERMITTED_CUSTOM_STRUCTURE_ELEMENTS` — Право на получение разрешенных пользовательских справочников структур.
            - `PERMITTED_CUSTOM_STRUCTURE_ELEMENTS_UPDATE` — Право на обновление разрешенных пользовательских справочников структур.
          schema:
            type: string
            enum:
              - CUSTOM_STRUCTURES_CREATE
              - CUSTOM_STRUCTURES_UPDATE
              - CUSTOM_STRUCTURES
              - EMPLOYEES
              - DOCUMENTS
              - APPLICATION_GROUPS
              - APPLICATION_TYPES_CREATE
              - APPLICATION_TYPES_UPDATE
              - PERMITTED_CUSTOM_STRUCTURE_ELEMENTS
              - PERMITTED_CUSTOM_STRUCTURE_ELEMENTS_UPDATE
      responses:
        '200':
          description: Успешная операция.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    type: boolean
                  customStructures:
                    type: array
                    description: Список с данными пользовательских справочников.
                    items:
                      $ref: '#/components/schemas/CustomStructureRegistryResponseDTO'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '429':
          $ref: '#/components/responses/TooManyRequests'
    post:
      tags:
        - customStructures
      summary: Создать справочник
      operationId: customStructureCreate
      security:
        - SessionCookieAuth: []
        - UserApiTokenAuth: []
        - MasterTokenAuth: []
      description: |
        ### Описание метода

        ### Валидации запроса

        - Тело запроса задано.
        - Клиент существует, не удалён, и к нему относится пользователь, выполняющий операцию.
        - ID пользовательской структуры во внешней системе уникален в клиенте.
        - Название пользовательского справочника имеет корректную длину.
        - Описание пользовательского справочника имеет корректную длину.
        - Название пользовательского справочника уникально в клиенте.
        - Код цвета пользовательского справочника структур имеет допустимый формат.
        - У пользователя клиента должно быть право `CUSTOM_STRUCTURES_CREATE` на уровне пользователя клиента.
        - ID клиента соответствует формату UUID.
        - По заданному ID клиента существует клиент.
        - Пользователь, выполняющий операцию, относится к клиенту.
        - Проверяет, что название пользовательского справочника структур имеет корректную длину.
        - Проверяет, что описание пользовательского справочника структур имеет корректную длину.
        - Проверяет, что название пользовательского справочника структур уникально в клиенте.
        - Проверяет, что код цвета пользовательского справочника структур имеет допустимый формат.
        - Проверяет, есть ли у пользователя клиента с заданным ID заданное право на уровне пользователя клиента.
        - Проверяет, что текущий пользователь относится к заданному клиенту и возвращает пользователя клиента, если он существует.
        - Проверяет, что ID клиента, заданный в виде строки, соответствует формату, и возвращает типизированный ID клиента.
        - Проверяет существование клиента по заданному ID и возвращает клиента, если он существует.
        - Проверяет, что клиент не удален.
      parameters:
        - $ref: '#/components/parameters/FormatParameter'
        - name: Impersonated-User-Id
          description: Идентификатор пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            format: uuid
        - name: Impersonated-User-Id-Type
          description: Тип идентификатора пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            enum:
              - HR_LINK_ID
              - SNILS
              - EXTERNAL_ID
        - name: Impersonated-User-Id-External-System-Type
          description: |
            Идентификатор внешней системы при аутентификации через мастер-токен.
          in: header
          schema:
            type: string
        - name: clientId
          in: path
          required: true
          description: Идентификатор клиента.
          schema:
            type: string
            format: uuid
      requestBody:
        description: Тело запроса CreateCustomStructureRequestDTO
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateCustomStructureRequestDTO'
      responses:
        '200':
          description: Успешная операция.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    type: boolean
                  customStructure:
                    $ref: '#/components/schemas/CustomStructureResponseDTO'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '429':
          $ref: '#/components/responses/TooManyRequests'
  /api/v1/clients/{clientId}/customStructures/{customStructureId}:
    get:
      tags:
        - customStructures
      summary: Получить справочник
      operationId: customStructureGet
      security:
        - SessionCookieAuth: []
        - UserApiTokenAuth: []
        - MasterTokenAuth: []
      description: |
        ### Описание метода

        ### Валидации запроса

        - Тело запроса задано.
        - Клиент существует, не удалён, и к нему относится пользователь, выполняющий операцию.
        - ID пользовательского справочника структур указан корректно.
        - Пользовательский справочник структур с заданным ID существует в системе.
        - Проверяет, что ID пользовательского справочника структур указан корректно и пользовательский справочник структур с заданным ID существует в системе, и возвращает пользовательский справочник структур, если он существует.
        - ID клиента соответствует формату UUID.
        - По заданному ID клиента существует клиент.
        - Пользователь, выполняющий операцию, относится к клиенту.
        - Проверяет, что заданное контекстное право существует и соответствует контексту получения пользовательской структуры для текущего пользователя.
        - Проверяет, что текущий пользователь относится к заданному клиенту и возвращает пользователя клиента, если он существует.
        - Проверяет, что ID клиента, заданный в виде строки, соответствует формату, и возвращает типизированный ID клиента.
        - Проверяет существование клиента по заданному ID и возвращает клиента, если он существует.
        - Проверяет, что клиент не удален.
        - Проверяет, что заданное контекстное право существует.
      parameters:
        - $ref: '#/components/parameters/FormatParameter'
        - name: Impersonated-User-Id
          description: Идентификатор пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            format: uuid
        - name: Impersonated-User-Id-Type
          description: Тип идентификатора пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            enum:
              - HR_LINK_ID
              - SNILS
              - EXTERNAL_ID
        - name: Impersonated-User-Id-External-System-Type
          description: |
            Идентификатор внешней системы при аутентификации через мастер-токен.
          in: header
          schema:
            type: string
        - name: clientId
          in: path
          required: true
          description: Идентификатор клиента.
          schema:
            type: string
            format: uuid
        - name: customStructureId
          in: path
          required: true
          description: ID пользовательского справочника.
          schema:
            type: string
            format: uuid
        - name: permissionContext
          in: query
          description: |
            Контекстное право, , в контексте которого выполняется операция.
            - `CUSTOM_STRUCTURES_CREATE` — Право создания пользовательского справочника структур.
            - `CUSTOM_STRUCTURES_UPDATE` — Право редактировать пользовательский справочник структур.
            - `CUSTOM_STRUCTURES` — Право на получение пользовательских справочников структур.
            - `EMPLOYEES` — Право для получения сотрудников.
            - `DOCUMENTS` — Право на получение документов.
            - `APPLICATION_GROUPS` — Право для получения групп заявлений.
          schema:
            type: string
            enum:
              - CUSTOM_STRUCTURES_CREATE
              - CUSTOM_STRUCTURES_UPDATE
              - CUSTOM_STRUCTURES
              - EMPLOYEES
              - DOCUMENTS
              - APPLICATION_GROUPS
      responses:
        '200':
          description: Успешная операция.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    type: boolean
                  customStructure:
                    $ref: '#/components/schemas/GetCustomStructurePermittedData'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '429':
          $ref: '#/components/responses/TooManyRequests'
    put:
      tags:
        - customStructures
      summary: Обновить справочник
      operationId: customStructureUpdate
      security:
        - SessionCookieAuth: []
        - UserApiTokenAuth: []
        - MasterTokenAuth: []
      description: |
        ### Описание метода

        > **⚠️ Будьте осторожны!**
        >
        > Методы PUT перезаписывают запись целиком: любые непереданные поля считаются null и затирают данные в БД.
        > Поэтому при обновлении нужно указывать все поля.

        ### Валидации запроса

        - Тело запроса задано.
        - Клиент существует, не удалён, и к нему относится пользователь, выполняющий операцию.
        - ID пользовательского справочника структур указан корректно.
        - Пользовательский справочник структур с заданным ID существует в системе.
        - Описание пользовательского справочника структур имеет корректную длину.
        - Другого пользовательского справочника структур с заданным названием не существует в системе.
        - Другого пользовательского справочника структур с заданным ID во внешней системе не существует.
        - Название пользовательского справочника структур имеет корректную длину.
        - Код цвета пользовательского справочника структур имеет допустимый формат.
        - Указана корректная версия данных пользовательского справочника структур.
        - У пользователя клиента должно быть право `CUSTOM_STRUCTURES_UPDATE` на уровне пользователя клиента.
        - Проверяет, что ID пользовательского справочника структур указан корректно и пользовательский справочник структур с заданным ID существует в системе, и возвращает пользовательский справочник структур, если он существует.
        - ID клиента соответствует формату UUID.
        - По заданному ID клиента существует клиент.
        - Пользователь, выполняющий операцию, относится к клиенту.
        - Проверяет, что описание пользовательского справочника структур имеет корректную длину.
        - Проверяет, что другого пользовательского справочника структур с заданным названием не существует в клиенте.
        - Проверяет, что другого пользовательского справочника структур с заданным ID во внешней системе не существует в клиенте.
        - Проверяет, что название пользовательского справочника структур имеет корректную длину.
        - Проверяет, что код цвета пользовательского справочника структур имеет допустимый формат.
        - Проверяет, что указана корректная версия данных пользовательского справочника структур.
        - Проверяет, есть ли у пользователя клиента с заданным ID заданное право на уровне пользователя клиента.
        - Проверяет, что текущий пользователь относится к заданному клиенту и возвращает пользователя клиента, если он существует.
        - Проверяет, что ID клиента, заданный в виде строки, соответствует формату, и возвращает типизированный ID клиента.
        - Проверяет существование клиента по заданному ID и возвращает клиента, если он существует.
        - Проверяет, что клиент не удален.
      parameters:
        - $ref: '#/components/parameters/FormatParameter'
        - name: Impersonated-User-Id
          description: Идентификатор пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            format: uuid
        - name: Impersonated-User-Id-Type
          description: Тип идентификатора пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            enum:
              - HR_LINK_ID
              - SNILS
              - EXTERNAL_ID
        - name: Impersonated-User-Id-External-System-Type
          description: |
            Идентификатор внешней системы при аутентификации через мастер-токен.
          in: header
          schema:
            type: string
        - name: clientId
          in: path
          required: true
          description: Идентификатор клиента.
          schema:
            type: string
            format: uuid
        - name: customStructureId
          in: path
          required: true
          description: ID пользовательского справочника.
          schema:
            type: string
            format: uuid
      requestBody:
        description: Тело запроса UpdateCustomStructureRequestDTO
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateCustomStructureRequestDTO'
      responses:
        '200':
          description: Успешная операция.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    type: boolean
                  customStructure:
                    $ref: '#/components/schemas/CustomStructureResponseDTO'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '429':
          $ref: '#/components/responses/TooManyRequests'
  /api/v1/clients/{clientId}/customStructuresByExternalId/{customStructureExternalId}:
    get:
      tags:
        - customStructures
      summary: Получить справочник по внешнему ID
      operationId: customStructureGetByExternalId
      security:
        - SessionCookieAuth: []
        - UserApiTokenAuth: []
        - MasterTokenAuth: []
      description: |
        ### Описание метода

        ### Валидации запроса

        - Тело запроса задано.
        - Клиент существует, не удалён, и к нему относится пользователь, выполняющий операцию.
        - ID пользовательского справочника структур указан корректно.
        - Пользовательский справочник структур с заданным ID существует в системе.
        - Проверяет, что ID пользовательского справочника структур указан корректно и пользовательский справочник структур с заданным ID существует в системе, и возвращает пользовательский справочник структур, если он существует.
        - ID клиента соответствует формату UUID.
        - По заданному ID клиента существует клиент.
        - Пользователь, выполняющий операцию, относится к клиенту.
        - Проверяет, что заданное контекстное право существует и соответствует контексту получения пользовательской структуры для текущего пользователя.
        - Проверяет, что текущий пользователь относится к заданному клиенту и возвращает пользователя клиента, если он существует.
        - Проверяет, что ID клиента, заданный в виде строки, соответствует формату, и возвращает типизированный ID клиента.
        - Проверяет существование клиента по заданному ID и возвращает клиента, если он существует.
        - Проверяет, что клиент не удален.
        - Проверяет, что заданное контекстное право существует.
      parameters:
        - $ref: '#/components/parameters/FormatParameter'
        - name: Impersonated-User-Id
          description: Идентификатор пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            format: uuid
        - name: Impersonated-User-Id-Type
          description: Тип идентификатора пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            enum:
              - HR_LINK_ID
              - SNILS
              - EXTERNAL_ID
        - name: Impersonated-User-Id-External-System-Type
          description: |
            Идентификатор внешней системы при аутентификации через мастер-токен.
          in: header
          schema:
            type: string
        - name: clientId
          in: path
          required: true
          description: Идентификатор клиента.
          schema:
            type: string
            format: uuid
        - name: customStructureExternalId
          in: path
          required: true
          description: Внешний ID пользовательского справочника.
          schema:
            type: string
        - name: permissionContext
          in: query
          description: |
            Контекстное право, , в контексте которого выполняется операция.
            - `CUSTOM_STRUCTURES_CREATE` — Право создания пользовательского справочника структур.
            - `CUSTOM_STRUCTURES_UPDATE` — Право редактировать пользовательский справочник структур.
            - `CUSTOM_STRUCTURES` — Право на получение пользовательских справочников структур.
            - `EMPLOYEES` — Право для получения сотрудников.
            - `DOCUMENTS` — Право на получение документов.
            - `APPLICATION_GROUPS` — Право для получения групп заявлений.
          schema:
            type: string
            enum:
              - CUSTOM_STRUCTURES_CREATE
              - CUSTOM_STRUCTURES_UPDATE
              - CUSTOM_STRUCTURES
              - EMPLOYEES
              - DOCUMENTS
              - APPLICATION_GROUPS
      responses:
        '200':
          description: Успешная операция.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    type: boolean
                  customStructure:
                    $ref: '#/components/schemas/GetCustomStructurePermittedData'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '429':
          $ref: '#/components/responses/TooManyRequests'
    put:
      tags:
        - customStructures
      summary: Обновить справочник по внешнему ID
      operationId: customStructureUpdateByExternalId
      security:
        - SessionCookieAuth: []
        - UserApiTokenAuth: []
        - MasterTokenAuth: []
      description: |
        ### Описание метода

        > **⚠️ Будьте осторожны!**
        >
        > Методы PUT перезаписывают запись целиком: любые непереданные поля считаются null и затирают данные в БД.
        > Поэтому при обновлении нужно указывать все поля.

        ### Валидации запроса

        - Тело запроса задано.
        - Клиент существует, не удалён, и к нему относится пользователь, выполняющий операцию.
        - ID пользовательского справочника структур указан корректно.
        - Пользовательский справочник структур с заданным ID существует в системе.
        - Описание пользовательского справочника структур имеет корректную длину.
        - Другого пользовательского справочника структур с заданным названием не существует в системе.
        - Другого пользовательского справочника структур с заданным ID во внешней системе не существует.
        - Название пользовательского справочника структур имеет корректную длину.
        - Код цвета пользовательского справочника структур имеет допустимый формат.
        - Указана корректная версия данных пользовательского справочника структур.
        - У пользователя клиента должно быть право `CUSTOM_STRUCTURES_UPDATE` на уровне пользователя клиента.
        - Проверяет, что ID пользовательского справочника структур указан корректно и пользовательский справочник структур с заданным ID существует в системе, и возвращает пользовательский справочник структур, если он существует.
        - ID клиента соответствует формату UUID.
        - По заданному ID клиента существует клиент.
        - Пользователь, выполняющий операцию, относится к клиенту.
        - Проверяет, что описание пользовательского справочника структур имеет корректную длину.
        - Проверяет, что другого пользовательского справочника структур с заданным названием не существует в клиенте.
        - Проверяет, что другого пользовательского справочника структур с заданным ID во внешней системе не существует в клиенте.
        - Проверяет, что название пользовательского справочника структур имеет корректную длину.
        - Проверяет, что код цвета пользовательского справочника структур имеет допустимый формат.
        - Проверяет, что указана корректная версия данных пользовательского справочника структур.
        - Проверяет, есть ли у пользователя клиента с заданным ID заданное право на уровне пользователя клиента.
        - Проверяет, что текущий пользователь относится к заданному клиенту и возвращает пользователя клиента, если он существует.
        - Проверяет, что ID клиента, заданный в виде строки, соответствует формату, и возвращает типизированный ID клиента.
        - Проверяет существование клиента по заданному ID и возвращает клиента, если он существует.
        - Проверяет, что клиент не удален.
      parameters:
        - $ref: '#/components/parameters/FormatParameter'
        - name: Impersonated-User-Id
          description: Идентификатор пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            format: uuid
        - name: Impersonated-User-Id-Type
          description: Тип идентификатора пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            enum:
              - HR_LINK_ID
              - SNILS
              - EXTERNAL_ID
        - name: Impersonated-User-Id-External-System-Type
          description: |
            Идентификатор внешней системы при аутентификации через мастер-токен.
          in: header
          schema:
            type: string
        - name: clientId
          in: path
          required: true
          description: Идентификатор клиента.
          schema:
            type: string
            format: uuid
        - name: customStructureExternalId
          in: path
          required: true
          description: Внешний ID пользовательского справочника.
          schema:
            type: string
      requestBody:
        description: Тело запроса UpdateCustomStructureRequestDTO
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateCustomStructureRequestDTO'
      responses:
        '200':
          description: Успешная операция.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    type: boolean
                  customStructure:
                    $ref: '#/components/schemas/CustomStructureResponseDTO'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '429':
          $ref: '#/components/responses/TooManyRequests'
  /api/v1/clients/{clientId}/customStructures/{customStructureId}/elements:
    post:
      tags:
        - customStructures
      summary: Создать элемент
      operationId: customStructureElementCreate
      security:
        - SessionCookieAuth: []
        - UserApiTokenAuth: []
        - MasterTokenAuth: []
      description: |
        ### Описание метода

        ### Валидации запроса

        - ID клиента является корректным.
        - Клиент по заданному ID существует.
        - Пользователь клиента, который выполняет запрос, имеет право `CUSTOM_STRUCTURES_CREATE`.
        - Можно определить пользовательскую структуру по переданным данным для её идентификации.
        - У клиента существует структура с переданными данными для идентификации.
        - Тело запроса задано.
        - В указанной пользовательской структуры нет уже созданных элементов с переданным ID во внешней системе, если он указан в теле запроса.
        - В указанной пользовательской структуре существует элемент с переданным ID родительского элемента или его ID во внешней системе, если хотя бы один из них был указан в теле запроса.
        - У клиента существует не уволенный сотрудник с переданным в теле запроса ID руководителя или его ID во внешней системе, если хотя бы один из них был указан.
        - Название элемента присутствует в теле запроса, и его длина не превышает допустимую.
      parameters:
        - $ref: '#/components/parameters/FormatParameter'
        - name: Impersonated-User-Id
          description: Идентификатор пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            format: uuid
        - name: Impersonated-User-Id-Type
          description: Тип идентификатора пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            enum:
              - HR_LINK_ID
              - SNILS
              - EXTERNAL_ID
        - name: Impersonated-User-Id-External-System-Type
          description: |
            Идентификатор внешней системы при аутентификации через мастер-токен.
          in: header
          schema:
            type: string
        - name: clientId
          in: path
          required: true
          description: Идентификатор клиента.
          schema:
            type: string
            format: uuid
        - name: customStructureId
          in: path
          required: true
          description: ID пользовательского справочника.
          schema:
            type: string
            format: uuid
      requestBody:
        description: Тело запроса CreateCustomStructureElementRequestDTO
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateCustomStructureElementRequestDTO'
      responses:
        '200':
          description: Успешная операция.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    type: boolean
                  element:
                    $ref: '#/components/schemas/CreateCustomStructureElementResponseDTO'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '429':
          $ref: '#/components/responses/TooManyRequests'
  /api/v1/clients/{clientId}/customStructures/{customStructureId}/elements/{elementId}:
    put:
      tags:
        - customStructures
      summary: Обновить элемент
      operationId: customStructureElementUpdate
      security:
        - SessionCookieAuth: []
        - UserApiTokenAuth: []
        - MasterTokenAuth: []
      description: |
        ### Описание метода

        > **⚠️ Будьте осторожны!**
        >
        > Методы PUT перезаписывают запись целиком: любые непереданные поля считаются null и затирают данные в БД.
        > Поэтому при обновлении нужно указывать все поля.

        ### Валидации запроса

        - ID клиента является корректным.
        - Клиент по заданному ID существует.
        - Пользователь клиента, который выполняет запрос, имеет право `CUSTOM_STRUCTURES_UPDATE`.
        - Можно определить пользовательскую структуру по переданным данным для её идентификации.
        - У клиента существует структура с переданными данными для идентификации.
        - В данной структуре существует элемент с переданными данными для идентификации.
        - Тело запроса задано.
        - В указанной пользовательской структуре нет уже существующих элементов, отличных от указанного, с переданным ID во внешней системе, если он указан в теле запроса.
        - В указанной пользовательской структуре существует элемент с переданным ID родительского элемента или его ID во внешней системе, если хотя бы один из них был указан в теле запроса.
        - В результате обновления родительского элемента не будет образован цикл.
        - У клиента существует не уволенный сотрудник с переданным в теле запроса ID руководителя или его ID во внешней системе, если хотя бы один из них был указан.
        - Название элемента присутствует в теле запроса и не превышает допустимую длину.
        - Версия в теле запроса указана и совпадает с текущей версией элемента.
        - Можно определить элемент пользовательской структуры по переданным данным для его идентификации.
        - У пользовательской структуры существует элемент с переданными данными для идентификации.
      parameters:
        - $ref: '#/components/parameters/FormatParameter'
        - name: Impersonated-User-Id
          description: Идентификатор пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            format: uuid
        - name: Impersonated-User-Id-Type
          description: Тип идентификатора пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            enum:
              - HR_LINK_ID
              - SNILS
              - EXTERNAL_ID
        - name: Impersonated-User-Id-External-System-Type
          description: |
            Идентификатор внешней системы при аутентификации через мастер-токен.
          in: header
          schema:
            type: string
        - name: clientId
          in: path
          required: true
          description: Идентификатор клиента.
          schema:
            type: string
            format: uuid
        - name: customStructureId
          in: path
          required: true
          description: ID пользовательского справочника.
          schema:
            type: string
            format: uuid
        - name: elementId
          in: path
          required: true
          description: ID элемента пользовательского справочника.
          schema:
            type: string
            format: uuid
      requestBody:
        description: Тело запроса UpdateCustomStructureElementRequestDTO
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateCustomStructureElementRequestDTO'
      responses:
        '200':
          description: Успешная операция.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    type: boolean
                  element:
                    $ref: '#/components/schemas/UpdateCustomStructureElementResponseDTO'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '429':
          $ref: '#/components/responses/TooManyRequests'
  /api/v1/clients/{clientId}/customStructures/elements:
    get:
      tags:
        - customStructures
      summary: Получить элементы
      operationId: customStructureElementGetElements
      security:
        - SessionCookieAuth: []
        - UserApiTokenAuth: []
        - MasterTokenAuth: []
      description: |
        ### Описание метода

        ### Валидации запроса

        - ID клиента является корректным.
        - ID элемента пользовательской структуры должен существовать в системе.
        - У пользователя клиента и сотрудника должно быть переданное в контекст право.
        - ID клиента соответствует формату UUID.
        - По заданному ID клиента существует клиент.
        - Пользователь, выполняющий операцию, относится к клиенту.
        - Проверяет, есть ли у пользователя клиента заданное право с учётом контекста текущей операции.
        - Метод используется для валидаций контекстного права в новых методах, которые не требуют обратной совместимости.
        - Проверяет, что текущий пользователь относится к заданному клиенту и возвращает пользователя клиента, если он существует.
        - Проверяет, что ID клиента, заданный в виде строки, соответствует формату, и возвращает типизированный ID клиента.
        - Проверяет существование клиента по заданному ID и возвращает клиента, если он существует.
        - Проверяет, что клиент не удален.
        - Проверяет, есть ли у пользователя клиента с заданным ID заданное хотя бы одно из указанных прав на уровне пользователя клиента или на уровне активного (неуволенного) сотрудника.
        - Проверяет, есть ли у пользователя клиента заданное право с учётом контекста текущей операции и возвращает кеш наличия прав у пользователя клиента.
        - Проверяет, что существует право на уровне пользователя клиента или на уровне сотрудника, соответствующее контекстному праву.
      parameters:
        - $ref: '#/components/parameters/FormatParameter'
        - name: Impersonated-User-Id
          description: Идентификатор пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            format: uuid
        - name: Impersonated-User-Id-Type
          description: Тип идентификатора пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            enum:
              - HR_LINK_ID
              - SNILS
              - EXTERNAL_ID
        - name: Impersonated-User-Id-External-System-Type
          description: |
            Идентификатор внешней системы при аутентификации через мастер-токен.
          in: header
          schema:
            type: string
        - name: clientId
          in: path
          required: true
          description: Идентификатор клиента.
          schema:
            type: string
            format: uuid
        - name: permissionContext
          in: query
          description: |
            Контекстное право, , в контексте которого выполняется операция.
            - `EMPLOYEES` — Право для получения сотрудников.
            - `DOCUMENTS` — Право на получение документов.
            - `APPLICATION_GROUPS` — Право для получения групп заявлений.
          schema:
            type: string
            enum:
              - EMPLOYEES
              - DOCUMENTS
              - APPLICATION_GROUPS
        - name: ids
          in: query
          description: Список ID, по которым нужно производить поиск.
          schema:
            type: array
            minItems: 1
            items:
              type: string
              format: uuid
          required: true
      responses:
        '200':
          description: Успешная операция.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    type: boolean
                  customStructureElements:
                    type: array
                    description: Данные элементов пользовательских справочников.
                    items:
                      $ref: '#/components/schemas/CustomStructureElementDTO'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '429':
          $ref: '#/components/responses/TooManyRequests'
  /api/v1/clients/{clientId}/customStructuresByExternalId/{customStructureExternalId}/elements:
    post:
      tags:
        - customStructures
      summary: Создать элемент по внешнему ID
      operationId: customStructureElementCreateByExternalId
      security:
        - SessionCookieAuth: []
        - UserApiTokenAuth: []
        - MasterTokenAuth: []
      description: |
        ### Описание метода

        ### Валидации запроса

        - ID клиента является корректным.
        - Клиент по заданному ID существует.
        - Пользователь клиента, который выполняет запрос, имеет право `CUSTOM_STRUCTURES_CREATE`.
        - Можно определить пользовательскую структуру по переданным данным для её идентификации.
        - У клиента существует структура с переданными данными для идентификации.
        - Тело запроса задано.
        - В указанной пользовательской структуры нет уже созданных элементов с переданным ID во внешней системе, если он указан в теле запроса.
        - В указанной пользовательской структуре существует элемент с переданным ID родительского элемента или его ID во внешней системе, если хотя бы один из них был указан в теле запроса.
        - У клиента существует не уволенный сотрудник с переданным в теле запроса ID руководителя или его ID во внешней системе, если хотя бы один из них был указан.
        - Название элемента присутствует в теле запроса, и его длина не превышает допустимую.
      parameters:
        - $ref: '#/components/parameters/FormatParameter'
        - name: Impersonated-User-Id
          description: Идентификатор пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            format: uuid
        - name: Impersonated-User-Id-Type
          description: Тип идентификатора пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            enum:
              - HR_LINK_ID
              - SNILS
              - EXTERNAL_ID
        - name: Impersonated-User-Id-External-System-Type
          description: |
            Идентификатор внешней системы при аутентификации через мастер-токен.
          in: header
          schema:
            type: string
        - name: clientId
          in: path
          required: true
          description: Идентификатор клиента.
          schema:
            type: string
            format: uuid
        - name: customStructureExternalId
          in: path
          required: true
          description: Внешний ID пользовательского справочника.
          schema:
            type: string
      requestBody:
        description: Тело запроса CreateCustomStructureElementRequestDTO
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateCustomStructureElementRequestDTO'
      responses:
        '200':
          description: Успешная операция.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    type: boolean
                  element:
                    $ref: '#/components/schemas/CreateCustomStructureElementResponseDTO'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '429':
          $ref: '#/components/responses/TooManyRequests'
  /api/v1/clients/{clientId}/customStructuresByExternalId/{customStructureExternalId}/elements/{elementExternalId}:
    put:
      tags:
        - customStructures
      summary: Обновить элемент по внешнему ID
      operationId: customStructureElementUpdateByExternalId
      security:
        - SessionCookieAuth: []
        - UserApiTokenAuth: []
        - MasterTokenAuth: []
      description: |
        ### Описание метода

        > **⚠️ Будьте осторожны!**
        >
        > Методы PUT перезаписывают запись целиком: любые непереданные поля считаются null и затирают данные в БД.
        > Поэтому при обновлении нужно указывать все поля.

        ### Валидации запроса

        - ID клиента является корректным.
        - Клиент по заданному ID существует.
        - Пользователь клиента, который выполняет запрос, имеет право `CUSTOM_STRUCTURES_UPDATE`.
        - Можно определить пользовательскую структуру по переданным данным для её идентификации.
        - У клиента существует структура с переданными данными для идентификации.
        - В данной структуре существует элемент с переданными данными для идентификации.
        - Тело запроса задано.
        - В указанной пользовательской структуре нет уже существующих элементов, отличных от указанного, с переданным ID во внешней системе, если он указан в теле запроса.
        - В указанной пользовательской структуре существует элемент с переданным ID родительского элемента или его ID во внешней системе, если хотя бы один из них был указан в теле запроса.
        - В результате обновления родительского элемента не будет образован цикл.
        - У клиента существует не уволенный сотрудник с переданным в теле запроса ID руководителя или его ID во внешней системе, если хотя бы один из них был указан.
        - Название элемента присутствует в теле запроса и не превышает допустимую длину.
        - Версия в теле запроса указана и совпадает с текущей версией элемента.
        - Можно определить элемент пользовательской структуры по переданным данным для его идентификации.
        - У пользовательской структуры существует элемент с переданными данными для идентификации.
      parameters:
        - $ref: '#/components/parameters/FormatParameter'
        - name: Impersonated-User-Id
          description: Идентификатор пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            format: uuid
        - name: Impersonated-User-Id-Type
          description: Тип идентификатора пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            enum:
              - HR_LINK_ID
              - SNILS
              - EXTERNAL_ID
        - name: Impersonated-User-Id-External-System-Type
          description: |
            Идентификатор внешней системы при аутентификации через мастер-токен.
          in: header
          schema:
            type: string
        - name: clientId
          in: path
          required: true
          description: Идентификатор клиента.
          schema:
            type: string
            format: uuid
        - name: customStructureExternalId
          in: path
          required: true
          description: Внешний ID пользовательского справочника.
          schema:
            type: string
        - name: elementExternalId
          in: path
          required: true
          description: ID элемента пользовательского справочника во внешней системе.
          schema:
            type: string
      requestBody:
        description: Тело запроса UpdateCustomStructureElementRequestDTO
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateCustomStructureElementRequestDTO'
      responses:
        '200':
          description: Успешная операция.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    type: boolean
                  element:
                    $ref: '#/components/schemas/UpdateCustomStructureElementResponseDTO'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '429':
          $ref: '#/components/responses/TooManyRequests'
  /api/v1/clients/{clientId}/documentGroups:
    post:
      tags:
        - documentGroups
      summary: Создать группу
      operationId: documentGroupCreateDocumentGroup
      security:
        - SessionCookieAuth: []
        - UserApiTokenAuth: []
        - MasterTokenAuth: []
      description: |
        ### Описание метода

        Создаёт группу из одного или нескольких документов. Один документ — это группа из одного элемента, поэтому массив `documents[]` должен содержать хотя бы один документ. Вызывать метод может сотрудник с ролью «Кадровик».

        Сервер возвращает созданную группу с присвоенными идентификаторами. Конвертация исходных файлов в PDF/A выполняется асинхронно: статус готовности группы проверяйте отдельным запросом.

        Возможные ошибки: `400` — невалидное тело запроса, `401` — нет или невалидный токен, `403` — недостаточно прав, `429` — превышен rate limit.

        ### Парные поля «внутренний ID» / «внешний ID»

        Для каждой пары допустимо передать только одно значение. Если переданы оба, приоритет — у внутреннего ID HRlink.
        - `creatorId` и `creatorExternalId` — кадровик-создатель документа. Заполните, чтобы создателем стал указанный пользователь клиента, а не владелец токена.
        - `documents[].legalEntityId` и `documents[].legalEntityExternalId` — юрлицо документа.
        - `documents[].headManagerId` и `documents[].headManagerExternalId` — руководитель-подписант.
        - `documents[].employeeIds` и `documents[].employeeExternalIds` — сотрудники-подписанты.
        - `documents[].watcherIds` и `documents[].watcherExternalIds` — наблюдатели. Наблюдатели не подписывают документ, но получают уведомление о подписании руководителем и могут скачать архив с подписью.
        - `documents[].participants[].employeeId` и `documents[].participants[].employeeExternalId` — участники этапов маршрута подписания.
        - `documents[].routeTemplateId` и `documents[].routeTemplateExternalId` — шаблон маршрута подписания.
        - `documents[].sourceDocumentId` и `documents[].sourceDocumentExternalId` — документ-источник.

        Парные поля несовместимы с `documents[].fileId`: при одновременной передаче запрос завершится ошибкой. `fileId` получите заранее через метод загрузки файла. Допустимые форматы: `.pdf`, `.doc`, `.docx`, `.rtf`, `.xls`, `.xlsx`, `.jpeg`, `.jpg`, `.bmp`, `.png`, `.tiff`.

        `documents[].externalId` — идентификатор документа во внешней системе. Тип — строка, ограничений на длину нет. Используйте, чтобы в других методах обращаться к документу по внешнему ID, а не по ID HRlink.

        ### Порядок подписания

        - `MANAGER_FIRST` — первым подписывает руководитель со стороны юрлица. `documents[].watcherIds` и `documents[].watcherExternalIds` не заполняйте.
        - `EMPLOYEE_FIRST` — первым подписывает сотрудник. `documents[].watcherIds` и `documents[].watcherExternalIds` не заполняйте.
        - `EMPLOYEE_ONLY` — подписывает только сотрудник, руководитель не участвует. `documents[].headManagerId`, `documents[].headManagerExternalId`, `documents[].watcherIds`, `documents[].watcherExternalIds` не заполняйте.
        - `MANAGER_ONLY` — подписывает только руководитель. Можно указать наблюдателей. `documents[].employeeIds` и `documents[].employeeExternalIds` не заполняйте.
        - `ROUTE` — очерёдность задаётся шаблоном маршрута подписания, переданным в `routeTemplateId`. Участников маршрута заполняйте по их типу:

          - тип `EMPLOYEE` — в `employeeIds` или `employeeExternalIds`;

          - тип `EMPLOYER` — в `headManagerId` или `headManagerExternalId`;

          - тип требуемого действия `RECEIVING` — в `watcherIds` или
          `watcherExternalIds`;

          - типы `SELECTABLE_EMPLOYEE` и `FIXED_EMPLOYEE` (не получатели) — в
          `participants`.


        ### Валидации запроса

        **Клиент и пользователь**
        - Клиент по `clientId` существует и не удалён.
        - `clientId` соответствует формату UUID.
        - Пользователь, выполняющий операцию, относится к клиенту.
        - У пользователя клиента есть право `DOCUMENTS_CREATE`. Если в теле запроса ни у одной сущности не указано юрлицо — право проверяется на уровне пользователя клиента или сотрудника. Если юрлицо указано — право проверяется в этом юрлице на уровне пользователя клиента или сотрудника.
        - У пользователя клиента есть доступ к отделам клиента сотрудников-подписантов.
        - Все указанные типы документов входят в список типов, разрешённых пользователю.

        **Группа документов**
        - Тело запроса задано.
        - Название группы документов задано.
        - Список `documents[]` содержит хотя бы один документ, ни один элемент не null.
        - Лимит на конвертацию файлов в PDF/A для тенанта не превышен.
        - Кадровик-создатель определён; если указан другой пользователь клиента, у вызывающего пользователя есть право назначать другого создателя.

        **Документ**
        - Все списки в данных документа либо не заданы, либо не содержат пустых элементов.
        - Внешний ID документа уникален в пределах клиента.
        - `documents[].fileId` задан и не null.
        - Файл по `fileId` корректен.
        - Срок подписания в днях задан корректно.

        **Тип документа**
        - Если `documentTypeId` задан — тип документа существует, не скрыт и входит в список доступных типов для индекса документа в группе.

        **Юрлицо**
        - Если `legalEntityId` или `legalEntityExternalId` задан — юрлицо существует и принадлежит клиенту.

        **Руководитель-подписант**
        - Если задан `headManagerId` или `headManagerExternalId` — сотрудник существует, принадлежит клиенту, не уволен и имеет права руководителя в своём юрлице.
        - Если юрлицо руководителя не совпадает с юрлицом документа — у пользователя есть активный сотрудник-руководитель в юрлице документа либо право руководителя в указанном юрлице через связку прав сотрудника.
        - Если `headManagerId` не задан, но задан `headManagerExternalId` и ID юрлица руководителя — юрлицо задано корректно.

        **Сотрудники-подписанты**
        - Сотрудники по указанным ID существуют, принадлежат клиенту и работают.
        - Среди `employeeIds` и `employeeExternalIds` нет пустых элементов.

        **Наблюдатели**
        - Среди `watcherIds` и `watcherExternalIds` нет пустых элементов.
        - Сотрудники-наблюдатели существуют и принадлежат клиенту.

        **Принадлежность одному юрлицу**
        - Сотрудник-подписант, наблюдатели, участники маршрута и сам документ относятся к одному юрлицу.

        **Порядок подписания**
        - `EMPLOYEE_FIRST` или `MANAGER_FIRST` — не заданы наблюдатели, участники маршрута и шаблон маршрута.
        - `MANAGER_ONLY` — не заданы сотрудники-подписанты, участники маршрута и шаблон маршрута.
        - `EMPLOYEE_ONLY` — не заданы руководитель, наблюдатели, участники маршрута и шаблон маршрута.
        - `ROUTE` — задан корректный шаблон маршрута, данные документа соответствуют этапам шаблона.
        - Если порядок подписания не задан, но задан `routeTemplateId` или `routeTemplateExternalId` — порядок считается `ROUTE`.

        **Шаблон маршрута подписания**
        - Шаблон существует по заданному ID (внутреннему или внешнему).
        - Шаблон относится к клиенту.
        - Шаблон не деактивирован.
        - Тип подписываемого объекта в шаблоне соответствует типу документа.
        - Если список юрлиц шаблона пуст — шаблон доступен всем юрлицам.
        - Если у документа нет юрлица — шаблону доступен только вариант «доступен всем юрлицам».
        - Если у документа есть юрлицо, а у шаблона задан непустой список юрлиц — юрлицо документа входит в список.

        **Участники маршрута подписания**
        - Если участники заданы — данные участников корректны.
        - Для этапа `RECEIVING` есть участник с типом `SELECTABLE_EMPLOYEE`.
        - Каждому ID наблюдателя соответствует участник с типом `FIXED_EMPLOYEE`.
        - Все участники относятся к указанному маршруту подписания.
        - Дубликаты ID участников запрещены, если маршрут это не допускает.
        - Сотрудники участников на одном этапе — разные пользователи клиента, с учётом фиксированных и автоопределяемых участников.
        - Если этап имеет тип `RECEIVING` — соответствующих участников передавайте в наблюдателях.
        - Если участник имеет тип `EMPLOYEE` или `EMPLOYER` — передавайте его в полях сотрудников или руководителя соответственно.
        - Если у этапа `SIGNING` нет участников с типом `EMPLOYER` — руководитель не задан.
        - Если в маршруте есть только этап `RECEIVING` — `watcherIds` или `watcherExternalIds` задан и не пуст.
        - У участника типа `FIXED_EMPLOYEE` ID сотрудника совпадает с зафиксированным в шаблоне.
        - В данных участника задан ID сотрудника (внутренний или внешний).

        **Связи с другими сущностями КЭДО**
        - Массив связанных сущностей не содержит пустых элементов.
        - У каждой сущности задан тип и ID (внутренний или внешний).
        - Сущность указанного типа существует по заданному ID.
        - У пользователя есть доступ к сущности.
        - Сущность не удалена.
        - Сущность не черновик, если связь с черновиком запрещена.
        - У пользователя клиента есть право `ENTITY_RELATION_CREATE` на уровне пользователя клиента или на уровне сотрудника юрлица сущности.

        **Связь с заявлением сотрудника**
        - Заявление существует по заданному ID (внутреннему или внешнему).
        - Заявление не удалено.
        - Заявление не черновик: хотя бы один подписант принял решение.
        - Пользователь клиента — создатель или заявитель, либо получатель завершённой группы, либо подписант с уже наступившим моментом подписания, либо имеет необходимую роль `ROLE`-подписанта, либо право на получение заявлений на уровне роли пользователя клиента или сотрудника.

        **Связь с документом**
        - Документ существует по заданному ID (внутреннему или внешнему).
        - Документ не удалён.
        - Документ не черновик.
        - У пользователя клиента есть права для получения документа.
      parameters:
        - $ref: '#/components/parameters/FormatParameter'
        - name: Impersonated-User-Id
          description: Идентификатор пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            format: uuid
        - name: Impersonated-User-Id-Type
          description: Тип идентификатора пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            enum:
              - HR_LINK_ID
              - SNILS
              - EXTERNAL_ID
        - name: Impersonated-User-Id-External-System-Type
          description: |
            Идентификатор внешней системы при аутентификации через мастер-токен.
          in: header
          schema:
            type: string
        - name: clientId
          in: path
          required: true
          description: Идентификатор клиента.
          schema:
            type: string
            format: uuid
      requestBody:
        description: Тело запроса CreateDocumentGroupDTO
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateDocumentGroupDTO'
      responses:
        '200':
          description: Успешная операция.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    type: boolean
                  documentGroup:
                    $ref: '#/components/schemas/DocumentGroupDTO'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '429':
          $ref: '#/components/responses/TooManyRequests'
    put:
      tags:
        - documentGroups
      summary: Обновить группы
      operationId: documentGroupUpdateDocumentGroup
      security:
        - SessionCookieAuth: []
        - UserApiTokenAuth: []
        - MasterTokenAuth: []
      description: |
        ### Описание метода

        Обновляет один или несколько документов в одной или нескольких группах. Обновление выполняется только внутри группы: чтобы изменить один документ, передайте данные и документа, и группы, к которой он принадлежит. Вызывать метод может сотрудник с ролью «Кадровик».

        > **⚠️ Метод перезаписывает запись целиком.** Любое непереданное поле сервер считает равным null и затирает значение в базе. Передавайте все поля, даже если меняете только одно.

        Обновлять можно только документы в статусе «Черновик».

        Возможные ошибки: `400` — невалидное тело, `401` — нет или невалидный токен, `403` — недостаточно прав, `429` — превышен rate limit.

        ### Парные поля «внутренний ID» / «внешний ID»

        Если переданы оба значения пары, приоритет — у внутреннего ID HRlink.
        - `documentGroups[].documents[].id` и `documentGroups[].documents[].externalId`.
        - `documentGroups[].documents[].headManagerId` и `documentGroups[].documents[].headManagerExternalId`.
        - `documentGroups[].documents[].employeeIds` и `documentGroups[].documents[].employeeExternalIds`.

        При порядке подписания `EMPLOYEE_ONLY` поля `documentGroups[].documents[].headManagerId` и `documentGroups[].documents[].headManagerExternalId` не заполняйте.

        ### Валидации запроса

        **Клиент и пользователь**
        - `clientId` соответствует формату UUID.
        - Клиент по `clientId` существует и не удалён.
        - Пользователь, выполняющий операцию, относится к клиенту.

        **Группы документов**
        - Тело запроса задано.
        - Список групп не пуст, ни одна группа не null.
        - Среди групп нет групп с одинаковыми ID.
        - Если ID группы задан — группа существует по этому ID.
        - Указана корректная версия данных группы.

        **Документы внутри группы**
        - Список документов группы не пуст, ни один документ не null.
        - У каждого документа задан ID — внутренний или внешний.
        - Все документы существуют по заданным ID.
        - В группе нет документов с одинаковыми ID.
        - Все документы относятся к указанной группе.
        - Все документы относятся к клиенту.
        - Документы не удалены.
        - Документы в статусе «Черновик».
        - Указана корректная версия данных каждого документа.
        - Все списки в данных документа либо не заданы, либо не содержат пустых элементов.
        - Срок подписания в днях задан корректно.

        **Права на обновление**
        - Если документ не связан с юрлицом — у пользователя клиента есть право `DOCUMENTS_UPDATE` на уровне ролей пользователя клиента или на уровне ролей сотрудников клиента, и пользователь — создатель документа.
        - Если документ связан с одним юрлицом и оно совпадает с юрлицом в базе — у пользователя клиента есть право `DOCUMENTS_UPDATE` на уровне ролей пользователя клиента или на уровне сотрудника этого юрлица.
        - Если документ связан с одним юрлицом и оно не совпадает с юрлицом в базе — у пользователя клиента есть право `DOCUMENTS_UPDATE` на уровне ролей пользователя клиента либо на уровне сотрудника юрлица из тела запроса и из базы.
        - Если документ — черновик: пользователю клиента доступны все отделы клиента либо пользователь — создатель документа.
        - У пользователя клиента есть доступ ко всем отделам клиента сотрудников-подписантов и наблюдателей документа.
        - У пользователя клиента есть право на обновление документов на уровне пользователя клиента, либо все типы документов входят в список разрешённых типов.

        **Тип документа**
        - Если `documentTypeId` задан — тип документа существует, не скрыт и входит в список доступных типов для индекса документа в группе.

        **Юрлицо**
        - Если ID юрлица задан (внутренний или внешний) — юрлицо существует и принадлежит клиенту.

        **Руководитель-подписант**
        - Если задан ID руководителя — сотрудник существует, принадлежит клиенту, не уволен и имеет права руководителя в своём юрлице.
        - Если юрлицо руководителя не совпадает с юрлицом документа — у пользователя есть активный сотрудник-руководитель в юрлице документа либо право руководителя в указанном юрлице через связку прав сотрудника.
        - Если ID руководителя не задан, но задан внешний ID и ID юрлица руководителя — юрлицо задано корректно.

        **Сотрудники-подписанты**
        - Если заданы ID сотрудников-подписантов (внутренние или внешние) — сотрудники существуют, принадлежат клиенту и работают.
        - Среди ID сотрудников нет пустых элементов.

        **Наблюдатели**
        - Если заданы ID наблюдателей (внутренние или внешние) — сотрудники существуют и принадлежат клиенту.
        - Среди ID наблюдателей нет пустых элементов.

        **Принадлежность одному юрлицу**
        - Сотрудник-подписант, наблюдатели, участники маршрута и сам документ относятся к одному юрлицу.

        **Порядок подписания**
        - `EMPLOYEE_FIRST` или `MANAGER_FIRST` — не заданы наблюдатели, участники маршрута и шаблон маршрута.
        - `MANAGER_ONLY` — не заданы сотрудники-подписанты, участники маршрута и шаблон маршрута.
        - `EMPLOYEE_ONLY` — не заданы руководитель, наблюдатели, участники маршрута и шаблон маршрута.
        - `ROUTE` — задан корректный шаблон маршрута, данные документа соответствуют этапам шаблона.
        - Если порядок подписания не задан, но задан `routeTemplateId` или `routeTemplateExternalId` — порядок считается `ROUTE`.

        **Шаблон маршрута подписания**
        - Шаблон существует по заданному ID (внутреннему или внешнему).
        - Шаблон относится к клиенту.
        - Шаблон не деактивирован.
        - Тип подписываемого объекта в шаблоне соответствует типу документа.
        - Если список юрлиц шаблона пуст — шаблон доступен всем юрлицам.
        - Если у документа нет юрлица — шаблону доступен только вариант «доступен всем юрлицам».
        - Если у документа есть юрлицо, а у шаблона задан непустой список юрлиц — юрлицо документа входит в список.

        **Участники маршрута подписания**
        - Если участники заданы — данные участников корректны.
        - Для этапа `RECEIVING` есть участник с типом `SELECTABLE_EMPLOYEE`.
        - Каждому ID наблюдателя соответствует участник с типом `FIXED_EMPLOYEE`.
        - Все участники относятся к указанному маршруту подписания.
        - Дубликаты ID участников запрещены, если маршрут это не допускает.
        - Сотрудники участников на одном этапе — разные пользователи клиента, с учётом фиксированных и автоопределяемых участников.
        - Если этап имеет тип `RECEIVING` — соответствующих участников передавайте в наблюдателях.
        - Если участник имеет тип `EMPLOYEE` или `EMPLOYER` — передавайте его в полях сотрудников или руководителя соответственно.
        - Если у этапа `SIGNING` нет участников с типом `EMPLOYER` — руководитель не задан.
        - Если в маршруте есть только этап `RECEIVING` — список ID наблюдателей задан и не пуст.
        - У участника типа `FIXED_EMPLOYEE` ID сотрудника совпадает с зафиксированным в шаблоне.
        - В данных участника задан ID сотрудника (внутренний или внешний).
      parameters:
        - $ref: '#/components/parameters/FormatParameter'
        - name: Impersonated-User-Id
          description: Идентификатор пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            format: uuid
        - name: Impersonated-User-Id-Type
          description: Тип идентификатора пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            enum:
              - HR_LINK_ID
              - SNILS
              - EXTERNAL_ID
        - name: Impersonated-User-Id-External-System-Type
          description: |
            Идентификатор внешней системы при аутентификации через мастер-токен.
          in: header
          schema:
            type: string
        - name: clientId
          in: path
          required: true
          description: Идентификатор клиента.
          schema:
            type: string
            format: uuid
      requestBody:
        description: Тело запроса UpdateDocumentGroupsDTO
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateDocumentGroupsDTO'
      responses:
        '200':
          description: Успешная операция.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    type: boolean
                  documentGroups:
                    type: array
                    description: обновлённые группы документов.
                    items:
                      $ref: '#/components/schemas/UpdatedDocumentGroupDTO'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '429':
          $ref: '#/components/responses/TooManyRequests'
  /api/v1/clients/{clientId}/documentGroups/sendToSigning:
    post:
      tags:
        - documentGroups
      summary: Создать группу и отправить на подписание
      operationId: documentGroupCreateAndSendToSigning
      security:
        - SessionCookieAuth: []
        - UserApiTokenAuth: []
        - MasterTokenAuth: []
      description: |
        ### Описание метода

        Сервер создаёт группу из одного или нескольких документов и ставит их в очередь на отправку подписантам. В ответе сервер синхронно возвращает `sendToSigningTask.id` — идентификатор фоновой задачи; сами документы на этот момент ещё не созданы.

        Дальнейшие шаги выполняются асинхронно: сервер конвертирует файлы в PDF/A, создаёт документы и рассылает уведомления первым подписантам. Когда задача завершается успешно, документы переходят в статус «на подписании».

        Если конвертация или другая часть подготовки падает с ошибкой (например, файл не удалось привести к PDF/A), документы не создаются и на подписание не уходят. В этом случае сервер отправляет email с описанием ошибки пользователю, который вызвал метод.

        ### Валидации запроса

        **Тенант и лицензии**

        - Активный пакет СМС существует, лимит СМС в пакете лицензий не исчерпан.
        - Операция не превысит лимит тенанта на конвертацию файлов в PDF/A.
        - Операция не превысит лимит тенанта на создание печатной формы файла.

        **Клиент и пользователь**

        - Клиент существует, не удалён; пользователь, вызывающий метод, относится к этому клиенту.
        - У пользователя клиента есть право создавать документы.
        - У пользователя клиента есть право отправлять каждый из документов группы на подписание.
        - Если ни одна сущность в теле запроса не привязана к юрлицу, право проверяется на уровне клиента или сотрудника клиента.
        - Если хотя бы одна сущность привязана к юрлицу, право проверяется в этом юрлице на уровне пользователя клиента или сотрудника.
        - У пользователя клиента есть право создавать документ с указанными сотрудниками-подписантами на уровне доступа к отделам клиента.
        - Создатель документа определён; если в запросе указан другой пользователь клиента — у вызывающего есть право назначать создателем другого пользователя.

        **Группа документов**

        - Тело запроса передано.
        - Название группы документов задано.
        - Список документов не пуст, среди элементов нет пустых.
        - Внешний ID документа уникален в пределах группы.
        - Документ с таким внешним ID не существует у этого клиента.
        - Списки в данных документов либо не заданы, либо не содержат пустых элементов.

        **Тип документа**

        - ID типа документа задан; тип документа существует и не скрыт.
        - Тип документа в группе входит в список разрешённых для пользователя типов.

        **Файл документа**

        - ID файла документа указывает на корректный файл, либо корректно заданы ссылки на документ-источник.

        **Юрлицо документа**

        - Если ID юрлица задан, юрлицо существует и принадлежит указанному клиенту.
        - Сотрудник-подписант, наблюдатели, участники маршрута и сам документ относятся к одному юрлицу.

        **Порядок подписания (`signingOrder`)**

        - Данные документа соответствуют выбранному `signingOrder`.
        - `EMPLOYEE_FIRST` или `MANAGER_FIRST`: наблюдатели, участники маршрута и ID шаблона маршрута не передаются.
        - `MANAGER_ONLY`: сотрудники-подписанты, участники маршрута и ID шаблона маршрута не передаются.
        - `EMPLOYEE_ONLY`: руководитель, наблюдатели, участники маршрута и ID шаблона маршрута не передаются.
        - `ROUTE`: задан корректный ID шаблона маршрута подписания; данные документа согласованы с этапами шаблона.
        - Если `signingOrder` не равен `ROUTE`, участники маршрута не передаются.

        **Шаблон маршрута подписания**

        - ID шаблона задан (внутренний или внешний); шаблон существует.
        - Шаблон относится к указанному клиенту и не деактивирован.
        - Тип подписываемого объекта в шаблоне совпадает с типом документа и имеет корректный формат.
        - Если список юрлиц шаблона пуст — шаблон доступен всем юрлицам.
        - Если у документа нет юрлица, ему доступен только шаблон без ограничений по юрлицам.
        - Если у документа есть юрлицо, а у шаблона список ID юрлиц непустой — ID юрлица документа входит в этот список.

        **Сотрудники-подписанты**

        - Если переданы ID сотрудников-подписантов (внутренние или внешние), каждый ID указывает на существующего сотрудника.
        - Сотрудники принадлежат указанному клиенту.
        - Сотрудник не уволен и работает.
        - Если ID списка сотрудников передан, среди элементов нет пустых.
        - Если юрлицо указано — существование сотрудника проверяется в этом юрлице; иначе — в клиенте.
        - Сотрудники-подписанты соответствуют требованиям подписания в своей очереди.

        **Руководитель-подписант**

        - Если ID руководителя-подписанта задан, сотрудник существует и принадлежит указанному клиенту.
        - Сотрудник имеет права руководителя в своём юрлице.
        - Если юрлицо руководителя задано (внутренним или внешним ID), оно существует и принадлежит указанному клиенту.
        - Если ID руководителя не задан, но указан внешний ID руководителя и внутренний или внешний ID его юрлица — ID юрлица руководителя задан корректно.
        - Если юрлицо руководителя не совпадает с юрлицом документа: у пользователя есть активный сотрудник-руководитель в юрлице документа либо право руководителя в этом юрлице через связку прав сотрудника.

        **Наблюдатели**

        - Если ID наблюдателей переданы (внутренние или внешние), среди них нет пустых элементов.
        - Каждый ID наблюдателя указывает на существующего сотрудника, который принадлежит указанному клиенту.

        **Участники маршрута подписания (`ROUTE`)**

        - Если список данных участников этапа задан, среди элементов нет пустых.
        - В участниках этапа корректно указаны сотрудники.
        - ID участника этапа маршрута подписания задан.
        - У участника задан ID сотрудника (внутренний или внешний).
        - Все участники относятся к указанному маршруту подписания.
        - В данных участников маршрута нет дублирующихся ID участников, если маршрут это не допускает.
        - Сотрудник, указанный в данных участника, совпадает с сотрудником соответствующего участника шаблона маршрута.
        - Если участник шаблона имеет тип `FIXED_EMPLOYEE`, ID сотрудника указывает на того же сотрудника.
        - Этап с типом `RECEIVING`: такие участники передаются в списке наблюдателей.
        - Этап с типом `RECEIVING`: для этапа задан участник с типом `SELECTABLE_EMPLOYEE`.
        - Каждому ID наблюдателя соответствует участник шаблона с типом `FIXED_EMPLOYEE` (по ID сотрудника).
        - Участники с типом `EMPLOYEE` или `EMPLOYER` передаются в полях для сотрудников и руководителя соответственно.
        - Сотрудники участников маршрута на одном этапе — разные пользователи клиента (с учётом переданных участников, фиксированных участников маршрута и автоопределяемых по правилу).
        - На этапе с типом `SIGNING`, где участники не `EMPLOYEE` и не `EMPLOYER`, сотрудники — разные пользователи клиента.
        - Если среди участников этапов с типом `SIGNING` в шаблоне нет ни одного участника с типом `EMPLOYER`, руководитель в запросе не задан.
        - Если в маршруте есть только один этап с типом `RECEIVING`, список ID наблюдателей задан и не пуст.
        - Если в маршруте есть только этап с получателями и в нём нет фиксированных получателей, ID наблюдателей передаются явно (внутренние или внешние).

        **Срок подписания**

        - В данных документа передан корректный срок подписания в днях.

        **Связи с сущностями КЭДО**

        - У пользователя есть право на создание связей между сущностями КЭДО (`ENTITY_RELATION_CREATE` на уровне пользователя клиента или сотрудника юрлица сущности).
        - Массив данных сущностей КЭДО не содержит пустых элементов.
        - У каждого элемента задан внутренний или внешний ID сущности и тип сущности.
        - Сущность указанного типа существует по переданному ID.
        - Сущность не удалена и (если это явно не разрешено) не находится в статусе черновика.
        - У пользователя есть доступ к этой сущности.

        **Связь с заявлением**

        - Заявление существует по переданному ID (внутреннему или внешнему).
        - Заявление не удалено и не находится в черновике (хотя бы один подписант принял решение).
        - Выполнено одно из условий доступа: пользователь клиента — создатель заявления; пользователь — заявитель; пользователь — получатель и документооборот заявления завершён подписанием со стороны всех участников; пользователь — подписант, которому уже доступно подписание; среди доступных подписантов есть участник с типом `ROLE` и у пользователя есть нужная роль; у пользователя есть право на получение заявления на уровне роли пользователя клиента или сотрудника.

        **Связь с документом**

        - Документ существует по переданному ID (внутреннему или внешнему).
        - Документ не удалён и не находится в черновике.
        - У пользователя клиента есть право на получение этого документа.
      parameters:
        - $ref: '#/components/parameters/FormatParameter'
        - name: Impersonated-User-Id
          description: Идентификатор пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            format: uuid
        - name: Impersonated-User-Id-Type
          description: Тип идентификатора пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            enum:
              - HR_LINK_ID
              - SNILS
              - EXTERNAL_ID
        - name: Impersonated-User-Id-External-System-Type
          description: |
            Идентификатор внешней системы при аутентификации через мастер-токен.
          in: header
          schema:
            type: string
        - name: clientId
          in: path
          required: true
          description: Идентификатор клиента.
          schema:
            type: string
            format: uuid
      requestBody:
        description: Тело запроса CreateDocumentGroupDTO
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateDocumentGroupDTO'
      responses:
        '200':
          description: Успешная операция.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    type: boolean
                  sendToSigningTask:
                    type: object
                    properties:
                      id:
                        description: Идентификатор задачи на создание группы документов и отправку их на подписание.
                        type: string
                        format: uuid
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '429':
          $ref: '#/components/responses/TooManyRequests'
  /api/v1/clients/{clientId}/documents/validateBeforeSendToSigning:
    post:
      tags:
        - documents
      summary: Валидировать перед отправкой
      operationId: documentValidateBeforeSendToSigning
      security:
        - SessionCookieAuth: []
        - UserApiTokenAuth: []
        - MasterTokenAuth: []
      description: |
        ### Описание метода

        ### Валидации запроса

        - Клиент существует, не удалён, и к нему относится пользователь, выполняющий операцию.
        - Тело запроса должно быть задано.
        - Список документов должен быть не пуст и ни один из элементов не равен null.
        - У каждого документа должен быть задан ID.
        - Если у документа задана версия, она должна быть корректной.
        - Документы с заданными ID должны существовать.
        - Документы должны относиться к заданному клиенту.
        - Пользователь должен иметь право отправлять на подписание каждый из заданных документов.
        - Проверяет, что у пользователя клиента есть право для отправки документов на подписание для каждого из заданных документов.
        - Проверяет, есть ли у пользователя клиента с заданным ID заданное право и возвращает кэш наличия прав у пользователя клиента.
      parameters:
        - $ref: '#/components/parameters/FormatParameter'
        - name: Impersonated-User-Id
          description: Идентификатор пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            format: uuid
        - name: Impersonated-User-Id-Type
          description: Тип идентификатора пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            enum:
              - HR_LINK_ID
              - SNILS
              - EXTERNAL_ID
        - name: Impersonated-User-Id-External-System-Type
          description: |
            Идентификатор внешней системы при аутентификации через мастер-токен.
          in: header
          schema:
            type: string
        - name: clientId
          in: path
          required: true
          description: Идентификатор клиента.
          schema:
            type: string
            format: uuid
        - name: withoutEmployeeInvitationValidation
          in: query
          description: Отключить проверку приглашения и подписи сотрудника?
          schema:
            type: boolean
            x-nullable: true
            default: false
      requestBody:
        description: Тело запроса ValidateDocumentsDTO
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ValidateDocumentsDTO'
      responses:
        '200':
          description: Успешная операция.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    type: boolean
                  documents:
                    type: array
                    description: Список данных результата валидации документов.
                    items:
                      $ref: '#/components/schemas/DocumentValidationResultDTO'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '429':
          $ref: '#/components/responses/TooManyRequests'
  /api/v1/clients/{clientId}/documents/validateBeforeSendAndSign:
    post:
      tags:
        - documents
      summary: Валидировать перед массовым подписанием
      operationId: documentValidateBeforeSendAndSign
      security:
        - SessionCookieAuth: []
        - UserApiTokenAuth: []
        - MasterTokenAuth: []
      description: |
        ### Описание метода

        ### Валидации запроса

        - Клиент существует, не удалён, и к нему относится пользователь, выполняющий операцию.
        - Тело запроса задано.
        - Список документов не пуст и ни один из элементов не равен null.
        - У каждого документа задан ID.
        - Если у документа задана версия, она корректна.
        - Документы с заданными ID существуют.
        - Документы относятся к заданному клиенту.
        - Если для документа задан ID МЧД, то МЧД существует в клиенте.
        - Для каждого документа задана подпись документа в формате Base64.
        - Пользователь имеет право отправлять на подписание каждый из заданных документов.
        - Проверяет, что если строка с подписью задана, то она имеет формат Base64, и возвращает данные подписи в виде массива байт.
        - Документ отправлен на подпись и текущий пользователь является его следующим подписантом.
        - Документ является черновиком, текущий пользователь является его первым подписантом и имеет право `DOCUMENTS_MULTIPLE_SEND_AND_SIGN` на уровне пользователя клиента или на уровне юрлица документа.
        - Текущий пользователь не является следующим подписантом и проходит проверку прав на операции с документами.
        - Проверяет, что подпись задана в корректном формате.
        - Проверяет наличие у пользователя клиента права для массового подписания документов с одновременной отправкой на подпись в списке юрлиц.
        - Проверяет, что у пользователя клиента есть указанное право для каждого из заданных документов.
        - У остальных сотрудников проверяется право на уровне юрлица документа, на уровне типа документа и на уровне отдела сотрудника-подписанта.
        - Проверяет, есть ли у пользователя клиента с заданным ID заданное право и возвращает кэш наличия прав у пользователя клиента.
        - Проверяет, есть ли у пользователя клиента заданное право на уровне пользователя клиента по заданным данным аутентификации.
      parameters:
        - $ref: '#/components/parameters/FormatParameter'
        - name: Impersonated-User-Id
          description: Идентификатор пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            format: uuid
        - name: Impersonated-User-Id-Type
          description: Тип идентификатора пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            enum:
              - HR_LINK_ID
              - SNILS
              - EXTERNAL_ID
        - name: Impersonated-User-Id-External-System-Type
          description: |
            Идентификатор внешней системы при аутентификации через мастер-токен.
          in: header
          schema:
            type: string
        - name: clientId
          in: path
          required: true
          description: Идентификатор клиента.
          schema:
            type: string
            format: uuid
        - name: withoutEmployeeInvitationValidation
          in: query
          description: Отключить проверку приглашения и подписи сотрудника?
          schema:
            type: boolean
            x-nullable: true
            default: false
      requestBody:
        description: Тело запроса ValidateDocumentsBeforeSendAndSignDTO
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ValidateDocumentsBeforeSendAndSignDTO'
      responses:
        '200':
          description: Успешная операция.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    type: boolean
                  documents:
                    type: array
                    description: Результат валидации и список данных результата валидации документов.
                    items:
                      $ref: '#/components/schemas/DocumentValidationResultDTO'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '429':
          $ref: '#/components/responses/TooManyRequests'
  /api/v1/clients/{clientId}/documents/employeeRegistry:
    post:
      tags:
        - documents
      summary: Реестр документов (сотрудник)
      operationId: documentRegistryGetEmployeeDocumentsRegistry
      security:
        - SessionCookieAuth: []
        - UserApiTokenAuth: []
        - MasterTokenAuth: []
      description: |
        ### Описание метода

        Возвращает данные реестра документов сотрудника.

        ### Валидации запроса

        - ID клиента является UUID.
        - Клиент существует.
        - Для пользователя существует пользователь клиента.
        - Тело запроса проходит все проверки фильтра реестра документов сотрудника с пагинацией.
        - Смещение в запросе не меньше 0.
        - Количество возвращаемых в ответе записей задано корректно.
        - Клиент с заданным ID существует.
        - Для текущего пользователя существует пользователь клиента в клиенте из запроса.
        - Тело запроса проходит все проверки фильтра реестра документов сотрудника.
        - Смещение не меньше нуля.
        - Количество возвращаемых элементов больше нуля и не больше максимального разрешённого значения.
        - Параметры сортировки заданы корректно.
        - Тело запроса проходит полный набор проверок фильтра реестра документов сотрудника.
        - Проверяет, что количество элементов, которое нужно пропустить при выборке с пагинацией, корректно.
        - Проверяет, что заданное количество возвращаемых при запросе элементов корректно.
        - ID клиента соответствует формату UUID.
        - По заданному ID клиента существует клиент.
        - Пользователь, выполняющий операцию, относится к клиенту.
        - В списке данных для сортировки не должно быть пустых элементов.
        - Количество данных для сортировки не должно быть больше количества полей документа, по которым можно сортировать.
        - Указано, по какому полю необходимо сортировать.
        - В запросе не указаны пересекающиеся режимы работы (на данный момент проверка фиктивная).
        - Указанные типы документов существуют.
        - Фильтры по сотрудникам (headManagerIds, employeeIds и employeeSignerEmployeeIds) не содержат null значений, все сотрудники существуют и относятся к заданному клиенту.
        - Список юрлиц не содержит null, все юрлица существуют и относятся к заданному клиенту.
        - Список пользователей клиента для фильтра по участникам и получателям не содержит null, все пользователи клиента существуют и относятся к заданному клиенту.
        - Пользователь является руководителем, если запрашивает документы руководителя.
        - Все запрошенные фильтры доступны.
        - Документы по id и по внешним id существуют.
        - Проверяет, что текущий пользователь относится к заданному клиенту и возвращает пользователя клиента, если он существует.
        - Проверяет, что ID клиента, заданный в виде строки, соответствует формату, и возвращает типизированный ID клиента.
        - Проверяет существование клиента по заданному ID и возвращает клиента, если он существует.
        - Проверяет, что клиент не удален.
        - Проверяет, что ни один элемент из списка данных для сортировки не является пустым.
        - Проверяет, что в запросе не указаны конфликтующие режимы работы («документы сотрудника», «документы руководителя», «все документы»).
        - На данный момент не производит реальной проверки, так как фронт иногда присылает конфликтующие комбинации флагов.
        - Проверяет, что диапазон дат документооборота задан корректно.
        - Проверяет, что диапазон дат документа задан корректно.
        - Проверяет, что диапазон дат создания документа задан корректно.
        - Проверяет, что диапазон сроков подписания документов задан корректно.
        - Среди ID сотрудников нет пустых элементов.
        - По заданным ID существуют сотрудники.
        - Все сотрудники относятся к одному клиенту.
        - Руководители с заданными ID должны существовать.
        - Руководители должны относится к заданному клиенту.
        - Юрлица с заданными ID должны существовать.
        - Юрлица должны относится к заданному клиенту.
        - Проверяет, что у текущего пользователя есть доступ к документам руководителя, если они были запрошены.
        - Проверяет, что все заданные фильтры реестра документов сотрудника доступны для работы с текущей версией кэша документов.
        - Проверяет, что типы документов существуют по заданным ID и возвращает список типов документов, если они существуют.
        - Среди ID пользователей клиента нет пустых элементов.
        - По заданным ID существуют пользователи клиента.
        - Все пользователи клиента относятся к клиенту с указанным ID.
        - Проверяет существование документов по заданным ID и возвращает документы, если они существуют.
        - Проверяет существование документов по заданным ID во внешней системе и возвращает документы, если они существуют.
        - Проверяет, что среди списка ID сотрудников нет пустых значений.
        - Проверяет, что сотрудники существуют по всем заданным ID, и возвращает список сотрудников.
        - Проверяет, что все сотрудники принадлежат клиенту с заданным ID.
        - Проверяет, что все заданные фильтры доступны для работы с текущей версией кэша документов.
        - Проверяет, что все UUID, заданные в списке, соответствуют существующим типам документов и возвращает список типов документов.
        - Проверяет, что все ID типов документов во внешней системе, заданные в списке, соответствуют существующим типам документов и возвращает список типов документов.
        - Проверяет, что пользователи клиента существуют по всем заданным ID, и возвращает список пользователей клиента.
        - Проверяет, что заданные пользователи клиента принадлежит клиенту с заданным ID.
        - Проверяет, что заданный сотрудник относится к заданному клиенту.
        - Проверяет, что заданный пользователь клиента принадлежит клиенту с заданным ID.
      parameters:
        - $ref: '#/components/parameters/FormatParameter'
        - name: Impersonated-User-Id
          description: Идентификатор пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            format: uuid
        - name: Impersonated-User-Id-Type
          description: Тип идентификатора пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            enum:
              - HR_LINK_ID
              - SNILS
              - EXTERNAL_ID
        - name: Impersonated-User-Id-External-System-Type
          description: |
            Идентификатор внешней системы при аутентификации через мастер-токен.
          in: header
          schema:
            type: string
        - name: clientId
          in: path
          required: true
          description: Идентификатор клиента.
          schema:
            type: string
            format: uuid
      requestBody:
        description: Тело запроса PaginatedDocumentsEmployeeRegistryRequestDto
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PaginatedDocumentsEmployeeRegistryRequestDto'
      responses:
        '200':
          description: Успешная операция.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    type: boolean
                  documents:
                    type: array
                    description: Список данных по документам сотрудника.
                    items:
                      $ref: '#/components/schemas/DocumentDTO'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '429':
          $ref: '#/components/responses/TooManyRequests'
  /api/v1/clients/{clientId}/documents/hrRegistry:
    post:
      tags:
        - documents
      summary: Реестр документов (кадровик)
      operationId: documentRegistryGetHrDocumentsRegistry
      security:
        - SessionCookieAuth: []
        - UserApiTokenAuth: []
        - MasterTokenAuth: []
      description: |
        ### Описание метода

        Обязательных полей нет, но задать json-тело обязательно. В случае, если ни один из фильтров не указан, то как минимум надо задать тело запроса как пустой объект `{}`. Поля `docflowFinishedDateFrom` и `docflowFinishedDateTo`, `createdDateFrom` и `createdDateTo`
        - имеют формат даты и времени `ISO 8601`, где части даты идут в следующем порядке: год, месяц, день, часы, минуты, секунды, миллисекунды, часовой пояс. Год представляется четырьмя цифрами, месяц, день, часы, минуты и секунды — двумя. Если месяц, день, часы, минуты или секунды меньше 10, то перед ними указывается 0. Миллисекунды содержат в себе от 1 до 6 цифр. Дата и время разделяются символом T. Допустимые значения для указания часового пояса: Z (указывает UTC время), ±hh (от -18 до +18)
        - указывает кол-во часов, на которое время отличается от UTC. Ответ автоматически сортируется по `ID` документа, если в поле `sort` не указан иной вариант сортировки. ⚠️ **Query-параметр `dataSet` изменяет тело ответа, подробнее можно посмотреть в описании параметра.**

        ### Валидации запроса

        - Клиент существует, не удалён, и к нему относится пользователь, выполняющий операцию.
        - Набора данных задан корректно или не задан вообще.
        - Входные данные для фильтрации документов проходят базовую валидацию.
        - Набор данных задан корректно или не задан вообще.
        - ID клиента соответствует формату UUID.
        - По заданному ID клиента существует клиент.
        - Пользователь, выполняющий операцию, относится к клиенту.
        - Набор данных соответствует одному из допустимых значений (`FULL`, `SIGNING_STATE`).
        - Количество возвращаемых при запросе элементов корректно.
        - Количество элементов, которое нужно пропустить при выборке с пагинацией, корректно.
        - Данные для сортировки документов реестра документов корректны.
        - Проверяет, что текущий пользователь относится к заданному клиенту и возвращает пользователя клиента, если он существует.
        - Проверяет, что ID клиента, заданный в виде строки, соответствует формату, и возвращает типизированный ID клиента.
        - Проверяет существование клиента по заданному ID и возвращает клиента, если он существует.
        - Проверяет, что клиент не удален.
        - В списке данных для сортировки не должно быть пустых элементов.
        - Количество данных для сортировки не должно быть больше количества полей документа, по которым можно сортировать.
        - Указано, по какому полю необходимо сортировать.
        - Если ID отделов клиента заданы, то они корректны.
        - Если ID должностей сотрудников заданы, то они корректны.
        - Если ID документов для фильтрации заданы, то они корректны.
        - Если ID документов во внешней системе для фильтрации заданы, то они корректны.
        - Переданные данные для фильтрации содержат корректные ID базовых документов.
        - Переданные данные для фильтрации содержат корректные ID базовых документов во внешней системе.
        - Пользователь имеет право получать данные реестра документов кадровика.
        - ID сотрудников и руководителей, заданных в фильтрах, заданы корректно для реестра кадровика.
        - ID юрлиц, заданных в фильтрах, заданы корректно для реестра кадровика.
        - Если ID создателей документов заданы, то они корректны.
        - Список имен тегов в данных для фильтрации задан корректно для кадровика.
        - Нижняя граница диапазона сроков подписания документа не превышает верхнюю.
        - Проверяет, что заданное количество возвращаемых при запросе элементов корректно.
        - Проверяет, что количество элементов, которое нужно пропустить при выборке с пагинацией, корректно.
        - Проверяет, что ни один элемент из списка данных для сортировки не задан пустым.
        - Нижняя граница диапазона сроков последнего изменения статуса документа не превышает верхнюю.
        - Если задан список ID элементов пользовательских структур, то среди них нет пустых значений.
        - Если задан список ID элементов пользовательских структур, то элементы пользовательских структур существуют в системе.
        - Если задан список ID элементов пользовательских структур, то количество уникальных структур элементов не превышает заданный лимит для запросов реестров.
        - Список ID отделов клиента не задан.
        - Список ID отделов клиента пуст.
        - Список содержит только ID существующих отделов клиента.
        - Список ID должностей сотрудников не задан.
        - Список ID должностей сотрудников пуст.
        - Список содержит только ID существующих должностей сотрудников.
        - Список ID документов не задан.
        - Список ID документов пуст.
        - Список содержит только ID существующих документов.
        - Проверяет, что диапазон сроков подписания документов задан корректно.
        - Проверяет, что диапазон дат последнего изменения статуса документа задан корректно.
        - Список не содержит пустых элементов.
        - Список содержит только ID существующих документов во внешней системе.
        - Список ID базовых документов не задан.
        - Список ID базовых документов пуст.
        - Список содержит только ID существующих базовых документов во внешней системе.
        - Проверяет, что ID сотрудников и руководителей, заданных в фильтрах, заданы корректно для реестра кадровика.
        - Проверяет, что ID юрлиц, заданных в фильтрах, заданы корректно для реестра кадровика.
        - Список создателей документов не задан или пуст.
        - По всем заданным ID создателей документов существуют пользователи клиентов, которые относятся к заданному клиенту.
        - Список элементов структуры не содержит пустых элементов.
        - Все элементы структуры существуют.
        - Количество элементов структуры не превышает разрешенное для реестра кадровика.
        - Проверяет, что список имен тегов в данных для фильтрации задан корректно для кадровика и возвращает данные с нормализованным списком имён тегов сотрудника.
        - Проверяет, что переданные элементы разрешены пользователю с заданным списком ID разрешенных элементов пользовательских структур.
        - Проверяет, что ни один ID отдела клиента не задан пустым.
        - Проверяет, что все UUID, заданные в списке, соответствуют существующим отделам клиента и возвращает список отделов клиента.
        - Проверяет, что ни один ID должности сотрудника не задан пустым.
        - Проверяет, что все UUID, заданные в списке, соответствуют существующим должностям сотрудников и возвращает список должностей сотрудников.
        - Проверяет, что ни один ID документа не задан пустым.
        - Проверяет существование документов по заданным ID и возвращает документы, если они существуют.
        - Проверяет существование документов по заданным ID во внешней системе и возвращает документы, если они существуют.
        - Проверяет, что ни один ID документа во внешней системе не задан пустым.
        - Проверяет, что ни один ID базового документа не задан пустым.
        - Проверяет, что ни один ID базового документа во внешней системе не задан пустым.
        - Список сотрудников не задан или пуст.
        - Сотрудники с заданными ID должны существовать и относиться к заданному клиенту.
        - Проверяет, что список ID юрлиц содержит только доступные юрлица.
        - Проверяет, что количество уникальных структур элементов не превышает заданный лимит для запросов реестров.
        - Каждый элемент списка тегов задан.
        - Каждый элемент списка тегов не является пустой строкой без учета пробельных символов.
        - Сотрудники по заданным ID существуют.
        - Сотрудники принадлежат заданному клиенту.
        - Проверяет, что пользователи клиента существуют по всем заданным ID, и возвращает список пользователей клиента.
        - Проверяет, что заданный пользователь клиента принадлежит клиенту с заданным ID.
        - Проверяет, что сотрудники существуют по всем заданным ID, и возвращает список сотрудников.
      parameters:
        - $ref: '#/components/parameters/FormatParameter'
        - name: Impersonated-User-Id
          description: Идентификатор пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            format: uuid
        - name: Impersonated-User-Id-Type
          description: Тип идентификатора пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            enum:
              - HR_LINK_ID
              - SNILS
              - EXTERNAL_ID
        - name: Impersonated-User-Id-External-System-Type
          description: |
            Идентификатор внешней системы при аутентификации через мастер-токен.
          in: header
          schema:
            type: string
        - name: clientId
          in: path
          required: true
          description: Идентификатор клиента.
          schema:
            type: string
            format: uuid
        - name: dataSet
          in: query
          description: |
            Набор полей, которые необходимо вернуть в ответе.
            - `FULL` - полный ответ, приведенный в DTO.
            - `SIGNING_STATE` - Облегченный ответ, содержащий только поля:
              - id
              - externalId
              - draft
              - deleted
              - signed
              - signingOrder
              - statusLastModifiedDate
              - rejected
              - headManager
              - employees
              - watchers
              - participants
              - convertedFileId
              - docflowFinishedDate
              - lastSignedDate
              - route
              - version
          schema:
            type: string
            enum:
              - FULL
              - SIGNING_STATE
            default: FULL
      requestBody:
        description: Тело запроса DocumentRegistryFilterDTO
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DocumentRegistryFilterDTO'
      responses:
        '200':
          description: Успешная операция.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    type: boolean
                  documents:
                    type: array
                    description: Список данных реестра документов кадровика
                    items:
                      $ref: '#/components/schemas/DocumentDTO'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '429':
          $ref: '#/components/responses/TooManyRequests'
  /api/v1/clients/{clientId}/documents/hrRegistry/downloads/excel:
    post:
      tags:
        - documents
      summary: Скачать XLS реестра документов
      operationId: documentRegistryGetHrDocumentsRegistryExcelFile
      security:
        - SessionCookieAuth: []
        - UserApiTokenAuth: []
        - MasterTokenAuth: []
      description: |
        ### Описание метода

        Производит редирект на ссылку для скачивания excel файла с данными реестра документов кадровика.

        ### Валидации запроса

        - Клиент существует, не удалён, и к нему относится пользователь, выполняющий операцию.
        - Пользователь клиента имеет право выполнять запрос документов для реестра кадровика.
        - Данные для фильтрации документов реестра документов корректны.
        - ID клиента соответствует формату UUID.
        - По заданному ID клиента существует клиент.
        - Пользователь, выполняющий операцию, относится к клиенту.
        - Если ID отделов клиента заданы, то они корректны.
        - ID сотрудников и руководителей, заданных в фильтрах, заданы корректно для реестра кадровика.
        - ID юрлиц, заданных в фильтрах, заданы корректно для реестра кадровика.
        - По всем заданным ID создателей документов существуют пользователи клиентов.
        - Список имен тегов в данных для фильтрации задан корректно для кадровика.
        - Список статусов документов в данных для фильтрации задан корректно.
        - Список статусов руководителей-подписантов в данных для фильтрации задан корректно.
        - Список статусов сотрудников-подписантов в данных для фильтрации задан корректно.
        - Данные сортировки корректны.
        - Проверяет, что текущий пользователь относится к заданному клиенту и возвращает пользователя клиента, если он существует.
        - Проверяет, что ID клиента, заданный в виде строки, соответствует формату, и возвращает типизированный ID клиента.
        - Проверяет существование клиента по заданному ID и возвращает клиента, если он существует.
        - Проверяет, что клиент не удален.
        - Список ID отделов клиента не задан.
        - Список ID отделов клиента пуст.
        - Список содержит только ID существующих отделов клиента.
        - Проверяет, что ID сотрудников и руководителей, заданных в фильтрах, заданы корректно для реестра кадровика.
        - Проверяет, что ID юрлиц, заданных в фильтрах, заданы корректно для реестра кадровика.
        - Список создателей документов не задан или пуст.
        - По всем заданным ID создателей документов существуют пользователи клиентов, которые относятся к заданному клиенту.
        - Проверяет, что список имен тегов в данных для фильтрации задан корректно для кадровика и возвращает данные с нормализованным списком имён тегов сотрудника.
        - Если список статусов документов не пуст, то он не содержит пустых элементов.
        - Если список статусов руководителей-подписантов не пуст, то он не содержит пустых элементов.
        - Если список статусов сотрудников-подписантов не пуст, то он не содержит пустых элементов.
        - В списке данных для сортировки не должно быть пустых элементов.
        - Количество данных для сортировки не должно быть больше количества полей документа, по которым можно сортировать.
        - Указано, по какому полю необходимо сортировать.
        - Проверяет, что пользователь клиента имеет право выполнять запрос документов для реестра кадровика, и возвращает список юрлиц, к которым у пользователя клиента есть доступ.
        - Проверяет, что ни один ID отдела клиента не задан пустым.
        - Проверяет, что все UUID, заданные в списке, соответствуют существующим отделам клиента и возвращает список отделов клиента.
        - Список сотрудников не задан или пуст.
        - Сотрудники с заданными ID должны существовать и относиться к заданному клиенту.
        - Проверяет, что список ID юрлиц содержит только доступные юрлица.
        - Каждый элемент списка тегов задан.
        - Каждый элемент списка тегов не является пустой строкой без учета пробельных символов.
        - Проверяет, что ни один элемент из списка данных для сортировки не задан пустым.
        - Сотрудники по заданным ID существуют.
        - Сотрудники принадлежат заданному клиенту.
        - Проверяет, что пользователи клиента существуют по всем заданным ID, и возвращает список пользователей клиента.
        - Проверяет, что заданный пользователь клиента принадлежит клиенту с заданным ID.
        - Проверяет, что сотрудники существуют по всем заданным ID, и возвращает список сотрудников.
      parameters:
        - $ref: '#/components/parameters/FormatParameter'
        - name: Impersonated-User-Id
          description: Идентификатор пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            format: uuid
        - name: Impersonated-User-Id-Type
          description: Тип идентификатора пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            enum:
              - HR_LINK_ID
              - SNILS
              - EXTERNAL_ID
        - name: Impersonated-User-Id-External-System-Type
          description: |
            Идентификатор внешней системы при аутентификации через мастер-токен.
          in: header
          schema:
            type: string
        - name: clientId
          in: path
          required: true
          description: Идентификатор клиента.
          schema:
            type: string
            format: uuid
      requestBody:
        description: Тело запроса DocumentRegistryFilterDTO
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DocumentRegistryFilterDTO'
      responses:
        '200':
          description: Этот код ответа не используется, при успехе выполнения метод всегда возвращает ответ с кодом 303.
        '303':
          description: |
            HTTP-заголовок `Location` будет содержать URL, по которому скачивается файл.<br/>
            ✍️ Postman и некоторые другие API-клиенты по умолчанию следуют редиректам и сразу скачивают файл, указанный в
            HTTP-заголовке `Location`. Это поведение настраивается на стороне клиента.
          headers:
            Location:
              schema:
                type: string
              description: URL, по которому скачивается файл
              example: https://host.hr-link.ru/api/v1/files?token=<<одноразовый_токен>>
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '429':
          $ref: '#/components/responses/TooManyRequests'
  /api/v1/clients/{clientId}/documents/getStatistics:
    post:
      tags:
        - documents
      summary: Статистика документов
      operationId: statisticGetDocumentStatisticsByHrRegistry
      security:
        - SessionCookieAuth: []
        - UserApiTokenAuth: []
        - MasterTokenAuth: []
      description: |
        ### Описание метода

        Метод возвращает количество документов по разным показателям.

        ### Валидации запроса

        - Тело запроса задано.
        - Клиент существует, не удалён, и к нему относится пользователь, выполняющий операцию.
        - Текущий пользователь имеет право DOCUMENTS_STATISTICS на уровне пользователя клиента или право DOCUMENTS_STATISTICS на уровне активного сотрудника в любом юрлице.
        - Если левая и правая границы дат создания документов заданы, они должны быть корректны.
        - Левая граница даты создания документов не должна превышать максимально допустимый возраст в днях, заданный в конфигурации.
        - Список ID юрлиц содержит только существующие юрлица.
        - Список ID юрлиц относится к заданному клиенту.
        - Пользователь клиента имеет право DOCUMENTS_STATISTICS или является активным сотрудником с правом DOCUMENTS_STATISTICS во всех заданных юрлицах.
        - Список ID типов документов содержит только существующие типы документов.
        - Пользователь клиента имеет право DOCUMENTS_STATISTICS для всех заданных типов документов.
        - Список ID отделов содержит только существующие отделы.
        - Пользователь клиента имеет право DOCUMENTS_STATISTICS для всех заданных отделов.
        - Список ID сотрудников содержит только существующих сотрудников.
        - Пользователь клиента имеет право DOCUMENTS_STATISTICS для всех отделов заданных сотрудников.
        - Пользователь клиента имеет право DOCUMENTS_STATISTICS для всех юрлиц заданных сотрудников.
        - Список ID руководителей содержит только существующих руководителей.
        - Пользователь клиента имеет право DOCUMENTS_STATISTICS для всех юрлиц заданных руководителей.
        - Список ID создателей документа содержит только существующих пользователей клиента.
        - Список ID создателей документа относится к заданному клиенту.
        - ID клиента соответствует формату UUID.
        - По заданному ID клиента существует клиент.
        - Пользователь, выполняющий операцию, относится к клиенту.
        - Проверяет, есть ли у пользователя клиента с заданным ID заданное право и возвращает кэш наличия прав у пользователя клиента.
        - Проверяет существование всех юрлиц клиента по заданному списку ID.
        - Проверяет, что все юрлица принадлежат клиенту с заданным ID.
        - Проверяет, что пользователь клиента имеет доступ ко всем заданным юрлицам на уровне ролей пользователя клиента или на уровне ролей сотрудника.
        - Проверяет, что все UUID, заданные в списке, соответствуют существующим типам документов и возвращает список типов документов.
        - Проверяет, что пользователь клиента имеет доступ ко всем заданным типам документов.
        - Проверяет, что все UUID, заданные в списке, соответствуют существующим отделам клиента и возвращает список отделов клиента.
        - Проверяет, что пользователь клиента имеет доступ ко всем заданным отделам.
        - Проверяет, что сотрудники существуют по всем заданным ID, и возвращает список сотрудников.
        - Проверяет, что отделы сотрудников доступны пользователю клиента с учётом контекста текущей операции.
        - Проверяет, что юрлица сотрудников входят в список разрешенных юрлиц пользователя клиента.
        - Проверяет, что пользователи клиента существуют по всем заданным ID, и возвращает список пользователей клиента.
        - Проверяет, что заданные пользователи клиента принадлежит клиенту с заданным ID.
        - Проверяет, что текущий пользователь относится к заданному клиенту и возвращает пользователя клиента, если он существует.
        - Проверяет, что ID клиента, заданный в виде строки, соответствует формату, и возвращает типизированный ID клиента.
        - Проверяет существование клиента по заданному ID и возвращает клиента, если он существует.
        - Проверяет, что клиент не удален.
        - Проверяет, что заданное юрлицо относится к заданному клиенту.
        - Проверяет, что заданный пользователь клиента принадлежит клиенту с заданным ID.
      parameters:
        - $ref: '#/components/parameters/FormatParameter'
        - name: Impersonated-User-Id
          description: Идентификатор пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            format: uuid
        - name: Impersonated-User-Id-Type
          description: Тип идентификатора пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            enum:
              - HR_LINK_ID
              - SNILS
              - EXTERNAL_ID
        - name: Impersonated-User-Id-External-System-Type
          description: |
            Идентификатор внешней системы при аутентификации через мастер-токен.
          in: header
          schema:
            type: string
        - name: clientId
          in: path
          required: true
          description: Идентификатор клиента.
          schema:
            type: string
            format: uuid
      requestBody:
        description: Тело запроса GetDocumentStatisticRequestDto
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/GetDocumentStatisticRequestDto'
      responses:
        '200':
          description: Успешная операция.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    type: boolean
                  documentStatistics:
                    $ref: '#/components/schemas/GetDocumentStatisticResponseDto'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '429':
          $ref: '#/components/responses/TooManyRequests'
  /api/v1/clients/{clientId}/documents/{documentId}:
    get:
      tags:
        - documents
      summary: Получить документ
      operationId: documentGetDocument
      security:
        - SessionCookieAuth: []
        - UserApiTokenAuth: []
        - MasterTokenAuth: []
      description: |
        ### Описание метода

        Метод возвращает данные по документообороту
        - данные документа, участников подписания, их данные и статусы. Если параметр baseDocumentId пустой, то документ является черновиком. Если документ был отправлен на подписание, то ID базового документа будет ссылаться на ID документа-черновика, на основе которого был создан этот документ. Если документ отправлен на подписание, то порядковые номера подписантов будут установлены согласно document.signingOrder. Первый подписант имеет порядковый номер равный 0. Если документ является черновиком, то порядковые номера всех подписантов равны 0. document.watchers
        - наблюдатели документа. Наблюдатели не подписывают документ. Они получают уведомление после завершения документооборота, после чего имеют доступ к документу и скачиванию архива с подписями участников документооборота. document.notice
        - Заметка о документе -присутствует в теле ответа только при наличии у пользователя, выполняющего операцию, прав кадровика.

        ### Валидации запроса

        - Клиент существует, не удалён, и к нему относится пользователь, выполняющий операцию.
        - Если передан ID документа в системе HR-Link, то ID документа соответствует формату UUID.
        - Документ должен существовать по заданному ID.
        - Документ должен относиться к заданному клиенту.
        - У пользователя клиента должно быть право DOCUMENTS на уровне пользователя клиента, или право DOCUMENTS на уровне сотрудника юрлица, к которому относится документ, или право DOCUMENTS на уровне ролей сотрудника и пользователь клиента должен являться создателем документа (когда документ не привязан к юрлицу), или пользователь клиента должен являться подписантом документа в момент, когда документ уже отправлен на подпись, и документ при этом не является базовым документом.
        - Проверяет, что ID документа задан корректно, и возвращает документ, если он существует.
        - ID клиента соответствует формату UUID.
        - По заданному ID клиента существует клиент.
        - Пользователь, выполняющий операцию, относится к клиенту.
        - Передан флаг, что у пользователя клиента есть доступ к документу.
        - Пользователь клиента является наблюдателем документа, в тот момент, когда документ уже подписан всеми руководителями-подписантами документа.
        - Проверяет, что текущий пользователь относится к заданному клиенту и возвращает пользователя клиента, если он существует.
        - Проверяет, что ID клиента, заданный в виде строки, соответствует формату, и возвращает типизированный ID клиента.
        - Проверяет существование клиента по заданному ID и возвращает клиента, если он существует.
        - Проверяет, что клиент не удален.
        - Возвращает конфигурацию проверки, требующую проверки только наблюдателя документа.
      parameters:
        - $ref: '#/components/parameters/FormatParameter'
        - name: Impersonated-User-Id
          description: Идентификатор пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            format: uuid
        - name: Impersonated-User-Id-Type
          description: Тип идентификатора пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            enum:
              - HR_LINK_ID
              - SNILS
              - EXTERNAL_ID
        - name: Impersonated-User-Id-External-System-Type
          description: |
            Идентификатор внешней системы при аутентификации через мастер-токен.
          in: header
          schema:
            type: string
        - name: clientId
          in: path
          required: true
          description: Идентификатор клиента.
          schema:
            type: string
            format: uuid
        - name: documentId
          in: path
          required: true
          description: Идентификатор документа в системе HRlink.
          schema:
            type: string
            format: uuid
      responses:
        '200':
          description: Успешная операция.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    type: boolean
                  document:
                    $ref: '#/components/schemas/DocumentDTO'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '429':
          $ref: '#/components/responses/TooManyRequests'
    delete:
      tags:
        - documents
      summary: Удалить документ
      operationId: documentDeleteDocument
      security:
        - SessionCookieAuth: []
        - UserApiTokenAuth: []
        - MasterTokenAuth: []
      description: |
        ### Описание метода

        Метод для удаления одного документа.
        При удалении документ лишь помечается как удаленный, а не удаляется целиком из системы.
        Обязательных полей нет, но задать json-тело обязательно т.е. надо задать тело запроса как пустой объект {}.

        ### Валидации запроса

        - Клиент существует, не удалён, и к нему относится пользователь, выполняющий операцию.
        - Тело запроса удаления документов задано.
        - ID документа соответствует формату UUID.
        - Документ должен существовать по заданному ID.
        - Документ должен принадлежать заданному клиенту.
        - У пользователя должно быть право удаления документов на уровне ролей пользователя клиента или, если документ не связан ни с каким юрлицом, то он должен быть создателем документа, который при этом имеет право удаления документов на уровне сотрудника клиента или, если документ связан с юрлицом, то он должен быть сотрудником этого юрлица и иметь право на удаление документов на уровне ролей сотрудника заданного юрлица.
        - Указана корректная версия данных документа.
        - ID клиента соответствует формату UUID.
        - По заданному ID клиента существует клиент.
        - Пользователь, выполняющий операцию, относится к клиенту.
        - Проверяет, что ID документа, заданный в виде строки, соответствует формату, и возвращает типизированный ID документа.
        - Проверяет, что документ существует по заданным ID и возвращает документ, если он существует.
        - Проверяет, что документ относится к заданному клиенту.
        - У пользователя есть право удаления документов на уровне ролей пользователя клиента.
        - Если документ не связан ни с каким юрлицом, то удалять документ может создатель документа, который при этом имеет право удаления документов на уровне сотрудника клиента.
        - Если документ связан с юрлицом, то удалять документ может сотрудник этого юрлица, который имеет право на удаление документов на уровне ролей сотрудника клиента.
        - Проверяет, что указана корректная версия данных документа.
        - Проверяет, что текущий пользователь относится к заданному клиенту и возвращает пользователя клиента, если он существует.
        - Проверяет, что ID клиента, заданный в виде строки, соответствует формату, и возвращает типизированный ID клиента.
        - Проверяет существование клиента по заданному ID и возвращает клиента, если он существует.
        - Проверяет, что клиент не удален.
        - Проверяет существование документа по заданному ID во внешней системе и возвращает документ, если он существует.
        - Пользователь является наблюдателем документа.
      parameters:
        - $ref: '#/components/parameters/FormatParameter'
        - name: Impersonated-User-Id
          description: Идентификатор пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            format: uuid
        - name: Impersonated-User-Id-Type
          description: Тип идентификатора пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            enum:
              - HR_LINK_ID
              - SNILS
              - EXTERNAL_ID
        - name: Impersonated-User-Id-External-System-Type
          description: |
            Идентификатор внешней системы при аутентификации через мастер-токен.
          in: header
          schema:
            type: string
        - name: clientId
          in: path
          required: true
          description: Идентификатор клиента.
          schema:
            type: string
            format: uuid
        - name: documentId
          in: path
          required: true
          description: Идентификатор документа в системе HRlink.
          schema:
            type: string
            format: uuid
      requestBody:
        description: Тело запроса VersionDTO
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/VersionDTO'
      responses:
        '200':
          description: Успешная операция.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    type: boolean
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '429':
          $ref: '#/components/responses/TooManyRequests'
  /api/v1/clients/{clientId}/documents/{documentExternalId}/externalId:
    get:
      tags:
        - documents
      summary: Получить документ по внешнему ID
      operationId: documentGetDocumentByExternalId
      security:
        - SessionCookieAuth: []
        - UserApiTokenAuth: []
        - MasterTokenAuth: []
      description: |
        ### Описание метода

        Метод возвращает данные по документообороту
        - данные документа, участников подписания, их данные и статусы. Если параметр baseDocumentId пустой, то документ является черновиком. Если документ был отправлен на подписание, то ID базового документа будет ссылаться на ID документа-черновика, на основе которого был создан этот документ. Если документ отправлен на подписание, то порядковые номера подписантов будут установлены согласно document.signingOrder. Первый подписант имеет порядковый номер равный 0. Если документ является черновиком, то порядковые номера всех подписантов равны 0. document.watchers
        - наблюдатели документа. Наблюдатели не подписывают документ. Они получают уведомление после завершения документооборота, после чего имеют доступ к документу и скачиванию архива с подписями участников документооборота. document.notice
        - Заметка о документе -присутствует в теле ответа только при наличии у пользователя, выполняющего операцию, прав кадровика.

        ### Валидации запроса

        - Клиент существует, не удалён, и к нему относится пользователь, выполняющий операцию.
        - Если передан ID документа в системе HR-Link, то ID документа соответствует формату UUID.
        - Документ должен существовать по заданному ID.
        - Документ должен относиться к заданному клиенту.
        - У пользователя клиента должно быть право `DOCUMENTS` на уровне пользователя клиента или право `DOCUMENTS` на уровне сотрудника юрлица, к которому относится документ, или право `DOCUMENTS` на уровне ролей сотрудника и пользователь клиента должен являться создателем документа, когда документ при этом не привязан к юрлицу, или пользователь клиента должен являться подписантом документа в тот момент, когда документ уже отправлен на подпись, и документ при этом не является базовым документом.
        - Проверяет, что ID документа задан корректно, и возвращает документ, если он существует.
        - ID клиента соответствует формату UUID.
        - По заданному ID клиента существует клиент.
        - Пользователь, выполняющий операцию, относится к клиенту.
        - Передан флаг, что у пользователя клиента есть доступ к документу.
        - Пользователь клиента является наблюдателем документа, в тот момент, когда документ уже подписан всеми руководителями-подписантами документа.
        - Проверяет, что текущий пользователь относится к заданному клиенту и возвращает пользователя клиента, если он существует.
        - Проверяет, что ID клиента, заданный в виде строки, соответствует формату, и возвращает типизированный ID клиента.
        - Проверяет существование клиента по заданному ID и возвращает клиента, если он существует.
        - Проверяет, что клиент не удален.
        - Возвращает конфигурацию проверки, требующую проверки только наблюдателя документа.
      parameters:
        - $ref: '#/components/parameters/FormatParameter'
        - name: Impersonated-User-Id
          description: Идентификатор пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            format: uuid
        - name: Impersonated-User-Id-Type
          description: Тип идентификатора пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            enum:
              - HR_LINK_ID
              - SNILS
              - EXTERNAL_ID
        - name: Impersonated-User-Id-External-System-Type
          description: |
            Идентификатор внешней системы при аутентификации через мастер-токен.
          in: header
          schema:
            type: string
        - name: clientId
          in: path
          required: true
          description: Идентификатор клиента.
          schema:
            type: string
            format: uuid
        - name: documentExternalId
          in: path
          required: true
          description: Идентификатор документа во внешней системе.
          schema:
            type: string
      responses:
        '200':
          description: Успешная операция.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    type: boolean
                  document:
                    $ref: '#/components/schemas/DocumentDTO'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '429':
          $ref: '#/components/responses/TooManyRequests'
  /api/v1/clients/{clientId}/documents/{documentId}/printFormFile:
    get:
      tags:
        - documents
      summary: Скачать печатную форму
      operationId: documentGetDocumentPrintFormFile
      security:
        - SessionCookieAuth: []
        - UserApiTokenAuth: []
        - MasterTokenAuth: []
      description: |
        ### Описание метода

        ### Валидации запроса

        - ID документа должен соответствовать формату UUID.
        - Клиент существует, не удалён, и к нему относится пользователь, выполняющий операцию.
        - Документ с заданным ID должен существовать.
        - Документ должен относиться к заданному клиенту.
        - Пользователь должен иметь право запрашивать данные документа.
        - У документа есть файл печатной формы.
        - Проверяет, что ID документа, заданный в виде строки, соответствует формату, и возвращает типизированный ID документа.
        - ID клиента соответствует формату UUID.
        - По заданному ID клиента существует клиент.
        - Пользователь, выполняющий операцию, относится к клиенту.
        - Проверяет, что документ существует по заданным ID и возвращает документ, если он существует.
        - Проверяет, что документ относится к заданному клиенту.
        - Выполняет проверку наличия права у пользователя клиента для получения редиректа для скачивания файла печатной формы документа.
        - Проверяет, что у документа есть файл печатной формы.
        - Проверяет, что текущий пользователь относится к заданному клиенту и возвращает пользователя клиента, если он существует.
        - Проверяет, что ID клиента, заданный в виде строки, соответствует формату, и возвращает типизированный ID клиента.
        - Проверяет существование клиента по заданному ID и возвращает клиента, если он существует.
        - Проверяет, что клиент не удален.
        - Проверяет существование документа по заданному ID во внешней системе и возвращает документ, если он существует.
        - У пользователя клиента должен быть доступ к документу, а также к файлам документа, если документ отмечен скрытый от участника после подписания.
        - Пользователь клиента является наблюдателем документа, в тот момент, когда документ уже подписан всеми руководителями-подписантами документа.
        - Пользователь клиента имеет доступ к связанными сущностям заданной сущности.
        - Проверяет наличие прав на файл документа для пользователя с учетом связей.
      parameters:
        - $ref: '#/components/parameters/FormatParameter'
        - name: Impersonated-User-Id
          description: Идентификатор пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            format: uuid
        - name: Impersonated-User-Id-Type
          description: Тип идентификатора пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            enum:
              - HR_LINK_ID
              - SNILS
              - EXTERNAL_ID
        - name: Impersonated-User-Id-External-System-Type
          description: |
            Идентификатор внешней системы при аутентификации через мастер-токен.
          in: header
          schema:
            type: string
        - name: clientId
          in: path
          required: true
          description: Идентификатор клиента.
          schema:
            type: string
            format: uuid
        - name: documentId
          in: path
          required: true
          description: Идентификатор документа в системе HRlink.
          schema:
            type: string
            format: uuid
      responses:
        '200':
          description: Этот код ответа не используется, при успехе выполнения метод всегда возвращает ответ с кодом 303.
        '303':
          description: |
            HTTP-заголовок `Location` будет содержать URL, по которому скачивается файл.<br/>
            ✍️ Postman и некоторые другие API-клиенты по умолчанию следуют редиректам и сразу скачивают файл, указанный в
            HTTP-заголовке `Location`. Это поведение настраивается на стороне клиента.
          headers:
            Location:
              schema:
                type: string
              description: URL, по которому скачивается файл
              example: https://host.hr-link.ru/api/v1/files?token=<<одноразовый_токен>>
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '429':
          $ref: '#/components/responses/TooManyRequests'
  /api/v1/clients/{clientId}/documents/{documentId}/convertedFile:
    get:
      tags:
        - documents
      summary: Скачать документ (PDF/A)
      operationId: documentGetDocumentConvertedFile
      security:
        - SessionCookieAuth: []
        - UserApiTokenAuth: []
        - MasterTokenAuth: []
      description: |
        ### Описание метода

        ### Валидации запроса

        - ID документа должен соответствовать формату UUID.
        - Клиент существует, не удалён, и к нему относится пользователь, выполняющий операцию.
        - Документ с заданным ID должен существовать.
        - Документ должен относиться к заданному клиенту.
        - Пользователь должен иметь право запрашивать данные документа.
        - Завершена конвертация файла документа в PDF/A формат.
        - Проверяет, что ID документа, заданный в виде строки, соответствует формату, и возвращает типизированный ID документа.
        - ID клиента соответствует формату UUID.
        - По заданному ID клиента существует клиент.
        - Пользователь, выполняющий операцию, относится к клиенту.
        - Проверяет, что документ существует по заданным ID и возвращает документ, если он существует.
        - Проверяет, что документ относится к заданному клиенту.
        - Выполняет проверку наличия права у пользователя клиента для получения редиректа для скачивания файла документа формата PDF/A.
        - Проверяет, что конвертация файла документа в PDF/A формат завершилась.
        - Проверяет, что текущий пользователь относится к заданному клиенту и возвращает пользователя клиента, если он существует.
        - Проверяет, что ID клиента, заданный в виде строки, соответствует формату, и возвращает типизированный ID клиента.
        - Проверяет существование клиента по заданному ID и возвращает клиента, если он существует.
        - Проверяет, что клиент не удален.
        - Проверяет существование документа по заданному ID во внешней системе и возвращает документ, если он существует.
        - У пользователя клиента должен быть доступ к документу, а также к файлам документа, если документ отмечен скрытый от участника после подписания.
        - Пользователь клиента является наблюдателем документа, в тот момент, когда документ уже подписан всеми руководителями-подписантами документа.
        - Пользователь клиента имеет доступ к связанными сущностям заданной сущности.
        - Проверяет наличие прав на файл документа для пользователя с учетом связей.
      parameters:
        - $ref: '#/components/parameters/FormatParameter'
        - name: Impersonated-User-Id
          description: Идентификатор пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            format: uuid
        - name: Impersonated-User-Id-Type
          description: Тип идентификатора пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            enum:
              - HR_LINK_ID
              - SNILS
              - EXTERNAL_ID
        - name: Impersonated-User-Id-External-System-Type
          description: |
            Идентификатор внешней системы при аутентификации через мастер-токен.
          in: header
          schema:
            type: string
        - name: clientId
          in: path
          required: true
          description: Идентификатор клиента.
          schema:
            type: string
            format: uuid
        - name: documentId
          in: path
          required: true
          description: Идентификатор документа в системе HRlink.
          schema:
            type: string
            format: uuid
      responses:
        '200':
          description: Этот код ответа не используется, при успехе выполнения метод всегда возвращает ответ с кодом 303.
        '303':
          description: |
            HTTP-заголовок `Location` будет содержать URL, по которому скачивается файл.<br/>
            ✍️ Postman и некоторые другие API-клиенты по умолчанию следуют редиректам и сразу скачивают файл, указанный в
            HTTP-заголовке `Location`. Это поведение настраивается на стороне клиента.
          headers:
            Location:
              schema:
                type: string
              description: URL, по которому скачивается файл
              example: https://host.hr-link.ru/api/v1/files?token=<<одноразовый_токен>>
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '429':
          $ref: '#/components/responses/TooManyRequests'
  /api/v1/clients/{clientId}/documents/{documentId}/archive:
    get:
      tags:
        - documents
      summary: Скачать архив с подписями
      operationId: documentDownloadArchive
      security:
        - SessionCookieAuth: []
        - UserApiTokenAuth: []
        - MasterTokenAuth: []
      description: |
        ### Описание метода

        Результатом выполнения метода будет 303 See Other, а HTTP-заголовок Location будет содержать одноразовую ссылку для скачивания файла zip-архива, содержащего файл документа и файлы подписей к нему: //file.hr-link.ru/api/v1/files?token=:token Имя файла zip-архива документооборота будет сгенерированно в соответствии со следующим форматом: {СНИЛС}_{ТипДокумента}_№{НомерДокумента}_от_{ДатаДокумента};
        где {СНИЛС}
        - это СНИЛС сотрудника-подписанта. Например, 13165063630_Согласие_на_обработк_№12К_от_2020-12-09. Скачать архив документооборота можно только для документов, отправленных на подписание. Для документов черновиков скачать архив документооборота нельзя. В архиве документооборота подписи файла документа могут отсутствовать, может быть одна подпись, и может быть обе подписи. Это зависит от того, кто подписал документ на момент скачивания архива документооборота.

        ### Валидации запроса

        - Клиент существует, не удалён, и к нему относится пользователь, выполняющий операцию.
        - Если передан ID документа в системе HR-Link, то ID документа соответствует формату UUID.
        - Документ должен существовать по заданному ID.
        - Документ должен относиться к заданному клиенту.
        - Если передан ID документа в системе HR-Link, документ должен относиться к заданному клиенту.
        - Документ должен не быть базовым.
        - Конвертация файла документа в PDF/A формат должна быть завершена.
        - У пользователя клиента должно быть право DOCUMENTS на уровне ролей пользователя клиента и право DOCUMENTS на уровне ролей сотрудника юрлица, к которому относится документ, и пользователь должен являться одним из подписантов документа (независимо от того, подписал он уже документ или нет).
        - Проверяет, что ID документа задан корректно, и возвращает документ, если он существует.
        - ID клиента соответствует формату UUID.
        - По заданному ID клиента существует клиент.
        - Пользователь, выполняющий операцию, относится к клиенту.
        - Проверяет, что документ относится к заданному клиенту.
        - Проверяет, что документ не является базовым.
        - Проверяет, что конвертация файла документа в PDF/A формат завершилась.
        - Пользователь имеет право DOCUMENTS на уровне ролей пользователя клиента.
        - Пользователь имеет право DOCUMENTS на уровне ролей сотрудника юрлица, к которому относится документ, тип документа и отдел сотрудника-подписанта относятся к доступным.
        - Пользователь является одним из подписантов документа (не важно при этом подписал он уже документ или нет).
        - Проверяет, что текущий пользователь относится к заданному клиенту и возвращает пользователя клиента, если он существует.
        - Проверяет, что ID клиента, заданный в виде строки, соответствует формату, и возвращает типизированный ID клиента.
        - Проверяет существование клиента по заданному ID и возвращает клиента, если он существует.
        - Проверяет, что клиент не удален.
        - У пользователя клиента должен быть доступ к документу, а также к файлам документа, если документ отмечен скрытый от участника после подписания.
        - Пользователь клиента является наблюдателем документа, в тот момент, когда документ уже подписан всеми руководителями-подписантами документа.
        - Проверяет наличие прав на файл документа для пользователя.
        - Проверяет наличие прав на получение данных документа относительно права на персональные данные.
      parameters:
        - $ref: '#/components/parameters/FormatParameter'
        - name: Impersonated-User-Id
          description: Идентификатор пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            format: uuid
        - name: Impersonated-User-Id-Type
          description: Тип идентификатора пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            enum:
              - HR_LINK_ID
              - SNILS
              - EXTERNAL_ID
        - name: Impersonated-User-Id-External-System-Type
          description: |
            Идентификатор внешней системы при аутентификации через мастер-токен.
          in: header
          schema:
            type: string
        - name: clientId
          in: path
          required: true
          description: Идентификатор клиента.
          schema:
            type: string
            format: uuid
        - name: documentId
          in: path
          required: true
          description: Идентификатор документа в системе HRlink.
          schema:
            type: string
            format: uuid
      responses:
        '200':
          description: Этот код ответа не используется, при успехе выполнения метод всегда возвращает ответ с кодом 303.
        '303':
          description: |
            HTTP-заголовок `Location` будет содержать URL, по которому скачивается файл.<br/>
            ✍️ Postman и некоторые другие API-клиенты по умолчанию следуют редиректам и сразу скачивают файл, указанный в
            HTTP-заголовке `Location`. Это поведение настраивается на стороне клиента.
          headers:
            Location:
              schema:
                type: string
              description: URL, по которому скачивается файл
              example: https://host.hr-link.ru/api/v1/files?token=<<одноразовый_токен>>
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '429':
          $ref: '#/components/responses/TooManyRequests'
  /api/v1/clients/{clientId}/documents/{documentExternalId}/externalId/archive:
    get:
      tags:
        - documents
      summary: Скачать архив с подписями по внешнему ID
      operationId: documentDownloadArchiveByExternalId
      security:
        - SessionCookieAuth: []
        - UserApiTokenAuth: []
        - MasterTokenAuth: []
      description: |
        ### Описание метода

        Результатом выполнения метода будет 303 See Other, а HTTP-заголовок Location будет содержать одноразовую ссылку для скачивания файла zip-архива, содержащего файл документа и файлы подписей к нему: //file.hr-link.ru/api/v1/files?token=:token Имя файла zip-архива документооборота будет сгенерированно в соответствии со следующим форматом: {СНИЛС}_{ТипДокумента}_№{НомерДокумента}_от_{ДатаДокумента};
        где {СНИЛС}
        - это СНИЛС сотрудника-подписанта. Например, 13165063630_Согласие_на_обработк_№12К_от_2020-12-09. Скачать архив документооборота можно только для документов, отправленных на подписание. Для документов черновиков скачать архив документооборота нельзя. В архиве документооборота подписи файла документа могут отсутствовать, может быть одна подпись, и может быть обе подписи. Это зависит от того, кто подписал документ на момент скачивания архива документооборота.

        ### Валидации запроса

        - Клиент существует, не удалён, и к нему относится пользователь, выполняющий операцию.
        - Если передан ID документа в системе HR-Link, то ID документа соответствует формату UUID.
        - Документ должен существовать по заданному ID.
        - Документ должен относиться к заданному клиенту.
        - Если передан ID документа в системе HR-Link, документ должен относиться к заданному клиенту.
        - Документ должен не быть базовым.
        - Конвертация файла документа в PDF/A формат должна быть завершена.
        - У пользователя клиента должно быть право `DOCUMENTS` на уровне ролей пользователя клиента и право `DOCUMENTS` на уровне ролей сотрудника юрлица, к которому относится документ, и пользователь должен являться одним из подписантов документа (не важно при этом подписал он уже документ или нет).
        - Проверяет, что ID документа задан корректно, и возвращает документ, если он существует.
        - ID клиента соответствует формату UUID.
        - По заданному ID клиента существует клиент.
        - Пользователь, выполняющий операцию, относится к клиенту.
        - Проверяет, что документ относится к заданному клиенту.
        - Проверяет, что документ не является базовым.
        - Проверяет, что конвертация файла документа в PDF/A формат завершилась.
        - Пользователь имеет право `DOCUMENTS` на уровне ролей пользователя клиента.
        - Пользователь имеет право `DOCUMENTS` на уровне ролей сотрудника юрлица, к которому относится документ, тип документа и отдел сотрудника-подписанта относятся к доступным.
        - Пользователь является одним из подписантов документа (не важно при этом подписал он уже документ или нет).
        - Проверяет, что текущий пользователь относится к заданному клиенту и возвращает пользователя клиента, если он существует.
        - Проверяет, что ID клиента, заданный в виде строки, соответствует формату, и возвращает типизированный ID клиента.
        - Проверяет существование клиента по заданному ID и возвращает клиента, если он существует.
        - Проверяет, что клиент не удален.
        - У пользователя клиента должен быть доступ к документу, а также к файлам документа, если документ отмечен скрытый от участника после подписания.
        - Пользователь клиента является наблюдателем документа, в тот момент, когда документ уже подписан всеми руководителями-подписантами документа.
        - Проверяет наличие прав на файл документа для пользователя.
        - Проверяет наличие прав на получение данных документа относительно права на персональные данные.
      parameters:
        - $ref: '#/components/parameters/FormatParameter'
        - name: Impersonated-User-Id
          description: Идентификатор пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            format: uuid
        - name: Impersonated-User-Id-Type
          description: Тип идентификатора пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            enum:
              - HR_LINK_ID
              - SNILS
              - EXTERNAL_ID
        - name: Impersonated-User-Id-External-System-Type
          description: |
            Идентификатор внешней системы при аутентификации через мастер-токен.
          in: header
          schema:
            type: string
        - name: clientId
          in: path
          required: true
          description: Идентификатор клиента.
          schema:
            type: string
            format: uuid
        - name: documentExternalId
          in: path
          required: true
          description: Идентификатор документа во внешней системе.
          schema:
            type: string
      responses:
        '200':
          description: Этот код ответа не используется, при успехе выполнения метод всегда возвращает ответ с кодом 303.
        '303':
          description: |
            HTTP-заголовок `Location` будет содержать URL, по которому скачивается файл.<br/>
            ✍️ Postman и некоторые другие API-клиенты по умолчанию следуют редиректам и сразу скачивают файл, указанный в
            HTTP-заголовке `Location`. Это поведение настраивается на стороне клиента.
          headers:
            Location:
              schema:
                type: string
              description: URL, по которому скачивается файл
              example: https://host.hr-link.ru/api/v1/files?token=<<одноразовый_токен>>
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '429':
          $ref: '#/components/responses/TooManyRequests'
  /api/v1/clients/{clientId}/documents/{documentId}/markAsSeen:
    put:
      tags:
        - documents
      summary: Отметить как просмотренный
      operationId: documentMarkAsSeen
      security:
        - SessionCookieAuth: []
        - UserApiTokenAuth: []
        - MasterTokenAuth: []
      description: |
        ### Описание метода

        > **⚠️ Будьте осторожны!**
        >
        > Методы PUT перезаписывают запись целиком: любые непереданные поля считаются null и затирают данные в БД.
        > Поэтому при обновлении нужно указывать все поля.
         Отмечает документ как просмотренный, если текущий пользователь является одним из его подписантов.

        ### Валидации запроса

        - ID документа должен соответствовать формату UUID.
        - Клиент существует, не удалён, и к нему относится пользователь, выполняющий операцию.
        - Документ с заданным ID должен существовать.
        - Документ должен относиться к заданному клиенту.
        - Документ должен быть не черновиком.
        - Текущий пользователь должен быть одним из подписантов документа.
        - Проверяет, что ID документа, заданный в виде строки, соответствует формату, и возвращает типизированный ID документа.
        - ID клиента соответствует формату UUID.
        - По заданному ID клиента существует клиент.
        - Пользователь, выполняющий операцию, относится к клиенту.
        - Проверяет, что документ существует по заданным ID и возвращает документ, если он существует.
        - Проверяет, что документ относится к заданному клиенту.
        - Проверяет, что документ не является черновиком.
        - Проверяет, что текущий пользователь относится к заданному клиенту и возвращает пользователя клиента, если он существует.
        - Проверяет, что ID клиента, заданный в виде строки, соответствует формату, и возвращает типизированный ID клиента.
        - Проверяет существование клиента по заданному ID и возвращает клиента, если он существует.
        - Проверяет, что клиент не удален.
        - Проверяет существование документа по заданному ID во внешней системе и возвращает документ, если он существует.
      parameters:
        - $ref: '#/components/parameters/FormatParameter'
        - name: Impersonated-User-Id
          description: Идентификатор пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            format: uuid
        - name: Impersonated-User-Id-Type
          description: Тип идентификатора пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            enum:
              - HR_LINK_ID
              - SNILS
              - EXTERNAL_ID
        - name: Impersonated-User-Id-External-System-Type
          description: |
            Идентификатор внешней системы при аутентификации через мастер-токен.
          in: header
          schema:
            type: string
        - name: clientId
          in: path
          required: true
          description: Идентификатор клиента.
          schema:
            type: string
            format: uuid
        - name: documentId
          in: path
          required: true
          description: Идентификатор документа в системе HRlink.
          schema:
            type: string
            format: uuid
      responses:
        '200':
          description: Успешная операция.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    type: boolean
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '429':
          $ref: '#/components/responses/TooManyRequests'
  /api/v1/clients/{clientId}/documents/{documentId}/notice:
    put:
      tags:
        - documents
      summary: Обновить заметку кадровика
      operationId: documentUpdateDocumentNotice
      security:
        - SessionCookieAuth: []
        - UserApiTokenAuth: []
        - MasterTokenAuth: []
      description: |
        ### Описание метода

        > **⚠️ Будьте осторожны!**
        >
        > Методы PUT перезаписывают запись целиком: любые непереданные поля считаются null и затирают данные в БД.
        > Поэтому при обновлении нужно указывать все поля.
         Заметка видна только кадровикам (метод доступен только для кадровика или администратора)

        ### Валидации запроса

        - ID документа должен соответствовать формату UUID.
        - Тело запроса задано.
        - Клиент существует, не удалён, и к нему относится пользователь, выполняющий операцию.
        - Документ с заданным ID должен существовать.
        - Документ должен относиться к заданному клиенту.
        - Если в теле запроса указана версия документа, то она должна быть указана корректно.
        - У текущего пользователя должно быть право изменять заметку кадровика о документе.
        - Проверяет, что ID документа, заданный в виде строки, соответствует формату, и возвращает типизированный ID документа.
        - ID клиента соответствует формату UUID.
        - По заданному ID клиента существует клиент.
        - Пользователь, выполняющий операцию, относится к клиенту.
        - Проверяет, что документ существует по заданным ID и возвращает документ, если он существует.
        - Проверяет, что документ относится к заданному клиенту.
        - Проверяет, что указана корректная версия данных документа.
        - У пользователя есть право `DOCUMENTS_UPDATE`.
        - Если документ не связан ни с каким юрлицом, то обновлять заметку кадровика о документе может создатель документа, который при этом имеет право `DOCUMENTS_UPDATE`.
        - Если документ связан с юрлицом, то обновлять заметку кадровика о документе может сотрудник этого юрлица, который имеет право `DOCUMENTS_UPDATE` в этом юрлице, имеет доступ к документу по типу документа и имеет доступ к документу по отделу сотрудника-подписанта документа.
        - Проверяет, что текущий пользователь относится к заданному клиенту и возвращает пользователя клиента, если он существует.
        - Проверяет, что ID клиента, заданный в виде строки, соответствует формату, и возвращает типизированный ID клиента.
        - Проверяет существование клиента по заданному ID и возвращает клиента, если он существует.
        - Проверяет, что клиент не удален.
        - Проверяет существование документа по заданному ID во внешней системе и возвращает документ, если он существует.
        - Пользователь является наблюдателем документа.
      parameters:
        - $ref: '#/components/parameters/FormatParameter'
        - name: Impersonated-User-Id
          description: Идентификатор пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            format: uuid
        - name: Impersonated-User-Id-Type
          description: Тип идентификатора пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            enum:
              - HR_LINK_ID
              - SNILS
              - EXTERNAL_ID
        - name: Impersonated-User-Id-External-System-Type
          description: |
            Идентификатор внешней системы при аутентификации через мастер-токен.
          in: header
          schema:
            type: string
        - name: clientId
          in: path
          required: true
          description: Идентификатор клиента.
          schema:
            type: string
            format: uuid
        - name: documentId
          in: path
          required: true
          description: Идентификатор документа в системе HRlink.
          schema:
            type: string
            format: uuid
      requestBody:
        description: Тело запроса UpdateDocumentNoticeDTO
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateDocumentNoticeDTO'
      responses:
        '200':
          description: Успешная операция.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    type: boolean
                  document:
                    $ref: '#/components/schemas/UpdatedDocumentWithNoticeDTO'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '429':
          $ref: '#/components/responses/TooManyRequests'
  /api/v1/clients/{clientId}/documents/{documentExternalId}/externalId/clearExternalId:
    put:
      tags:
        - documents
      summary: Очистить внешний ID документа
      operationId: documentClearExternalIdByExternalId
      security:
        - SessionCookieAuth: []
        - UserApiTokenAuth: []
        - MasterTokenAuth: []
      description: |
        ### Описание метода

        > **⚠️ Будьте осторожны!**
        >
        > Методы PUT перезаписывают запись целиком: любые непереданные поля считаются null и затирают данные в БД.
        > Поэтому при обновлении нужно указывать все поля.
         Метод работает для всех документов (и черновики, и отправленные на подпись, и удаленные). Затирает внешний ID документа по внешнему ID документа.

        ### Валидации запроса

        - Клиент существует, не удалён, и к нему относится пользователь, выполняющий операцию.
        - Документ должен существовать по заданному ID документа во внешней системе.
        - Документ должен принадлежать заданному клиенту.
        - У пользователя должно быть право на обновление документов на уровне ролей пользователя клиента или, если документ не связан ни с каким юрлицом, то он должен иметь права на уровне пользователя клиента или быть создателем документа, который при этом имеет право обновления документов на уровне сотрудника клиента или, если документ связан с юрлицом, то он должен быть сотрудником этого юрлица и иметь право на обновление документов на уровне ролей сотрудника заданного юрлица.
        - ID клиента соответствует формату UUID.
        - По заданному ID клиента существует клиент.
        - Пользователь, выполняющий операцию, относится к клиенту.
        - Проверяет существование документа по заданному ID во внешней системе и возвращает документ, если он существует.
        - Проверяет, что документ относится к заданному клиенту.
        - Пользователь клиента должен являться создателем документа и иметь права на уровне сотрудника.
        - Пользователь клиента должен иметь права на уровне пользователя клиента.
        - Проверяет, есть ли у пользователя клиента с заданным ID для заданного юрлица заданное право с учётом замещений.
        - В случае замещения в режиме кадровика дополнительно проверяются его активные замещения.
        - Проверяет, что текущий пользователь относится к заданному клиенту и возвращает пользователя клиента, если он существует.
        - Проверяет, что ID клиента, заданный в виде строки, соответствует формату, и возвращает типизированный ID клиента.
        - Проверяет существование клиента по заданному ID и возвращает клиента, если он существует.
        - Проверяет, что клиент не удален.
      parameters:
        - $ref: '#/components/parameters/FormatParameter'
        - name: Impersonated-User-Id
          description: Идентификатор пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            format: uuid
        - name: Impersonated-User-Id-Type
          description: Тип идентификатора пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            enum:
              - HR_LINK_ID
              - SNILS
              - EXTERNAL_ID
        - name: Impersonated-User-Id-External-System-Type
          description: |
            Идентификатор внешней системы при аутентификации через мастер-токен.
          in: header
          schema:
            type: string
        - name: clientId
          in: path
          required: true
          description: Идентификатор клиента.
          schema:
            type: string
            format: uuid
        - name: documentExternalId
          in: path
          required: true
          description: Идентификатор документа во внешней системе.
          schema:
            type: string
      responses:
        '200':
          description: Успешная операция.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    type: boolean
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '429':
          $ref: '#/components/responses/TooManyRequests'
  /api/v1/clients/{clientId}/documents/{documentId}/signingRequests/{signingRequestId}:
    get:
      tags:
        - documents
      summary: Получить запрос на подписание
      operationId: documentSigningRequestGetDocumentSigningRequest
      security:
        - SessionCookieAuth: []
        - UserApiTokenAuth: []
        - MasterTokenAuth: []
      description: |
        ### Описание метода

        Метод для получения данных запроса на подписание документа. При создании запроса на подписание возвращается ID этого запроса. Данный метод позволяет получить данные и состояние этого запроса на подписание по ID документа и ID запроса на подписание документа.

        ### Валидации запроса

        - Клиент существует, не удалён, и к нему относится пользователь, выполняющий операцию.
        - ID документа соответствует формату UUID.
        - ID запроса на подписание документа соответствует формату UUID.
        - Документ с заданным ID существует.
        - Документ с заданным ID относится к заданному клиенту.
        - Запрос на подписание документа с заданным ID существует.
        - Если запрос массового подписания, то он принадлежит указанному документу.
        - Имеется доступ к запросу на подписание и он принадлежит указанному документу.
        - ID клиента соответствует формату UUID.
        - По заданному ID клиента существует клиент.
        - Пользователь, выполняющий операцию, относится к клиенту.
        - Проверяет, что ID документа, заданный в виде строки, соответствует формату, и возвращает типизированный ID документа.
        - Проверяет, что документ существует по заданным ID и возвращает документ, если он существует.
        - Проверяет, что документ относится к заданному клиенту.
        - Проверяет, что по заданному ID существует запрос подписания документа.
        - Проверяет, что запрос массового подписания документов относится к документу.
        - Проверяет, что текущий пользователь имеет право на получение данных запроса на подписание и возвращает подписанта документа, которым он является.
        - Текущий пользователь клиента должен являться подписантом с заданным ID.
        - Проверяет, что запрос на подписание документа относится к документу.
        - Проверяет, что текущий пользователь относится к заданному клиенту и возвращает пользователя клиента, если он существует.
        - Проверяет, что ID клиента, заданный в виде строки, соответствует формату, и возвращает типизированный ID клиента.
        - Проверяет существование клиента по заданному ID и возвращает клиента, если он существует.
        - Проверяет, что клиент не удален.
        - Проверяет существование документа по заданному ID во внешней системе и возвращает документ, если он существует.
      parameters:
        - $ref: '#/components/parameters/FormatParameter'
        - name: Impersonated-User-Id
          description: Идентификатор пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            format: uuid
        - name: Impersonated-User-Id-Type
          description: Тип идентификатора пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            enum:
              - HR_LINK_ID
              - SNILS
              - EXTERNAL_ID
        - name: Impersonated-User-Id-External-System-Type
          description: |
            Идентификатор внешней системы при аутентификации через мастер-токен.
          in: header
          schema:
            type: string
        - name: clientId
          in: path
          required: true
          description: Идентификатор клиента.
          schema:
            type: string
            format: uuid
        - name: documentId
          in: path
          required: true
          description: Идентификатор документа в системе HRlink.
          schema:
            type: string
            format: uuid
        - name: signingRequestId
          in: path
          required: true
          description: Идентификатор запроса подписания в системе HRlink.
          schema:
            type: string
            format: uuid
      responses:
        '200':
          description: Успешная операция.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    type: boolean
                  documentSigningRequest:
                    $ref: '#/components/schemas/DocumentSigningRequestDTO'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '429':
          $ref: '#/components/responses/TooManyRequests'
  /api/v1/clients/{clientId}/documents:
    delete:
      tags:
        - documents
      summary: Удалить документы
      operationId: documentDeleteDocuments
      security:
        - SessionCookieAuth: []
        - UserApiTokenAuth: []
        - MasterTokenAuth: []
      description: |
        ### Описание метода

        При удалении документ лишь помечается как удаленный, а не удаляется целиком из системы.
        Рекомендованное количество удаляемых документов в списке
        - не более 20 тыс.
        Для каждого документа в списке можно указывать одно из двух полей ID документа (documents[].id или documents[].externalId). Если указать оба ID, то приоритет будет у поля documents[].id.

        ### Валидации запроса

        - Клиент существует, не удалён, и к нему относится пользователь, выполняющий операцию.
        - Тело запроса удаления документов задано.
        - Хотя бы один документ должен быть указан и ни одни из указанных документов не null.
        - ID каждого документа должен быть указан или в системе HR-Link, или во внешней системе.
        - Все документы должны существовать по заданным ID.
        - Все документы должны принадлежать заданному клиенту.
        - У пользователя должно быть право удаления документов на уровне ролей пользователя клиента или, если документ не связан ни с каким юрлицом, то он должен быть создателем документа, который при этом имеет право удаления документов на уровне сотрудника клиента или, если документ связан с юрлицом, то он должен быть сотрудником этого юрлица и иметь право на удаление документов на уровне ролей сотрудника заданного юрлица.
        - Указана корректная версия данных всех документов.
        - ID клиента соответствует формату UUID.
        - По заданному ID клиента существует клиент.
        - Пользователь, выполняющий операцию, относится к клиенту.
        - Проверяет, что список документов для удаления документов не пуст и ни один документ не является пустым.
        - Проверяет, что какой-нибудь ID документа задан.
        - Проверяет, что документ существует по заданным ID и возвращает документ, если он существует.
        - Проверяет, что документ относится к заданному клиенту.
        - У пользователя есть право удаления документов на уровне ролей пользователя клиента.
        - Если документ не связан ни с каким юрлицом, то удалять документ может создатель документа, который при этом имеет право удаления документов на уровне сотрудника клиента.
        - Если документ связан с юрлицом, то удалять документ может сотрудник этого юрлица, который имеет право на удаление документов на уровне ролей сотрудника клиента.
        - Проверяет, что указана корректная версия данных документа.
        - Проверяет, что текущий пользователь относится к заданному клиенту и возвращает пользователя клиента, если он существует.
        - Проверяет, что ID клиента, заданный в виде строки, соответствует формату, и возвращает типизированный ID клиента.
        - Проверяет существование клиента по заданному ID и возвращает клиента, если он существует.
        - Проверяет, что клиент не удален.
        - Проверяет существование документа по заданному ID во внешней системе и возвращает документ, если он существует.
        - Пользователь является наблюдателем документа.
      parameters:
        - $ref: '#/components/parameters/FormatParameter'
        - name: Impersonated-User-Id
          description: Идентификатор пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            format: uuid
        - name: Impersonated-User-Id-Type
          description: Тип идентификатора пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            enum:
              - HR_LINK_ID
              - SNILS
              - EXTERNAL_ID
        - name: Impersonated-User-Id-External-System-Type
          description: |
            Идентификатор внешней системы при аутентификации через мастер-токен.
          in: header
          schema:
            type: string
        - name: clientId
          in: path
          required: true
          description: Идентификатор клиента.
          schema:
            type: string
            format: uuid
      requestBody:
        description: Тело запроса DeleteDocumentsDTO
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DeleteDocumentsDTO'
      responses:
        '200':
          description: Успешная операция.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    type: boolean
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '429':
          $ref: '#/components/responses/TooManyRequests'
  /api/v2/clients/{clientId}/documents/sendToSigning:
    put:
      tags:
        - documentSigning
      summary: Отправить на подписание (частично)
      operationId: documentSendToSigning
      security:
        - SessionCookieAuth: []
        - UserApiTokenAuth: []
        - MasterTokenAuth: []
      description: |
        ### Описание метода

        > **⚠️ Будьте осторожны!**
        >
        > Методы PUT перезаписывают запись целиком: любые непереданные поля считаются null и затирают данные в БД.
        > Поэтому при обновлении нужно указывать все поля.

        ### Валидации запроса

        - Клиент существует, не удалён, и к нему относится пользователь, выполняющий операцию.
        - Тело запроса должно быть задано.
        - Список документов должен быть не пуст и не содержать null-элементов.
        - У каждого документа должен быть задан ID и версия.
        - Документы с заданными ID должны существовать.
        - Документы должны относиться к заданному клиенту.
        - Версия в теле совпадает с версией документа.
        - Состояние каждого документа должно быть корректным для отправки его на подписание.
        - Пользователь должен иметь право отправлять на подписание каждый из заданных документов.
        - Лимит на выполнение операций создания печатной формы файла для заданного тенанта не превышен с учетом активных каналов участников (подписантов и наблюдателей).
        - Лимит СМС в пакете лицензий не должен быть исчерпан.
        - ID клиента соответствует формату UUID.
        - По заданному ID клиента существует клиент.
        - Пользователь, выполняющий операцию, относится к клиенту.
        - Список не пуст.
        - В списке нет null-элементов.
        - ID каждого документа задан.
        - Проверяет, что документ существует по заданным ID и возвращает документ, если он существует.
        - Проверяет, что документ относится к заданному клиенту.
        - Проверяет, что указана корректная версия данных документа.
        - Проверяет, что документ находится в корректном состоянии для отправки на подписание.
        - Проверяет, что у пользователя клиента есть право для отправки документов на подписание для каждого из заданных документов.
        - Проверяет, что если операции в облаке включены, то лимит на выполнение операций создания печатной формы файла для заданного тенанта не превышен.
        - Проверяет, что текущий пользователь относится к заданному клиенту и возвращает пользователя клиента, если он существует.
        - Проверяет, что ID клиента, заданный в виде строки, соответствует формату, и возвращает типизированный ID клиента.
        - Проверяет существование клиента по заданному ID и возвращает клиента, если он существует.
        - Проверяет, что клиент не удален.
        - Проверяет существование документа по заданному ID во внешней системе и возвращает документ, если он существует.
        - Проверяет, что порядок подписания указан.
        - Проверяет, есть ли у пользователя клиента с заданным ID заданное право и возвращает кэш наличия прав у пользователя клиента.
        - Проверяет, что лимит на выполнение операций создания печатной формы файла для заданного тенанта не превышен.
      parameters:
        - $ref: '#/components/parameters/FormatParameter'
        - name: Impersonated-User-Id
          description: Идентификатор пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            format: uuid
        - name: Impersonated-User-Id-Type
          description: Тип идентификатора пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            enum:
              - HR_LINK_ID
              - SNILS
              - EXTERNAL_ID
        - name: Impersonated-User-Id-External-System-Type
          description: |
            Идентификатор внешней системы при аутентификации через мастер-токен.
          in: header
          schema:
            type: string
        - name: clientId
          in: path
          required: true
          description: Идентификатор клиента.
          schema:
            type: string
            format: uuid
        - name: withoutEmployeeInvitationValidation
          in: query
          description: Отключить проверку приглашения и подписи сотрудника?
          schema:
            type: boolean
            x-nullable: true
            default: false
      requestBody:
        description: Тело запроса SendToSigningDocumentsDTO
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SendToSigningDocumentsDTO'
      responses:
        '200':
          description: Успешная операция.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    type: boolean
                  sendToSigningResults:
                    type: array
                    description: Список данных документов после отправки на подписание.
                    items:
                      $ref: '#/components/schemas/DocumentAfterSentToSigningDTO'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '429':
          $ref: '#/components/responses/TooManyRequests'
  /api/v1/clients/{clientId}/documents/sendToSigning:
    put:
      tags:
        - documentSigning
      summary: Отправить на подписание (все)
      operationId: documentSendToSigningEntirely
      security:
        - SessionCookieAuth: []
        - UserApiTokenAuth: []
        - MasterTokenAuth: []
      description: |
        ### Описание метода

        > **⚠️ Будьте осторожны!**
        >
        > Методы PUT перезаписывают запись целиком: любые непереданные поля считаются null и затирают данные в БД.
        > Поэтому при обновлении нужно указывать все поля.

        ### Валидации запроса

        - Клиент существует, не удалён, и к нему относится пользователь, выполняющий операцию.
        - Тело запроса должно быть задано.
        - Список документов должен быть не пуст и не содержать null-элементов.
        - У каждого документа должен быть задан ID и версия.
        - Документы с заданными ID должны существовать.
        - Документы должны относиться к заданному клиенту.
        - Версия в теле совпадает с версией документа.
        - Состояние каждого документа должно быть корректным для отправки его на подписание.
        - Пользователь должен иметь право отправлять на подписание каждый из заданных документов.
        - Лимит на выполнение операций создания печатной формы файла для заданного тенанта не превышен с учетом активных каналов участников (подписантов и наблюдателей).
        - Лимит СМС в пакете лицензий не должен быть исчерпан.
        - ID клиента соответствует формату UUID.
        - По заданному ID клиента существует клиент.
        - Пользователь, выполняющий операцию, относится к клиенту.
        - Список не пуст.
        - В списке нет null-элементов.
        - ID каждого документа задан.
        - Проверяет, что документ существует по заданным ID и возвращает документ, если он существует.
        - Проверяет, что документ относится к заданному клиенту.
        - Проверяет, что указана корректная версия данных документа.
        - Проверяет, что документ находится в корректном состоянии для отправки на подписание.
        - Проверяет, что у пользователя клиента есть право для отправки документов на подписание для каждого из заданных документов.
        - Проверяет, что если операции в облаке включены, то лимит на выполнение операций создания печатной формы файла для заданного тенанта не превышен.
        - Проверяет, что текущий пользователь относится к заданному клиенту и возвращает пользователя клиента, если он существует.
        - Проверяет, что ID клиента, заданный в виде строки, соответствует формату, и возвращает типизированный ID клиента.
        - Проверяет существование клиента по заданному ID и возвращает клиента, если он существует.
        - Проверяет, что клиент не удален.
        - Проверяет существование документа по заданному ID во внешней системе и возвращает документ, если он существует.
        - Проверяет, что порядок подписания указан.
        - Проверяет, есть ли у пользователя клиента с заданным ID заданное право и возвращает кэш наличия прав у пользователя клиента.
        - Проверяет, что лимит на выполнение операций создания печатной формы файла для заданного тенанта не превышен.
      parameters:
        - $ref: '#/components/parameters/FormatParameter'
        - name: Impersonated-User-Id
          description: Идентификатор пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            format: uuid
        - name: Impersonated-User-Id-Type
          description: Тип идентификатора пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            enum:
              - HR_LINK_ID
              - SNILS
              - EXTERNAL_ID
        - name: Impersonated-User-Id-External-System-Type
          description: |
            Идентификатор внешней системы при аутентификации через мастер-токен.
          in: header
          schema:
            type: string
        - name: clientId
          in: path
          required: true
          description: Идентификатор клиента.
          schema:
            type: string
            format: uuid
      requestBody:
        description: Тело запроса SendToSigningDocumentsDTO
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SendToSigningDocumentsDTO'
      responses:
        '200':
          description: Успешная операция.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    type: boolean
                  documents:
                    type: array
                    description: Массив с данными документов после отправки на подписание.
                    items:
                      $ref: '#/components/schemas/EntirelySentToSigningDocumentDTO'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '429':
          $ref: '#/components/responses/TooManyRequests'
  /api/v1/clients/{clientId}/documents/sendAndSign:
    put:
      tags:
        - documentSigning
      summary: Массово подписать и отправить
      operationId: documentSendAndSign
      security:
        - SessionCookieAuth: []
        - UserApiTokenAuth: []
        - MasterTokenAuth: []
      description: |
        ### Описание метода

        > **⚠️ Будьте осторожны!**
        >
        > Методы PUT перезаписывают запись целиком: любые непереданные поля считаются null и затирают данные в БД.
        > Поэтому при обновлении нужно указывать все поля.
         Выполняет массовое подписание документов с одновременной отправкой на подписание, если это необходимо.

        ### Валидации запроса

        - Клиент существует, не удалён, и к нему относится пользователь, выполняющий операцию.
        - Тело запроса должно быть задано.
        - В теле запроса должен быть задан список данных для подписей, ни один из элементов не должен быть пустым.
        - Каждый документ существует.
        - Для каждого документа у пользователя есть право массового подписания.
        - Каждый документ относится к заданному клиенту.
        - Каждая подпись документа имеет корректный формат.
        - Для каждого документа указан облачный УКЭП.
        - Каждый документ не удалён.
        - Каждый документ-черновик должен иметь тип.
        - Каждый документ-черновик должен иметь номер.
        - Каждый документ-черновик должен иметь дату.
        - Каждый документ-черновик должен иметь порядок подписания.
        - Для каждого документа-черновика завершилась конвертация файла документа в PDF/A формат.
        - Для каждого документа-черновика набор подписантов документа указан корректно относительно порядка подписания.
        - Если текущий пользователь клиента является первыми подписантами документа после его отправки на подписание, то все первые подписанты документа после его отправки на подписание должны быть руководителями.
        - Если текущий пользователь клиента не является первыми подписантами документа после его отправки на подписание, то все первые подписанты документа после его отправки на подписание должны быть руководителями-подписантами и у пользователя клиента должно быть право подписывать за руководителя.
        - Для каждого документ не черновика есть подписант документ, который еще не принял решение о подписание и он является руководителем.
        - Для каждого документа не черновика, если пользователь клиента не является текущим подписантом, то у него должно быть право подписывать документы за руководителя.
        - У каждого документа не черновика должен быть подписант, который еще не принял решение о подписание.
        - Для каждого документа не черновика текущий пользователь являться одним из заданных подписантов или имеет право подписывать документ за руководителя.
        - Подписант всех документов не черновиков должен быть руководителем.
        - Для каждого документа не черновика текущий подписант не выполнил отказ от подписания документа.
        - Для каждого документа не черновика ни один подписант документа не выполнил отказ от подписания документа.
        - Для каждого документа не черновика текущий подписант еще не подписал документ.
        - Для каждого документа не черновика необходимо, чтобы все подписанты, стоящие перед текущим подписантом, подписали документ.
        - Существует активный пакет СМС и лимит СМС в пакете лицензий не должен быть исчерпан.
        - Лимит на выполнение операций создания печатной формы файла для заданного тенанта не будет превышен.
        - Файл подписи соответствует файлу для каждого документа.
        - ID клиента соответствует формату UUID.
        - По заданному ID клиента существует клиент.
        - Пользователь, выполняющий операцию, относится к клиенту.
        - Проверяет, что список данных подписей документов не пуст и не содержит null-элементов.
        - Проверяет, что все заданные документы существуют по заданным данным подписей документов, и возвращает список документов.
        - Проверяет, что документ относится к заданному клиенту.
        - Документ отправлен на подпись и текущий пользователь является его следующим подписантом.
        - Документ является черновиком, текущий пользователь является его первым подписантом и имеет право DOCUMENTS_MULTIPLE_SEND_AND_SIGN на уровне пользователя клиента или DOCUMENTS_MULTIPLE_SEND_AND_SIGN в юрлице документа.
        - Текущий пользователь не является следующим подписантом и проходит проверку прав на выполнение операций с документами.
        - Во всех данных для подписания, если ID МЧД задан, то по нему существует МЧД.
        - Подпись каждого документа имеет корректный формат Base64.
        - Бинарные данные внешнего УКЭП указаны для каждого документа.
        - Для каждого документа тип подписи задан корректно, исходя из настроек тенанта.
        - Проверяет для документов, что подписи УКЭП корректны для соответствующих файлов документов.
        - Если в настройке тенанта выключен флаг проверки подписи УКЭП и файла, тогда пропускаем данную валидацию.
        - Проверяет, что текущий пользователь относится к заданному клиенту и возвращает пользователя клиента, если он существует.
        - Проверяет, что ID клиента, заданный в виде строки, соответствует формату, и возвращает типизированный ID клиента.
        - Проверяет существование клиента по заданному ID и возвращает клиента, если он существует.
        - Проверяет, что клиент не удален.
        - Проверяет наличие у пользователя клиента права для массового подписания документов с одновременной отправкой на подпись в списке юрлиц.
        - Проверяет, что у пользователя клиента есть указанное право для каждого из заданных документов.
        - У остальных сотрудников проверяется право на уровне юрлица документа, на уровне типа документа и на уровне отдела сотрудника-подписанта.
        - Проверяет, есть ли у пользователя клиента с заданным ID заданное право и возвращает кэш наличия прав у пользователя клиента.
        - Проверяет, что по заданным ID в системе HR-Link или ID во внешней системе существует МЧД.
        - Проверяет, что подпись документа имеет корректный формат.
        - Проверяет, что облачный УНЭП указан для документа.
        - Проверяет, что аккредитация УЦ выпустившего сертификат не была отозвана.
        - Проверка выполняется только при включенной глобальной настройке блокировки подписания УКЭП выпущенных УЦ без аккредитации, при условии что на уровне тенанта выключена настройка игнорирования этого запрета.
        - Выполняет проверку типа подписи CAdES, исходя из настроек тенанта.
        - Если в настройках тенанта включено требование использовать тип подписи CAdES-X Long Type 1, то тип подписи должен соответствовать настройке.
        - Проверяет, что документ-черновик находится в корректном состоянии для отправки на подписание и одновременного подписания заданным пользователем клиента.
        - Проверяет, что подписи УКЭП и соответствующие файлы корректны.
        - Возвращаются только результаты проверки, которые завершились неуспешно.
        - Если все подписи УКЭП и файлы прошли проверку, тогда возвращается пустой список.
        - В случае успешной проверки всех подписей УКЭП и соответствующих файлов возвращается пустой список.
        - Проверяет, есть ли у пользователя клиента заданное право на уровне пользователя клиента по заданным данным аутентификации.
        - Проверяет, что подпись корректна и возвращает её данные.
      parameters:
        - $ref: '#/components/parameters/FormatParameter'
        - name: Impersonated-User-Id
          description: Идентификатор пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            format: uuid
        - name: Impersonated-User-Id-Type
          description: Тип идентификатора пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            enum:
              - HR_LINK_ID
              - SNILS
              - EXTERNAL_ID
        - name: Impersonated-User-Id-External-System-Type
          description: |
            Идентификатор внешней системы при аутентификации через мастер-токен.
          in: header
          schema:
            type: string
        - name: clientId
          in: path
          required: true
          description: Идентификатор клиента.
          schema:
            type: string
            format: uuid
        - name: withoutEmployeeInvitationValidation
          in: query
          description: Отключить проверку приглашения и подписи сотрудника?
          schema:
            type: boolean
            x-nullable: true
            default: false
      requestBody:
        description: Тело запроса DocumentSignaturesDTO
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DocumentSignaturesDTO'
      responses:
        '200':
          description: Успешная операция.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    type: boolean
                  sendAndSignResults:
                    type: array
                    description: Список данных документа после отправки документа на подписание.
                    items:
                      $ref: '#/components/schemas/DocumentAfterSentToSigningDTO'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '429':
          $ref: '#/components/responses/TooManyRequests'
  /api/v1/clients/{clientId}/documents/getSignersToNotify:
    post:
      tags:
        - documentSigning
      summary: Подписанты для повторного уведомления
      operationId: documentGetSignersToNotify
      security:
        - SessionCookieAuth: []
        - UserApiTokenAuth: []
        - MasterTokenAuth: []
      description: |
        ### Описание метода

        Метод возвращает для каждого запрошенного документа следующего подписанта по маршруту, для которого можно отправить уведомление

        ### Валидации запроса

        - Тело запроса задано.
        - Клиент существует, не удалён, и к нему относится пользователь, выполняющий операцию.
        - Документы существуют.
        - Версии документов заданы корректно.
        - Документы относятся к клиенту.
        - У пользователя есть право на отправку повторного уведомления по документу.
        - ID клиента соответствует формату UUID.
        - По заданному ID клиента существует клиент.
        - Пользователь, выполняющий операцию, относится к клиенту.
        - Проверяет, что документ относится к заданному клиенту.
        - Проверяет, что указана корректная версия данных документа.
        - У пользователя есть право отправки документов на подписание на уровне ролей пользователя клиента.
        - Уведомлять следующего подписанта может сотрудник, являющийся кадровиком в юрлице документа, имеющий доступ к отделу клиента сотрудника-подписанта и к типу документа.
        - Проверяет, что текущий пользователь относится к заданному клиенту и возвращает пользователя клиента, если он существует.
        - Проверяет, что ID клиента, заданный в виде строки, соответствует формату, и возвращает типизированный ID клиента.
        - Проверяет существование клиента по заданному ID и возвращает клиента, если он существует.
        - Проверяет, что клиент не удален.
        - Пользователь является наблюдателем документа.
      parameters:
        - $ref: '#/components/parameters/FormatParameter'
        - name: Impersonated-User-Id
          description: Идентификатор пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            format: uuid
        - name: Impersonated-User-Id-Type
          description: Тип идентификатора пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            enum:
              - HR_LINK_ID
              - SNILS
              - EXTERNAL_ID
        - name: Impersonated-User-Id-External-System-Type
          description: |
            Идентификатор внешней системы при аутентификации через мастер-токен.
          in: header
          schema:
            type: string
        - name: clientId
          in: path
          required: true
          description: Идентификатор клиента.
          schema:
            type: string
            format: uuid
      requestBody:
        description: Тело запроса GetSignersToNotifyRequestDto
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/GetSignersToNotifyRequestDto'
      responses:
        '200':
          description: Успешная операция.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    type: boolean
                  documentNotificationStatuses:
                    type: array
                    description: Поле, в котором возвращаются данные документа, статус возможности отправки и следующие подписанты.
                    items:
                      $ref: '#/components/schemas/DocumentNotificationStatusResponseDto'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '429':
          $ref: '#/components/responses/TooManyRequests'
  /api/v2/clients/{clientId}/documents/signers/next/notify:
    post:
      tags:
        - documentSigning
      summary: Повторно уведомить подписантов (v2)
      operationId: documentNotifyNextDocumentsSignersAgainV2
      security:
        - SessionCookieAuth: []
        - UserApiTokenAuth: []
        - MasterTokenAuth: []
      description: |
        ### Описание метода

        Повторно отправляет уведомления следующим подписантам для заданных документов.

        ### Валидации запроса

        - Клиент существует, не удалён, и к нему относится пользователь, выполняющий операцию.
        - Тело запроса должно быть задано.
        - Данные документов заданы корректно
        - зависит от версии API.
        - Документы с заданными ID должны существовать.
        - Документы должны относиться к заданному клиенту.
        - Документы должны быть не удалены.
        - Документы должны быть не черновиками.
        - Документы должны быть не аннулированы.
        - Текущий пользователь должен иметь право на отправку уведомления следующему подписанту для каждого из документов.
        - По всем документам не должно быть подписантов, которые отказались подписывать.
        - У каждого из документов должны быть следующие подписанты.
        - Существует активный пакет СМС и лимит СМС в пакете лицензий не должен быть исчерпан.
        - Активный этап маршрута подписания каждого из документов может быть завершён, даже если на этапе есть уволенные подписанты.
        - ID клиента соответствует формату UUID.
        - По заданному ID клиента существует клиент.
        - Пользователь, выполняющий операцию, относится к клиенту.
        - Проверяет, что документ относится к заданному клиенту.
        - У пользователя есть право отправки документов на подписание на уровне ролей пользователя клиента.
        - Уведомлять следующего подписанта может сотрудник, являющийся кадровиком в юрлице документа, имеющий доступ к отделу клиента сотрудника-подписанта и к типу документа.
        - Проверяет, что текущий пользователь относится к заданному клиенту и возвращает пользователя клиента, если он существует.
        - Проверяет, что ID клиента, заданный в виде строки, соответствует формату, и возвращает типизированный ID клиента.
        - Проверяет существование клиента по заданному ID и возвращает клиента, если он существует.
        - Проверяет, что клиент не удален.
        - Пользователь является наблюдателем документа.
      parameters:
        - $ref: '#/components/parameters/FormatParameter'
        - name: Impersonated-User-Id
          description: Идентификатор пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            format: uuid
        - name: Impersonated-User-Id-Type
          description: Тип идентификатора пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            enum:
              - HR_LINK_ID
              - SNILS
              - EXTERNAL_ID
        - name: Impersonated-User-Id-External-System-Type
          description: |
            Идентификатор внешней системы при аутентификации через мастер-токен.
          in: header
          schema:
            type: string
        - name: clientId
          in: path
          required: true
          description: Идентификатор клиента.
          schema:
            type: string
            format: uuid
      requestBody:
        description: Тело запроса NotifyNextDocumentsSignersV2RequestDto
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/NotifyNextDocumentsSignersV2RequestDto'
      responses:
        '200':
          description: Успешная операция.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    type: boolean
                  documentSignerNotifications:
                    type: array
                    description: Список документов со статусами возможности отправки уведомлений следующим подписантам.
                    items:
                      $ref: '#/components/schemas/NotifyNextSignersResponseDto'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '429':
          $ref: '#/components/responses/TooManyRequests'
  /api/v1/clients/{clientId}/documents/{documentId}/sign/ses:
    put:
      tags:
        - documentSigning
      summary: Подписать (ПЭП)
      operationId: documentSignBySes
      security:
        - SessionCookieAuth: []
        - UserApiTokenAuth: []
        - MasterTokenAuth: []
      description: |
        ### Описание метода

        > **⚠️ Будьте осторожны!**
        >
        > Методы PUT перезаписывают запись целиком: любые непереданные поля считаются null и затирают данные в БД.
        > Поэтому при обновлении нужно указывать все поля.
         Выполняет подписание документа с помощью ПЭП.

        ### Валидации запроса

        - Клиент существует, не удалён, и к нему относится пользователь, выполняющий операцию.
        - ID документа соответствует формату UUID.
        - Документ должен существовать по заданному ID.
        - Документ должен принадлежать заданному клиенту.
        - Документ не является «Согласием на установление КЭДО».
        - Документ находится в корректном состоянии для подписания заданным пользователем клиента.
        - ID клиента соответствует формату UUID.
        - По заданному ID клиента существует клиент.
        - Пользователь, выполняющий операцию, относится к клиенту.
        - Проверяет, что ID документа, заданный в виде строки, соответствует формату, и возвращает типизированный ID документа.
        - Проверяет, что документ существует по заданным ID и возвращает документ, если он существует.
        - Проверяет, что документ относится к заданному клиенту.
        - Проверяет, что документ не является «Согласием на установление КЭДО».
        - Проверяет, что текущий пользователь относится к заданному клиенту и возвращает пользователя клиента, если он существует.
        - Проверяет, что ID клиента, заданный в виде строки, соответствует формату, и возвращает типизированный ID клиента.
        - Проверяет существование клиента по заданному ID и возвращает клиента, если он существует.
        - Проверяет, что клиент не удален.
        - Проверяет существование документа по заданному ID во внешней системе и возвращает документ, если он существует.
      parameters:
        - $ref: '#/components/parameters/FormatParameter'
        - name: Impersonated-User-Id
          description: Идентификатор пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            format: uuid
        - name: Impersonated-User-Id-Type
          description: Тип идентификатора пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            enum:
              - HR_LINK_ID
              - SNILS
              - EXTERNAL_ID
        - name: Impersonated-User-Id-External-System-Type
          description: |
            Идентификатор внешней системы при аутентификации через мастер-токен.
          in: header
          schema:
            type: string
        - name: clientId
          in: path
          required: true
          description: Идентификатор клиента.
          schema:
            type: string
            format: uuid
        - name: documentId
          in: path
          required: true
          description: Идентификатор документа в системе HRlink.
          schema:
            type: string
            format: uuid
      responses:
        '200':
          description: Успешная операция.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    type: boolean
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '429':
          $ref: '#/components/responses/TooManyRequests'
  /api/v1/clients/{clientId}/documents/{documentId}/sign/nqes:
    post:
      tags:
        - documentSigning
      summary: Запросить код подписания (УНЭП)
      operationId: documentSignByNqes
      security:
        - SessionCookieAuth: []
        - UserApiTokenAuth: []
        - MasterTokenAuth: []
      description: |
        ### Описание метода

        Инициализирует процесс подписания документа в системе. В результате должно быть отправлено СМС с кодом на номер телефон, который был указан при выпуске сертификата пользователя.

        ### Валидации запроса

        - ID документа должен соответствовать формату UUID.
        - Тело запроса задано.
        - Клиент существует, не удалён, и к нему относится пользователь, выполняющий операцию.
        - Документ с заданным ID должен существовать.
        - Документ должен относиться к заданному клиенту.
        - Документ не является «Согласием на установление КЭДО».
        - Документ не является базовым.
        - Документ не является черновиком.
        - Документ не удален.
        - Подписанты документа находятся в корректном состоянии для подписания.
        - Сертификат типа УНЭП у пользователя по заданному ID сертификата должен существовать.
        - Сертификат пользователя не должен быть аннулирован.
        - Сертификат пользователя не истек.
        - Пользователь не имеет подтверждённой задачи на смену канала подписания УНЭП в нетерминальной стадии.
        - Активных подтверждений подписания документа не должно существовать.
        - Правила проверки для провайдера выполнены.
        - Проверяет, что ID документа, заданный в виде строки, соответствует формату, и возвращает типизированный ID документа.
        - ID клиента соответствует формату UUID.
        - По заданному ID клиента существует клиент.
        - Пользователь, выполняющий операцию, относится к клиенту.
        - Проверяет, что документ существует по заданным ID и возвращает документ, если он существует.
        - Проверяет, что документ относится к заданному клиенту.
        - Проверяет, что документ не является «Согласием на установление КЭДО».
        - Проверяет существование сертификата типа УНЭП у пользователя по заданному ID сертификата.
        - Проверяет, что сертификат пользователя не аннулирован.
        - Проверяет, что сертификат пользователя не истёк.
        - Проверяет, что не существует активных подтверждений подписания документа.
        - Проверяет, что текущий пользователь относится к заданному клиенту и возвращает пользователя клиента, если он существует.
        - Проверяет, что ID клиента, заданный в виде строки, соответствует формату, и возвращает типизированный ID клиента.
        - Проверяет существование клиента по заданному ID и возвращает клиента, если он существует.
        - Проверяет, что клиент не удален.
        - Проверяет существование документа по заданному ID во внешней системе и возвращает документ, если он существует.
        - Проверяет существование заданного сертификата для заданного пользователя и возвращает данные сертификата, если он существует.
      parameters:
        - $ref: '#/components/parameters/FormatParameter'
        - name: Impersonated-User-Id
          description: Идентификатор пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            format: uuid
        - name: Impersonated-User-Id-Type
          description: Тип идентификатора пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            enum:
              - HR_LINK_ID
              - SNILS
              - EXTERNAL_ID
        - name: Impersonated-User-Id-External-System-Type
          description: |
            Идентификатор внешней системы при аутентификации через мастер-токен.
          in: header
          schema:
            type: string
        - name: clientId
          in: path
          required: true
          description: Идентификатор клиента.
          schema:
            type: string
            format: uuid
        - name: documentId
          in: path
          required: true
          description: Идентификатор документа в системе HRlink.
          schema:
            type: string
            format: uuid
      requestBody:
        description: Тело запроса CertificateIdDTO
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CertificateIdDTO'
      responses:
        '200':
          description: Успешная операция.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    type: boolean
                  signingRequestId:
                    description: ID текущего запроса на подписание документа с помощью УНЭП.
                    type: string
                    format: uuid
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '429':
          $ref: '#/components/responses/TooManyRequests'
    put:
      tags:
        - documentSigning
      summary: Подтвердить подписание (УНЭП)
      operationId: documentConfirmNqesSigning
      security:
        - SessionCookieAuth: []
        - UserApiTokenAuth: []
        - MasterTokenAuth: []
      description: |
        ### Описание метода

        > **⚠️ Будьте осторожны!**
        >
        > Методы PUT перезаписывают запись целиком: любые непереданные поля считаются null и затирают данные в БД.
        > Поэтому при обновлении нужно указывать все поля.
         Подтверждение заключается в передаче кода, отправленного в СМС на номер телефона, который был указан при выпуске сертификата пользователя.
        Получение ответа на этот запрос не означает, что документ уже подписан. Документ станет подписанным через некоторое время после этого. Чтобы понять, что документ подписался, можно запрашивать нужный документ (см. получение данных документа) и в данных смотреть, подписался ли файл подписантом или весь целиком.

        ### Валидации запроса

        - ID документа должен соответствовать формату UUID.
        - Тело запроса задано.
        - Клиент существует, не удалён, и к нему относится пользователь, выполняющий операцию.
        - Документ с заданным ID должен существовать.
        - Документ должен относиться к заданному клиенту.
        - Документ не является «Согласием на установление КЭДО».
        - Документ не является базовым.
        - Документ не является черновиком.
        - Документ не удален.
        - Подписанты документа находятся в корректном состоянии для подписания.
        - Запрос на подписание документа текущим подписантом должен существовать.
        - Запрос на подписание документа текущим подписантом не истек.
        - Активных подтверждений подписания документа не должно существовать.
        - Проверяет, что ID документа, заданный в виде строки, соответствует формату, и возвращает типизированный ID документа.
        - ID клиента соответствует формату UUID.
        - По заданному ID клиента существует клиент.
        - Пользователь, выполняющий операцию, относится к клиенту.
        - Проверяет, что документ существует по заданным ID и возвращает документ, если он существует.
        - Проверяет, что документ относится к заданному клиенту.
        - Проверяет, что документ не является «Согласием на установление КЭДО».
        - Проверяет, что запрос на подписание существует и возвращает его в случае, когда он существует.
        - Проверяет, что запрос на подписание не истек.
        - Проверяет, что не существует активных подтверждений подписания документа.
        - Проверяет, что текущий пользователь относится к заданному клиенту и возвращает пользователя клиента, если он существует.
        - Проверяет, что ID клиента, заданный в виде строки, соответствует формату, и возвращает типизированный ID клиента.
        - Проверяет существование клиента по заданному ID и возвращает клиента, если он существует.
        - Проверяет, что клиент не удален.
        - Проверяет существование документа по заданному ID во внешней системе и возвращает документ, если он существует.
      parameters:
        - $ref: '#/components/parameters/FormatParameter'
        - name: Impersonated-User-Id
          description: Идентификатор пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            format: uuid
        - name: Impersonated-User-Id-Type
          description: Тип идентификатора пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            enum:
              - HR_LINK_ID
              - SNILS
              - EXTERNAL_ID
        - name: Impersonated-User-Id-External-System-Type
          description: |
            Идентификатор внешней системы при аутентификации через мастер-токен.
          in: header
          schema:
            type: string
        - name: clientId
          in: path
          required: true
          description: Идентификатор клиента.
          schema:
            type: string
            format: uuid
        - name: documentId
          in: path
          required: true
          description: Идентификатор документа в системе HRlink.
          schema:
            type: string
            format: uuid
      requestBody:
        description: Тело запроса CodeDTO
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CodeDTO'
      responses:
        '200':
          description: Успешная операция.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    type: boolean
                  documentConfirmedSigning:
                    $ref: '#/components/schemas/DocumentConfirmedSigningDTO'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '429':
          $ref: '#/components/responses/TooManyRequests'
  /api/v2/clients/{clientId}/documents/{documentId}/signByQes:
    put:
      tags:
        - documentSigning
      summary: Подписать (УКЭП) (v2)
      operationId: documentQesSigningSignByQes
      security:
        - SessionCookieAuth: []
        - UserApiTokenAuth: []
        - MasterTokenAuth: []
      description: |
        ### Описание метода

        > **⚠️ Будьте осторожны!**
        >
        > Методы PUT перезаписывают запись целиком: любые непереданные поля считаются null и затирают данные в БД.
        > Поэтому при обновлении нужно указывать все поля.
         Выполняет подписание документа с помощью УКЭП.

        ### Валидации запроса

        - Тело запроса задано.
        - Клиент существует, не удалён, и к нему относится пользователь, выполняющий операцию.
        - Документ задан корректно.
        - Документ не является «Согласием на установление КЭДО».
        - Документ находится в корректном состоянии для подписания заданным пользователем.
        - Подпись корректна для подписания.
        - Состояние подписанта и МЧД корректны для подписания УКЭП'ом.
        - Файл подписи соответствует файлу для каждого документа.
        - Тип подписи корректен, исходя из настроек тенанта.
        - ID документа задан корректно.
        - Документ должен существовать по заданному ID.
        - Документ должен принадлежать заданному клиенту.
        - Проверяет, что если задана МЧД, она корректна.
        - ID клиента соответствует формату UUID.
        - По заданному ID клиента существует клиент.
        - Пользователь, выполняющий операцию, относится к клиенту.
        - Проверяет, что указана корректная версия данных документа.
        - Проверяет, что подпись задана и имеет формат Base64, и возвращает данные этой подписи в виде массива байт.
        - Проверяет, что аккредитация УЦ выпустившего сертификат не была отозвана.
        - Проверка выполняется только при включенной глобальной настройке блокировки подписания УКЭП выпущенных УЦ без аккредитации, при условии что на уровне тенанта выключена настройка игнорирования этого запрета.
        - Выполняет проверку типа подписи CAdES, исходя из настроек тенанта.
        - Если в настройках тенанта включено требование использовать тип подписи CAdES-X Long Type 1, то тип подписи должен соответствовать настройке.
        - Проверяет, что если ID МЧД задан, то МЧД существует в клиенте, и возвращает её.
        - Проверяет, что текущий пользователь относится к заданному клиенту и возвращает пользователя клиента, если он существует.
        - Проверяет, что ID клиента, заданный в виде строки, соответствует формату, и возвращает типизированный ID клиента.
        - Проверяет существование клиента по заданному ID и возвращает клиента, если он существует.
        - Проверяет, что клиент не удален.
        - Проверяет, что подпись задана.
        - Проверяет, что подпись задана в корректном формате.
        - Проверяет, что подпись корректна и возвращает её данные.
        - Проверяет существование МЧД по заданному ID и возвращает МЧД, если она существует.
        - Проверяет, что МЧД принадлежит клиенту с заданным ID.
        - Проверяет, что МЧД принадлежит клиенту с заданным ID.
      parameters:
        - $ref: '#/components/parameters/FormatParameter'
        - name: Impersonated-User-Id
          description: Идентификатор пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            format: uuid
        - name: Impersonated-User-Id-Type
          description: Тип идентификатора пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            enum:
              - HR_LINK_ID
              - SNILS
              - EXTERNAL_ID
        - name: Impersonated-User-Id-External-System-Type
          description: |
            Идентификатор внешней системы при аутентификации через мастер-токен.
          in: header
          schema:
            type: string
        - name: clientId
          in: path
          required: true
          description: Идентификатор клиента.
          schema:
            type: string
            format: uuid
        - name: documentId
          in: path
          required: true
          description: Идентификатор документа в системе HRlink.
          schema:
            type: string
            format: uuid
      requestBody:
        description: Тело запроса DocumentSignByQesDTO
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DocumentSignByQesDTO'
      responses:
        '200':
          description: Успешная операция.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    type: boolean
                  document:
                    $ref: '#/components/schemas/DocumentDTO'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '429':
          $ref: '#/components/responses/TooManyRequests'
  /api/v2/clients/{clientId}/documentsByExternalId/{documentId}/signByQes:
    put:
      tags:
        - documentSigning
      summary: Подписать (УКЭП) по внешнему ID (v2)
      operationId: documentQesSigningSignByQesWithExternalId
      security:
        - SessionCookieAuth: []
        - UserApiTokenAuth: []
        - MasterTokenAuth: []
      description: |
        ### Описание метода

        > **⚠️ Будьте осторожны!**
        >
        > Методы PUT перезаписывают запись целиком: любые непереданные поля считаются null и затирают данные в БД.
        > Поэтому при обновлении нужно указывать все поля.
         Выполняет подписание документа с внешним идентификатором с помощью УКЭП.

        ### Валидации запроса

        - Тело запроса задано.
        - Клиент существует, не удалён, и к нему относится пользователь, выполняющий операцию.
        - Документ задан корректно.
        - Документ не является «Согласием на установление КЭДО».
        - Документ находится в корректном состоянии для подписания заданным пользователем.
        - Подпись корректна для подписания.
        - Состояние подписанта и МЧД корректны для подписания УКЭП'ом.
        - Файл подписи соответствует файлу для каждого документа.
        - Тип подписи корректен, исходя из настроек тенанта.
        - ID документа задан корректно.
        - Документ должен существовать по заданному ID.
        - Документ должен принадлежать заданному клиенту.
        - Проверяет, что если задана МЧД, она корректна.
        - ID клиента соответствует формату UUID.
        - По заданному ID клиента существует клиент.
        - Пользователь, выполняющий операцию, относится к клиенту.
        - Проверяет, что указана корректная версия данных документа.
        - Проверяет, что подпись задана и имеет формат Base64, и возвращает данные этой подписи в виде массива байт.
        - Проверяет, что аккредитация УЦ выпустившего сертификат не была отозвана.
        - Проверка выполняется только при включенной глобальной настройке блокировки подписания УКЭП выпущенных УЦ без аккредитации, при условии что на уровне тенанта выключена настройка игнорирования этого запрета.
        - Выполняет проверку типа подписи CAdES, исходя из настроек тенанта.
        - Если в настройках тенанта включено требование использовать тип подписи CAdES-X Long Type 1, то тип подписи должен соответствовать настройке.
        - Проверяет, что если ID МЧД задан, то МЧД существует в клиенте, и возвращает её.
        - Проверяет, что текущий пользователь относится к заданному клиенту и возвращает пользователя клиента, если он существует.
        - Проверяет, что ID клиента, заданный в виде строки, соответствует формату, и возвращает типизированный ID клиента.
        - Проверяет существование клиента по заданному ID и возвращает клиента, если он существует.
        - Проверяет, что клиент не удален.
        - Проверяет, что подпись задана.
        - Проверяет, что подпись задана в корректном формате.
        - Проверяет, что подпись корректна и возвращает её данные.
        - Проверяет существование МЧД по заданному ID и возвращает МЧД, если она существует.
        - Проверяет, что МЧД принадлежит клиенту с заданным ID.
        - Проверяет, что МЧД принадлежит клиенту с заданным ID.
      parameters:
        - $ref: '#/components/parameters/FormatParameter'
        - name: Impersonated-User-Id
          description: Идентификатор пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            format: uuid
        - name: Impersonated-User-Id-Type
          description: Тип идентификатора пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            enum:
              - HR_LINK_ID
              - SNILS
              - EXTERNAL_ID
        - name: Impersonated-User-Id-External-System-Type
          description: |
            Идентификатор внешней системы при аутентификации через мастер-токен.
          in: header
          schema:
            type: string
        - name: clientId
          in: path
          required: true
          description: Идентификатор клиента.
          schema:
            type: string
            format: uuid
        - name: documentId
          in: path
          required: true
          description: Идентификатор документа во внешней системе.
          schema:
            type: string
      requestBody:
        description: Тело запроса DocumentSignByQesDTO
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DocumentSignByQesDTO'
      responses:
        '200':
          description: Успешная операция.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    type: boolean
                  document:
                    $ref: '#/components/schemas/DocumentDTO'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '429':
          $ref: '#/components/responses/TooManyRequests'
  /api/v2/clients/{clientId}/documents/{documentId}/sign/prr:
    post:
      tags:
        - documentSigning
      summary: Подписать через ПРР async (v2)
      operationId: documentSignByPrrAsync
      security:
        - SessionCookieAuth: []
        - UserApiTokenAuth: []
        - MasterTokenAuth: []
      description: |
        ### Описание метода

        Выполняет асинхронное подписание документа с помощью портала «Работа в России».

        ### Валидации запроса

        - Клиент существует, не удалён, и к нему относится пользователь, выполняющий операцию.
        - ID документа соответствует формату UUID.
        - Документ должен существовать по заданному ID.
        - Документ должен принадлежать заданному клиенту.
        - УКЭП руководителя, которым была осуществленная подпись документа, не должен быть истёкшим.
        - Документ должен быть в корректном состоянии для подписания текущим подписантом клиента через ПРР.
        - Проверяет, что документ находится в корректном состоянии для подписания заданным пользователем клиента, и возвращает подписанта, соответствующего заданному пользователю клиента.
        - ID клиента соответствует формату UUID.
        - По заданному ID клиента существует клиент.
        - Пользователь, выполняющий операцию, относится к клиенту.
        - Проверяет, что ID документа, заданный в виде строки, соответствует формату, и возвращает типизированный ID документа.
        - Проверяет, что документ существует по заданным ID и возвращает документ, если он существует.
        - Проверяет, что документ относится к заданному клиенту.
        - Проверяет, что срок действия УКЭП руководителя, подписавшего документ, не истек.
        - Проверяет, что существует настройка юрлица клиента на портале «Работа России» по заданному ID юрлица.
        - Проверяет, что текущий пользователь относится к заданному клиенту и возвращает пользователя клиента, если он существует.
        - Проверяет, что ID клиента, заданный в виде строки, соответствует формату, и возвращает типизированный ID клиента.
        - Проверяет существование клиента по заданному ID и возвращает клиента, если он существует.
        - Проверяет, что клиент не удален.
        - Проверяет существование документа по заданному ID во внешней системе и возвращает документ, если он существует.
        - Проверяет, что среди подписантов документа есть руководитель-подписант.
      parameters:
        - $ref: '#/components/parameters/FormatParameter'
        - name: Impersonated-User-Id
          description: Идентификатор пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            format: uuid
        - name: Impersonated-User-Id-Type
          description: Тип идентификатора пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            enum:
              - HR_LINK_ID
              - SNILS
              - EXTERNAL_ID
        - name: Impersonated-User-Id-External-System-Type
          description: |
            Идентификатор внешней системы при аутентификации через мастер-токен.
          in: header
          schema:
            type: string
        - name: clientId
          in: path
          required: true
          description: Идентификатор клиента.
          schema:
            type: string
            format: uuid
        - name: documentId
          in: path
          required: true
          description: Идентификатор документа в системе HRlink.
          schema:
            type: string
            format: uuid
      responses:
        '200':
          description: Успешная операция.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    type: boolean
                  signingRequestId:
                    description: ID запроса на подписание документа с помощью портала Работа в России.
                    type: string
                    format: uuid
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '429':
          $ref: '#/components/responses/TooManyRequests'
  /api/v1/clients/{clientId}/documents/{documentId}/sign/govKey:
    post:
      tags:
        - documentSigning
      summary: Подписать через Госключ
      operationId: documentSignThroughGovKey
      security:
        - SessionCookieAuth: []
        - UserApiTokenAuth: []
        - MasterTokenAuth: []
      description: |
        ### Описание метода

        Запрашивает подписание документа через Госключ.

        ### Валидации запроса

        - Клиент существует, не удалён, и к нему относится пользователь, выполняющий операцию.
        - ID документа соответствует формату UUID.
        - Документ существует по заданному ID.
        - Документ принадлежит заданному клиенту.
        - Документ не является «Согласием на установление КЭДО».
        - Документ не является базовым.
        - Документ не является черновиком.
        - Документ не удалён.
        - Пользователь является корректным текущим подписантом документа.
        - ID клиента соответствует формату UUID.
        - По заданному ID клиента существует клиент.
        - Пользователь, выполняющий операцию, относится к клиенту.
        - Проверяет, что ID документа, заданный в виде строки, соответствует формату, и возвращает типизированный ID документа.
        - Проверяет, что документ существует по заданным ID и возвращает документ, если он существует.
        - Проверяет, что документ относится к заданному клиенту.
        - Проверяет, что документ не является «Согласием на установление КЭДО».
        - Проверяет, что текущий пользователь относится к заданному клиенту и возвращает пользователя клиента, если он существует.
        - Проверяет, что ID клиента, заданный в виде строки, соответствует формату, и возвращает типизированный ID клиента.
        - Проверяет существование клиента по заданному ID и возвращает клиента, если он существует.
        - Проверяет, что клиент не удален.
        - Проверяет существование документа по заданному ID во внешней системе и возвращает документ, если он существует.
      parameters:
        - $ref: '#/components/parameters/FormatParameter'
        - name: Impersonated-User-Id
          description: Идентификатор пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            format: uuid
        - name: Impersonated-User-Id-Type
          description: Тип идентификатора пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            enum:
              - HR_LINK_ID
              - SNILS
              - EXTERNAL_ID
        - name: Impersonated-User-Id-External-System-Type
          description: |
            Идентификатор внешней системы при аутентификации через мастер-токен.
          in: header
          schema:
            type: string
        - name: clientId
          in: path
          required: true
          description: Идентификатор клиента.
          schema:
            type: string
            format: uuid
        - name: documentId
          in: path
          required: true
          description: Идентификатор документа в системе HRlink.
          schema:
            type: string
            format: uuid
      responses:
        '200':
          description: Успешная операция.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    type: boolean
                  signingRequestId:
                    description: ID созданного запроса на подписание документа через Госключ.
                    type: string
                    format: uuid
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '429':
          $ref: '#/components/responses/TooManyRequests'
  /api/v1/clients/{clientId}/documents/{documentId}/rejectSigning:
    put:
      tags:
        - documentSigning
      summary: Отклонить подписание
      operationId: documentRejectSigning
      security:
        - SessionCookieAuth: []
        - UserApiTokenAuth: []
        - MasterTokenAuth: []
      description: |
        ### Описание метода

        > **⚠️ Будьте осторожны!**
        >
        > Методы PUT перезаписывают запись целиком: любые непереданные поля считаются null и затирают данные в БД.
        > Поэтому при обновлении нужно указывать все поля.

        ### Валидации запроса

        - ID документа соответствует UUID формату.
        - Тело запроса задано.
        - Комментарий отказа от подписания задан.
        - Клиент существует, не удалён, и к нему относится пользователь, выполняющий операцию.
        - Документ существует.
        - Документ относится к заданному клиенту.
        - Документ не является базовым.
        - Документ отправлен на подписание.
        - Документ не удален.
        - Документ не аннулирован.
        - Текущий пользователь является сотрудником, который входит в подписанты документа, и ещё не выполнял подписание или отказ в подписании заданного документа.
        - Порядок подписания не нарушен.
        - Для документа или конкретного подписанта не отключена возможность отклонения.
        - Если пользователь клиента является руководителем в списке подписантов, то в момент подписания он также должен им быть.
        - Проверяет, что ID документа, заданный в виде строки, соответствует формату, и возвращает типизированный ID документа.
        - Проверяет, что комментарий отказа не пустой и не состоит только из пробелов.
        - ID клиента соответствует формату UUID.
        - По заданному ID клиента существует клиент.
        - Пользователь, выполняющий операцию, относится к клиенту.
        - Проверяет, что документ существует по заданным ID и возвращает документ, если он существует.
        - Проверяет, что документ относится к заданному клиенту.
        - Проверяет, что документ не является базовым.
        - Проверяет, что документ не является черновиком.
        - Проверяет, что документ не удален.
        - Проверяет, что документ не является аннулированным.
        - Проверяет, что порядок подписания документа не нарушен.
        - Необходимо, чтобы все этапы маршрута подписания, находящиеся перед этапом с участием подписанта, были завершены и этап, на котором находится текущий подписант, еще не завершен.
        - Проверяет, что для документа не отключена возможность отклонения.
        - Проверяет, есть ли у пользователя клиента с заданным ID запущенный процесс настройки ПРР, который уже невозможно отменить, созданный за заданный период активности настройки.
        - Проверяет, что не существует активного запроса на подписание через Госключ для заданного подписанта.
        - Проверяет, что не существует активного подписания документа.
        - Проверяет, что заданный сотрудник является руководителем.
        - Проверяет, что текущий пользователь относится к заданному клиенту и возвращает пользователя клиента, если он существует.
        - Проверяет, что ID клиента, заданный в виде строки, соответствует формату, и возвращает типизированный ID клиента.
        - Проверяет существование клиента по заданному ID и возвращает клиента, если он существует.
        - Проверяет, что клиент не удален.
        - Проверяет существование документа по заданному ID во внешней системе и возвращает документ, если он существует.
      parameters:
        - $ref: '#/components/parameters/FormatParameter'
        - name: Impersonated-User-Id
          description: Идентификатор пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            format: uuid
        - name: Impersonated-User-Id-Type
          description: Тип идентификатора пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            enum:
              - HR_LINK_ID
              - SNILS
              - EXTERNAL_ID
        - name: Impersonated-User-Id-External-System-Type
          description: |
            Идентификатор внешней системы при аутентификации через мастер-токен.
          in: header
          schema:
            type: string
        - name: clientId
          in: path
          required: true
          description: Идентификатор клиента.
          schema:
            type: string
            format: uuid
        - name: documentId
          in: path
          required: true
          description: Идентификатор документа в системе HRlink.
          schema:
            type: string
            format: uuid
      requestBody:
        description: Тело запроса CommentDTO
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CommentDTO'
      responses:
        '200':
          description: Успешная операция.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    type: boolean
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '429':
          $ref: '#/components/responses/TooManyRequests'
  /api/v1/clients/{clientId}/documents/{documentId}/sign/interrupt:
    post:
      tags:
        - documentSigning
      summary: Отменить подписание
      operationId: documentInterruptSigning
      security:
        - SessionCookieAuth: []
        - UserApiTokenAuth: []
        - MasterTokenAuth: []
      description: |
        ### Описание метода

        Прерывает запущенный процесс подписания по документу. Работает только для подписания запущенного с помощью Портала
        Работы в России и Госключ.

        ### Валидации запроса

        - ID документа соответствует UUID формату.
        - Корректно указан ID клиента и пользователь существует в заданном клиенте.
        - Документ существует по заданному ID.
        - Документ относится к заданному клиенту.
        - Документ не является черновиком.
        - Документ не является аннулированным.
        - Документ не является базовым.
        - Документ не является удаленным.
        - Пользователь является одним из подписантов документа и еще не принял решение.
        - Порядок подписания документа не нарушен, то есть все этапы до того, на котором находится текущий пользователь, завершены.
        - Существует корректное активное подписание документа заданным подписантом.
        - Заданный сотрудник является руководителем, если подписывает за руководителя.
      parameters:
        - $ref: '#/components/parameters/FormatParameter'
        - name: Impersonated-User-Id
          description: Идентификатор пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            format: uuid
        - name: Impersonated-User-Id-Type
          description: Тип идентификатора пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            enum:
              - HR_LINK_ID
              - SNILS
              - EXTERNAL_ID
        - name: Impersonated-User-Id-External-System-Type
          description: |
            Идентификатор внешней системы при аутентификации через мастер-токен.
          in: header
          schema:
            type: string
        - name: clientId
          in: path
          required: true
          description: Идентификатор клиента.
          schema:
            type: string
            format: uuid
        - name: documentId
          in: path
          required: true
          description: Идентификатор документа в системе HRlink.
          schema:
            type: string
            format: uuid
      responses:
        '200':
          description: Успешная операция.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    type: boolean
                  document:
                    $ref: '#/components/schemas/DocumentDTO'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '429':
          $ref: '#/components/responses/TooManyRequests'
  /api/v1/clients/{clientId}/documentsByExternalId/{documentExternalId}/interrupt:
    post:
      tags:
        - documentSigning
      summary: Отменить подписание по внешнему ID
      operationId: documentInterruptSigningByExternalId
      security:
        - SessionCookieAuth: []
        - UserApiTokenAuth: []
        - MasterTokenAuth: []
      description: |
        ### Описание метода

        Прерывает запущенный процесс подписания по документу. Работает только для подписания запущенного с помощью Портала
        Работы в России и Госключ.

        ### Валидации запроса

        - Корректно указан ID клиента и пользователь существует в заданном клиенте.
        - Документ существует по заданному ID во внешней системе в заданном клиенте.
        - Документ относится к заданному клиенту.
        - Документ не является черновиком.
        - Документ не является аннулированным.
        - Документ не является базовым.
        - Документ не является удаленным.
        - Пользователь является одним из подписантов документа и еще не принял решение.
        - Порядок подписания документа не нарушен, то есть все этапы до того, на котором находится текущий пользователь, завершены.
        - Существует корректное активное подписание документа заданным подписантом.
        - Заданный сотрудник является руководителем, если подписывает за руководителя.
      parameters:
        - $ref: '#/components/parameters/FormatParameter'
        - name: Impersonated-User-Id
          description: Идентификатор пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            format: uuid
        - name: Impersonated-User-Id-Type
          description: Тип идентификатора пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            enum:
              - HR_LINK_ID
              - SNILS
              - EXTERNAL_ID
        - name: Impersonated-User-Id-External-System-Type
          description: |
            Идентификатор внешней системы при аутентификации через мастер-токен.
          in: header
          schema:
            type: string
        - name: clientId
          in: path
          required: true
          description: Идентификатор клиента.
          schema:
            type: string
            format: uuid
        - name: documentExternalId
          in: path
          required: true
          description: Идентификатор документа во внешней системе.
          schema:
            type: string
      responses:
        '200':
          description: Успешная операция.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    type: boolean
                  document:
                    $ref: '#/components/schemas/DocumentDTO'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '429':
          $ref: '#/components/responses/TooManyRequests'
  /api/v1/clients/{clientId}/documents/bulkSignings:
    post:
      tags:
        - documentBulkSigning
      summary: Создать процесс массового подписания
      operationId: documentBulkSigningCreateProcess
      security:
        - SessionCookieAuth: []
        - UserApiTokenAuth: []
        - MasterTokenAuth: []
      description: |
        ### Описание метода

        Создаёт процесс массового подписания документов по фильтру реестра сотрудника. **ВАЖНО**. Пакет массового подписания не может содержать более 50 документов. При необходимости подписания более 50 документов необходимо запускать процессы массового подписания последовательно.

        ### Валидации запроса

        - Клиент существует.
        - Для пользователя существует пользователь клиента.
        - Массовое подписание документов разрешено.
        - Валидации запроса получения количества документов, ожидающих моего подписания, выполняются успешно.
        - ID клиента соответствует формату UUID.
        - По заданному ID клиента существует клиент.
        - Пользователь, выполняющий операцию, относится к клиенту.
        - Проверяет, что массовое подписание документов разрешено.
        - ID клиента является UUID.
        - Все правила валидации данных фильтра реестра документов сотрудника выполнены.
        - Проверяет, что текущий пользователь относится к заданному клиенту и возвращает пользователя клиента, если он существует.
        - Проверяет, что ID клиента, заданный в виде строки, соответствует формату, и возвращает типизированный ID клиента.
        - Проверяет существование клиента по заданному ID и возвращает клиента, если он существует.
        - Проверяет, что клиент не удален.
        - Клиент с заданным ID существует.
        - Для текущего пользователя существует пользователь клиента в клиенте из запроса.
        - Все проверки данных фильтра реестра документов сотрудника выполнены.
        - В запросе не указаны пересекающиеся режимы работы (на данный момент проверка фиктивная).
        - Указанные типы документов существуют.
        - Фильтры по сотрудникам (headManagerIds, employeeIds и employeeSignerEmployeeIds) не содержат null значений, все сотрудники существуют и относятся к заданному клиенту.
        - Список юрлиц не содержит null, все юрлица существуют и относятся к заданному клиенту.
        - Список пользователей клиента для фильтра по участникам и получателям не содержит null, все пользователи клиента существуют и относятся к заданному клиенту.
        - Пользователь является руководителем, если запрашивает документы руководителя.
        - Все запрошенные фильтры доступны.
        - Документы по id и по внешним id существуют.
        - Проверяет, что в запросе не указаны конфликтующие режимы работы («документы сотрудника», «документы руководителя», «все документы»).
        - На данный момент не производит реальной проверки, так как фронт иногда присылает конфликтующие комбинации флагов.
        - Проверяет, что диапазон дат документооборота задан корректно.
        - Проверяет, что диапазон дат документа задан корректно.
        - Проверяет, что диапазон дат создания документа задан корректно.
        - Проверяет, что диапазон сроков подписания документов задан корректно.
        - Среди ID сотрудников нет пустых элементов.
        - По заданным ID существуют сотрудники.
        - Все сотрудники относятся к одному клиенту.
        - Руководители с заданными ID должны существовать.
        - Руководители должны относится к заданному клиенту.
        - Юрлица с заданными ID должны существовать.
        - Юрлица должны относится к заданному клиенту.
        - Проверяет, что у текущего пользователя есть доступ к документам руководителя, если они были запрошены.
        - Проверяет, что все заданные фильтры реестра документов сотрудника доступны для работы с текущей версией кэша документов.
        - Проверяет, что типы документов существуют по заданным ID и возвращает список типов документов, если они существуют.
        - Среди ID пользователей клиента нет пустых элементов.
        - По заданным ID существуют пользователи клиента.
        - Все пользователи клиента относятся к клиенту с указанным ID.
        - Проверяет существование документов по заданным ID и возвращает документы, если они существуют.
        - Проверяет существование документов по заданным ID во внешней системе и возвращает документы, если они существуют.
        - Проверяет, что среди списка ID сотрудников нет пустых значений.
        - Проверяет, что сотрудники существуют по всем заданным ID, и возвращает список сотрудников.
        - Проверяет, что все сотрудники принадлежат клиенту с заданным ID.
        - Проверяет, что все заданные фильтры доступны для работы с текущей версией кэша документов.
        - Проверяет, что все UUID, заданные в списке, соответствуют существующим типам документов и возвращает список типов документов.
        - Проверяет, что все ID типов документов во внешней системе, заданные в списке, соответствуют существующим типам документов и возвращает список типов документов.
        - Проверяет, что пользователи клиента существуют по всем заданным ID, и возвращает список пользователей клиента.
        - Проверяет, что заданные пользователи клиента принадлежит клиенту с заданным ID.
        - Проверяет, что заданный сотрудник относится к заданному клиенту.
        - Проверяет, что заданный пользователь клиента принадлежит клиенту с заданным ID.
      parameters:
        - $ref: '#/components/parameters/FormatParameter'
        - name: Impersonated-User-Id
          description: Идентификатор пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            format: uuid
        - name: Impersonated-User-Id-Type
          description: Тип идентификатора пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            enum:
              - HR_LINK_ID
              - SNILS
              - EXTERNAL_ID
        - name: Impersonated-User-Id-External-System-Type
          description: |
            Идентификатор внешней системы при аутентификации через мастер-токен.
          in: header
          schema:
            type: string
        - name: clientId
          in: path
          required: true
          description: Идентификатор клиента.
          schema:
            type: string
            format: uuid
      requestBody:
        description: Тело запроса DocumentsEmployeeRegistryRequestDto
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DocumentsEmployeeRegistryRequestDto'
      responses:
        '200':
          description: Успешная операция.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    type: boolean
                  process:
                    $ref: '#/components/schemas/DocumentBulkSigningProcessResponseDto'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '429':
          $ref: '#/components/responses/TooManyRequests'
  /api/v1/clients/{clientId}/documents/bulkSignings/{processId}:
    get:
      tags:
        - documentBulkSigning
      summary: Получить процесс массового подписания
      operationId: documentBulkSigningGetProcess
      security:
        - SessionCookieAuth: []
        - UserApiTokenAuth: []
        - MasterTokenAuth: []
      description: |
        ### Описание метода

        Возвращает данные процесса массового подписания документов.

        ### Валидации запроса

        - ID клиента задан корректно.
        - Массовое подписание документов разрешено.
        - ID процесса массового подписания документов соответствует формату UUID.
        - Процесс существует по заданному ID.
        - ID процесса относится к текущему пользователю клиента.
        - ID клиента соответствует формату UUID.
        - По заданному ID клиента существует клиент.
        - Пользователь, выполняющий операцию, относится к клиенту.
        - Проверяет, что массовое подписание документов разрешено.
        - Проверяет, что ID процесса массового подписания документов соответствует формату UUID и возвращает типизированный ID процесса массового подписания документов.
        - Проверяет, что процесс массового подписания документов существует по указанному ID и возвращает его.
        - Проверяет, что пользователь клиента относится к процессу массового подписания документов.
        - Проверяет, что текущий пользователь относится к заданному клиенту и возвращает пользователя клиента, если он существует.
        - Проверяет, что ID клиента, заданный в виде строки, соответствует формату, и возвращает типизированный ID клиента.
        - Проверяет существование клиента по заданному ID и возвращает клиента, если он существует.
        - Проверяет, что клиент не удален.
      parameters:
        - $ref: '#/components/parameters/FormatParameter'
        - name: Impersonated-User-Id
          description: Идентификатор пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            format: uuid
        - name: Impersonated-User-Id-Type
          description: Тип идентификатора пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            enum:
              - HR_LINK_ID
              - SNILS
              - EXTERNAL_ID
        - name: Impersonated-User-Id-External-System-Type
          description: |
            Идентификатор внешней системы при аутентификации через мастер-токен.
          in: header
          schema:
            type: string
        - name: clientId
          in: path
          required: true
          description: Идентификатор клиента.
          schema:
            type: string
            format: uuid
        - name: processId
          in: path
          required: true
          description: Идентификатор процесса массового подписания документов.
          schema:
            type: string
            format: uuid
      responses:
        '200':
          description: Успешная операция.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    type: boolean
                  process:
                    $ref: '#/components/schemas/DocumentBulkSigningProcessResponseDto'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '429':
          $ref: '#/components/responses/TooManyRequests'
  /api/v1/clients/{clientId}/documents/bulkSignings/{processId}/inclusion/{packageDocumentSignerId}:
    put:
      tags:
        - documentBulkSigning
      summary: Включить/исключить документ из пакета
      operationId: documentBulkSigningIncludeOrExcludeDocument
      security:
        - SessionCookieAuth: []
        - UserApiTokenAuth: []
        - MasterTokenAuth: []
      description: |
        ### Описание метода

        Включает или исключает документ из пакета массового подписания.

        ### Валидации запроса

        - Тело запроса задано.
        - ID клиента задано корректно.
        - Массовое подписание документов разрешено.
        - ID процесса массового подписания документов соответствует формату UUID.
        - Процесс существует по заданному ID.
        - ID процесса относится к текущему пользователю клиента.
        - ID связки подписанта документа с пакетом в процессе массового подписания соответствует формату UUID.
        - Связка подписанта документа с пакетом в процессе массового подписания существует по заданному ID.
        - Связка подписанта документа с пакетом в процессе массового подписания соответствует заданному процессу.
        - Пакет не должен быть подписанным.
        - Если пакет документов в процессе массового подписания является ЛНА пакетом, то тогда из него нельзя исключать документы.
        - У подписанта документа задана доступная подпись для массового подписания.
        - ID клиента соответствует формату UUID.
        - По заданному ID клиента существует клиент.
        - Пользователь, выполняющий операцию, относится к клиенту.
        - Проверяет, что массовое подписание документов разрешено.
        - Проверяет, что ID процесса массового подписания документов соответствует формату UUID и возвращает типизированный ID процесса массового подписания документов.
        - Проверяет, что процесс массового подписания документов существует по указанному ID и возвращает его.
        - Проверяет, что пользователь клиента относится к процессу массового подписания документов.
        - Проверяет, что ID связки подписанта документа с пакетом в процессе массового подписания соответствует формату UUID и возвращает типизированный ID.
        - Проверяет, что связка подписанта документа с пакетом в процессе массового подписания существует по указанному ID, и возвращает его.
        - Проверяет, что ID связки подписанта документа с пакетом в процессе массового подписания соответствует заданному процессу массового подписания и возвращает пакет документов в процессе массового подписания.
        - Проверяет, что пакет документов в процессе массового подписания не подписан.
        - Проверяет, что если пакет документов в процессе массового подписания является ЛНА пакетом, то тогда из него нельзя исключать документы.
        - Проверяет, что у подписанта документа задана доступная подпись для массового подписания.
        - Проверяет, что текущий пользователь относится к заданному клиенту и возвращает пользователя клиента, если он существует.
        - Проверяет, что ID клиента, заданный в виде строки, соответствует формату, и возвращает типизированный ID клиента.
        - Проверяет существование клиента по заданному ID и возвращает клиента, если он существует.
        - Проверяет, что клиент не удален.
      parameters:
        - $ref: '#/components/parameters/FormatParameter'
        - name: Impersonated-User-Id
          description: Идентификатор пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            format: uuid
        - name: Impersonated-User-Id-Type
          description: Тип идентификатора пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            enum:
              - HR_LINK_ID
              - SNILS
              - EXTERNAL_ID
        - name: Impersonated-User-Id-External-System-Type
          description: |
            Идентификатор внешней системы при аутентификации через мастер-токен.
          in: header
          schema:
            type: string
        - name: clientId
          in: path
          required: true
          description: Идентификатор клиента.
          schema:
            type: string
            format: uuid
        - name: processId
          in: path
          required: true
          description: Идентификатор процесса массового подписания документов.
          schema:
            type: string
            format: uuid
        - name: packageDocumentSignerId
          in: path
          required: true
          description: Идентификатор связки подписанта документа с пакетом массового подписания.
          schema:
            type: string
            format: uuid
      requestBody:
        description: Тело запроса InclusionDocumentRequestDTO
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/InclusionDocumentRequestDTO'
      responses:
        '200':
          description: Успешная операция.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    type: boolean
                  process:
                    $ref: '#/components/schemas/DocumentBulkSigningProcessResponseDto'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '429':
          $ref: '#/components/responses/TooManyRequests'
  /api/v1/clients/{clientId}/documents/bulkSignings/packages/{packageId}/sign/ses:
    put:
      tags:
        - documentBulkSigning
      summary: Массово подписать (ПЭП)
      operationId: documentBulkSigningSignBySes
      security:
        - SessionCookieAuth: []
        - UserApiTokenAuth: []
        - MasterTokenAuth: []
      description: |
        ### Описание метода

        Массово подписывает пакет документов ПЭП.

        ### Валидации запроса

        - Успешно выполняются базовые валидации запроса на массовое подписание пакета документов.
        - Пакет документов не подписан.
        - Пакет можно подписывать ПЭП.
        - Клиент существует, не удалён, и к нему относится пользователь, выполняющий операцию.
        - Массовое подписание документов разрешено в настройках тенанта.
        - ID пакета документов в массовом подписании соответствует формату UUID.
        - Пакет документов существует по заданному ID.
        - Процесс массового подписания документов существует для указанного пакета.
        - Процесс массового подписания, с которым связан пакет, относится к текущему пользователю клиента.
        - Если текущий пакет не является ЛНА, то пакет с ЛНА уже подписан либо пуст.
        - У пакета документов нет запроса подписания в подтверждённом статусе.
        - ID клиента соответствует формату UUID.
        - По заданному ID клиента существует клиент.
        - Пользователь, выполняющий операцию, относится к клиенту.
        - Проверяет, что массовое подписание документов разрешено.
        - Проверяет, что ID пакета документов в массовом подписании соответствует формату UUID и возвращает типизированный ID пакета документов.
        - Проверяет, что пакет документов в процессе массового подписания существует по указанному ID.
        - Проверяет, что если текущий пакет не является ЛНА, то пакет с ЛНА в рамках процесса уже подписан либо пуст.
        - Проверяет, что текущий пользователь относится к заданному клиенту и возвращает пользователя клиента, если он существует.
        - Проверяет, что ID клиента, заданный в виде строки, соответствует формату, и возвращает типизированный ID клиента.
        - Проверяет существование клиента по заданному ID и возвращает клиента, если он существует.
        - Проверяет, что клиент не удален.
      parameters:
        - $ref: '#/components/parameters/FormatParameter'
        - name: Impersonated-User-Id
          description: Идентификатор пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            format: uuid
        - name: Impersonated-User-Id-Type
          description: Тип идентификатора пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            enum:
              - HR_LINK_ID
              - SNILS
              - EXTERNAL_ID
        - name: Impersonated-User-Id-External-System-Type
          description: |
            Идентификатор внешней системы при аутентификации через мастер-токен.
          in: header
          schema:
            type: string
        - name: clientId
          in: path
          required: true
          description: Идентификатор клиента.
          schema:
            type: string
            format: uuid
        - name: packageId
          in: path
          required: true
          description: Идентификатор пакета массового подписания.
          schema:
            type: string
            format: uuid
      responses:
        '200':
          description: Успешная операция.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    type: boolean
                  process:
                    $ref: '#/components/schemas/DocumentBulkSigningProcessResponseDto'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '429':
          $ref: '#/components/responses/TooManyRequests'
  /api/v1/clients/{clientId}/documents/bulkSignings/packages/{packageId}/sign/nqes:
    post:
      tags:
        - documentBulkSigning
      summary: Запросить массовое подписание (УНЭП)
      operationId: documentBulkSigningCreateNqesSigningRequest
      security:
        - SessionCookieAuth: []
        - UserApiTokenAuth: []
        - MasterTokenAuth: []
      description: |
        ### Описание метода

        Создаёт запрос массового подписания пакета документов УНЭП.

        ### Валидации запроса

        - Клиент существует, не удалён, и к нему относится пользователь, выполняющий операцию.
        - Массовое подписание документов разрешено.
        - ID пакета документов в массовом подписании соответствует формату UUID.
        - Пакет документов существует по заданному ID.
        - Процесс массового подписания, с которым связан пакет, относится к текущему пользователю клиента.
        - Пакет документов не подписан.
        - Пакет можно подписывать УНЭПом.
        - Если текущий пакет не является ЛНА, то пакет с ЛНА уже подписан либо пуст.
        - У пакета документов нет запроса подписания в подтверждённом статусе.
        - У пользователя есть действующий УНЭП.
        - У пользователя нет подтверждённой, но не завершившейся задачи смены канала УНЭП.
        - ID клиента соответствует формату UUID.
        - По заданному ID клиента существует клиент.
        - Пользователь, выполняющий операцию, относится к клиенту.
        - Проверяет, что массовое подписание документов разрешено.
        - Проверяет, что ID пакета документов в массовом подписании соответствует формату UUID и возвращает типизированный ID пакета документов.
        - Проверяет, что пакет документов в процессе массового подписания существует по указанному ID.
        - Проверяет, что пакет документов в процессе массового подписания не подписан.
        - Проверяет, что пакет можно подписывать заданной подписью.
        - Проверяет, что если текущий пакет не является ЛНА, то пакет с ЛНА в рамках процесса уже подписан либо пуст.
        - Проверяет, что среди запросов подписания пакета документов нет запроса в подтверждённом статусе.
        - Проверяет, что у пользователя есть хотя бы один активный УНЭП.
        - Проверяет, что не существует подтверждённой задачи на смену канала подписания в нетерминальной стадии.
        - Проверяет, что текущий пользователь относится к заданному клиенту и возвращает пользователя клиента, если он существует.
        - Проверяет, что ID клиента, заданный в виде строки, соответствует формату, и возвращает типизированный ID клиента.
        - Проверяет существование клиента по заданному ID и возвращает клиента, если он существует.
        - Проверяет, что клиент не удален.
      parameters:
        - $ref: '#/components/parameters/FormatParameter'
        - name: Impersonated-User-Id
          description: Идентификатор пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            format: uuid
        - name: Impersonated-User-Id-Type
          description: Тип идентификатора пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            enum:
              - HR_LINK_ID
              - SNILS
              - EXTERNAL_ID
        - name: Impersonated-User-Id-External-System-Type
          description: |
            Идентификатор внешней системы при аутентификации через мастер-токен.
          in: header
          schema:
            type: string
        - name: clientId
          in: path
          required: true
          description: Идентификатор клиента.
          schema:
            type: string
            format: uuid
        - name: packageId
          in: path
          required: true
          description: Идентификатор пакета массового подписания.
          schema:
            type: string
            format: uuid
      responses:
        '200':
          description: Успешная операция.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    type: boolean
                  documentBulkSigningRequest:
                    $ref: '#/components/schemas/DocumentBulkSigningCreateRequestResponseDto'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '429':
          $ref: '#/components/responses/TooManyRequests'
    put:
      tags:
        - documentBulkSigning
      summary: Подтвердить массовое подписание (УНЭП)
      operationId: documentBulkSigningConfirmNqesSigning
      security:
        - SessionCookieAuth: []
        - UserApiTokenAuth: []
        - MasterTokenAuth: []
      description: |
        ### Описание метода

        Подтверждает ранее созданный запрос массового подписания пакета документов УНЭП.

        ### Валидации запроса

        - Клиент существует, не удалён, и к нему относится пользователь, выполняющий операцию.
        - Массовое подписание документов разрешено.
        - Тело запроса задано.
        - Поля тела запроса удовлетворяют базовым валидациям.
        - ID пакета документов в массовом подписании соответствует формату UUID.
        - Пакет документов существует по заданному ID.
        - Процесс массового подписания, с которым связан пакет, относится к текущему пользователю клиента.
        - Пакет документов не подписан.
        - Запрос подписания пакета документов существует по ID из тела запроса.
        - Запрос принадлежит пакету.
        - Запрос подписания пакета документов находится в состоянии «создан и отправлен».
        - Запрос подписания пакета документов не протух.
        - ID клиента соответствует формату UUID.
        - По заданному ID клиента существует клиент.
        - Пользователь, выполняющий операцию, относится к клиенту.
        - Проверяет, что массовое подписание документов разрешено.
        - Проверяет, что ID пакета документов в массовом подписании соответствует формату UUID и возвращает типизированный ID пакета документов.
        - Проверяет, что пакет документов в процессе массового подписания существует по указанному ID.
        - Проверяет, что пакет документов в процессе массового подписания не подписан.
        - Проверяет, что запрос массового подписания пакета документов существует по ID и возвращает его.
        - Проверяет, что запрос массового подписания пакета документов относится к указанному пакету.
        - Проверяет, что запрос массового подписания пакета документов находится в состоянии `IN_PROGRESS` (создан и отправлен).
        - Проверяет, что запрос массового подписания пакета документов не протух.
        - Проверяет, что текущий пользователь относится к заданному клиенту и возвращает пользователя клиента, если он существует.
        - Проверяет, что ID клиента, заданный в виде строки, соответствует формату, и возвращает типизированный ID клиента.
        - Проверяет существование клиента по заданному ID и возвращает клиента, если он существует.
        - Проверяет, что клиент не удален.
      parameters:
        - $ref: '#/components/parameters/FormatParameter'
        - name: Impersonated-User-Id
          description: Идентификатор пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            format: uuid
        - name: Impersonated-User-Id-Type
          description: Тип идентификатора пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            enum:
              - HR_LINK_ID
              - SNILS
              - EXTERNAL_ID
        - name: Impersonated-User-Id-External-System-Type
          description: |
            Идентификатор внешней системы при аутентификации через мастер-токен.
          in: header
          schema:
            type: string
        - name: clientId
          in: path
          required: true
          description: Идентификатор клиента.
          schema:
            type: string
            format: uuid
        - name: packageId
          in: path
          required: true
          description: Идентификатор пакета массового подписания.
          schema:
            type: string
            format: uuid
      requestBody:
        description: Тело запроса DocumentBulkSigningConfirmRequestRequestDto
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DocumentBulkSigningConfirmRequestRequestDto'
      responses:
        '200':
          description: Успешная операция.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    type: boolean
                  documentBulkSigningConfirmation:
                    $ref: '#/components/schemas/DocumentBulkSigningConfirmRequestResponseDto'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '429':
          $ref: '#/components/responses/TooManyRequests'
  /api/v1/clients/{clientId}/documents/bulkSignings/packages/{packageId}/sign/qes:
    put:
      tags:
        - documentBulkSigning
      summary: Массово подписать (УКЭП)
      operationId: documentBulkSigningSignByQes
      security:
        - SessionCookieAuth: []
        - UserApiTokenAuth: []
        - MasterTokenAuth: []
      description: |
        ### Описание метода

        Массово подписывает пакет документов УКЭП.

        ### Валидации запроса

        - Тело запроса должно быть задано.
        - Успешно выполняются базовые валидации массового подписания пакета документов.
        - Пакет документов не подписан или подписан частично.
        - Пакет можно подписывать УКЭП.
        - Данные документов, которые необходимо подписать в массовом подписании. подписания с помощью УКЭП, заданы корректно.
        - Клиент существует, не удалён, и к нему относится пользователь, выполняющий операцию.
        - Массовое подписание документов разрешено в настройках тенанта.
        - ID пакета документов в массовом подписании соответствует формату UUID.
        - Пакет документов существует по заданному ID.
        - Процесс массового подписания документов существует для указанного пакета.
        - Процесс массового подписания, с которым связан пакет, относится к текущему пользователю клиента.
        - Если текущий пакет не является ЛНА, то пакет с ЛНА уже подписан либо пуст.
        - У пакета документов нет запроса подписания в подтверждённом статусе.
        - Среди данных подписей нет дубликатов документов.
        - Количество подписей не больше количества включенных документов в пакете массового подписания.
        - Данные файла подписи заданы корректно.
        - Данные для каждого документа из пакета массового подписания и МЧД заданы корректно.
        - Подписи УКЭП корректны для соответствующих файлов документов.
        - ID клиента соответствует формату UUID.
        - По заданному ID клиента существует клиент.
        - Пользователь, выполняющий операцию, относится к клиенту.
        - Проверяет, что массовое подписание документов разрешено.
        - Проверяет, что ID пакета документов в массовом подписании соответствует формату UUID и возвращает типизированный ID пакета документов.
        - Проверяет, что пакет документов в процессе массового подписания существует по указанному ID.
        - Проверяет, что если текущий пакет не является ЛНА, то пакет с ЛНА в рамках процесса уже подписан либо пуст.
        - Подпись задана и имеет формат Base64.
        - Аккредитация УЦ, выпустившего сертификат, не была отозвана.
        - Тип подписи соответствует типу CAdES-X Long Type 1, когда это требуется настройками тенанта.
        - ID документа принадлежит заданному пакету массового подписания.
        - Данные МЧД заданы корректно.
        - Проверяет, что среди данных подписей нет дубликатов документов.
        - Проверяет для документов, что подписи УКЭП корректны для соответствующих файлов документов.
        - Если в настройке тенанта выключен флаг проверки подписи УКЭП и файла, тогда пропускаем данную валидацию.
        - Проверяет, что текущий пользователь относится к заданному клиенту и возвращает пользователя клиента, если он существует.
        - Проверяет, что ID клиента, заданный в виде строки, соответствует формату, и возвращает типизированный ID клиента.
        - Проверяет существование клиента по заданному ID и возвращает клиента, если он существует.
        - Проверяет, что клиент не удален.
        - Проверяет, что подпись задана и имеет формат Base64, и возвращает данные этой подписи в виде массива байт.
        - Проверяет, что аккредитация УЦ выпустившего сертификат не была отозвана.
        - Проверка выполняется только при включенной глобальной настройке блокировки подписания УКЭП выпущенных УЦ без аккредитации, при условии что на уровне тенанта выключена настройка игнорирования этого запрета.
        - Выполняет проверку типа подписи CAdES, исходя из настроек тенанта.
        - Если в настройках тенанта включено требование использовать тип подписи CAdES-X Long Type 1, то тип подписи должен соответствовать настройке.
        - МЧД существует по заданному ID или внешнему ID и принадлежит заданному клиенту.
        - Проверяет, что подписи УКЭП и соответствующие файлы корректны.
        - Возвращаются только результаты проверки, которые завершились неуспешно.
        - Если все подписи УКЭП и файлы прошли проверку, тогда возвращается пустой список.
        - В случае успешной проверки всех подписей УКЭП и соответствующих файлов возвращается пустой список.
        - Проверяет, что подпись задана.
        - Проверяет, что подпись задана в корректном формате.
        - Проверяет, что подпись корректна и возвращает её данные.
        - Проверяет, что если ID МЧД задан, то МЧД существует в клиенте, и возвращает её.
        - Если текущий подписант является руководителем, то состояние данных корректно для подписания УКЭП'ом.
        - Если текущий подписант не является руководителем, то МЧД не задана в данных для подписания.
        - Проверяет существование МЧД по заданному ID и возвращает МЧД, если она существует.
        - Проверяет, что МЧД принадлежит клиенту с заданным ID.
        - МЧД не задана.
        - Данные юрлица совпадают с данными юрлица из сертификата (проверка включается настройкой тенанта).
        - Данные ИП пользователя совпадают с данными ИП из сертификата.
        - МЧД задана.
        - МЧД принадлежит клиенту.
        - МЧД принадлежит юрлицу документа.
        - Состояние МЧД корректно для подписания.
        - Данные документов лица, участвующего в МЧД, совпадают с данными из сертификата.
        - Проверяет, что МЧД не задана.
        - Проверяет, что МЧД принадлежит клиенту с заданным ID.
        - Проверяет, что МЧД не задана для использования с сертификатом УКЭП юрлица.
        - Проверяет, что данные юрлица совпадают с данными юрлица из сертификата.
        - Возвращает результат валидации, что данные юрлица совпадают с данными юрлица из сертификата.
        - Пользователь клиента является представителем МЧД.
        - Данные персональных документов МЧД совпадают с данными персональных документов заданного пользователя клиента.
        - МЧД находится в корректном состоянии для её использования.
        - Проверяет, что данные документов лица, участвующего в МЧД, совпадают с данными из сертификата.
        - Проверяет, что подпись и её сертификат корректны, и возвращает сертификат.
        - Проверяет, что МЧД задана.
        - Проверяет, что ID юрлица МЧД совпадает с ID заданного юрлица.
        - ОГРН ИП из сертификата совпадает с ОГРН ИП юрлица.
        - ИНН физлица из сертификата совпадает с ИНН юрлица (ИП).
        - Проверяет, что заданный пользователь клиента является представителем МЧД.
        - Проверяет, что данные персональных документов представителя МЧД совпадают с данными персональных документов заданного пользователя клиента.
        - МЧД не удалена.
        - МЧД подписана.
        - МЧД не просрочена.
        - МЧД уже начала действовать.
        - СНИЛС из сертификата совпадает со СНИЛС лица, участвующего в МЧД.
        - ИНН из сертификата совпадает с ИНН лица, участвующего в МЧД.
        - Проверяет, что данные сертификата корректны и возвращает данные сертификата, которые были получены в результате парсинга.
        - ИНН компании из сертификата совпадает с ИНН юрлица, к которому относится документ.
        - ОГРН компании из сертификата совпадает с ОГРН юрлица, к которому относится документ, либо ИНН компании соответствует иностранному юрлицу.
        - Возвращает результат валидации, что заданный пользователь клиента является представителем МЧД.
        - Проверяет, что данные персональных документов доверителя МЧД совпадают с данными персональных документов заданного пользователя клиента.
        - Проверяет, что МЧД не удалена.
        - Проверяет, что МЧД подписана.
        - Проверяет, что МЧД начала действовать.
        - Возвращает результат валидации, что данные сертификата корректны.
        - Проверяет, что сертификат УКЭП является либо сертификатом УКЭП доверителя юрлица, либо ИП либо сертификатом УКЭП физлица.
      parameters:
        - $ref: '#/components/parameters/FormatParameter'
        - name: Impersonated-User-Id
          description: Идентификатор пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            format: uuid
        - name: Impersonated-User-Id-Type
          description: Тип идентификатора пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            enum:
              - HR_LINK_ID
              - SNILS
              - EXTERNAL_ID
        - name: Impersonated-User-Id-External-System-Type
          description: |
            Идентификатор внешней системы при аутентификации через мастер-токен.
          in: header
          schema:
            type: string
        - name: clientId
          in: path
          required: true
          description: Идентификатор клиента.
          schema:
            type: string
            format: uuid
        - name: packageId
          in: path
          required: true
          description: Идентификатор пакета массового подписания.
          schema:
            type: string
            format: uuid
      requestBody:
        description: Тело запроса DocumentBulkSignByQesRequestDto
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DocumentBulkSignByQesRequestDto'
      responses:
        '200':
          description: Успешная операция.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    type: boolean
                  process:
                    $ref: '#/components/schemas/DocumentBulkSigningProcessResponseDto'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '429':
          $ref: '#/components/responses/TooManyRequests'
  /api/v1/clients/{clientId}/documents/bulkSignings/packages/{packageId}/signingRequests/{signingRequestId}:
    get:
      tags:
        - documentBulkSigning
      summary: Получить запрос массового подписания
      operationId: documentBulkSigningGetDocumentBulkSigningRequest
      security:
        - SessionCookieAuth: []
        - UserApiTokenAuth: []
        - MasterTokenAuth: []
      description: |
        ### Описание метода

        Возвращает краткие данные запроса массового подписания пакета документов.

        ### Валидации запроса

        - Клиент существует, не удалён, и к нему относится пользователь, выполняющий операцию.
        - Массовое подписание документов разрешено.
        - ID пакета документов в массовом подписании соответствует формату UUID.
        - Пакет документов существует по заданному ID.
        - Процесс существует для заданного пакета документов.
        - Пользователь клиента относится к процессу массового подписания документов, с которым связан заданный пакет документов.
        - ID запроса массового подписания документов соответствует формату UUID.
        - Запрос массового подписания пакета документов существует по заданному ID.
        - Запрос массового подписания пакета документов относится к указанному пакету.
        - ID клиента соответствует формату UUID.
        - По заданному ID клиента существует клиент.
        - Пользователь, выполняющий операцию, относится к клиенту.
        - Проверяет, что массовое подписание документов разрешено.
        - Проверяет, что ID пакета документов в массовом подписании соответствует формату UUID и возвращает типизированный ID пакета документов.
        - Проверяет, что пакет документов в процессе массового подписания существует по указанному ID.
        - Проверяет, что пользователь клиента относится к процессу массового подписания документов.
        - Проверяет, что ID запроса массового подписания документов соответствует формату UUID и возвращает типизированный ID запроса массового подписания документов.
        - Проверяет, что запрос массового подписания пакета документов существует по ID и возвращает его.
        - Проверяет, что запрос массового подписания пакета документов относится к указанному пакету.
        - Проверяет, что текущий пользователь относится к заданному клиенту и возвращает пользователя клиента, если он существует.
        - Проверяет, что ID клиента, заданный в виде строки, соответствует формату, и возвращает типизированный ID клиента.
        - Проверяет существование клиента по заданному ID и возвращает клиента, если он существует.
        - Проверяет, что клиент не удален.
      parameters:
        - $ref: '#/components/parameters/FormatParameter'
        - name: Impersonated-User-Id
          description: Идентификатор пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            format: uuid
        - name: Impersonated-User-Id-Type
          description: Тип идентификатора пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            enum:
              - HR_LINK_ID
              - SNILS
              - EXTERNAL_ID
        - name: Impersonated-User-Id-External-System-Type
          description: |
            Идентификатор внешней системы при аутентификации через мастер-токен.
          in: header
          schema:
            type: string
        - name: clientId
          in: path
          required: true
          description: Идентификатор клиента.
          schema:
            type: string
            format: uuid
        - name: packageId
          in: path
          required: true
          description: Идентификатор пакета массового подписания.
          schema:
            type: string
            format: uuid
        - name: signingRequestId
          in: path
          required: true
          description: Идентификатор запроса подписания в системе HRlink.
          schema:
            type: string
            format: uuid
      responses:
        '200':
          description: Успешная операция.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    type: boolean
                  documentBulkSigningRequest:
                    $ref: '#/components/schemas/DocumentBulkSigningRequestResponseDto'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '429':
          $ref: '#/components/responses/TooManyRequests'
  /api/v1/clients/{clientId}/documents/{documentId}/annul:
    post:
      tags:
        - documentAnnulation
      summary: Аннулировать документ
      operationId: documentAnnulDocument
      security:
        - SessionCookieAuth: []
        - UserApiTokenAuth: []
        - MasterTokenAuth: []
      description: |
        ### Описание метода

        Метод создает новый документ
        - акт об аннулировании в статусе «Черновик», который связан с аннулируемым документом. Таким образом, запуская процесс аннулирования документа.

        ### Валидации запроса

        - Тело запроса задано.
        - Причина аннулирования документа задана корректно.
        - Клиент существует, не удалён, и к нему относится пользователь, выполняющий операцию.
        - ID документа указан корректно.
        - Документ не является черновиком.
        - Документ не является аннулированным.
        - У пользователя клиента есть право на аннулирование документов.
        - У пользователя клиента есть общий доступ к документу.
        - Подписанты документа находятся в корректном состоянии для запуска процесса аннулирования.
        - Руководитель задан корректно.
        - Документ не создан на основании ЛНА.
        - Документ не связан с актом об аннулировании.
        - Проверяет, что ID документа указан корректно и возвращает документ, если он существует.
        - Причина аннулирования документа не является пустой строкой и не состоит только из пробельных символов.
        - Максимально допустимая длина причины аннулирования документа не превышена.
        - ID клиента соответствует формату UUID.
        - По заданному ID клиента существует клиент.
        - Пользователь, выполняющий операцию, относится к клиенту.
        - Проверяет, что документ не является черновиком.
        - Проверяет, что документ не является аннулированным.
        - У пользователя есть право аннулирования документов на уровне ролей пользователя клиента.
        - Если документ не связан ни с каким юрлицом, то аннулировать документ может создатель документа, который при этом имеет право аннулирования документов на уровне сотрудника клиента.
        - Если документ связан с юрлицом, то аннулировать документ может сотрудник этого юрлица, который имеет право на аннулирование документов на уровне ролей сотрудника клиента.
        - Среди подписантов документа есть руководитель-подписант.
        - Среди подписантов документа есть сотрудник-подписант.
        - Документ подписан обоими подписантами.
        - Сотрудник подписант не уволен.
        - Руководитель из аннулируемого документа активен.
        - Для юрлица, к которому относится аннулируемый документ, существует хотя бы один активный руководитель.
        - Проверяет, что документ не создан на основании ЛНА.
        - Для документа нет связи с актом об аннулировании.
        - Для документа отсутствует черновик акта об аннулировании.
        - Черновик акта об аннулировании находится в статусе удален.
        - Для документа нет актов об аннулировании, в которых в качестве сотрудника-подписанта выступает сотрудник-подписант документа.
        - Тип документа, выступающего в качестве акта об аннулировании, не является «Акт об аннулировании».
        - Акт об аннулировании находится в статусе «Удален».
        - Акт об аннулировании находится в статусе «Отклонен».
        - Проверяет, что текущий пользователь относится к заданному клиенту и возвращает пользователя клиента, если он существует.
        - Проверяет, что ID клиента, заданный в виде строки, соответствует формату, и возвращает типизированный ID клиента.
        - Проверяет существование клиента по заданному ID и возвращает клиента, если он существует.
        - Проверяет, что клиент не удален.
        - Пользователь является наблюдателем документа.
        - Проверяет, что среди подписантов документа есть руководитель-подписант.
        - Проверяет, что среди подписантов документа есть сотрудник-подписант.
        - Проверяет, что документ подписан заданным подписантом.
        - Проверяет, что данный сотрудник работает.
      parameters:
        - $ref: '#/components/parameters/FormatParameter'
        - name: Impersonated-User-Id
          description: Идентификатор пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            format: uuid
        - name: Impersonated-User-Id-Type
          description: Тип идентификатора пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            enum:
              - HR_LINK_ID
              - SNILS
              - EXTERNAL_ID
        - name: Impersonated-User-Id-External-System-Type
          description: |
            Идентификатор внешней системы при аутентификации через мастер-токен.
          in: header
          schema:
            type: string
        - name: clientId
          in: path
          required: true
          description: Идентификатор клиента.
          schema:
            type: string
            format: uuid
        - name: documentId
          in: path
          required: true
          description: Идентификатор документа в системе HRlink.
          schema:
            type: string
            format: uuid
      requestBody:
        description: Тело запроса AnnulDocumentRequestDTO
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AnnulDocumentRequestDTO'
      responses:
        '200':
          description: Успешная операция.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    type: boolean
                  annulationDocument:
                    $ref: '#/components/schemas/AnnulDocumentResponseDTO'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '429':
          $ref: '#/components/responses/TooManyRequests'
  /api/v1/clients/{clientId}/documentsByExternalId/{documentExternalId}/annul:
    post:
      tags:
        - documentAnnulation
      summary: Аннулировать по внешнему ID
      operationId: documentAnnulDocumentByExternalId
      security:
        - SessionCookieAuth: []
        - UserApiTokenAuth: []
        - MasterTokenAuth: []
      description: |
        ### Описание метода

        Метод создает новый документ
        - акт об аннулировании в статусе «Черновик», который связан с аннулируемым документом. Таким образом, запуская процесс аннулирования документа.

        ### Валидации запроса

        - Тело запроса задано.
        - Причина аннулирования документа задана корректно.
        - Клиент существует, не удалён, и к нему относится пользователь, выполняющий операцию.
        - ID документа указан корректно.
        - Документ не является черновиком.
        - Документ не является аннулированным.
        - У пользователя клиента есть право на аннулирование документов.
        - У пользователя клиента есть общий доступ к документу.
        - Подписанты документа находятся в корректном состоянии для запуска процесса аннулирования.
        - Руководитель задан корректно.
        - Документ не создан на основании ЛНА.
        - Документ не связан с актом об аннулировании.
        - Проверяет, что ID документа указан корректно и возвращает документ, если он существует.
        - Причина аннулирования документа не является пустой строкой и не состоит только из пробельных символов.
        - Максимально допустимая длина причины аннулирования документа не превышена.
        - ID клиента соответствует формату UUID.
        - По заданному ID клиента существует клиент.
        - Пользователь, выполняющий операцию, относится к клиенту.
        - Проверяет, что документ не является черновиком.
        - Проверяет, что документ не является аннулированным.
        - У пользователя есть право аннулирования документов на уровне ролей пользователя клиента.
        - Если документ не связан ни с каким юрлицом, то аннулировать документ может создатель документа, который при этом имеет право аннулирования документов на уровне сотрудника клиента.
        - Если документ связан с юрлицом, то аннулировать документ может сотрудник этого юрлица, который имеет право на аннулирование документов на уровне ролей сотрудника клиента.
        - Среди подписантов документа есть руководитель-подписант.
        - Среди подписантов документа есть сотрудник-подписант.
        - Документ подписан обоими подписантами.
        - Сотрудник подписант не уволен.
        - Руководитель из аннулируемого документа активен.
        - Для юрлица, к которому относится аннулируемый документ, существует хотя бы один активный руководитель.
        - Проверяет, что документ не создан на основании ЛНА.
        - Для документа нет связи с актом об аннулировании.
        - Для документа отсутствует черновик акта об аннулировании.
        - Черновик акта об аннулировании находится в статусе удален.
        - Для документа нет актов об аннулировании, в которых в качестве сотрудника-подписанта выступает сотрудник-подписант документа.
        - Тип документа, выступающего в качестве акта об аннулировании, не является «Акт об аннулировании».
        - Акт об аннулировании находится в статусе «Удален».
        - Акт об аннулировании находится в статусе «Отклонен».
        - Проверяет, что текущий пользователь относится к заданному клиенту и возвращает пользователя клиента, если он существует.
        - Проверяет, что ID клиента, заданный в виде строки, соответствует формату, и возвращает типизированный ID клиента.
        - Проверяет существование клиента по заданному ID и возвращает клиента, если он существует.
        - Проверяет, что клиент не удален.
        - Пользователь является наблюдателем документа.
        - Проверяет, что среди подписантов документа есть руководитель-подписант.
        - Проверяет, что среди подписантов документа есть сотрудник-подписант.
        - Проверяет, что документ подписан заданным подписантом.
        - Проверяет, что данный сотрудник работает.
      parameters:
        - $ref: '#/components/parameters/FormatParameter'
        - name: Impersonated-User-Id
          description: Идентификатор пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            format: uuid
        - name: Impersonated-User-Id-Type
          description: Тип идентификатора пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            enum:
              - HR_LINK_ID
              - SNILS
              - EXTERNAL_ID
        - name: Impersonated-User-Id-External-System-Type
          description: |
            Идентификатор внешней системы при аутентификации через мастер-токен.
          in: header
          schema:
            type: string
        - name: clientId
          in: path
          required: true
          description: Идентификатор клиента.
          schema:
            type: string
            format: uuid
        - name: documentExternalId
          in: path
          required: true
          description: Идентификатор документа во внешней системе.
          schema:
            type: string
      requestBody:
        description: Тело запроса AnnulDocumentRequestDTO
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AnnulDocumentRequestDTO'
      responses:
        '200':
          description: Успешная операция.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    type: boolean
                  annulationDocument:
                    $ref: '#/components/schemas/AnnulDocumentResponseDTO'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '429':
          $ref: '#/components/responses/TooManyRequests'
  /api/v1/documentTypes:
    get:
      tags:
        - documentTypes
      summary: Получить типы документов
      operationId: documentTypeGetDocumentTypes
      security:
        - SessionCookieAuth: []
        - UserApiTokenAuth: []
        - MasterTokenAuth: []
      description: |
        ### Описание метода

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

        ### Валидации запроса

        - Пользователь, выполняющий запрос, принадлежит перво-созданному клиенту на тенанте.
        - Проверяет, что текущий пользователь относится к заданному клиенту и возвращает пользователя клиента, если он существует.
      parameters:
        - $ref: '#/components/parameters/FormatParameter'
        - name: Impersonated-User-Id
          description: Идентификатор пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            format: uuid
        - name: Impersonated-User-Id-Type
          description: Тип идентификатора пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            enum:
              - HR_LINK_ID
              - SNILS
              - EXTERNAL_ID
        - name: Impersonated-User-Id-External-System-Type
          description: |
            Идентификатор внешней системы при аутентификации через мастер-токен.
          in: header
          schema:
            type: string
      responses:
        '200':
          description: Успешная операция.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    type: boolean
                  documentTypes:
                    type: array
                    description: Список данных типов документа.
                    items:
                      $ref: '#/components/schemas/DocumentTypeDTO'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '429':
          $ref: '#/components/responses/TooManyRequests'
    post:
      tags:
        - documentTypes
      summary: Создать тип документов
      operationId: documentTypeCreateNonSystemDocumentType
      security:
        - SessionCookieAuth: []
        - UserApiTokenAuth: []
        - MasterTokenAuth: []
      description: |
        ### Описание метода

        ### Валидации запроса

        - Тело запроса должно быть задано.
        - Название типа документов должно быть задано и не быть пустым.
        - Название типа документов не должно принадлежать другим типам документов.
        - Если внешний ID типа документов задан, то типа документов с заданным ID во внешней системе не должно существовать.
        - У пользователя клиента должно быть право создавать типы документов.
        - Проверяет, что название типа документов задано и не является пустой строкой и возвращает название типа документов без пробелов в начале и конце.
        - Проверяет, что типа документов с заданным названием не существует в данном клиенте.
        - Проверяет, что типа документов с заданным ID во внешней системе не существует.
        - Проверяет, есть ли у пользователя клиента с заданным ID заданное право на уровне пользователя клиента.
        - Проверяет, что тип документов по Минтруда с заданным кодом существует и возвращает тип документа, если он существует.
        - Проверяет, что по переданному коду Минтруда нет запрета на подписание ПЭП сотрудником.
      parameters:
        - $ref: '#/components/parameters/FormatParameter'
        - name: Impersonated-User-Id
          description: Идентификатор пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            format: uuid
        - name: Impersonated-User-Id-Type
          description: Тип идентификатора пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            enum:
              - HR_LINK_ID
              - SNILS
              - EXTERNAL_ID
        - name: Impersonated-User-Id-External-System-Type
          description: |
            Идентификатор внешней системы при аутентификации через мастер-токен.
          in: header
          schema:
            type: string
      requestBody:
        description: Тело запроса CreateNonSystemDocumentTypeDTO
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateNonSystemDocumentTypeDTO'
      responses:
        '200':
          description: Успешная операция.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    type: boolean
                  documentType:
                    $ref: '#/components/schemas/DocumentTypeDTO'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '429':
          $ref: '#/components/responses/TooManyRequests'
  /api/v4/documentTypes/{documentTypeId}:
    put:
      tags:
        - documentTypes
      summary: Обновить тип документов (версия 4)
      operationId: documentTypeUpdateDocumentTypeV4
      security:
        - SessionCookieAuth: []
        - UserApiTokenAuth: []
        - MasterTokenAuth: []
      description: |
        ### Описание метода

        > **⚠️ Будьте осторожны!**
        >
        > Методы PUT перезаписывают запись целиком: любые непереданные поля считаются null и затирают данные в БД.
        > Поэтому при обновлении нужно указывать все поля.
         Обновляет тип документов для API версии 4. Отличия от API версии 3:
        * добавлен признак для отображения подсказки сотруднику о назначении заместителей
        - `substitutorCreationHintEnabled`.

        ### Валидации запроса

        Дополнительных валидаций запроса нет.
      parameters:
        - $ref: '#/components/parameters/FormatParameter'
        - name: Impersonated-User-Id
          description: Идентификатор пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            format: uuid
        - name: Impersonated-User-Id-Type
          description: Тип идентификатора пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            enum:
              - HR_LINK_ID
              - SNILS
              - EXTERNAL_ID
        - name: Impersonated-User-Id-External-System-Type
          description: |
            Идентификатор внешней системы при аутентификации через мастер-токен.
          in: header
          schema:
            type: string
        - name: documentTypeId
          in: path
          required: true
          description: Идентификатор типа документа в системе HRlink
          schema:
            type: string
            format: uuid
      requestBody:
        description: Тело запроса UpdateDocumentTypeV4DTO
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateDocumentTypeV4DTO'
      responses:
        '200':
          description: Успешная операция.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    type: boolean
                  documentType:
                    $ref: '#/components/schemas/DocumentTypeDTO'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '429':
          $ref: '#/components/responses/TooManyRequests'
  /api/v4/documentTypes/{documentTypeExternalId}/externalId:
    put:
      tags:
        - documentTypes
      summary: Обновить тип по внешнему ID (v4)
      operationId: documentTypeUpdateDocumentTypeByExternalIdV4
      security:
        - SessionCookieAuth: []
        - UserApiTokenAuth: []
        - MasterTokenAuth: []
      description: |
        ### Описание метода

        > **⚠️ Будьте осторожны!**
        >
        > Методы PUT перезаписывают запись целиком: любые непереданные поля считаются null и затирают данные в БД.
        > Поэтому при обновлении нужно указывать все поля.
         Обновляет тип документов по ID типа документов во внешней системе для API версии 4. Отличия от API версии 3:
        * добавлен признак для отображения подсказки сотруднику о назначении заместителей
        - `substitutorCreationHintEnabled`.

        ### Валидации запроса

        Дополнительных валидаций запроса нет.
      parameters:
        - $ref: '#/components/parameters/FormatParameter'
        - name: Impersonated-User-Id
          description: Идентификатор пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            format: uuid
        - name: Impersonated-User-Id-Type
          description: Тип идентификатора пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            enum:
              - HR_LINK_ID
              - SNILS
              - EXTERNAL_ID
        - name: Impersonated-User-Id-External-System-Type
          description: |
            Идентификатор внешней системы при аутентификации через мастер-токен.
          in: header
          schema:
            type: string
        - name: documentTypeExternalId
          in: path
          required: true
          description: Идентификатор типа документа во внешней системе.
          schema:
            type: string
      requestBody:
        description: Тело запроса UpdateDocumentTypeV4DTO
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateDocumentTypeV4DTO'
      responses:
        '200':
          description: Успешная операция.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    type: boolean
                  documentType:
                    $ref: '#/components/schemas/DocumentTypeDTO'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '429':
          $ref: '#/components/responses/TooManyRequests'
  /api/v1/clients/{clientId}/employees/{employeeId}:
    get:
      tags:
        - employees
      summary: Получить сотрудника
      operationId: employeeGetEmployee
      security:
        - SessionCookieAuth: []
        - UserApiTokenAuth: []
        - MasterTokenAuth: []
      description: |
        ### Описание метода

        На данный момент в системе доступны только методы получения данных сотрудника. Но эти методы возвращают полные данные сотрудника, в том числе и данные физлица, к которым относится сотрудник.

        ### Валидации запроса

        - Клиент существует, не удалён, и к нему относится пользователь, выполняющий операцию.
        - ID сотрудника соответствует формату UUID.
        - Существует сотрудник по заданному ID.
        - Сотрудник относится к заданному клиенту.
        - Если запрашиваемый сотрудник не является руководителем, то текущему пользователю доступен отдел запрашиваемого сотрудника.
        - Если текущий пользователь запрашивает данные не собственного сотрудника, то он должен иметь право EMPLOYEES на уровне пользователя клиента или право EMPLOYEES в юрлице сотрудника.
        - ID клиента соответствует формату UUID.
        - По заданному ID клиента существует клиент.
        - Пользователь, выполняющий операцию, относится к клиенту.
        - Проверяет, что ID сотрудника, заданный в виде строки, соответствует формату, и возвращает типизированный ID сотрудника.
        - Проверяет, что сотрудник по заданному ID существует.
        - Проверяет, что заданный сотрудник относится к заданному клиенту.
        - Проверяет наличие у пользователя клиента доступа к отделу сотрудника учитывая замещения.
        - Проверяет, есть ли у пользователя клиента с заданным ID заданное право, учитывая замещения.
        - Проверяет, что текущий пользователь относится к заданному клиенту и возвращает пользователя клиента, если он существует.
        - Проверяет, что ID клиента, заданный в виде строки, соответствует формату, и возвращает типизированный ID клиента.
        - Проверяет существование клиента по заданному ID и возвращает клиента, если он существует.
        - Проверяет, что клиент не удален.
        - Проверяет, что сотрудник по заданному ID во внешней системе существует и возвращает его, если он существует.
        - Если юрлицо указано, то существование сотрудника проверяется в заданном юрлице.
        - Если юрлицо не указано, то существование сотрудника проверяется в клиенте с заданным ID.
        - Проверяет наличие у пользователя клиента доступа к отделу сотрудника.
      parameters:
        - $ref: '#/components/parameters/FormatParameter'
        - name: Impersonated-User-Id
          description: Идентификатор пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            format: uuid
        - name: Impersonated-User-Id-Type
          description: Тип идентификатора пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            enum:
              - HR_LINK_ID
              - SNILS
              - EXTERNAL_ID
        - name: Impersonated-User-Id-External-System-Type
          description: |
            Идентификатор внешней системы при аутентификации через мастер-токен.
          in: header
          schema:
            type: string
        - name: clientId
          in: path
          required: true
          description: Идентификатор клиента.
          schema:
            type: string
            format: uuid
        - name: employeeId
          in: path
          required: true
          description: Идентификатор сотрудника в системе HRlink.
          schema:
            type: string
            format: uuid
      responses:
        '200':
          description: Успешная операция.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    type: boolean
                  employee:
                    $ref: '#/components/schemas/GetEmployeeResponseDto'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '429':
          $ref: '#/components/responses/TooManyRequests'
  /api/v5/clients/{clientId}/employees/{id}:
    put:
      tags:
        - employees
      summary: Обновить сотрудника
      operationId: employeeUpdateEmployeeV5
      security:
        - SessionCookieAuth: []
        - UserApiTokenAuth: []
        - MasterTokenAuth: []
      description: |
        ### Описание метода

        > **⚠️ Будьте осторожны!**
        >
        > Методы PUT перезаписывают запись целиком: любые непереданные поля считаются null и затирают данные в БД.
        > Поэтому при обновлении указывайте все поля.

        Обновляет данные сотрудника по идентификатору сотрудника в системе HRlink. Версия `v5` поддерживает поле `fullTimeEquivalent` (ставка сотрудника, доля от полной занятости) в дополнение к полям предыдущих версий.

        ### Валидации запроса

        - Тело запроса задано.
        - Клиент существует по заданному `clientId`, не удалён, и к нему относится пользователь, выполняющий операцию.
        - ID сотрудника (`id`) соответствует формату UUID.
        - Сотрудник с заданным ID существует.
        - У пользователя клиента есть право `EMPLOYEES_UPDATE` на уровне пользователя клиента или на уровне сотрудника.
        - У пользователя клиента есть доступ к отделу сотрудника (в том числе с учётом замещений).
        - Список тегов (`tags`) задан корректно: имена нормализуются, проверяется длина и допустимые символы.
        - Если задан отдел (`departmentId` или `departmentExternalId`) — отдел существует, относится к заданному клиенту; если отдел изменился относительно текущего отдела сотрудника, новый отдел активен.
        - Если задана должность (`positionId` или `positionExternalId`) — должность существует и относится к заданному клиенту.
        - У пользователя клиента есть права на юрлицо сотрудника (с учётом замещений).
        - Если задан `externalId` сотрудника — в рамках юрлица сотрудника нет другого сотрудника с таким же внешним ID.
        - Версия данных сотрудника (`version`) актуальна.
        - У тенанта есть активный пакет лицензий.
        - Если `roleIds` заданы и отличаются от текущих — пользователь имеет право `EMPLOYEES_UPDATE` на уровне пользователя клиента (замещения не учитываются).
        - Ни один `roleId` в списке не равен null.
        - Все указанные роли существуют у тенанта.
        - После обновления у пользователя клиента не возникнет конфликта HR-ролей: нет сотрудников одновременно с ролями кадровика и делопроизводителя (роли с правом `HR`).
        - Если добавляется роль кадровика или делопроизводителя — у тенанта есть свободная лицензия кадровика.
        - Поле `fullTimeEquivalent`, если задано, содержит строку длиной от 1 до 10 символов.
      parameters:
        - $ref: '#/components/parameters/FormatParameter'
        - name: Impersonated-User-Id
          description: Идентификатор пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            format: uuid
        - name: Impersonated-User-Id-Type
          description: Тип идентификатора пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            enum:
              - HR_LINK_ID
              - SNILS
              - EXTERNAL_ID
        - name: Impersonated-User-Id-External-System-Type
          description: |
            Идентификатор внешней системы при аутентификации через мастер-токен.
          in: header
          schema:
            type: string
        - name: clientId
          in: path
          required: true
          description: Идентификатор клиента.
          schema:
            type: string
            format: uuid
        - name: id
          in: path
          required: true
          description: Идентификатор сотрудника в системе HRlink.
          schema:
            type: string
            format: uuid
      requestBody:
        description: Тело запроса UpdateEmployeeV5DTO
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateEmployeeV5DTO'
      responses:
        '200':
          description: Успешная операция.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    type: boolean
                  employee:
                    $ref: '#/components/schemas/PaginatedEmployeeDTO'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '429':
          $ref: '#/components/responses/TooManyRequests'
  /api/v1/clients/{clientId}/employees/{employeeExternalId}/externalId:
    get:
      tags:
        - employees
      summary: Получить сотрудника по внешнему ID
      operationId: employeeGetEmployeeByExternalId
      security:
        - SessionCookieAuth: []
        - UserApiTokenAuth: []
        - MasterTokenAuth: []
      description: |
        ### Описание метода

        Возвращает расширенные данные о сотрудниках пользователя по внешнему ID одного из сотрудников пользователя.

        ### Валидации запроса

        - Клиент существует, не удалён, и к нему относится пользователь, выполняющий операцию.
        - ID сотрудника во внешней системе задан.
        - В клиенте существует сотрудник по ID во внешней системе.
        - Если запрашиваемый сотрудник не является руководителем, то текущему пользователю доступен отдел запрашиваемого сотрудника.
        - Если текущий пользователь запрашивает данные не собственного сотрудника, то он должен иметь право EMPLOYEES на уровне пользователя клиента или право EMPLOYEES в юрлице сотрудника.
        - ID клиента соответствует формату UUID.
        - По заданному ID клиента существует клиент.
        - Пользователь, выполняющий операцию, относится к клиенту.
        - Проверяет, что ID сотрудника во внешней системе задан.
        - Проверяет, что сотрудник по заданному ID во внешней системе существует и возвращает его, если он существует.
        - Если юрлицо указано, то существование сотрудника проверяется в заданном юрлице.
        - Если юрлицо не указано, то существование сотрудника проверяется в клиенте с заданным ID.
        - Проверяет наличие у пользователя клиента доступа к отделу сотрудника учитывая замещения.
        - Проверяет, что текущий пользователь относится к заданному клиенту и возвращает пользователя клиента, если он существует.
        - Проверяет, что ID клиента, заданный в виде строки, соответствует формату, и возвращает типизированный ID клиента.
        - Проверяет существование клиента по заданному ID и возвращает клиента, если он существует.
        - Проверяет, что клиент не удален.
        - Проверяет наличие у пользователя клиента доступа к отделу сотрудника.
      parameters:
        - $ref: '#/components/parameters/FormatParameter'
        - name: Impersonated-User-Id
          description: Идентификатор пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            format: uuid
        - name: Impersonated-User-Id-Type
          description: Тип идентификатора пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            enum:
              - HR_LINK_ID
              - SNILS
              - EXTERNAL_ID
        - name: Impersonated-User-Id-External-System-Type
          description: |
            Идентификатор внешней системы при аутентификации через мастер-токен.
          in: header
          schema:
            type: string
        - name: clientId
          in: path
          required: true
          description: Идентификатор клиента.
          schema:
            type: string
            format: uuid
        - name: employeeExternalId
          in: path
          required: true
          description: Идентификатор сотрудника во внешней системе.
          schema:
            type: string
      responses:
        '200':
          description: Успешная операция.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    type: boolean
                  employee:
                    $ref: '#/components/schemas/GetEmployeeResponseDto'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '429':
          $ref: '#/components/responses/TooManyRequests'
  /api/v5/clients/{clientId}/employeesByExternalId/{externalId}:
    put:
      tags:
        - employees
      summary: Обновить сотрудника по внешнему ID
      operationId: employeeUpdateEmployeeByExternalIdV5
      security:
        - SessionCookieAuth: []
        - UserApiTokenAuth: []
        - MasterTokenAuth: []
      description: |
        ### Описание метода

        > **⚠️ Будьте осторожны!**
        >
        > Методы PUT перезаписывают запись целиком: любые непереданные поля считаются null и затирают данные в БД.
        > Поэтому при обновлении указывайте все поля.

        Обновляет данные сотрудника по идентификатору во внешней системе. Версия `v5` поддерживает поле `fullTimeEquivalent` (ставка сотрудника, доля от полной занятости) в дополнение к полям предыдущих версий.

        ### Валидации запроса

        - Тело запроса задано.
        - Клиент существует по заданному `clientId`, не удалён, и к нему относится пользователь, выполняющий операцию.
        - Если в теле задан `legalEntityId` или `legalEntityExternalId` — юрлицо существует, относится к заданному клиенту, и сотрудник с указанным `externalId` существует в этом юрлице.
        - Если юрлицо в теле не задано — у клиента существует ровно один сотрудник с указанным `externalId`.
        - У пользователя клиента есть право `EMPLOYEES_UPDATE` на уровне пользователя клиента или на уровне сотрудника.
        - У пользователя клиента есть доступ к отделу сотрудника (в том числе с учётом замещений).
        - У сотрудника есть пользователь клиента (активен или отключён) и сотрудник относится к заданному клиенту.
        - Список тегов (`tags`) задан корректно: имена нормализуются, проверяется длина и допустимые символы.
        - Если задан отдел (`departmentId` или `departmentExternalId`) — отдел существует, относится к заданному клиенту; если отдел изменился относительно текущего отдела сотрудника, новый отдел активен.
        - Если задана должность (`positionId` или `positionExternalId`) — должность существует и относится к заданному клиенту.
        - У пользователя клиента есть права на юрлицо сотрудника (с учётом замещений).
        - Если задан новый `externalId` сотрудника — в рамках юрлица сотрудника нет другого сотрудника с таким же внешним ID.
        - Версия данных сотрудника (`version`) актуальна.
        - У тенанта есть активный пакет лицензий.
        - Если `roleIds` заданы и отличаются от текущих — пользователь имеет право `EMPLOYEES_UPDATE` на уровне пользователя клиента (замещения не учитываются).
        - Ни один `roleId` в списке не равен null.
        - Все указанные роли существуют у тенанта.
        - После обновления у пользователя клиента не возникнет конфликта HR-ролей: нет сотрудников одновременно с ролями кадровика и делопроизводителя (роли с правом `HR`).
        - Если добавляется роль кадровика или делопроизводителя — у тенанта есть свободная лицензия кадровика.
        - Поле `fullTimeEquivalent`, если задано, содержит строку длиной от 1 до 10 символов.
      parameters:
        - $ref: '#/components/parameters/FormatParameter'
        - name: Impersonated-User-Id
          description: Идентификатор пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            format: uuid
        - name: Impersonated-User-Id-Type
          description: Тип идентификатора пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            enum:
              - HR_LINK_ID
              - SNILS
              - EXTERNAL_ID
        - name: Impersonated-User-Id-External-System-Type
          description: |
            Идентификатор внешней системы при аутентификации через мастер-токен.
          in: header
          schema:
            type: string
        - name: clientId
          in: path
          required: true
          description: Идентификатор клиента.
          schema:
            type: string
            format: uuid
        - name: externalId
          in: path
          required: true
          description: Идентификатор сотрудника во внешней системе.
          schema:
            type: string
      requestBody:
        description: Тело запроса UpdateEmployeeByExternalIdV5DTO
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateEmployeeByExternalIdV5DTO'
      responses:
        '200':
          description: Успешная операция.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    type: boolean
                  employee:
                    $ref: '#/components/schemas/PaginatedEmployeeDTO'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '429':
          $ref: '#/components/responses/TooManyRequests'
  /api/v1/clients/{clientId}/employees/{employeeExternalId}/externalId/dismiss:
    put:
      tags:
        - employees
      summary: Уволить по внешнему ID
      operationId: employeeDismissEmployeeByExternalId
      security:
        - SessionCookieAuth: []
        - UserApiTokenAuth: []
        - MasterTokenAuth: []
      description: |
        ### Описание метода

        > **⚠️ Будьте осторожны!**
        >
        > Методы PUT перезаписывают запись целиком: любые непереданные поля считаются null и затирают данные в БД.
        > Поэтому при обновлении нужно указывать все поля.
         Дата увольнения должна быть быть задана и корректна.

        ### Валидации запроса

        - Тело запроса увольнения сотрудника задано.
        - Дата увольнения сотрудника задана.
        - Клиент существует, не удалён, и к нему относится пользователь, выполняющий операцию.
        - Сотрудник с заданным внешним ID существует у клиента.
        - Сотрудник с заданным ID работает.
        - На сотрудника не существует активной задачи отложенного увольнения.
        - Сотрудник с заданным внешним ID является уникальным в заданном юрлице у других сотрудников клиента.
        - У пользователя клиента есть право на увольнение сотрудника на уровне пользователя клиента или на уровне сотрудника клиента.
        - Указана корректная версия данных.
        - У тенанта должен быть активный пакет лицензий.
        - Проверяет, что тело запроса присутствует.
        - Проверяет, что информация о дате увольнения сотрудника присутствует в теле запроса.
      parameters:
        - $ref: '#/components/parameters/FormatParameter'
        - name: Impersonated-User-Id
          description: Идентификатор пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            format: uuid
        - name: Impersonated-User-Id-Type
          description: Тип идентификатора пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            enum:
              - HR_LINK_ID
              - SNILS
              - EXTERNAL_ID
        - name: Impersonated-User-Id-External-System-Type
          description: |
            Идентификатор внешней системы при аутентификации через мастер-токен.
          in: header
          schema:
            type: string
        - name: clientId
          in: path
          required: true
          description: Идентификатор клиента.
          schema:
            type: string
            format: uuid
        - name: employeeExternalId
          in: path
          required: true
          description: Идентификатор сотрудника во внешней системе.
          schema:
            type: string
      requestBody:
        description: Тело запроса DismissEmployeeDTO
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DismissEmployeeDTO'
      responses:
        '200':
          description: Успешная операция.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    type: boolean
                  employee:
                    $ref: '#/components/schemas/DismissedEmployeeDTO'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '429':
          $ref: '#/components/responses/TooManyRequests'
  /api/v1/clients/{clientId}/employees/bulkDismissAndRestore:
    put:
      tags:
        - employees
      summary: Массовое увольнение/восстановление
      operationId: employeeBulkDismissAndRestore
      security:
        - SessionCookieAuth: []
        - UserApiTokenAuth: []
        - MasterTokenAuth: []
      description: |
        ### Описание метода

        --- #### 1. Общие требования к запросу
        - Тело HTTP-запроса должно быть задано.
        - Параметр `clientId` должен соответствовать формату UUID.
        - Клиент с указанным `clientId` должен существовать.
        - Аутентифицированный пользователь должен принадлежать указанному клиенту. --- #### 2. Требования к правам доступа Пользователь должен обладать правами, достаточными для выполнения операции. ##### 2.1 Увольнение сотрудников Для увольнения сотрудников пользователь должен иметь **хотя бы одно** из следующих прав:
        - Право на уровне пользователя клиента:
        - `EMPLOYEES_DISMISS`
        - Право на уровне любого из сотрудников пользователя:
        - `EMPLOYEES_DISMISS` ##### 2.2 Восстановление сотрудников Для восстановления сотрудников пользователь должен иметь **хотя бы одно** из следующих прав:
        - Право на уровне пользователя клиента:
        - `EMPLOYEES_RESTORE`
        - Право на уровне любого из сотрудников пользователя:
        - `EMPLOYEES_RESTORE` --- #### 3. Требования к списку сотрудников Поле `employees` в теле запроса должно быть задано и удовлетворять следующим условиям. ##### 3.1 Ограничения на список
        - Список не должен быть пустым.
        - Количество элементов в списке — не более **100**.
        - Должен быть задан **хотя бы один** идентификатор сотрудника:
        - внутренний ID (`id`), **или**
        - внешний ID (`externalId`)
        - В списке не допускается:
        - несколько элементов с одинаковым внутренним ID сотрудника;
        - несколько элементов с одинаковой комбинацией:
        - внешний ID сотрудника (`externalId`) **и**
        - ID юридического лица (`legalEntityId`). --- #### 4. Лицензионные ограничения
        - При успешном прохождении всех проверок операция передаётся на выполнение.
        - При нарушении любого из условий запрос считается некорректным и отклоняется с соответствующей ошибкой.

        ### Валидации запроса

        - Тело запроса задано.
        - ID клиента соответствует формату UUID.
        - Клиент существует по заданному ID.
        - Пользователь принадлежит заданному клиенту.
        - Пользователь имеет право `EMPLOYEES_DISMISS` на уровне пользователя клиента или на уровне любого из сотрудников пользователя.
        - Пользователь имеет право `EMPLOYEES_RESTORE` на уровне пользователя клиента или на уровне любого из сотрудников пользователя.
        - Список данных сотрудников для операции задан корректно: * Список не пустой (проверка аннотацией).
        - Список не содержит более 100 элементов (проверка аннотацией).
        - Список не содержит null-элементов (проверка аннотацией).
        - Список не содержит элементов в которых не задан ни внутренний ни внешний ID сотрудника.
        - Список не содержит элементов с одинаковыми внутренними ID сотрудников или одинаковыми комбинациями внешних ID сотрудников и ID юрлиц.
        - У тенанта должен быть активный пакет лицензий.
        - По заданному ID клиента существует клиент.
        - Пользователь, выполняющий операцию, относится к клиенту.
        - Проверяет, есть ли у пользователя клиента с заданным ID заданное право и возвращает кэш наличия прав у пользователя клиента.
        - Проверяет, что в данных сотрудников задан либо внутренний ID либо внешний ID.
        - Среди данных сотрудников нет объектов с повторяющимся внутренним ID.
        - Среди данных сотрудников нет объектов с повторяющимся сочетаниями внешних ID: * Нет объектов у которых совпадают внешние ID и не задан ни один ID юрлица.
        - Нет объектов у которых совпадают внешние ID и при этом, у одного из объектов не задан ни один ID юрлица, а у другого задан один из ID юрлица.
        - Нет объектов у которых совпадают пара внешнего ID и ID юрлица.
        - Нет объектов у которых совпадают пара внешнего ID и внешнего ID юрлица.
        - Производит проверку, что у тенанта есть активный пакет лицензий.
        - Если у тенанта никогда ещё не было пакетов лицензий, то проверка пропускается.
        - Проверяет, что текущий пользователь относится к заданному клиенту и возвращает пользователя клиента, если он существует.
        - Проверяет, что ID клиента, заданный в виде строки, соответствует формату, и возвращает типизированный ID клиента.
        - Проверяет существование клиента по заданному ID и возвращает клиента, если он существует.
        - Проверяет, что клиент не удален.
        - Проверяет, что среди данных сотрудников нет объектов с повторяющимся внутренним ID.
        - Нет объектов у которых совпадают внешние ID и не задан ни один ID юрлица.
        - Проверяет что среди данных сотрудников нет объектов у которых совпадают внешние ID и не задан ни один ID юрлица.
        - Проверяет что среди данных сотрудников нет объектов у которых совпадают внешние ID и при этом, у одного из объектов не задан ни один ID юрлица, а у другого задан один из ID юрлица.
        - Проверяет что среди данных сотрудников нет объектов у которых совпадают пара внешнего ID и ID юрлица.
        - Проверяет что среди данных сотрудников нет объектов у которых совпадают пара внешнего ID и внешнего ID юрлица.
      parameters:
        - $ref: '#/components/parameters/FormatParameter'
        - name: Impersonated-User-Id
          description: Идентификатор пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            format: uuid
        - name: Impersonated-User-Id-Type
          description: Тип идентификатора пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            enum:
              - HR_LINK_ID
              - SNILS
              - EXTERNAL_ID
        - name: Impersonated-User-Id-External-System-Type
          description: |
            Идентификатор внешней системы при аутентификации через мастер-токен.
          in: header
          schema:
            type: string
        - name: clientId
          in: path
          required: true
          description: Идентификатор клиента.
          schema:
            type: string
            format: uuid
      requestBody:
        description: Тело запроса BulkDismissOrRestoreRequestDto
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/BulkDismissOrRestoreRequestDto'
      responses:
        '200':
          description: Успешная операция.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    type: boolean
                  employees:
                    $ref: '#/components/schemas/BulkDismissOrRestoreResponseDto'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '429':
          $ref: '#/components/responses/TooManyRequests'
  /api/v1/clients/{clientId}/employees/functionalManagers:
    put:
      tags:
        - employees
      summary: Обновить руководителей
      operationId: employeeUpdateFunctionalManagerIdsForEmployees
      security:
        - SessionCookieAuth: []
        - UserApiTokenAuth: []
        - MasterTokenAuth: []
      description: |
        ### Описание метода

        > **⚠️ Будьте осторожны!**
        >
        > Методы PUT перезаписывают запись целиком: любые непереданные поля считаются null и затирают данные в БД.
        > Поэтому при обновлении нужно указывать все поля.
         Метод используется для обновления данных сотрудников в системе. В теле запроса передаются данные обновляемых сотрудников,
        а также данные управленческих руководителей, которых нужно назначить сотрудникам.

        ### Валидации запроса

        - Тело запроса задано корректно.
        - Клиент существует, не удалён, и к нему относится пользователь, выполняющий операцию.
        - На текущий момент не существует активной задачи массовой синхронизации управленческих руководителей сотрудников.
        - Сотрудники, для которых в теле запроса указан ID, существуют.
        - Юрлица, для которых в теле запроса указан ID, а для соответствующих сотрудников не указан ID и указан ID во внешней системе, существуют.
        - Юрлица, для которых в теле запроса не указан ID и указан ID во внешней системе, а для соответствующих сотрудников не указан ID и указан ID во внешней системе, существуют.
        - Сотрудники, для которых в теле запроса не указан ID и указан ID во внешней системе, существуют и единственны.
        - Каждый обновляемый сотрудник указан в теле запроса не более одного раза.
        - Ни один из сотрудников, указанных в теле запроса, не уволен, не считая сотрудников, для которых удаляется управленческий руководитель.
        - Для каждого из обновляемых сотрудников
        - если версия данных указана, то она корректна.
        - Пользователь клиента каждого обновляемого сотрудника не совпадает с пользователем клиента нового управленческого руководителя.
        - Пользователь клиента имеет необходимые права для совершения операции.
        - Тело запроса задано.
        - Список обновляемых сотрудников указан и не пуст.
        - Список обновляемых сотрудников содержит не более допустимого числа элементов.
        - Список обновляемых сотрудников не содержит пустых элементов.
        - Для каждого обновляемого сотрудника указан внутренний или внешний ID.
        - Проверяет, что сотрудники, для которых в теле запроса указан ID, существуют.
        - Проверяет, что юрлица, для которых в теле запроса указан ID, а для соответствующих сотрудников не указан ID и указан ID во внешней системе, существуют.
        - Проверяет, что юрлица, для которых в теле запроса не указан ID и указан ID во внешней системе, а для соответствующих сотрудников не указан ID и указан ID во внешней системе, существуют.
        - Проверяет, что сотрудники, для которых в теле запроса не указан ID и указан ID во внешней системе, существуют и единственны.
        - Проверяет, что каждый обновляемый сотрудник указан в теле запроса не более одного раза.
        - Проверяет, что ни один сотрудников, указанных в теле запроса, не уволен, не считая сотрудников, для которых удаляется управленческий руководитель.
        - Проверяет, что для каждого сотрудника указана корректная версия данных.
        - Проверяет, что пользователь клиента каждого обновляемого сотрудника не совпадает с пользователем клиента управленческого руководителя.
        - Пользователь клиента имеет право `EMPLOYEES_UPDATE` на уровне пользователя клиента или на уровне сотрудника для выполнения операции.
        - Пользователь клиента имеет права на юрлица обновляемых сотрудников и управленческих руководителей.
        - Пользователь клиента имеет права на отделы обновляемых сотрудников и управленческих руководителей.
        - ID клиента соответствует формату UUID.
        - По заданному ID клиента существует клиент.
        - Пользователь, выполняющий операцию, относится к клиенту.
        - Проверяет, что в теле запроса указано не более допустимого числа обновляемых сотрудников.
        - Проверяет, что ID сотрудника указан.
        - Проверяет, что сотрудники существуют по всем заданным ID, и возвращает список сотрудников.
        - Проверяет существование всех юрлиц клиента по заданному списку ID.
        - Проверяет существование юрлиц по заданному ID клиента и заданным ID во внешней системе.
        - Проверяет, что по каждому из заданных ID во внешней системе существует единственный сотрудник.
        - Если юрлицо указано, то существование сотрудника проверяется в заданном юрлице.
        - Если юрлицо не указано, то существование сотрудника проверяется в клиенте с заданным ID.
        - Проверяет, что указанный сотрудник не уволен.
        - Проверяет, что указана корректная версия данных.
        - Проверяет, есть ли у пользователя клиента с заданным ID заданное право и возвращает кэш наличия прав у пользователя клиента.
        - Проверяет, что текущий пользователь относится к заданному клиенту и возвращает пользователя клиента, если он существует.
        - Проверяет, что ID клиента, заданный в виде строки, соответствует формату, и возвращает типизированный ID клиента.
        - Проверяет существование клиента по заданному ID и возвращает клиента, если он существует.
        - Проверяет, что клиент не удален.
        - Проверяет, что по каждому из заданных ID во внешней системе существует единственный сотрудник в заданном клиенте.
        - Проверяет, что данный сотрудник работает.
        - Проверяет существование единственного сотрудника с заданным ID во внешней системе в клиенте с заданным ID.
      parameters:
        - $ref: '#/components/parameters/FormatParameter'
        - name: Impersonated-User-Id
          description: Идентификатор пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            format: uuid
        - name: Impersonated-User-Id-Type
          description: Тип идентификатора пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            enum:
              - HR_LINK_ID
              - SNILS
              - EXTERNAL_ID
        - name: Impersonated-User-Id-External-System-Type
          description: |
            Идентификатор внешней системы при аутентификации через мастер-токен.
          in: header
          schema:
            type: string
        - name: clientId
          in: path
          required: true
          description: Идентификатор клиента.
          schema:
            type: string
            format: uuid
      requestBody:
        description: Тело запроса UpdateFunctionalManagerIdsForEmployeesRequestDTO
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateFunctionalManagerIdsForEmployeesRequestDTO'
      responses:
        '200':
          description: Успешная операция.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    type: boolean
                  employees:
                    type: array
                    description: Список данных сотрудников.
                    items:
                      $ref: '#/components/schemas/ClientUserListFullInfoDTO'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '429':
          $ref: '#/components/responses/TooManyRequests'
  /api/v2/clients/{clientId}/employees/{employeeId}/permittedClientDepartments:
    get:
      tags:
        - employees
      summary: Получить список доступных отделов сотрудника
      operationId: permittedClientDepartmentGetPermittedClientDepartmentsV2
      security:
        - SessionCookieAuth: []
        - UserApiTokenAuth: []
        - MasterTokenAuth: []
      description: |
        ### Описание метода

        Возвращает список отделов юрлица с флагом `permitted`, указывающим, доступен ли отдел сотруднику.

        ### Необходимые права

        `READ_PERMITTED_CLIENT_DEPARTMENTS` на уровне пользователя клиента.
        У сотрудника должно быть хотя бы одно право, для которого проверяются доступные отделы.
      parameters:
        - name: Impersonated-User-Id
          description: Идентификатор пользователя при аутентификации через мастер-токен.
          in: header
          schema:
            type: string
            format: uuid
        - name: Impersonated-User-Id-Type
          description: Тип идентификатора пользователя при аутентификации через мастер-токен.
          in: header
          schema:
            type: string
            enum:
              - HR_LINK_ID
              - SNILS
              - EXTERNAL_ID
        - name: Impersonated-User-Id-External-System-Type
          description: Идентификатор внешней системы при аутентификации через мастер-токен.
          in: header
          schema:
            type: string
        - name: clientId
          in: path
          required: true
          description: Идентификатор клиента.
          schema:
            type: string
            format: uuid
        - name: employeeId
          in: path
          required: true
          description: Идентификатор сотрудника.
          schema:
            type: string
            format: uuid
      responses:
        '200':
          description: Успешная операция.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    type: boolean
                  permittedClientDepartments:
                    type: array
                    description: Список отделов с признаком доступности.
                    items:
                      $ref: '#/components/schemas/PermittedClientDepartmentsResponseDto'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '429':
          $ref: '#/components/responses/TooManyRequests'
    put:
      tags:
        - employees
      summary: Обновить список доступных отделов сотрудника
      operationId: permittedClientDepartmentUpdatePermittedClientDepartmentsV2
      security:
        - SessionCookieAuth: []
        - UserApiTokenAuth: []
        - MasterTokenAuth: []
      description: |
        ### Описание метода

        > **⚠️ Будьте осторожны!**
        >
        > Методы PUT перезаписывают запись целиком: любые непереданные отделы будут удалены из списка доступных.

        Обновляет список доступных отделов для сотрудника. Если список пуст, сотруднику становятся доступны все отделы юрлица.

        ### Необходимые права

        `UPDATE_PERMITTED_CLIENT_DEPARTMENTS` на уровне пользователя клиента.
        У сотрудника должно быть хотя бы одно право, для которого проверяются доступные отделы.

        ### Валидации запроса

        - Сотрудник не уволен.
        - Все указанные отделы существуют в клиенте.
        - Список не содержит дублей.
        - У отделов без дочерних должен быть тип `INCLUDE_INHERITED`.
        - Логика типов доступа между родительскими и дочерними отделами не нарушена.
      parameters:
        - name: Impersonated-User-Id
          description: Идентификатор пользователя при аутентификации через мастер-токен.
          in: header
          schema:
            type: string
            format: uuid
        - name: Impersonated-User-Id-Type
          description: Тип идентификатора пользователя при аутентификации через мастер-токен.
          in: header
          schema:
            type: string
            enum:
              - HR_LINK_ID
              - SNILS
              - EXTERNAL_ID
        - name: Impersonated-User-Id-External-System-Type
          description: Идентификатор внешней системы при аутентификации через мастер-токен.
          in: header
          schema:
            type: string
        - name: clientId
          in: path
          required: true
          description: Идентификатор клиента.
          schema:
            type: string
            format: uuid
        - name: employeeId
          in: path
          required: true
          description: Идентификатор сотрудника.
          schema:
            type: string
            format: uuid
      requestBody:
        description: Список отделов с типами доступа.
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdatePermittedClientDepartmentsDtoV2'
      responses:
        '200':
          description: Успешная операция.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    type: boolean
                  permittedClientDepartments:
                    type: array
                    description: Обновлённый список отделов с признаком доступности.
                    items:
                      $ref: '#/components/schemas/PermittedClientDepartmentsResponseDto'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '429':
          $ref: '#/components/responses/TooManyRequests'
  /api/v1/clients/{clientId}/employees/getRegistry:
    post:
      tags:
        - employees
      summary: Реестр сотрудников
      operationId: employeeGetPaginatedEmployees
      security:
        - SessionCookieAuth: []
        - UserApiTokenAuth: []
        - MasterTokenAuth: []
      description: |
        ### Описание метода

        Обязательных полей нет, но задать json-тело обязательно. В случае, если ни один из фильтров не указан, то как минимум необходимо задать тело запроса как пустой объект {}. Строка с ФИО сотрудника (nameSearch) может содержать любое количество как полных имён, так и их частичных представлений в любом порядке (например, «ванов Анд», «Андр»). В результате фильтрации по ФИО вернутся только сотрудники, в имени, фамилии или отчестве которых содержится каждая введенная строка, разделенная пробелами. В positionIds и departmentIds необходимо указывать ID должностей и отделов сотрудников, определенных в справочнике HRlink’а. ID можно получить, используя методы, связанные со справочником должностей и справочником отделов. Допустимо указать null значение, чтобы выбрать сотрудников без должности и без отдела соответственно. В поле legalEntityIds необходимо указывать ID юрлиц, которые были присвоены в HRlink’е. ID юрлица можно получить, используя методы, связанные со справочником юрлиц.

        ### Валидации запроса

        - Клиент существует, не удалён, и к нему относится пользователь, выполняющий операцию.
        - Если задано контекстное право, то оно должно существовать и соответствовать контексту получения данных сотрудников.
        - Текущий пользователь клиента имеет право на выполнение операции получения реестра сотрудников.
        - Количество элементов, которые нужно пропустить при выборке, корректно.
        - Количество возвращаемых при запросе элементов корректно.
        - Фильтр по проверке документов сотрудников корректен.
        - Входные данные фильтрации проходят базовую валидацию для выполнения операции постраничного получения сотрудников.
        - ID клиента соответствует формату UUID.
        - По заданному ID клиента существует клиент.
        - Пользователь, выполняющий операцию, относится к клиенту.
        - Проверяет, есть ли у пользователя клиента с заданным ID заданное право и возвращает кэш наличия прав у пользователя клиента.
        - Проверяет, что переданные элементы разрешены пользователю с заданным списком ID разрешенных элементов пользовательских структур.
        - Проверяет, что количество элементов, которое нужно пропустить при выборке с пагинацией, корректно.
        - Набор данных соответствует одному из допустимых значений реестра сотрудников.
        - Проверяет, что заданное количество возвращаемых при запросе элементов корректно относительно набора запрашиваемых данных для реестра сотрудников.
        - Проверяет, что данные для фильтрации по проверкам документов человека заданы корректно.
        - Проверяет, что текущий пользователь относится к заданному клиенту и возвращает пользователя клиента, если он существует.
        - Проверяет, что ID клиента, заданный в виде строки, соответствует формату, и возвращает типизированный ID клиента.
        - Проверяет существование клиента по заданному ID и возвращает клиента, если он существует.
        - Проверяет, что клиент не удален.
        - Проверяет, что заданное количество возвращаемых при запросе элементов корректно.
        - Выполняет проверку уникальности типа проверки документов человека в фильтре реестра сотрудников.
      parameters:
        - $ref: '#/components/parameters/FormatParameter'
        - name: Impersonated-User-Id
          description: Идентификатор пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            format: uuid
        - name: Impersonated-User-Id-Type
          description: Тип идентификатора пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            enum:
              - HR_LINK_ID
              - SNILS
              - EXTERNAL_ID
        - name: Impersonated-User-Id-External-System-Type
          description: |
            Идентификатор внешней системы при аутентификации через мастер-токен.
          in: header
          schema:
            type: string
        - name: clientId
          in: path
          required: true
          description: Идентификатор клиента.
          schema:
            type: string
            format: uuid
        - name: permissionContext
          in: query
          description: |
            Контекстное право, , в контексте которого выполняется операция.
            - `DOCUMENTS_CREATE` — Право для создания документов.
            - `DOCUMENTS_UPDATE` — Право для обновления документов.
            - `NORMATIVE_ACTS` — Право для получения нормативных актов.
            - `NORMATIVE_ACTS_SEND_TO_SIGNING` — Право для отправки нормативных актов на подписание.
            - `EMPLOYEES` — Право для получения сотрудников.
            - `EMPLOYEES_UPDATE` — Право для редактирования сотрудника.
            - `DEPARTMENTS` — Право для получения справочника отделов клиента.
            - `DEPARTMENTS_CREATE` — Право для создания элементов в справочнике отделов клиента.
            - `DEPARTMENTS_UPDATE` — Право для обновления элементов в справочнике отделов клиента.
            - `ROUTE_TEMPLATES_CREATE` — Право создания шаблона маршрута подписания.
            - `ROUTE_TEMPLATES_EDIT` — Право обновления шаблона маршрута подписания.
            - `CUSTOM_STRUCTURES` — Право на получение пользовательских справочников структур.
            - `CUSTOM_STRUCTURES_CREATE` — Право создания пользовательского справочника структур.
            - `CUSTOM_STRUCTURES_UPDATE` — Право редактировать пользовательский справочник структур.
          schema:
            type: string
            enum:
              - DOCUMENTS_CREATE
              - DOCUMENTS_UPDATE
              - NORMATIVE_ACTS
              - NORMATIVE_ACTS_SEND_TO_SIGNING
              - EMPLOYEES
              - EMPLOYEES_UPDATE
              - DEPARTMENTS
              - DEPARTMENTS_CREATE
              - DEPARTMENTS_UPDATE
              - ROUTE_TEMPLATES_CREATE
              - ROUTE_TEMPLATES_EDIT
              - CUSTOM_STRUCTURES
              - CUSTOM_STRUCTURES_CREATE
              - CUSTOM_STRUCTURES_UPDATE
        - name: dataSet
          in: query
          description: |
            Набор полей, которые необходимо вернуть в ответе.
            - `FULL` - полный ответ.
            - `SNILS_AND_IDS` - Облегченный ответ, содержащий только следующие поля:
              - `id`
              - `clientUser`
              - `externalId`
              - `legalEntity`
              - `personalDocuments` (только `type: SNILS`)
          schema:
            type: string
            enum:
              - FULL
              - SNILS_AND_IDS
            default: FULL
            x-nullable: true
      requestBody:
        description: Тело запроса EmployeeRegistryFilterDTO
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/EmployeeRegistryFilterDTO'
      responses:
        '200':
          description: Успешная операция.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    type: boolean
                  employees:
                    type: array
                    description: Список данных сотрудников.
                    items:
                      $ref: '#/components/schemas/PaginatedEmployeeWithFunctionalManagerDTO'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '429':
          $ref: '#/components/responses/TooManyRequests'
  /api/v1/clients/{clientId}/employeesByExternalId/{employeeExternalId}/restore:
    put:
      tags:
        - employees
      summary: Восстановить по внешнему ID
      operationId: employeeRestoreEmployeeByExternalId
      security:
        - SessionCookieAuth: []
        - UserApiTokenAuth: []
        - MasterTokenAuth: []
      description: |
        ### Описание метода

        > **⚠️ Будьте осторожны!**
        >
        > Методы PUT перезаписывают запись целиком: любые непереданные поля считаются null и затирают данные в БД.
        > Поэтому при обновлении нужно указывать все поля.
         Выполняет операцию восстановления сотрудника по внешнему ID.

        ### Валидации запроса

        - Тело запроса задано.
        - Клиент существует, не удалён, и к нему относится пользователь, выполняющий операцию.
        - ID сотрудника задан корректно.
        - Сотрудник с заданным ID существует.
        - Если версия сотрудника указана, то она корректна.
        - Сотрудник с заданным ID уволен, либо существует активная задача отложенного увольнения.
        - Сотрудник относится к заданному пользователю клиента.
        - У пользователя клиента есть право на восстановление сотрудника на уровне пользователя клиента или на уровне сотрудника клиента.
        - Проверяет, что ID сотрудника задан корректно и возвращает сотрудника, если он существует.
        - ID клиента соответствует формату UUID.
        - По заданному ID клиента существует клиент.
        - Пользователь, выполняющий операцию, относится к клиенту.
        - Проверяет, что указана корректная версия данных.
        - Проверяет, что данный сотрудник уволен, либо существует активная задача отложенного увольнения.
        - Проверяет, что заданный сотрудник относится к заданному клиенту.
        - Текущий пользователь клиента имеет право на выполнение операции на уровне пользователя или сотрудника.
        - Текущий пользователь клиента имеет доступ к юрлицу сотрудника.
        - Текущий пользователь клиента имеет доступ к отделу сотрудника.
        - Проверяет, что текущий пользователь относится к заданному клиенту и возвращает пользователя клиента, если он существует.
        - Проверяет, что ID клиента, заданный в виде строки, соответствует формату, и возвращает типизированный ID клиента.
        - Проверяет существование клиента по заданному ID и возвращает клиента, если он существует.
        - Проверяет, что клиент не удален.
        - Проверяет, есть ли у пользователя клиента с заданным ID заданное право и возвращает кэш наличия прав у пользователя клиента.
        - Проверяет, есть ли у пользователя клиента с заданным ID заданное право, учитывая замещения.
      parameters:
        - $ref: '#/components/parameters/FormatParameter'
        - name: Impersonated-User-Id
          description: Идентификатор пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            format: uuid
        - name: Impersonated-User-Id-Type
          description: Тип идентификатора пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            enum:
              - HR_LINK_ID
              - SNILS
              - EXTERNAL_ID
        - name: Impersonated-User-Id-External-System-Type
          description: |
            Идентификатор внешней системы при аутентификации через мастер-токен.
          in: header
          schema:
            type: string
        - name: clientId
          in: path
          required: true
          description: Идентификатор клиента.
          schema:
            type: string
            format: uuid
        - name: employeeExternalId
          in: path
          required: true
          description: Идентификатор сотрудника во внешней системе.
          schema:
            type: string
      requestBody:
        description: Тело запроса VersionDTO
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/VersionDTO'
      responses:
        '200':
          description: Успешная операция.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    type: boolean
                  employee:
                    $ref: '#/components/schemas/PaginatedEmployeeDTO'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '429':
          $ref: '#/components/responses/TooManyRequests'
  /api/v1/clients/{clientId}/employeePositions:
    get:
      tags:
        - positions
      summary: Получить должности
      operationId: employeePositionGetEmployeePositions
      security:
        - SessionCookieAuth: []
        - UserApiTokenAuth: []
        - MasterTokenAuth: []
      description: |
        ### Описание метода

        Возвращает список всех должностей сотрудников.

        ### Валидации запроса

        - Клиент существует, не удалён, и к нему относится пользователь, выполняющий операцию.
        - ID клиента соответствует формату UUID.
        - По заданному ID клиента существует клиент.
        - Пользователь, выполняющий операцию, относится к клиенту.
        - Пользователь клиента имеет право EMPLOYEE_POSITIONS.
        - Пользователь клиента имеет право EMPLOYEE_POSITIONS на уровне одного из юрлиц.
        - Проверяет, что текущий пользователь относится к заданному клиенту и возвращает пользователя клиента, если он существует.
        - Проверяет, что ID клиента, заданный в виде строки, соответствует формату, и возвращает типизированный ID клиента.
        - Проверяет существование клиента по заданному ID и возвращает клиента, если он существует.
        - Проверяет, что клиент не удален.
      parameters:
        - $ref: '#/components/parameters/FormatParameter'
        - name: Impersonated-User-Id
          description: Идентификатор пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            format: uuid
        - name: Impersonated-User-Id-Type
          description: Тип идентификатора пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            enum:
              - HR_LINK_ID
              - SNILS
              - EXTERNAL_ID
        - name: Impersonated-User-Id-External-System-Type
          description: |
            Идентификатор внешней системы при аутентификации через мастер-токен.
          in: header
          schema:
            type: string
        - name: clientId
          in: path
          required: true
          description: Идентификатор клиента.
          schema:
            type: string
            format: uuid
      responses:
        '200':
          description: Успешная операция.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    type: boolean
                  employeePositions:
                    type: array
                    description: Список данных всех должностей сотрудников. Данные в ответе зависят от профиля пользователя. Для Сотрудника - EmployeePositionForEmployeeAccessDTO; для Кадровика - EmployeePositionV2DTO
                    items:
                      $ref: '#/components/schemas/EmployeePositionForRegistry'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '429':
          $ref: '#/components/responses/TooManyRequests'
  /api/v1/clients/{clientId}/employeePositions/{employeePositionExternalId}/externalId:
    get:
      tags:
        - positions
      summary: Получить должность по внешнему ID
      operationId: employeePositionGetEmployeePositionByExternalId
      security:
        - SessionCookieAuth: []
        - UserApiTokenAuth: []
        - MasterTokenAuth: []
      description: |
        ### Описание метода

        Возвращает должность сотрудника по ID должности во внешней системе.

        ### Валидации запроса

        - Клиент существует, не удалён, и к нему относится пользователь, выполняющий операцию.
        - Пользователь, выполняющий операцию, имеет права для получения данных должностей сотрудников.
        - По указанному ID должности во внешней системе в клиенте существует должность сотрудника.
        - ID клиента соответствует формату UUID.
        - По заданному ID клиента существует клиент.
        - Пользователь, выполняющий операцию, относится к клиенту.
        - Пользователь клиента имеет право EMPLOYEE_POSITIONS.
        - Пользователь клиента имеет право EMPLOYEE_POSITIONS на уровне одного из юрлиц.
        - Проверяет существование должности сотрудника по заданному ID во внешней системе и возвращает должность сотрудника в случае, если она существует.
        - Проверяет, что текущий пользователь относится к заданному клиенту и возвращает пользователя клиента, если он существует.
        - Проверяет, что ID клиента, заданный в виде строки, соответствует формату, и возвращает типизированный ID клиента.
        - Проверяет существование клиента по заданному ID и возвращает клиента, если он существует.
        - Проверяет, что клиент не удален.
      parameters:
        - $ref: '#/components/parameters/FormatParameter'
        - name: Impersonated-User-Id
          description: Идентификатор пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            format: uuid
        - name: Impersonated-User-Id-Type
          description: Тип идентификатора пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            enum:
              - HR_LINK_ID
              - SNILS
              - EXTERNAL_ID
        - name: Impersonated-User-Id-External-System-Type
          description: |
            Идентификатор внешней системы при аутентификации через мастер-токен.
          in: header
          schema:
            type: string
        - name: clientId
          in: path
          required: true
          description: Идентификатор клиента.
          schema:
            type: string
            format: uuid
        - name: employeePositionExternalId
          in: path
          required: true
          description: Идентификатор должности сотрудника во внешней системе.
          schema:
            type: string
      responses:
        '200':
          description: Успешная операция.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    type: boolean
                  employeePosition:
                    type: array
                    description: Список данных всех должностей сотрудников.
                    items:
                      $ref: '#/components/schemas/EmployeePositionV2DTO'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '429':
          $ref: '#/components/responses/TooManyRequests'
  /api/v1/clients/{clientId}/exportTasks:
    post:
      tags:
        - export
      summary: Создать выгрузку XLS
      operationId: exportTaskCreateTask
      security:
        - SessionCookieAuth: []
        - UserApiTokenAuth: []
        - MasterTokenAuth: []
      description: |
        ### Описание метода

        Создаёт новую задачу асинхронной выгрузки данных.

        ### Валидации запроса

        - Тело запроса задано.
        - В теле запроса задан тип данных задачи асинхронной выгрузки данных.
        - Клиент существует, не удалён, и к нему относится пользователь, выполняющий операцию.
        - Текущий пользователь клиента имеет возможность создавать задачи в текущий момент.
        - Данные для заданного типа данных задачи корректны.
        - Проверяет, что тип данных для асинхронной выгрузки задан.
        - ID клиента соответствует формату UUID.
        - По заданному ID клиента существует клиент.
        - Пользователь, выполняющий операцию, относится к клиенту.
        - Проверяет, что пользователь клиента имеет возможность создавать задачи в текущий момент.
        - Выполняет валидацию данных для асинхронной выгрузки в зависимости от типа данных.
        - Проверяет, что текущий пользователь относится к заданному клиенту и возвращает пользователя клиента, если он существует.
        - Проверяет, что ID клиента, заданный в виде строки, соответствует формату, и возвращает типизированный ID клиента.
        - Проверяет существование клиента по заданному ID и возвращает клиента, если он существует.
        - Проверяет, что клиент не удален.
      parameters:
        - $ref: '#/components/parameters/FormatParameter'
        - name: Impersonated-User-Id
          description: Идентификатор пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            format: uuid
        - name: Impersonated-User-Id-Type
          description: Тип идентификатора пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            enum:
              - HR_LINK_ID
              - SNILS
              - EXTERNAL_ID
        - name: Impersonated-User-Id-External-System-Type
          description: |
            Идентификатор внешней системы при аутентификации через мастер-токен.
          in: header
          schema:
            type: string
        - name: clientId
          in: path
          required: true
          description: Идентификатор клиента.
          schema:
            type: string
            format: uuid
      requestBody:
        description: Тело запроса CreateExportTaskDTO
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateExportTaskDTO'
      responses:
        '200':
          description: Успешная операция.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    type: boolean
                  exportTask:
                    type: object
                    properties:
                      id:
                        description: Идентификатор задачи асинхронной выгрузки xls отчёта.
                        type: string
                        format: uuid
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '429':
          $ref: '#/components/responses/TooManyRequests'
    get:
      tags:
        - export
      summary: Статусы выгрузок
      operationId: exportTaskGetTasksStatuses
      security:
        - SessionCookieAuth: []
        - UserApiTokenAuth: []
        - MasterTokenAuth: []
      description: |
        ### Описание метода

        Возвращает данные о статусах задач асинхронной выгрузки данных.

        ### Валидации запроса

        - Клиент существует, не удалён, и к нему относится пользователь, выполняющий операцию.
        - Параметры пагинации заданы корректно.
        - ID клиента соответствует формату UUID.
        - По заданному ID клиента существует клиент.
        - Пользователь, выполняющий операцию, относится к клиенту.
        - Проверяет, что параметры пагинации заданы корректно.
        - Проверяет лимит и смещение пагинации.
        - Проверяет, что текущий пользователь относится к заданному клиенту и возвращает пользователя клиента, если он существует.
        - Проверяет, что ID клиента, заданный в виде строки, соответствует формату, и возвращает типизированный ID клиента.
        - Проверяет существование клиента по заданному ID и возвращает клиента, если он существует.
        - Проверяет, что клиент не удален.
        - Проверяет, что количество элементов, которое нужно пропустить при выборке с пагинацией, корректно.
        - Проверяет, что заданное количество возвращаемых при запросе элементов корректно.
      parameters:
        - $ref: '#/components/parameters/FormatParameter'
        - name: Impersonated-User-Id
          description: Идентификатор пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            format: uuid
        - name: Impersonated-User-Id-Type
          description: Тип идентификатора пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            enum:
              - HR_LINK_ID
              - SNILS
              - EXTERNAL_ID
        - name: Impersonated-User-Id-External-System-Type
          description: |
            Идентификатор внешней системы при аутентификации через мастер-токен.
          in: header
          schema:
            type: string
        - name: clientId
          in: path
          required: true
          description: Идентификатор клиента.
          schema:
            type: string
            format: uuid
        - name: limit
          in: query
          description: |
            Количество возвращаемых строк.
            Максимальное количество задается в конфигурации приложения.
          schema:
            type: integer
            default: 50
            minimum: 0
            x-nullable: true
        - name: offset
          in: query
          description: Количество строк, которое нужно пропустить при выборке.
          schema:
            type: integer
            default: 0
            minimum: 0
            x-nullable: true
      responses:
        '200':
          description: Успешная операция.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    type: boolean
                  exportTasks:
                    type: array
                    description: Список данных задач асинхронной выгрузки данных.
                    items:
                      $ref: '#/components/schemas/GetExportTasksStatusesResponseDTO'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '429':
          $ref: '#/components/responses/TooManyRequests'
  /api/v1/clients/{clientId}/exportTasks/{taskId}:
    get:
      tags:
        - export
      summary: Статус выгрузки
      operationId: exportTaskGetTaskStatus
      security:
        - SessionCookieAuth: []
        - UserApiTokenAuth: []
        - MasterTokenAuth: []
      description: |
        ### Описание метода

        Возвращает статус задачи асинхронной выгрузки данных.

        ### Валидации запроса

        - ID задачи асинхронной выгрузки данных соответствует формату UUID.
        - Клиент существует, не удалён, и к нему относится пользователь, выполняющий операцию.
        - В клиенте существует задача асинхронной выгрузки данных по заданному ID.
        - Текущий пользователь имеет право получать статус заданной задачи асинхронной выгрузки данных.
        - Проверяет, что ID задачи асинхронной выгрузки данных в виде строки соответствует формату UUID, и возвращает типизированный ID задачи асинхронной выгрузки данных.
        - ID клиента соответствует формату UUID.
        - По заданному ID клиента существует клиент.
        - Пользователь, выполняющий операцию, относится к клиенту.
        - Проверяет существование задачи асинхронной выгрузки данных по заданному ID в заданном клиенте.
        - Проверяет, что пользователь клиента с заданным ID имеет право получать статус заданной задачи асинхронной выгрузки данных.
        - Проверяет, что текущий пользователь относится к заданному клиенту и возвращает пользователя клиента, если он существует.
        - Проверяет, что ID клиента, заданный в виде строки, соответствует формату, и возвращает типизированный ID клиента.
        - Проверяет существование клиента по заданному ID и возвращает клиента, если он существует.
        - Проверяет, что клиент не удален.
      parameters:
        - $ref: '#/components/parameters/FormatParameter'
        - name: Impersonated-User-Id
          description: Идентификатор пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            format: uuid
        - name: Impersonated-User-Id-Type
          description: Тип идентификатора пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            enum:
              - HR_LINK_ID
              - SNILS
              - EXTERNAL_ID
        - name: Impersonated-User-Id-External-System-Type
          description: |
            Идентификатор внешней системы при аутентификации через мастер-токен.
          in: header
          schema:
            type: string
        - name: clientId
          in: path
          required: true
          description: Идентификатор клиента.
          schema:
            type: string
            format: uuid
        - name: taskId
          in: path
          required: true
          description: Идентификатор задачи в HRlink.
          schema:
            type: string
            format: uuid
      responses:
        '200':
          description: Успешная операция.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    type: boolean
                  exportTask:
                    $ref: '#/components/schemas/ExportTaskStatusDTO'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '429':
          $ref: '#/components/responses/TooManyRequests'
  /api/v1/clients/{clientId}/exportTasks/{taskId}/result:
    get:
      tags:
        - export
      summary: Скачать результат выгрузки (XLS)
      operationId: exportTaskGetResultFile
      security:
        - SessionCookieAuth: []
        - UserApiTokenAuth: []
        - MasterTokenAuth: []
      description: |
        ### Описание метода

        Возвращает редирект для скачивания файла c результатом асинхронной выгрузки данных.

        ### Валидации запроса

        - ID задачи асинхронной выгрузки данных соответствует формату UUID.
        - Клиент существует, не удалён, и к нему относится пользователь, выполняющий операцию.
        - В клиенте существует задача асинхронной выгрузки данных по заданному ID.
        - Текущий пользователь имеет право получать файл с результатом асинхронной выгрузки данных.
        - Задача асинхронной выгрузки данных находится в состоянии, корректном для получения результата.
        - Задача асинхронной выгрузки данных не является задачей выгрузки архивов документооборота.
      parameters:
        - $ref: '#/components/parameters/FormatParameter'
        - name: Impersonated-User-Id
          description: Идентификатор пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            format: uuid
        - name: Impersonated-User-Id-Type
          description: Тип идентификатора пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            enum:
              - HR_LINK_ID
              - SNILS
              - EXTERNAL_ID
        - name: Impersonated-User-Id-External-System-Type
          description: |
            Идентификатор внешней системы при аутентификации через мастер-токен.
          in: header
          schema:
            type: string
        - name: clientId
          in: path
          required: true
          description: Идентификатор клиента.
          schema:
            type: string
            format: uuid
        - name: taskId
          in: path
          required: true
          description: Идентификатор задачи в HRlink.
          schema:
            type: string
            format: uuid
      responses:
        '200':
          description: Этот код ответа не используется, при успехе выполнения метод всегда возвращает ответ с кодом 303.
        '303':
          description: |
            HTTP-заголовок `Location` будет содержать URL, по которому скачивается файл.<br/>
            ✍️ Postman и некоторые другие API-клиенты по умолчанию следуют редиректам и сразу скачивают файл, указанный в
            HTTP-заголовке `Location`. Это поведение настраивается на стороне клиента.
          headers:
            Location:
              schema:
                type: string
              description: URL, по которому скачивается файл
              example: https://host.hr-link.ru/api/v1/files?token=<<одноразовый_токен>>
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '429':
          $ref: '#/components/responses/TooManyRequests'
  /api/v1/clients/{clientId}/exportTasks/{taskId}/results/{resultPartId}:
    get:
      tags:
        - export
      summary: Скачать часть выгрузки
      operationId: exportTaskGetResultPartFileV1
      security:
        - SessionCookieAuth: []
        - UserApiTokenAuth: []
        - MasterTokenAuth: []
      description: |
        ### Описание метода

        В случае формирования больших выгрузок, итоговая выгрузка разбивается на части. Каждая часть выгрузки запрашивается
        отдельно, текущим методом. Для получения идентификатора файла воспользуйтесь методом
        [Получить статус задачи асинхронной выгрузки данных](export-task-get-task-status).

        ### Валидации запроса

        - ID задачи асинхронной выгрузки данных соответствует формату UUID.
        - Клиент существует, не удалён, и к нему относится пользователь, выполняющий операцию.
        - В клиенте существует задача асинхронной выгрузки данных по заданному ID.
        - Текущий пользователь имеет право получать файл с результатом асинхронной выгрузки данных.
        - Задача асинхронной выгрузки данных находится в состоянии, корректном для получения результата.
        - ID результата задачи асинхронной выгрузки данных соответствует формату UUID.
        - Существует результат задачи асинхронной выгрузки данных по заданному ID.
        - Результат задачи выгрузки данных относится к заданной задаче.
        - Проверяет, что ID результата задачи асинхронной выгрузки данных в виде строки соответствует формату UUID, и возвращает типизированный ID результата задачи асинхронной выгрузки данных.
        - Проверяет существование результата задачи асинхронной выгрузки данных.
        - Проверяет, что результат задачи выгрузки данных относится к заданной задаче.
      parameters:
        - $ref: '#/components/parameters/FormatParameter'
        - name: Impersonated-User-Id
          description: Идентификатор пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            format: uuid
        - name: Impersonated-User-Id-Type
          description: Тип идентификатора пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            enum:
              - HR_LINK_ID
              - SNILS
              - EXTERNAL_ID
        - name: Impersonated-User-Id-External-System-Type
          description: |
            Идентификатор внешней системы при аутентификации через мастер-токен.
          in: header
          schema:
            type: string
        - name: clientId
          in: path
          required: true
          description: Идентификатор клиента.
          schema:
            type: string
            format: uuid
        - name: taskId
          in: path
          required: true
          description: Идентификатор задачи в HRlink.
          schema:
            type: string
            format: uuid
        - name: resultPartId
          in: path
          required: true
          description: Идентификатор части результата асинхронной выгрузки.
          schema:
            type: string
            format: uuid
      responses:
        '200':
          description: Этот код ответа не используется, при успехе выполнения метод всегда возвращает ответ с кодом 303.
        '303':
          description: |
            HTTP-заголовок `Location` будет содержать URL, по которому скачивается файл.<br/>
            ✍️ Postman и некоторые другие API-клиенты по умолчанию следуют редиректам и сразу скачивают файл, указанный в
            HTTP-заголовке `Location`. Это поведение настраивается на стороне клиента.
          headers:
            Location:
              schema:
                type: string
              description: URL, по которому скачивается файл
              example: https://host.hr-link.ru/api/v1/files?token=<<одноразовый_токен>>
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '429':
          $ref: '#/components/responses/TooManyRequests'
  /api/v1/clients/{clientId}/importTasks:
    post:
      tags:
        - import
      summary: Создать импорт из файла
      operationId: importTaskCreateImportTask
      security:
        - SessionCookieAuth: []
        - UserApiTokenAuth: []
        - MasterTokenAuth: []
      description: |
        ### Описание метода

        Метод позволяет создать задачу на импорт данных. Импорт из файла будет выполняться асинхронно. В связи с этим в качестве
        успешного результата будет возвращаться номер задачи на импорт.
        Результат выполнения задачи можно проверить методом `GET /api/v1/clients/{clientId}/importTasks/{taskId}`

        ### Валидации запроса

        - Тело запроса задано корректно.
        - Клиент существует, не удалён, и к нему относится пользователь, выполняющий операцию.
        - Файл, из которого нужно загрузить данные, существует.
        - Файл, из которого нужно загрузить данные, имеет одно из допустимых расширений.
        - Файл, из которого нужно загрузить данные, не превышает допустимый максимальный размер в байтах.
        - Текущий пользователь клиента имеет возможность создавать задачи на загрузку данных из файла.
        - Данные для заданного типа данных задачи корректны.
        - Тело запроса задано.
        - ID файла для асинхронной загрузки задан.
        - Тип данных асинхронной загрузки задан.
        - ID клиента соответствует формату UUID.
        - По заданному ID клиента существует клиент.
        - Пользователь, выполняющий операцию, относится к клиенту.
        - Проверяет, что файл с заданным ID существует.
        - Проверяет, что файл является файлом с одним из указанных расширений.
        - Проверяет, что размер файла в байтах не превышает максимальное допустимое значение.
        - Количество активных задач, созданных пользователем клиента, не превышает максимальное допустимое значение.
        - Пользователь с указанным ID является создателем файла, из которого нужно загрузить данные.
        - Выполняет валидацию данных для асинхронной загрузки в зависимости от типа данных.
        - Проверяет, что ID файла для асинхронной загрузки задан.
        - Проверяет, что тип данных для асинхронной загрузки задан.
        - Проверяет, что текущий пользователь относится к заданному клиенту и возвращает пользователя клиента, если он существует.
        - Проверяет, что ID клиента, заданный в виде строки, соответствует формату, и возвращает типизированный ID клиента.
        - Проверяет существование клиента по заданному ID и возвращает клиента, если он существует.
        - Проверяет, что клиент не удален.
        - Проверяет, что количество активных задач, созданных пользователем клиента, не превышает допустимый максимум.
        - Проверяет, что пользователь с указанным ID является создателем файла, из которого нужно загрузить данные.
      parameters:
        - $ref: '#/components/parameters/FormatParameter'
        - name: Impersonated-User-Id
          description: Идентификатор пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            format: uuid
        - name: Impersonated-User-Id-Type
          description: Тип идентификатора пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            enum:
              - HR_LINK_ID
              - SNILS
              - EXTERNAL_ID
        - name: Impersonated-User-Id-External-System-Type
          description: |
            Идентификатор внешней системы при аутентификации через мастер-токен.
          in: header
          schema:
            type: string
        - name: clientId
          in: path
          required: true
          description: Идентификатор клиента.
          schema:
            type: string
            format: uuid
      requestBody:
        description: Тело запроса CreateImportTaskRequestDTO
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateImportTaskRequestDTO'
      responses:
        '200':
          description: Успешная операция.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    type: boolean
                  task:
                    $ref: '#/components/schemas/CreateImportTaskResponseDTO'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '429':
          $ref: '#/components/responses/TooManyRequests'
  /api/v1/clients/{clientId}/importTasks/{taskId}:
    get:
      tags:
        - import
      summary: Статус импорта
      operationId: importTaskGetTaskStatus
      security:
        - SessionCookieAuth: []
        - UserApiTokenAuth: []
        - MasterTokenAuth: []
      description: |
        ### Описание метода

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

        ### Валидации запроса

        - ID задачи асинхронной загрузки данных соответствует формату UUID.
        - Клиент существует, не удалён, и к нему относится пользователь, выполняющий операцию.
        - В клиенте существует задача асинхронной загрузки данных по заданному ID.
        - Текущий пользователь имеет право получать статус заданной задачи асинхронной загрузки данных.
        - Проверяет, что ID задачи асинхронной загрузки данных в виде строки соответствует формату UUID, и возвращает типизированный ID задачи асинхронной загрузки данных.
        - ID клиента соответствует формату UUID.
        - По заданному ID клиента существует клиент.
        - Пользователь, выполняющий операцию, относится к клиенту.
        - Проверяет существование задачи асинхронной загрузки данных по заданному ID в заданном клиенте.
        - Проверяет, что пользователь клиента с заданным ID имеет право получать статус заданной задачи асинхронной загрузки данных.
        - Проверяет, что текущий пользователь относится к заданному клиенту и возвращает пользователя клиента, если он существует.
        - Проверяет, что ID клиента, заданный в виде строки, соответствует формату, и возвращает типизированный ID клиента.
        - Проверяет существование клиента по заданному ID и возвращает клиента, если он существует.
        - Проверяет, что клиент не удален.
      parameters:
        - $ref: '#/components/parameters/FormatParameter'
        - name: Impersonated-User-Id
          description: Идентификатор пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            format: uuid
        - name: Impersonated-User-Id-Type
          description: Тип идентификатора пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            enum:
              - HR_LINK_ID
              - SNILS
              - EXTERNAL_ID
        - name: Impersonated-User-Id-External-System-Type
          description: |
            Идентификатор внешней системы при аутентификации через мастер-токен.
          in: header
          schema:
            type: string
        - name: clientId
          in: path
          required: true
          description: Идентификатор клиента.
          schema:
            type: string
            format: uuid
        - name: taskId
          in: path
          required: true
          description: Идентификатор задачи в HRlink.
          schema:
            type: string
            format: uuid
      responses:
        '200':
          description: Успешная операция.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    type: boolean
                  task:
                    $ref: '#/components/schemas/ImportTaskStatusDTO'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '429':
          $ref: '#/components/responses/TooManyRequests'
  /api/v1/clients/{clientId}/legalEntities:
    get:
      tags:
        - legalEntities
      summary: Получить юрлица
      operationId: legalEntityGetLegalEntities
      security:
        - SessionCookieAuth: []
        - UserApiTokenAuth: []
        - MasterTokenAuth: []
      description: |
        ### Описание метода

        Возвращает данные о всех юрлицах клиента.

        ### Валидации запроса

        - Если задано контекстное право, то оно должно существовать и соответствовать контексту получения данных о юрлицах.
        - Клиент существует, не удалён, и к нему относится пользователь, выполняющий операцию.
        - Пользователь клиента имеет необходимые права для получения данных юрлиц.
        - Проверяет, что заданное контекстное право существует и соответствует контексту получения данных о юрлицах.
        - ID клиента соответствует формату UUID.
        - По заданному ID клиента существует клиент.
        - Пользователь, выполняющий операцию, относится к клиенту.
        - Проверяет, есть ли у пользователя клиента с заданным ID заданное право и возвращает кэш наличия прав у пользователя клиента.
        - Проверяет, что заданное контекстное право существует.
        - Проверяет, что текущий пользователь относится к заданному клиенту и возвращает пользователя клиента, если он существует.
        - Проверяет, что ID клиента, заданный в виде строки, соответствует формату, и возвращает типизированный ID клиента.
        - Проверяет существование клиента по заданному ID и возвращает клиента, если он существует.
        - Проверяет, что клиент не удален.
      parameters:
        - $ref: '#/components/parameters/FormatParameter'
        - name: Impersonated-User-Id
          description: Идентификатор пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            format: uuid
        - name: Impersonated-User-Id-Type
          description: Тип идентификатора пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            enum:
              - HR_LINK_ID
              - SNILS
              - EXTERNAL_ID
        - name: Impersonated-User-Id-External-System-Type
          description: |
            Идентификатор внешней системы при аутентификации через мастер-токен.
          in: header
          schema:
            type: string
        - name: clientId
          in: path
          required: true
          description: Идентификатор клиента.
          schema:
            type: string
            format: uuid
        - name: permissionContext
          in: query
          description: |
            Контекстное право, , в контексте которого выполняется операция.
            - `DOCUMENTS_CREATE` — Право для создания документов.
            - `DOCUMENTS_UPDATE` — Право для обновления документов.
            - `NORMATIVE_ACTS` — Право для получения нормативных актов.
            - `NORMATIVE_ACTS_CREATE` — Право для создания нормативных актов.
            - `NORMATIVE_ACTS_UPDATE` — Право для обновления нормативных актов.
            - `NORMATIVE_ACTS_SEND_TO_SIGNING` — Право для отправки нормативных актов на подписание.
            - `NORMATIVE_ACTS_DELETE` — Право для удаления нормативных актов.
            - `APPLICATION_GROUPS` — Право для получения групп заявлений.
            - `EMPLOYEES` — Право для получения сотрудников.
            - `EMPLOYEES_CREATE` — Право для создания сотрудника.
            - `LEGAL_ENTITIES` — Право для получения справочника юрлиц.
            - `LEGAL_ENTITIES_CREATE` — Право для создания юрлиц.
            - `LEGAL_ENTITIES_UPDATE` — Право для редактирования юрлиц.
            - `DEPARTMENTS_CREATE` — Право для создания элементов в справочнике отделов клиента.
            - `DEPARTMENTS_UPDATE` — Право для обновления элементов в справочнике отделов клиента.
            - `APPLICATION_TYPES` — Право для получения справочника типов заявлений.
            - `APPLICATION_TYPES_CREATE` — Право для создания типов заявлений.
            - `APPLICATION_TYPES_UPDATE` — Право для обновления типов заявлений.
            - `ROUTE_TEMPLATES_CREATE` — Право создания шаблона маршрута подписания.
            - `ROUTE_TEMPLATES_EDIT` — Право обновления шаблона маршрута подписания.
            - `NEWS_CREATE` — Право на создание новости.
            - `NEWS_UPDATE` — Право на обновление новости.
            - `ATTORNEYS` — Право для получения МЧД.
            - `ATTORNEYS_CREATE` — Право на создание МЧД.
            - `ATTORNEYS_UPDATE` — Право на редактирование МЧД.
            - `SHOWCASE_EDIT` — Право на редактирование витрины сервисов.
            - `HR_CONTACTS_CREATE` — Право на создание контакта.
            - `HR_CONTACTS_UPDATE` — Право на редактирование контакта.
            - `ROUTE_TEMPLATES` — Право для группировки прав, связанных с шаблонами маршрутов подписания.
            - `DEPARTMENTS` — Право для получения справочника отделов клиента.
            - `UPDATE_PERMITTED_CLIENT_DEPARTMENTS` — Право обновлять список доступных для сотрудника типов документов.
          schema:
            type: string
            enum:
              - DOCUMENTS
              - DOCUMENTS_CREATE
              - DOCUMENTS_UPDATE
              - DOCUMENTS_STATISTICS
              - NORMATIVE_ACTS
              - NORMATIVE_ACTS_CREATE
              - NORMATIVE_ACTS_UPDATE
              - NORMATIVE_ACTS_SEND_TO_SIGNING
              - NORMATIVE_ACTS_DELETE
              - APPLICATION_GROUPS
              - EMPLOYEES
              - EMPLOYEES_CREATE
              - EMPLOYEES_UPDATE
              - LEGAL_ENTITIES
              - LEGAL_ENTITIES_CREATE
              - LEGAL_ENTITIES_UPDATE
              - DEPARTMENTS_CREATE
              - DEPARTMENTS_UPDATE
              - APPLICATION_TYPES
              - APPLICATION_TYPES_CREATE
              - APPLICATION_TYPES_UPDATE
              - APPLICATION_TYPES_CHANGE_ORDER
              - ROUTE_TEMPLATES_CREATE
              - ROUTE_TEMPLATES_EDIT
              - NEWS_CREATE
              - NEWS_UPDATE
              - ATTORNEYS
              - ATTORNEYS_CREATE
              - ATTORNEYS_UPDATE
              - SHOWCASE_EDIT
              - HR_CONTACTS_CREATE
              - HR_CONTACTS_UPDATE
              - ROUTE_TEMPLATES
              - DEPARTMENTS
              - UPDATE_PERMITTED_CLIENT_DEPARTMENTS
      responses:
        '200':
          description: Успешная операция.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    type: boolean
                  legalEntities:
                    type: array
                    description: Список данных юрлиц.
                    items:
                      $ref: '#/components/schemas/LegalEntityV4DTO'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '429':
          $ref: '#/components/responses/TooManyRequests'
  /api/v1/clients/{clientId}/legalEntities/{legalEntityExternalId}/externalId:
    get:
      tags:
        - legalEntities
      summary: Получить юрлицо по внешнему ID
      operationId: legalEntityGetLegalEntityByExternalId
      security:
        - SessionCookieAuth: []
        - UserApiTokenAuth: []
        - MasterTokenAuth: []
      description: |
        ### Описание метода

        Возвращает данные юрлица клиента по ID юрлица во внешней системе.

        ### Валидации запроса

        - Клиент существует, не удалён, и к нему относится пользователь, выполняющий операцию.
        - По указанному ID во внешней системе в клиенте существует юрлицо.
        - Пользователь клиента имеет право на получение данных юрлица.
        - ID клиента соответствует формату UUID.
        - По заданному ID клиента существует клиент.
        - Пользователь, выполняющий операцию, относится к клиенту.
        - Проверяет существование юрлица клиента по заданному ID во внешней системе и возвращает юрлицо клиента, если оно существует.
        - Пользователь клиента имеет право `LEGAL_ENTITIES`.
        - Пользователь клиента имеет право `LEGAL_ENTITIES` на уровне одного из юрлиц.
        - Проверяет, что текущий пользователь относится к заданному клиенту и возвращает пользователя клиента, если он существует.
        - Проверяет, что ID клиента, заданный в виде строки, соответствует формату, и возвращает типизированный ID клиента.
        - Проверяет существование клиента по заданному ID и возвращает клиента, если он существует.
        - Проверяет, что клиент не удален.
      parameters:
        - $ref: '#/components/parameters/FormatParameter'
        - name: Impersonated-User-Id
          description: Идентификатор пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            format: uuid
        - name: Impersonated-User-Id-Type
          description: Тип идентификатора пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            enum:
              - HR_LINK_ID
              - SNILS
              - EXTERNAL_ID
        - name: Impersonated-User-Id-External-System-Type
          description: |
            Идентификатор внешней системы при аутентификации через мастер-токен.
          in: header
          schema:
            type: string
        - name: clientId
          in: path
          required: true
          description: Идентификатор клиента.
          schema:
            type: string
            format: uuid
        - name: legalEntityExternalId
          in: path
          required: true
          description: Идентификатор юридического лица во внешней системе.
          schema:
            type: string
      responses:
        '200':
          description: Успешная операция.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    type: boolean
                  legalEntity:
                    $ref: '#/components/schemas/LegalEntityV4DTO'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '429':
          $ref: '#/components/responses/TooManyRequests'
  /api/v1/mintrudDocumentTypes:
    get:
      tags:
        - mintrud
      summary: Типы документов Минтруда
      operationId: mintrudDocumentTypeGetMintrudDocumentTypes
      security:
        - SessionCookieAuth: []
        - UserApiTokenAuth: []
        - MasterTokenAuth: []
      description: |
        ### Описание метода

        Возвращает справочник типов документов Минтруда.

        ### Валидации запроса

        Дополнительных валидаций запроса нет.
      parameters:
        - $ref: '#/components/parameters/FormatParameter'
        - name: Impersonated-User-Id
          description: Идентификатор пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            format: uuid
        - name: Impersonated-User-Id-Type
          description: Тип идентификатора пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            enum:
              - HR_LINK_ID
              - SNILS
              - EXTERNAL_ID
        - name: Impersonated-User-Id-External-System-Type
          description: |
            Идентификатор внешней системы при аутентификации через мастер-токен.
          in: header
          schema:
            type: string
      responses:
        '200':
          description: Успешная операция.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    type: boolean
                  mintrudDocumentTypes:
                    type: array
                    description: справочник типов документов Минтруда.
                    items:
                      $ref: '#/components/schemas/MintrudDocumentTypeDTO'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '429':
          $ref: '#/components/responses/TooManyRequests'
  /api/v1/clients/{clientId}/news:
    post:
      tags:
        - news
      summary: Создать новость
      operationId: newsCreateNews
      security:
        - SessionCookieAuth: []
        - UserApiTokenAuth: []
        - MasterTokenAuth: []
      description: |
        ### Описание метода

        Создаёт новость и возвращает данные созданной новости.

        ### Валидации запроса

        - У тенанта есть лицензия на функционал новостей.
        - Клиент существует, не удалён, и к нему относится пользователь, выполняющий операцию.
        - Пользователь клиента имеет право `NEWS_CREATE`.
        - Если заданы видимости новости, то заданы корректно.
        - Если задан ID изображения новости, то изображение по нему корректное.
        - Проверяет, что у тенанта есть лицензия на функционал новостей.
        - ID клиента соответствует формату UUID.
        - По заданному ID клиента существует клиент.
        - Пользователь, выполняющий операцию, относится к клиенту.
        - Проверяет, есть ли у пользователя клиента с заданным ID заданное право на уровне пользователя клиента.
        - Юрлица существуют по заданным ID.
        - Отделы клиента существуют по заданным ID.
        - Должности сотрудников существуют по заданным ID.
        - Роли сотрудников существуют по заданным ID.
        - Файл существует.
        - У файла допустимый размер.
        - Файл является изображением.
        - Проверяет, что текущий пользователь относится к заданному клиенту и возвращает пользователя клиента, если он существует.
        - Проверяет, что ID клиента, заданный в виде строки, соответствует формату, и возвращает типизированный ID клиента.
        - Проверяет существование клиента по заданному ID и возвращает клиента, если он существует.
        - Проверяет, что клиент не удален.
        - Проверяет существование всех юрлиц клиента по заданному списку ID.
        - Проверяет, что отделы клиента существует по заданным ID и возвращает список отделов клиента, если они существуют.
        - Проверяет, что должности сотрудников существует по заданным ID и возвращает список должностей сотрудников, если они существуют.
        - Проверяет, что все UUID, заданные в списке, соответствуют существующим ролям сотрудников и возвращает список ролей сотрудников.
        - Проверяет, что файл с заданным ID существует.
        - Проверяет, что размер файла в байтах не превышает максимальное допустимое значение.
        - Проверяет, что файл является изображением.
        - Проверяет, что все UUID, заданные в списке, соответствуют существующим отделам клиента и возвращает список отделов клиента.
        - Проверяет, что все ID отделов клиента во внешней системе, заданные в списке, соответствуют существующим отделам клиента и возвращает список отделов клиента.
        - Проверяет, что все UUID, заданные в списке, соответствуют существующим должностям сотрудников и возвращает список должностей сотрудников.
        - Проверяет, что все ID должностей сотрудников во внешней системе, заданные в списке, соответствуют существующим должностям сотрудников, и возвращает список должностей сотрудников.
      parameters:
        - $ref: '#/components/parameters/FormatParameter'
        - name: Impersonated-User-Id
          description: Идентификатор пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            format: uuid
        - name: Impersonated-User-Id-Type
          description: Тип идентификатора пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            enum:
              - HR_LINK_ID
              - SNILS
              - EXTERNAL_ID
        - name: Impersonated-User-Id-External-System-Type
          description: |
            Идентификатор внешней системы при аутентификации через мастер-токен.
          in: header
          schema:
            type: string
        - name: clientId
          in: path
          required: true
          description: Идентификатор клиента.
          schema:
            type: string
            format: uuid
      requestBody:
        description: Тело запроса EkdNewsCreatingRequestDto
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/EkdNewsCreatingRequestDto'
      responses:
        '200':
          description: Успешная операция.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    type: boolean
                  news:
                    $ref: '#/components/schemas/EkdNewsFullResponseDto'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '429':
          $ref: '#/components/responses/TooManyRequests'
  /api/v1/clients/{clientId}/news/{newsId}/pin:
    put:
      tags:
        - news
      summary: Закрепить/открепить
      operationId: newsUpdateNewsPin
      security:
        - SessionCookieAuth: []
        - UserApiTokenAuth: []
        - MasterTokenAuth: []
      description: |
        ### Описание метода

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

        ### Валидации запроса

        - У тенанта есть лицензия на функционал новостей.
        - Клиент существует, не удалён, и к нему относится пользователь, выполняющий операцию.
        - Пользователь клиента имеет право `NEWS_UPDATE`.
        - Проверяет, что у тенанта есть лицензия на функционал новостей.
        - ID клиента соответствует формату UUID.
        - По заданному ID клиента существует клиент.
        - Пользователь, выполняющий операцию, относится к клиенту.
        - Проверяет, есть ли у пользователя клиента с заданным ID заданное право на уровне пользователя клиента.
        - Проверяет, что текущий пользователь относится к заданному клиенту и возвращает пользователя клиента, если он существует.
        - Проверяет, что ID клиента, заданный в виде строки, соответствует формату, и возвращает типизированный ID клиента.
        - Проверяет существование клиента по заданному ID и возвращает клиента, если он существует.
        - Проверяет, что клиент не удален.
      parameters:
        - $ref: '#/components/parameters/FormatParameter'
        - name: Impersonated-User-Id
          description: Идентификатор пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            format: uuid
        - name: Impersonated-User-Id-Type
          description: Тип идентификатора пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            enum:
              - HR_LINK_ID
              - SNILS
              - EXTERNAL_ID
        - name: Impersonated-User-Id-External-System-Type
          description: |
            Идентификатор внешней системы при аутентификации через мастер-токен.
          in: header
          schema:
            type: string
        - name: clientId
          in: path
          required: true
          description: Идентификатор клиента.
          schema:
            type: string
            format: uuid
        - name: newsId
          in: path
          required: true
          description: ID новости.
          schema:
            type: string
            format: uuid
      requestBody:
        description: Тело запроса NewsPinDto
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/NewsPinDto'
      responses:
        '200':
          description: Успешная операция.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    type: boolean
                  news:
                    $ref: '#/components/schemas/EkdNewsFullResponseDto'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '429':
          $ref: '#/components/responses/TooManyRequests'
  /api/v1/clients/{clientId}/news/{newsId}/views:
    put:
      tags:
        - news
      summary: Отметить просмотр
      operationId: newsUpdateNewsView
      security:
        - SessionCookieAuth: []
        - UserApiTokenAuth: []
        - MasterTokenAuth: []
      description: |
        ### Описание метода

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

        ### Валидации запроса

        - У тенанта есть лицензия на функционал новостей.
        - Клиент существует, не удалён, и к нему относится пользователь, выполняющий операцию.
        - Проверяет, что у тенанта есть лицензия на функционал новостей.
        - ID клиента соответствует формату UUID.
        - По заданному ID клиента существует клиент.
        - Пользователь, выполняющий операцию, относится к клиенту.
        - Проверяет, что текущий пользователь относится к заданному клиенту и возвращает пользователя клиента, если он существует.
        - Проверяет, что ID клиента, заданный в виде строки, соответствует формату, и возвращает типизированный ID клиента.
        - Проверяет существование клиента по заданному ID и возвращает клиента, если он существует.
        - Проверяет, что клиент не удален.
      parameters:
        - $ref: '#/components/parameters/FormatParameter'
        - name: Impersonated-User-Id
          description: Идентификатор пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            format: uuid
        - name: Impersonated-User-Id-Type
          description: Тип идентификатора пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            enum:
              - HR_LINK_ID
              - SNILS
              - EXTERNAL_ID
        - name: Impersonated-User-Id-External-System-Type
          description: |
            Идентификатор внешней системы при аутентификации через мастер-токен.
          in: header
          schema:
            type: string
        - name: clientId
          in: path
          required: true
          description: Идентификатор клиента.
          schema:
            type: string
            format: uuid
        - name: newsId
          in: path
          required: true
          description: ID новости.
          schema:
            type: string
            format: uuid
      responses:
        '200':
          description: Успешная операция.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    type: boolean
                  news:
                    $ref: '#/components/schemas/NewsViewCountResponseDto'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '429':
          $ref: '#/components/responses/TooManyRequests'
  /api/v1/clients/{clientId}/news/getEditorRegistry:
    post:
      tags:
        - news
      summary: Реестр новостей (редактор)
      operationId: newsGetNewsEditorRegistry
      security:
        - SessionCookieAuth: []
        - UserApiTokenAuth: []
        - MasterTokenAuth: []
      description: |
        ### Описание метода

        Возвращает реестр новостей для редактора клиента.

        ### Валидации запроса

        Дополнительных валидаций запроса нет.
      parameters:
        - $ref: '#/components/parameters/FormatParameter'
        - name: Impersonated-User-Id
          description: Идентификатор пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            format: uuid
        - name: Impersonated-User-Id-Type
          description: Тип идентификатора пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            enum:
              - HR_LINK_ID
              - SNILS
              - EXTERNAL_ID
        - name: Impersonated-User-Id-External-System-Type
          description: |
            Идентификатор внешней системы при аутентификации через мастер-токен.
          in: header
          schema:
            type: string
        - name: clientId
          in: path
          required: true
          description: Идентификатор клиента.
          schema:
            type: string
            format: uuid
      requestBody:
        description: Тело запроса NewsEditorRegistryRequestDTO
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/NewsEditorRegistryRequestDTO'
      responses:
        '200':
          description: Успешная операция.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    type: boolean
                  news:
                    type: array
                    description: Данные новостей для редактора
                    items:
                      $ref: '#/components/schemas/EkdNewsFullResponseDto'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '429':
          $ref: '#/components/responses/TooManyRequests'
  /api/v1/clients/{clientId}/news/getRegistry:
    post:
      tags:
        - news
      summary: Реестр новостей
      operationId: newsGetNewsRegistry
      security:
        - SessionCookieAuth: []
        - UserApiTokenAuth: []
        - MasterTokenAuth: []
      description: |
        ### Описание метода

        Возвращает реестр новостей клиента с фильтрацией.

        ### Валидации запроса

        Дополнительных валидаций запроса нет.
      parameters:
        - $ref: '#/components/parameters/FormatParameter'
        - name: Impersonated-User-Id
          description: Идентификатор пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            format: uuid
        - name: Impersonated-User-Id-Type
          description: Тип идентификатора пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            enum:
              - HR_LINK_ID
              - SNILS
              - EXTERNAL_ID
        - name: Impersonated-User-Id-External-System-Type
          description: |
            Идентификатор внешней системы при аутентификации через мастер-токен.
          in: header
          schema:
            type: string
        - name: clientId
          in: path
          required: true
          description: Идентификатор клиента.
          schema:
            type: string
            format: uuid
      requestBody:
        description: Тело запроса BaseNewsRegistryRequestDto
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/BaseNewsRegistryRequestDto'
      responses:
        '200':
          description: Успешная операция.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    type: boolean
                  news:
                    type: array
                    description: Данные новостей.
                    items:
                      $ref: '#/components/schemas/NewsBaseResponseDto'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '429':
          $ref: '#/components/responses/TooManyRequests'
  /api/v1/clients/{clientId}/news/unviewed:
    get:
      tags:
        - news
      summary: Непросмотренные новости
      operationId: newsGetUnviewedNews
      security:
        - SessionCookieAuth: []
        - UserApiTokenAuth: []
        - MasterTokenAuth: []
      description: |
        ### Описание метода

        Возвращает данные непросмотренных новостей для текущего пользователя.

        ### Валидации запроса

        Дополнительных валидаций запроса нет.
      parameters:
        - $ref: '#/components/parameters/FormatParameter'
        - name: Impersonated-User-Id
          description: Идентификатор пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            format: uuid
        - name: Impersonated-User-Id-Type
          description: Тип идентификатора пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            enum:
              - HR_LINK_ID
              - SNILS
              - EXTERNAL_ID
        - name: Impersonated-User-Id-External-System-Type
          description: |
            Идентификатор внешней системы при аутентификации через мастер-токен.
          in: header
          schema:
            type: string
        - name: clientId
          in: path
          required: true
          description: Идентификатор клиента.
          schema:
            type: string
            format: uuid
      responses:
        '200':
          description: Успешная операция.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    type: boolean
                  unviewedNews:
                    $ref: '#/components/schemas/UnviewedNewsResponseDto'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '429':
          $ref: '#/components/responses/TooManyRequests'
  /api/v1/clients/{clientId}/normativeActs:
    delete:
      tags:
        - normativeActs
      summary: Удалить ЛНА
      operationId: normativeActDelete
      security:
        - SessionCookieAuth: []
        - UserApiTokenAuth: []
        - MasterTokenAuth: []
      description: |
        ### Описание метода

        Удаляет нормативный акт (ЛНА) в указанном клиенте. Метод принимает один ЛНА — идентифицируйте его через ID в системе HR-Link или externalId. Удаление выполняется по одному акту за вызов. Если у акта есть активные задачи рассылки сотрудникам, сервер отклоняет запрос.

        ### Валидации запроса

        - Тело запроса задано.
        - `clientId` в пути соответствует формату UUID, клиент с таким ID существует и не удалён.
        - Пользователь, выполняющий операцию, относится к клиенту.
        - В теле запроса задан ID нормативного акта в системе HR-Link или externalId. Если заданы оба, приоритет у ID HR-Link.
        - Нормативный акт с указанным ID существует и относится к указанному клиенту.
        - Если задана ожидаемая версия нормативного акта, она совпадает с текущей версией в БД.
        - У пользователя клиента есть право `NORMATIVE_ACTS_DELETE` на уровне клиента или на уровне сотрудника клиента (с учётом активных замещений в режиме кадровика).
        - Пользователь клиента имеет доступ к типу документов нормативного акта.
        - Пользователь клиента имеет доступ ко всем отделам нормативного акта.
        - У нормативного акта нет активных задач отправки сотрудникам.
      parameters:
        - $ref: '#/components/parameters/FormatParameter'
        - name: Impersonated-User-Id
          description: Идентификатор пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            format: uuid
        - name: Impersonated-User-Id-Type
          description: Тип идентификатора пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            enum:
              - HR_LINK_ID
              - SNILS
              - EXTERNAL_ID
        - name: Impersonated-User-Id-External-System-Type
          description: |
            Идентификатор внешней системы при аутентификации через мастер-токен.
          in: header
          schema:
            type: string
        - name: clientId
          in: path
          required: true
          description: Идентификатор клиента.
          schema:
            type: string
            format: uuid
      requestBody:
        description: Тело запроса DeleteNormativeActsDTO
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DeleteNormativeActsDTO'
      responses:
        '200':
          description: Успешная операция.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    type: boolean
                  normativeActs:
                    $ref: '#/components/schemas/DeletedNormativeActsDTO'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '429':
          $ref: '#/components/responses/TooManyRequests'
    post:
      tags:
        - normativeActs
      summary: Создать ЛНА
      operationId: normativeActCreate
      security:
        - SessionCookieAuth: []
        - UserApiTokenAuth: []
        - MasterTokenAuth: []
      description: |
        ### Описание метода

        Создаёт нормативный акт (ЛНА) в указанном клиенте. За один вызов создаётся ровно один акт, привязанный к одному юрлицу. Сервер валидирует тело запроса, проверяет права пользователя, привязки к отделам и должностям, шаблон маршрута подписания и руководителя-подписанта. Файл акта должен быть заранее загружен; после создания сервер конвертирует его в PDF/A в пределах лимита тенанта.

        ### Валидации запроса

        **Клиент и пользователь**

        - Тело запроса задано.
        - `clientId` в пути соответствует формату UUID, клиент с таким ID существует и не удалён.
        - Пользователь, выполняющий операцию, относится к клиенту.
        - У пользователя клиента есть право `NORMATIVE_ACTS_CREATE` на уровне клиента или на уровне сотрудника клиента в указанном юрлице (с учётом активных замещений в режиме кадровика).

        **Основные поля акта**

        - Название акта задано.
        - Дата вступления в силу задана.
        - Если задана дата окончания действия, она позже даты вступления в силу.
        - Если задан externalId, он уникален в пределах клиента.

        **Файл акта**

        - ID файла задан, файл с таким ID существует.
        - Файл не находится в «чёрном» списке (конвертация в PDF/A не прерывалась).
        - Файл имеет допустимое расширение.
        - Лимит на конвертацию файлов в PDF/A для тенанта не превышен (если включены облачные операции).

        **Тип документа**

        - Задан ID типа документа в системе HR-Link или ID типа документа во внешней системе.
        - Тип документа с указанным ID существует.
        - Пользователь клиента имеет доступ к указанному типу документов.

        **Юрлица**

        - В теле запроса задан ID юрлица или externalId юрлица.
        - Список ID или externalId юрлиц не содержит `null`-элементов.
        - Все указанные юрлица существуют и относятся к указанному клиенту.
        - ЛНА относится ровно к одному юрлицу (временное ограничение).

        **Отделы**

        - Если задан один из списков ID отделов (приоритет у ID в системе HR-Link), он не содержит `null`-элементов, все отделы существуют и относятся к клиенту, пользователь имеет доступ ко всем отделам списка.
        - Если оба списка не заданы, пользователь имеет доступ к корневому отделу.

        **Должности сотрудников**

        - Если задан список ID должностей в системе HR-Link или externalId должностей, все должности существуют и относятся к клиенту.

        **Триггерные типы документов**

        - Если задан список ID или externalId триггерных типов документов, все типы существуют.

        **Шаблон маршрута подписания**

        - ID шаблона маршрута задан.
        - Шаблон с указанным ID существует, относится к указанному клиенту и не деактивирован.
        - Шаблон применим для типа подписываемого объекта `DOCUMENT`.
        - Шаблон относится к типу `MANAGER_ONLY`.
        - Среди участников маршрута есть участник типа `EMPLOYER` со способом подписания `QES` (КЭП).
        - Среди участников маршрута нет участников типа `EMPLOYEE`.

        **Руководитель-подписант**

        - ID руководителя задан.
        - Сотрудник с указанным ID существует, относится к указанному клиенту и не уволен.
        - Если externalId указан вместе с юрлицом — сотрудник ищется в этом юрлице, иначе — в клиенте.
        - Сотрудник имеет права руководителя в указанном юрлице. Если юрлицо сотрудника-руководителя не совпадает с указанным, пользователь имеет активного сотрудника-руководителя в юрлице документа либо право руководителя в указанном юрлице через связку прав сотрудника.
      parameters:
        - $ref: '#/components/parameters/FormatParameter'
        - name: Impersonated-User-Id
          description: Идентификатор пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            format: uuid
        - name: Impersonated-User-Id-Type
          description: Тип идентификатора пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            enum:
              - HR_LINK_ID
              - SNILS
              - EXTERNAL_ID
        - name: Impersonated-User-Id-External-System-Type
          description: |
            Идентификатор внешней системы при аутентификации через мастер-токен.
          in: header
          schema:
            type: string
        - name: clientId
          in: path
          required: true
          description: Идентификатор клиента.
          schema:
            type: string
            format: uuid
      requestBody:
        description: Тело запроса CreateNormativeActDTO
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateNormativeActDTO'
      responses:
        '200':
          description: Успешная операция.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    type: boolean
                  normativeAct:
                    $ref: '#/components/schemas/NormativeActDTO'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '429':
          $ref: '#/components/responses/TooManyRequests'
  /api/v1/clients/{clientId}/normativeActs/{normativeActId}:
    get:
      tags:
        - normativeActs
      summary: Получить ЛНА
      operationId: normativeActGetNormativeAct
      security:
        - SessionCookieAuth: []
        - UserApiTokenAuth: []
        - MasterTokenAuth: []
      description: |
        ### Описание метода

        Возвращает нормативный акт.

        ### Валидации запроса

        - Клиент существует, не удалён, и к нему относится пользователь, выполняющий операцию.
        - ID нормативного акта задан корректно.
        - Нормативный акт существует по заданному ID.
        - Нормативный акт относится к заданному клиенту.
        - У пользователя клиента есть право `NORMATIVE_ACTS` на уровне клиента или право `NORMATIVE_ACTS` на уровне сотрудника клиента в юрлице, которому принадлежит нормативный акт.
        - Пользователь клиента имеет доступ к типу документа нормативного акта.
        - Пользователь клиента имеет доступ хотя бы к одному отделу клиента, на который распространяется нормативный акт.
        - Проверяет, что ID нормативного акта задан корректно и возвращает нормативный акт, если он существует.
        - ID клиента соответствует формату UUID.
        - По заданному ID клиента существует клиент.
        - Пользователь, выполняющий операцию, относится к клиенту.
        - Проверяет, есть ли у пользователя клиента с заданным ID заданное право и возвращает кэш наличия прав у пользователя клиента.
        - Проверяет, что у пользователя есть заданные права хотя бы в одном из юрлиц, на которые распространяется нормативный акт.
        - Проверяет, что пользователь клиента имеет доступ к заданному типу документов.
        - Проверяет, что пользователь клиента имеет доступ хотя бы к одному отделу клиента, на которые распространяется заданный нормативный акт.
        - В метод должен быть передан список разрешённых отделов, который включает в себя все дочерние и родительские отделы разрешённых отделов.
        - Это нужно из-за бизнес-правила: нормативный акт, который распространяется на выбранный отдел, должен быть доступен и сотруднику, который имеет доступ только к дочерним отделам выбранного отдела.
        - Проверяет, что текущий пользователь относится к заданному клиенту и возвращает пользователя клиента, если он существует.
        - Проверяет, что ID клиента, заданный в виде строки, соответствует формату, и возвращает типизированный ID клиента.
        - Проверяет существование клиента по заданному ID и возвращает клиента, если он существует.
        - Проверяет, что клиент не удален.
        - Проверяет, есть ли у пользователя клиента с заданным ID для хотя бы одного из указанных юрлиц заданное право с учётом замещений.
        - В случае замещения в режиме кадровика дополнительно проверяются его активные замещения.
      parameters:
        - $ref: '#/components/parameters/FormatParameter'
        - name: Impersonated-User-Id
          description: Идентификатор пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            format: uuid
        - name: Impersonated-User-Id-Type
          description: Тип идентификатора пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            enum:
              - HR_LINK_ID
              - SNILS
              - EXTERNAL_ID
        - name: Impersonated-User-Id-External-System-Type
          description: |
            Идентификатор внешней системы при аутентификации через мастер-токен.
          in: header
          schema:
            type: string
        - name: clientId
          in: path
          required: true
          description: Идентификатор клиента.
          schema:
            type: string
            format: uuid
        - name: normativeActId
          in: path
          required: true
          description: Идентификатор ЛНА в системе HRlink.
          schema:
            type: string
            format: uuid
      responses:
        '200':
          description: Успешная операция.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    type: boolean
                  normativeAct:
                    $ref: '#/components/schemas/NormativeActDTO'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '429':
          $ref: '#/components/responses/TooManyRequests'
    put:
      tags:
        - normativeActs
      summary: Обновить ЛНА
      operationId: normativeActUpdateNormativeAct
      security:
        - SessionCookieAuth: []
        - UserApiTokenAuth: []
        - MasterTokenAuth: []
      description: |
        ### Описание метода

        > **⚠️ Будьте осторожны!**
        >
        > Методы PUT перезаписывают запись целиком: любые непереданные поля считаются null и затирают данные в БД.
        > Поэтому при обновлении нужно указывать все поля.
         Обновляет данные нормативного акта.

        ### Валидации запроса

        - Клиент существует, не удалён, и к нему относится пользователь, выполняющий операцию.
        - ID нормативного акта задан корректно.
        - Нормативный акт существует по заданному ID.
        - Нормативный акт относится к заданному клиенту.
        - У пользователя клиента есть право `NORMATIVE_ACTS_UPDATE` на уровне клиента или право `NORMATIVE_ACTS_UPDATE` на уровне сотрудника клиента в юрлице, которому принадлежит нормативный акт.
        - Пользователь клиента имеет доступ к типу документа нормативного акта.
        - Пользователь клиента имеет доступ ко всем отделам клиента, на которые распространяется нормативный акт.
        - Нормативный акт не удалён.
        - Данные для обновления нормативного акта заданы корректно.
        - Проверяет, что ID нормативного акта задан корректно и возвращает нормативный акт, если он существует.
        - ID клиента соответствует формату UUID.
        - По заданному ID клиента существует клиент.
        - Пользователь, выполняющий операцию, относится к клиенту.
        - Проверяет, есть ли у пользователя клиента с заданным ID заданное право и возвращает кэш наличия прав у пользователя клиента.
        - Проверяет, есть ли у пользователя клиента с заданным ID для заданного юрлица заданное право с учётом замещений.
        - В случае замещения в режиме кадровика дополнительно проверяются его активные замещения.
        - Проверяет, что пользователь клиента имеет доступ к заданному типу документов.
        - Проверяет, что пользователь клиента имеет доступ ко всем отделам клиента, на которые распространяется заданный нормативный акт.
        - Если нормативный акт распространяется на все отделы, то у пользователя клиента должен быть доступ к корневому отделу.
        - Проверяет, что ни один нормативный акт из указанной коллекции не удалён.
        - Проверяет, что текущий пользователь относится к заданному клиенту и возвращает пользователя клиента, если он существует.
        - Проверяет, что ID клиента, заданный в виде строки, соответствует формату, и возвращает типизированный ID клиента.
        - Проверяет существование клиента по заданному ID и возвращает клиента, если он существует.
        - Проверяет, что клиент не удален.
        - Проверяет, что пользователь клиента имеет доступ ко всем заданным отделам.
      parameters:
        - $ref: '#/components/parameters/FormatParameter'
        - name: Impersonated-User-Id
          description: Идентификатор пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            format: uuid
        - name: Impersonated-User-Id-Type
          description: Тип идентификатора пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            enum:
              - HR_LINK_ID
              - SNILS
              - EXTERNAL_ID
        - name: Impersonated-User-Id-External-System-Type
          description: |
            Идентификатор внешней системы при аутентификации через мастер-токен.
          in: header
          schema:
            type: string
        - name: clientId
          in: path
          required: true
          description: Идентификатор клиента.
          schema:
            type: string
            format: uuid
        - name: normativeActId
          in: path
          required: true
          description: Идентификатор ЛНА в системе HRlink.
          schema:
            type: string
            format: uuid
      requestBody:
        description: Тело запроса UpdateNormativeActDTO
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateNormativeActDTO'
      responses:
        '200':
          description: Успешная операция.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    type: boolean
                  normativeAct:
                    $ref: '#/components/schemas/NormativeActDTO'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '429':
          $ref: '#/components/responses/TooManyRequests'
  /api/v1/clients/{clientId}/normativeActs/{normativeActId}/convertedFile:
    get:
      tags:
        - normativeActs
      summary: Скачать ЛНА (PDF/A)
      operationId: normativeActGetConvertedFile
      security:
        - SessionCookieAuth: []
        - UserApiTokenAuth: []
        - MasterTokenAuth: []
      description: |
        ### Описание метода

        Возвращает редирект для скачивания файла нормативного акта в формате PDF/A.

        ### Валидации запроса

        - ID нормативного акта является корректным UUID.
        - По заданному ID существует нормативный акт.
        - Конвертация файла нормативного акта в PDF/A формат завершилась.
        - Клиент существует, не удалён, и к нему относится пользователь, выполняющий операцию.
        - Нормативный акт относится к заданному клиенту.
        - У пользователя клиента есть право `NORMATIVE_ACTS` на уровне пользователя клиента или право `NORMATIVE_ACTS` на уровне сотрудника клиента.
        - Пользователь клиента имеет доступ к типу документа нормативного акта.
        - Пользователь клиента имеет доступ хотя бы к одному отделу, на которые распространяется нормативный акт.
        - ID клиента соответствует формату UUID.
        - По заданному ID клиента существует клиент.
        - Пользователь, выполняющий операцию, относится к клиенту.
        - Проверяет, что текущий пользователь относится к заданному клиенту и возвращает пользователя клиента, если он существует.
        - Проверяет, что ID клиента, заданный в виде строки, соответствует формату, и возвращает типизированный ID клиента.
        - Проверяет существование клиента по заданному ID и возвращает клиента, если он существует.
        - Проверяет, что клиент не удален.
      parameters:
        - $ref: '#/components/parameters/FormatParameter'
        - name: Impersonated-User-Id
          description: Идентификатор пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            format: uuid
        - name: Impersonated-User-Id-Type
          description: Тип идентификатора пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            enum:
              - HR_LINK_ID
              - SNILS
              - EXTERNAL_ID
        - name: Impersonated-User-Id-External-System-Type
          description: |
            Идентификатор внешней системы при аутентификации через мастер-токен.
          in: header
          schema:
            type: string
        - name: clientId
          in: path
          required: true
          description: Идентификатор клиента.
          schema:
            type: string
            format: uuid
        - name: normativeActId
          in: path
          required: true
          description: Идентификатор ЛНА в системе HRlink.
          schema:
            type: string
            format: uuid
      responses:
        '200':
          description: Этот код ответа не используется, при успехе выполнения метод всегда возвращает ответ с кодом 303.
        '303':
          description: |
            HTTP-заголовок `Location` будет содержать URL, по которому скачивается файл.<br/>
            ✍️ Postman и некоторые другие API-клиенты по умолчанию следуют редиректам и сразу скачивают файл, указанный в
            HTTP-заголовке `Location`. Это поведение настраивается на стороне клиента.
          headers:
            Location:
              schema:
                type: string
              description: URL, по которому скачивается файл
              example: https://host.hr-link.ru/api/v1/files?token=<<одноразовый_токен>>
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '429':
          $ref: '#/components/responses/TooManyRequests'
  /api/v1/clients/{clientId}/normativeActs/{normativeActId}/getRelatedDocuments:
    post:
      tags:
        - normativeActs
      summary: Получить документы ЛНА
      operationId: normativeActGetFilteredRelatedDocuments
      security:
        - SessionCookieAuth: []
        - UserApiTokenAuth: []
        - MasterTokenAuth: []
      description: |
        ### Описание метода

        Возвращает документы нормативного акта, с учетом фильтрации и пагинации.

        ### Валидации запроса

        - ID нормативного акта является корректным UUID.
        - По заданному ID существует нормативный акт.
        - Клиент существует, не удалён, и к нему относится пользователь, выполняющий операцию.
        - Нормативный акт относится к заданному клиенту.
        - Базовая валидация проходит корректно.
        - ID клиента соответствует формату UUID.
        - По заданному ID клиента существует клиент.
        - Пользователь, выполняющий операцию, относится к клиенту.
        - Проверяет, что текущий пользователь относится к заданному клиенту и возвращает пользователя клиента, если он существует.
        - Проверяет, что ID клиента, заданный в виде строки, соответствует формату, и возвращает типизированный ID клиента.
        - Проверяет существование клиента по заданному ID и возвращает клиента, если он существует.
        - Проверяет, что клиент не удален.
      parameters:
        - $ref: '#/components/parameters/FormatParameter'
        - name: Impersonated-User-Id
          description: Идентификатор пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            format: uuid
        - name: Impersonated-User-Id-Type
          description: Тип идентификатора пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            enum:
              - HR_LINK_ID
              - SNILS
              - EXTERNAL_ID
        - name: Impersonated-User-Id-External-System-Type
          description: |
            Идентификатор внешней системы при аутентификации через мастер-токен.
          in: header
          schema:
            type: string
        - name: clientId
          in: path
          required: true
          description: Идентификатор клиента.
          schema:
            type: string
            format: uuid
        - name: normativeActId
          in: path
          required: true
          description: Идентификатор ЛНА в системе HRlink.
          schema:
            type: string
            format: uuid
      requestBody:
        description: Тело запроса NormativeActDocumentsFilterDTO
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/NormativeActDocumentsFilterDTO'
      responses:
        '200':
          description: Успешная операция.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    type: boolean
                  normativeActDocuments:
                    type: array
                    description: Список документов нормативного акта.
                    items:
                      $ref: '#/components/schemas/NormativeActDocumentAndSignerDTO'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '429':
          $ref: '#/components/responses/TooManyRequests'
  /api/v1/clients/{clientId}/normativeActs/{normativeActId}/printFormFile:
    get:
      tags:
        - normativeActs
      summary: Скачать печатную форму ЛНА
      operationId: normativeActGetPrintFormFile
      security:
        - SessionCookieAuth: []
        - UserApiTokenAuth: []
        - MasterTokenAuth: []
      description: |
        ### Описание метода

        Метод по идентификатору ЛНА в системе HRlink возвращает редирект для скачивания файла печатной формы нормативного акта с учетом того, что он может быть предварительно утвержден руководителем.

        ### Валидации запроса

        - ID нормативного акта является корректным UUID.
        - По заданному ID существует нормативный акт.
        - Клиент существует, не удалён, и к нему относится пользователь, выполняющий операцию.
        - Нормативный акт относится к заданному клиенту.
        - Выполняются общие условия валидации печатной формы нормативного акта.
        - ID клиента соответствует формату UUID.
        - По заданному ID клиента существует клиент.
        - Пользователь, выполняющий операцию, относится к клиенту.
        - Проверяет, что текущий пользователь относится к заданному клиенту и возвращает пользователя клиента, если он существует.
        - Проверяет, что ID клиента, заданный в виде строки, соответствует формату, и возвращает типизированный ID клиента.
        - Проверяет существование клиента по заданному ID и возвращает клиента, если он существует.
        - Проверяет, что клиент не удален.
      parameters:
        - $ref: '#/components/parameters/FormatParameter'
        - name: Impersonated-User-Id
          description: Идентификатор пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            format: uuid
        - name: Impersonated-User-Id-Type
          description: Тип идентификатора пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            enum:
              - HR_LINK_ID
              - SNILS
              - EXTERNAL_ID
        - name: Impersonated-User-Id-External-System-Type
          description: |
            Идентификатор внешней системы при аутентификации через мастер-токен.
          in: header
          schema:
            type: string
        - name: clientId
          in: path
          required: true
          description: Идентификатор клиента.
          schema:
            type: string
            format: uuid
        - name: normativeActId
          in: path
          required: true
          description: Идентификатор ЛНА в системе HRlink.
          schema:
            type: string
            format: uuid
      responses:
        '200':
          description: Этот код ответа не используется, при успехе выполнения метод всегда возвращает ответ с кодом 303.
        '303':
          description: |
            HTTP-заголовок `Location` будет содержать URL, по которому скачивается файл.<br/>
            ✍️ Postman и некоторые другие API-клиенты по умолчанию следуют редиректам и сразу скачивают файл, указанный в
            HTTP-заголовке `Location`. Это поведение настраивается на стороне клиента.
          headers:
            Location:
              schema:
                type: string
              description: URL, по которому скачивается файл
              example: https://host.hr-link.ru/api/v1/files?token=<<одноразовый_токен>>
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '429':
          $ref: '#/components/responses/TooManyRequests'
  /api/v1/clients/{clientId}/normativeActs/{normativeActId}/sendToSigning:
    post:
      tags:
        - normativeActsSigning
      summary: Отправить на подписание
      operationId: normativeActSendToSigning
      security:
        - SessionCookieAuth: []
        - UserApiTokenAuth: []
        - MasterTokenAuth: []
      description: |
        ### Описание метода

        ### Валидации запроса

        - Тело запроса задано.
        - Клиент существует, не удалён, и к нему относится пользователь, выполняющий операцию.
        - ID нормативного акта задан корректно.
        - Нормативный акт существует по заданному ID.
        - Нормативный акт относится к заданному клиенту.
        - Список ID юрлиц задан корректно.
        - Пользователь клиента, выполняющий операцию, имеет право PERSONAL_DATA на уровне пользователя клиента или PERSONAL_DATA на уровне сотрудника хотя бы одного из юрлиц при использовании фильтрации по номеру документа сотрудника.
        - Пользователь клиента имеет доступ к типу документа нормативного акта.
        - Пользователь клиента имеет доступ хотя бы к одному отделу клиента, на который распространяется нормативный акт.
        - Нормативный акт не удалён.
        - Конвертация файла нормативного акта в PDF/A формат завершилась.
        - Нормативный акт был утвержден, если он требует утверждения.
        - Данные фильтрации заданы корректно для выполнения операции отправки нормативного акта сотрудникам.
        - Лимит на выполнение операций создания печатной формы файла для заданного тенанта не превышен.
        - Существует активный пакет СМС и лимит СМС для заданного тенанта не превышен.
        - Проверяет, что ID нормативного акта задан корректно и возвращает нормативный акт, если он существует.
        - Каждое юр лицо связано с заданным нормативным актом.
        - У пользователя клиента есть право во всех заданных юр лицах, которым принадлежит нормативный акт.
        - ID клиента соответствует формату UUID.
        - По заданному ID клиента существует клиент.
        - Пользователь, выполняющий операцию, относится к клиенту.
        - Проверяет, есть ли у пользователя клиента с заданным ID заданное право и возвращает кэш наличия прав у пользователя клиента.
        - Пользователь клиента имеет право PERSONAL_DATA.
        - Пользователь клиента имеет право PERSONAL_DATA на уровне одного из юрлиц.
        - Один из замещаемых пользователей клиента имеет право PERSONAL_DATA.
        - Проверяет, что пользователь клиента имеет доступ к типам документов каждого нормативного акта.
        - Проверяет, что пользователь клиента имеет доступ хотя бы к одному отделу клиента, на которые распространяется заданный нормативный акт.
        - В метод должен быть передан список разрешённых отделов, который включает в себя все дочерние и родительские отделы разрешённых отделов.
        - Это нужно из-за бизнес-правила: нормативный акт, который распространяется на выбранный отдел, должен быть доступен и сотруднику, который имеет доступ только к дочерним отделам выбранного отдела.
        - Проверяет, что ни один нормативный акт из указанной коллекции не удалён.
        - Проверяет, что конвертация файла в PDF/A формат завершилась для каждого нормативного акта из указанной коллекции.
        - Проверяет, что нормативный акт был утвержден, если он требует утверждения.
        - Нормативный акт требует утверждения, если у него существует утверждающий документ.
        - Пользователь клиента имеет права для получения данных должностей сотрудников.
        - Если ID должностей сотрудников заданы, то они корректны.
        - Если ID отделов клиента заданы, то они корректны.
        - У пользователя клиента есть доступ к отделам клиента с заданными ID.
        - Если ID сотрудников в данных фильтрации заданы, то они корректны.
        - Проверяет, что если операции в облаке включены, то лимит на выполнение операций создания печатной формы файла для заданного тенанта не превышен.
        - Проверяет, есть ли у пользователя клиента с заданным ID для заданного юрлица заданное право с учётом замещений.
        - В случае замещения в режиме кадровика дополнительно проверяются его активные замещения.
        - Проверяет, что текущий пользователь относится к заданному клиенту и возвращает пользователя клиента, если он существует.
        - Проверяет, что ID клиента, заданный в виде строки, соответствует формату, и возвращает типизированный ID клиента.
        - Проверяет существование клиента по заданному ID и возвращает клиента, если он существует.
        - Проверяет, что клиент не удален.
        - Проверяет, есть ли у пользователя клиента с заданным ID заданное право, учитывая замещения.
        - Список ID должностей сотрудников равен null.
        - Список ID должностей сотрудников пуст.
        - Список содержит только ID существующих должностей сотрудников.
        - Список ID отделов клиента равен null.
        - Список ID отделов клиента пуст.
        - Список содержит только ID существующих отделов клиента.
        - Среди ID сотрудников нет null-элементов.
        - По заданным ID существуют сотрудники.
        - Все сотрудники относятся к одному клиенту.
        - Все сотрудники находятся в юрлицах, на которые распространяется нормативный акт.
        - Ни один из сотрудников не уволен.
        - Все сотрудники подтверждены.
        - Отделы сотрудников входят в список разрешенных отделов пользователя клиента, выполняющего операцию.
        - Пользователь клиента имеет право EMPLOYEE_POSITIONS.
        - Пользователь клиента имеет право EMPLOYEE_POSITIONS на уровне одного из юрлиц.
        - Заполняет данные для фильтрации сотрудников отделами, которые являются потомками для заданных в фильтрах отделов, или очищает список отделов, если фильтрация по отделам не требуется.
        - Фильтрация по отделам не требуется, если текущий пользователь клиента имеет доступ ко всем отделам клиента и в данных фильтрации не заданы ID отделов.
        - Проверяет, что лимит на выполнение операций создания печатной формы файла для заданного тенанта не превышен.
        - Проверяет, что ни один ID должности сотрудника не равен null.
        - Проверяет, что все UUID, заданные в списке, соответствуют существующим должностям сотрудников и возвращает список должностей сотрудников.
        - Проверяет, что ни один ID отдела клиента не равен null.
        - Проверяет, что все UUID, заданные в списке, соответствуют существующим отделам клиента и возвращает список отделов клиента.
        - Проверяет, что сотрудники относятся к юрлицам, на которые распространяется нормативный акт.
        - Проверяет, что сотрудники не уволены.
        - Проверяет, что все сотрудники, заданные в данных фильтрации, подтверждены.
        - Проверяет, что среди списка ID сотрудников ни один не равен null.
        - Проверяет, что сотрудники существуют по всем заданным ID, и возвращает список сотрудников.
        - Проверяет, что все сотрудники принадлежат клиенту с заданным ID.
        - Проверяет, что отделы сотрудников входят в список разрешенных отделов пользователя клиента с учетом замещений.
        - Проверяет, что заданный сотрудник относится к заданному клиенту.
        - Проверяет, что отделы сотрудников доступны пользователю клиента с учётом контекста текущей операции.
      parameters:
        - $ref: '#/components/parameters/FormatParameter'
        - name: Impersonated-User-Id
          description: Идентификатор пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            format: uuid
        - name: Impersonated-User-Id-Type
          description: Тип идентификатора пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            enum:
              - HR_LINK_ID
              - SNILS
              - EXTERNAL_ID
        - name: Impersonated-User-Id-External-System-Type
          description: |
            Идентификатор внешней системы при аутентификации через мастер-токен.
          in: header
          schema:
            type: string
        - name: clientId
          in: path
          required: true
          description: Идентификатор клиента.
          schema:
            type: string
            format: uuid
        - name: normativeActId
          in: path
          required: true
          description: Идентификатор ЛНА в системе HRlink.
          schema:
            type: string
            format: uuid
        - name: notInvitedEmployeesAllowed
          in: query
          description: Разрешена отправка ЛНА сотрудникам без приглашения или без подписи?
          schema:
            type: boolean
            x-nullable: true
            default: false
      requestBody:
        description: Тело запроса EmployeeFilterDTO
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/EmployeeFilterDTO'
      responses:
        '200':
          description: Успешная операция.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    type: boolean
                  sendToSigningTask:
                    $ref: '#/components/schemas/NormativeActSendToSigningTaskWithNormativeActDTO'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '429':
          $ref: '#/components/responses/TooManyRequests'
  /api/v1/clients/{clientId}/normativeActs/disableAutoSending:
    put:
      tags:
        - normativeActs
      summary: Выключить автоотправку на подписание
      operationId: normativeActDisableAutoSendToSigning
      security:
        - SessionCookieAuth: []
        - UserApiTokenAuth: []
        - MasterTokenAuth: []
      description: |
        ### Описание метода

        > **⚠️ Будьте осторожны!**
        >
        > Методы PUT перезаписывают запись целиком: любые непереданные поля считаются null и затирают данные в БД.
        > Поэтому при обновлении нужно указывать все поля.
         Выключает автоматическую отправку нормативного акта на подписание.

        ### Валидации запроса

        - Клиент существует, не удалён, и к нему относится пользователь, выполняющий операцию.
        - Тело запроса задано.
        - Список нормативных актов задан корректно.
        - Нормативные акты существуют по заданным ID.
        - Нормативные акты относятся к заданному клиенту.
        - Данные для изменения автоматической отправки нормативного акта на подписание корректны.
        - Нормативный акт утвержден, если он требует утверждения.
        - Нормативные акты имеют триггерные типы.
        - ID клиента соответствует формату UUID.
        - По заданному ID клиента существует клиент.
        - Пользователь, выполняющий операцию, относится к клиенту.
        - Список нормативных актов задан.
        - В списке нормативных актов нет null-элементов.
        - Проверяет, есть ли у пользователя клиента с заданным ID заданное право и возвращает кэш наличия прав у пользователя клиента.
        - Задан ID нормативного акта в системе Hr-link или во внешней системе.
        - Если задан ID нормативного акта в системе Hr-link, то по нему должен существовать нормативный акт, относящийся к заданному клиенту.
        - Если задан ID нормативного акта во внешней системе, то по нему должен существовать нормативный акт.
        - Проверяет, что если версия нормативного задана, то она равна версии нормативного акта в БД.
        - Проверяет, есть ли у пользователя клиента с заданным ID для заданного юрлица заданное право с учётом замещений.
        - В случае замещения в режиме кадровика дополнительно проверяются его активные замещения.
        - Пользователь клиента имеет доступ к типу документа нормативного акта.
        - Пользователь клиента имеет доступ хотя бы к одному отделу клиента, на которые распространяется заданный нормативный акт.
        - Действие нормативного акта не закончилось.
        - Нормативный акт не удалён.
        - Конвертация файла нормативного акта в PDF/A формат завершилась.
        - Проверяет, что нормативный акт был утвержден, если он требует утверждения.
        - Нормативный акт требует утверждения, если у него существует утверждающий документ.
        - Проверяет, что нормативные акты имеют триггерные типы.
        - Проверяет, что текущий пользователь относится к заданному клиенту и возвращает пользователя клиента, если он существует.
        - Проверяет, что ID клиента, заданный в виде строки, соответствует формату, и возвращает типизированный ID клиента.
        - Проверяет существование клиента по заданному ID и возвращает клиента, если он существует.
        - Проверяет, что клиент не удален.
        - Проверяет, что список нормативных актов задан.
        - Проверяет, что каждый нормативный акт из указанной коллекции относится к заданному клиенту.
        - Проверяет существование нормативного акта по заданному ID во внешней системе и возвращает нормативный акт, если он существует.
        - Проверяет, что пользователь клиента имеет доступ хотя бы к одному отделу клиента, на которые распространяется заданный нормативный акт.
        - В метод должен быть передан список разрешённых отделов, который включает в себя все дочерние и родительские отделы разрешённых отделов.
        - Это нужно из-за бизнес-правила: нормативный акт, который распространяется на выбранный отдел, должен быть доступен и сотруднику, который имеет доступ только к дочерним отделам выбранного отдела.
        - Проверяет, что ни один нормативный акт из указанной коллекции не удалён.
        - Проверяет, что действие нормативного акта не закончилось для каждого нормативного акта из указанной коллекции.
        - Проверяет, что конвертация файла в PDF/A формат завершилась для каждого нормативного акта из указанной коллекции.
        - Проверяет, что пользователь клиента имеет доступ к типам документов каждого нормативного акта.
      parameters:
        - $ref: '#/components/parameters/FormatParameter'
        - name: Impersonated-User-Id
          description: Идентификатор пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            format: uuid
        - name: Impersonated-User-Id-Type
          description: Тип идентификатора пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            enum:
              - HR_LINK_ID
              - SNILS
              - EXTERNAL_ID
        - name: Impersonated-User-Id-External-System-Type
          description: |
            Идентификатор внешней системы при аутентификации через мастер-токен.
          in: header
          schema:
            type: string
        - name: clientId
          in: path
          required: true
          description: Идентификатор клиента.
          schema:
            type: string
            format: uuid
      requestBody:
        description: Тело запроса NormativeActIdWithVersionDTO
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/NormativeActIdWithVersionDTO'
      responses:
        '200':
          description: Успешная операция.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    type: boolean
                  normativeActs:
                    type: array
                    description: Список нормативных актов.
                    items:
                      $ref: '#/components/schemas/NormativeActDTO'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '429':
          $ref: '#/components/responses/TooManyRequests'
  /api/v1/clients/{clientId}/normativeActs/enableAutoSending:
    put:
      tags:
        - normativeActs
      summary: Включить автоотправку на подписание
      operationId: normativeActEnableAutoSendToSigning
      security:
        - SessionCookieAuth: []
        - UserApiTokenAuth: []
        - MasterTokenAuth: []
      description: |
        ### Описание метода

        > **⚠️ Будьте осторожны!**
        >
        > Методы PUT перезаписывают запись целиком: любые непереданные поля считаются null и затирают данные в БД.
        > Поэтому при обновлении нужно указывать все поля.
         Включает автоматическую отправку нормативного акта на подписание.

        ### Валидации запроса

        - Клиент существует, не удалён, и к нему относится пользователь, выполняющий операцию.
        - Тело запроса задано.
        - Список нормативных актов задан корректно.
        - Нормативные акты существуют по заданным ID.
        - Нормативные акты относятся к заданному клиенту.
        - Данные для изменения автоматической отправки нормативного акта на подписание корректны.
        - Нормативный акт утвержден, если он требует утверждения.
        - Нормативные акты имеют триггерные типы.
        - ID клиента соответствует формату UUID.
        - По заданному ID клиента существует клиент.
        - Пользователь, выполняющий операцию, относится к клиенту.
        - Список нормативных актов задан.
        - В списке нормативных актов нет null-элементов.
        - Проверяет, есть ли у пользователя клиента с заданным ID заданное право и возвращает кэш наличия прав у пользователя клиента.
        - Задан ID нормативного акта в системе Hr-link или во внешней системе.
        - Если задан ID нормативного акта в системе Hr-link, то по нему должен существовать нормативный акт, относящийся к заданному клиенту.
        - Если задан ID нормативного акта во внешней системе, то по нему должен существовать нормативный акт.
        - Проверяет, что если версия нормативного задана, то она равна версии нормативного акта в БД.
        - Проверяет, есть ли у пользователя клиента с заданным ID для заданного юрлица заданное право с учётом замещений.
        - В случае замещения в режиме кадровика дополнительно проверяются его активные замещения.
        - Пользователь клиента имеет доступ к типу документа нормативного акта.
        - Пользователь клиента имеет доступ хотя бы к одному отделу клиента, на которые распространяется заданный нормативный акт.
        - Действие нормативного акта не закончилось.
        - Нормативный акт не удалён.
        - Конвертация файла нормативного акта в PDF/A формат завершилась.
        - Проверяет, что нормативный акт был утвержден, если он требует утверждения.
        - Нормативный акт требует утверждения, если у него существует утверждающий документ.
        - Проверяет, что нормативные акты имеют триггерные типы.
        - Проверяет, что текущий пользователь относится к заданному клиенту и возвращает пользователя клиента, если он существует.
        - Проверяет, что ID клиента, заданный в виде строки, соответствует формату, и возвращает типизированный ID клиента.
        - Проверяет существование клиента по заданному ID и возвращает клиента, если он существует.
        - Проверяет, что клиент не удален.
        - Проверяет, что список нормативных актов задан.
        - Проверяет, что каждый нормативный акт из указанной коллекции относится к заданному клиенту.
        - Проверяет существование нормативного акта по заданному ID во внешней системе и возвращает нормативный акт, если он существует.
        - Проверяет, что пользователь клиента имеет доступ хотя бы к одному отделу клиента, на которые распространяется заданный нормативный акт.
        - В метод должен быть передан список разрешённых отделов, который включает в себя все дочерние и родительские отделы разрешённых отделов.
        - Это нужно из-за бизнес-правила: нормативный акт, который распространяется на выбранный отдел, должен быть доступен и сотруднику, который имеет доступ только к дочерним отделам выбранного отдела.
        - Проверяет, что ни один нормативный акт из указанной коллекции не удалён.
        - Проверяет, что действие нормативного акта не закончилось для каждого нормативного акта из указанной коллекции.
        - Проверяет, что конвертация файла в PDF/A формат завершилась для каждого нормативного акта из указанной коллекции.
        - Проверяет, что пользователь клиента имеет доступ к типам документов каждого нормативного акта.
      parameters:
        - $ref: '#/components/parameters/FormatParameter'
        - name: Impersonated-User-Id
          description: Идентификатор пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            format: uuid
        - name: Impersonated-User-Id-Type
          description: Тип идентификатора пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            enum:
              - HR_LINK_ID
              - SNILS
              - EXTERNAL_ID
        - name: Impersonated-User-Id-External-System-Type
          description: |
            Идентификатор внешней системы при аутентификации через мастер-токен.
          in: header
          schema:
            type: string
        - name: clientId
          in: path
          required: true
          description: Идентификатор клиента.
          schema:
            type: string
            format: uuid
      requestBody:
        description: Тело запроса NormativeActIdWithVersionDTO
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/NormativeActIdWithVersionDTO'
      responses:
        '200':
          description: Успешная операция.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    type: boolean
                  normativeActs:
                    type: array
                    description: Список нормативных актов.
                    items:
                      $ref: '#/components/schemas/NormativeActDTO'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '429':
          $ref: '#/components/responses/TooManyRequests'
  /api/v1/clients/{clientId}/normativeActs/sendBulkToSigning:
    post:
      tags:
        - normativeActsSigning
      summary: Отправить группу на подписание
      operationId: normativeActSendBulkOfNormativeActsToSigning
      security:
        - SessionCookieAuth: []
        - UserApiTokenAuth: []
        - MasterTokenAuth: []
      description: |
        ### Описание метода

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

        ### Валидации запроса

        - Тело запроса задано.
        - Клиент существует, не удалён, и к нему относится пользователь, выполняющий операцию.
        - В теле запроса указаны корректные ID нормативных актов.
        - Существуют нормативные акты по ID, указанным в теле запроса.
        - Все нормативные акты по указанным ID относятся к одним и тем же юрлицам.
        - Список ID юрлиц задан корректно.
        - Каждый нормативный акт из тела запроса относится к заданному клиенту.
        - Пользователь клиента имеет доступ к типам документов нормативных актов.
        - Для каждого нормативного акта по ID из тела запроса пользователь клиента имеет доступ хотя бы к одному из отделов клиента, на которых распространяется данный нормативный акт.
        - Ни один нормативный акт из тела запроса не удалён.
        - Не закончилось действие каждого нормативного акта из тела запроса.
        - Конвертация файла в PDF/A формат завершилась для каждого нормативного акта из тела запроса.
        - Все нормативные акты из тела запроса, требующие утверждения, должны быть утверждены.
        - Если данные фильтрации содержат непустую строку с номером документа, не состоящую из одних пробельных символов, у пользователя клиента есть право PERSONAL_DATA на уровне пользователя клиента или право PERSONAL_DATA на уровне сотрудника клиента в юрлице, на которое распространяются нормативные акты.
        - Данные фильтрации указаны корректно.
        - Лимит на выполнение операций создания печатной формы файла для заданного тенанта не превышен.
        - Существует активный пакет СМС и лимит СМС для заданного тенанта не превышен.
        - Каждое юр лицо относится к юрлицам заданных нормативных актов.
        - У пользователя клиента есть право NORMATIVE_ACTS_SEND_TO_SIGNING на уровне клиента или право NORMATIVE_ACTS_SEND_TO_SIGNING на уровне сотрудника клиента во всех заданных юр лицах.
        - ID клиента соответствует формату UUID.
        - По заданному ID клиента существует клиент.
        - Пользователь, выполняющий операцию, относится к клиенту.
        - Если список ID нормативных актов не равен null и не пуст, то он не содержит null-элементов.
        - Если список ID нормативных актов не равен null и не пуст, то по указанным ID существуют нормативные акты.
        - Если список ID нормативных актов равен null или пуст, то список ID нормативных актов во внешней системе не равен null и не пуст.
        - Если список ID нормативных актов равен null или пуст, то список ID нормативных актов во внешней системе не содержит null-элементов.
        - Если список ID нормативных актов равен null или пуст, то по указанным ID во внешней системе существуют нормативные акты.
        - Проверяет, что все нормативные акты из указанной коллекции относятся к одним и тем же юрлицам.
        - Проверяет, есть ли у пользователя клиента с заданным ID заданное право и возвращает кэш наличия прав у пользователя клиента.
        - Проверяет, что каждый нормативный акт из указанной коллекции относится к заданному клиенту.
        - Проверяет, что пользователь клиента имеет доступ к типам документов каждого нормативного акта.
        - Проверяет, что пользователь клиента имеет доступ хотя бы к одному отделу клиента, на которые распространяется заданный нормативный акт.
        - В метод должен быть передан список разрешённых отделов, который включает в себя все дочерние и родительские отделы разрешённых отделов.
        - Это нужно из-за бизнес-правила: нормативный акт, который распространяется на выбранный отдел, должен быть доступен и сотруднику, который имеет доступ только к дочерним отделам выбранного отдела.
        - Нормативный акт не удалён.
        - Срок действия нормативного акта не закончился.
        - Конвертация файла нормативного акта в PDF/A завершилась.
        - Проверяет, что все указанные нормативные акты были утверждены, если они требуют утверждения.
        - Нормативный акт требует утверждения, если у него существует утверждающий документ.
        - Пользователь клиента имеет право PERSONAL_DATA.
        - Пользователь клиента имеет право PERSONAL_DATA на уровне одного из юрлиц.
        - Один из замещаемых пользователей клиента имеет право PERSONAL_DATA.
        - Пользователь клиента имеет права для получения данных должностей сотрудников.
        - Если ID должностей сотрудников заданы, то они корректны.
        - Если ID отделов клиента заданы, то они корректны.
        - У пользователя клиента есть доступ к отделам клиента с заданными ID.
        - Если ID сотрудников в данных фильтрации заданы, то они корректны.
        - Проверяет, что если операции в облаке включены, то лимит на выполнение операций создания печатной формы файла для заданного тенанта не превышен.
        - Проверяет, есть ли у пользователя клиента с заданным ID для заданного юрлица заданное право с учётом замещений.
        - В случае замещения в режиме кадровика дополнительно проверяются его активные замещения.
        - Проверяет, что текущий пользователь относится к заданному клиенту и возвращает пользователя клиента, если он существует.
        - Проверяет, что ID клиента, заданный в виде строки, соответствует формату, и возвращает типизированный ID клиента.
        - Проверяет существование клиента по заданному ID и возвращает клиента, если он существует.
        - Проверяет, что клиент не удален.
        - Проверяет, что ни один ID нормативного акта из списка не равен null.
        - Проверяет, что список нормативных актов задан.
        - Проверяет, что список ID нормативных актов во внешней системе не равен null и не пуст.
        - Проверяет, что ни один ID нормативного акта во внешней системе из списка не равен null.
        - Проверяет существование всех нормативных актов по заданному списку ID во внешней системе.
        - Проверяет, что ни один нормативный акт из указанной коллекции не удалён.
        - Проверяет, что действие нормативного акта не закончилось для каждого нормативного акта из указанной коллекции.
        - Проверяет, что конвертация файла в PDF/A формат завершилась для каждого нормативного акта из указанной коллекции.
        - Проверяет, есть ли у пользователя клиента с заданным ID заданное право, учитывая замещения.
        - Список ID должностей сотрудников равен null.
        - Список ID должностей сотрудников пуст.
        - Список содержит только ID существующих должностей сотрудников.
        - Список ID отделов клиента равен null.
        - Список ID отделов клиента пуст.
        - Список содержит только ID существующих отделов клиента.
        - Среди ID сотрудников нет null-элементов.
        - По заданным ID существуют сотрудники.
        - Все сотрудники относятся к одному клиенту.
        - Все сотрудники находятся в юрлицах, на которые распространяется нормативный акт.
        - Ни один из сотрудников не уволен.
        - Все сотрудники подтверждены.
        - Отделы сотрудников входят в список разрешенных отделов пользователя клиента, выполняющего операцию.
        - Пользователь клиента имеет право EMPLOYEE_POSITIONS.
        - Пользователь клиента имеет право EMPLOYEE_POSITIONS на уровне одного из юрлиц.
        - Заполняет данные для фильтрации сотрудников отделами, которые являются потомками для заданных в фильтрах отделов, или очищает список отделов, если фильтрация по отделам не требуется.
        - Фильтрация по отделам не требуется, если текущий пользователь клиента имеет доступ ко всем отделам клиента и в данных фильтрации не заданы ID отделов.
        - Проверяет, что лимит на выполнение операций создания печатной формы файла для заданного тенанта не превышен.
        - Проверяет, что ни один ID должности сотрудника не равен null.
        - Проверяет, что все UUID, заданные в списке, соответствуют существующим должностям сотрудников и возвращает список должностей сотрудников.
        - Проверяет, что ни один ID отдела клиента не равен null.
        - Проверяет, что все UUID, заданные в списке, соответствуют существующим отделам клиента и возвращает список отделов клиента.
        - Проверяет, что сотрудники относятся к юрлицам, на которые распространяется нормативный акт.
        - Проверяет, что сотрудники не уволены.
        - Проверяет, что все сотрудники, заданные в данных фильтрации, подтверждены.
        - Проверяет, что среди списка ID сотрудников ни один не равен null.
        - Проверяет, что сотрудники существуют по всем заданным ID, и возвращает список сотрудников.
        - Проверяет, что все сотрудники принадлежат клиенту с заданным ID.
        - Проверяет, что отделы сотрудников входят в список разрешенных отделов пользователя клиента с учетом замещений.
        - Проверяет, что заданный сотрудник относится к заданному клиенту.
        - Проверяет, что отделы сотрудников доступны пользователю клиента с учётом контекста текущей операции.
      parameters:
        - $ref: '#/components/parameters/FormatParameter'
        - name: Impersonated-User-Id
          description: Идентификатор пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            format: uuid
        - name: Impersonated-User-Id-Type
          description: Тип идентификатора пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            enum:
              - HR_LINK_ID
              - SNILS
              - EXTERNAL_ID
        - name: Impersonated-User-Id-External-System-Type
          description: |
            Идентификатор внешней системы при аутентификации через мастер-токен.
          in: header
          schema:
            type: string
        - name: clientId
          in: path
          required: true
          description: Идентификатор клиента.
          schema:
            type: string
            format: uuid
        - name: notInvitedEmployeesAllowed
          in: query
          description: Разрешена отправка ЛНА сотрудникам без приглашения или без подписи?
          schema:
            type: boolean
            x-nullable: true
            default: false
      requestBody:
        description: Тело запроса SendBulkOfNormativeActsToSigningDTO
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SendBulkOfNormativeActsToSigningDTO'
      responses:
        '200':
          description: Успешная операция.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    type: boolean
                  sendToSigningTasks:
                    type: array
                    description: Список данных созданных задач на отправку нормативных актов на подписание сотрудникам.
                    items:
                      $ref: '#/components/schemas/NormativeActSendToSigningTaskWithNormativeActDTO'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '429':
          $ref: '#/components/responses/TooManyRequests'
  /api/v1/clients/{clientId}/normativeActs/sendForApproval:
    put:
      tags:
        - normativeActs
      summary: Отправить на утверждение
      operationId: normativeActSendForApproval
      security:
        - SessionCookieAuth: []
        - UserApiTokenAuth: []
        - MasterTokenAuth: []
      description: |
        ### Описание метода

        > **⚠️ Будьте осторожны!**
        >
        > Методы PUT перезаписывают запись целиком: любые непереданные поля считаются null и затирают данные в БД.
        > Поэтому при обновлении нужно указывать все поля.
         Метод реализует процесс утверждения ЛНА руководителем перед отправкой на ознакомление сотрудникам. #### Описание процесса: 1. Кадровик создает ЛНА, в разделе ЛНА HRlink. 1. В форме создания ЛНА кадровик может включить опцию «Требуется утверждение руководителем», благодаря которой процесс утверждения ЛНА будет происходить через HRlink. Это опционально, для того чтобы можно было использовать ЛНА в старом формате (загружая уже утвержденный документ). 2. Включив опцию утверждения, кадровик выбирает руководителя в системе, который будет утверждать документ ЛНА (подписывать его УКЭП'ом). 3. Кадровик заполняет остальные поля и загружает ЛНА в систему.
        2. Загруженный ЛНА, который создан с опцией утверждения, отображается в реестре ЛНА. 1. Выделив его в реестре, кадровик отправляет ЛНА на утверждение выбранному ранее руководителю.
        3. Руководитель получает документ с ЛНА на подписание и подписывает его УКЭП'ом
        4. После того как ЛНА был подписан (утвержден) руководителем, кадровик может производить действия с ЛНА: отправить на ознакомление сотрудникам, включить автоотправку.
        5. Отправив утвержденный ЛНА сотруднику, сотрудник получит его в качестве документа, запущенного по маршруту («Руководитель первый»), уже подписанным руководителем (такой документ будет автоматически сформирован, на основании подписанного руководителем документа). Это позволит сотруднику подписывать ЛНА с помощью ПРР.

        ### Валидации запроса

        - Тело запроса задано.
        - ID клиента и пользователя заданы корректно.
        - Список нормативных актов задан корректно.
        - Для каждого нормативного акта: * ID нормативного акта задан и по нему существует нормативный акт.
        - Если версия нормативного акта задана, то она равна версии нормативного акта в БД.
        - У пользователя клиента есть право NORMATIVE_ACTS_SEND_FOR_APPROVAL на уровне клиента или право NORMATIVE_ACTS_SEND_FOR_APPROVAL на уровне сотрудника клиента.
        - Пользователь клиента имеет доступ к типам документов каждого нормативного акта.
        - Пользователь клиента имеет доступ до всех отделов каждого нормативного акта.
        - Нормативный акт не удалён.
        - Срок действия нормативного акта не закончился.
        - Конвертация файла нормативного акта в PDF/A завершилась.
        - Для нормативного акта существует связка с утверждающим документом.
        - Для нормативного акта утверждающий документ ещё не был отправлен на подпись.
        - Существует активный пакет СМС и лимит СМС в пакете лицензий не исчерпан.
        - Лимит на изготовление печатной формы не будет исчерпан, если операции выполняются в облаке.
        - ID клиента соответствует формату UUID.
        - По заданному ID клиента существует клиент.
        - Пользователь, выполняющий операцию, относится к клиенту.
        - Список нормативных актов задан.
        - В списке нормативных актов нет null-элементов.
        - Проверяет, есть ли у пользователя клиента с заданным ID заданное право и возвращает кэш наличия прав у пользователя клиента.
        - Должен быть задан ID HR-Link'а или ID во внешней системе. Если заданы оба, то приоритет у ID HR-Link'а.
        - Если задан ID, то по заданному ID должен существовать нормативный акт.
        - Если задан ID, то нормативный акт должен относиться к заданному клиенту.
        - Если задан ID во внешней системе, то по заданному ID во внешней системе и заданному ID клиента должен существовать нормативный акт.
        - Проверяет, что если версия нормативного задана, то она равна версии нормативного акта в БД.
        - Проверяет, что пользователь клиента имеет доступ ко всем юрлицам в заданном списке.
        - Проверяет, что пользователь клиента имеет доступ к типам документов каждого нормативного акта.
        - Проверяет, что пользователь клиента имеет доступ ко всем отделам каждого нормативного акта.
        - Проверяет, что для всех нормативных актов существуют связки с утверждающими документами.
        - Проверяет, что ни для какого нормативного акта утверждающий документ не был отправлен на подписание.
        - Для этого достаточно проверять наличие ID документа у модели-связки, т.к.
        - Проверяет, что текущий пользователь относится к заданному клиенту и возвращает пользователя клиента, если он существует.
        - Проверяет, что ID клиента, заданный в виде строки, соответствует формату, и возвращает типизированный ID клиента.
        - Проверяет существование клиента по заданному ID и возвращает клиента, если он существует.
        - Проверяет, что клиент не удален.
        - Проверяет, что список нормативных актов задан.
        - Задан ID нормативного акта в системе Hr-link или во внешней системе.
        - Если задан ID нормативного акта в системе Hr-link, то по нему должен существовать нормативный акт, относящийся к заданному клиенту.
        - Если задан ID нормативного акта во внешней системе, то по нему должен существовать нормативный акт.
        - Проверяет, что каждый нормативный акт из указанной коллекции относится к заданному клиенту.
        - Проверяет существование нормативного акта по заданному ID во внешней системе и возвращает нормативный акт, если он существует.
        - Проверяет, что ни один нормативный акт из указанной коллекции не удалён.
        - Проверяет, что действие нормативного акта не закончилось для каждого нормативного акта из указанной коллекции.
        - Проверяет, что конвертация файла в PDF/A формат завершилась для каждого нормативного акта из указанной коллекции.
      parameters:
        - $ref: '#/components/parameters/FormatParameter'
        - name: Impersonated-User-Id
          description: Идентификатор пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            format: uuid
        - name: Impersonated-User-Id-Type
          description: Тип идентификатора пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            enum:
              - HR_LINK_ID
              - SNILS
              - EXTERNAL_ID
        - name: Impersonated-User-Id-External-System-Type
          description: |
            Идентификатор внешней системы при аутентификации через мастер-токен.
          in: header
          schema:
            type: string
        - name: clientId
          in: path
          required: true
          description: Идентификатор клиента.
          schema:
            type: string
            format: uuid
      requestBody:
        description: Тело запроса SendNormativeActsForApprovalRequestDto
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SendNormativeActsForApprovalRequestDto'
      responses:
        '200':
          description: Успешная операция.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    type: boolean
                  normativeActs:
                    type: array
                    description: Данные нормативных актов, отправленных на утверждение.
                    items:
                      $ref: '#/components/schemas/NormativeActDTO'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '429':
          $ref: '#/components/responses/TooManyRequests'
  /api/v1/clients/{clientId}/normativeActsByExternalId/{normativeActExternalId}:
    get:
      tags:
        - normativeActs
      summary: Получить ЛНА по внешнему ID
      operationId: normativeActGetNormativeActByExternalId
      security:
        - SessionCookieAuth: []
        - UserApiTokenAuth: []
        - MasterTokenAuth: []
      description: |
        ### Описание метода

        Возвращает нормативный акт по ID во внешней системе.

        ### Валидации запроса

        - Клиент существует, не удалён, и к нему относится пользователь, выполняющий операцию.
        - ID нормативного акта задан корректно.
        - Нормативный акт существует по заданному ID.
        - Нормативный акт относится к заданному клиенту.
        - У пользователя клиента есть право `NORMATIVE_ACTS` на уровне клиента или право `NORMATIVE_ACTS` на уровне сотрудника клиента в юрлице, которому принадлежит нормативный акт.
        - Пользователь клиента имеет доступ к типу документа нормативного акта.
        - Пользователь клиента имеет доступ хотя бы к одному отделу клиента, на который распространяется нормативный акт.
        - Проверяет, что ID нормативного акта задан корректно и возвращает нормативный акт, если он существует.
        - ID клиента соответствует формату UUID.
        - По заданному ID клиента существует клиент.
        - Пользователь, выполняющий операцию, относится к клиенту.
        - Проверяет, есть ли у пользователя клиента с заданным ID заданное право и возвращает кэш наличия прав у пользователя клиента.
        - Проверяет, что у пользователя есть заданные права хотя бы в одном из юрлиц, на которые распространяется нормативный акт.
        - Проверяет, что пользователь клиента имеет доступ к заданному типу документов.
        - Проверяет, что пользователь клиента имеет доступ хотя бы к одному отделу клиента, на которые распространяется заданный нормативный акт.
        - В метод должен быть передан список разрешённых отделов, который включает в себя все дочерние и родительские отделы разрешённых отделов.
        - Это нужно из-за бизнес-правила: нормативный акт, который распространяется на выбранный отдел, должен быть доступен и сотруднику, который имеет доступ только к дочерним отделам выбранного отдела.
        - Проверяет, что текущий пользователь относится к заданному клиенту и возвращает пользователя клиента, если он существует.
        - Проверяет, что ID клиента, заданный в виде строки, соответствует формату, и возвращает типизированный ID клиента.
        - Проверяет существование клиента по заданному ID и возвращает клиента, если он существует.
        - Проверяет, что клиент не удален.
        - Проверяет, есть ли у пользователя клиента с заданным ID для хотя бы одного из указанных юрлиц заданное право с учётом замещений.
        - В случае замещения в режиме кадровика дополнительно проверяются его активные замещения.
      parameters:
        - $ref: '#/components/parameters/FormatParameter'
        - name: Impersonated-User-Id
          description: Идентификатор пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            format: uuid
        - name: Impersonated-User-Id-Type
          description: Тип идентификатора пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            enum:
              - HR_LINK_ID
              - SNILS
              - EXTERNAL_ID
        - name: Impersonated-User-Id-External-System-Type
          description: |
            Идентификатор внешней системы при аутентификации через мастер-токен.
          in: header
          schema:
            type: string
        - name: clientId
          in: path
          required: true
          description: Идентификатор клиента.
          schema:
            type: string
            format: uuid
        - name: normativeActExternalId
          in: path
          required: true
          description: Идентификатор ЛНА во внешней системе.
          schema:
            type: string
      responses:
        '200':
          description: Успешная операция.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    type: boolean
                  normativeAct:
                    $ref: '#/components/schemas/NormativeActDTO'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '429':
          $ref: '#/components/responses/TooManyRequests'
    put:
      tags:
        - normativeActs
      summary: Обновить ЛНА по внешнему ID
      operationId: normativeActUpdateNormativeActByExternalId
      security:
        - SessionCookieAuth: []
        - UserApiTokenAuth: []
        - MasterTokenAuth: []
      description: |
        ### Описание метода

        > **⚠️ Будьте осторожны!**
        >
        > Методы PUT перезаписывают запись целиком: любые непереданные поля считаются null и затирают данные в БД.
        > Поэтому при обновлении нужно указывать все поля.
         Обновляет данные нормативного акта по ID во внешней системе.

        ### Валидации запроса

        - Клиент существует, не удалён, и к нему относится пользователь, выполняющий операцию.
        - ID нормативного акта задан корректно.
        - Нормативный акт существует по заданному ID.
        - Нормативный акт относится к заданному клиенту.
        - У пользователя клиента есть право `NORMATIVE_ACTS_UPDATE` на уровне клиента или право `NORMATIVE_ACTS_UPDATE` на уровне сотрудника клиента в юрлице, которому принадлежит нормативный акт.
        - Пользователь клиента имеет доступ к типу документа нормативного акта.
        - Пользователь клиента имеет доступ ко всем отделам клиента, на которые распространяется нормативный акт.
        - Нормативный акт не удалён.
        - Данные для обновления нормативного акта заданы корректно.
        - Проверяет, что ID нормативного акта задан корректно и возвращает нормативный акт, если он существует.
        - ID клиента соответствует формату UUID.
        - По заданному ID клиента существует клиент.
        - Пользователь, выполняющий операцию, относится к клиенту.
        - Проверяет, есть ли у пользователя клиента с заданным ID заданное право и возвращает кэш наличия прав у пользователя клиента.
        - Проверяет, есть ли у пользователя клиента с заданным ID для заданного юрлица заданное право с учётом замещений.
        - В случае замещения в режиме кадровика дополнительно проверяются его активные замещения.
        - Проверяет, что пользователь клиента имеет доступ к заданному типу документов.
        - Проверяет, что пользователь клиента имеет доступ ко всем отделам клиента, на которые распространяется заданный нормативный акт.
        - Если нормативный акт распространяется на все отделы, то у пользователя клиента должен быть доступ к корневому отделу.
        - Проверяет, что ни один нормативный акт из указанной коллекции не удалён.
        - Проверяет, что текущий пользователь относится к заданному клиенту и возвращает пользователя клиента, если он существует.
        - Проверяет, что ID клиента, заданный в виде строки, соответствует формату, и возвращает типизированный ID клиента.
        - Проверяет существование клиента по заданному ID и возвращает клиента, если он существует.
        - Проверяет, что клиент не удален.
        - Проверяет, что пользователь клиента имеет доступ ко всем заданным отделам.
      parameters:
        - $ref: '#/components/parameters/FormatParameter'
        - name: Impersonated-User-Id
          description: Идентификатор пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            format: uuid
        - name: Impersonated-User-Id-Type
          description: Тип идентификатора пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            enum:
              - HR_LINK_ID
              - SNILS
              - EXTERNAL_ID
        - name: Impersonated-User-Id-External-System-Type
          description: |
            Идентификатор внешней системы при аутентификации через мастер-токен.
          in: header
          schema:
            type: string
        - name: clientId
          in: path
          required: true
          description: Идентификатор клиента.
          schema:
            type: string
            format: uuid
        - name: normativeActExternalId
          in: path
          required: true
          description: Идентификатор ЛНА во внешней системе.
          schema:
            type: string
      requestBody:
        description: Тело запроса UpdateNormativeActDTO
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateNormativeActDTO'
      responses:
        '200':
          description: Успешная операция.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    type: boolean
                  normativeAct:
                    $ref: '#/components/schemas/NormativeActDTO'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '429':
          $ref: '#/components/responses/TooManyRequests'
  /api/v1/clients/{clientId}/normativeActsByExternalId/{normativeActExternalId}/convertedFile:
    get:
      tags:
        - normativeActs
      summary: Скачать ЛНА (PDF/A) по внешнему ID
      operationId: normativeActGetConvertedFileByExternalId
      security:
        - SessionCookieAuth: []
        - UserApiTokenAuth: []
        - MasterTokenAuth: []
      description: |
        ### Описание метода

        Возвращает редирект для скачивания файла нормативного акта в формате PDF/A по ID во внешней системе.

        ### Валидации запроса

        - Клиент существует, не удалён, и к нему относится пользователь, выполняющий операцию.
        - По заданному ID во внешней системе существует нормативный акт.
        - Конвертация файла нормативного акта в PDF/A формат завершилась.
        - У пользователя клиента есть право `NORMATIVE_ACTS` на уровне пользователя клиента или право `NORMATIVE_ACTS` на уровне сотрудника клиента.
        - Пользователь клиента имеет доступ к типу документа нормативного акта.
        - Пользователь клиента имеет доступ хотя бы к одному отделу, на которые распространяется нормативный акт.
        - ID клиента соответствует формату UUID.
        - По заданному ID клиента существует клиент.
        - Пользователь, выполняющий операцию, относится к клиенту.
        - Проверяет, что текущий пользователь относится к заданному клиенту и возвращает пользователя клиента, если он существует.
        - Проверяет, что ID клиента, заданный в виде строки, соответствует формату, и возвращает типизированный ID клиента.
        - Проверяет существование клиента по заданному ID и возвращает клиента, если он существует.
        - Проверяет, что клиент не удален.
      parameters:
        - $ref: '#/components/parameters/FormatParameter'
        - name: Impersonated-User-Id
          description: Идентификатор пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            format: uuid
        - name: Impersonated-User-Id-Type
          description: Тип идентификатора пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            enum:
              - HR_LINK_ID
              - SNILS
              - EXTERNAL_ID
        - name: Impersonated-User-Id-External-System-Type
          description: |
            Идентификатор внешней системы при аутентификации через мастер-токен.
          in: header
          schema:
            type: string
        - name: clientId
          in: path
          required: true
          description: Идентификатор клиента.
          schema:
            type: string
            format: uuid
        - name: normativeActExternalId
          in: path
          required: true
          description: Идентификатор ЛНА во внешней системе.
          schema:
            type: string
      responses:
        '200':
          description: Этот код ответа не используется, при успехе выполнения метод всегда возвращает ответ с кодом 303.
        '303':
          description: |
            HTTP-заголовок `Location` будет содержать URL, по которому скачивается файл.<br/>
            ✍️ Postman и некоторые другие API-клиенты по умолчанию следуют редиректам и сразу скачивают файл, указанный в
            HTTP-заголовке `Location`. Это поведение настраивается на стороне клиента.
          headers:
            Location:
              schema:
                type: string
              description: URL, по которому скачивается файл
              example: https://host.hr-link.ru/api/v1/files?token=<<одноразовый_токен>>
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '429':
          $ref: '#/components/responses/TooManyRequests'
  /api/v1/clients/{clientId}/normativeActsByExternalId/{normativeActExternalId}/getRelatedDocuments:
    post:
      tags:
        - normativeActs
      summary: Получить документы ЛНА по внешнему ID
      operationId: normativeActGetFilteredRelatedDocumentsByExternalId
      security:
        - SessionCookieAuth: []
        - UserApiTokenAuth: []
        - MasterTokenAuth: []
      description: |
        ### Описание метода

        Возвращает документы нормативного акта по ID нормативного акта во внешней системе, с учетом фильтрации и пагинации.

        ### Валидации запроса

        - Клиент существует, не удалён, и к нему относится пользователь, выполняющий операцию.
        - По заданному ID внешней системы существует нормативный акт.
        - Базовая валидация проходит корректно.
        - ID клиента соответствует формату UUID.
        - По заданному ID клиента существует клиент.
        - Пользователь, выполняющий операцию, относится к клиенту.
        - Проверяет, что текущий пользователь относится к заданному клиенту и возвращает пользователя клиента, если он существует.
        - Проверяет, что ID клиента, заданный в виде строки, соответствует формату, и возвращает типизированный ID клиента.
        - Проверяет существование клиента по заданному ID и возвращает клиента, если он существует.
        - Проверяет, что клиент не удален.
      parameters:
        - $ref: '#/components/parameters/FormatParameter'
        - name: Impersonated-User-Id
          description: Идентификатор пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            format: uuid
        - name: Impersonated-User-Id-Type
          description: Тип идентификатора пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            enum:
              - HR_LINK_ID
              - SNILS
              - EXTERNAL_ID
        - name: Impersonated-User-Id-External-System-Type
          description: |
            Идентификатор внешней системы при аутентификации через мастер-токен.
          in: header
          schema:
            type: string
        - name: clientId
          in: path
          required: true
          description: Идентификатор клиента.
          schema:
            type: string
            format: uuid
        - name: normativeActExternalId
          in: path
          required: true
          description: Идентификатор ЛНА во внешней системе.
          schema:
            type: string
      requestBody:
        description: Тело запроса NormativeActDocumentsFilterDTO
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/NormativeActDocumentsFilterDTO'
      responses:
        '200':
          description: Успешная операция.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    type: boolean
                  normativeActDocuments:
                    type: array
                    description: Список документов нормативного акта.
                    items:
                      $ref: '#/components/schemas/NormativeActDocumentAndSignerDTO'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '429':
          $ref: '#/components/responses/TooManyRequests'
  /api/v1/clients/{clientId}/normativeActsByExternalId/{normativeActExternalId}/printFormFile:
    get:
      tags:
        - normativeActs
      summary: Скачать печатную форму ЛНА по внешнему ID
      operationId: normativeActGetPrintFormFileByExternalId
      security:
        - SessionCookieAuth: []
        - UserApiTokenAuth: []
        - MasterTokenAuth: []
      description: |
        ### Описание метода

        Метод по идентификатору ЛНА во внешней системе возвращает редирект для скачивания файла печатной формы нормативного акта с учетом того, что он может быть предварительно утвержден руководителем.

        ### Валидации запроса

        - Клиент существует, не удалён, и к нему относится пользователь, выполняющий операцию.
        - По заданному ID во внешней системе существует нормативный акт.
        - Выполняются общие условия валидации печатной формы нормативного акта.
        - ID клиента соответствует формату UUID.
        - По заданному ID клиента существует клиент.
        - Пользователь, выполняющий операцию, относится к клиенту.
        - Проверяет, что текущий пользователь относится к заданному клиенту и возвращает пользователя клиента, если он существует.
        - Проверяет, что ID клиента, заданный в виде строки, соответствует формату, и возвращает типизированный ID клиента.
        - Проверяет существование клиента по заданному ID и возвращает клиента, если он существует.
        - Проверяет, что клиент не удален.
      parameters:
        - $ref: '#/components/parameters/FormatParameter'
        - name: Impersonated-User-Id
          description: Идентификатор пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            format: uuid
        - name: Impersonated-User-Id-Type
          description: Тип идентификатора пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            enum:
              - HR_LINK_ID
              - SNILS
              - EXTERNAL_ID
        - name: Impersonated-User-Id-External-System-Type
          description: |
            Идентификатор внешней системы при аутентификации через мастер-токен.
          in: header
          schema:
            type: string
        - name: clientId
          in: path
          required: true
          description: Идентификатор клиента.
          schema:
            type: string
            format: uuid
        - name: normativeActExternalId
          in: path
          required: true
          description: Идентификатор ЛНА во внешней системе.
          schema:
            type: string
      responses:
        '200':
          description: Этот код ответа не используется, при успехе выполнения метод всегда возвращает ответ с кодом 303.
        '303':
          description: |
            HTTP-заголовок `Location` будет содержать URL, по которому скачивается файл.<br/>
            ✍️ Postman и некоторые другие API-клиенты по умолчанию следуют редиректам и сразу скачивают файл, указанный в
            HTTP-заголовке `Location`. Это поведение настраивается на стороне клиента.
          headers:
            Location:
              schema:
                type: string
              description: URL, по которому скачивается файл
              example: https://host.hr-link.ru/api/v1/files?token=<<одноразовый_токен>>
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '429':
          $ref: '#/components/responses/TooManyRequests'
  /api/v1/clients/{clientId}/normativeActsByExternalId/{normativeActExternalId}/sendToSigning:
    post:
      tags:
        - normativeActsSigning
      summary: Отправить на подписание по внешнему ID
      operationId: normativeActSendToSigningByExternalId
      security:
        - SessionCookieAuth: []
        - UserApiTokenAuth: []
        - MasterTokenAuth: []
      description: |
        ### Описание метода

        ### Валидации запроса

        - Тело запроса задано.
        - Клиент существует, не удалён, и к нему относится пользователь, выполняющий операцию.
        - ID нормативного акта задан корректно.
        - Нормативный акт существует по заданному ID.
        - Нормативный акт относится к заданному клиенту.
        - Список ID юрлиц задан корректно.
        - Пользователь клиента, выполняющий операцию, имеет право PERSONAL_DATA на уровне пользователя клиента или PERSONAL_DATA на уровне сотрудника хотя бы одного из юрлиц при использовании фильтрации по номеру документа сотрудника.
        - Пользователь клиента имеет доступ к типу документа нормативного акта.
        - Пользователь клиента имеет доступ хотя бы к одному отделу клиента, на который распространяется нормативный акт.
        - Нормативный акт не удалён.
        - Конвертация файла нормативного акта в PDF/A формат завершилась.
        - Нормативный акт был утвержден, если он требует утверждения.
        - Данные фильтрации заданы корректно для выполнения операции отправки нормативного акта сотрудникам.
        - Лимит на выполнение операций создания печатной формы файла для заданного тенанта не превышен.
        - Существует активный пакет СМС и лимит СМС для заданного тенанта не превышен.
        - Проверяет, что ID нормативного акта задан корректно и возвращает нормативный акт, если он существует.
        - Каждое юр лицо связано с заданным нормативным актом.
        - У пользователя клиента есть право во всех заданных юр лицах, которым принадлежит нормативный акт.
        - ID клиента соответствует формату UUID.
        - По заданному ID клиента существует клиент.
        - Пользователь, выполняющий операцию, относится к клиенту.
        - Проверяет, есть ли у пользователя клиента с заданным ID заданное право и возвращает кэш наличия прав у пользователя клиента.
        - Пользователь клиента имеет право PERSONAL_DATA.
        - Пользователь клиента имеет право PERSONAL_DATA на уровне одного из юрлиц.
        - Один из замещаемых пользователей клиента имеет право PERSONAL_DATA.
        - Проверяет, что пользователь клиента имеет доступ к типам документов каждого нормативного акта.
        - Проверяет, что пользователь клиента имеет доступ хотя бы к одному отделу клиента, на которые распространяется заданный нормативный акт.
        - В метод должен быть передан список разрешённых отделов, который включает в себя все дочерние и родительские отделы разрешённых отделов.
        - Это нужно из-за бизнес-правила: нормативный акт, который распространяется на выбранный отдел, должен быть доступен и сотруднику, который имеет доступ только к дочерним отделам выбранного отдела.
        - Проверяет, что ни один нормативный акт из указанной коллекции не удалён.
        - Проверяет, что конвертация файла в PDF/A формат завершилась для каждого нормативного акта из указанной коллекции.
        - Проверяет, что нормативный акт был утвержден, если он требует утверждения.
        - Нормативный акт требует утверждения, если у него существует утверждающий документ.
        - Пользователь клиента имеет права для получения данных должностей сотрудников.
        - Если ID должностей сотрудников заданы, то они корректны.
        - Если ID отделов клиента заданы, то они корректны.
        - У пользователя клиента есть доступ к отделам клиента с заданными ID.
        - Если ID сотрудников в данных фильтрации заданы, то они корректны.
        - Проверяет, что если операции в облаке включены, то лимит на выполнение операций создания печатной формы файла для заданного тенанта не превышен.
        - Проверяет, есть ли у пользователя клиента с заданным ID для заданного юрлица заданное право с учётом замещений.
        - В случае замещения в режиме кадровика дополнительно проверяются его активные замещения.
        - Проверяет, что текущий пользователь относится к заданному клиенту и возвращает пользователя клиента, если он существует.
        - Проверяет, что ID клиента, заданный в виде строки, соответствует формату, и возвращает типизированный ID клиента.
        - Проверяет существование клиента по заданному ID и возвращает клиента, если он существует.
        - Проверяет, что клиент не удален.
        - Проверяет, есть ли у пользователя клиента с заданным ID заданное право, учитывая замещения.
        - Список ID должностей сотрудников равен null.
        - Список ID должностей сотрудников пуст.
        - Список содержит только ID существующих должностей сотрудников.
        - Список ID отделов клиента равен null.
        - Список ID отделов клиента пуст.
        - Список содержит только ID существующих отделов клиента.
        - Среди ID сотрудников нет null-элементов.
        - По заданным ID существуют сотрудники.
        - Все сотрудники относятся к одному клиенту.
        - Все сотрудники находятся в юрлицах, на которые распространяется нормативный акт.
        - Ни один из сотрудников не уволен.
        - Все сотрудники подтверждены.
        - Отделы сотрудников входят в список разрешенных отделов пользователя клиента, выполняющего операцию.
        - Пользователь клиента имеет право EMPLOYEE_POSITIONS.
        - Пользователь клиента имеет право EMPLOYEE_POSITIONS на уровне одного из юрлиц.
        - Заполняет данные для фильтрации сотрудников отделами, которые являются потомками для заданных в фильтрах отделов, или очищает список отделов, если фильтрация по отделам не требуется.
        - Фильтрация по отделам не требуется, если текущий пользователь клиента имеет доступ ко всем отделам клиента и в данных фильтрации не заданы ID отделов.
        - Проверяет, что лимит на выполнение операций создания печатной формы файла для заданного тенанта не превышен.
        - Проверяет, что ни один ID должности сотрудника не равен null.
        - Проверяет, что все UUID, заданные в списке, соответствуют существующим должностям сотрудников и возвращает список должностей сотрудников.
        - Проверяет, что ни один ID отдела клиента не равен null.
        - Проверяет, что все UUID, заданные в списке, соответствуют существующим отделам клиента и возвращает список отделов клиента.
        - Проверяет, что сотрудники относятся к юрлицам, на которые распространяется нормативный акт.
        - Проверяет, что сотрудники не уволены.
        - Проверяет, что все сотрудники, заданные в данных фильтрации, подтверждены.
        - Проверяет, что среди списка ID сотрудников ни один не равен null.
        - Проверяет, что сотрудники существуют по всем заданным ID, и возвращает список сотрудников.
        - Проверяет, что все сотрудники принадлежат клиенту с заданным ID.
        - Проверяет, что отделы сотрудников входят в список разрешенных отделов пользователя клиента с учетом замещений.
        - Проверяет, что заданный сотрудник относится к заданному клиенту.
        - Проверяет, что отделы сотрудников доступны пользователю клиента с учётом контекста текущей операции.
      parameters:
        - $ref: '#/components/parameters/FormatParameter'
        - name: Impersonated-User-Id
          description: Идентификатор пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            format: uuid
        - name: Impersonated-User-Id-Type
          description: Тип идентификатора пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            enum:
              - HR_LINK_ID
              - SNILS
              - EXTERNAL_ID
        - name: Impersonated-User-Id-External-System-Type
          description: |
            Идентификатор внешней системы при аутентификации через мастер-токен.
          in: header
          schema:
            type: string
        - name: clientId
          in: path
          required: true
          description: Идентификатор клиента.
          schema:
            type: string
            format: uuid
        - name: normativeActExternalId
          in: path
          required: true
          description: Идентификатор ЛНА во внешней системе.
          schema:
            type: string
        - name: notInvitedEmployeesAllowed
          in: query
          description: Разрешена отправка ЛНА сотрудникам без приглашения или без подписи?
          schema:
            type: boolean
            x-nullable: true
            default: false
      requestBody:
        description: Тело запроса EmployeeFilterDTO
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/EmployeeFilterDTO'
      responses:
        '200':
          description: Успешная операция.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    type: boolean
                  sendToSigningTask:
                    $ref: '#/components/schemas/NormativeActSendToSigningTaskWithNormativeActDTO'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '429':
          $ref: '#/components/responses/TooManyRequests'
  /api/v1/clients/{clientId}/normativeActs/getRegistry:
    post:
      tags:
        - normativeActs
      summary: Реестр ЛНА
      operationId: normativeActRegistryGetRegistry
      security:
        - SessionCookieAuth: []
        - UserApiTokenAuth: []
        - MasterTokenAuth: []
      description: |
        ### Описание метода

        Возвращает реестр нормативных актов.

        ### Валидации запроса

        - Тело запроса задано.
        - Данные для постраничного получения корректны.
        - Количество возвращаемых при запросе элементов задано корректно.
        - Клиент существует, не удалён, и к нему относится пользователь, выполняющий операцию.
        - У пользователя клиента должно быть право `NORMATIVE_ACTS` на уровне клиента или право `NORMATIVE_ACTS` на уровне сотрудника клиента.
        - Заданные списки ID корректны.
        - Период начала действия нормативного акта задан корректно.
        - Период окончания действия нормативного акта задан корректно.
        - Период создания нормативного акта задан корректно.
        - Если список ID нормативных актов задан, то он корректен.
        - Если список ID юрлиц задан, то он корректен.
        - Если список ID отделов задан, то он корректен.
        - Если список ID должностей сотрудников задан, то он корректен.
        - Если список ID создателей нормативных актов задан, то он корректен.
        - Проверяет, что количество элементов, которое нужно пропустить при выборке с пагинацией, корректно.
        - Проверяет, что заданное количество возвращаемых при запросе элементов корректно.
        - ID клиента соответствует формату UUID.
        - По заданному ID клиента существует клиент.
        - Пользователь, выполняющий операцию, относится к клиенту.
        - Проверяет, есть ли у пользователя клиента с заданным ID заданное право и возвращает кэш наличия прав у пользователя клиента.
        - Проверяет, что период начала действия нормативного акта задан корректно.
        - Проверяет, что период окончания действия нормативного акта задан корректно.
        - Проверяет, что период создания нормативного акта задан корректно.
        - Список не содержит null элементов.
        - Все указанные нормативные акты существуют.
        - Все указанные нормативные акты относятся к заданному клиенту.
        - У пользователя клиента есть доступ хотя бы к одному из отделов каждого нормативного акта.
        - У пользователя клиента есть доступ к юрлицу каждого нормативного акта.
        - У пользователя клиента есть доступ к типу документа каждого нормативного акта.
        - Все указанные юрлица существуют.
        - Все указанные юрлица относятся к заданному клиенту.
        - У пользователя клиента есть доступ ко всем указанным юрлицам.
        - Все указанные отделы существуют.
        - Все указанные отделы относятся к заданному клиенту.
        - Пользователь клиента должен иметь доступ ко всем заданным отделам.
        - Все указанные должности сотрудников существуют.
        - Все указанные должности сотрудников относятся к заданному клиенту.
        - По всем заданным ID создателей нормативных актов существуют пользователи клиентов.
        - Все найденные пользователи клиента относятся к заданному клиенту.
        - Проверяет, что текущий пользователь относится к заданному клиенту и возвращает пользователя клиента, если он существует.
        - Проверяет, что ID клиента, заданный в виде строки, соответствует формату, и возвращает типизированный ID клиента.
        - Проверяет существование клиента по заданному ID и возвращает клиента, если он существует.
        - Проверяет, что клиент не удален.
        - Проверяет, что ни один ID нормативного акта не является пустым.
        - Проверяет, что список нормативных актов задан.
        - Проверяет, что каждый нормативный акт из указанной коллекции относится к заданному клиенту.
        - Проверяет, что пользователь клиента имеет доступ хотя бы к одному отделу клиента, на которые распространяется заданный нормативный акт.
        - В метод должен быть передан список разрешённых отделов, который включает в себя все дочерние и родительские отделы разрешённых отделов.
        - Это нужно из-за бизнес-правила: нормативный акт, который распространяется на выбранный отдел, должен быть доступен и сотруднику, который имеет доступ только к дочерним отделам выбранного отдела.
        - Проверяет, что пользователь клиента имеет доступ ко всем юрлицам в заданном списке.
        - Проверяет, что пользователь клиента имеет доступ ко всем заданным типам документов.
        - Проверяет, что ни один ID юрлица не является пустым.
        - Проверяет существование всех юрлиц клиента по заданному списку ID.
        - Проверяет, что заданное юрлицо относится к заданному клиенту.
        - Проверяет, что ни один ID отдела клиента не является пустым.
        - Проверяет, что все UUID, заданные в списке, соответствуют существующим отделам клиента и возвращает список отделов клиента.
        - Проверяет, что заданный отдел клиента относится к заданному клиенту.
        - Проверяет, что каждый из отделов с указанными ID разрешён пользователю клиента с учётом контекста текущей операции или имеет отдела-потомка, разрешённого пользователю клиента.
        - Проверяет, что ни один ID должности сотрудника не является пустым.
        - Проверяет, что все UUID, заданные в списке, соответствуют существующим должностям сотрудников и возвращает список должностей сотрудников.
        - Проверяет, что заданная должность сотрудника относится к заданному клиенту.
        - Проверяет, что пользователи клиента существуют по всем заданным ID, и возвращает список пользователей клиента.
        - Проверяет, что заданный пользователь клиента принадлежит клиенту с заданным ID.
        - Проверяет, что каждый отдел с ID из указанного множества имеет потомка из указанного множества ID отделов, разрешённых пользователю.
        - Сначала находим высоты указанных отделов в полном дереве отделов, сортируем отделы по убыванию их высоты, затем проверяем каждый отдел на наличие доступного пользователю потомка.
        - Если для некоторого отдела A выяснилось, что у него есть/нет доступного пользователю потомка, то в дальнейшем при проверке отдела B, который является предком A, мы не будем повторно обходить поддерево A.
      parameters:
        - $ref: '#/components/parameters/FormatParameter'
        - name: Impersonated-User-Id
          description: Идентификатор пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            format: uuid
        - name: Impersonated-User-Id-Type
          description: Тип идентификатора пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            enum:
              - HR_LINK_ID
              - SNILS
              - EXTERNAL_ID
        - name: Impersonated-User-Id-External-System-Type
          description: |
            Идентификатор внешней системы при аутентификации через мастер-токен.
          in: header
          schema:
            type: string
        - name: clientId
          in: path
          required: true
          description: Идентификатор клиента.
          schema:
            type: string
            format: uuid
      requestBody:
        description: Тело запроса NormativeActRegistryFilterDTO
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/NormativeActRegistryFilterDTO'
      responses:
        '200':
          description: Успешная операция.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    type: boolean
                  normativeActs:
                    type: array
                    description: Список нормативных актов.
                    items:
                      $ref: '#/components/schemas/NormativeActDTO'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '429':
          $ref: '#/components/responses/TooManyRequests'
  /api/v1/clients/{clientId}/employees/getPlannedVacationPeriod:
    post:
      tags:
        - vacationSchedule
      summary: Запланированные отпуска
      operationId: plannedVacationGetPlannedVacationPeriods
      security:
        - SessionCookieAuth: []
        - UserApiTokenAuth: []
        - MasterTokenAuth: []
      description: |
        ### Описание метода

        Метод возвращает сокращенную информацию по отпускам пользователей
        - идентификатор сотрудника и периоды его запланированных отпусков.

        ### Валидации запроса

        - На тенанте включен функционал «График отпусков».
        - Тело запроса задано.
        - Все обязательные поля тела запроса заданы.
        - Статус запрашиваемых отпусков либо не задан, либо соответствует одному из допустимых значений.
        - Даты начала и конца периода заданы корректно.
        - Параметры пагинации заданы корректно.
        - Клиент существует, не удалён, и к нему относится пользователь, выполняющий операцию.
        - Пользователь клиента, который отправляет запрос, имеет право `EMPLOYEE_PLANNED_VACATIONS` на уровне пользователя клиента или на уровне одного из сотрудников.
        - Список ID юрлиц задан корректно.
        - Список ID отделов задан корректно.
        - Список ID сотрудников задан корректно.
        - Проверяет, что заданы все обязательные поля тела запроса.
        - Даты начала и конца периода либо заданы обе, либо не заданы совсем.
        - Если даты начала и конца периода заданы, то они соответствуют формату `yyyy-MM-dd`.
        - Если даты заданы, то начало периода не позже конца периода.
        - Проверяет, что количество возвращаемых при запросе элементов задано корректно.
        - Лимит не должен превышать допустимое максимальное значение.
        - Выполняет проверку корректности переданного списка юрлиц для фильтрации.
        - Если список юрлиц задан
        - выполняется проверка корректности переданных ID и доступность юрлиц для текущего пользователя клиента.
        - Выполняет проверку корректности переданного списка отделов для фильтрации.
        - Иначе
        - выполняется проверка корректности переданных ID и доступность отделов для текущего пользователя клиента.
        - Выполняет проверку корректности переданного списка сотрудников для фильтрации.
        - Если список сотрудников задан
        - выполняется проверка корректности переданных ID и доступность сотрудников для текущего пользователя клиента по отделам и юрлицам.
        - Проверяет, что на данном тенанте включен функционал графика отпусков.
        - Проверяет, что количество элементов, которое нужно пропустить при выборке с пагинацией, корректно.
        - ID клиента соответствует формату UUID.
        - По заданному ID клиента существует клиент.
        - Пользователь, выполняющий операцию, относится к клиенту.
        - Проверяет, есть ли у пользователя клиента с заданным ID заданное право, и возвращает список юрлиц, где пользователь клиента имеет заданное право.
        - Проверяет, что заданное количество возвращаемых при запросе элементов корректно.
        - Список юрлиц не содержит пустых элементов.
        - Для каждого элемента из списка юрлиц задан либо ID, либо ID во внешней системе.
        - Юрлица по переданным ID существуют.
        - Юрлица по переданным ID принадлежат заданному клиенту.
        - Проверяет, что список ID юрлиц содержит только доступные юрлица.
        - Список отделов не содержит пустых элементов.
        - Для каждого элемента из списка отделов задан либо ID, либо ID во внешней системе.
        - Отделы по переданным ID существуют.
        - Отделы по переданным ID принадлежат заданному клиенту.
        - Список сотрудников не содержит пустых элементов.
        - Сотрудники по заданным ID существуют.
        - Если заданы внешние ID сотрудников, то по каждому внешнему ID сотрудника можно либо однозначно определить сотрудника, либо сотрудники с одинаковыми внешними ID относятся к юрлицам для фильтрации.
        - Проверяет, что текущий пользователь относится к заданному клиенту и возвращает пользователя клиента, если он существует.
        - Проверяет, что ID клиента, заданный в виде строки, соответствует формату, и возвращает типизированный ID клиента.
        - Проверяет существование клиента по заданному ID и возвращает клиента, если он существует.
        - Проверяет, что клиент не удален.
        - Проверяет существование всех юрлиц клиента по заданному списку ID.
        - Проверяет, что заданное юрлицо относится к заданному клиенту.
        - Проверяет, что все UUID, заданные в списке, соответствуют существующим отделам клиента и возвращает список отделов клиента.
        - Проверяет, что заданный отдел клиента относится к заданному клиенту.
        - Проверяет идентифицированных работников по внешним ID на принадлежность к данным переданных юрлиц.
        - Сотрудники принадлежат заданному клиенту.
        - Проверяет, что сотрудник по заданному ID существует.
        - Проверяет, что сотрудник принадлежит клиенту с заданным ID.
        - Проверяет, что сотрудник по заданному ID во внешней системе существует и возвращает его, если он существует.
        - Если юрлицо указано, то существование сотрудника проверяется в заданном юрлице.
        - Если юрлицо не указано, то существование сотрудника проверяется в клиенте с заданным ID.
        - Проверяет, что заданный сотрудник относится к заданному клиенту.
      parameters:
        - $ref: '#/components/parameters/FormatParameter'
        - name: Impersonated-User-Id
          description: Идентификатор пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            format: uuid
        - name: Impersonated-User-Id-Type
          description: Тип идентификатора пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            enum:
              - HR_LINK_ID
              - SNILS
              - EXTERNAL_ID
        - name: Impersonated-User-Id-External-System-Type
          description: |
            Идентификатор внешней системы при аутентификации через мастер-токен.
          in: header
          schema:
            type: string
        - name: clientId
          in: path
          required: true
          description: Идентификатор клиента.
          schema:
            type: string
            format: uuid
      requestBody:
        description: Тело запроса PlannedVacationEmployeeReqDTO
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PlannedVacationEmployeeReqDTO'
      responses:
        '200':
          description: Успешная операция.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    type: boolean
                  employeePlannedVacationPeriods:
                    type: array
                    description: Данные о запланированных отпусках работников.
                    items:
                      $ref: '#/components/schemas/PlannedVacationEmployeeResDTO'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '429':
          $ref: '#/components/responses/TooManyRequests'
  /api/v1/clients/{clientId}/routeTemplates:
    get:
      tags:
        - routeTemplates
      summary: Получить шаблоны маршрутов
      operationId: signingRouteTemplateGetSigningRouteTemplates
      security:
        - SessionCookieAuth: []
        - UserApiTokenAuth: []
        - MasterTokenAuth: []
      description: |
        ### Описание метода

        В ответе вернутся только маршруты подписания с указанным в `signingObjectType` типом подписываемого объекта. Если данный параметр не указывать, то в ответ вернутся все шаблоны маршрутов подписания.

        ### Валидации запроса

        - Клиент существует, не удалён, и к нему относится пользователь, выполняющий операцию.
        - Если тип подписываемого объекта задан, то он имеет корректный формат.
        - Если задано контекстное право, то оно должно существовать и соответствовать контексту получения справочника шаблонов маршрутов подписания.
        - Текущий пользователь имеет необходимые права на получение справочника шаблонов маршрутов подписания.
        - ID клиента соответствует формату UUID.
        - По заданному ID клиента существует клиент.
        - Пользователь, выполняющий операцию, относится к клиенту.
        - Проверяет, что тип подписываемого объекта имеет корректный формат.
        - Проверяет, что пользователь клиента имеет необходимые права для получения справочника шаблонов маршрутов подписания заданного типа с учётом контекста текущей операции и возвращает необходимый тип и данные контекстного права.
        - Проверяет, что текущий пользователь относится к заданному клиенту и возвращает пользователя клиента, если он существует.
        - Проверяет, что ID клиента, заданный в виде строки, соответствует формату, и возвращает типизированный ID клиента.
        - Проверяет существование клиента по заданному ID и возвращает клиента, если он существует.
        - Проверяет, что клиент не удален.
      parameters:
        - $ref: '#/components/parameters/FormatParameter'
        - name: Impersonated-User-Id
          description: Идентификатор пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            format: uuid
        - name: Impersonated-User-Id-Type
          description: Тип идентификатора пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            enum:
              - HR_LINK_ID
              - SNILS
              - EXTERNAL_ID
        - name: Impersonated-User-Id-External-System-Type
          description: |
            Идентификатор внешней системы при аутентификации через мастер-токен.
          in: header
          schema:
            type: string
        - name: clientId
          in: path
          required: true
          description: Идентификатор клиента.
          schema:
            type: string
            format: uuid
        - name: signingObjectType
          in: query
          schema:
            $ref: '#/components/schemas/SigningObjectType'
        - name: includeDeactivated
          in: query
          description: Включить в ответ деактивированные маршруты?
          schema:
            type: boolean
            x-nullable: true
            default: false
        - name: permissionContext
          in: query
          description: |
            Контекстное право, , в контексте которого выполняется операция.

            Если `signingObjectType = DOCUMENT`

            - `DOCUMENTS_CREATE` — Право для создания документов.
            - `DOCUMENTS_UPDATE` — Право для обновления документов.
            - `NORMATIVE_ACTS_CREATE` — Право для создания нормативных актов.
            - `NORMATIVE_ACTS_UPDATE` — Право для обновления нормативных актов.
            - `ROUTE_TEMPLATES` — Право для группировки прав, связанных с шаблонами маршрутов подписания.

            Если `signingObjectType = APPLICATION`

            - `APPLICATION_TYPES` — Право для работы с типами заявлений.
            - `APPLICATION_TYPES_CREATE` — Право для создания типов заявлений.
            - `APPLICATION_TYPES_UPDATE` — Право для обновления типов заявлений.
            - `ROUTE_TEMPLATES` — Право для группировки прав, связанных с шаблонами маршрутов подписания.
          schema:
            type: string
            enum:
              - DOCUMENTS_CREATE
              - DOCUMENTS_UPDATE
              - NORMATIVE_ACTS_CREATE
              - NORMATIVE_ACTS_UPDATE
              - APPLICATION_TYPES
              - APPLICATION_TYPES_CREATE
              - APPLICATION_TYPES_UPDATE
              - ROUTE_TEMPLATES
      responses:
        '200':
          description: Успешная операция.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    type: boolean
                  signingRouteTemplates:
                    type: array
                    description: Список шаблонов маршрутов подписания.
                    items:
                      $ref: '#/components/schemas/SigningRouteTemplateDTO'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '429':
          $ref: '#/components/responses/TooManyRequests'
    post:
      tags:
        - routeTemplates
      summary: Создать шаблон маршрута
      operationId: signingRouteTemplateCreateSigningRouteTemplate
      security:
        - SessionCookieAuth: []
      description: |
        ### Описание метода

        Создает и возвращает шаблон маршрута подписания для клиента.

        ### Валидации запроса

        Дополнительных валидаций запроса нет.
      parameters:
        - $ref: '#/components/parameters/FormatParameter'
        - name: Impersonated-User-Id
          description: Идентификатор пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            format: uuid
        - name: Impersonated-User-Id-Type
          description: Тип идентификатора пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            enum:
              - HR_LINK_ID
              - SNILS
              - EXTERNAL_ID
        - name: Impersonated-User-Id-External-System-Type
          description: |
            Идентификатор внешней системы при аутентификации через мастер-токен.
          in: header
          schema:
            type: string
        - name: clientId
          in: path
          required: true
          description: Идентификатор клиента.
          schema:
            type: string
            format: uuid
      requestBody:
        description: Тело запроса CreateSigningRouteTemplate
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateSigningRouteTemplate'
      responses:
        '200':
          description: Успешная операция.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    type: boolean
                  signingRouteTemplate:
                    $ref: '#/components/schemas/SigningRouteTemplateDTO'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '429':
          $ref: '#/components/responses/TooManyRequests'
  /api/v1/currentUser:
    get:
      tags:
        - currentUser
      summary: Текущий пользователь
      operationId: userGetCurrentUser
      deprecated: true
      security:
        - SessionCookieAuth: []
        - UserApiTokenAuth: []
        - MasterTokenAuth: []
      description: |
        > **Метод устарел.** Используйте [Текущий пользователь (v2)](/public/api/hrlink/user-get-current-user-v-2) — `GET /api/v2/currentUser`.

        ### Описание метода

        Возвращает данные текущего пользователя: массив `employees` — сведения о том, в каких юрлицах каких клиентов пользователь является сотрудником (если пользователь числится сотрудником в двух юрлицах в одном клиенте, в массиве будет два элемента, по одному на юрлицо); массив `certificates` — сертификаты ЭП пользователя.

        ### Валидации запроса

        Дополнительных валидаций нет.
      parameters:
        - $ref: '#/components/parameters/FormatParameter'
        - name: Impersonated-User-Id
          description: Идентификатор пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            format: uuid
        - name: Impersonated-User-Id-Type
          description: Тип идентификатора пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            enum:
              - HR_LINK_ID
              - SNILS
              - EXTERNAL_ID
        - name: Impersonated-User-Id-External-System-Type
          description: |
            Идентификатор внешней системы при аутентификации через мастер-токен.
          in: header
          schema:
            type: string
      responses:
        '200':
          description: Успешная операция.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    type: boolean
                  currentUser:
                    $ref: '#/components/schemas/CurrentUserDTO'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '429':
          $ref: '#/components/responses/TooManyRequests'
  /api/v2/currentUser:
    get:
      tags:
        - currentUser
      summary: Текущий пользователь (v2)
      operationId: userGetCurrentUserV2
      security:
        - SessionCookieAuth: []
        - UserApiTokenAuth: []
        - MasterTokenAuth: []
      description: |
        ### Описание метода

        Возвращает расширенные данные текущего пользователя: персональные данные (`personalData`), список пользователей клиента (`clientUsers`) с сотрудниками, юрлицами руководителя, ролями и настройками реестров, данные о цифровых подписях (`digitalSignatureData`, включая сертификаты, задачи на выпуск УНЭП и запросы на смену канала) и права (`permissions`) на уровне администратора системы и в разрезе каждого клиента.

        Текущий пользователь определяется по заголовку `User-Api-Token`, cookie сессии или мастер-токену с заголовками `Impersonated-User-Id` и `Impersonated-User-Id-Type`.

        ### Валидации запроса

        Дополнительных валидаций нет.
      parameters:
        - $ref: '#/components/parameters/FormatParameter'
        - name: Impersonated-User-Id
          description: Идентификатор пользователя при аутентификации через мастер-токен.
          in: header
          schema:
            type: string
            format: uuid
        - name: Impersonated-User-Id-Type
          description: Тип идентификатора пользователя при аутентификации через мастер-токен.
          in: header
          schema:
            type: string
            enum:
              - HR_LINK_ID
              - SNILS
              - EXTERNAL_ID
        - name: Impersonated-User-Id-External-System-Type
          description: Идентификатор внешней системы при аутентификации через мастер-токен.
          in: header
          schema:
            type: string
      responses:
        '200':
          description: Успешная операция.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    type: boolean
                  currentUser:
                    $ref: '#/components/schemas/CurrentUserV2Dto'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '429':
          $ref: '#/components/responses/TooManyRequests'
  /api/v1/clients/{clientId}/vacations/getRegistry:
    post:
      tags:
        - vacationSchedule
      summary: Реестр отпусков
      operationId: vacationGetVacationRegistry
      security:
        - SessionCookieAuth: []
        - UserApiTokenAuth: []
        - MasterTokenAuth: []
      description: |
        ### Описание метода

        Возвращает полную информацию по отпускам пользователей для реестра отпусков в зависимости от типа пользователя: `HR`, `EMPLOYER`, `EMPLOYEE`.
        - Для Руководителя будут возвращены данные по сотрудникам, которые подчиняются ему по структуре отделов и по управленческой структуре.
        - Для Сотрудника будут возвращены данные по сотрудникам, которые являются коллегами по структуре отделов и по управленческой структуре.

        ### Валидации запроса

        - На тенанте включен функционал «График отпусков».
        - Тело запроса задано.
        - Клиент существует, не удалён, и к нему относится пользователь, выполняющий операцию.
        - Тип реестра задан корректно.
        - Пользователь имеет право доступа к указанному типу реестра.
        - Данные фильтрации реестра отпусков сотрудников заданы корректно.
        - Проверяет, что на данном тенанте включен функционал графика отпусков.
        - ID клиента соответствует формату UUID.
        - По заданному ID клиента существует клиент.
        - Пользователь, выполняющий операцию, относится к клиенту.
        - Тип реестра задан.
        - Тип реестра соответствует одному из допустимых значений (`HR`, `EMPLOYEE`, `EMPLOYER`).
        - Выполняет проверку наличия прав пользователя клиента к указанному типу реестра.
        - Для реестра сотрудника (`EMPLOYEE`) сервер не проверяет права.
        - Для реестра руководителя (`EMPLOYER`) необходимо, чтобы любой не уволенный сотрудник пользователя клиента был руководителем хотя бы одного отдела или управленческим руководителем хотя бы одного неуволенного сотрудника.
        - Для реестра кадровика (`HR`) необходимо наличие переданных прав.
        - Год, за который возвращается информация об отпусках, задан.
        - Если месяц задан, он принимает возможные значения от 1 до 12.
        - Если задан флаг необходимости получения сотрудников без отпусков, то месяц не должен быть задан.
        - Список ID отделов задан корректно.
        - Список ID сотрудников задан корректно.
        - Параметры пагинации заданы корректно.
        - Проверяет, что текущий пользователь относится к заданному клиенту и возвращает пользователя клиента, если он существует.
        - Проверяет, что ID клиента, заданный в виде строки, соответствует формату, и возвращает типизированный ID клиента.
        - Проверяет существование клиента по заданному ID и возвращает клиента, если он существует.
        - Проверяет, что клиент не удален.
        - Проверяет, что если задан флаг необходимости получения сотрудников без отпусков, то месяц не должен быть задан.
        - По заданным ID существуют отделы клиента.
        - Список отделов задан корректно для заданного типа реестра.
        - Среди ID сотрудников нет пустых элементов.
        - По заданным ID существуют сотрудники.
        - Все сотрудники относятся к одному клиенту.
        - Сотрудники находятся в доступных текущему пользователю отделах клиента или находятся с пользователем клиента в одной управленческой структуре.
        - Сотрудники находятся в доступных текущему пользователю юрлицах или находятся с пользователем клиента в одной управленческой структуре.
        - Один из активных сотрудников пользователя клиента относится к отделу.
        - Один из коллег пользователя клиента по управленческой структуре относится к отделу.
        - Один из активных сотрудников пользователя клиента является руководителем отдела.
        - Один из подчинённых пользователя клиента по управленческой структуре относится к отделу.
        - У пользователя клиента есть доступ к отделам клиента с заданными ID.
        - Проверяет, что все UUID, заданные в списке, соответствуют существующим отделам клиента и возвращает список отделов клиента.
        - Проверяет, что сотрудники существуют по всем заданным ID, и возвращает список сотрудников.
        - Проверяет, что все сотрудники принадлежат клиенту с заданным ID.
        - Проверяет, что текущий пользователь клиента имеет доступ к юрлицам переданных сотрудников.
        - В случае, если пользователь клиента не имеет доступа к юрлицам некоторых сотрудников, проверяет наличие прав руководителя у пользователей клиентов этих сотрудников через связку хотя бы в одном из юрлиц, указанных в фильтре, или хотя бы в одном из доступных юрлиц, если фильтр по юрлицам не задан.
        - Проверяет, что заданный сотрудник относится к заданному клиенту.
      parameters:
        - $ref: '#/components/parameters/FormatParameter'
        - name: Impersonated-User-Id
          description: Идентификатор пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            format: uuid
        - name: Impersonated-User-Id-Type
          description: Тип идентификатора пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            enum:
              - HR_LINK_ID
              - SNILS
              - EXTERNAL_ID
        - name: Impersonated-User-Id-External-System-Type
          description: |
            Идентификатор внешней системы при аутентификации через мастер-токен.
          in: header
          schema:
            type: string
        - name: clientId
          in: path
          required: true
          description: Идентификатор клиента.
          schema:
            type: string
            format: uuid
        - name: type
          in: query
          description: |
            Тип реестра.
            - `HR` - Реестр кадровика.
            - `EMPLOYEE` - Реестр сотрудника.
            - `EMPLOYER` - Реестр представителя работодателя.
          schema:
            type: string
            x-nullable: false
            enum:
              - HR
              - EMPLOYEE
              - EMPLOYER
          required: true
      requestBody:
        description: Тело запроса VacationRegistryFilterDTO
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/VacationRegistryFilterDTO'
      responses:
        '200':
          description: Успешная операция.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    type: boolean
                  employees:
                    type: array
                    description: Список данных отпусков сотрудников.
                    items:
                      $ref: '#/components/schemas/EmployeeWithVacationsDTO'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '429':
          $ref: '#/components/responses/TooManyRequests'
  /api/v1/clients/{clientId}/vacations/setPlanningState:
    put:
      tags:
        - vacationSchedule
      summary: Управление планированием
      operationId: vacationSetPlanningState
      security:
        - SessionCookieAuth: []
        - UserApiTokenAuth: []
        - MasterTokenAuth: []
      description: |
        ### Описание метода

        > **⚠️ Будьте осторожны!**
        >
        > Методы PUT перезаписывают запись целиком: любые непереданные поля считаются null и затирают данные в БД.
        > Поэтому при обновлении нужно указывать все поля.
         Разрешает или запрещает планирование в тенанте на заданный год.
        Допустимо указывать настройку на текущий или следующий год. Если год не задан, то по умолчанию, настройка устанавливается на текущий год.
        Метод доступен только для пользователя или сотрудника пользователя с правом `VACATIONS_CHANGE_PLANNING_STATE`.

        ### Валидации запроса

        - На тенанте включен функционал «График отпусков».
        - Состояние включенности настройки возможности планирования отпусков на тенанте задано корректно.
        - Если задан год, на который устанавливается настройка планирования, то он принимает значение только текущего или будущего года.
        - Клиент существует, не удалён, и к нему относится пользователь, выполняющий операцию.
        - Инициатор процесса имеет право на изменение настройки возможности планирования отпусков.
        - Проверяет, что на данном тенанте включен функционал графика отпусков.
        - Состояние включенности настройки тенанта задано.
        - Состояние включенности настройки тенанта соответствует одному из допустимых значений.
        - Проверяет, что если год для планирования отпуска задан, то он задан корректно.
        - ID клиента соответствует формату UUID.
        - По заданному ID клиента существует клиент.
        - Пользователь, выполняющий операцию, относится к клиенту.
        - Проверяет, что пользователь имеет право на изменение настройки возможности планирования отпусков.
        - Пользователь должен иметь право `VACATIONS_CHANGE_PLANNING_STATE` на уровне пользователя клиента или право `VACATIONS_CHANGE_PLANNING_STATE` на уровне одного из сотрудников пользователя клиента.
        - Проверяет, что текущий пользователь относится к заданному клиенту и возвращает пользователя клиента, если он существует.
        - Проверяет, что ID клиента, заданный в виде строки, соответствует формату, и возвращает типизированный ID клиента.
        - Проверяет существование клиента по заданному ID и возвращает клиента, если он существует.
        - Проверяет, что клиент не удален.
      parameters:
        - $ref: '#/components/parameters/FormatParameter'
        - name: Impersonated-User-Id
          description: Идентификатор пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            format: uuid
        - name: Impersonated-User-Id-Type
          description: Тип идентификатора пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            enum:
              - HR_LINK_ID
              - SNILS
              - EXTERNAL_ID
        - name: Impersonated-User-Id-External-System-Type
          description: |
            Идентификатор внешней системы при аутентификации через мастер-токен.
          in: header
          schema:
            type: string
        - name: clientId
          in: path
          required: true
          description: Идентификатор клиента.
          schema:
            type: string
            format: uuid
        - name: planningState
          in: query
          description: |
            Состояние планирования отпусков в системе  HRlink.
            - `ENABLED` - Планирование разрешено.
            - `DISABLED` - Планирование запрещено.
          schema:
            type: string
            x-nullable: false
            enum:
              - ENABLED
              - DISABLED
          required: true
        - name: planningYear
          in: query
          description: |
            Год, на который устанавливается настройка планирования.
            Допустимо указывать значение только текущего или следующего года.
          schema:
            type: integer
            x-nullable: true
      responses:
        '200':
          description: Успешная операция.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    type: boolean
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '429':
          $ref: '#/components/responses/TooManyRequests'
  /api/v1/clients/{clientId}/vacationTypes:
    put:
      tags:
        - vacationTypes
      summary: Синхронизировать типы отпусков
      operationId: vacationTypeCreateOrUpdateVacationTypes
      security:
        - SessionCookieAuth: []
        - UserApiTokenAuth: []
        - MasterTokenAuth: []
      description: |
        ### Описание метода

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

        ### Валидации запроса

        - Клиент существует, не удалён, и к нему относится пользователь, выполняющий операцию.
        - Пользователь имеет право VACATION_TYPE_UPDATE на уровне пользователя клиента или право VACATION_TYPE_UPDATE на уровне любого из сотрудников пользователя.
        - Тело запроса задано.
        - Тело запроса задано корректно: * Внешний идентификатор отпуска задан (проверка аннотацией).
        - Наименование отпуска задано (проверка аннотацией).
        - Наименование не превышает 250 символов (проверка аннотацией).
        - ID клиента соответствует формату UUID.
        - По заданному ID клиента существует клиент.
        - Пользователь, выполняющий операцию, относится к клиенту.
        - Проверяет, что пользователь имеет права на создание/обновление типов отпусков.
        - Проверяет, что текущий пользователь относится к заданному клиенту и возвращает пользователя клиента, если он существует.
        - Проверяет, что ID клиента, заданный в виде строки, соответствует формату, и возвращает типизированный ID клиента.
        - Проверяет существование клиента по заданному ID и возвращает клиента, если он существует.
        - Проверяет, что клиент не удален.
      parameters:
        - $ref: '#/components/parameters/FormatParameter'
        - name: Impersonated-User-Id
          description: Идентификатор пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            format: uuid
        - name: Impersonated-User-Id-Type
          description: Тип идентификатора пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            enum:
              - HR_LINK_ID
              - SNILS
              - EXTERNAL_ID
        - name: Impersonated-User-Id-External-System-Type
          description: |
            Идентификатор внешней системы при аутентификации через мастер-токен.
          in: header
          schema:
            type: string
        - name: clientId
          in: path
          required: true
          description: Идентификатор клиента.
          schema:
            type: string
            format: uuid
      requestBody:
        description: Тело запроса CreateVacationTypesRequestDto
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateVacationTypesRequestDto'
      responses:
        '200':
          description: Успешная операция.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    type: boolean
                  vacationTypes:
                    type: array
                    description: Список типов отпусков.
                    items:
                      $ref: '#/components/schemas/CreateVacationTypeDto'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '429':
          $ref: '#/components/responses/TooManyRequests'
  /api/v1/apiTokens/current:
    get:
      tags:
        - apiToken
      summary: Информация о текущем API-токене
      operationId: userApiTokenGetTokenInfo
      security:
        - UserApiTokenAuth: []
      description: |
        ### Описание метода

        Возвращает данные текущего пользовательского API токена, использованного для авторизации запроса.

        ### Валидации запроса

        Дополнительные валидации запроса отсутствуют.
      parameters:
        - $ref: '#/components/parameters/FormatParameter'
      responses:
        '200':
          description: Успешная операция.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    type: boolean
                  token:
                    $ref: '#/components/schemas/ActiveUserApiTokenResponseDTO'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '429':
          $ref: '#/components/responses/TooManyRequests'
  /api/v1/files:
    get:
      tags:
        - files
      summary: Скачать файл (по токену)
      operationId: download
      security:
        - SessionCookieAuth: []
        - UserApiTokenAuth: []
        - MasterTokenAuth: []
      description: |
        ### Описание метода

        Обрабатывает запрос на скачивание файла с использованием токена.

        ### Валидации запроса

        - Токен скачивания должен быть валидным для указанного пользователя и тенанта.
      parameters:
        - $ref: '#/components/parameters/FormatParameter'
        - name: Impersonated-User-Id
          description: Идентификатор пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            format: uuid
        - name: Impersonated-User-Id-Type
          description: Тип идентификатора пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            enum:
              - HR_LINK_ID
              - SNILS
              - EXTERNAL_ID
        - name: Impersonated-User-Id-External-System-Type
          description: |
            Идентификатор внешней системы при аутентификации через мастер-токен.
          in: header
          schema:
            type: string
        - name: token
          in: query
          description: Токен для скачивания файла.
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Успешная операция.
          content:
            application/octet-stream: {}
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '429':
          $ref: '#/components/responses/TooManyRequests'
    post:
      tags:
        - files
      summary: Загрузить файл
      operationId: upload
      security:
        - SessionCookieAuth: []
        - UserApiTokenAuth: []
        - MasterTokenAuth: []
      description: |
        ### Описание метода

        Обрабатывает запрос загрузки файлов от пользователя.
        Поле, в котором передается файл, может иметь любое имя.
        В одном запросе можно передать один или несколько файлов. В случае отправки нескольких файлов следует давать полям разные имена.
        ID файла из ответа затем можно передавать в методы, которые ожидают ID файла. Например, в метод создания документа в поле fileId.

        ### Валидации запроса

        - Для каждого загруженного файла расширение должно быть допустимым.
      parameters:
        - $ref: '#/components/parameters/FormatParameter'
        - name: Impersonated-User-Id
          description: Идентификатор пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            format: uuid
        - name: Impersonated-User-Id-Type
          description: Тип идентификатора пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            enum:
              - HR_LINK_ID
              - SNILS
              - EXTERNAL_ID
        - name: Impersonated-User-Id-External-System-Type
          description: |
            Идентификатор внешней системы при аутентификации через мастер-токен.
          in: header
          schema:
            type: string
      responses:
        '200':
          description: Успешная операция.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    type: boolean
                  files:
                    type: array
                    description: ID загруженных файлов
                    items:
                      $ref: '#/components/schemas/FileDTO'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '429':
          $ref: '#/components/responses/TooManyRequests'
  /api/v1/files/{fileId}:
    get:
      tags:
        - files
      summary: Скачать публичный файл
      operationId: downloadFile
      security:
        - SessionCookieAuth: []
        - UserApiTokenAuth: []
        - MasterTokenAuth: []
      description: |
        ### Описание метода

        Обрабатывает запрос на получение публичного файла.

        ### Валидации запроса

        - `fileId` должен соответствовать формату UUID.
        - Файл должен существовать и не быть удалён.
        - Пользователь должен иметь доступ к файлу.
      parameters:
        - $ref: '#/components/parameters/FormatParameter'
        - name: Impersonated-User-Id
          description: Идентификатор пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            format: uuid
        - name: Impersonated-User-Id-Type
          description: Тип идентификатора пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            enum:
              - HR_LINK_ID
              - SNILS
              - EXTERNAL_ID
        - name: Impersonated-User-Id-External-System-Type
          description: |
            Идентификатор внешней системы при аутентификации через мастер-токен.
          in: header
          schema:
            type: string
        - name: fileId
          in: path
          required: true
          description: Идентификатор файла в системе HRlink.
          schema:
            type: string
            format: uuid
      responses:
        '200':
          description: Успешная операция.
          content:
            application/octet-stream: {}
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '429':
          $ref: '#/components/responses/TooManyRequests'
  /api/v2/largeDisposableFiles:
    get:
      tags:
        - files
      summary: Скачать одноразовый большой файл (по токену)
      operationId: filesDownloadLargeDisposableFile
      security:
        - SessionCookieAuth: []
        - UserApiTokenAuth: []
        - MasterTokenAuth: []
      description: |
        ### Описание метода

        Обрабатывает запрос на скачивание потенциально большого одноразового файла с использованием токена. Запрос проксируется напрямую на presigned-URL S3.

        ### Валидации запроса

        - Токен скачивания должен быть валидным для указанного пользователя и тенанта.
      parameters:
        - $ref: '#/components/parameters/FormatParameter'
        - name: Impersonated-User-Id
          description: Идентификатор пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            format: uuid
        - name: Impersonated-User-Id-Type
          description: Тип идентификатора пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            enum:
              - HR_LINK_ID
              - SNILS
              - EXTERNAL_ID
        - name: Impersonated-User-Id-External-System-Type
          description: |
            Идентификатор внешней системы при аутентификации через мастер-токен.
          in: header
          schema:
            type: string
        - name: token
          in: query
          description: Токен для скачивания файла.
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Успешная операция.
          content:
            application/octet-stream: {}
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '429':
          $ref: '#/components/responses/TooManyRequests'
  /api/v1/nqesIssuesByFingerprint/{fingerprint}/certificatePrintForm:
    get:
      tags:
        - nqesIssuing
      summary: Получить печатную форму сертификата УНЭП по отпечатку
      operationId: usersNqesGetCertificatePrintFormByFingerprint
      security:
        - SessionCookieAuth: []
        - UserApiTokenAuth: []
        - MasterTokenAuth: []
      description: |
        ### Описание метода

        Возвращает редирект для скачивания печатной формы сертификата УНЭП по отпечатку сертификата.

        ### Валидации запроса

        - Отпечаток сертификата задан.
        - Сертификат с заданным отпечатком существует.
        - Пользователь, выполняющий операцию, имеет доступ к сертификату.
      parameters:
        - $ref: '#/components/parameters/FormatParameter'
        - name: Impersonated-User-Id
          description: Идентификатор пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            format: uuid
        - name: Impersonated-User-Id-Type
          description: Тип идентификатора пользователя при аутентификации через мастер-токен
          in: header
          schema:
            type: string
            enum:
              - HR_LINK_ID
              - SNILS
              - EXTERNAL_ID
        - name: Impersonated-User-Id-External-System-Type
          description: |
            Идентификатор внешней системы при аутентификации через мастер-токен.
          in: header
          schema:
            type: string
        - name: fingerprint
          in: path
          required: true
          description: Отпечаток сертификата УНЭП.
          schema:
            type: string
      responses:
        '200':
          description: Этот код ответа не используется, при успехе выполнения метод всегда возвращает ответ с кодом 303.
        '303':
          description: |
            HTTP-заголовок `Location` содержит URL, по которому скачивается файл печатной формы.
          headers:
            Location:
              schema:
                type: string
              description: URL, по которому скачивается файл.
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '429':
          $ref: '#/components/responses/TooManyRequests'
components:
  securitySchemes:
    UserApiTokenAuth:
      type: apiKey
      description: Аутентификация по пользовательскому токену.
      in: header
      name: User-Api-Token
    MasterTokenAuth:
      type: apiKey
      description: Аутентификация по мастер-токену. Для работы с мастер-токеном передайте идентификатор целевого пользователя в заголовках `Impersonated-User-Id`, `Impersonated-User-Id-Type` и при необходимости `Impersonated-User-Id-External-System-Type`.
      in: header
      name: Master-Api-Token
    SessionCookieAuth:
      type: apiKey
      description: Аутентификация через cookie.
      in: cookie
      name: sessionId
  parameters:
    FormatParameter:
      name: format
      in: query
      description: |
        Формат запроса и ответа.
        Альтернативно формат может быть задан с помощью заголовков [Accept](https://developer.mozilla.org/en-US/docs/Web/HTTP/Reference/Headers/Accept) и [Content-Type](https://developer.mozilla.org/en-US/docs/Web/HTTP/Reference/Headers/Content-Type).
      schema:
        type: string
        default: JSON
        enum:
          - JSON
          - XML
  schemas:
    ApplicationTemplateFieldDTO:
      description: Данные пользовательского поля для подстановки в шаблон заявления сотрудника.
      type: object
      allOf:
        - properties:
            id:
              description: Идентификатор пользовательского поля.
              type: string
              format: uuid
        - properties:
            value:
              description: Значение пользовательского поля для подстановки в шаблон заявления. Формат значения зависит от того, в какое именно поле будет выполняться подстановка. На данный момент возможны типы - строка (STRING), целое число больше 0 (NUMBER), дата без времени (DATE).
              type: string
    CreateApplicationBaseDTO:
      description: Базовые данные для создания заявления сотрудника.
      type: object
      properties:
        legalEntityId:
          description: ID юрлица.
          type: string
          format: uuid
        legalEntityExternalId:
          description: ID юрлица во внешней системе.
          type: string
        fileId:
          description: |
            ID файла заявления сотрудника.
            Поле обязательное, если тип заявления - из файла.
            Допустимые  форматы файла заявления .pdf, .doc, .docx, .rtf, .xls, .xlsx, .jpeg, .jpg, .bmp, .png, .tiff.
          type: string
          format: uuid
        externalId:
          description: ID заявления сотрудника во внешней системе.
          type: string
    ParticipantDTO:
      description: Данные участника этапа шаблона маршрута подписания.
      type: object
      properties:
        id:
          description: ID участника этапа шаблона маршрута подписания.
          type: string
          format: uuid
        employeeId:
          description: ID сотрудника.
          type: string
          format: uuid
        employeeExternalId:
          description: ID сотрудника во внешней системе.
          type: string
      required:
        - id
    CreateApplicationV2DTO:
      description: Данные для создания заявления сотрудника.
      type: object
      allOf:
        - $ref: '#/components/schemas/CreateApplicationBaseDTO'
        - properties:
            participants:
              description: Список данных для создания участников маршрута подписания.
              type: array
              items:
                $ref: '#/components/schemas/ParticipantDTO'
            recipientIds:
              description: Список ID сотрудников-получателей заявления.
              type: array
              minItems: 1
              x-nullable: true
              items:
                x-nullable: false
                type: string
                format: uuid
          required:
            - participants
    UpdateApplicationV1DTO:
      description: Данные для обновления заявления сотрудника.
      type: object
      allOf:
        - properties:
            id:
              description: ID заявления.
              type: string
              format: uuid
              x-nullable: false
        - $ref: '#/components/schemas/CreateApplicationV2DTO'
    ModifySingletonApplicationGroupBaseDTO:
      description: Базовые данные для создания группы заявлений сотрудника.
      type: object
      properties:
        date:
          description: Дата заявлений в группе.
          type: string
          format: date-time
        number:
          description: Номер заявлений в группе. Если номер заявления задан, то он не должен быть пустой строкой или содержать только пробельные символы.
          type: string
          x-nullable: true
        typeId:
          description: Тип заявлений в группе.
          type: string
          format: uuid
        externalId:
          description: ID группы заявлений сотрудника во внешней системе.
          type: string
          x-nullable: true
        templateFields:
          description: Список данных пользовательских полей для подстановки в шаблон заявления сотрудника.
          type: array
          x-nullable: true
          items:
            $ref: '#/components/schemas/ApplicationTemplateFieldDTO'
        templateSystemFields:
          description: Список данных системных полей для подстановки в шаблон заявления сотрудника.
          type: array
          x-nullable: true
          items:
            $ref: '#/components/schemas/ApplicationTemplateFieldDTO'
        attachmentFileIds:
          description: Список ID файлов вложений.
          type: array
          x-nullable: true
          items:
            type: string
            format: uuid
        application:
          description: Данные для обновления заявления сотрудника.
          $ref: '#/components/schemas/UpdateApplicationV1DTO'
      required:
        - typeId
        - application
        - date
    CreateApplicationGroupV3DTO:
      description: Данные для создания группы заявлений сотрудника.
      type: object
      allOf:
        - $ref: '#/components/schemas/ModifySingletonApplicationGroupBaseDTO'
    ApplicationCreatorDTO:
      description: Данные создателя заявления.
      type: object
      allOf:
        - properties:
            id:
              description: Идентификатор создателя заявления.
              type: string
              format: uuid
        - properties:
            lastName:
              description: Фамилия.
              type: string
            firstName:
              description: Имя.
              type: string
            patronymic:
              description: Отчество.
              type: string
          required:
            - lastName
            - firstName
    ShortTypeDTO:
      description: Сокращенные данные типа заявления.
      type: object
      properties:
        id:
          description: Идентификатор типа заявления.
          type: string
          format: uuid
        name:
          description: Название типа заявления.
          type: string
        signingByEmployeeSesEnabled:
          description: Включена ли возможность подписания ПЭП со стороны Сотрудника?
          type: boolean
        substitutorCreationHintEnabled:
          description: Отображение подсказки о возможности назначения заместителя включено?
          type: boolean
    ApplicationGroupTemplateFieldValueData:
      type: object
      description: Данные значения поля шаблона группы заявлений.
      properties:
        id:
          description: Идентификатор значения поля.
          type: string
        externalId:
          description: Внешний идентификатор значения поля.
          type: string
        name:
          description: Наименование значения поля.
          type: string
    ApplicationTypeTemplateFieldCatalogType:
      description: |
        Тип справочника для выбора в поле шаблона типа заявления.
        - `LEGAL_ENTITIES_CATALOG` - Справочник юрлиц.
        - `CLIENT_DEPARTMENTS_CATALOG` - Справочник отделов клиента.
        - `EMPLOYEE_POSITIONS_CATALOG` - Справочник должностей сотрудников.
        - `CUSTOM_STRUCTURES_CATALOG` - Пользовательский справочник структур.
        - `EMPLOYEES_CATALOG` - Справочник сотрудников.
      type: string
      enum:
        - LEGAL_ENTITIES_CATALOG
        - CLIENT_DEPARTMENTS_CATALOG
        - EMPLOYEE_POSITIONS_CATALOG
        - CUSTOM_STRUCTURES_CATALOG
        - EMPLOYEES_CATALOG
    ApplicationTypeFieldCustomStructuresCatalogConfigurationValue:
      type: object
      description: Параметры справочника с типом `catalogType.CUSTOM_STRUCTURES_CATALOG`.
      properties:
        customStructure:
          type: object
          description: Данные пользовательского справочника.
          properties:
            id:
              description: Идентификатор пользовательского справочника.
              type: string
            externalId:
              description: Внешний идентификатор пользовательского справочника.
              type: string
            name:
              description: Наименование пользовательского справочника.
              type: string
    ApplicationGroupTemplateFieldCatalogConfiguration:
      type: object
      description: Настройки поля с типом `fieldType.CATALOG` группы заявлений.
      properties:
        catalogType:
          $ref: '#/components/schemas/ApplicationTypeTemplateFieldCatalogType'
        catalogConfiguration:
          description: Параметры справочника. Указывается только для справочника с типом `catalogType.CUSTOM_STRUCTURES_CATALOG`.
          $ref: '#/components/schemas/ApplicationTypeFieldCustomStructuresCatalogConfigurationValue'
    ApplicationGroupTemplateField:
      description: Данные поля шаблона, используемые для формирования печатной формы заявления.
      type: object
      properties:
        label:
          description: Название поля для отображения в заявлении.
          type: string
        note:
          description: Примечание поля.
          type: string
        sortOrder:
          description: Порядковый номер поля.
          type: integer
        substitutionKey:
          description: Ключ, который используется в шаблоне для подстановки значения.
          type: string
        value:
          description: Значение поля для подстановки в шаблон заявления.
          type: string
        valueData:
          description: Данные значения поля для подстановки в шаблон заявления. Заполняется только для поля с типом `fieldType.CATALOG`.
          $ref: '#/components/schemas/ApplicationGroupTemplateFieldValueData'
        fieldType:
          description: |
            Тип значения поля.
            - STRING - Строка.
            - NUMBER - Целое число больше 0.
            - DATE - Дата без времени. Например, '2021-10-22'.
            - SINGLE_SELECT - Выбранное значение из предложенного списка.
            - CATALOG - Справочник системы (выбранное значение из справочника).
          type: string
          enum:
            - STRING
            - NUMBER
            - DATE
            - SINGLE_SELECT
            - CATALOG
        required:
          description: Поле является обязательным?
          type: boolean
        configuration:
          description: Конфигурация пользовательского поля. Указывается только для `fieldType.CATALOG`
          $ref: '#/components/schemas/ApplicationGroupTemplateFieldCatalogConfiguration'
    ApplicationGroupTemplateFieldData:
      description: Данные полей шаблона, используемые для формирования печатной формы заявления.
      type: object
      properties:
        userFields:
          description: Список данных о пользовательских полях для подстановки в шаблон для изготовления печатной формы заявления.
          type: array
          items:
            $ref: '#/components/schemas/ApplicationGroupTemplateField'
        systemFields:
          description: Список данных о системных полях, заполняемых пользователем, для подстановки в шаблон для изготовления печатной формы заявления.
          type: array
          items:
            $ref: '#/components/schemas/ApplicationGroupTemplateField'
    BaseApplicationGroupDTO:
      description: Базовые данные группы заявлений сотрудника.
      type: object
      allOf:
        - properties:
            id:
              description: Идентификатор группы заявлений.
              type: string
              format: uuid
        - properties:
            creator:
              description: Создатель группы заявлений.
              $ref: '#/components/schemas/ApplicationCreatorDTO'
            applicationType:
              description: Тип группы заявлений.
              $ref: '#/components/schemas/ShortTypeDTO'
            date:
              description: Дата заявлений в группе.
              type: string
              format: date
            number:
              description: Номер заявлений в группе.
              type: string
              x-nullable: true
            templateFieldData:
              description: Данные полей шаблона, используемые для формирования печатной формы заявления.
              $ref: '#/components/schemas/ApplicationGroupTemplateFieldData'
            externalId:
              description: ID во внешней системе группы заявлений сотрудника.
              type: string
              x-nullable: true
            createdDate:
              description: Момент времени, когда группа заявлений сотрудника была создана.
              type: string
              format: date-time
            sentDate:
              description: Момент времени, когда группа заявлений сотрудника была отправлена на подпись.
              type: string
              format: date-time
              x-nullable: true
            deleteInDays:
              description: Количество дней, через которые черновик заявления будет удален.
              type: integer
              format: int64
              x-nullable: true
    SigningRouteStageType:
      description: |
        Тип этапа маршрута подписания.
        - SIGNING - Подписание.
        - RECEIVING - Получение.
      type: string
      enum:
        - SIGNING
        - RECEIVING
    SigningRouteStageCompletenessCondition:
      description: |
        Условие завершения этапа.
        - ALL - Все участники этапа должны выполнить требуемые действия.
        - ANY - Любой участник этапа должен выполнить требуемое действие.
      type: string
      enum:
        - ALL
        - ANY
    SigningRouteParticipantType:
      description: |
        Тип участника.
        - EMPLOYEE - Сотрудник.
        - EMPLOYER - Представитель работодателя.
        - FIXED_EMPLOYEE - Конкретный сотрудник, указанный прямо в шаблоне маршрута.
        - SELECTABLE_EMPLOYEE - Сотрудник, которого можно будет указать при запуске документа по маршруту подписания.
        - ROLE - Любой сотрудник, имеющий заданную роль.
        - RESPONSIBLE - Участник, который является ответственным за подписываемую сущность.
      type: string
      enum:
        - EMPLOYEE
        - EMPLOYER
        - FIXED_EMPLOYEE
        - SELECTABLE_EMPLOYEE
        - ROLE
        - RESPONSIBLE
    SigningRouteParticipantActionType:
      description: |
        Тип действия, требуемый от участника этапа маршрута подписания.
        - SIGNING - Подписание.
        - APPROVING - Согласование.
        - RECEIVING - Получение.
        - PROCESSING - Обработка.
      type: string
      enum:
        - SIGNING
        - APPROVING
        - RECEIVING
        - PROCESSING
    RouteSigningType:
      description: |
        Способ подписания на маршруте.
        - SES - ПЭП.
        - CLOUD_NQES - Облачный УНЭП.
        - QES - УКЭП.
        - PRR - Через портал «Работа России».
        - GOV_KEY - Госключ.
        - ANY_APPLICABLE - Любой подходящий способ.
      type: string
      enum:
        - SES
        - CLOUD_NQES
        - QES
        - PRR
        - GOV_KEY
        - ANY_APPLICABLE
    DocflowSystemRoleKey:
      description: |
        Ключ системной роли документооборота.
        - HR - Кадровик.
      type: string
      enum:
        - HR
    I18nMessage:
      description: I18n-сообщение, определяющее ключ текста и параметры для подстановки в этот текст.
      type: object
      properties:
        EMPTY_PARAMS:
          description: Пустой массив, обозначающий отсутствие параметров подстановки в текст.
          type: array
          items:
            type: object
        key:
          description: Ключ текста.
          type: string
        params:
          description: Параметры для подстановки в текст.
          type: array
          items:
            type: object
    DocflowSystemRoleDTO:
      description: Данные системной роли документооборота.
      type: object
      allOf:
        - properties:
            id:
              description: Идентификатор роли.
              type: string
              format: uuid
        - properties:
            key:
              description: Ключ роли.
              $ref: '#/components/schemas/DocflowSystemRoleKey'
            name:
              description: Название роли.
              $ref: '#/components/schemas/I18nMessage'
    AutoSelectParticipantRuleType:
      description: |
        Тип автозаполнения участника маршрута подписания.
        - DEPARTMENT_HEAD_MANAGER - Автозаполнение руководителем отдела сотрудника (с учётом отделов, к которым относятся сами руководители).
        - FUNCTIONAL_HEAD_MANAGER - Автозаполнение управленческим руководителем.
        - HIERARCHICAL_DEPARTMENT_HEAD_MANAGER - Автозаполнение руководителем отдела с учётом иерархии отделов (без учёта отделов, к которым относятся руководители).
      type: string
      enum:
        - DEPARTMENT_HEAD_MANAGER
        - FUNCTIONAL_HEAD_MANAGER
        - HIERARCHICAL_DEPARTMENT_HEAD_MANAGER
    SigningRouteParticipantDTO:
      description: Данные участника этапа маршрута подписания.
      type: object
      properties:
        id:
          description: ID участника этапа маршрута подписания.
          type: string
          format: uuid
        type:
          description: Тип участника.
          $ref: '#/components/schemas/SigningRouteParticipantType'
        actionType:
          description: Требуемый тип действия от участника.
          $ref: '#/components/schemas/SigningRouteParticipantActionType'
        signingType:
          description: Способ подписания.
          $ref: '#/components/schemas/RouteSigningType'
        placeholder:
          description: Наименование участника.
          type: string
        employee:
          description: |
            Данные с ID сотрудника-участника этапа маршрута подписания.
            Используется при выбранном типе участника `FIXED_EMPLOYEE`.
          x-nullable: true
          type: object
          properties:
            id:
              description: Идентификатор сотрудника.
              type: string
              format: uuid
        isMultipleSigners:
          description: |
            На основе участника создается множество подписантов?
            Используется при выбранном типе участника `SELECTABLE_EMPLOYEE`.
          type: boolean
        systemRole:
          description: Данные системной роли документооборота.
          x-nullable: true
          $ref: '#/components/schemas/DocflowSystemRoleDTO'
        autoSelectRuleType:
          description: Тип автозаполнения участника.
          x-nullable: true
          $ref: '#/components/schemas/AutoSelectParticipantRuleType'
        relatedParticipantId:
          description: ID связанного участника.
          x-nullable: true
          type: string
          format: uuid
        templateId:
          description: ID участника этапа шаблона маршрута подписания.
          x-nullable: true
          type: string
          format: uuid
        required:
          description: Обязателен ли участник?
          type: boolean
        unchangeable:
          description: Участник является неизменяемым?
          type: boolean
          x-nullable: true
        forbiddenSelectYourself:
          description: Флаг, запрещающий заявителю в маршрутах по заявлениям выбрать себя или своих совместителей в качестве согласующего. <b>Значение может быть задано равным true только для участников типа `type=SELECTABLE_EMPLOYEE` в маршрутах по заявлениям. Всегда равно null для маршрутов по документам.
          type: boolean
          x-nullable: true
          default: null
    SigningRouteStageDTO:
      description: EmployeeRoleWithNameKeyDTO
      type: object
      properties:
        id:
          description: ID этапа маршрута подписания.
          type: string
          format: uuid
        indexNumber:
          description: Номер этапа в маршруте.
          type: integer
          format: int64
        type:
          description: Тип этапа.
          $ref: '#/components/schemas/SigningRouteStageType'
        completenessCondition:
          description: Условие завершения этапа.
          $ref: '#/components/schemas/SigningRouteStageCompletenessCondition'
        participants:
          description: Участники этапа.
          type: array
          items:
            $ref: '#/components/schemas/SigningRouteParticipantDTO'
        responsibleEnabled:
          description: На данном этапе происходит определения ответственного?
          type: boolean
        canDeleteBeforeStageCompleted:
          description: Можно удалить заявление до завершения этого этапа?
          type: boolean
    SigningRouteDTO:
      description: Данные маршрута подписания.
      type: object
      properties:
        id:
          description: ID маршрута подписания.
          type: string
          format: uuid
        name:
          description: Название маршрута.
          type: string
        templateId:
          description: ID шаблона маршрута подписания.
          type: string
          format: uuid
        stages:
          description: Участники этапа.
          type: array
          items:
            $ref: '#/components/schemas/SigningRouteStageDTO'
    BaseLegalEntityDTO:
      description: Основные данные юрлица.
      type: object
      properties:
        name:
          description: Название организации.
          type: string
        shortName:
          description: Короткое название организации.
          type: string
        externalId:
          description: Идентификатор во внешней системе.
          type: string
      required:
        - name
        - shortName
    ShortLegalEntityDTO:
      description: Сокращенные данные о юрлице.
      type: object
      allOf:
        - $ref: '#/components/schemas/BaseLegalEntityDTO'
        - properties:
            id:
              description: ID юрлица.
              type: string
              format: uuid
    PersonNameModelDTO:
      description: Данные с ID пользователя и ФИО человека.
      type: object
      allOf:
        - properties:
            id:
              description: Идентификатор пользователя клиента.
              type: string
              format: uuid
        - properties:
            lastName:
              description: Фамилия.
              type: string
            firstName:
              description: Имя.
              type: string
            patronymic:
              description: Отчество.
              type: string
    EmployeeWithPositionAndDepartmentDTO:
      description: Данные сотрудника с должностью и отделом.
      type: object
      allOf:
        - properties:
            id:
              description: Идентификатор сотрудника.
              type: string
              format: uuid
        - properties:
            externalId:
              description: ID сотрудника во внешней системе.
              type: string
            position:
              description: Должность сотрудника.
              type: object
              properties:
                id:
                  description: Идентификатор должности.
                  type: string
                  format: uuid
                name:
                  description: Название должности.
                  type: string
            department:
              type: object
              description: Отдел сотрудника.
              properties:
                id:
                  description: Идентификатор отдела.
                  type: string
                  format: uuid
                name:
                  description: Название отдела.
                  type: string
    EmployeeWithPositionAndDepartmentAndNumberDTO:
      description: Данные сотрудника с должностью, отделом и табельным номером.
      type: object
      allOf:
        - $ref: '#/components/schemas/EmployeeWithPositionAndDepartmentDTO'
        - properties:
            number:
              x-nullable: true
              description: |
                Табельный номер.
                Поле возвращается только при наличии права VIEW_EMPLOYEE_NUMBER и если оно заполнено.
              type: string
    SignatureType:
      description: |
        Тип подписи.
        - `CLOUD_QES`  - УКЭП.
        - `CLOUD_NQES` - УНЭП.
        - `EXTERNAL_QES` - УКЭП
        - `GOV_KEY` - Госключ.
        - `PRR` - Подпись, полученная с помощью портала «Работа России».
        - `SES` - ПЭП
      type: string
      enum:
        - CLOUD_QES
        - CLOUD_NQES
        - EXTERNAL_QES
        - GOV_KEY
        - PRR
        - SES
    PendingApplicationSigningDTO:
      description: Данные о подписании заявления, находящемся в процессе подписания.
      type: object
      properties:
        signatureType:
          $ref: '#/components/schemas/SignatureType'
        signingRequestId:
          description: ID запроса на подписание.
          type: string
          format: uuid
        createdDate:
          description: Момент времени, когда был создан запрос на подписание.
          type: string
          format: date-time
        redirectUrl:
          description: URL портала «Работа России», на который необходимо перенаправить пользователя для подписания.
          type: string
    SubstitutorClientUserDto:
      description: Данные пользователя-заместителя или замещаемого пользователя.
      type: object
      allOf:
        - properties:
            id:
              description: Идентификатор пользователя клиента (заместителя или замещаемого) в HRlink.
              type: string
              format: uuid
        - properties:
            externalId:
              description: Внешний ID пользователя.
              type: string
              x-nullable: true
            firstName:
              description: Имя пользователя.
              type: string
              x-nullable: true
            lastName:
              description: Фамилия пользователя.
              type: string
              x-nullable: true
            patronymic:
              description: Отчество пользователя.
              type: string
              x-nullable: true
            department:
              description: |
                Отдел сотрудника пользователя-заместителя, который имеет признак основного места работы (`employee.mainWorkplace = true`),
                либо являющегося самым старым сотрудником пользователя (по `employee.createdDate`).
              type: object
              x-nullable: true
              properties:
                id:
                  description: Идентификатор отдела.
                  type: string
                  format: uuid
                name:
                  description: Название отдела.
                  type: string
                  x-nullable: true
            position:
              description: |
                Должность сотрудника пользователя-заместителя, который имеет признак основного места работы (`employee.mainWorkplace = true`),
                либо являющегося самым старым сотрудником пользователя (по `employee.createdDate`).
              type: object
              x-nullable: true
              properties:
                id:
                  description: Идентификатор отдела.
                  type: string
                  format: uuid
                name:
                  description: Название отдела.
                  type: string
                  x-nullable: true
    SubstitutionDto:
      description: Данные замещения.
      type: object
      allOf:
        - properties:
            id:
              description: ID замещения.
              type: string
              format: uuid
        - properties:
            startDate:
              description: Дата начала замещения.
              type: string
              format: date-time
            endDate:
              description: Дата окончания замещения.
              type: string
              format: date-time
            substitutorClientUser:
              $ref: '#/components/schemas/SubstitutorClientUserDto'
    ApplicationSignerDTO:
      description: Данные подписанта заявления.
      type: object
      allOf:
        - $ref: '#/components/schemas/PersonNameModelDTO'
        - properties:
            participantId:
              description: ID участника этапа маршрута подписания, которому соответствует подписант заявления.
              type: string
              format: uuid
            signingOrder:
              description: Порядок подписания.
              type: integer
              format: int64
            clientUserId:
              description: ID пользователя клиента.
              type: string
              format: uuid
              x-nullable: true
            employee:
              $ref: '#/components/schemas/EmployeeWithPositionAndDepartmentAndNumberDTO'
              x-nullable: true
            signingAvailabilityDate:
              description: Момент времени, когда подписанту стало доступно подписание.
              type: string
              format: date-time
              x-nullable: true
            madeDecision:
              description: Принял ли подписант документа какое-либо решение (подписал или отказал в подписании).
              type: boolean
            signedDate:
              description: Момент подписания.
              type: string
              format: date-time
              x-nullable: true
            signingInfo:
              $ref: '#/components/schemas/PendingApplicationSigningDTO'
              x-nullable: true
            rejectedDate:
              description: Момент времени отказа от подписания заявления.
              type: string
              format: date-time
              x-nullable: true
            rejectionComment:
              description: Комментарий отказа от подписания заявления.
              type: string
              x-nullable: true
            substitution:
              $ref: '#/components/schemas/SubstitutionDto'
              x-nullable: true
            customStructureElementIds:
              type: array
              description: Список ID элементов пользовательских структур
              items:
                type: string
                format: uuid
              x-nullable: true
              default: null
    ApplicationResponsibleDTO:
      description: Данные ответственного заявления с его персональной информацией.
      type: object
      allOf:
        - $ref: '#/components/schemas/PersonNameModelDTO'
        - properties:
            signerId:
              description: ID подписанта заявления.
              type: string
              format: uuid
            clientUserId:
              description: ID пользователя клиента.
              type: string
              format: uuid
            employee:
              $ref: '#/components/schemas/EmployeeWithPositionAndDepartmentDTO'
    ApplicationEventDateShortInfoDTO:
      description: Краткие данные даты события заявления сотрудника.
      type: object
      properties:
        label:
          description: Название поля в шаблоне заявления.
          type: string
        value:
          description: Значение даты события.
          type: string
          format: date-time
    PersonName:
      description: ФИО человека.
      type: object
      properties:
        lastName:
          description: Фамилия.
          type: string
        firstName:
          description: Имя.
          type: string
        patronymic:
          description: Отчество.
          type: string
    NameDTO:
      description: Данные ФИО человека.
      type: object
      allOf:
        - $ref: '#/components/schemas/PersonName'
    CommentAuthorDTO:
      description: Данные автора комментария.
      type: object
      allOf:
        - $ref: '#/components/schemas/NameDTO'
        - properties:
            userId:
              description: ID пользователя.
              type: string
              format: uuid
    ChatCommentDTO:
      description: Данные комментария.
      type: object
      allOf:
        - properties:
            id:
              description: Идентификатор комментария.
              type: string
              format: uuid
            version:
              description: Версия данных комментария.
              type: integer
              format: int64
        - properties:
            user:
              $ref: '#/components/schemas/CommentAuthorDTO'
            message:
              description: Текст комментария.
              type: string
            createdDate:
              description: Дата создания комментария.
              type: string
              format: date-time
    EmployeeInfoWithPositionAndNumberDto:
      description: Краткая информация о сотруднике с его персональными данными, должностью и табельным номером.
      type: object
      allOf:
        - $ref: '#/components/schemas/PersonName'
        - properties:
            id:
              x-nullable: false
              description: ID сотрудника.
              type: string
            position:
              x-nullable: true
              description: Должность сотрудника.
              type: object
              properties:
                id:
                  description: Идентификатор должности.
                  type: string
                  format: uuid
                name:
                  description: Название должности.
                  type: string
            number:
              x-nullable: true
              description: Табельный номер. Возвращается при наличии права `VIEW_EMPLOYEE_NUMBER`.
              type: string
    ApplicationRecipientDto:
      description: Данные получателя заявления.
      type: object
      allOf:
        - properties:
            id:
              description: Идентификатор получателя заявления.
              type: string
              format: uuid
        - properties:
            employee:
              x-nullable: false
              $ref: '#/components/schemas/EmployeeInfoWithPositionAndNumberDto'
            seenDate:
              x-nullable: true
              description: Момент времени, когда получатель просмотрел заявление.
              type: string
              format: date-time
            participantId:
              x-nullable: false
              description: ID участника этапа маршрута подписания, которому соответствует получатель заявления.
              type: string
              format: uuid
    ApplicationV2DTO:
      description: Данные заявления сотрудника.
      type: object
      allOf:
        - properties:
            id:
              description: Идентификатор заявления.
              type: string
              format: uuid
        - properties:
            legalEntity:
              $ref: '#/components/schemas/ShortLegalEntityDTO'
            originalFile:
              description: Данные файла, который прикрепил сотрудник при создании заявления.
              type: object
              properties:
                id:
                  description: Идентификатор файла.
                  type: string
                  format: uuid
                name:
                  description: Название файла.
                  type: string
            fileId:
              description: ID файла заявления.
              type: string
              format: uuid
            externalId:
              x-nullable: true
              description: Идентификатор заявления во внешней системе.
              type: string
            fileProcessedDate:
              x-nullable: true
              description: Момент времени, когда была закончена обработка файла заявления.
              type: string
              format: date-time
            fileConversionFailedDate:
              x-nullable: true
              description: Момент времени, когда конвертация файла заявления в PDF/A формат завершилась неудачно.
              type: string
              format: date-time
            deletedDate:
              x-nullable: true
              description: Момент времени, в который заявление было удалено.
              type: string
              format: date-time
            rejectedDate:
              x-nullable: true
              description: Момент времени, в который заявление было отклонено.
              type: string
              format: date-time
            docflowFinishedDate:
              x-nullable: true
              description: Момент времени завершения документооборота.
              type: string
              format: date-time
            signers:
              description: Список данных подписантов заявления.
              type: array
              items:
                $ref: '#/components/schemas/ApplicationSignerDTO'
            responsibles:
              description: Список данных ответственных заявления.
              type: array
              items:
                $ref: '#/components/schemas/ApplicationResponsibleDTO'
            lastSignedDate:
              description: Дата последнего подписания заявления подписантом.
              type: string
              format: date-time
            printFormUpdatedDate:
              description: Дата последнего обновления печатной формы заявления.
              type: string
              format: date-time
            version:
              description: Версия данных заявления.
              type: integer
              format: int64
            eventDates:
              description: Даты события по заявлению.
              type: array
              items:
                $ref: '#/components/schemas/ApplicationEventDateShortInfoDTO'
            comments:
              x-nullable: true
              description: Список данных комментариев.
              type: array
              items:
                $ref: '#/components/schemas/ChatCommentDTO'
            recipients:
              x-nullable: true
              description: Список получателей заявления.
              type: array
              items:
                $ref: '#/components/schemas/ApplicationRecipientDto'
    ClientUserShortInfoDTO:
      description: PersonName
      type: object
      allOf:
        - $ref: '#/components/schemas/PersonName'
        - properties:
            id:
              description: ID пользователя клиента.
              type: string
              format: uuid
            externalId:
              description: ID пользователя клиента во внешней системе.
              type: string
    AttachmentDTO:
      description: Данные вложения группы заявлений сотрудника.
      type: object
      allOf:
        - properties:
            id:
              description: Идентификатор вложения.
              type: string
              format: uuid
            fileId:
              description: ID файла вложения.
              type: string
              format: uuid
            fileName:
              description: Имя файла вложения.
              type: string
              x-nullalble: true
            createdDate:
              description: Дата загрузки вложения.
              type: string
              format: date-time
              x-nullalble: true
            creatorClientUser:
              description: Данные пользователя клиента, загрузившего вложение к группе заявлений.
              $ref: '#/components/schemas/ClientUserShortInfoDTO'
            deleted:
              description: Удалено ли вложение?
              type: boolean
    ApplicationGroupWithSigningRouteDTO:
      description: Данные группы заявлений сотрудника с маршрутом подписания.
      type: object
      allOf:
        - $ref: '#/components/schemas/BaseApplicationGroupDTO'
        - properties:
            route:
              $ref: '#/components/schemas/SigningRouteDTO'
            applications:
              description: Заявления сотрудника из группы.
              type: array
              items:
                $ref: '#/components/schemas/ApplicationV2DTO'
            attachments:
              description: Список вложений группы заявлений.
              type: array
              items:
                $ref: '#/components/schemas/AttachmentDTO'
            version:
              description: Версия группы заявлений.
              type: integer
              format: int64
            attachmentUploadingAllowed:
              description: Разрешено добавление вложений?
              type: boolean
          required:
            - route
            - applications
            - version
    ErrorResponse:
      type: object
      properties:
        result:
          description: Операция выполнена успешно? В случае с ошибочными ответами всегда принимает значение false.
          type: boolean
          example: false
        errorId:
          description: Идентификатор ошибки.С помощью этого поля техническая поддержка сможет найти внутренние детали об ошибке, что позволит быстро разобраться в ситуации и причинах её возникновения.
          type: string
          format: uuid
        errorMessage:
          description: Сообщение об ошибке. Содержит краткое описание причины возникновения ошибки.
          type: string
        errorCode:
          description: Код ошибки. Это поле предназначено для того, чтобы вызывающая сторона могла формально определить ошибку, зная её код, и определенным образом на неё отреагировать. Для обработки определённых ошибок и формирования сообщений об ошибках на стороне клиента можно опираться на код ошибки и на данные об ошибке, если код ошибки предусматривает возврат этих данных.
          type: string
        operationCode:
          description: Код операции, вызываемой API-методом.
          type: string
    ApplicationConvertedFileState:
      description: Состояние конвертации файла заявления. - `IN_PROGRESS` - Конвертация в процессе. - `FINISHED` - Конвертация успешно завершена. - `FAILED` - Конвертация завершена с ошибкой.
      type: string
      enum:
        - IN_PROGRESS
        - FINISHED
        - FAILED
    ApplicationConvertedFileProcessDTO:
      description: Данные состояния процесса конвертации файла заявления.
      type: object
      properties:
        id:
          description: Идентификатор файла заявления, подготовленного для подписания Сотрудником..
          type: string
        state:
          $ref: '#/components/schemas/ApplicationConvertedFileState'
    ApplicationGroupAddAttachmentsRequestDto:
      description: Данные запроса операции добавления вложений к группе заявлений.
      type: object
      properties:
        attachmentFileIds:
          description: Список ID файлов вложений для группы заявлений.
          type: array
          minItems: 1
          x-nullable: false
          items:
            type: string
            format: uuid
      required:
        - attachmentFileIds
    AbstractApplicationGroupRegistryFilterDTO:
      description: Базовый класс данных для фильтрации реестра заявлений.
      type: object
      properties:
        applicationTypeIds:
          x-nullable: true
          description: Список ID типов заявлений.
          type: array
          items:
            type: string
            format: uuid
        applicationDateFrom:
          x-nullable: true
          description: Левая граница диапазона дат заявлений.
          type: string
          format: date
        applicationDateTo:
          x-nullable: true
          description: Правая граница диапазона дат заявлений.
          type: string
          format: date
        applicationCreatedDateFrom:
          x-nullable: true
          description: Левая граница диапазона моментов времени создания заявлений.
          type: string
          format: date-time
        applicationCreatedDateTo:
          x-nullable: true
          description: Правая граница диапазона моментов времени создания заявлений.
          type: string
          format: date-time
        applicationDocflowFinishedDateFrom:
          x-nullable: true
          description: Левая граница диапазона моментов времени завершения документооборота по заявлению.
          type: string
          format: date-time
        applicationDocflowFinishedDateTo:
          x-nullable: true
          description: Правая граница диапазона моментов времени завершения документооборота по заявлению.
          type: string
          format: date-time
        applicationEventDateFrom:
          x-nullable: true
          description: Левая граница диапазона моментов времени события заявлений.
          type: string
          format: date-time
        applicationEventDateTo:
          x-nullable: true
          description: Правая граница диапазона моментов времени события заявлений.
          type: string
          format: date-time
        employeeIds:
          x-nullable: true
          description: Список ID сотрудников, к которым относятся заявления.
          type: array
          items:
            type: string
            format: uuid
        legalEntityIds:
          x-nullable: true
          description: Список ID юрлиц, к которым относятся заявления.
          type: array
          items:
            type: string
            format: uuid
        clientDepartmentIds:
          x-nullable: true
          description: Список ID отделов клиента, к которым должны относиться заявления.
          type: array
          items:
            type: string
            format: uuid
        limit:
          x-nullable: true
          description: Количество возвращаемых при запросе элементов.
          type: integer
          minimum: 0
          default: 3
        offset:
          x-nullable: true
          description: Количество элементов, которые нужно пропустить при выборке.
          type: integer
          minimum: 0
          default: 0
    ApplicationStatus:
      description: |
        Статус заявления.
        - DRAFT - Заявление ожидает подписание сотрудником.
        - REJECTED - Заявление было отклонено кем-то из участников подписания.
        - SIGNED - Заявление было подписано на всех этапах.
        - AWAITING_MY_SIGNING - Заявление в работе, и текущий пользователь может подписать заявление на данном этапе.
        - AWAITING_OTHERS_SIGNING - Заявление ожидает подписание другими участниками. Заявление в работе, но на данном этапе не может быть подписано текущим пользователем.
        - DELETED - Заявление было удалено.
      type: string
      enum:
        - DRAFT
        - REJECTED
        - SIGNED
        - AWAITING_MY_SIGNING
        - AWAITING_OTHERS_SIGNING
        - DELETED
    ApplicationGroupRegistryV2FilterDTO:
      description: Данные для фильтрации реестра заявлений. Применимы для АПИ-метода версии 2, возвращающего заявления по любым маршрутам подписания.
      type: object
      allOf:
        - $ref: '#/components/schemas/AbstractApplicationGroupRegistryFilterDTO'
        - properties:
            applicationIds:
              x-nullable: true
              description: Список ID заявлений.
              type: array
              items:
                description: UUID
                type: string
                format: uuid
            applicationStatuses:
              x-nullable: true
              description: Список статусов заявления.
              type: array
              items:
                $ref: '#/components/schemas/ApplicationStatus'
            clientUserParticipantIds:
              x-nullable: true
              description: Список ID пользователей клиента, которые являются участниками маршрута заявления.
              type: array
              items:
                description: UUID
                type: string
                format: uuid
            clientUserResponsibleIds:
              x-nullable: true
              description: Список ID пользователей клиента, которые являются ответственными заявления.
              type: array
              items:
                description: UUID
                type: string
                format: uuid
            onlyEmployeeApplications:
              x-nullable: true
              description: Требуются только те документы, где сотрудник является заявителем?
              type: boolean
    ApplicationMarkAsSeenDto:
      description: Данные для операции, которая отмечает заявление как просмотренное для заданного получателя.
      type: object
      properties:
        version:
          description: Версия заявления.
          type: integer
          format: int64
    ApplicationGroupSimpleDTO:
      description: Данные группы заявлений упрощённого вида.
      type: object
      properties:
        id:
          description: ID группы заявлений.
          type: string
          format: uuid
        externalId:
          description: ID группы заявлений.
          type: string
        version:
          description: Версия группы заявлений.
          type: integer
          format: int64
    ApplicationWithGroupDTO:
      description: Данные заявления с данными группы заявлений.
      type: object
      allOf:
        - $ref: '#/components/schemas/ApplicationV2DTO'
        - properties:
            group:
              $ref: '#/components/schemas/ApplicationGroupSimpleDTO'
    ApplicationParticipantActionDTO:
      description: Данные для обеспечения корректного исполнения действия участником этапа маршрута подписания заявления.
      type: object
      properties:
        participantId:
          description: ID участника активного этапа на маршруте подписания.
          type: string
          format: uuid
        version:
          x-nullable: true
          description: Версия заявления сотрудника.
          type: integer
          format: int64
      required:
        - participantId
    TakeResponsibilityApplicationDTO:
      description: Данные для установки ответственного заявления.
      type: object
      allOf:
        - $ref: '#/components/schemas/ApplicationParticipantActionDTO'
    CreateCommentDTO:
      description: Данные для создания комментария.
      type: object
      properties:
        message:
          description: Текст комментария.
          type: string
    DeleteCommentsDTO:
      description: Данные для удаления комментариев.
      type: object
      properties:
        comments:
          description: Список данных комментариев с ID и версией.
          type: array
          items:
            type: object
            properties:
              id:
                description: Идентификатор комментария.
                type: string
                format: uuid
              version:
                description: Версия данных комментария.
                type: integer
                format: int64
    CodeDTO:
      description: Некоторый код.
      type: object
      properties:
        code:
          description: Код.
          type: string
      required:
        - code
    ApplicationSignBySesDTO:
      description: Данные для подписания заявления простой электронной подписью.
      type: object
      allOf:
        - $ref: '#/components/schemas/ApplicationParticipantActionDTO'
    ApplicationSignThroughGovKeyDTO:
      description: Данные для подписания заявления через Госключ.
      type: object
      allOf:
        - $ref: '#/components/schemas/ApplicationParticipantActionDTO'
    RejectApplicationDTO:
      description: Данные для отклонения заявления сотрудника.
      type: object
      allOf:
        - $ref: '#/components/schemas/ApplicationParticipantActionDTO'
        - properties:
            comment:
              description: Комментарий отказа от подписания заявления.
              type: string
      required:
        - comment
    MintrudDocumentTypeDTO:
      description: Данные типа документов Минтруда.
      type: object
      allOf:
        - properties:
            id:
              description: Идентификатор типа документа.
              type: string
              format: uuid
            name:
              description: Название типа документа.
              type: string
        - properties:
            code:
              description: Код классификатора Минтруда.
              type: string
            signingByEmployeeSesEnabled:
              description: Включена ли возможность подписания ПЭП со стороны Сотрудника?
              type: boolean
            substitutorCreationHintEnabled:
              description: Включена ли подсказка о назначении заместителя?
              type: boolean
          required:
            - code
            - signingByEmployeeSesEnabled
            - substitutorCreationHintEnabled
    ApplicationTypeTemplateFieldBaseDTO:
      description: Основные данные поля для подстановки в шаблон типа заявления.
      type: object
      properties:
        id:
          description: ID поля для подстановки в шаблон типа заявления.
          type: string
          format: uuid
        substitutionKey:
          description: Ключ, который используется в шаблоне для подстановки значения.
          type: string
        required:
          description: Поле является обязательным?
          type: boolean
        label:
          description: Название поля для отображения в заявлении.
          type: string
        type:
          description: Тип значения поля.
          type: string
    ApplicationTypeTemplateFieldValidationType:
      description: |
        Тип валидации.
        - COMPARE - Сравнение поля с другим полем или значением.
      type: string
      enum:
        - COMPARE
    ApplicationTypeTemplateFieldValidationDTO:
      description: Данные валидации поля шаблона типа заявления.
      type: object
      properties:
        id:
          description: ID валидации поля шаблона типа заявления.
          type: string
          format: uuid
        type:
          $ref: '#/components/schemas/ApplicationTypeTemplateFieldValidationType'
        configuration:
          description: Настройки валидации поля.
          type: object
        errorMessage:
          description: Сообщение об ошибке в случае непрохождения валидации.
          type: string
    ApplicationTypeTemplateFieldHintType:
      description: |
        Тип подсказки для поля шаблона типа заявления.
        - `INPUT` - Подсказка в виде input элемента.
        - `TEXT` - Подсказка в виде text элемента.
      type: string
      enum:
        - INPUT
        - TEXT
    ApplicationTypeTemplateFieldHintDTO:
      description: Данные подсказки для поля шаблона типа заявления.
      type: object
      properties:
        id:
          description: ID подсказки для поля шаблона типа заявления.
          type: string
          format: uuid
        type:
          $ref: '#/components/schemas/ApplicationTypeTemplateFieldHintType'
        data:
          description: Данные подсказки.
          type: object
    ApplicationTypeTemplateFieldInputType:
      description: |
        Тип заполнения поля шаблона заявления.
        - MANUAL - Ручное заполнение.
        - CALCULATED - Автозаполнение.
      type: string
      enum:
        - MANUAL
        - CALCULATED
    ApplicationTypeTemplateFieldCalculationTreeNode.NodeType:
      description: |
        Тип вершины.
        - FUNCTION - Функция.
        - VALUE - Значение.
      type: string
      enum:
        - FUNCTION
        - VALUE
    ApplicationTypeTemplateFieldCalculationTreeNode.FunctionType:
      description: |
        Тип функции.
        - ADDITION - Сложение.
        - SUBTRACTION - Вычитание.
        - ADDITION_BY_CALENDAR_WITHOUT_HOLIDAYS - Сложение с учётом календаря.
        - SUBTRACTION_BY_CALENDAR_WITHOUT_HOLIDAYS - Вычитание с учётом календаря.
      type: string
      enum:
        - ADDITION
        - SUBTRACTION
        - ADDITION_BY_CALENDAR_WITHOUT_HOLIDAYS
        - SUBTRACTION_BY_CALENDAR_WITHOUT_HOLIDAYS
    ApplicationTypeTemplateFieldCalculationTreeNodeDTO:
      description: Данные вершины дерева конфигурации автовычисляемого пользовательского поля для подстановки в шаблон типа заявления.
      type: object
      properties:
        nodeType:
          $ref: '#/components/schemas/ApplicationTypeTemplateFieldCalculationTreeNode.NodeType'
        functionType:
          $ref: '#/components/schemas/ApplicationTypeTemplateFieldCalculationTreeNode.FunctionType'
        functionArguments:
          type: array
          items:
            $ref: '#/components/schemas/ApplicationTypeTemplateFieldCalculationTreeNodeDTO'
        valueType:
          $ref: '#/components/schemas/ApplicationTypeTemplateFieldCalculationTreeNode.ValueType'
        value:
          description: Значение.
          type: string
        valueDataType:
          $ref: '#/components/schemas/ApplicationTypeTemplateFieldCalculationTreeNode.ValueDataType'
        order:
          description: Порядковый номер аргумента функции. Используется, только если родительская вершина имеет тип ApplicationTypeTemplateFieldCalculationTreeNode.NodeType.FUNCTION.
          type: integer
    ApplicationTypeTemplateFieldCalculationTreeNode.ValueType:
      description: |
        Тип значения вершины.
        - CONST - Константа.
        - USER_FIELD - Пользовательское поле.
        - SYSTEM_FIELD - Системное поле.
      type: string
      enum:
        - CONST
        - USER_FIELD
        - SYSTEM_FIELD
    ApplicationTypeTemplateFieldCalculationTreeNode.ValueDataType:
      description: |
        Тип данных значения вершины.
        - UUID - UUID.
        - DATE - Дата.
        - NUMBER - Число.
      type: string
      enum:
        - UUID
        - DATE
        - NUMBER
    ApplicationTypeTemplateSystemFieldGroupDTO:
      description: Данные группы для системных полей для подстановки в шаблон типа заявления.
      type: object
      properties:
        name:
          description: Название группы системных полей.
          type: string
        order:
          description: Порядковый номер группы системных полей.
          type: integer
          format: int32
      required:
        - name
    ApplicationTypeTemplateFieldCustomStructuresCatalogConfiguration:
      description: Настройки пользовательского справочника для выбора в поле шаблона типа заявления.
      type: object
      properties:
        customStructureId:
          description: ID пользовательского справочника.
          type: string
          format: uuid
    ApplicationTypeTemplateFieldConfiguration:
      description: Настройки пользовательского поля шаблона типа заявления.
      type: object
      properties:
        catalogType:
          $ref: '#/components/schemas/ApplicationTypeTemplateFieldCatalogType'
        catalogConfiguration:
          description: Настройки каталога. Указывается только для каталога `catalogType.CUSTOM_STRUCTURES_CATALOG`.
          allOf:
            - $ref: '#/components/schemas/ApplicationTypeTemplateFieldCustomStructuresCatalogConfiguration'
    ApplicationTypeTemplateFieldDTO:
      description: Данные поля для подстановки в шаблон типа заявления.
      type: object
      allOf:
        - $ref: '#/components/schemas/ApplicationTypeTemplateFieldBaseDTO'
        - properties:
            note:
              description: Примечание поля.
              type: string
            type:
              description: Тип значения поля.
              type: string
            values:
              description: Список предлагаемых значений поля.
              type: array
              items:
                type: string
            sortOrder:
              description: Порядковый номер поля.
              type: integer
            specifiedByUser:
              description: Должно ли поле заполняться пользователем.
              type: boolean
            usedAsEventDate:
              description: Используется ли поле как дата события.
              type: boolean
            validations:
              type: array
              description: Список валидаций поля.
              items:
                $ref: '#/components/schemas/ApplicationTypeTemplateFieldValidationDTO'
            hint:
              $ref: '#/components/schemas/ApplicationTypeTemplateFieldHintDTO'
            inputType:
              $ref: '#/components/schemas/ApplicationTypeTemplateFieldInputType'
            calculationTree:
              $ref: '#/components/schemas/ApplicationTypeTemplateFieldCalculationTreeNodeDTO'
            group:
              x-nullable: true
              $ref: '#/components/schemas/ApplicationTypeTemplateSystemFieldGroupDTO'
            orderInGroup:
              description: Порядковый номер внутри группы.
              type: integer
              format: int32
            configuration:
              description: Конфигурация пользовательского поля. Указывается только для поля с типом `CATALOG`.
              $ref: '#/components/schemas/ApplicationTypeTemplateFieldConfiguration'
    LegalEntityApplicationTypeDTO:
      description: Данные типа заявления специфичные для конкретного юрлица.
      type: object
      properties:
        legalEntityId:
          description: ID юрлица.
          type: string
          format: uuid
        templateFileId:
          description: ID типа заявления.
          type: string
          format: uuid
      required:
        - legalEntityId
        - templateFileId
    PermittedByClientDepartmentDto:
      description: Информация о доступе отдела клиента к типу заявления.
      type: object
      properties:
        id:
          description: ID отдела клиента.
          type: string
          format: uuid
        inheritByDescendantDepartments:
          description: Наследует ли разрешение потомки клиента отдела?
          type: boolean
      required:
        - id
        - inheritByDescendantDepartments
    RoutesPermissionDTO:
      description: Данные, содержащие разрешенный шаблон маршрута подписания с привязкой к отделу сотрудника.
      type: object
      properties:
        clientDepartmentId:
          description: ID отдела клиента.
          type: string
          format: uuid
        routeId:
          description: ID шаблона маршрута подписания.
          type: string
          format: uuid
      required:
        - clientDepartmentId
        - routeId
    SigningObjectType:
      description: |
        Тип подписываемого объекта.
        - DOCUMENT - Документ.
        - APPLICATION - Заявление.
      type: string
      enum:
        - DOCUMENT
        - APPLICATION
    SigningRouteTemplateParticipantEmployeeDTO:
      description: |
        Данные сотрудника-участника этапа шаблона маршрута подписания.
        Используется для типа участника `FIXED_EMPLOYEE`.
      type: object
      allOf:
        - $ref: '#/components/schemas/PersonName'
        - properties:
            id:
              description: ID сотрудника.
              type: string
              format: uuid
            department:
              description: Отдел сотрудника.
              type: object
              properties:
                id:
                  description: Идентификатор отдела.
                  type: string
                  format: uuid
                name:
                  description: Название отдела.
                  type: string
            position:
              description: Должность сотрудника.
              type: object
              properties:
                id:
                  description: Идентификатор должности.
                  type: string
                  format: uuid
                name:
                  description: Название должности.
                  type: string
            dismissedDate:
              description: Дата увольнения сотрудника.
              type: string
              format: date
              x-nullable: true
    SigningRouteTemplateParticipantDTO:
      description: Данные участника этапа шаблона маршрута подписания.
      type: object
      properties:
        id:
          description: ID участника этапа шаблона маршрута подписания.
          type: string
          format: uuid
        templateStageId:
          description: ID этапа шаблона маршрута подписания, к которому относится участник.
          type: string
          format: uuid
        type:
          $ref: '#/components/schemas/SigningRouteParticipantType'
        actionType:
          $ref: '#/components/schemas/SigningRouteParticipantActionType'
        signingType:
          $ref: '#/components/schemas/RouteSigningType'
        placeholder:
          description: Наименование участника.
          type: string
        employee:
          $ref: '#/components/schemas/SigningRouteTemplateParticipantEmployeeDTO'
        isMultipleSigners:
          description: |
            На основе участника создается множество подписантов?
            Используется при выбранном типе участника `SELECTABLE_EMPLOYEE`.
          type: boolean
        systemRole:
          $ref: '#/components/schemas/DocflowSystemRoleDTO'
        autoSelectRuleType:
          $ref: '#/components/schemas/AutoSelectParticipantRuleType'
        required:
          description: Обязателен ли участник?.
          type: boolean
        unchangeable:
          description: Участник является неизменяемым?
          type: boolean
          x-nullable: true
          default: null
        relatedParticipantId:
          description: ID связанного участника.
          type: string
          format: uuid
        includeToPrintFormStamp:
          description: Участника необходимо включать в оттиск о подписании?
          type: boolean
        version:
          description: Версия данных.
          type: integer
          format: int64
        rejectionDisabled:
          description: Отклонение документа сотрудником разрешено? <b>Для не-документов (заявлений) и не-сотрудников значение не возвращается.</b>
          type: boolean
        forbiddenSelectYourself:
          description: Флаг, запрещающий заявителю в маршрутах по заявлениям выбрать себя или своих совместителей в качестве согласующего. <b>Значение может быть задано равным true только для участников типа `type=SELECTABLE_EMPLOYEE` в маршрутах по заявлениям. Всегда равно null для маршрутов по документам.</b>
          type: boolean
          x-nullable: true
          default: null
    SigningRouteTemplateStageDTO:
      description: Данные этапов шаблона маршрута подписания.
      type: object
      properties:
        id:
          description: ID этапа маршрута подписания.
          type: string
          format: uuid
        signingRouteTemplateId:
          description: ID шаблона маршрута подписания.
          type: string
          format: uuid
        indexNumber:
          description: Номер этапа в маршруте.
          type: integer
          format: int64
        type:
          $ref: '#/components/schemas/SigningRouteStageType'
        completenessCondition:
          $ref: '#/components/schemas/SigningRouteStageCompletenessCondition'
        responsibleEnabled:
          description: Определяется ли на данном этапе ответственный
          type: boolean
        canDeleteBeforeStageCompleted:
          description: Можно ли удалить заявление до завершения этого этапа
          type: boolean
        participants:
          description: Данные участников этапа.
          type: array
          items:
            $ref: '#/components/schemas/SigningRouteTemplateParticipantDTO'
        version:
          description: Версия данных этапа маршрута подписания.
          type: integer
          format: int64
    SigningRouteTemplateDTO:
      description: Данные шаблона маршрута заявления.
      type: object
      properties:
        id:
          description: ID шаблона маршрута подписания.
          type: string
          format: uuid
        clientId:
          description: ID клиента.
          type: string
          format: uuid
        name:
          description: Название шаблона.
          type: string
        signingObjectType:
          $ref: '#/components/schemas/SigningObjectType'
        externalId:
          description: Идентификатор шаблона во внешней системе.
          type: string
        templateKey:
          description: Ключ шаблона маршрута подписания.
          type: string
        createdDate:
          description: Момент времени, когда шаблон был создан.
          type: string
          format: date-time
        deactivatedDate:
          description: Момент времени, когда шаблон был выключен.
          type: string
          format: date-time
        stages:
          description: Данные этапов шаблона маршрута подписания.
          type: array
          items:
            $ref: '#/components/schemas/SigningRouteTemplateStageDTO'
        legalEntities:
          description: Сокращенные данные о юрлицах шаблона.
          type: array
          items:
            $ref: '#/components/schemas/ShortLegalEntityDTO'
        version:
          description: Версия данных.
          type: number
    ApplicationTypeTemplateSystemFieldValidationDTO:
      type: object
      description: Данные валидации поля для подстановки в шаблон типа заявления.
      properties:
        id:
          type: string
          format: uuid
          description: ID поля.
        validations:
          type: array
          description: Данные валидации поля.
          items:
            $ref: '#/components/schemas/ApplicationTypeTemplateFieldValidationDTO'
      required:
        - id
        - validations
    AttachmentMode:
      description: |
        Настройка вложений в заявлении.
        - `MANDATORY` - Наличие вложений в заявлении обязательно.
        - `DISABLE` - У заявления должны отсутствовать вложения.
        - `OPTIONAL` - Наличие вложений в заявлении опционально.
      type: string
      enum:
        - MANDATORY
        - DISABLE
        - OPTIONAL
    ApplicationTypeAttachmentSettingsDTO:
      description: Данные настроек вложений заявлений.
      type: object
      properties:
        mode:
          description: Настройка вложений в заявлении.
          $ref: '#/components/schemas/AttachmentMode'
        hint:
          description: Подсказка к вложениям заявления.
          type: string
          x-nullable: true
        attachmentRetentionHours:
          description: Количество часов хранения вложения до 30 дней (1-720).
          type: integer
          minimum: 1
          maximum: 720
          x-nullable: true
      required:
        - mode
    ApplicationTypeDTO:
      type: object
      description: Объект описания типа заявления.
      properties:
        id:
          type: string
          description: ID типа заявления сотрудника.
          format: uuid
        name:
          type: string
          description: Название типа заявления.
        mintrudDocumentType:
          $ref: '#/components/schemas/MintrudDocumentTypeDTO'
        templatable:
          type: boolean
          description: |
            Типы заявлений бывают:
            - Заявление из файла - только один тип, когда основой заявления является файл, приложенный пользователем, подавшим заявление. Тип имеет флаг "templatable": false.
            - Все остальные типы - заявления из шаблона, когда основой заявления является ранее загруженный шаблон формата docx. Такие типы имеют флаг "templatable": true.
        active:
          type: boolean
          description: Является ли тип заявления активным.
        fileId:
          type: string
          description: Идентификатор файла, являющегося docx-шаблоном.
        version:
          type: integer
          format: int64
          description: Версия данных заявления.
        templateFileParsed:
          type: boolean
          description: Производился ли парсинг файла шаблона?
        templateFields:
          type: array
          description: Список данных пользовательских полей для подстановки в шаблон типа заявления.
          items:
            $ref: '#/components/schemas/ApplicationTypeTemplateFieldDTO'
        legalEntityOverrides:
          type: array
          description: Данные типа заявления специфичные для конкретных юрлиц.
          items:
            $ref: '#/components/schemas/LegalEntityApplicationTypeDTO'
        permittedForEmployeeIds:
          type: array
          description: Идентификатор сотрудников текущего пользователя, которым доступен этот тип заявления.
          items:
            type: string
            format: uuid
        permittedByClientDepartments:
          description: Массив информации о доступе отдела клиента к типу заявления.
          type: array
          items:
            $ref: '#/components/schemas/PermittedByClientDepartmentDto'
        routesPermissions:
          description: Список данных, содержащих разрешения шаблонов маршрута подписания с привязкой к отделу сотрудника.
          type: array
          items:
            $ref: '#/components/schemas/RoutesPermissionDTO'
        signingRouteTemplate:
          $ref: '#/components/schemas/SigningRouteTemplateDTO'
        sortOrder:
          description: Порядок сортировки типа заявления.
          type: integer
          format: int64
        usedSystemFields:
          description: Список данных используемых системных полей для подстановки в шаблон типа заявления.
          type: array
          items:
            $ref: '#/components/schemas/ApplicationTypeTemplateFieldBaseDTO'
        systemFields:
          description: Список данных валидации полей для подстановки в шаблон типа заявления.
          type: array
          x-nullable: true
          items:
            $ref: '#/components/schemas/ApplicationTypeTemplateSystemFieldValidationDTO'
        signingByEmployeeSesEnabled:
          description: Включена ли возможность подписания ПЭП со стороны Сотрудника?
          type: boolean
        substitutorCreationHintEnabled:
          description: Включено ли отображение подсказки о возможности назначения заместителя?
          type: boolean
        attachmentSettings:
          $ref: '#/components/schemas/ApplicationTypeAttachmentSettingsDTO'
    ApplicationTypeBaseDTO:
      description: Базовые данные типа заявления сотрудника.
      type: object
      properties:
        name:
          description: Название типа заявления сотрудника.
          type: string
        active:
          description: Тип заявления сотрудника является активным?
          type: boolean
        fileId:
          description: ID файла шаблона типа заявления сотрудника.
          type: string
          format: uuid
        legalEntityOverrides:
          description: Данные типа заявления специфичные для конкретных юрлиц.
          type: array
          x-nullable: true
          items:
            $ref: '#/components/schemas/LegalEntityApplicationTypeDTO'
        templateRouteId:
          description: ID шаблона маршрута подписания.
          type: string
          format: uuid
      required:
        - name
        - active
        - fileId
        - templateRouteId
    ApplicationTypeTemplateFieldCalculationConfigType:
      description: |
        Тип конфигурации автовычисляемого пользовательского поля для подстановки в шаблон типа заявления.
        - VACATION_END_DATE - Дата окончания отпуска.
        - DAYS_BETWEEN_DATES_COUNT - Количество дней между датами.
        - VACATION_END_DATE_BY_CALENDAR_WITHOUT_HOLIDAYS - Дата окончания отпуска с учетом календаря, без праздничных дней.
        - DAYS_BETWEEN_DATES_COUNT_BY_CALENDAR_WITHOUT_HOLIDAYS - Количество дней между датами с учетом календаря, без праздничных дней.
      type: string
      enum:
        - VACATION_END_DATE
        - DAYS_BETWEEN_DATES_COUNT
        - VACATION_END_DATE_BY_CALENDAR_WITHOUT_HOLIDAYS
        - DAYS_BETWEEN_DATES_COUNT_BY_CALENDAR_WITHOUT_HOLIDAYS
    ApplicationTypeTemplateFieldCalculationConfigDTO:
      description: Данные конфигурации автовычисляемого пользовательского поля для подстановки в шаблон типа заявления. Используется только для автовычисляемого поля `inputType.CALCULATED`.
      type: object
      properties:
        type:
          $ref: '#/components/schemas/ApplicationTypeTemplateFieldCalculationConfigType'
        dateFrom:
          description: Ключ поля, содержащего дату, от которой ведется отсчёт.
          type: string
        dateTo:
          description: |
            Ключ поля, содержащего дату, до которой ведется отсчёт.
            Используется только для типов `type.DAYS_BETWEEN_DATES_COUNT` и `type.DAYS_BETWEEN_DATES_COUNT_BY_CALENDAR_WITHOUT_HOLIDAYS`.
          type: string
        countDay:
          description: |
            Ключ поля с количеством дней.
            Используется только для типов `type.VACATION_END_DATE` и `type.VACATION_END_DATE_BY_CALENDAR_WITHOUT_HOLIDAYS`.
          type: string
        calendarId:
          description: |
            ID календаря для использования в расчёте.
            На данный момент принимает значение только null, которое обозначает работу с производственным календарём РФ.
            Используется только для типов `type.DAYS_BETWEEN_DATES_COUNT_BY_CALENDAR_WITHOUT_HOLIDAYS` и `type.VACATION_END_DATE_BY_CALENDAR_WITHOUT_HOLIDAYS`.
          type: string
    ApplicationTypeTemplateFieldFullInfoBaseDTO:
      description: Базовая полная информация о пользовательском поле для подстановки в шаблон типа заявления.
      type: object
      properties:
        usedAsEventDate:
          description: Поле используется как дата события?
          type: boolean
        label:
          description: Название поля, которое будет видеть сотрудник.
          type: string
        sortOrder:
          description: Порядковый номер поля.
          type: integer
        required:
          description: Поле является обязательным?
          type: boolean
        substitutionKey:
          description: Ключ, который используется в шаблоне для подстановки значения.
          type: string
        fieldType:
          description: |
            Тип значения поля.
            - STRING - Строка.
            - NUMBER - Целое число больше 0.
            - DATE - Дата без времени. Например, '2021-10-22'.
            - SINGLE_SELECT - Выбранное значение из предложенного списка.
            - CATALOG - Справочник системы (выбранное значение из справочника).
          type: string
          enum:
            - STRING
            - NUMBER
            - DATE
            - SINGLE_SELECT
            - CATALOG
        presetValues:
          description: |
            Список предлагаемых значений поля для подстановки в шаблон типа заявления.
            Используется только для поля с типом `fieldType.SINGLE_SELECT`.
          type: array
          items:
            type: string
        note:
          description: Примечание поля.
          type: string
        inputType:
          $ref: '#/components/schemas/ApplicationTypeTemplateFieldInputType'
        calculationConfig:
          $ref: '#/components/schemas/ApplicationTypeTemplateFieldCalculationConfigDTO'
        configuration:
          description: Конфигурация пользовательского поля. Указывается только для `fieldType.CATALOG`
          $ref: '#/components/schemas/ApplicationTypeTemplateFieldConfiguration'
    ApplicationTypeTemplateFieldHintBaseDTO:
      description: Базовые данные подсказки для поля шаблона типа заявления.
      type: object
      properties:
        type:
          $ref: '#/components/schemas/ApplicationTypeTemplateFieldHintType'
        data:
          description: Данные подсказки.
          type: object
    CreateApplicationTypeTemplateFieldHintDTO:
      description: Данные подсказки для поля шаблона типа заявления при создании шаблона типа заявления.
      type: object
      allOf:
        - $ref: '#/components/schemas/ApplicationTypeTemplateFieldHintBaseDTO'
    ComparisonType:
      description: |
        Тип сравнения значений.
        - LESS_THAN - Строго меньше.
        - GREATER_THAN - Строго больше.
        - LESS_THAN_OR_EQUALS - Меньше или равно.
        - GREATER_THAN_OR_EQUALS - Больше или равно.
      type: string
      enum:
        - LESS_THAN
        - GREATER_THAN
        - LESS_THAN_OR_EQUALS
        - GREATER_THAN_OR_EQUALS
    CompareApplicationFieldUpdateValidationOriginType:
      description: |
        Тип значения, с которым происходит сравнение.
        - USER_FIELD_KEY - Пользовательское поле.
        - SYSTEM_FIELD_KEY - Системное поле.
        - DEFAULT - Значение по умолчанию. Для чисел по умолчанию происходит сравнение с 0, для дат с текущей датой.
      type: string
      enum:
        - USER_FIELD_KEY
        - SYSTEM_FIELD_KEY
        - DEFAULT
    CompareApplicationFieldUpdateValidationDeltaType:
      description: |
        Тип значения разницы между полями.
        - USER_FIELD_KEY - Пользовательское поле.
        - SYSTEM_FIELD_KEY - Системное поле.
        - CONSTANT - Постоянное число.
      type: string
      enum:
        - USER_FIELD_KEY
        - SYSTEM_FIELD_KEY
        - CONSTANT
    ApplicationTypeTemplateFieldValidationBaseDTO:
      description: Базовые данные для обновления валидации поля шаблона типа заявления.
      type: object
      properties:
        type:
          $ref: '#/components/schemas/ApplicationTypeTemplateFieldValidationType'
        compareType:
          $ref: '#/components/schemas/ComparisonType'
        originType:
          $ref: '#/components/schemas/CompareApplicationFieldUpdateValidationOriginType'
        originDateFieldKey:
          description: |
            Ключ поля с которым происходит сравнение.
            Используется только для типов originType.SYSTEM_FIELD_KEY и originType.USER_FIELD_KEY.
          type: string
        deltaType:
          $ref: '#/components/schemas/CompareApplicationFieldUpdateValidationDeltaType'
        deltaFieldKey:
          description: |
            Ключ поля для разницы между полями.
            Используется только для типов deltaType.SYSTEM_FIELD_KEY и deltaType.USER_FIELD_KEY.
          type: string
        delta:
          description: |
            Разница между полями.
            Используется только для типа deltaType.CONSTANT.
          type: integer
        errorMessage:
          description: Сообщение об ошибке в случае непрохождения валидации.
          type: string
    CreateApplicationTypeTemplateFieldValidationDTO:
      description: Данные для создания валидации поля шаблона типа заявления.
      type: object
      allOf:
        - $ref: '#/components/schemas/ApplicationTypeTemplateFieldValidationBaseDTO'
    CreateApplicationTypeTemplateFieldFullInfoDTO:
      description: Полная информация о пользовательском поле для подстановки в шаблон типа заявления при создании шаблона типа заявления.
      type: object
      allOf:
        - $ref: '#/components/schemas/ApplicationTypeTemplateFieldFullInfoBaseDTO'
        - properties:
            hint:
              $ref: '#/components/schemas/CreateApplicationTypeTemplateFieldHintDTO'
            validations:
              description: Список данных валидаций поля шаблона типа заявления.
              type: array
              items:
                $ref: '#/components/schemas/CreateApplicationTypeTemplateFieldValidationDTO'
    CreateApplicationTypeTemplateFieldFullInfoWithIdDTO:
      type: object
      description: Полная информация о пользовательском поле для подстановки в шаблон типа заявления с ID.
      allOf:
        - $ref: '#/components/schemas/CreateApplicationTypeTemplateFieldFullInfoDTO'
        - properties:
            id:
              description: ID полного названия типа заявления сотрудника.
              type: string
              format: uuid
    CreateApplicationTypeDTO:
      description: Данные для создания типа заявления сотрудника.
      type: object
      allOf:
        - $ref: '#/components/schemas/ApplicationTypeBaseDTO'
        - properties:
            permittedByClientDepartments:
              description: Список объектов, содержащих информацию о доступе отдела клиента к типу заявления.
              type: array
              x-nullable: true
              items:
                $ref: '#/components/schemas/PermittedByClientDepartmentDto'
            routesPermissions:
              description: Список данных, содержащий разрешенные шаблоны маршрута подписания с привязкой к отделам сотрудника.
              type: array
              x-nullable: true
              items:
                $ref: '#/components/schemas/RoutesPermissionDTO'
            mintrudDocumentTypeCode:
              description: Код типа документа по Минтруд.
              type: string
            templateFields:
              description: Пользовательские поля для подстановки в шаблон типа заявления сотрудника.
              type: array
              x-nullable: true
              items:
                $ref: '#/components/schemas/CreateApplicationTypeTemplateFieldFullInfoDTO'
            systemFields:
              description: Системные поля для подстановки в шаблон типа заявления сотрудника.
              type: array
              x-nullable: true
              items:
                $ref: '#/components/schemas/CreateApplicationTypeTemplateFieldFullInfoWithIdDTO'
            substitutorCreationHintEnabled:
              description: Включено ли отображение подсказки о назначении заместителя?
              type: boolean
            signingByEmployeeSesEnabled:
              description: Включена ли возможность подписания ПЭП со стороны Сотрудника?
              type: boolean
            attachmentSettings:
              $ref: '#/components/schemas/ApplicationTypeAttachmentSettingsDTO'
              x-nullable: true
    ApplicationTypeTemplateFieldUpdateValidationDTO:
      type: object
      description: Данные для обновления валидации поля шаблона типа заявления.
      allOf:
        - $ref: '#/components/schemas/ApplicationTypeTemplateFieldValidationBaseDTO'
      properties:
        id:
          description: ID валидации поля шаблона типа заявления.
          type: string
          format: uuid
    ApplicationTypeTemplateFieldFullInfoDTO:
      type: object
      description: Полная информация о пользовательском поле для подстановки в шаблон типа заявления.
      allOf:
        - $ref: '#/components/schemas/ApplicationTypeTemplateFieldFullInfoBaseDTO'
        - properties:
            id:
              description: ID поля для подстановки в шаблон типа заявления.
              type: string
              format: uuid
            hint:
              $ref: '#/components/schemas/ApplicationTypeTemplateFieldHintDTO'
            validations:
              description: Список данных валидаций поля шаблона типа заявления.
              type: array
              items:
                $ref: '#/components/schemas/ApplicationTypeTemplateFieldUpdateValidationDTO'
    ApplicationTypeUpdateV1DTO:
      description: Данные для обновления типа заявления сотрудника для API версии 1.
      type: object
      properties:
        name:
          description: Название типа заявления сотрудника.
          type: string
        active:
          description: Тип заявления сотрудника является активным?
          type: boolean
        templateFields:
          description: Пользовательские поля для подстановки в шаблон типа заявления сотрудника.
          type: array
          items:
            $ref: '#/components/schemas/ApplicationTypeTemplateFieldFullInfoDTO'
        fileId:
          description: ID файла шаблона типа заявления сотрудника.
          type: string
          format: uuid
        legalEntityOverrides:
          description: Данные типа заявления специфичные для конкретных юрлиц. Актуально только для шаблонных заявлений. На данный момент в данных для юрлица можно задавать специфичный файл шаблона (templateFileId) для юрлица (legalEntityId). При подаче заявления с заданным типом в настроенное юрлицо в качестве шаблона будет выбран настроенный файл. Настройки можно задавать только для доступных пользователю, выполняющему операцию, юрлицах.
          type: array
          items:
            $ref: '#/components/schemas/LegalEntityApplicationTypeDTO'
        templateRouteId:
          description: ID шаблона маршрута подписания.
          type: string
          format: uuid
        version:
          description: Версия данных.
          type: integer
          format: int64
      required:
        - name
        - active
        - fileId
        - templateRouteId
        - version
    ApplicationTypeUpdateV2DTO:
      description: Данные для обновления типа заявления сотрудника для API версии 2.
      type: object
      allOf:
        - $ref: '#/components/schemas/ApplicationTypeUpdateV1DTO'
        - properties:
            permittedByClientDepartments:
              description: Список объектов, содержащих информацию о доступе отдела клиента к типу заявления..
              type: array
              items:
                $ref: '#/components/schemas/PermittedByClientDepartmentDto'
            permissionsChanged:
              description: Флаг, определяющий изменился ли список разрешений на тип заявления по отделам клиента.
              type: boolean
          required:
            - permittedByClientDepartments
            - permissionsChanged
    ApplicationTypeUpdateV3DTO:
      description: Данные для обновления типа заявления сотрудника для API версии 3.
      type: object
      allOf:
        - $ref: '#/components/schemas/ApplicationTypeUpdateV2DTO'
        - properties:
            mintrudDocumentTypeCode:
              description: Код из справочника Минтруда.
              type: string
            routesPermissions:
              description: Список данных, содержащий разрешенные шаблоны маршрута подписания с привязкой к отделам сотрудника.
              type: array
              items:
                $ref: '#/components/schemas/RoutesPermissionDTO'
    ApplicationTypeUpdateV4DTO:
      description: Данные для обновления типа заявления сотрудника для API версии 4.
      type: object
      allOf:
        - $ref: '#/components/schemas/ApplicationTypeUpdateV3DTO'
    ApplicationTypeUpdateV5DTO:
      description: Данные для обновления типа заявления сотрудника для API версии 5.
      type: object
      allOf:
        - $ref: '#/components/schemas/ApplicationTypeUpdateV4DTO'
        - properties:
            systemFields:
              description: Системные поля для подстановки в шаблон типа заявления сотрудника.
              type: array
              x-nullable: true
              items:
                $ref: '#/components/schemas/ApplicationTypeTemplateFieldFullInfoDTO'
    ApplicationTypeUpdateV6DTO:
      description: Данные для обновления типа заявления сотрудника для API версии 6.
      type: object
      allOf:
        - $ref: '#/components/schemas/ApplicationTypeUpdateV5DTO'
        - properties:
            substitutorCreationHintEnabled:
              description: Включено ли отображение подсказки о назначении заместителя?
              type: boolean
          required:
            - substitutorCreationHintEnabled
    ApplicationTypeUpdateV7DTO:
      description: Данные для обновления типа заявления сотрудника для API версии 7.
      type: object
      allOf:
        - $ref: '#/components/schemas/ApplicationTypeUpdateV6DTO'
        - properties:
            signingByEmployeeSesEnabled:
              description: Включена ли возможность подписания ПЭП со стороны Сотрудника?
              type: boolean
            attachmentSettings:
              $ref: '#/components/schemas/ApplicationTypeAttachmentSettingsDTO'
          required:
            - signingByEmployeeSesEnabled
            - attachmentSettings
    ApplicationTypeUpdateV8DTO:
      description: Данные для обновления типа заявления сотрудника для API версии 8.
      type: object
      allOf:
        - $ref: '#/components/schemas/ApplicationTypeUpdateV7DTO'
    ApplicationTypeUpdateV9DTO:
      description: Данные для обновления типа заявления сотрудника для API версии 9.
      type: object
      allOf:
        - $ref: '#/components/schemas/ApplicationTypeUpdateV8DTO'
    ApplicationTypeSortOrderChangeDTO:
      description: Данные для изменения порядка сортировки типа заявления.
      type: object
      properties:
        newSortOrder:
          description: Новое значение порядка для заявления.
          type: integer
          format: int32
        version:
          description: Версия данных.
          type: integer
          format: int64
    GetValuesForAutoCalculatedTemplateFieldsDTO:
      description: Данные для получения рассчитанных значений для автовычисляемых полей шаблона типа заявления.
      type: object
      properties:
        calculationFields:
          description: Список ID автовычисляемых полей шаблона типа заявления, значения которых нужно получить.
          type: array
          items:
            type: string
            format: uuid
        userFields:
          description: Список ID и значений пользовательских полей заявления, необходимых для вычисления значений автовычисляемых полей шаблона типа заявления.
          type: array
          items:
            $ref: '#/components/schemas/ApplicationTemplateFieldDTO'
        legalEntityId:
          description: ID юрлица.
          type: string
          format: uuid
        legalEntityExternalId:
          description: ID юрлица во внешней системе.
          type: string
        applicantEmployeeId:
          description: ID сотрудника заявителя.
          type: string
          format: uuid
        applicantEmployeeExternalId:
          description: ID сотрудника заявителя во внешней системе.
          type: string
        applicationDate:
          description: Дата подачи заявления.
          type: string
          format: date
    AutoCalculatedTemplateFieldCalculationResultStatus:
      description: |
        Статус завершённого расчёта значения автовычисляемого поля шаблона типа заявления.
        - CALCULATED - Расчёт завершён успешно.
        - FAILED - Расчёт завершён с ошибкой.
      type: string
      enum:
        - CALCULATED
        - FAILED
    AutoCalculatedTemplateFieldCalculationResultDTO:
      description: Данные вершины дерева конфигурации автовычисляемого пользовательского поля шаблона типа заявления.
      type: object
      properties:
        fieldId:
          description: ID автовычисляемого поля.
          type: string
          format: uuid
        resultType:
          description: Тип результата расчёта значения автовычисляемого поля.
          $ref: '#/components/schemas/AutoCalculatedTemplateFieldCalculationResultStatus'
        value:
          description: Рассчитанное значение автовычисляемого поля.
          type: object
        errorMessage:
          description: Сообщение об ошибке, возникшей в ходе расчёта значения автовычисляемого поля.
          $ref: '#/components/schemas/I18nMessage'
        errorData:
          description: Формализованные данные ошибки.
          type: object
    AttorneyPermissionDTO:
      description: Полномочия представителя пользователя.
      type: object
      properties:
        textContent:
          description: Полномочия представителя пользователя в текстовом виде.
          type: string
      required:
        - textContent
    CreateAttorneyDTO:
      description: Данные для создания доверенности.
      type: object
      properties:
        externalId:
          description: ID доверенности во внешней системе.
          type: string
        legalEntityId:
          description: ID юрлица.
          type: string
          format: uuid
        legalEntityExternalId:
          description: ID юрлица во внешней системе.
          type: string
        delegateClientUserId:
          description: ID пользователя клиента, являющегося представителем.
          type: string
          format: uuid
        delegateClientUserExternalId:
          description: ID пользователя клиента, являющегося представителем, во внешней системе.
          type: string
        startDate:
          description: Момент времени начала срока действия доверенности.
          type: string
          format: date
        endDate:
          description: Момент времени окончания срока действия доверенности.
          type: string
          format: date
        permissions:
          description: Полномочия представителя.
          $ref: '#/components/schemas/AttorneyPermissionDTO'
        version:
          description: Версия МЧД.
          type: integer
          format: int64
    AttorneySourcedLegalEntityDTO:
      description: Данные юрлица, на основе которого была создана МЧД.
      type: object
      properties:
        id:
          description: ID пользователя клиента.
          type: string
          format: uuid
        externalId:
          description: ID пользователя клиента, по которому были собраны данные доверенного лица, во внешней системе.
          type: string
      required:
        - id
        - externalId
    AttorneyLegalEntityDTO:
      description: Данные юрлица МЧД.
      type: object
      properties:
        name:
          description: Название организации.
          type: string
        shortName:
          description: Короткое название организации.
          type: string
        ogrn:
          description: ОГРН.
          type: string
        inn:
          description: ИНН.
          type: string
        kpp:
          description: КПП.
          type: string
        address:
          description: Юридический адрес.
          type: string
        region:
          description: Цифровой код региона.
          type: string
        sourcedLegalEntity:
          description: Данные юрлица, на основе которого была создана МЧД.
          $ref: '#/components/schemas/AttorneySourcedLegalEntityDTO'
      required:
        - name
        - shortName
        - ogrn
        - inn
        - kpp
        - address
        - region
        - sourcedLegalEntity
    BaseAttorneyDTO:
      description: Базовые данные доверенности.
      type: object
      properties:
        id:
          description: ID доверенности.
          type: string
          format: uuid
        externalId:
          description: ID доверенности во внешней системе.
          type: string
        xmlFileId:
          description: ID XML-файла доверенности.
          type: string
          format: uuid
        number:
          description: Номер МЧД.
          type: string
        startDate:
          description: Момент времени совершения (выдачи) доверенности.
          type: string
          format: date
        endDate:
          description: Момент времени окончания срока действия доверенности.
          type: string
          format: date
        sentDate:
          description: Момент времени, когда доверенность была отправлена на подписание.
          type: string
          format: date-time
        signedDate:
          description: Момент времени, когда доверенность была подписана.
          type: string
          format: date-time
        deletedDate:
          description: Момент времени, когда доверенность была удалена.
          type: string
          format: date-time
        legalEntity:
          description: Данные юрлица для МЧД.
          $ref: '#/components/schemas/AttorneyLegalEntityDTO'
        permissions:
          description: Полномочия представителя пользователя.
          $ref: '#/components/schemas/AttorneyPermissionDTO'
        format:
          description: Версия формата доверенности
          type: string
          example: '003.1'
        managementCompany:
          x-nullable: true
          description: |
            Данные юрлица управляющей компании для МЧД.
            Имеет значение `null`, если заполнено поле `principal`.
          $ref: '#/components/schemas/AttorneyLegalEntityDTO'
        version:
          description: Версия данных доверенности.
          type: integer
          format: int64
    AttorneySourcedClientUserDTO:
      description: Данные пользователя клиента, на основе которого был создан участник МЧД.
      type: object
      properties:
        id:
          description: ID пользователя клиента.
          type: string
          format: uuid
        externalId:
          description: ID пользователя клиента, по которому были собраны данные доверенного лица, во внешней системе.
          type: string
      required:
        - id
        - externalId
    AuthorizationDocumentDTO:
      description: Данные документа, подтверждающего полномочия.
      type: object
      properties:
        name:
          description: Имя документа.
          type: string
        date:
          description: Дата документа.
          type: string
          format: date-time
    LegalPersonDocumentType:
      description: |
        Вид документа, удостоверяющего личность.
        <a href="https://www.consultant.ru/document/cons_doc_LAW_283982/9ef6cf8ad5a3e982260724752a5307712d6b3d92/">Коды видов документов, удостоверяющих личность.</a>
        - FOREIGN_PASSPORT - Паспорт иностранного гражданина.
        - RUSSIAN_FEDERATION_PASSPORT - Паспорт гражданина РФ.
      type: string
      enum:
        - FOREIGN_PASSPORT
        - RUSSIAN_FEDERATION_PASSPORT
    AttorneyIdentityDocumentDTO:
      description: Данные документа, подтверждающего полномочия доверителя МЧД.
      type: object
      properties:
        documentType:
          description: Вид документа, удостоверяющего личность.
          $ref: '#/components/schemas/LegalPersonDocumentType'
        number:
          description: Номер.
          type: string
        issuingAuthority:
          description: Кем выдан.
          type: string
        issuingAuthorityCode:
          description: Код подразделения.
          type: string
        issuedDate:
          description: Дата выдачи.
          type: string
          format: date
      required:
        - documentType
        - number
        - issuingAuthority
        - issuingAuthorityCode
        - issuedDate
    AttorneyPersonDTO:
      description: Данные участника МЧД.
      type: object
      properties:
        sourcedClientUser:
          description: Данные пользователя клиента, на основе которого был создан участник МЧД.
          $ref: '#/components/schemas/AttorneySourcedClientUserDTO'
        lastName:
          description: Фамилия.
          type: string
        firstName:
          description: Имя.
          type: string
        patronymic:
          description: Отчество.
          type: string
        birthdate:
          description: Дата рождения.
          type: string
          format: date
        snils:
          description: СНИЛС.
          type: string
        inn:
          description: ИНН.
          type: string
        position:
          description: Должность.
          type: string
        authorizationDocument:
          description: Данные документа, подтверждающего полномочия доверителя МЧД.
          $ref: '#/components/schemas/AuthorizationDocumentDTO'
        passport:
          description: Данные паспорта.
          $ref: '#/components/schemas/AttorneyIdentityDocumentDTO'
      required:
        - sourcedClientUser
        - lastName
        - firstName
        - patronymic
        - birthdate
        - snils
        - inn
        - position
        - authorizationDocument
        - passport
    AttorneyDTO:
      description: Данные доверенности.
      type: object
      allOf:
        - $ref: '#/components/schemas/BaseAttorneyDTO'
        - properties:
            principal:
              x-nullable: true
              description: |
                Данные доверителя.
                Имеет значение `null`, если МЧД подписана от имени управляющей компании.
                В этом случае заполнены поля `managementCompany` и `managementCompanyPrincipal`.
              $ref: '#/components/schemas/AttorneyPersonDTO'
            delegate:
              description: |
                Данные представителя руководителя по МЧД.
              x-nullable: false
              $ref: '#/components/schemas/AttorneyPersonDTO'
            managementCompanyPrincipal:
              x-nullable: true
              description: |
                Данные доверителя из управляющей компании.
                Имеет значение `null`, если заполнено поле `principal`.
              $ref: '#/components/schemas/AttorneyPersonDTO'
    ImportAttorneyDTO:
      description: Данные о файлах МЧД для импорта.
      type: object
      properties:
        xmlFileId:
          description: ID файла с МЧД в формате xml.
          type: string
          format: uuid
        signatureFileId:
          description: ID файла с подписью.
          type: string
          format: uuid
      required:
        - xmlFileId
        - signatureFileId
    AttorneysSendToSigningDTO:
      description: Список данных МЧД, которые требуется отправить на подписание.
      type: object
      properties:
        attorneys:
          description: Список данных МЧД, которые требуется отправить на подписание.
          type: array
          items:
            type: object
            properties:
              id:
                description: ID МЧД.
                type: string
                format: uuid
              externalId:
                description: ID МЧД во внешней системе.
                type: string
              version:
                description: Версия МЧД.
                type: integer
                format: int64
    DeleteOrRestoreAttorneyDTO:
      description: Данные для удаления/восстановления МЧД.
      type: object
      properties:
        version:
          description: Версия данных.
          type: integer
          format: int64
    AttorneySignByQesDTO:
      description: Данные для подписания МЧД с помощью УКЭП.
      type: object
      properties:
        signature:
          description: Подпись.
          type: string
        version:
          description: Версия данных.
          type: integer
          format: int64
      required:
        - signature
        - version
    AttorneyStatus:
      description: |
        Статус МЧД.
        - DRAFT - МЧД является черновиком.
        - IN_PROCESS - МЧД в процессе подписания.
        - SIGNED - МЧД подписана.
        - EXPIRED - Срок действия МЧД истек.
        - DELETED - МЧД удалена.
      type: string
      enum:
        - DRAFT
        - IN_PROCESS
        - SIGNED
        - EXPIRED
        - DELETED
    DatePeriodDTO:
      description: Данные о периоде между датами.
      type: object
      properties:
        from:
          description: Дата начала периода.
          type: string
          format: date
        to:
          description: Дата окончания периода.
          type: string
          format: date
        correct:
          description: Период задан корректно?
          type: boolean
    AttorneyRegistryFilterDTO:
      description: Данные для фильтрации реестра МЧД.
      type: object
      properties:
        ids:
          x-nullable: true
          description: Идентификаторы МЧД для фильтрации.
          type: array
          items:
            x-nullable: false
            type: string
            format: uuid
        statuses:
          x-nullable: true
          description: Статусы МЧД для фильтрации.
          type: array
          items:
            x-nullable: false
            $ref: '#/components/schemas/AttorneyStatus'
        legalEntityIds:
          x-nullable: true
          description: Идентификаторы юрлиц для фильтрации.
          type: array
          items:
            x-nullable: false
            type: string
            format: uuid
        delegateIds:
          x-nullable: true
          description: Идентификаторы представителей для фильтрации.
          type: array
          items:
            x-nullable: false
            type: string
            format: uuid
        number:
          x-nullable: true
          description: Номер МЧД.
          type: integer
        endedDate:
          x-nullable: true
          description: Срок действия МЧД.
          $ref: '#/components/schemas/DatePeriodDTO'
        permissions:
          x-nullable: true
          description: Полномочия представителя МЧД.
          type: string
        limit:
          x-nullable: true
          description: |
            Количество возвращаемых при запросе элементов.
            Если не задано, то возвращается заданное в настройках приложения максимальное количество элементов.
          type: integer
          minimum: 0
        offset:
          x-nullable: true
          description: Количество элементов, которые нужно пропустить при выборке.
          type: integer
          minimum: 0
    CreateBulkDataSyncTaskDTO:
      description: |
        Данные для создания задачи массовой синхронизации. Структура `data` и `parameters` определяется значением `type` — конкретные правила и поля смотрите в подсхеме `CreateBulkDataSyncTaskDTO_<TYPE>` (выбирается через discriminator).
      type: object
      properties:
        type:
          $ref: '#/components/schemas/BulkDataSyncType'
        data:
          description: |
            Массив элементов для синхронизации. Структура одного элемента зависит от `type` — см. подсхему `CreateBulkDataSyncTaskDTO_<TYPE>`. Поле `externalId` обязательно у каждого элемента и должно быть уникальным в пределах одной задачи.
          type: array
          minItems: 1
          items:
            type: object
        parameters:
          type: object
          x-nullable: true
          description: |
            Дополнительные параметры задачи. Поля зависят от `type` — например, `syncDepartmentsMode` для `CLIENT_DEPARTMENTS`. Для большинства типов параметров нет — допустимо `null` или отсутствие поля.
      discriminator:
        propertyName: type
        mapping:
          EMPLOYEE_POSITIONS: '#/components/schemas/CreateBulkDataSyncTaskDTO_EMPLOYEE_POSITIONS'
          EMPLOYEE_VACATIONS: '#/components/schemas/CreateBulkDataSyncTaskDTO_EMPLOYEE_VACATIONS'
          EMPLOYEE_VACATIONS_V2: '#/components/schemas/CreateBulkDataSyncTaskDTO_EMPLOYEE_VACATIONS_V2'
          EMPLOYEE_VACATIONS_PLANNING: '#/components/schemas/CreateBulkDataSyncTaskDTO_EMPLOYEE_VACATIONS_PLANNING'
          EMPLOYEE_FUNCTIONAL_MANAGERS: '#/components/schemas/CreateBulkDataSyncTaskDTO_EMPLOYEE_FUNCTIONAL_MANAGERS'
          LEGAL_ENTITIES: '#/components/schemas/CreateBulkDataSyncTaskDTO_LEGAL_ENTITIES'
          CLIENT_DEPARTMENTS: '#/components/schemas/CreateBulkDataSyncTaskDTO_CLIENT_DEPARTMENTS'
          CALENDARS: '#/components/schemas/CreateBulkDataSyncTaskDTO_CALENDARS'
          CLIENT_USER_VACATIONS: '#/components/schemas/CreateBulkDataSyncTaskDTO_CLIENT_USER_VACATIONS'
          CLIENT_USERS: '#/components/schemas/CreateBulkDataSyncTaskDTO_CLIENT_USERS'
          CLIENT_USERS_V2: '#/components/schemas/CreateBulkDataSyncTaskDTO_CLIENT_USERS_V2'
          CLIENT_USERS_V3: '#/components/schemas/CreateBulkDataSyncTaskDTO_CLIENT_USERS_V3'
          CLIENT_USERS_V4: '#/components/schemas/CreateBulkDataSyncTaskDTO_CLIENT_USERS_V4'
          CLIENT_USERS_V5: '#/components/schemas/CreateBulkDataSyncTaskDTO_CLIENT_USERS_V5'
          CLIENT_USERS_V6: '#/components/schemas/CreateBulkDataSyncTaskDTO_CLIENT_USERS_V6'
          EMPLOYEE_CUSTOM_STRUCTURE_ELEMENTS: '#/components/schemas/CreateBulkDataSyncTaskDTO_EMPLOYEE_CUSTOM_STRUCTURE_ELEMENTS'
          CUSTOM_STRUCTURES: '#/components/schemas/CreateBulkDataSyncTaskDTO_CUSTOM_STRUCTURES'
          CreateBulkDataSyncTaskDTO_EMPLOYEE_POSITIONS: '#/components/schemas/CreateBulkDataSyncTaskDTO_EMPLOYEE_POSITIONS'
          CreateBulkDataSyncTaskDTO_EMPLOYEE_VACATIONS: '#/components/schemas/CreateBulkDataSyncTaskDTO_EMPLOYEE_VACATIONS'
          CreateBulkDataSyncTaskDTO_EMPLOYEE_VACATIONS_V2: '#/components/schemas/CreateBulkDataSyncTaskDTO_EMPLOYEE_VACATIONS_V2'
          CreateBulkDataSyncTaskDTO_EMPLOYEE_VACATIONS_PLANNING: '#/components/schemas/CreateBulkDataSyncTaskDTO_EMPLOYEE_VACATIONS_PLANNING'
          CreateBulkDataSyncTaskDTO_EMPLOYEE_FUNCTIONAL_MANAGERS: '#/components/schemas/CreateBulkDataSyncTaskDTO_EMPLOYEE_FUNCTIONAL_MANAGERS'
          CreateBulkDataSyncTaskDTO_LEGAL_ENTITIES: '#/components/schemas/CreateBulkDataSyncTaskDTO_LEGAL_ENTITIES'
          CreateBulkDataSyncTaskDTO_CLIENT_DEPARTMENTS: '#/components/schemas/CreateBulkDataSyncTaskDTO_CLIENT_DEPARTMENTS'
          CreateBulkDataSyncTaskDTO_CALENDARS: '#/components/schemas/CreateBulkDataSyncTaskDTO_CALENDARS'
          CreateBulkDataSyncTaskDTO_CLIENT_USER_VACATIONS: '#/components/schemas/CreateBulkDataSyncTaskDTO_CLIENT_USER_VACATIONS'
          CreateBulkDataSyncTaskDTO_CLIENT_USERS: '#/components/schemas/CreateBulkDataSyncTaskDTO_CLIENT_USERS'
          CreateBulkDataSyncTaskDTO_CLIENT_USERS_V2: '#/components/schemas/CreateBulkDataSyncTaskDTO_CLIENT_USERS_V2'
          CreateBulkDataSyncTaskDTO_CLIENT_USERS_V3: '#/components/schemas/CreateBulkDataSyncTaskDTO_CLIENT_USERS_V3'
          CreateBulkDataSyncTaskDTO_CLIENT_USERS_V4: '#/components/schemas/CreateBulkDataSyncTaskDTO_CLIENT_USERS_V4'
          CreateBulkDataSyncTaskDTO_CLIENT_USERS_V5: '#/components/schemas/CreateBulkDataSyncTaskDTO_CLIENT_USERS_V5'
          CreateBulkDataSyncTaskDTO_CLIENT_USERS_V6: '#/components/schemas/CreateBulkDataSyncTaskDTO_CLIENT_USERS_V6'
          CreateBulkDataSyncTaskDTO_EMPLOYEE_CUSTOM_STRUCTURE_ELEMENTS: '#/components/schemas/CreateBulkDataSyncTaskDTO_EMPLOYEE_CUSTOM_STRUCTURE_ELEMENTS'
          CreateBulkDataSyncTaskDTO_CUSTOM_STRUCTURES: '#/components/schemas/CreateBulkDataSyncTaskDTO_CUSTOM_STRUCTURES'
      required:
        - type
    CreateBulkDataSyncTaskDTO_EMPLOYEE_POSITIONS:
      description: Должность сотрудника.
      type: object
      allOf:
        - $ref: '#/components/schemas/CreateBulkDataSyncTaskDTO'
        - properties:
            data:
              description: Данные задачи массовой синхронизации должностей сотрудников.
              type: array
              minItems: 1
              items:
                type: object
                properties:
                  externalId:
                    description: ИД должности во внешней системе.
                    type: string
                  name:
                    description: Название должности.
                    type: string
                required:
                  - externalId
                  - name
    CreateBulkDataSyncTaskDTO_EMPLOYEE_VACATIONS:
      description: Количество доступных дней отпуска.
      type: object
      allOf:
        - $ref: '#/components/schemas/CreateBulkDataSyncTaskDTO'
        - properties:
            data:
              description: Данные задачи массовой синхронизации количества доступных дней отпуска.
              type: array
              minItems: 1
              items:
                type: object
                properties:
                  externalId:
                    description: ИД сотрудника во внешней системе.
                    type: string
                  legalEntityExternalId:
                    description: ИД юрлица во внешней системе.
                    type: string
                  availableVacationDayCount:
                    description: Общее количество доступных дней отпуска для подачи заявлений по всем типам отпусков.
                    type: number
                    example: 12.34
                required:
                  - externalId
                  - availableVacationDayCount
    AvailableVacationDayCountByType:
      type: object
      description: Данные о доступных сотруднику днях по типам отпуска.
      properties:
        vacationTypeExternalId:
          type: string
          description: Внешнее ID типа отпуска.
        dayCount:
          type: number
          format: double
          description: Количество дней.
          minimum: -1000
          maximum: 1000
      required:
        - vacationTypeExternalId
        - dayCount
    CreateBulkDataSyncTaskDTO_EMPLOYEE_VACATIONS_V2:
      description: Количество дней отпуска у сотрудника версии 2.
      type: object
      allOf:
        - $ref: '#/components/schemas/CreateBulkDataSyncTaskDTO'
        - properties:
            data:
              description: Данные задачи массовой синхронизации количества доступных дней отпуска.
              type: array
              minItems: 1
              items:
                type: object
                properties:
                  externalId:
                    description: ИД сотрудника во внешней системе.
                    type: string
                  legalEntityExternalId:
                    description: ИД юрлица во внешней системе.
                    type: string
                  availableVacationDayCount:
                    description: Общее количество доступных дней отпуска для подачи заявлений по всем типам отпусков.
                    type: number
                    example: 12.34
                  availableVacationDayCountsByType:
                    description: Данные о доступных сотруднику днях отпуска по типам отпусков.
                    type: array
                    items:
                      $ref: '#/components/schemas/AvailableVacationDayCountByType'
                required:
                  - externalId
                  - availableVacationDayCount
    VacationPlanning:
      description: Данные о планируемом отпуске.
      type: object
      properties:
        planningYear:
          description: Год, на который будут планироваться отпуска.
          type: integer
          example: 2025
          x-nullable: false
        basicVacationDayCount:
          description: Количество дней основного отпуска, доступных для планирования.
          type: integer
          example: 28
          x-nullable: false
        additionalVacationDayCount:
          description: Количество дней дополнительного отпуска, доступных для планирования.
          type: integer
          example: 3
          x-nullable: false
    CreateBulkDataSyncTaskDTO_EMPLOYEE_VACATIONS_PLANNING:
      description: Количество дней отпуска у сотрудника, доступных для планирования.
      type: object
      allOf:
        - $ref: '#/components/schemas/CreateBulkDataSyncTaskDTO'
        - properties:
            data:
              description: Данные задачи массовой синхронизации количества отпусков сотрудника для планирования.
              type: array
              minItems: 1
              items:
                type: object
                properties:
                  externalId:
                    description: ID сотрудника во внешней системе.
                    type: string
                    format: uuid
                    x-nullable: false
                  legalEntityExternalId:
                    description: ID юрлица во внешней системе.
                    type: string
                    format: uuid
                    x-nullable: true
                  availableVacationsPlanning:
                    type: array
                    description: Доступные для планирования дни отпуска.
                    items:
                      $ref: '#/components/schemas/VacationPlanning'
                    minItems: 1
                required:
                  - externalId
    CreateBulkDataSyncTaskDTO_EMPLOYEE_FUNCTIONAL_MANAGERS:
      description: Управленческая структура сотрудников.
      type: object
      allOf:
        - $ref: '#/components/schemas/CreateBulkDataSyncTaskDTO'
        - properties:
            data:
              description: Данные задачи массовой синхронизации управленческой структуры сотрудников.
              type: array
              minItems: 1
              maxItems: 1000
              items:
                type: object
                properties:
                  externalId:
                    description: ID сотрудника во внешней системе.
                    type: string
                    format: uuid
                    x-nullable: false
                  legalEntityExternalId:
                    description: ID юрлица во внешней системе.
                    type: string
                    format: uuid
                    x-nullable: true
                  functionalManagerEmployee:
                    type: object
                    description: Данные сотрудника управленческого руководителя.
                    properties:
                      externalId:
                        description: ID сотрудника во внешней системе.
                        type: string
                        format: uuid
                        x-nullable: false
                      legalEntityExternalId:
                        description: ID юрлица во внешней системе.
                        type: string
                        format: uuid
                        x-nullable: true
                required:
                  - externalId
    CreateBulkDataSyncTaskDTO_LEGAL_ENTITIES:
      description: Юрлица.
      type: object
      allOf:
        - $ref: '#/components/schemas/CreateBulkDataSyncTaskDTO'
        - properties:
            data:
              description: |
                Данные задачи массовой синхронизации юрлиц.
              type: array
              minItems: 1
              items:
                type: object
                properties:
                  externalId:
                    description: ИД юрлица во внешней системе.
                    type: string
                  name:
                    description: Полное наименование юрлица.
                    type: string
                  shortName:
                    description: Сокращенное наименование юрлица.
                    type: string
                  ogrn:
                    description: ОГРН.
                    type: string
                  inn:
                    description: ИНН.
                    type: string
                  kpp:
                    description: |
                      КПП.
                      - Если ИНН соответствует ЮЛ, то поле КПП должно быть задано и корректно.
                      - Если ИНН соответствует ИП, то поле КПП не обязательно и затирается.
                    type: string
                required:
                  - externalId
                  - name
                  - shortName
                  - ogrn
                  - inn
    SyncDepartmentsMode:
      description: |
        Тип синхронизации данных справочника отделов клиента.
        - UPDATE - Только обновление отделов.
        - CREATE_OR_UPDATE - Обновление и создание отделов.
      type: string
      enum:
        - UPDATE
        - CREATE_OR_UPDATE
    ClientDepartmentUpdateType:
      description: |
        Тип задающий используемые данные при обновлении отдела.
        - DATA_WITH_LEGAL_ENTITY - Обновление базовых данных отдела и привязка отдела к юрлицу.
        - DATA_WITH_HEAD_MANAGER - Обновление базовых данных отдела и назначение руководителя отдела.
      type: string
      enum:
        - DATA_WITH_LEGAL_ENTITY
        - DATA_WITH_HEAD_MANAGER
    BulkClientDepartmentSyncData:
      description: Данные для синхронизации отделов клиентов.
      type: object
      properties:
        syncTypes:
          description: Типы используемых при обновлении данных.
          type: array
          items:
            $ref: '#/components/schemas/ClientDepartmentUpdateType'
        parentDepartmentId:
          description: ID родительского отдела клиента.
          type: string
          format: uuid
        parentDepartmentExternalId:
          description: ID родительского отдела клиента во внешней системе.
          type: string
        name:
          description: Название отдела клиента.
          type: string
        externalId:
          description: ID отдела клиента во внешней системе.
          type: string
        headManagerExternalId:
          description: ID руководителя отдела во внешней системе.
          type: string
        legalEntityExternalId:
          description: ID юрлица во внешней системе.
          type: string
    CreateBulkDataSyncTaskDTO_CLIENT_DEPARTMENTS:
      description: Справочник отделов.
      type: object
      allOf:
        - $ref: '#/components/schemas/CreateBulkDataSyncTaskDTO'
        - properties:
            parameters:
              type: object
              properties:
                syncDepartmentsMode:
                  $ref: '#/components/schemas/SyncDepartmentsMode'
            data:
              description: Данные задачи массовой синхронизации отделов.
              type: array
              minItems: 1
              items:
                $ref: '#/components/schemas/BulkClientDepartmentSyncData'
    CalendarDayType:
      description: |
        Типы дней календаря.
        - `HOLIDAY` - Праздничный день - официальный государственный/региональный праздник. Праздничные дни не учитываются при расчёте отпусков.
        - `WORKDAY` - Рабочий день.
        - `DAYOFF` - Выходной день. Выходные дни учитываются при расчёте отпусков и оплачиваются.
        - `DAY_BEFORE_HOLIDAY` - Рабочий день перед праздником. Предпраздничные дни могут быть сокращёнными по длительности.
      type: string
      enum:
        - HOLIDAY
        - WORKDAY
        - DAYOFF
        - DAY_BEFORE_HOLIDAY
    BulkCalendarYearDateSyncData:
      description: Данные для синхронизации даты, загружаемой в год календаря.
      type: object
      properties:
        date:
          description: Дата.
          type: string
          format: date
        type:
          $ref: '#/components/schemas/CalendarDayType'
      required:
        - date
        - type
    BulkCalendarYearSyncData:
      description: Данные для синхронизации загружаемого в календарь года.
      type: object
      properties:
        year:
          description: Год календаря.
          type: integer
        dates:
          description: Список данных дат, загружаемых в год календаря.
          type: array
          items:
            $ref: '#/components/schemas/BulkCalendarYearDateSyncData'
      required:
        - year
        - dates
    CreateBulkDataSyncTaskDTO_CALENDARS:
      description: Календари.
      type: object
      allOf:
        - $ref: '#/components/schemas/CreateBulkDataSyncTaskDTO'
        - properties:
            data:
              description: Данные задачи массовой синхронизации производственных календарей сотрудников.
              type: array
              minItems: 1
              items:
                type: object
                properties:
                  externalId:
                    description: Идентификатор календаря во внешней системе.
                    type: string
                  name:
                    description: Название календаря.
                    type: string
                  years:
                    description: Данные по конкретным годам, загружаемым в календарь.
                    type: array
                    x-nullable: true
                    items:
                      $ref: '#/components/schemas/BulkCalendarYearSyncData'
                required:
                  - externalId
                  - name
    VacationType:
      description: |
        Тип отпуска.
        - `MAIN` - Основной отпуск.
        - `ADDITIONAL` - Дополнительный отпуск.
      type: string
      enum:
        - MAIN
        - ADDITIONAL
    VacationDTO:
      description: Данные отпуска пользователя клиента.
      type: object
      properties:
        startDate:
          description: Дата начала отпуска.
          type: string
          format: date
          example: '2020-01-01'
        endDate:
          description: Дата окончания отпуска.
          type: string
          format: date
          example: '2020-01-01'
        type:
          $ref: '#/components/schemas/VacationType'
      required:
        - startDate
        - endDate
        - type
    CreateBulkDataSyncTaskDTO_CLIENT_USER_VACATIONS:
      description: Периоды отпусков пользователей клиента.
      type: object
      allOf:
        - $ref: '#/components/schemas/CreateBulkDataSyncTaskDTO'
        - properties:
            data:
              description: Данные для синхронизации периодов отпусков пользователей клиента.
              type: array
              minItems: 1
              items:
                type: object
                properties:
                  externalId:
                    description: Идентификатор пользователя во внешней системе.
                    type: string
                  year:
                    description: Год отпуска.
                    type: integer
                  withApproval:
                    description: Периоды отпуска согласованы?
                    type: boolean
                  vacationPeriods:
                    description: Список данных о планируемых отпусках.
                    type: array
                    x-nullable: true
                    items:
                      $ref: '#/components/schemas/VacationDTO'
                required:
                  - externalId
                  - year
    Gender:
      description: |
        Половая принадлежность человека.
        - MALE - Мужской.
        - FEMALE - Женский.
      type: string
      enum:
        - MALE
        - FEMALE
    PersonInfoDTO:
      description: Общая информация о человеке.
      type: object
      allOf:
        - $ref: '#/components/schemas/PersonName'
        - properties:
            gender:
              $ref: '#/components/schemas/Gender'
            birthdate:
              description: Дата рождения.
              type: string
              format: date
    UserExternalIdDTO:
      description: Данные идентификатора пользователя во внешней системе.
      type: object
      properties:
        systemType:
          description: Тип внешней системы.
          type: string
        value:
          description: Значение внешнего идентификатора пользователя.
          type: string
    PersonDocumentDTO:
      description: Документ человека.
      type: object
      required:
        - type
        - number
      properties:
        id:
          description: Идентификатор документа.
          type: string
          format: uuid
        version:
          description: Версия документа.
          type: integer
          format: int64
        type:
          $ref: '#/components/schemas/PersonDocumentType'
        serialNumber:
          description: |
            Серия документа.
            - Обязательное, если `citizenship` = `RUS` или `citizenship` = `null`. При этом должно быть строкой из 4 цифр.
            - При указании иностранного гражданства может быть `null` или любой строкой.
          type: string
          x-nullable: true
        number:
          description: |
            Номер документа.
            - Если `citizenship` = `RUS` или `citizenship` = `null`, то должно быть строкой из 6 цифр.
            - При указании иностранного гражданства может быть любой строкой.
          type: string
      discriminator:
        propertyName: type
        mapping:
          PASSPORT: '#/components/schemas/PersonDocumentTypePASSPORT'
          SNILS: '#/components/schemas/PersonDocumentTypeSNILS'
          INN: '#/components/schemas/PersonDocumentTypeINN'
          PersonDocumentTypePASSPORT: '#/components/schemas/PersonDocumentTypePASSPORT'
          PersonDocumentTypeSNILS: '#/components/schemas/PersonDocumentTypeSNILS'
          PersonDocumentTypeINN: '#/components/schemas/PersonDocumentTypeINN'
    CountryCode:
      description: |
        Код страны.
      type: string
      enum:
        - ABW
        - AFG
        - AGO
        - AIA
        - ALA
        - ALB
        - AND
        - ARE
        - ARG
        - ARM
        - ASM
        - ATA
        - ATF
        - ATG
        - AUS
        - AUT
        - AZE
        - BDI
        - BEL
        - BEN
        - BES
        - BFA
        - BGD
        - BGR
        - BHR
        - BHS
        - BIH
        - BLM
        - BLR
        - BLZ
        - BMU
        - BOL
        - BRA
        - BRB
        - BRN
        - BTN
        - BVT
        - BWA
        - CAF
        - CAN
        - CCK
        - CHE
        - CHL
        - CHN
        - CIV
        - CMR
        - COD
        - COG
        - COK
        - COL
        - COM
        - CPV
        - CRI
        - CUB
        - CUW
        - CXR
        - CYM
        - CYP
        - CZE
        - DEU
        - DJI
        - DMA
        - DNK
        - DOM
        - DZA
        - ECU
        - EGY
        - ERI
        - ESH
        - ESP
        - EST
        - ETH
        - FIN
        - FJI
        - FLK
        - FRA
        - FRO
        - FSM
        - GAB
        - GBR
        - GEO
        - GGY
        - GHA
        - GIB
        - GIN
        - GLP
        - GMB
        - GNB
        - GNQ
        - GRC
        - GRD
        - GRL
        - GTM
        - GUF
        - GUM
        - GUY
        - HKG
        - HMD
        - HND
        - HRV
        - HTI
        - HUN
        - IDN
        - IMN
        - IND
        - IOT
        - IRL
        - IRN
        - IRQ
        - ISL
        - ISR
        - ITA
        - JAM
        - JEY
        - JOR
        - JPN
        - KAZ
        - KEN
        - KGZ
        - KHM
        - KIR
        - KNA
        - KOR
        - KWT
        - LAO
        - LBN
        - LBR
        - LBY
        - LCA
        - LIE
        - LKA
        - LSO
        - LTU
        - LUX
        - LVA
        - MAC
        - MAF
        - MAR
        - MCO
        - MDA
        - MDG
        - MDV
        - MEX
        - MHL
        - MKD
        - MLI
        - MLT
        - MMR
        - MNE
        - MNG
        - MNP
        - MOZ
        - MRT
        - MSR
        - MTQ
        - MUS
        - MWI
        - MYS
        - MYT
        - NAM
        - NCL
        - NER
        - NFK
        - NGA
        - NIC
        - NIU
        - NLD
        - NOR
        - NPL
        - NRU
        - NZL
        - OMN
        - PAK
        - PAN
        - PCN
        - PER
        - PHL
        - PLW
        - PNG
        - POL
        - PRI
        - PRK
        - PRT
        - PRY
        - PSE
        - PYF
        - QAT
        - REU
        - ROU
        - RUS
        - RWA
        - SAU
        - SDN
        - SEN
        - SGP
        - SGS
        - SHN
        - SJM
        - SLB
        - SLE
        - SLV
        - SMR
        - SOM
        - SPM
        - SRB
        - SSD
        - STP
        - SUR
        - SVK
        - SVN
        - SWE
        - SWZ
        - SXM
        - SYC
        - SYR
        - TCA
        - TCD
        - TGO
        - THA
        - TJK
        - TKL
        - TKM
        - TLS
        - TON
        - TTO
        - TUN
        - TUR
        - TUV
        - TWN
        - TZA
        - UGA
        - UKR
        - UMI
        - URY
        - USA
        - UZB
        - VAT
        - VCT
        - VEN
        - VGB
        - VIR
        - VNM
        - VUT
        - WLF
        - WSM
        - YEM
        - ZAF
        - ZMB
        - ZWE
    PersonDocumentTypePASSPORT:
      description: Паспорт.
      type: object
      allOf:
        - $ref: '#/components/schemas/PersonDocumentDTO'
        - properties:
            birthplace:
              description: Место рождения.
              type: string
            issuedDate:
              description: Дата выдачи.
              type: string
              format: date
            citizenship:
              description: Гражданство.
              x-nullable: true
              default: RUS
              $ref: '#/components/schemas/CountryCode'
            issuingAuthority:
              description: Кем выдан.
              type: string
            issuingAuthorityCode:
              description: Код подразделения.
              type: string
              pattern: ^\d{3}-\d{3}$
    PersonDocumentTypeSNILS:
      description: СНИЛС.
      type: object
      allOf:
        - $ref: '#/components/schemas/PersonDocumentDTO'
    PersonDocumentTypeINN:
      description: ИНН.
      type: object
      allOf:
        - $ref: '#/components/schemas/PersonDocumentDTO'
    PersonDocumentType:
      description: |
        Тип персонального документа человека.
        - SNILS - СНИЛС.
        - PASSPORT - Паспорт.
        - INN - ИНН физлица.
      type: string
      enum:
        - SNILS
        - PASSPORT
        - INN
    BulkClientUserSyncData:
      description: Данные для синхронизации сотрудников.
      type: object
      allOf:
        - $ref: '#/components/schemas/PersonInfoDTO'
        - properties:
            externalId:
              description: Идентификатор пользователя во внешней системе.
              type: string
            phone:
              description: Номер телефона.
              type: string
            email:
              description: Адрес электронной почты.
              type: string
              format: email
            userExternalIds:
              description: Список идентификаторов пользователя во внешних системах.
              type: array
              items:
                $ref: '#/components/schemas/UserExternalIdDTO'
            personalDocuments:
              description: Список документов пользователя.
              type: array
              items:
                $ref: '#/components/schemas/PersonDocumentDTO'
    EmployeeSyncData:
      description: Данные сотрудника для синхронизации данных пользователя клиента.
      type: object
      properties:
        externalId:
          description: Идентификатор сотрудника во внешней системе.
          type: string
        legalEntityExternalId:
          description: Идентификатор юрлица во внешней системе.
          type: string
        departmentExternalId:
          description: Идентификатор отдела во внешней системе.
          type: string
        positionExternalId:
          description: Идентификатор должности во внешней системе.
          type: string
        roleIds:
          description: Список идентификаторов ролей сотрудника.
          type: array
          items:
            type: string
            format: uuid
        tags:
          description: Список тегов сотрудника.
          type: array
          items:
            type: string
    CreateBulkDataSyncTaskDTO_CLIENT_USERS:
      description: Справочник пользователей и сотрудников.
      type: object
      allOf:
        - $ref: '#/components/schemas/CreateBulkDataSyncTaskDTO'
        - properties:
            data:
              description: Данные задачи массовой синхронизации пользователей и сотрудников.
              type: array
              minItems: 1
              items:
                description: Данные для синхронизации пользователей и сотрудников.
                type: object
                allOf:
                  - $ref: '#/components/schemas/BulkClientUserSyncData'
                  - properties:
                      employees:
                        description: Список сотрудников.
                        type: array
                        items:
                          $ref: '#/components/schemas/EmployeeSyncData'
    EmployeeSyncDataV2:
      description: Данные сотрудника для синхронизации данных пользователя клиента для API версии 2
      allOf:
        - $ref: '#/components/schemas/EmployeeSyncData'
        - properties:
            availableVacationDayCount:
              description: Общее количество доступных дней отпуска по всем типам отпуска.
              type: number
              example: 12.34
    CreateBulkDataSyncTaskDTO_CLIENT_USERS_V2:
      description: Справочник пользователей и сотрудников.
      type: object
      allOf:
        - $ref: '#/components/schemas/CreateBulkDataSyncTaskDTO'
        - properties:
            data:
              description: Данные задачи массовой синхронизации пользователей и сотрудников.
              type: array
              minItems: 1
              items:
                type: object
                allOf:
                  - $ref: '#/components/schemas/BulkClientUserSyncData'
                  - properties:
                      employees:
                        description: Список сотрудников.
                        type: array
                        items:
                          $ref: '#/components/schemas/EmployeeSyncDataV2'
    EmployeeSyncDataV3:
      description: Данные сотрудника для синхронизации данных пользователя клиента для API версии 3
      allOf:
        - $ref: '#/components/schemas/EmployeeSyncDataV2'
        - properties:
            number:
              description: Табельный номер сотрудника.
              type: string
    CreateBulkDataSyncTaskDTO_CLIENT_USERS_V3:
      description: Справочник пользователей и сотрудников.
      type: object
      allOf:
        - $ref: '#/components/schemas/CreateBulkDataSyncTaskDTO'
        - properties:
            data:
              description: Данные задачи массовой синхронизации пользователей и сотрудников.
              type: array
              minItems: 1
              items:
                type: object
                allOf:
                  - $ref: '#/components/schemas/BulkClientUserSyncData'
                  - properties:
                      employees:
                        description: Список сотрудников.
                        type: array
                        items:
                          $ref: '#/components/schemas/EmployeeSyncDataV3'
    EmployeeSyncDataV4:
      description: Данные сотрудника для синхронизации данных пользователя клиента для API версии 4
      allOf:
        - $ref: '#/components/schemas/EmployeeSyncDataV3'
        - properties:
            mainWorkplace:
              description: Признак основного места работы.
              type: boolean
              x-nullable: true
    CreateBulkDataSyncTaskDTO_CLIENT_USERS_V4:
      description: Справочник пользователей и сотрудников.
      type: object
      allOf:
        - $ref: '#/components/schemas/CreateBulkDataSyncTaskDTO'
        - properties:
            data:
              description: Данные задачи массовой синхронизации пользователей и сотрудников.
              type: array
              minItems: 1
              items:
                type: object
                allOf:
                  - $ref: '#/components/schemas/BulkClientUserSyncData'
                  - properties:
                      employees:
                        description: Список сотрудников.
                        type: array
                        items:
                          $ref: '#/components/schemas/EmployeeSyncDataV4'
    EmployeeWorkplaceCalendarDTO:
      description: Данные о календаре, на основании которого сформирован график работы сотрудника.
      type: object
      properties:
        id:
          description: Идентификатор календаря.
          type: string
          format: uuid
        externalId:
          description: Идентификатор календаря во внешней системе.
          type: string
    EmployeeSyncDataV5:
      description: Данные сотрудника для синхронизации данных пользователя клиента для API версии 5
      allOf:
        - $ref: '#/components/schemas/EmployeeSyncDataV4'
        - properties:
            calendar:
              $ref: '#/components/schemas/EmployeeWorkplaceCalendarDTO'
              x-nullable: true
    CreateBulkDataSyncTaskDTO_CLIENT_USERS_V5:
      description: Справочник пользователей и сотрудников.
      type: object
      allOf:
        - $ref: '#/components/schemas/CreateBulkDataSyncTaskDTO'
        - properties:
            data:
              description: Данные задачи массовой синхронизации пользователей и сотрудников.
              type: array
              minItems: 1
              items:
                type: object
                allOf:
                  - $ref: '#/components/schemas/BulkClientUserSyncData'
                  - properties:
                      employees:
                        description: Список сотрудников.
                        type: array
                        items:
                          $ref: '#/components/schemas/EmployeeSyncDataV5'
    EmployeeSyncDataV6:
      description: Данные сотрудника для синхронизации данных пользователя клиента для API версии 6
      allOf:
        - $ref: '#/components/schemas/EmployeeSyncDataV5'
        - properties:
            fullTimeEquivalent:
              description: Ставка сотрудника, отражающая долю от полной (FTE - эквивалент полной занятости сотрудника).
              x-nullable: true
              default: null
    CreateBulkDataSyncTaskDTO_CLIENT_USERS_V6:
      description: Справочник пользователей и сотрудников.
      type: object
      allOf:
        - $ref: '#/components/schemas/CreateBulkDataSyncTaskDTO'
        - properties:
            data:
              description: Данные задачи массовой синхронизации пользователей и сотрудников.
              type: array
              minItems: 1
              items:
                type: object
                allOf:
                  - $ref: '#/components/schemas/BulkClientUserSyncData'
                  - properties:
                      employees:
                        description: Список сотрудников.
                        type: array
                        items:
                          $ref: '#/components/schemas/EmployeeSyncDataV6'
    EmployeeExternalIdWithLegalEntityExternalIdDTO:
      description: Данные сотрудника с внешними ID сотрудника и юрлица
      type: object
      required:
        - externalId
      properties:
        externalId:
          description: ID сотрудника во внешней системе
          type: string
        legalEntityExternalId:
          description: ID юрлица во внешней системе
          type: string
          x-nullable: true
          default: null
    BulkCustomStructureElementIdentificationData:
      description: Данные для идентификации элемента пользовательской структуры
      type: object
      properties:
        externalId:
          description: ID элемента структуры во внешней системе
          type: string
          x-nullable: true
          default: null
        customStructureExternalId:
          description: ID пользовательской структуры во внешней системе
          type: string
          x-nullable: true
          default: null
    CreateBulkDataSyncTaskDTO_EMPLOYEE_CUSTOM_STRUCTURE_ELEMENTS:
      description: Данные сотрудника для синхронизации элементов пользовательских структур
      type: object
      allOf:
        - $ref: '#/components/schemas/CreateBulkDataSyncTaskDTO'
        - type: object
          properties:
            data:
              description: Данные задачи массовой синхронизации элементов пользовательских структур сотрудника
              type: array
              minItems: 1
              items:
                type: object
                allOf:
                  - $ref: '#/components/schemas/EmployeeExternalIdWithLegalEntityExternalIdDTO'
                  - properties:
                      customStructureElements:
                        description: Данные для идентификации элементов пользовательских структур
                        type: array
                        items:
                          $ref: '#/components/schemas/BulkCustomStructureElementIdentificationData'
                required:
                  - customStructureElements
    BackgroundColour:
      description: Допустимые HEX-коды для фона
      type: string
      enum:
        - '#E7E9ED'
        - '#E1E7FE'
        - '#D7F8FF'
        - '#F6E9FD'
        - '#FDEDD8'
        - '#E3FCE9'
        - '#EFFCD0'
        - '#FCFACA'
        - '#F7E4E0'
    TextColour:
      description: Допустимые HEX-коды для фона
      type: string
      enum:
        - '#576175'
        - '#242365'
        - '#1F4B56'
        - '#591E58'
        - '#753B2D'
        - '#254B32'
        - '#455622'
        - '#6B4E22'
        - '#661C1B'
    ColourSchemaData:
      description: Данные цветовой схемы
      type: object
      required:
        - background
        - text
      properties:
        background:
          $ref: '#/components/schemas/BackgroundColour'
        text:
          $ref: '#/components/schemas/TextColour'
    CustomStructureElementsSyncData:
      description: Данные элемента пользовательского справочника структур для синхронизации
      type: object
      required:
        - name
        - externalId
        - version
      properties:
        name:
          description: Название элемента пользовательского справочника структур
          type: string
        externalId:
          description: ID элемента пользовательского справочника структур во внешней системе
          type: string
        parentExternalId:
          description: ID родительского элемента структуры клиента во внешней системе
          type: string
          x-nullable: true
          default: null
        headManagerExternalId:
          description: ID руководителя элемента структуры во внешней системе
          type: string
          x-nullable: true
          default: null
        version:
          description: Версия данных элемента структуры
          type: integer
          format: int64
    CreateBulkDataSyncTaskDTO_CUSTOM_STRUCTURES:
      description: Пользовательские справочники структур.
      type: object
      allOf:
        - $ref: '#/components/schemas/CreateBulkDataSyncTaskDTO'
        - type: object
          properties:
            data:
              description: Данные задачи массовой синхронизации пользовательских справочников структур.
              type: array
              minItems: 1
              items:
                type: object
                properties:
                  name:
                    description: Название пользовательского справочника структур.
                    type: string
                  description:
                    description: Описание пользовательского справочника структур.
                    type: string
                    x-nullable: true
                    default: null
                  externalId:
                    description: ID пользовательского справочника структур во внешней системе.
                    type: string
                  colourSchema:
                    description: Данные цветовой схемы пользовательского справочника структур.
                    $ref: '#/components/schemas/ColourSchemaData'
                  version:
                    description: Версия данных.
                    type: integer
                    format: int64
                  elements:
                    description: Данные элементов пользовательского справочника структур.
                    type: array
                    x-nullable: true
                    default: null
                    items:
                      $ref: '#/components/schemas/CustomStructureElementsSyncData'
                required:
                  - name
                  - externalId
                  - colourSchema
                  - version
    BulkDataSyncType:
      description: |
        Тип данных массовой синхронизации.
        - EMPLOYEE_POSITIONS - Должность сотрудника.
        - EMPLOYEE_VACATIONS - Количество дней отпуска сотрудника для подачи заявлений.
        - EMPLOYEE_VACATIONS_V2 - Количество дней отпуска сотрудника для подачи заявлений версии 2.
        - EMPLOYEE_VACATIONS_PLANNING - Количество дней отпуска у сотрудника, доступных для планирования.
        - EMPLOYEE_FUNCTIONAL_MANAGERS - Управленческая структура сотрудников.
        - LEGAL_ENTITIES - Юрлицо.
        - CLIENT_DEPARTMENTS - Отдел клиента.
        - CALENDARS - Календари.
        - CLIENT_USER_VACATIONS - Запланированные периоды отпуска пользователя клиента.
        - CLIENT_USERS - Пользователи клиента версии 1.
        - CLIENT_USERS_V2 - Пользователи клиента версии 2.
          Относительно версии 1 появилась возможность указания следующих полей:
          - количество доступных дней отпуска.
        - CLIENT_USERS_V3 - Пользователи клиента версии 3.
          Относительно версии 2 появилась возможность указания следующих полей:
          - табельный номер.
        - CLIENT_USERS_V4 - Пользователи клиента версии 4.
          Относительно версии 3 появилась возможность указания следующих полей:
          - признак основного места работы.
        - CLIENT_USERS_V5 - Пользователи клиента версии 5.
          Относительно версии 4 появилась возможность указания следующих полей:
          - данные о календаре, на основании которого сформирован график работы сотрудника.
        - CLIENT_USERS_V6 - Пользователи клиента версии 6.
          Относительно версии 5 появилась возможность указания следующих полей:
          - ставка сотрудника, отражающая долю от полной (FTE - эквивалент полной занятости сотрудника).
        - EMPLOYEE_CUSTOM_STRUCTURE_ELEMENTS - Элементы пользовательских структур сотрудников.
        - CUSTOM_STRUCTURES - Справочник пользовательских структур.
      type: string
      enum:
        - EMPLOYEE_POSITIONS
        - EMPLOYEE_VACATIONS
        - EMPLOYEE_VACATIONS_V2
        - EMPLOYEE_VACATIONS_PLANNING
        - EMPLOYEE_FUNCTIONAL_MANAGERS
        - LEGAL_ENTITIES
        - CLIENT_DEPARTMENTS
        - CALENDARS
        - CLIENT_USER_VACATIONS
        - CLIENT_USERS
        - CLIENT_USERS_V2
        - CLIENT_USERS_V3
        - CLIENT_USERS_V4
        - CLIENT_USERS_V5
        - CLIENT_USERS_V6
        - EMPLOYEE_CUSTOM_STRUCTURE_ELEMENTS
        - CUSTOM_STRUCTURES
    BulkDataSyncTaskState:
      description: |
        Состояние задачи массовой синхронизации данных.
        - QUEUED - Задача создана.
        - IN_PROGRESS - Задача в процессе обработки.
        - FINISHED - Массовая синхронизация данных завершилась успешно.
        - FAILED - Массовая синхронизация данных завершилась неуспешно.
      type: string
      enum:
        - QUEUED
        - IN_PROGRESS
        - FINISHED
        - FAILED
    BulkDataSyncTaskCountData:
      description: Данные о количестве обработанных моделей задачи массовой синхронизации.
      type: object
      properties:
        total:
          description: Количество моделей для синхронизации.
          type: integer
        succeeded:
          description: Количество успешно синхронизированных моделей.
          type: integer
        processed:
          description: Количество синхронизированных моделей.
          type: integer
        failed:
          description: Количество моделей, синхронизация которых завершилась с ошибкой.
          type: integer
    BulkDataSyncModelState:
      description: |
        Состояние синхронизации модели.
        - SYNCED - Модель была успешно синхронизирована.
        - FAILED - Во время синхронизации произошла ошибка.
      type: string
      enum:
        - SYNCED
        - FAILED
    BulkDataSyncModelResultType:
      description: |
        Тип действия над моделью в результате её синхронизации.
        - CREATED - Модель была создана.
        - UPDATED - Существующая модель была обновлена.
        - NOT_MODIFIED - Существующая модель не была обновлена, то есть не требовала синхронизации.
      type: string
      enum:
        - CREATED
        - UPDATED
        - NOT_MODIFIED
    BulkDataSyncModelResult:
      description: Результат синхронизации модели.
      type: object
      properties:
        id:
          description: ID синхронизированной модели.
          type: string
          format: uuid
        externalId:
          description: ID синхронизированной модели во внешней системе.
          type: string
        state:
          description: Состояние результата синхронизации модели.
          $ref: '#/components/schemas/BulkDataSyncModelState'
        result:
          description: Тип действия над моделью в результате её синхронизации.
          $ref: '#/components/schemas/BulkDataSyncModelResultType'
        errorMessage:
          description: Сообщение о возникшей ошибке.
          $ref: '#/components/schemas/I18nMessage'
        errorCode:
          description: Код возникшей ошибки.
          type: string
        errorData:
          description: Данные возникшей ошибки.
          type: object
    BulkDataSyncTaskStatusDTO:
      description: Данные статуса задачи массовой синхронизации данных.
      type: object
      properties:
        id:
          description: ID задачи массовой синхронизации данных.
          type: string
          format: uuid
        type:
          $ref: '#/components/schemas/BulkDataSyncType'
        state:
          $ref: '#/components/schemas/BulkDataSyncTaskState'
        errorMessage:
          $ref: '#/components/schemas/I18nMessage'
        counts:
          $ref: '#/components/schemas/BulkDataSyncTaskCountData'
        createdDate:
          description: Момент времени, когда задача была создана.
          type: string
          format: date-time
        data:
          description: Данные для синхронизации.
          type: array
          items:
            $ref: '#/components/schemas/BulkDataSyncModelResult'
    GetBulkDataSyncTasksStatusesDTO:
      description: Данные для получения статусов задач массовой синхронизации данных.
      type: object
      properties:
        ids:
          description: Список ID задач, по которым запрашивается статус.
          type: array
          minItems: 1
          items:
            x-nullable: false
            type: string
            format: uuid
    BulkDataSyncTaskStatusDTO_WithoutData:
      description: Данные статуса задачи массовой синхронизации данных.
      type: object
      properties:
        id:
          description: ID задачи массовой синхронизации данных.
          type: string
          format: uuid
        type:
          $ref: '#/components/schemas/BulkDataSyncType'
        state:
          $ref: '#/components/schemas/BulkDataSyncTaskState'
        errorMessage:
          $ref: '#/components/schemas/I18nMessage'
        counts:
          $ref: '#/components/schemas/BulkDataSyncTaskCountData'
        createdDate:
          description: Момент времени, когда задача была создана.
          type: string
          format: date-time
    CalendarType:
      description: |
        Типы календарей.
        - SYSTEM - Системный календарь. Создаётся и поддерживается системой автоматически, служит родительским календарём для остальных.
                   Системный календарь хранит только отличия от обычной рабочей недели: праздничные дни, переносы выходных дней на рабочие, переносы рабочих дней на выходные.
        - CUSTOM - Кастомный календарь. Создаётся и поддерживается в актуальном состоянии уполномоченными лицами.
                   Кастомный календарь хранит отличия от системного календаря и от стандартной рабочей недели.
      type: string
      enum:
        - SYSTEM
        - CUSTOM
    CalendarDto:
      description: Данные календаря.
      type: object
      properties:
        id:
          description: ID календаря.
          type: string
          format: uuid
        externalId:
          description: Внешний ID календаря.
          type: string
        type:
          description: Тип календаря.
          $ref: '#/components/schemas/CalendarType'
        name:
          description: Название календаря.
          type: string
        createdDate:
          description: Дата создания календаря.
          type: string
          format: date-time
        version:
          description: Версия календаря.
          type: integer
          format: int64
    CalendarYearDto:
      description: Данные года календаря.
      type: object
      properties:
        year:
          description: Номер года.
          type: integer
    CalendarWithYearsDto:
      description: Данные календаря, включая данные по годам.
      type: object
      allOf:
        - $ref: '#/components/schemas/CalendarDto'
        - properties:
            years:
              description: Данные по годам календаря.
              type: array
              items:
                $ref: '#/components/schemas/CalendarYearDto'
    CreateCalendarDto:
      description: Данные для создания кастомного календаря.
      type: object
      properties:
        externalId:
          description: Идентификатор календаря во внешней системе. Опциональное значение.
          type: string
        name:
          description: Название календаря для отображения. Обязательный параметр.
          type: string
      required:
        - name
    CalendarDateDto:
      description: Данные даты календаря.
      type: object
      properties:
        month:
          description: Месяц года.
          type: integer
        day:
          description: День месяца.
          type: integer
        type:
          description: Тип дня.
          $ref: '#/components/schemas/CalendarDayType'
    CalendarYearWithDatesDto:
      description: Данные года календаря.
      type: object
      allOf:
        - $ref: '#/components/schemas/CalendarYearDto'
        - properties:
            dates:
              description: Данные по дням года.
              type: array
              items:
                $ref: '#/components/schemas/CalendarDateDto'
    CalendarWithYearsAndDatesDto:
      description: Данные календаря, включая данные по годам.
      type: object
      allOf:
        - $ref: '#/components/schemas/CalendarDto'
        - properties:
            years:
              description: Данные по годам календаря.
              type: array
              items:
                $ref: '#/components/schemas/CalendarYearWithDatesDto'
    DateUploadDto:
      description: Данные даты, загружаемой в год календаря.
      type: object
      properties:
        month:
          description: Месяц.
          type: integer
        day:
          description: День.
          type: integer
        type:
          description: Тип.
          $ref: '#/components/schemas/CalendarDayType'
    YearUploadDto:
      description: Данные загружаемого в календарь года.
      type: object
      properties:
        year:
          description: Год.
          type: integer
        dates:
          description: Даты.
          type: array
          items:
            $ref: '#/components/schemas/DateUploadDto'
      required:
        - year
        - dates
    YearsUploadDto:
      description: Данные годов, загружаемых в календарь.
      type: object
      properties:
        years:
          description: Данные по конкретным годам, загружаемым в календарь.
          type: array
          items:
            $ref: '#/components/schemas/YearUploadDto'
        version:
          description: Ожидаемая версия календаря.
          type: integer
          format: int64
      required:
        - years
    DepartmentWithoutVersionDTO:
      description: Данные отдела клиента без версии.
      type: object
      properties:
        id:
          description: ID отдела клиента.
          type: string
          format: uuid
        parentDepartmentId:
          description: ID родительского отдела клиента.
          type: string
          format: uuid
        name:
          description: Название отдела клиента.
          type: string
        externalId:
          description: ID отдела клиента во внешней системе.
          type: string
    CustomStructureWithoutElementDTO:
      description: Данные пользовательского справочника без элементов
      allOf:
        - type: object
          required:
            - name
            - colourSchema
          properties:
            id:
              description: ID пользовательского справочника
              type: string
              format: uuid
            name:
              description: Название пользовательского справочника
              type: string
            externalId:
              description: ID во внешней системе
              type: string
              x-nullable: true
              default: null
            description:
              description: Описание пользовательского справочника
              type: string
              x-nullable: true
              default: null
            colourSchema:
              $ref: '#/components/schemas/ColourSchemaData'
    CustomStructureElementDTO:
      description: Данные элемента пользовательского справочника
      allOf:
        - type: object
          required:
            - name
          properties:
            id:
              description: ID элемента пользовательского справочника
              type: string
              format: uuid
            name:
              description: Название элемента
              type: string
            externalId:
              description: ID во внешней системе
              type: string
              x-nullable: true
              default: null
            structure:
              description: Данные пользовательского справочника
              $ref: '#/components/schemas/CustomStructureWithoutElementDTO'
              x-nullable: true
              default: null
    EmployeeShortInfoDTO:
      description: Краткая информация о сотруднике.
      type: object
      allOf:
        - $ref: '#/components/schemas/PersonName'
        - properties:
            id:
              description: ID сотрудника.
              type: string
              format: uuid
            externalId:
              description: ID сотрудника во внешней системе.
              type: string
            legalEntity:
              $ref: '#/components/schemas/ShortLegalEntityDTO'
            department:
              description: Отдел сотрудника.
              type: object
              properties:
                id:
                  description: Идентификатор отдела.
                  type: string
                  format: uuid
                externalId:
                  description: Идентификатор отдела во внешней системе.
                  type: string
                name:
                  description: Название отдела.
                  type: string
            position:
              description: Должность сотрудника.
              type: object
              properties:
                id:
                  description: Идентификатор должности.
                  type: string
                  format: uuid
                externalId:
                  description: Идентификатор должности во внешней системе.
                  type: string
                name:
                  description: Название должности.
                  type: string
            customStructureElements:
              description: Список данных элементов пользовательских структур.
              type: array
              items:
                $ref: '#/components/schemas/CustomStructureElementDTO'
              x-nullable: true
    EmployeeShortInfoWithNumberDTO:
      description: Краткая информация о сотруднике с табельным номером.
      type: object
      allOf:
        - $ref: '#/components/schemas/EmployeeShortInfoDTO'
        - properties:
            number:
              description: Табельный номер.
              type: string
    HeadManagerShortInfoDTO:
      description: Краткая информация о руководителе отдела.
      type: object
      allOf:
        - $ref: '#/components/schemas/EmployeeShortInfoWithNumberDTO'
    CaseType:
      description: |
        Тип падежа.
        - GENITIVE - Родительный.
        - DATIVE - Дательный.
        - ACCUSATIVE - Винительный.
        - INSTRUMENTAL - Творительный.
        - PREPOSITIONAL - Предложный.
      type: string
      enum:
        - GENITIVE
        - DATIVE
        - ACCUSATIVE
        - INSTRUMENTAL
        - PREPOSITIONAL
    ValueDeclensionDTO:
      description: Данные о склонении.
      type: object
      properties:
        caseType:
          $ref: '#/components/schemas/CaseType'
        value:
          description: Склонённое по падежу значение.
          type: string
      required:
        - caseType
        - value
    ClientDepartmentDTO:
      description: Данные отдела клиента.
      type: object
      allOf:
        - $ref: '#/components/schemas/DepartmentWithoutVersionDTO'
        - properties:
            version:
              description: Версия данных отдела клиента.
              type: integer
              format: int64
            legalEntity:
              description: Юрлицо отдела.
              $ref: '#/components/schemas/ShortLegalEntityDTO'
            headManager:
              description: Руководитель отдела.
              $ref: '#/components/schemas/HeadManagerShortInfoDTO'
            legalEntityBranch:
              description: Является ли данный отдел филиалом?
              type: boolean
            declensions:
              description: Сколнение названия отдела по падежам.
              type: array
              x-nullable: true
              items:
                $ref: '#/components/schemas/ValueDeclensionDTO'
    PersonDocumentFullDTO:
      description: Данные документа человека.
      type: object
      properties:
        id:
          description: ID документа.
          type: string
          format: uuid
        type:
          $ref: '#/components/schemas/PersonDocumentType'
        number:
          description: Номер документа.
          type: string
        serialNumber:
          description: Серия документа.
          type: string
        citizenship:
          description: Гражданство.
          type: string
        issuingAuthorityCode:
          description: Код подразделения.
          type: string
        issuedDate:
          description: Дата выдачи.
          type: string
          format: date
        issuingAuthority:
          description: Кем выдан.
          type: string
        birthplace:
          description: Место рождения.
          type: string
        registrationAddress:
          description: Адрес регистрации по паспорту.
          type: string
        nonformalizedRegistrationAddress:
          description: Неформализованный адрес регистрации по паспорту.
          type: string
    BaseLegalEntityWithRequisitesDTO:
      description: Основные данные юрлица c реквизитами.
      type: object
      allOf:
        - $ref: '#/components/schemas/BaseLegalEntityDTO'
        - properties:
            ogrn:
              description: ОГРН.
              type: string
              pattern: ^(?<num>\d{12})(?<sum>\d)$|^(?<num2>\d{14})(?<sum2>\d)$
              example: '1156127850328'
            inn:
              description: ИНН.
              type: string
              pattern: ^\d{10}(?:\d{2})?$
              example: '9668206510'
            kpp:
              description: КПП.
              type: string
              pattern: ^\d{4}[\dA-Z]{2}\d{3}$
              example: '780101001'
          required:
            - ogrn
            - inn
    CreateTopManagerDTO:
      description: Данные руководителя юрлица для создания.
      type: object
      properties:
        id:
          description: ID пользователя клиента.
          type: string
          format: uuid
        position:
          description: Должность.
          type: string
        authorizationDocument:
          $ref: '#/components/schemas/AuthorizationDocumentDTO'
    CreateLegalEntityDTO:
      description: Данные для создания юрлица.
      type: object
      allOf:
        - $ref: '#/components/schemas/BaseLegalEntityWithRequisitesDTO'
        - properties:
            address:
              description: Юридический адрес.
              type: string
            region:
              description: Цифровой код региона.
              type: string
            topManager:
              $ref: '#/components/schemas/CreateTopManagerDTO'
      required:
        - name
        - shortName
        - ogrn
        - inn
    LegalEntityWithoutVersionDTO:
      description: Данные юрлица без версии.
      type: object
      allOf:
        - $ref: '#/components/schemas/CreateLegalEntityDTO'
        - properties:
            id:
              description: ID юрлица.
              type: string
    EmployeeWithPositionAndDepartmentAndLegalEntityDTO:
      description: Данные сотрудника с должностью, отделом и юрлицом.
      type: object
      properties:
        id:
          description: ID сотрудника.
          type: string
          format: uuid
        externalId:
          description: ID сотрудника во внешней системе.
          type: string
        legalEntity:
          $ref: '#/components/schemas/LegalEntityWithoutVersionDTO'
        department:
          type: object
          properties:
            id:
              description: Идентификатор отдела.
              type: string
              format: uuid
            externalId:
              description: Идентификатор отдела во внешней системе.
              type: string
            name:
              description: Название отдела.
              type: string
        position:
          type: object
          properties:
            id:
              description: Идентификатор должности.
              type: string
              format: uuid
            externalId:
              description: Идентификатор должности во внешней системе.
              type: string
            name:
              description: Название должности.
              type: string
    ClientUserWithDocumentsDTO:
      description: Данные пользователя клиента и его документов.
      type: object
      allOf:
        - $ref: '#/components/schemas/PersonInfoDTO'
        - properties:
            id:
              description: ID пользователя клиента.
              type: string
              format: uuid
            externalId:
              description: ID пользователя клиента во внешней системе.
              type: string
            userId:
              description: ID пользователя системы.
              type: string
              format: uuid
            version:
              description: Версия данных пользователя клиента.
              type: integer
              format: int64
            phone:
              description: Телефон.
              type: string
            email:
              description: Адрес электронной почты.
              type: string
              format: email
            userExternalIds:
              description: Список ID пользователя во внешних системах.
              type: array
              items:
                $ref: '#/components/schemas/UserExternalIdDTO'
            personalDocuments:
              description: Данные документов человека.
              type: array
              items:
                $ref: '#/components/schemas/PersonDocumentFullDTO'
            employees:
              description: Данные о сотрудниках пользователя.
              type: array
              items:
                $ref: '#/components/schemas/EmployeeWithPositionAndDepartmentAndLegalEntityDTO'
    UpdateClientUserDTO:
      description: Данные человека для обновления.
      type: object
      allOf:
        - $ref: '#/components/schemas/PersonInfoDTO'
        - properties:
            personalDocuments:
              description: Документы человека.
              type: array
              items:
                $ref: '#/components/schemas/PersonDocumentDTO'
            phone:
              description: Телефон.
              type: string
            email:
              description: Адрес электронной почты.
              type: string
            version:
              description: Версия обновляемого экземпляра данных человека.
              type: integer
              format: int64
            externalId:
              description: ID пользователя клиента во внешней системе.
              type: string
            userExternalIds:
              description: Список, содержащий данные ID пользователей во внешней системе.
              type: array
              items:
                $ref: '#/components/schemas/UserExternalIdDTO'
    NotificationChannelType:
      description: |
        Тип канала оповещений.
        - 'EMAIL' - Email.
        - 'SMS' - СМС.
        - 'BITRIX24' - Bitrix24.
        - 'TELEGRAM' - Telegram.
        - 'PUSH'  - Push
      type: string
      enum:
        - EMAIL
        - SMS
        - BITRIX24
        - TELEGRAM
        - PUSH
    NotificationChannelDTO:
      description: Данные о канале оповещений пользователя.
      type: object
      properties:
        id:
          description: ID канала оповещения.
          type: string
          format: uuid
        login:
          description: Логин канала.
          type: string
        type:
          description: Тип оповещений канала.
          $ref: '#/components/schemas/NotificationChannelType'
        confirmed:
          description: Канал подтверждён?
          type: boolean
        priority:
          description: Приоритет канала оповещения. Меньше - приоритетнее.
          type: integer
        enabled:
          description: Канал включен?
          type: boolean
        invited:
          description: Есть ли активное приглашение? Активное приглашение - приглашение которое еще не принято и которое еще не деактивировано.
          type: boolean
        version:
          description: Версия данных о канале оповещения.
          type: integer
          format: int64
    CertificateType:
      description: |
        Тип сертификата.
        - QES - УКЭП.
        - NQES - УНЭП.
        - CLOUD_KONTUR_DSS_QES - Облачный УКЭП Контура, закрытый ключ которого хранится в КриптоПро DSS.
      type: string
      enum:
        - QES
        - NQES
        - CLOUD_KONTUR_DSS_QES
    CommonsNqesProvider:
      description: |
        Возможные провайдеры выпуска УНЭП:
        - ASTRAL - Провайдер «Астрал» https://astral.ru/.
        - KONTUR - Провайдер «Контур» https://kontur.ru/ca/kcr/api; https://developer.kontur.ru/doc/kcr.api.
      type: string
      enum:
        - ASTRAL
        - KONTUR
    PersonCertificateBaseDTO:
      description: Базовые данные сертификата человека.
      type: object
      allOf:
        - $ref: '#/components/schemas/NameDTO'
        - properties:
            type:
              $ref: '#/components/schemas/CertificateType'
            nqesProvider:
              x-nullable: true
              $ref: '#/components/schemas/CommonsNqesProvider'
            fingerprint:
              description: Отпечаток сертификата.
              type: string
            companyName:
              x-nullable: true
              description: |
                Имя компании в сертификате.
                Допустимо только для УКЭП'а.
              type: string
            companyInn:
              x-nullable: true
              description: |
                ИНН компании в сертификате.
                Допустимо только для УКЭП'а.
              type: string
            companyKpp:
              x-nullable: true
              description: |
                КПП компании в сертификате.
                Допустимо только для УКЭП'а.
              type: string
            expiresDate:
              description: Момент времени, когда сертификат истекает.
              type: string
              format: date-time
            personIdentificationType:
              description: Тип идентификации человека.
              type: string
    UserCertificateDTO:
      description: Данные о сертификате пользователя.
      type: object
      allOf:
        - $ref: '#/components/schemas/PersonCertificateBaseDTO'
        - properties:
            id:
              description: ID сертификата пользователя.
              type: string
              format: uuid
            annulledDate:
              description: Момент времени, когда сертификат был аннулирован.
              type: string
              format: date-time
            validAfterDate:
              description: Момент времени, с которого сертификат считается действительным.
              type: string
              format: date-time
            confirmationChannelType:
              description: Тип канала подтверждения подписания в заявке на выпуск УНЭП.
              type: string
            confirmationChannel:
              description: Канал подтверждения подписания в заявке на выпуск УНЭП (телефон/email).
              type: string
            issuePhone:
              description: Телефон, который использовался для выпуска сертификата.
              type: string
    PersonWithPersonalDataDTO:
      description: Общая информация о человеке, его документах, каналах уведомления и сертификатах.
      type: object
      allOf:
        - $ref: '#/components/schemas/PersonInfoDTO'
        - properties:
            personalDocuments:
              description: Данные о документах человека.
              type: array
              items:
                $ref: '#/components/schemas/PersonDocumentDTO'
            notificationChannels:
              description: Список каналов оповещения.
              type: array
              items:
                $ref: '#/components/schemas/NotificationChannelDTO'
            certificates:
              description: Список сертификатов.
              type: array
              items:
                $ref: '#/components/schemas/UserCertificateDTO'
    NqesIssuingState:
      description: |
        Состояние заявки на выпуск УНЭП.
        - CREATED - Задача процесса выпуска НЭП через ПЭП создана.
        - APPLICATION_CREATION_PENDING - Запущен процесс изготовления файла заявления выпуска НЭП.
        - APPLICATION_CREATED - Файл заявления выпуска НЭП изготовлен.
        - USER_NOTIFIED_ABOUT_ISSUE_REQUEST - Пользователь уведомлён о том, что ему хотят выпустить НЭП.
        - ISSUING_CONFIRMED - Пользователь подтвердил выпуск НЭП.
        - ISSUING_REJECTING_PENDING - Запущен процесс отклонения выпуска УНЭП.
        - ISSUING_REJECTED - Пользователь отклонил выпуск НЭП.
        - PERSON_IDENTIFICATION_CREATED - Создана задача удаленной идентификации человека.
        - PERSON_IDENTIFICATION_FAILED - Задача удаленной идентификации человека завершилась с ошибкой.
        - PERSON_IDENTIFIED - Задача удаленной идентификации человека завершилась успешно.
        - PRINT_FORM_CREATION_PENDING - Запущен процесс изготовления печатной формы заявления с оттиском ПЭП.
        - PRINT_FORM_CREATED - Печатная форма заявления с оттиском ПЭП изготовлена.
        - NQES_ISSUE_REQUEST_CREATED - Заявка на выпуск НЭП создана.
        - NQES_ISSUE_REQUEST_FAILED - Заявка на выпуск НЭП завершилась с ошибкой.
        - NQES_ISSUED - НЭП выпущен.
        - USER_NOTIFIED_ABOUT_CERTIFICATE - Пользователь уведомлён о том, что НЭП выпущен.
        - CERTIFICATE_ACCEPTED - Пользователь подтвердил данные в выпущенном сертификате.
        - CERTIFICATE_DECLINED - Пользователь отклонил данные в выпущенном сертификате.
        - FINISHED - Процесс выпуска НЭП через ПЭП завершён.
        - CANCELED - Процесс выпуска НЭП через ПЭП отменён.
        - AUTO_FAILED - Процесс выпуска НЭП через ПЭП автоматически завершён по достижению максимального количества попыток.
      type: string
      enum:
        - CREATED
        - APPLICATION_CREATION_PENDING
        - APPLICATION_CREATED
        - USER_NOTIFIED_ABOUT_ISSUE_REQUEST
        - ISSUING_CONFIRMED
        - ISSUING_REJECTING_PENDING
        - ISSUING_REJECTED
        - PERSON_IDENTIFICATION_CREATED
        - PERSON_IDENTIFICATION_FAILED
        - PERSON_IDENTIFIED
        - PRINT_FORM_CREATION_PENDING
        - PRINT_FORM_CREATED
        - NQES_ISSUE_REQUEST_CREATED
        - NQES_ISSUE_REQUEST_FAILED
        - NQES_ISSUED
        - USER_NOTIFIED_ABOUT_CERTIFICATE
        - CERTIFICATE_ACCEPTED
        - CERTIFICATE_DECLINED
        - FINISHED
        - CANCELED
        - AUTO_FAILED
    ConfirmationChannelDTO:
      description: Данные канала подтверждения.
      type: object
      properties:
        type:
          description: Тип канала подтверждения.
          type: string
        value:
          description: Значение канала подтверждения.
          type: string
    NqesIssueRequestDTO:
      description: Данные о последнем запросе выпуска УНЭП.
      type: object
      properties:
        nqesIssueTaskId:
          description: ID задачи на выпуск.
          type: string
          format: uuid
        fingerprint:
          description: Отпечаток сертификата.
          type: string
        state:
          $ref: '#/components/schemas/NqesIssuingState'
        createdDate:
          description: Момент создания задачи процесса выпуска НЭП через ПЭП.
          type: string
          format: date-time
        applicationCreationStartedDate:
          description: Момент, когда был запущен процесс изготовления файла заявления выпуска НЭП.
          type: string
          format: date-time
        applicationCreatedDate:
          description: Момент, когда файл заявления выпуска НЭП был изготовлен.
          type: string
          format: date-time
        userNotifiedAboutIssueRequestDate:
          description: Момент, когда пользователь был уведомлён о том, что ему хотят выпустить НЭП.
          type: string
          format: date-time
        issuingConfirmedDate:
          description: Момент, когда пользователь подтвердил выпуск НЭП.
          type: string
          format: date-time
        issuingRejectedDate:
          description: Момент, когда пользователь отклонил выпуск НЭП.
          type: string
          format: date-time
        printFormCreationStartedDate:
          description: Момент, когда был запущен процесс изготовления печатной формы заявления с оттиском ПЭП.
          type: string
          format: date-time
        printFormCreatedDate:
          description: Момент, когда печатная форма заявления с оттиском ПЭП была изготовлена.
          type: string
          format: date-time
        nqesIssueRequestCreatedDate:
          description: Момент, когда заявка на выпуск НЭП была создана.
          type: string
          format: date-time
        nqesIssueRequestFailedDate:
          description: Момент, когда заявка на выпуск НЭП завершилась с ошибкой.
          type: string
          format: date-time
        nqesIssuedDate:
          description: Момент, когда УНЭП получена от доверенной третьей стороны.
          type: string
          format: date-time
        userNotifiedAboutCertificateDate:
          description: Момент, когда пользователь был уведомлён о том, что НЭП выпущен.
          type: string
          format: date-time
        certificateAcceptedDate:
          description: Момент, когда пользователь подтвердил данные в выпущенном сертификате.
          type: string
          format: date-time
        certificateDeclinedDate:
          description: Момент, когда пользователь отклонил данные в выпущенном сертификате.
          type: string
          format: date-time
        finishedDate:
          description: Момент завершения процесса выпуска НЭП через ПЭП.
          type: string
          format: date-time
        canceledDate:
          description: Момент отмены процесса выпуска НЭП через ПЭП.
          type: string
          format: date-time
        personIdentificationType:
          description: Тип идентификации человека.
          type: string
        nqesConfirmationChannel:
          $ref: '#/components/schemas/ConfirmationChannelDTO'
        provider:
          type: string
          description: |
            Провайдер выпуска НЭП.
            Возможные провайдеры выпуска УНЭП:
            - ASTRAL
            - KONTUR
          enum:
            - ASTRAL
            - KONTUR
    InvitationType:
      description: |
        Тип приглашения.
        - EMAIL - Приглашение, отправляемое по email'у.
        - SMS - Приглашение, отправляемое по СМС.
      type: string
      enum:
        - EMAIL
        - SMS
    LastNqesChannelChangeRequest:
      description: Данные последнего запроса на смену канала подписания УНЭП.
      type: object
      properties:
        id:
          description: ID запроса на смену канала УНЭП.
          type: string
          format: uuid
        channel:
          description: Значение канала подписания УНЭП.
          type: string
        state:
          description: Состояние запроса на смену канала подписания УНЭП.
          type: string
    UserFullInfoDTO:
      description: Полная информация о пользователе.
      type: object
      allOf:
        - $ref: '#/components/schemas/PersonWithPersonalDataDTO'
        - properties:
            lastNQESIssueRequest:
              description: Информация о последнем запросе выпуска УНЭП.
              $ref: '#/components/schemas/NqesIssueRequestDTO'
            invitationType:
              x-nullable: true
              $ref: '#/components/schemas/InvitationType'
            invitationDate:
              x-nullable: true
              description: |
                Момент времени, когда пользователь был приглашен.
                Знечение `null`, если пользователь принял приглашение.
              type: string
              format: date-time
            prrSigningEnabled:
              description: Подписание документа с помощью ПРР включено?
              type: boolean
            govKeySigningEnabled:
              description: Подписание документа с помощью Госключа включено?
              type: boolean
            qesSigningEnabled:
              description: Подписание документа с помощью УКЭП включено?
              type: boolean
            vtbSigningEnabled:
              description: Подписание с помощью ВТБ Онлайн включено?
              type: boolean
            disabledDate:
              description: Момент времени, когда пользователь был отключён от сервиса.
              type: string
              format: date-time
            version:
              description: Версия данных о пользователе.
              type: integer
              format: int64
            lastNqesChannelChangeRequest:
              description: Данные последнего запроса на смену канала подписания УНЭП.
              $ref: '#/components/schemas/LastNqesChannelChangeRequest'
    VersionDTO:
      description: Версия данных.
      type: object
      properties:
        version:
          description: Версия данных.
          type: integer
          format: int64
          example: 1
    UpdateLegalEntityDTO:
      description: Данные для обновления юрлица.
      type: object
      allOf:
        - $ref: '#/components/schemas/BaseLegalEntityWithRequisitesDTO'
        - properties:
            version:
              description: Версия данных юрлица.
              type: integer
              format: int64
    LegalEntityDTO:
      description: Данные для юрлица.
      type: object
      allOf:
        - $ref: '#/components/schemas/UpdateLegalEntityDTO'
        - properties:
            id:
              description: ID юрлица.
              type: string
              format: uuid
    EmployeeRoleDTO:
      description: Данные о ролях сотрудника.
      type: object
      properties:
        id:
          description: ID роли сотрудника.
          type: string
          format: uuid
        nameKey:
          description: Ключ роли сотрудника.
          type: string
        descriptionKey:
          description: Ключ описания роли сотрудника.
          type: string
    PermittedOperationOnEmployee:
      description: |
        Разрешённые операции над сотрудником.
        - READ - Чтение данных сотрудника.
        - UPDATE - Обновление данных сотрудника.
      type: string
      enum:
        - READ
        - UPDATE
    AvailableVacationDaysByTypeData:
      type: object
      description: Данные о доступных сотруднику днях отпуска по типу.
      properties:
        vacationTypeExternalId:
          type: string
          description: ID типа отпуска во внешней системе.
        name:
          type: string
          description: Название типа отпуска.
        dayCount:
          type: number
          format: double
          description: Количество доступных дней.
    PrrInitialSetupDTO:
      type: object
      properties:
        id:
          type: string
          format: uuid
          description: ID модели отображения всего процесса настройки включения подписания через ПРР.
        documentId:
          type: string
          format: uuid
          description: ID документа, созданного в HR-Link.
        status:
          type: string
          description: Статус всего процесса настройки включения подписания через ПРР.
        createdDate:
          type: string
          format: date-time
          description: Дата создания процесса настройки включения подписания через ПРР.
      required:
        - id
        - documentId
        - status
        - createdDate
    EmployeeInfoV2DTO:
      description: Информация о сотруднике.
      type: object
      allOf:
        - $ref: '#/components/schemas/VersionDTO'
        - properties:
            employeeId:
              description: ID сотрудника.
              type: string
              format: uuid
            externalId:
              description: ID сотрудника во внешней системе.
              type: string
              x-nullable: true
            dismissedDate:
              description: Дата увольнения сотрудника.
              type: string
              format: date
              x-nullable: true
            scheduledDismissDate:
              description: Дата отложенного увольнения сотрудника.
              type: string
              format: date
              x-nullable: true
            legalEntity:
              $ref: '#/components/schemas/LegalEntityDTO'
            department:
              type: object
              description: Подразделение.
              x-nullable: true
              properties:
                id:
                  description: Идентификатор отдела.
                  type: string
                  format: uuid
                name:
                  description: Название отдела.
                  type: string
            position:
              type: object
              description: Должность.
              x-nullable: true
              properties:
                id:
                  description: Идентификатор должности.
                  type: string
                  format: uuid
                name:
                  description: Название должности.
                  type: string
            roles:
              description: Роли сотрудника.
              type: array
              x-nullable: true
              items:
                $ref: '#/components/schemas/EmployeeRoleDTO'
            tags:
              description: Теги сотрудника.
              type: array
              items:
                type: string
            permittedOperations:
              description: Список операций над сотрудником, разрешённых текущему пользователю.
              type: array
              items:
                $ref: '#/components/schemas/PermittedOperationOnEmployee'
            headManager:
              description: Сотрудник является руководителем?
              type: boolean
            availableVacationDayCount:
              description: Общее количество доступных дней отпуска по всем типам отпуска.
              type: number
              x-nullable: true
            availableVacationDayCountsByType:
              description: Данные о доступных сотруднику днях отпуска по типам.
              type: array
              items:
                $ref: '#/components/schemas/AvailableVacationDaysByTypeData'
            number:
              description: Табельный номер.
              type: string
              x-nullable: true
            functionalManager:
              description: Информация об управленческом руководителе.
              $ref: '#/components/schemas/EmployeeShortInfoDTO'
              x-nullable: true
            prrSigningEnabled:
              description: |
                Флаг, включена ли у пользователя клиента возможность подписания через ПРР.

                - true - означает что у сотрудника включена возможность подписания через ПРР.
                - false - означает что у сотрудника отключена возможность подписания через ПРР.
                - null - означает сотрудник не проходил первоначальную настройку возможности подписания через ПРР.
              type: boolean
              x-nullable: true
            prrInitialSetup:
              description: Данные отображения всего процесса настройки включения подписания через ПРР.
              $ref: '#/components/schemas/PrrInitialSetupDTO'
              x-nullable: true
            fullTimeEquivalent:
              description: Ставка сотрудника, отражающая долю от полной (FTE - эквивалент полной занятости сотрудника).
              type: string
              x-nullable: true
              default: null
            customStructureElements:
              type: array
              description: Список данных элементов пользовательской структуры
              items:
                $ref: '#/components/schemas/CustomStructureElementDTO'
              x-nullable: true
              default: null
    EmployeeRoleType:
      description: |
        Тип роли сотрудника.
        - HEAD_MANAGER - Роль руководителя.
        - HR - Роль кадровика.
        - CLERK - Роль делопроизводителя.
      type: string
      enum:
        - HEAD_MANAGER
        - HR
        - CLERK
    ClientUserEmployeeRoleWithProxyEmployeeDTO:
      description: Данные связки роли сотрудника пользователя клиента вместе с данными доверенного сотрудника пользователя клиента, имеющего соответствующую роль в своём юрлице.
      type: object
      allOf:
        - $ref: '#/components/schemas/EmployeeRoleDTO'
        - properties:
            type:
              x-nullable: false
              $ref: '#/components/schemas/EmployeeRoleType'
            proxyEmployee:
              x-nullable: false
              $ref: '#/components/schemas/EmployeeWithPositionAndDepartmentAndNumberDTO'
    ClientUserEmployeeRolesWithProxyEmployeesDTO:
      description: Данные связок ролей пользователя клиента в юрлице вместе с данными доверенных сотрудников пользователя клиента, имеющих соответствующие роли в своих юрлицах.
      type: object
      properties:
        legalEntity:
          x-nullable: false
          $ref: '#/components/schemas/LegalEntityDTO'
        roles:
          x-nullable: false
          description: Список ролей сотрудника вместе с данными доверенных сотрудников пользователя клиента, имеющих соответствующие роли в своих юрлицах.
          type: array
          items:
            $ref: '#/components/schemas/ClientUserEmployeeRoleWithProxyEmployeeDTO'
    FullNamePartType:
      description: |
        Тип части ФИО.
        - FIRST_NAME - Имя.
        - LAST_NAME - Фамилия.
        - PATRONYMIC - Отчество.
      type: string
      enum:
        - FIRST_NAME
        - LAST_NAME
        - PATRONYMIC
    PersonNameCaseDTO:
      description: Данные о склонении части имени пользователя.
      type: object
      properties:
        caseType:
          $ref: '#/components/schemas/CaseType'
        nameType:
          $ref: '#/components/schemas/FullNamePartType'
        value:
          description: Склонённое по падежу значение.
          type: string
      required:
        - caseType
        - nameType
        - value
    PersonDocumentsVerificationType:
      description: |
        Тип документа.
        - `SNILS` - СНИЛС.
      type: string
      enum:
        - SNILS
    PersonDocumentsVerificationDTOState:
      description: |
        Статус проверки документов.
        - `IN_PROGRESS` - Проверка находится в процессе.
        - `SUCCEEDED` - Проверка завершилась успешно.
        - `FAILED` - Проверка завершилась с ошибкой.
        - `NOT_CHECKED` -Проверка не завершилась.
      type: string
      enum:
        - IN_PROGRESS
        - SUCCEEDED
        - FAILED
        - NOT_CHECKED
    PersonDocumentsVerificationResult:
      description: |
        Результат проверки документов.
        - `CONFIRMED` - Документ подтверждён.
        - `UNCONFIRMED` - Документ не подтверждён.
        - `UNKNOWN` - Результат проверки неизвестен.
      type: string
      enum:
        - CONFIRMED
        - UNCONFIRMED
        - UNKNOWN
    PersonDocumentsVerificationResponseDTO:
      description: Информация о статусе проверки документов в СМЭВ.
      type: object
      properties:
        documentType:
          $ref: '#/components/schemas/PersonDocumentsVerificationType'
        state:
          $ref: '#/components/schemas/PersonDocumentsVerificationDTOState'
        result:
          $ref: '#/components/schemas/PersonDocumentsVerificationResult'
    UserRoleDto:
      description: Данные роли пользователя.
      type: object
      properties:
        id:
          description: ID роли.
          type: string
          format: uuid
        nameKey:
          description: Ключ названия роли.
          type: string
        descriptionKey:
          description: ID Ключ описания роли.
          type: string
    ClientUserSingleFullInfoDTO:
      description: Полная информация о пользователе клиента.
      type: object
      allOf:
        - $ref: '#/components/schemas/UserFullInfoDTO'
        - properties:
            clientUserId:
              description: ID пользователя клиента.
              type: string
              format: uuid
            clientUserExternalId:
              description: ID пользователя клиента во внешней системе.
              type: string
              x-nullable: true
            clientUserVersion:
              description: Версия данных пользователя клиента.
              x-nullable: true
              type: integer
              format: int64
            legalEntities:
              description: Информация пользователя, как сотрудника в юр. лицах.
              type: array
              items:
                $ref: '#/components/schemas/EmployeeInfoV2DTO'
            employeeRoles:
              description: Список данных связок ролей пользователя клиента в юрлице вместе с данными доверенных сотрудников пользователя клиента, имеющих соответствующие роли в своих юрлицах.
              x-nullable: true
              type: array
              items:
                $ref: '#/components/schemas/ClientUserEmployeeRolesWithProxyEmployeesDTO'
            nameDeclensions:
              description: Информация о склонении имени пользователя по падежам.
              type: array
              items:
                $ref: '#/components/schemas/PersonNameCaseDTO'
            personDocumentVerifications:
              description: Информация о проверке документов в СМЭВ.
              type: array
              items:
                $ref: '#/components/schemas/PersonDocumentsVerificationResponseDTO'
            clientUserRoles:
              description: Список ролей пользователя клиента.
              type: array
              items:
                $ref: '#/components/schemas/UserRoleDto'
            mfaStatus:
              description: Статус многофакторной аутентификации пользователя клиента.
              x-nullable: false
              type: string
              enum:
                - ACTIVE
                - NOT_SET
                - EXCLUDED
            MfaType:
              description: Тип многофакторной аутентификации пользователя клиента.
              type: string
              enum:
                - TOTP
                - OTC_WITH_CONTROL_QUESTION
    UpdateUserNameDeclensionsDTO:
      description: Данные для обновления склонения ФИО у пользователя клиента.
      type: object
      properties:
        values:
          type: array
          minItems: 0
          description: Данные склонения части имени по определенному падежу.
          items:
            $ref: '#/components/schemas/PersonNameCaseDTO'
        clientUserVersion:
          description: Версия данных пользователя клиента.
          type: integer
          format: int64
        personVersion:
          description: Версия данных пользователя (person).
          x-nullable: true
          type: integer
          format: int64
      required:
        - values
        - clientUserVersion
    NqesConfirmationChannelType:
      description: |
        Тип канала подтверждения подписания УНЭП:
        - EMAIL - Электронная почта.
        - SMS - SMS сообщение.
      type: string
      enum:
        - EMAIL
        - SMS
    SigningTypeToEnable:
      description: |
        Тип подписания, который может быть включён человеку.
        - QES - УКЭП.
        - PRR - Портал «Работа России».
        - GOV_KEY - Госключ.
        - NQES_IN_PERSON - УНЭП с очной идентификацией.
        - NQES_REMOTE - УНЭП с удалённой идентификацией.
      type: string
      enum:
        - QES
        - PRR
        - GOV_KEY
        - NQES_IN_PERSON
        - NQES_REMOTE
    LegalEntityAndHeadManagerIds:
      description: Данные для включения возможности подписания через ПРР.
      type: object
      properties:
        legalEntityId:
          description: ID юрлица.
          type: string
          format: uuid
        headManagerId:
          description: ID руководителя отдела.
          type: string
          format: uuid
          x-nullable: true
      required:
        - legalEntityId
    ClientUserInvitationData:
      description: Данные для приглашения пользователя клиента при массовом приглашении.
      type: object
      properties:
        clientUserId:
          description: ID пользователя клиента.
          type: string
          format: uuid
        login:
          description: |
            Логин для отправки приглашения.
            В виде email или номера телефона, в зависимости от типа приглашения.
            mail@mail.ru | +79997776655 | 89997776655 | 79997776655
          type: string
        signingTypesToEnable:
          description: Список типов подписания для включения при приглашении пользователя.
          type: array
          minItems: 1
          items:
            $ref: '#/components/schemas/SigningTypeToEnable'
        prrEnablingData:
          description: Данные для включения возможности подписания через ПРР.
          type: array
          minItems: 1
          x-nullable: true
          items:
            $ref: '#/components/schemas/LegalEntityAndHeadManagerIds'
      required:
        - clientUserId
        - signingTypesToEnable
    ManyClientUserInvitationsDTO:
      description: Данные для массового приглашения пользователей клиента.
      type: object
      properties:
        type:
          $ref: '#/components/schemas/InvitationType'
        nqesChannelType:
          $ref: '#/components/schemas/NqesConfirmationChannelType'
        invitationsData:
          description: Данные приглашаемых пользователей клиента.
          type: array
          minItems: 1
          items:
            $ref: '#/components/schemas/ClientUserInvitationData'
      required:
        - type
        - invitationsData
    ErrorCodeGroup:
      description: |
        Группа, к которой относится код ошибки. Каждая ошибка принадлежит одной группе: группа задаёт область системы, в которой возникла ошибка, а конкретный код ошибки уточняет причину.
      type: object
      properties:
        code:
          description: Возвращает уникальный во всей системе код группы ошибок.
          type: string
    ErrorSemantics:
      description: |
        Семантика ошибки.
        - INCORRECT_INPUT_PARAMS - Входные данные для выполнения операции некорректны.
        - NOT_AUTHENTICATED - Пользователь не аутентифицирован.
        - LICENSE_LIMIT - Превышен лимит пакета лицензии.
        - FORBIDDEN - Нет доступа к данным.
        - NOT_FOUND - Данные не найдены.
        - GONE - Ресурс больше недоступен.
        - TOO_MANY_REQUESTS - Пользователь отправил слишком много запросов за определенный промежуток времени («ограничение скорости»).
        - ERROR - Операция завершилась неопределённой ошибкой.
      type: string
      enum:
        - INCORRECT_INPUT_PARAMS
        - NOT_AUTHENTICATED
        - LICENSE_LIMIT
        - FORBIDDEN
        - NOT_FOUND
        - GONE
        - TOO_MANY_REQUESTS
        - ERROR
    ErrorCode:
      description: |
        Форматирует код группы ошибок и код ошибки внутри группы согласно соглашению, возвращая уникальный в рамках
        всей системы код ошибки.
        Соглашение по формату кода ошибки: "XX.YYY«, где »XX« определяет группу ошибок, а »YYY« - конкретную
        ошибку внутри группы.
      type: object
      properties:
        code:
          description: |
            Возвращает уникальный во всей системе код ошибки.
            Соглашение по формату кода ошибки: »XX.YYY«, где »XX« определяет группу ошибок, а »YYY" - конкретную
            ошибку внутри группы.
          type: string
        group:
          description: Возвращает группу ошибок.
          $ref: '#/components/schemas/ErrorCodeGroup'
        semantics:
          description: Возвращает семантику ошибки.
          $ref: '#/components/schemas/ErrorSemantics'
        i18nMessage:
          description: Возвращает I18n-сообщение об ошибке, произошедшей в системе, для отображения пользователю.
          $ref: '#/components/schemas/I18nMessage'
    ErrorData:
      description: Интерфейс-маркер для формализованных данных, которые могут быть переданы вместе с какой-либо ошибкой.
      type: object
    ValidationError:
      description: Данные ошибки валидации.
      type: object
      properties:
        errorCode:
          description: Код ошибки.
          $ref: '#/components/schemas/ErrorCode'
        errorMessage:
          description: I18n-сообщение об ошибке.
          $ref: '#/components/schemas/I18nMessage'
        errorData:
          description: Данные ошибки.
          $ref: '#/components/schemas/ErrorData'
    ClientUserInvitationValidationResult:
      description: Данные результата валидации приглашения пользователя клиента.
      type: object
      properties:
        clientUserId:
          description: ID пользователя клиента.
          type: string
          format: uuid
        validationErrors:
          description: Список ошибок валидации.
          type: array
          items:
            $ref: '#/components/schemas/ValidationError'
    InvitedClientUserDTO:
      description: Данные выполненного приглашения пользователя клиента.
      type: object
      properties:
        clientUserId:
          description: ID пользователя клиента.
          type: string
          format: uuid
        invitationId:
          description: ID приглашения.
          type: string
          format: uuid
    NqesChannelChangeDTO:
      description: Данные для запуска процесса смены канала подписания УНЭП пользователя клиента.
      type: object
      properties:
        value:
          description: Текстовое значение нового канала подписания УНЭП.
          type: string
      required:
        - value
    EmployeeRoleWithNameKeyDTO:
      description: Данные роли сотрудника.
      type: object
      properties:
        id:
          description: ID роли сотрудника.
          type: string
          format: uuid
        name:
          description: I18n-ключ для названия роли сотрудника.
          type: string
    LegalEntityWithEmployeeRolesDTO:
      description: Данные юрлица и относящихся к нему ролей сотрудника пользователя клиента.
      type: object
      properties:
        legalEntity:
          $ref: '#/components/schemas/ShortLegalEntityDTO'
        employeeExists:
          description: Существует ли в данном юрлице хотя бы один неуволенный сотрудник пользователя клиента?
          type: boolean
        roles:
          description: Роли сотрудника пользователя клиента, относящиеся к данному юрлицу.
          type: array
          items:
            $ref: '#/components/schemas/EmployeeRoleWithNameKeyDTO'
    ClientUserWithEmployeeRolesGroupedByLegalEntityDTO:
      description: Данные пользователя клиента вместе с его ролями сотрудника, сгруппированными по юрлицам.
      type: object
      properties:
        id:
          description: ID пользователя клиента.
          type: string
          format: uuid
        employeeRoles:
          description: Роли сотрудника пользователя клиента, относящиеся к конкретным юрлицам.
          type: array
          items:
            $ref: '#/components/schemas/LegalEntityWithEmployeeRolesDTO'
        version:
          description: Версия данных пользователя клиента.
          type: integer
          format: int64
    ClientUserEmployeeRoleDTO:
      description: Данные роли сотрудника в юрлице.
      type: object
      properties:
        legalEntityId:
          description: ID юрлица.
          type: string
          format: uuid
        legalEntityExternalId:
          description: ID юрлица во внешней системе.
          type: string
        roleIds:
          description: Список ID ролей сотрудника.
          type: array
          items:
            type: string
            format: uuid
    CreateClientUserEmployeeRoleDTO:
      description: Данные для создания или обновления ролей сотрудника пользователя клиента.
      type: object
      properties:
        employeeRoles:
          description: Роли сотрудника пользователя клиента по юрлицам.
          type: array
          items:
            $ref: '#/components/schemas/ClientUserEmployeeRoleDTO'
        version:
          description: Версия данных пользователя клиента.
          type: integer
          format: int64
    GetEmployeesAndRolesResponseDto:
      description: Данные сотрудников и ролей пользователя клиента.
      type: object
      properties:
        employees:
          description: Список сотрудников пользователя клиента.
          type: array
          items:
            type: object
        roles:
          description: Список ролей-связок в юрлицах, где у пользователя нет сотрудника.
          type: array
          items:
            type: object
    ESIssuePassportDataDTO:
      description: Данные паспорта для выпуска ЭП.
      type: object
      properties:
        citizenship:
          description: |
            Alpha-3 код страны по ISO 3166-1.
            <a href="https://en.wikipedia.org/wiki/ISO_3166-1_alpha-3">ISO 3166-1 alpha-3</a>
          type: string
        serialNumber:
          description: Серия.
          type: string
        number:
          description: Номер.
          type: string
        birthdate:
          description: Дата рождения.
          type: string
          format: date
        birthplace:
          description: Место рождения.
          type: string
        issuedDate:
          description: Дата выдачи.
          type: string
          format: date
        issuingAuthority:
          description: Кем выдан.
          type: string
        issuingAuthorityCode:
          description: Код подразделения.
          type: string
        registrationAddress:
          description: Адрес регистрации.
          type: string
    NQESIssueDataDTO:
      description: Данные для выпуска УНЭП.
      type: object
      allOf:
        - $ref: '#/components/schemas/NameDTO'
        - properties:
            gender:
              $ref: '#/components/schemas/Gender'
            email:
              description: Email. Обязательное, если не указан телефон.
              type: string
            phone:
              description: Телефон. Обязательное поле, если не указана почта.
              type: string
            snils:
              description: СНИЛС.
              type: string
              pattern: ^\d{11}$
            inn:
              description: ИНН.
              type: string
            passport:
              $ref: '#/components/schemas/ESIssuePassportDataDTO'
            hrLegalEntityShortName:
              description: Короткое название юрлица кадровика, который сопровождает выпуск УНЭП.
              type: string
            automaticReissue:
              description: Перевыпуск УНЭП инициирован автоматически?
              type: boolean
      required:
        - firstName
        - lastName
    PersonIdentificationType:
      description: |
        Тип идентификации человека в заявке на выпуск УНЭП.
        - IN_PERSON - Очный процесс идентификации.
        - REMOTE - Удаленный процесс идентификации.
      type: string
      enum:
        - IN_PERSON
        - REMOTE
    ClientUserNqesIssuingDTO:
      description: Данные заявки на выпуск УНЭП пользователю клиента.
      type: object
      allOf:
        - $ref: '#/components/schemas/NQESIssueDataDTO'
        - properties:
            clientUserId:
              description: ID пользователя клиента.
              type: string
              format: uuid
            personIdentificationType:
              $ref: '#/components/schemas/PersonIdentificationType'
            documentsVerificationEnabled:
              description: Включить проверку документов?
              type: boolean
              x-nullable: true
      required:
        - personIdentificationType
        - clientUserId
    ClientUsersNqesIssuingDTO:
      description: Данные заявок на выпуск УНЭП пользователям клиента.
      type: object
      properties:
        issueRequests:
          description: Список с данными заявок на выпуск УНЭП пользователям клиента.
          type: array
          minItems: 0
          items:
            $ref: '#/components/schemas/ClientUserNqesIssuingDTO'
    CancelNqesIssueRequestDto:
      type: object
      required:
        - clientUserId
      properties:
        clientUserId:
          type: string
          format: uuid
          description: ID пользователя, которому необходимо отменить выпуск УНЭП.
      description: Данные для отмены заявки на выпуск УНЭП.
    SubstitutionMode:
      title: SubstitutionMode
      description: <p>Режим замещения.</p> - `EMPLOYEE` - <p>Сотрудник.</p> - `HR` - <p>Кадровик.</p>
      type: string
      enum:
        - EMPLOYEE
        - HR
    SubstitutionType:
      description: |
        Контекст, на который распространяется замещение.
        - `APPLICATIONS` - Заявления.
        - `DOCUMENTS` - Документы.
        - `EMPLOYEES` - Сотрудники.
        - `NORMATIVE_ACTS` - Нормативные акты.
      type: string
      enum:
        - APPLICATIONS
        - DOCUMENTS
        - EMPLOYEES
        - NORMATIVE_ACTS
    EmployeeScope:
      description: |
        Скоуп сотрудников, к которым применяется замещение.

        - `ALL` — замещение применяется ко всем сотрудникам.

        - `SPECIFIED` — замещение применяется только к указанным сотрудникам.
      type: string
      enum:
        - ALL
        - SPECIFIED
    EmployeeSubstitutionType:
      description: |
        Тип замещения пользователя по его сотрудникам.

        - `EMPLOYEE` — по конкретному сотруднику.

        - `CLIENT_USER_EMPLOYEE_ROLE` — по роли-связке в юрлице.
      type: string
      enum:
        - EMPLOYEE
        - CLIENT_USER_EMPLOYEE_ROLE
    EmployeeSubstitutionData:
      description: Сотрудник и роль-связка, по которой назначается замещение.
      type: object
      properties:
        type:
          $ref: '#/components/schemas/EmployeeSubstitutionType'
        employeeId:
          description: ID сотрудника.
          type: string
          format: uuid
          x-nullable: true
        clientUserEmployeeRoleId:
          description: ID роли-связки замещаемого пользователя, по которой назначается замещение.
          type: string
          format: uuid
          x-nullable: true
      required:
        - type
    CreateSubstitutionRequestDto_base:
      description: Данные для создания заместителя.
      type: object
      properties:
        startDate:
          description: Дата начала замещения.
          type: string
          format: date-time
        endDate:
          description: Дата окончания замещения.
          type: string
          format: date-time
        mode:
          description: Режим замещения.
          $ref: '#/components/schemas/SubstitutionMode'
        types:
          description: Список объектов контекста, на которые распространяется замещение.
          type: array
          minItems: 1
          items:
            $ref: '#/components/schemas/SubstitutionType'
        employeeScope:
          $ref: '#/components/schemas/EmployeeScope'
        employees:
          description: Список сотрудников и ролей-связок, по которым назначается замещение.
          type: array
          x-nullable: true
          items:
            $ref: '#/components/schemas/EmployeeSubstitutionData'
      required:
        - startDate
        - endDate
        - types
    HRlink_ID:
      allOf:
        - $ref: '#/components/schemas/CreateSubstitutionRequestDto_base'
        - properties:
            substitutorClientUserId:
              description: ID пользователя-заместителя в HRlink.
              type: string
              format: uuid
      required:
        - substitutorClientUserId
    External_ID:
      allOf:
        - $ref: '#/components/schemas/CreateSubstitutionRequestDto_base'
        - properties:
            substitutorClientUserExternalId:
              description: ID пользователя-заместителя во внешней системе.
              type: string
              format: uuid
      required:
        - substitutorClientUserExternalId
    CreateSubstitutionRequestDto:
      description: Данные для создания заместителя.
      oneOf:
        - $ref: '#/components/schemas/HRlink_ID'
        - $ref: '#/components/schemas/External_ID'
    SubstitutionTypeDto:
      description: Данные о типе замещения.
      type: object
      properties:
        type:
          description: Название типа замещения.
          $ref: '#/components/schemas/SubstitutionType'
        revokedDate:
          description: Дата отзыва типа замещения.
          type: string
          format: date-time
          x-nullable: true
      required:
        - type
    SubstitutionResponseDto:
      description: Данные замещения.
      type: object
      allOf:
        - properties:
            id:
              description: Идентификатор замещения.
              type: string
              format: uuid
            version:
              description: Версия данных замещения.
              type: integer
              format: int64
        - properties:
            startDate:
              description: Дата начала замещения.
              type: string
              format: date-time
            endDate:
              description: Дата окончания замещения.
              type: string
              format: date-time
            mode:
              description: Режим замещения.
              $ref: '#/components/schemas/SubstitutionMode'
            types:
              description: Список объектов контекста, на которые распространяется замещение.
              type: array
              items:
                $ref: '#/components/schemas/SubstitutionType'
            clientUser:
              $ref: '#/components/schemas/SubstitutorClientUserDto'
            revokedTypes:
              description: Список отозванных типов замещения.
              type: array
              items:
                $ref: '#/components/schemas/SubstitutionTypeDto'
    CustomStructureResponseDTO:
      description: Данные ответа связанного с пользовательским справочником структур
      type: object
      required:
        - id
        - name
        - colourSchema
        - version
      properties:
        id:
          description: ID пользовательского справочника структур
          type: string
          format: uuid
        name:
          description: Название пользовательского справочника структур
          type: string
        description:
          description: Описание пользовательского справочника структур
          type: string
          x-nullable: true
          default: null
        externalId:
          description: ID пользовательского справочника структур во внешней системе
          type: string
          x-nullable: true
          default: null
        colourSchema:
          description: Цветовая схема пользовательского справочника структур
          $ref: '#/components/schemas/ColourSchemaData'
        version:
          description: Версия данных
          type: integer
          format: int64
    CustomStructureRegistryResponseDTO:
      description: Данные о структуре для ответа на запрос реестра пользовательских справочников структур.
      type: object
      allOf:
        - $ref: '#/components/schemas/CustomStructureResponseDTO'
        - properties:
            hasElements:
              description: В структуре есть хотя бы один элемент?
              type: boolean
    CreateCustomStructureRequestDTO:
      description: Данные запроса создания пользовательского справочника структур
      type: object
      required:
        - name
        - colourSchema
      properties:
        name:
          type: string
          description: Название пользовательского справочника структур
        description:
          type: string
          description: Описание пользовательского справочника структур
          x-nullable: true
          default: null
        externalId:
          type: string
          description: ID пользовательского справочника структур во внешней системе
          x-nullable: true
          default: null
        colourSchema:
          $ref: '#/components/schemas/ColourSchemaData'
          description: Данные цветовой схемы пользовательского справочника структур
    CustomStructureElementShortInfoResponseDTO:
      description: Сокращённые базовые данные элемента пользовательской структуры для сотрудника.
      type: object
      properties:
        id:
          description: ID элемента пользовательской структуры.
          type: string
          format: uuid
        name:
          description: Название элемента пользовательской структуры.
          type: string
        parent:
          description: Данные родительского элемента пользовательской структуры.
          type: object
          properties:
            id:
              type: string
              description: ID родительского элемента пользовательской структуры.
              format: uuid
    GetCustomStructureForEmployeeResponseDTO:
      description: Данные запроса получения пользовательской структуры для сотрудника.
      type: object
      properties:
        id:
          description: ID пользовательского справочника структур.
          type: string
        name:
          description: Название пользовательского справочника структур.
          type: string
        elements:
          description: Список данных элементов пользовательских структур.
          items:
            $ref: '#/components/schemas/CustomStructureElementShortInfoResponseDTO'
    for_employee_mode:
      allOf:
        - $ref: '#/components/schemas/GetCustomStructureForEmployeeResponseDTO'
    CustomStructureElementHeadManagerDTO:
      description: Данные руководителя элемента пользовательской структуры
      allOf:
        - type: object
          required:
            - firstName
            - lastName
          properties:
            firstName:
              description: Имя
              type: string
            lastName:
              description: Фамилия
              type: string
            patronymic:
              description: Отчество
              type: string
              x-nullable: true
              default: null
            department:
              type: object
              description: Отдел
              x-nullable: true
              default: null
              properties:
                id:
                  description: Уникальный идентификатор модели
                  type: string
                  format: uuid
                name:
                  description: Название модели
                  type: string
              required:
                - name
            externalId:
              description: ID руководителя во внешней системе
              type: string
              x-nullable: true
              default: null
            id:
              description: ID руководителя
              type: string
              format: uuid
    CustomStructureElementResponseDTO:
      description: Данные элемента пользовательского справочника.
      allOf:
        - type: object
          required:
            - name
            - version
          properties:
            id:
              description: ID элемента
              type: string
              format: uuid
            name:
              description: Название элемента
              type: string
            parent:
              type: object
              description: Родительский элемент
              x-nullable: true
              default: null
              properties:
                externalId:
                  description: ID родительского элемента во внешней системе
                  type: string
                  x-nullable: true
                  default: null
                id:
                  description: ID родительского элемента
                  type: string
                  format: uuid
            headManager:
              description: Руководитель элемента
              $ref: '#/components/schemas/CustomStructureElementHeadManagerDTO'
              x-nullable: true
              default: null
            version:
              description: Версия элемента пользовательской структуры
              type: integer
              format: int64
            externalId:
              description: ID элемента во внешней системе
              type: string
              x-nullable: true
              default: null
    GetCustomStructureResponseDTO:
      description: Данные ответа с элементами пользовательского справочника структур
      allOf:
        - $ref: '#/components/schemas/CustomStructureResponseDTO'
        - type: object
          properties:
            elements:
              description: Список элементов пользовательских структур
              type: array
              items:
                $ref: '#/components/schemas/CustomStructureElementResponseDTO'
              x-nullable: true
    for_hr_mode:
      allOf:
        - $ref: '#/components/schemas/GetCustomStructureResponseDTO'
    GetCustomStructurePermittedData:
      description: Данные в зависимости от профиля (Сотрудник или Кадровик)
      oneOf:
        - $ref: '#/components/schemas/for_employee_mode'
        - $ref: '#/components/schemas/for_hr_mode'
    UpdateCustomStructureRequestDTO:
      description: Данные запроса обновления пользовательского справочника структур
      allOf:
        - $ref: '#/components/schemas/CreateCustomStructureRequestDTO'
        - type: object
          properties:
            version:
              type: integer
              format: int64
              description: Версия данных
              x-nullable: true
              default: null
    CustomStructureElementRequestDTO:
      description: Базовые данные запроса операций над элементами пользовательских структур
      type: object
      required:
        - name
      properties:
        name:
          type: string
          description: Название элемента структуры клиента
        externalId:
          type: string
          description: ID элемента структуры клиента во внешней системе
          x-nullable: true
          default: null
        headManagerId:
          type: string
          format: uuid
          description: ID руководителя элемента структуры
          x-nullable: true
          default: null
        headManagerExternalId:
          type: string
          description: ID руководителя элемента структуры клиента во внешней системе
          x-nullable: true
          default: null
        parentId:
          type: string
          format: uuid
          description: ID родительского элемента структуры клиента
          x-nullable: true
          default: null
        parentExternalId:
          type: string
          description: ID родительского элемента структуры клиента во внешней системе
          x-nullable: true
          default: null
    CreateCustomStructureElementRequestDTO:
      description: Данные запроса создания элемента пользовательской структуры
      allOf:
        - $ref: '#/components/schemas/CustomStructureElementRequestDTO'
    CreateCustomStructureElementResponseDTO:
      description: Данные ответа на запрос создания элемента пользовательской структуры.
      allOf:
        - $ref: '#/components/schemas/CustomStructureElementResponseDTO'
    UpdateCustomStructureElementRequestDTO:
      description: Данные запроса редактирования элемента пользовательской структуры
      allOf:
        - $ref: '#/components/schemas/CustomStructureElementRequestDTO'
        - type: object
          required:
            - version
          properties:
            version:
              type: integer
              format: int64
              description: Версия элемента пользовательской структуры
    UpdateCustomStructureElementResponseDTO:
      description: Данные ответа на запрос обновления элемента пользовательской структуры
      allOf:
        - $ref: '#/components/schemas/CustomStructureElementResponseDTO'
    DocumentSigningOrder:
      description: |
        Порядок подписания документа.
        - `MANAGER_FIRST` - Первым подписывает руководитель.
        - `EMPLOYEE_FIRST` - Первым подписывает сотрудник.
        - `EMPLOYEE_ONLY` - Подписывает только сотрудник.
        - `MANAGER_ONLY` - Подписывает только руководитель.
        - `ROUTE` - Очерёдность определяется маршрутом подписания.
      type: string
      enum:
        - MANAGER_FIRST
        - EMPLOYEE_FIRST
        - EMPLOYEE_ONLY
        - MANAGER_ONLY
        - ROUTE
    UpdateDocumentParticipantDTO:
      description: Данные для обновления участника этапа маршрута подписания.
      type: object
      allOf:
        - $ref: '#/components/schemas/ParticipantDTO'
    UpdateDocumentDTO:
      description: Данные для обновления документа.
      type: object
      properties:
        id:
          description: ID документа.
          type: string
          format: uuid
        externalId:
          description: ID документа во внешней системе.
          type: string
        legalEntityId:
          description: ID юрлица клиента.
          type: string
          format: uuid
        legalEntityExternalId:
          description: ID юрлица клиента во внешней системе.
          type: string
        typeId:
          description: ID типа документа.
          type: string
          format: uuid
        number:
          description: Номер документа.
          type: string
        date:
          description: Дата документа.
          type: string
          format: date
        notice:
          description: Заметка о документе.
          type: string
        signingOrder:
          $ref: '#/components/schemas/DocumentSigningOrder'
        headManagerId:
          description: ID сотрудника, который является руководителем связанного с документом юрлица, и будет подписывать подписывать документ со стороны юрлица.
          type: string
          format: uuid
        headManagerLegalEntityId:
          x-nullable: true
          description: ID юрлица, к которому принадлежит сотрудник-руководитель связанного с документом юрлица.
          type: string
          format: uuid
        headManagerLegalEntityExternalId:
          x-nullable: true
          description: ID во внешней системе юрлица, к которому принадлежит сотрудник-руководитель связанного с документом юрлица.
          type: string
        employeeIds:
          description: Список ID сотрудников, которые будут подписывать документ.
          type: array
          items:
            type: string
            format: uuid
        employeeExternalIds:
          description: Список ID сотрудников во внешней системе, которые будут подписывать документ.
          type: array
          items:
            type: string
            format: uuid
        watcherIds:
          description: Список ID наблюдателей документа.
          type: array
          items:
            type: string
            format: uuid
        watcherExternalIds:
          description: Список ID наблюдателей документа во внешней системе.
          type: array
          items:
            type: string
        watcherClientDepartmentIds:
          description: Список ID отделов клиента наблюдателей документа.
          type: array
          items:
            type: string
            format: uuid
        participants:
          description: Список данных для создания участников этапа маршрута подписания.
          type: array
          items:
            $ref: '#/components/schemas/UpdateDocumentParticipantDTO'
        routeTemplateId:
          description: ID шаблона маршрута подписания.
          type: string
          format: uuid
        routeTemplateExternalId:
          description: ID шаблона маршрута подписания во внешней системе.
          type: string
        deadlineDayCount:
          description: Срок подписания в днях.
          type: integer
          x-nullable: true
          default: null
        version:
          description: Версия данных документа.
          type: integer
          format: int64
    UpdateDocumentGroupDTO:
      description: Данные для обновления группы документов.
      type: object
      properties:
        id:
          description: ID группы документов.
          type: string
          format: uuid
        name:
          description: Название группы.
          type: string
        documents:
          description: Документы в группе.
          type: array
          items:
            $ref: '#/components/schemas/UpdateDocumentDTO'
        version:
          description: Версия данных группы документов.
          type: integer
          format: int64
      required:
        - id
        - documents
    UpdateDocumentGroupsDTO:
      description: Данные для обновления списка групп документов.
      type: object
      properties:
        documentGroups:
          description: Список групп документов.
          type: array
          minItems: 1
          items:
            x-nullable: false
            $ref: '#/components/schemas/UpdateDocumentGroupDTO'
      required:
        - documentGroups
    UpdatedDocumentDTO:
      description: Данные обновлённого документа.
      type: object
      properties:
        id:
          description: ID обновлённого документа.
          type: string
          format: uuid
        version:
          description: Версия данных обновлённого документа.
          type: integer
          format: int64
      required:
        - id
        - version
    UpdatedDocumentGroupDTO:
      description: Данные обновлённой группы документов.
      type: object
      properties:
        id:
          description: ID обновлённой группы документов.
          type: string
          format: uuid
        documents:
          description: Список данных документов обновлённой группы документов.
          type: array
          items:
            $ref: '#/components/schemas/UpdatedDocumentDTO'
        version:
          description: Версия данных обновлённой группы документов.
          type: integer
          format: int64
      required:
        - id
        - documents
        - version
    CreateDocumentParticipantDTO:
      description: Данные для создания участника этапа маршрута подписания.
      type: object
      allOf:
        - $ref: '#/components/schemas/ParticipantDTO'
    EntityType:
      description: |
        Тип сущности.
        - DOCUMENT - Документ.
        - APPLICATION - Заявление.
      type: string
      enum:
        - DOCUMENT
        - APPLICATION
    ShortEntityDTO:
      description: Сокращенные данные сущности КЭДО.
      type: object
      properties:
        id:
          description: ID сущности КЭДО.
          type: string
          format: uuid
        externalId:
          description: Внешний ID сущности КЭДО.
          type: string
        type:
          description: Тип сущности КЭДО.
          $ref: '#/components/schemas/EntityType'
    CreateDocumentDTO:
      description: Данные для создания документа.
      type: object
      properties:
        fileId:
          description: ID файла.
          type: string
          format: uuid
        legalEntityId:
          description: ID юрлица клиента.
          type: string
          format: uuid
        legalEntityExternalId:
          description: ID юрлица клиента во внешней системе.
          type: string
        typeId:
          description: ID типа документа.
          type: string
          format: uuid
        number:
          description: Номер документа.
          type: string
        date:
          description: Дата документа в формате гггг-мм-дд.
          type: string
          format: date
        notice:
          description: Заметка о документе.
          type: string
        signingOrder:
          $ref: '#/components/schemas/DocumentSigningOrder'
        headManagerId:
          description: ID сотрудника, который является руководителем связанного с документом юрлица, и будет подписывать документ со стороны юрлица.
          type: string
          format: uuid
        headManagerExternalId:
          description: ID сотрудника во внешней системе, который является руководителем связанного с документом юрлица, и будет подписывать документ со стороны юрлица.
          type: string
        headManagerLegalEntityId:
          x-nullable: true
          description: ID юрлица, к которому принадлежит сотрудник-руководитель связанного с документом юрлица.
          type: string
          format: uuid
          default: null
        headManagerLegalEntityExternalId:
          x-nullable: true
          description: ID во внешней системе юрлица, к которому принадлежит сотрудник-руководитель связанного с документом юрлица.
          type: string
          default: null
        employeeIds:
          description: Список ID сотрудников, которые будут подписывать документ.
          type: array
          items:
            type: string
            format: uuid
        employeeExternalIds:
          description: Список ID сотрудников во внешней системе, которые будут подписывать документ.
          type: array
          items:
            type: string
        watcherIds:
          description: Список ID наблюдателей документа.
          type: array
          items:
            type: string
            format: uuid
        watcherExternalIds:
          description: Список ID наблюдателей документа во внешней системе.
          type: array
          items:
            type: string
        watcherClientDepartmentIds:
          description: Список ID отделов клиента наблюдателей документа.
          type: array
          items:
            type: string
            format: uuid
        participants:
          description: Список данных для создания участников этапа маршрута подписания. На одного и того же участника маршрута (один и тот же participantsID) можно назначить несколько разных сотрудников, указав их разными объектами. Это возможно, если в шаблоне маршрута участник имеет признак multipleSigners, т.е. данный участник маршрута может повторяться, на него может быть назначено несколько сотрудников.
          type: array
          items:
            $ref: '#/components/schemas/CreateDocumentParticipantDTO'
        routeTemplateId:
          description: ID шаблона маршрута подписания.
          type: string
          format: uuid
        routeTemplateExternalId:
          description: ID шаблона маршрута подписания во внешней системе.
          type: string
        externalId:
          description: ID документа во внешней системе.
          type: string
        fileExternalId:
          description: ID файла документа во внешней системе.
          type: string
        sourceDocumentId:
          description: ID документа-источника в HRlink, содержащего сконвертированный файл в PDF/A формат.
          type: string
          format: uuid
        sourceDocumentExternalId:
          description: ID документа-источника во внешней системе, содержащего сконвертированный файл в PDF/A формат.
          type: string
        relatedEntities:
          description: Данные связанных сущностей.
          type: array
          items:
            $ref: '#/components/schemas/ShortEntityDTO'
        deadlineDayCount:
          description: Срок подписания в днях.
          type: integer
          x-nullable: true
          default: null
    CreateDocumentGroupDTO:
      description: Данные для создания группы документов.
      type: object
      properties:
        name:
          description: Название группы.
          type: string
        creatorId:
          description: ID пользователя клиента, являющегося создателем группы документов.
          type: string
          format: uuid
        creatorExternalId:
          description: ID пользователя клиента во внешней системе, являющегося создателем группы документов.
          type: string
        documents:
          description: Документы в группе.
          type: array
          items:
            $ref: '#/components/schemas/CreateDocumentDTO'
      required:
        - name
        - documents
    DocumentGroupDTO:
      description: Данные группы документов.
      type: object
      properties:
        id:
          description: ID группы документов.
          type: string
          format: uuid
        documents:
          description: Документы в группе.
          type: array
          items:
            type: object
            properties:
              id:
                description: Идентификатор документа.
                type: string
                format: uuid
      required:
        - id
        - documents
    ValidateDocumentsDTO:
      description: Документы, которые необходимо провалидировать.
      type: object
      properties:
        documents:
          description: Документы, которые необходимо провалидировать.
          type: array
          items:
            type: object
            properties:
              id:
                description: Идентификатор документа.
                type: string
                format: uuid
              version:
                description: Версия данных документа.
                type: integer
                format: int64
      required:
        - documents
    DocumentValidationStatus:
      description: |
        Статус валидации документа.
        - CORRECT - Данные документа корректны.
        - PARTLY_CORRECT - Данные документа частично корректны.
          Документ может быть частично обработан. Например, документ, у которого часть подписантов-сотрудников задана
          некорректно, а часть корректно, может быть отправлен на подписание, то есть данные такого документа
          частично корректны.
        - NOT_CORRECT - Данные документа некорректны.
      type: string
      enum:
        - CORRECT
        - PARTLY_CORRECT
        - NOT_CORRECT
    DocumentSignerType:
      description: |
        Типы подписантов документа.
        - HEAD_MANAGER - Подписант руководитель.
        - EMPLOYEE - Подписант сотрудник.
        - PARTICIPANT - Подписант соответствует участнику этапа маршрута подписания.
      type: string
      enum:
        - HEAD_MANAGER
        - EMPLOYEE
        - PARTICIPANT
    DocumentSignerValidationStatus:
      description: |
        Статус валидации подписанта документа.
        - CORRECT - Данные подписанта документа корректны.
        - NOT_CORRECT - Данные подписанта документа некорректны.
      type: string
      enum:
        - CORRECT
        - NOT_CORRECT
    DocumentSignerValidationResultDTO:
      description: Данные результата валидации подписанта документа.
      type: object
      allOf:
        - $ref: '#/components/schemas/PersonName'
        - properties:
            documentSignerType:
              $ref: '#/components/schemas/DocumentSignerType'
            employeeId:
              description: ID сотрудника, который является подписантом документа.
              type: string
              format: uuid
            status:
              $ref: '#/components/schemas/DocumentSignerValidationStatus'
            hasSuitableSignature:
              description: У сотрудника есть подходящая подпись?
              type: boolean
            confirmed:
              description: Сотрудник подтверждён?
              type: boolean
            errorMessage:
              $ref: '#/components/schemas/I18nMessage'
            errorCode:
              description: Код ошибки, если данные подписанта некорректны.
              type: string
    DocumentValidationResultDTO:
      description: Данные результата валидации документа.
      type: object
      properties:
        documentId:
          description: ID документа.
          type: string
          format: uuid
        status:
          $ref: '#/components/schemas/DocumentValidationStatus'
        errorMessage:
          $ref: '#/components/schemas/I18nMessage'
        errorCode:
          description: Код ошибки, если данные подписанта некорректны.
          type: string
        documentSigners:
          description: Список данных результатов валидации подписантов документа.
          type: array
          items:
            $ref: '#/components/schemas/DocumentSignerValidationResultDTO'
    ValidateDocumentBeforeSendAndSignDTO:
      description: Данные для валидации документа перед подписанием с одновременной отправкой на подписание.
      type: object
      allOf:
        - properties:
            id:
              description: Идентификатор документа.
              type: string
              format: uuid
            version:
              description: Версия данных документа.
              type: integer
              format: int64
        - properties:
            attorneyId:
              description: ID МЧД.
              type: string
              format: uuid
            signature:
              description: Подпись документа в формате Base64.
              type: string
          required:
            - attorneyId
            - signature
    ValidateDocumentsBeforeSendAndSignDTO:
      description: Данные для валидации документов перед подписанием с одновременной отправкой на подписание.
      type: object
      properties:
        documents:
          description: Список данных для валидации документа перед подписанием с одновременной отправкой на подписание.
          type: array
          items:
            $ref: '#/components/schemas/ValidateDocumentBeforeSendAndSignDTO'
      required:
        - documents
    DocumentStatus:
      description: |
        Статус документа.
        - DRAFT - Документ является черновиком.
        - IN_PROCESS - Документ в процессе подписания.
        - AWAITING_MY_SIGNING - Документ ожидающий подписания текущим пользователем.
        - COMPLETED - Подписание документа завершено.
        - REJECTED - Подписание документа отклонено.
        - DELETED - Документ удалён.
        - ANNULLED - Документ аннулирован.
      type: string
      enum:
        - DRAFT
        - IN_PROCESS
        - AWAITING_MY_SIGNING
        - COMPLETED
        - REJECTED
        - DELETED
        - ANNULLED
    DocumentSignerStatus:
      description: |
        Статусы подписантов документа.
        - NOT_SEEN - Документ не просмотрен.
        - SEEN - Документ просмотрен.
        - SIGNED - Документ подписан.
        - REJECTED - Документ отклонён.
      type: string
      enum:
        - NOT_SEEN
        - SEEN
        - SIGNED
        - REJECTED
    DocumentsEmployeeRegistryRequestDto:
      description: _________
      type: object
      properties:
        allEmployeeDocuments:
          description: Требуется выгрузить документы для вкладки «Все документы»?
          type: boolean
        onlyEmployeeSignerTypeDocuments:
          description: Требуются только те документы, где пользователь клиента фигурирует как сотрудник-подписант?
          type: boolean
        onlyHeadManagerDocuments:
          description: Требуются только документы, где сотрудник фигурирует как подписант-руководитель?
          type: boolean
        documentIds:
          description: Список ID документов.
          type: array
          items:
            type: string
            format: uuid
            x-nullable: false
        documentExternalIds:
          description: Список ID документов во внешней системе.
          type: array
          items:
            type: string
            format: uuid
        documentNumber:
          description: Номер документа.
          type: string
        documentStatuses:
          description: Статусы документов.
          type: array
          items:
            $ref: '#/components/schemas/DocumentStatus'
        docflowFinishedDateFrom:
          description: Левая граница диапазона момента времени завершения документооборота документов. Обе границы для фильтрации документов по моменту завершения документооборота включаются в результат, т.е. документы с моментами завершения документооборота, равными границам моментов завершения документооборота для фильтрации, считаются подходящими для попадания в реестр.
          type: string
          format: date-time
        docflowFinishedDateTo:
          description: Правая граница диапазона момента времени завершения документооборота документов. Обе границы для фильтрации документов по моменту завершения документооборота включаются в результат, т.е. документы с моментами завершения документооборота, равными границам моментов завершения документооборота для фильтрации, считаются подходящими для попадания в реестр.
          type: string
          format: date-time
        documentDateFrom:
          description: Левая граница диапазона дат документов. Обе границы для фильтрации документов по дате включаются в результат, т.е. документы с датами, равными границам дат для фильтрации, считаются подходящими для попадания в реестр.
          type: string
          format: date
        documentDateTo:
          description: Правая граница диапазона дат документов. Обе границы для фильтрации документов по дате включаются в результат, т.е. документы с датами, равными границам дат для фильтрации, считаются подходящими для попадания в реестр.
          type: string
          format: date
        documentTypeIds:
          description: ID типов документов, определённых в справочнике типов документов HRlink.
          type: array
          items:
            type: string
            format: uuid
        employeeSignerStatuses:
          description: Список статусов сотрудников-подписантов документа, хотя бы один из которых должен быть у подписанта.
          type: array
          items:
            $ref: '#/components/schemas/DocumentSignerStatus'
        employeeIds:
          description: Список ID сотрудников, хотя бы один из которых должен быть в документе в качестве сотрудника-подписанта, участника или наблюдателя.
          type: array
          items:
            type: string
            format: uuid
        employeeSignerEmployeeIds:
          description: Список ID сотрудников, хотя бы один из которых должен быть в документе в качестве сотрудника-подписанта.
          type: array
          items:
            type: string
            format: uuid
        participantOrWatcherClientUserIds:
          description: Список ID пользователей клиентов, сотрудник хотя бы одного из которых должен быть в документе в качестве участника или наблюдателя.
          type: array
          items:
            type: string
            format: uuid
        headSignerStatuses:
          description: Список статусов руководителей-подписантов документа, хотя бы один из которых должен быть у подписанта.
          type: array
          items:
            $ref: '#/components/schemas/DocumentSignerStatus'
        headManagerIds:
          description: Список ID руководителей-подписантов, хотя бы один из которых должен быть в документе. Сотрудники, которые указываются в этом поле, должны иметь роль Руководитель в системе HRlink.
          type: array
          items:
            type: string
            format: uuid
        legalEntityIds:
          description: Список ID юрлиц документа, к которым должны относиться документы.
          type: array
          items:
            type: string
            format: uuid
        createdDateFrom:
          description: Левая граница диапазона момента времени создания документа. Обе границы для фильтрации документов по моменту создания включаются в результат, т.е. документы с моментами создания, равными границам моментов создания для фильтрации, считаются подходящими для попадания в реестр.
          type: string
          format: date-time
        createdDateTo:
          description: Правая граница диапазона момента времени создания документа. Обе границы для фильтрации документов по моменту создания включаются в результат, т.е. документы с моментами создания, равными границам моментов создания для фильтрации, считаются подходящими для попадания в реестр.
          type: string
          format: date
    PaginatedDocumentsEmployeeRegistryRequestDto:
      description: Данные для фильтрации документов реестра документов.
      type: object
      allOf:
        - $ref: '#/components/schemas/DocumentsEmployeeRegistryRequestDto'
        - properties:
            limit:
              description: Количество возвращаемых при запросе элементов.
              type: integer
              minimum: 1
            offset:
              description: Количество элементов, которые нужно пропустить при выборке.
              type: integer
              minimum: 0
    ShortDocumentTypeDTO:
      description: Сокращенные данные типа документов.
      type: object
      properties:
        id:
          description: Идентификатор типа документов в HRlink.
          type: string
          format: uuid
        name:
          type: string
          description: Название типа документа.
          example: Трудовой договор
        signingByEmployeeSesEnabled:
          description: Включена ли возможность подписания ПЭП со стороны Сотрудника?
          type: boolean
        substitutorCreationHintEnabled:
          description: Включена ли подсказка о назначении заместителя?
          type: boolean
    ParentLegalEntityDto:
      description: Данные головной организации.
      properties:
        id:
          description: ID юрлица в системе HRlink.
          type: string
          format: uuid
        ogrn:
          description: ОГРН.
          type: string
        inn:
          description: ИНН.
          type: string
    LegalEntityV1DTO:
      description: Данные юрлица.
      type: object
      allOf:
        - $ref: '#/components/schemas/UpdateLegalEntityDTO'
        - properties:
            id:
              description: ID юрлица.
              type: string
              format: uuid
            parentLegalEntity:
              $ref: '#/components/schemas/ParentLegalEntityDto'
    DocumentEmployeeData:
      description: Данные сотрудника для указания в данных документа.
      type: object
      allOf:
        - properties:
            id:
              description: Идентификатор сотрудника.
              type: string
              format: uuid
        - properties:
            employeeId:
              description: ID сотрудника.
              type: string
              format: uuid
            externalId:
              description: ID сотрудника во внешней системе.
              type: string
            lastName:
              description: Фамилия сотрудника.
              type: string
            firstName:
              description: Имя сотрудника.
              type: string
            patronymic:
              description: Отчество сотрудника.
              type: string
            position:
              description: Данные должности сотрудника.
              type: object
              properties:
                id:
                  description: Идентификатор должности.
                  type: string
                  format: uuid
                name:
                  description: Название должности.
                  type: string
            participantId:
              description: ID сотрудника в роли участника маршрута подписания.
              type: string
              format: uuid
            dismissedDate:
              description: Дата увольнения сотрудника.
              type: string
              format: date
            number:
              description: Табельный номер сотрудника.
              type: string
    DocumentSigningInfoDTO:
      description: Данные, связанные с подписанием документа.
      type: object
      properties:
        signingByPrrInProgress:
          description: Выполняется подписание документа через ПРР?
          type: boolean
    ShortAttorneyPersonDTO:
      description: Сокращенные данные участника МЧД.
      type: object
      properties:
        sourcedClientUser:
          description: Данные пользователя клиента, на основе которого был создан участник МЧД.
          $ref: '#/components/schemas/AttorneySourcedClientUserDTO'
        lastName:
          description: Фамилия.
          type: string
        firstName:
          description: Имя.
          type: string
        patronymic:
          description: Отчество.
          type: string
    AttorneyWithShortPersonsDTO:
      description: Данные доверенности с сокращенными данными участников.
      type: object
      allOf:
        - $ref: '#/components/schemas/BaseAttorneyDTO'
        - properties:
            principal:
              x-nullable: true
              description: |
                Сокращенные данные доверителя.
                Имеет значение `null`, если МЧД подписана от имени управляющей компании.
                В этом случае заполнены поля `managementCompany` и `managementCompanyPrincipal`.
              $ref: '#/components/schemas/ShortAttorneyPersonDTO'
            delegate:
              x-nullable: false
              description: Сокращенные данные представителя руководителя по МЧД.
              $ref: '#/components/schemas/ShortAttorneyPersonDTO'
            managementCompanyPrincipal:
              x-nullable: true
              description: |
                Данные доверителя из управляющей компании.
                Имеет значение `null`, если заполнено поле `principal`.
              $ref: '#/components/schemas/PersonName'
    DocumentSignerDTO:
      description: Данные подписанта документа. В поле ID должен быть записан ID подписанта документа.
      type: object
      allOf:
        - $ref: '#/components/schemas/DocumentEmployeeData'
        - properties:
            signerType:
              description: Тип подписанта.
              type: string
            seenDate:
              description: Момент времени, когда подписант просмотрел документ.
              type: string
              format: date-time
            madeDecision:
              description: Подписант документа уже принял какое-либо решение (подписал или отказал в подписании)?
              type: boolean
            signedDate:
              description: Момент времени, когда документ был подписан.
              type: string
              format: date-time
            signingOrder:
              description: Порядковый номер подписанта в цепочке подписания документа. Первый подписант имеет порядковый номер равный 0. Если документ является черновиком, то порядковые номера всех подписантов равны 0.
              type: integer
              format: int64
            rejectedDate:
              description: Момент времени, когда подписант отказался от подписания документа.
              type: string
              format: date-time
            signingAvailabilityDate:
              description: Момент времени, когда подписанту стало доступно подписание.
              type: string
              format: date-time
            rejectionComment:
              description: Комментарий при отказе от подписания документа.
              type: string
            signingInfo:
              description: Данные, связанные с подписанием документа.
              $ref: '#/components/schemas/DocumentSigningInfoDTO'
            attorney:
              description: Данные МЧД с сокращенными данными участников, с помощью которой подписант подписал документ.
              $ref: '#/components/schemas/AttorneyWithShortPersonsDTO'
            substitution:
              description: Данные замещения, по которому было совершено подписание документа.
              $ref: '#/components/schemas/SubstitutionDto'
            clientUserId:
              description: ID пользователя клиента, который был выбран подписантом на этапе маршрута.
              type: string
              format: uuid
            customStructureElementIds:
              type: array
              description: Список ID элементов пользовательских структур
              items:
                type: string
                format: uuid
              x-nullable: true
              default: null
    DocumentWatcherDTO:
      description: Данные наблюдателя, относящиеся к данным документа.
      type: object
      allOf:
        - $ref: '#/components/schemas/DocumentEmployeeData'
        - properties:
            seenDate:
              description: Момент времени, когда наблюдатель просмотрел документ.
              type: string
              format: date-time
          required:
            - seenDate
    SignatureTypeWithState:
      description: |
        Тип подписи документа и состояние, в котором он находится.
        - `CLOUD_NQES_WAITING_SMS_CODE` - Облачный УНЭП, ожидание смс кода.
        - `CLOUD_QES` - Облачный УНЭП, проверка смс кода.
        - `PRR` - ПЭП Госуслуги
        - `GOV_KEY` - УНЭП Госключ
      type: string
      enum:
        - CLOUD_NQES_WAITING_SMS_CODE
        - CLOUD_QES
        - PRR
        - GOV_KEY
    PendingDocumentSigningDTO:
      description: Данные о подписании документа, находящемся в процессе подписания.
      type: object
      properties:
        signatureType:
          $ref: '#/components/schemas/SignatureTypeWithState'
        employeeId:
          description: ID подписывающего сотрудника.
          type: string
          format: uuid
        redirectUrl:
          description: URL, на который требуется перенаправить пользователя для подписания документа.
          type: string
        signingOrder:
          description: Порядковый номер подписанта в цепочке подписания документа. Первый подписант имеет порядковый номер равный 0. Если документ является черновиком, то порядковые номера всех подписантов равны 0.
          type: integer
          format: int64
        signingRequestId:
          description: ID запроса подписания документа.
          type: string
          format: uuid
    DocumentCreatorDTO:
      description: Данные создателя документа.
      type: object
      allOf:
        - properties:
            id:
              description: Идентификатор пользователя клиента.
              type: string
              format: uuid
        - properties:
            lastName:
              description: Фамилия.
              type: string
            firstName:
              description: Имя.
              type: string
            patronymic:
              description: Отчество.
              type: string
            position:
              description: Данные должности.
              type: object
              properties:
                id:
                  description: Идентификатор должности.
                  type: string
                  format: uuid
                name:
                  description: Название должности.
                  type: string
    EntityData:
      description: Общие данные сущности КЭДО.
      type: object
      properties:
        groupId:
          description: ID группы сущности.
          type: string
          format: uuid
        number:
          description: Номер сущности.
          type: string
        type:
          description: Тип сущности.
          type: object
          properties:
            id:
              description: Идентификатор сущности.
              type: string
              format: uuid
            name:
              description: Название сущности.
              type: string
        date:
          description: Дата сущности.
          type: string
          format: date
    EntityDTO:
      description: Данные сущности КЭДО.
      type: object
      allOf:
        - $ref: '#/components/schemas/ShortEntityDTO'
        - properties:
            data:
              $ref: '#/components/schemas/EntityData'
    EntityRelationDTO:
      description: Данные связи сущности КЭДО.
      type: object
      properties:
        id:
          description: ID связи сущности КЭДО.
          type: string
        from:
          description: Данные сущности КЭДО, от которой направлена связь.
          $ref: '#/components/schemas/EntityDTO'
        to:
          description: Данные сущности КЭДО, к которой направлена связь.
          $ref: '#/components/schemas/EntityDTO'
        version:
          description: Версия связи сущности КЭДО.
          type: integer
          format: int64
    NormativeActShortInfoDTO:
      type: object
      description: Краткая информация о нормативном акте.
      properties:
        id:
          description: ID нормативного акта.
          type: string
          format: uuid
          x-nullable: false
    DocumentDTO:
      description: Данные документа.
      type: object
      allOf:
        - properties:
            id:
              description: Идентификатор документа.
              type: string
              format: uuid
        - properties:
            documentGroup:
              description: Данные группы документов, к которой относится документ.
              type: object
              properties:
                id:
                  description: Идентификатор группы документов.
                  type: string
                  format: uuid
                name:
                  description: Название группы документов.
                  type: string
                version:
                  description: Версия группы документов.
                  type: integer
                  format: int64
            baseDocumentId:
              description: ID базового документа, из которого был создан текущий. Если этот параметр пустой, то документ является черновиком. Если документ был отправлен на подписание, то ID базового документа будет ссылаться на ID документа-черновика, на основе которого был создан этот документ.
              type: string
            baseDocumentExternalId:
              description: ID базового документа во внешней системе.
              type: string
            type:
              $ref: '#/components/schemas/ShortDocumentTypeDTO'
              description: Тип документа.
            fileName:
              description: Название файла документа.
              type: string
            number:
              description: Номер документа.
              type: string
            date:
              description: Дата документа.
              type: string
              format: date
            draft:
              description: Документ является черновиком?
              type: boolean
            deleted:
              description: Документ удалён?
              type: boolean
            signed:
              description: Документ подписан?
              type: boolean
            rejected:
              description: Документ отказались подписывать?
              type: boolean
            createdDate:
              description: Момент времени, когда документ был создан.
              type: string
              format: date-time
            signingOrder:
              $ref: '#/components/schemas/DocumentSigningOrder'
            statusLastModifiedDate:
              description: Дата последнего изменения статуса документа.
              type: string
              format: date-time
              x-nullable: true
              default: null
            legalEntity:
              description: Юрлицо.
              $ref: '#/components/schemas/LegalEntityV1DTO'
            headManager:
              description: Руководитель.
              $ref: '#/components/schemas/DocumentSignerDTO'
            employees:
              description: Сотрудники.
              type: array
              items:
                $ref: '#/components/schemas/DocumentSignerDTO'
            watchers:
              description: Наблюдатели. Не подписывают документ, но получают уведомление после завершения документооборота, после чего имеют доступ к документу и скачиванию архива с подписями участников документооборота.
              type: array
              items:
                $ref: '#/components/schemas/DocumentWatcherDTO'
            participants:
              description: Участники маршрута подписания, которые не являются сотрудниками, наблюдателями и руководителем.
              type: array
              items:
                $ref: '#/components/schemas/DocumentSignerDTO'
            notice:
              description: Заметка кадровика о документе. Отображается в ответе только для кадровика.
              type: string
            convertedFileId:
              description: ID файла документа формата PDF/A.
              type: string
              format: uuid
            fileConversionFailedDate:
              description: Момент времени, когда конвертация файла документа в PDF/A формат завершилась неудачно.
              type: string
              format: date-time
            sentDate:
              description: Момент времени отправки документа на подписание.
              type: string
              format: date-time
            pendingSigningInfo:
              description: Данные об активных подписаниях документа.
              type: array
              items:
                $ref: '#/components/schemas/PendingDocumentSigningDTO'
            creator:
              description: Создатель документа.
              $ref: '#/components/schemas/DocumentCreatorDTO'
            docflowFinishedDate:
              description: Момент времени завершения документооборота.
              type: string
              format: date-time
            lastSignedDate:
              description: Дата последнего подписания документа подписантом.
              type: string
              format: date-time
            printFormUpdatedDate:
              description: Дата последнего обновления печатной формы заявления.
              type: string
              format: date-time
            version:
              description: Версия документа.
              type: integer
              format: int64
            externalId:
              description: ID документа во внешней системе.
              type: string
            route:
              description: Данные маршрута подписания.
              $ref: '#/components/schemas/SigningRouteDTO'
            hideAfterSigning:
              description: Документ необходимо скрыть после подписания? Под скрытием понимается недоступность файлов документа сотруднику после подписания.
              type: boolean
            rejectionDisabled:
              description: Исключена возможность отклонения документа?
              type: boolean
            relatedEntities:
              description: Данные о связанных сущностях документа.
              type: array
              items:
                $ref: '#/components/schemas/EntityRelationDTO'
            comments:
              description: Список данных комментариев.
              type: array
              items:
                $ref: '#/components/schemas/ChatCommentDTO'
            normativeAct:
              description: Данные о нормативном акте.
              $ref: '#/components/schemas/NormativeActShortInfoDTO'
              x-nullable: true
            annulledDate:
              description: Момент времени аннулирования документа.
              type: string
              format: date-time
            prrInitialSetup:
              description: Данные с ID процесса настройки включения подписания через ПРР.
              type: object
              properties:
                id:
                  description: Идентификатор процесса настройки включения подписания через ПРР.
                  type: string
                  format: uuid
            deadlineDayCount:
              description: Срок подписания в днях.
              type: integer
              x-nullable: true
            deadlineDate:
              description: Дата окончания срока подписания.
              type: string
              format: date-time
              x-nullable: true
            deadlineViolated:
              description: Срок подписания был нарушен?
              type: boolean
              x-nullable: true
    DocumentRegistrySortingFieldDTO:
      description: |
        Поле документа, по которому возможна сортировка в реестре документов.
        - ID - ID документа.
        - DOCUMENT_DATE - Дата документа.
        - CREATED_DATE - Момент времени создания документа.
      type: string
      enum:
        - ID
        - DOCUMENT_DATE
        - CREATED_DATE
    SortingDirection:
      description: |
        Порядок сортировки.
        - ASC - Сортировка в порядке возрастания.
        - DESC - Сортировка в порядке убывания.
      type: string
      enum:
        - ASC
        - DESC
    DocumentRegistrySortDTO:
      description: Данные для сортировки документов реестра документов.
      type: object
      properties:
        by:
          description: Поле документа, по которому выполняется сортировка.
          $ref: '#/components/schemas/DocumentRegistrySortingFieldDTO'
        direction:
          description: Порядок сортировки.
          $ref: '#/components/schemas/SortingDirection'
      required:
        - by
        - direction
    DocumentSigningDeadlineStatus:
      description: |
        Статус документа относительно срока подписания.
        - `DEADLINE_VIOLATED` - Срок подписания документа нарушен - документ не подписан в срок.
        - `DEADLINE_IS_NOT_VIOLATED` - Срок подписания документа не нарушен - документ подписан в срок.
      type: string
      enum:
        - DEADLINE_VIOLATED
        - DEADLINE_IS_NOT_VIOLATED
    DocumentRegistryFilterDTO:
      description: Данные для фильтрации документов реестра документов.
      type: object
      properties:
        documentIds:
          description: Список ID документов.
          type: array
          items:
            type: string
            format: uuid
        documentExternalIds:
          description: Список ID документов во внешней системе.
          type: array
          items:
            type: string
            format: uuid
        documentNumber:
          description: Строка номера документа.
          type: string
        documentStatuses:
          description: Статусы документов.
          type: array
          items:
            $ref: '#/components/schemas/DocumentStatus'
        docflowFinishedDateFrom:
          description: Левая граница диапазона момента времени завершения документооборота документов. Обе границы для фильтрации документов по моменту завершения документооборота включаются в результат, т.е. документы с моментами завершения документооборота, равными границам моментов завершения документооборота для фильтрации, считаются подходящими для попадания в реестр.
          type: string
          format: date-time
        docflowFinishedDateTo:
          description: Правая граница диапазона момента времени завершения документооборота документов. Обе границы для фильтрации документов по моменту завершения документооборота включаются в результат, т.е. документы с моментами завершения документооборота, равными границам моментов завершения документооборота для фильтрации, считаются подходящими для попадания в реестр.
          type: string
          format: date-time
        documentDateFrom:
          description: Левая граница диапазона дат документов. Обе границы для фильтрации документов по дате включаются в результат, т.е. документы с датами, равными границам дат для фильтрации, считаются подходящими для попадания в реестр.
          type: string
          format: date
        documentDateTo:
          description: Правая граница диапазона дат документов. Обе границы для фильтрации документов по дате включаются в результат, т.е. документы с датами, равными границам дат для фильтрации, считаются подходящими для попадания в реестр.
          type: string
          format: date
        documentTypeIds:
          description: ID типов документов, определённых в справочнике типов документов HRlink.
          type: array
          items:
            type: string
            format: uuid
        employeeSignerStatuses:
          description: Список статусов сотрудников-подписантов документа, хотя бы один из которых должен быть у подписанта.
          type: array
          items:
            $ref: '#/components/schemas/DocumentSignerStatus'
        employeeIds:
          description: Список ID сотрудников, хотя бы один из которых должен быть в документе в качестве сотрудника-подписанта, участника или наблюдателя.
          type: array
          items:
            type: string
            format: uuid
        employeeDepartmentIds:
          description: Список ID отделов, хотя бы к одному из которых должен относиться сотрудник-подписант документа. При значении null в теле ответа вернутся только те сотрудники, у которых нет отдела.
          type: array
          items:
            type: string
            format: uuid
        employeePositionIds:
          description: Список ID должностей, хотя бы одну из которых должен занимать сотрудник-подписант документа. При значении null в теле ответа вернутся только те сотрудники, у которых нет должности.
          type: array
          items:
            type: string
            format: uuid
        headSignerStatuses:
          description: Список статусов руководителей-подписантов документа, хотя бы один из которых должен быть у подписанта.
          type: array
          items:
            $ref: '#/components/schemas/DocumentSignerStatus'
        headManagerIds:
          description: Список ID руководителей-подписантов, хотя бы один из которых должен быть в документе. Сотрудники, которые указываются в этом поле, должны иметь роль Руководитель в системе HRlink.
          type: array
          items:
            type: string
            format: uuid
        legalEntityIds:
          description: Список ID юрлиц документа, к которым должны относиться документы.
          type: array
          items:
            type: string
            format: uuid
        creatorIds:
          description: Список ID создателей документа.
          type: array
          items:
            type: string
            format: uuid
        employeeTags:
          description: Список тегов сотрудника, хотя бы один из которых должен иметь хотя бы один сотрудник-подписант документа.
          type: array
          items:
            type: string
        createdDateFrom:
          description: Левая граница диапазона момента времени создания документа. Обе границы для фильтрации документов по моменту создания включаются в результат, т.е. документы с моментами создания, равными границам моментов создания для фильтрации, считаются подходящими для попадания в реестр.
          type: string
          format: date-time
        createdDateTo:
          description: Правая граница диапазона момента времени создания документа. Обе границы для фильтрации документов по моменту создания включаются в результат, т.е. документы с моментами создания, равными границам моментов создания для фильтрации, считаются подходящими для попадания в реестр.
          type: string
          format: date
        baseDocumentIds:
          description: Список ID базовых документов, которые были отправлены на подписание.
          type: array
          items:
            type: string
        baseDocumentExternalIds:
          description: Список ID базовых документов во внешней системе, которые были отправлены на подписание.
          type: array
          items:
            type: string
        limit:
          description: Количество возвращаемых при запросе элементов.
          type: integer
          minimum: 0
        offset:
          description: Количество элементов, которые нужно пропустить при выборке.
          type: integer
          minimum: 0
        sort:
          description: Данные для сортировки документов реестра документов.
          type: array
          items:
            $ref: '#/components/schemas/DocumentRegistrySortDTO'
        deadlineDateFrom:
          description: Левая граница диапазона моментов времени истечения срока подписания документа. (Включительно)
          type: string
          format: date-time
        deadlineDateTo:
          description: Правая граница диапазона моментов времени истечения срока подписания документа. (Включительно)
          type: string
          format: date-time
        signingDeadlineStatuses:
          description: Статус документа относительно срока подписания.
          type: array
          items:
            $ref: '#/components/schemas/DocumentSigningDeadlineStatus'
        statusLastModifiedDateFrom:
          description: Левая граница диапазона моментов времени последнего изменения статуса документа.
          type: string
          format: date-time
          x-nullable: true
          default: null
        statusLastModifiedDateTo:
          description: Правая граница диапазона моментов времени последнего изменения статуса документа.
          type: string
          format: date-time
          x-nullable: true
          default: null
    GetDocumentStatisticRequestDto:
      type: object
      description: Данные для сбора статистики документов.
      properties:
        createdDateFrom:
          type: string
          format: date-time
          description: Левая граница диапазона момента времени создания документа.
        createdDateTo:
          type: string
          format: date-time
          description: Правая граница диапазона момента времени создания документа.
          x-nullable: true
        legalEntityIds:
          type: array
          description: Список ID юрлиц.
          x-nullable: true
          items:
            type: string
            format: uuid
            x-nullable: false
        documentTypeIds:
          type: array
          description: Список ID типов документов.
          x-nullable: true
          items:
            type: string
            format: uuid
            x-nullable: false
        employeeDepartmentIds:
          type: array
          description: Список ID отделов, хотя бы к одному из которых должен относиться сотрудник-подписант документа.
          x-nullable: true
          items:
            type: string
            format: uuid
            x-nullable: false
        employeeIds:
          type: array
          description: Список ID сотрудников, хотя бы один из которых должен быть в документе в качестве сотрудника-подписанта, участника или наблюдателя.
          x-nullable: true
          items:
            type: string
            format: uuid
            x-nullable: false
        headManagerIds:
          type: array
          description: Список ID руководителей-подписантов, хотя бы один из которых должен быть в документе.
          x-nullable: true
          items:
            type: string
            format: uuid
            x-nullable: false
        creatorIds:
          type: array
          description: Список ID создателей документа.
          x-nullable: true
          items:
            type: string
            format: uuid
            x-nullable: false
      required:
        - createdDateFrom
    GetDocumentStatisticResponseDto:
      type: object
      description: Данные статистики документов.
      properties:
        counts:
          type: object
          description: Количественные данные документов.
          properties:
            sent:
              description: Количество документов отправленных на подписание.
              type: integer
            completed:
              description: Количество подписанных документов.
              type: integer
            inProcess:
              description: Количество документов в процессе подписания.
              type: integer
            rejected:
              description: Количество отклонённых документов.
              type: integer
        averageSigningTimeInMinutes:
          description: Среднее время подписания.
          type: number
          format: double
      required:
        - counts
    UpdateDocumentNoticeDTO:
      description: Данные для обновления заметки кадровика о документе.
      type: object
      properties:
        notice:
          description: Заметка о документе.
          type: string
        version:
          description: Версия документа.
          type: integer
          format: int64
    UpdatedDocumentWithNoticeDTO:
      description: Данные обновлённой заметки о документе.
      type: object
      allOf:
        - properties:
            id:
              description: Идентификатор документа.
              type: string
              format: uuid
            version:
              description: Версия данных документа.
              type: integer
              format: int64
        - properties:
            notice:
              description: Заметка кадровика о документе.
              type: string
    SigningType:
      description: |
        Тип подписания.
        - NQES - УНЭП.
        - PRR - Портал «Работа России».
        - GOV_KEY - Госключ.
        - SES - Простая электронная подпись.
      type: string
      enum:
        - NQES
        - PRR
        - GOV_KEY
        - SES
    DocumentSigningRequestState:
      description: |
        Состояние запроса на подписание документа.
        - IN_PROGRESS - Подписание в процессе.
        - WAITING_CODE - Ожидается ввод кода для подписания.
        - CONFIRMING - Выполняется подтверждение запроса.
        - WRONG_CODE - Введен неверный код.
        - SUCCEEDED - Запрос завершился успешно.
        - FAILED - Запрос завершился неуспешно.
        - EXPIRED - Запрос истек.
      type: string
      enum:
        - IN_PROGRESS
        - WAITING_CODE
        - CONFIRMING
        - WRONG_CODE
        - SUCCEEDED
        - FAILED
        - EXPIRED
    DocumentSigningRequestSignerEmployeeDTO:
      description: Данные сотрудника для указания в данных запроса на подписание.
      type: object
      allOf:
        - properties:
            id:
              description: Идентификатор сотрудника в системе HR-Link.
              type: string
              format: uuid
            externalId:
              description: Идентификатор сотрудника во внешней системе.
              type: string
        - properties:
            position:
              description: Данные должности сотрудника.
              type: object
              properties:
                id:
                  description: Идентификатор должности.
                  type: string
                  format: uuid
                externalId:
                  description: Идентификатор должности во внешней системе.
                  type: string
                name:
                  description: Название должности.
                  type: string
            department:
              description: Данные отдела сотрудника.
              type: object
              properties:
                id:
                  description: Идентификатор отдела.
                  type: string
                  format: uuid
                externalId:
                  description: Идентификатор отдела во внешней системе.
                  type: string
                name:
                  description: Название отдела.
                  type: string
            legalEntity:
              description: Данные юрлица сотрудника.
              $ref: '#/components/schemas/ShortLegalEntityDTO'
          required:
            - position
            - department
            - legalEntity
    DocumentSigningRequestSignerDTO:
      description: Данные сотрудника для указания в данных документа.
      type: object
      allOf:
        - $ref: '#/components/schemas/PersonName'
        - properties:
            id:
              description: ID подписанта документа.
              type: string
              format: uuid
            employee:
              description: Данные должности сотрудника.
              $ref: '#/components/schemas/DocumentSigningRequestSignerEmployeeDTO'
          required:
            - id
            - employee
    DocumentSigningRequestDTO:
      description: Данные запроса на подписание документа.
      type: object
      allOf:
        - properties:
            id:
              description: Идентификатор запроса.
              type: string
              format: uuid
        - properties:
            signingType:
              $ref: '#/components/schemas/SigningType'
            state:
              $ref: '#/components/schemas/DocumentSigningRequestState'
            document:
              description: Данные документа.
              type: object
              properties:
                id:
                  description: Идентификатор документа.
                  type: string
                  format: uuid
                externalId:
                  description: Идентификатор документа во внешней системе.
                  type: string
            signer:
              description: Данные подписанта документа.
              $ref: '#/components/schemas/DocumentSigningRequestSignerDTO'
            createdDate:
              description: Момент времени создания запроса на подписание.
              type: string
              format: date-time
            expiresDate:
              description: Момент времени истечения запроса на подписание. Данное поле возвращается только для запросов на подписания УНЭП’ом.
              type: string
              format: date-time
            finishedDate:
              description: Момент времени завершения запроса на подписание.
              type: string
              format: date-time
          required:
            - signingType
            - state
            - document
            - signer
            - createdDate
            - expiresDate
            - finishedDate
    DeleteDocumentDTO:
      description: Данные документа для удаления.
      type: object
      allOf:
        - properties:
            id:
              description: Идентификатор документа.
              type: string
              format: uuid
        - properties:
            externalId:
              description: Идентификатор документа во внешней системе.
              type: string
            version:
              description: Версия документа.
              type: integer
              format: int64
    DeleteDocumentsDTO:
      description: Данные документов для удаления.
      type: object
      properties:
        documents:
          description: Список данных документов для удаления.
          type: array
          items:
            $ref: '#/components/schemas/DeleteDocumentDTO'
      required:
        - documents
    SendToSigningDocumentsDTO:
      description: Документы, отправляемые на подписание.
      type: object
      properties:
        documents:
          description: Документы, отправляемые на подписание.
          type: array
          minItems: 1
          items:
            type: object
            properties:
              id:
                description: Идентификатор документа.
                type: string
                format: uuid
              version:
                description: Версия документа.
                type: integer
                format: int64
        sentToSigningPartly:
          description: Могут ли документы быть частично отправлены на подписание?
          type: boolean
          default: false
      required:
        - documents
    SentToSigningEmployeeTypeDocumentSignerDTO:
      description: Данные сотрудника-подписанта документа, который отправлялся на подписание.
      type: object
      properties:
        id:
          description: ID сотрудника-подписанта.
          type: string
          format: uuid
        externalId:
          description: Внешний ID сотрудника-подписанта.
          type: string
        lastName:
          description: Фамилия.
          type: string
        firstName:
          description: Имя.
          type: string
        patronymic:
          description: Отчество.
          type: string
    SentToSigningDocumentDTO:
      description: Данные документа, отправленного на подписание.
      type: object
      allOf:
        - properties:
            id:
              description: Идентификатор документа.
              type: string
              format: uuid
            version:
              description: Версия данных документа.
              type: integer
              format: int64
        - properties:
            employeeSigner:
              description: Данные подписанта документа, который отправлялся на подписание.
              $ref: '#/components/schemas/SentToSigningEmployeeTypeDocumentSignerDTO'
    DraftDocumentAfterSentToSigningDTO:
      description: Данные документа, содержащие информацию о неотправленной на подписание части документа, которая становится новым черновиком документа. Если документ был успешно отправлен на подписание для всех его сотрудников-подписантов, то это поле будет отсутствовать
      type: object
      allOf:
        - properties:
            id:
              description: Идентификатор документа.
              type: string
              format: uuid
            version:
              description: Версия данных документа.
              type: integer
              format: int64
        - properties:
            employeeTypeSigners:
              description: Данные сотрудников-подписантов документа.
              type: array
              items:
                $ref: '#/components/schemas/SentToSigningEmployeeTypeDocumentSignerDTO'
    DocumentAfterSentToSigningDTO:
      description: Данные документа после отправки на подписание.
      type: object
      properties:
        baseDocumentId:
          description: ID базового документа, который был отправлен на подписание.
          type: string
          format: uuid
        sentDocuments:
          description: Данные документов, которые были отправлены на подписание.
          type: array
          items:
            $ref: '#/components/schemas/SentToSigningDocumentDTO'
        newDraftDocument:
          description: Данные документа, содержащие информацию о неотправленной на подписание части документа, которая становится новым черновиком документа. Если документ был успешно отправлен на подписание для всех его сотрудников-подписантов, то это поле будет отсутствовать
          $ref: '#/components/schemas/DraftDocumentAfterSentToSigningDTO'
      required:
        - baseDocumentId
        - sentDocuments
    EntirelySentToSigningDocumentDTO:
      description: Данные документа, полностью отправленного на подписание.
      type: object
      allOf:
        - properties:
            id:
              description: Идентификатор документа.
              type: string
              format: uuid
            version:
              description: Версия данных документа.
              type: integer
              format: int64
        - properties:
            baseDocumentId:
              description: ID документа, на основе которого был создан текущий документ в момент отправки на подписание.
              type: string
              format: uuid
            employeeId:
              description: ID подписанта-сотрудника.
              type: string
              format: uuid
      required:
        - baseDocumentId
        - employeeId
    DocumentSignatureDTO:
      description: Данные для подписания документа.
      type: object
      properties:
        documentId:
          description: ID документа.
          type: string
          format: uuid
        value:
          description: Подпись документа в Base64.
          type: string
          format: byte
        attorneyId:
          x-nullable: true
          description: ID МЧД.
          type: string
          format: uuid
      required:
        - documentId
        - value
    DocumentSignaturesDTO:
      description: Данные подписей документов.
      type: object
      properties:
        signatures:
          description: Список данных подписей документов.
          type: array
          items:
            $ref: '#/components/schemas/DocumentSignatureDTO'
          minItems: 1
        sentToSigningPartly:
          description: Могут ли документы быть частично отправлены на подписание?
          type: boolean
          default: false
      required:
        - signatures
    DocumentIdAndVersionRequestDto:
      type: object
      properties:
        id:
          description: ID документа.
          type: string
          format: uuid
        version:
          description: Версия документа.
          type: integer
          format: int64
          x-nullable: true
      required:
        - id
    GetSignersToNotifyRequestDto:
      type: object
      description: Запрос на получение следующих подписантов документа для отправки повторного уведомления.
      properties:
        documents:
          description: Список ID документов и их версий.
          type: array
          items:
            $ref: '#/components/schemas/DocumentIdAndVersionRequestDto'
      required:
        - documents
    DocumentNotificationStatusResponseDto_DocumentDto:
      type: object
      description: Данные документа.
      properties:
        id:
          description: ID документа.
          type: string
          format: uuid
        number:
          description: Номер документа.
          type: string
          x-nullable: true
        date:
          description: Дата документа.
          type: string
          format: date
          x-nullable: true
        type:
          description: Тип документа.
          type: object
          x-nullable: true
          properties:
            id:
              description: ID типа документа.
              type: string
              format: uuid
            name:
              description: Наименование типа документа.
              type: string
      required:
        - id
    NotificationAvailabilityStatus:
      type: string
      description: Статус возможности отправки повторного уведомления.
      enum:
        - AVAILABLE
        - PARTIALLY_AVAILABLE
        - UNAVAILABLE
      x-enumDescriptions:
        AVAILABLE: Повторное уведомление возможно отправить.
        PARTIALLY_AVAILABLE: Возможна отправка повторного уведомления только части подписантов.
        UNAVAILABLE: Повторная отправка недоступна.
    UnavailabilityReason:
      type: string
      description: Причина недоступности отправки повторного уведомления.
      enum:
        - DOCUMENT_DELETED
        - DOCUMENT_DRAFT
        - DOCUMENT_ANNULLED
        - DOCUMENT_REJECTED
        - DOCUMENT_SIGNED
        - NO_SIGNERS_AVAILABLE
        - CANT_MAKE_DECISION_DISMISSED_EMPLOYEES
        - USERS_NOT_INVITED_OR_DISMISSED
      x-enumDescriptions:
        DOCUMENT_DELETED: Документ удалён.
        DOCUMENT_DRAFT: Документ является черновиком.
        DOCUMENT_ANNULLED: Документ аннулирован.
        DOCUMENT_REJECTED: Документ отклонён.
        DOCUMENT_SIGNED: Документ уже подписан.
        NO_SIGNERS_AVAILABLE: У документа нет активных подписантов.
        CANT_MAKE_DECISION_DISMISSED_EMPLOYEES: Обязательные подписанты документа уволены.
        USERS_NOT_INVITED_OR_DISMISSED: Пользователи не приглашены в систему, не приняли приглашение или уволены.
    DocumentNotificationStatusResponseDto_DocumentNotificationAvailabilityDto:
      type: object
      description: Статус доступности отправки повторного уведомления по документу.
      properties:
        status:
          description: Статус доступности.
          $ref: '#/components/schemas/NotificationAvailabilityStatus'
        unavailabilityReason:
          description: Причина недоступности или частичной доступности.
          $ref: '#/components/schemas/UnavailabilityReason'
          x-nullable: true
        unavailabilityDescription:
          description: Локализованное описание причины недоступности или частичной доступности.Соответствует значению поля `unavailabilityReason`.
          type: string
          x-nullable: true
      required:
        - status
    SignerUnavailabilityReason:
      type: string
      description: Причины недоступности уведомления сотруднику.
      enum:
        - DISMISSED
        - NOT_INVITED
      x-enumDescriptions:
        DISMISSED: Сотрудник уволен.
        NOT_INVITED: Пользователь не приглашён или не принял приглашение.
    FullNameDeclensionDTO:
      description: Данные склонения для ФИО в заданном падеже.
      type: object
      allOf:
        - $ref: '#/components/schemas/PersonName'
        - properties:
            caseType:
              $ref: '#/components/schemas/CaseType'
    PersonNameDTO:
      description: Данные ФИО человека.
      type: object
      allOf:
        - $ref: '#/components/schemas/NameDTO'
        - properties:
            userId:
              description: ID пользователя.
              type: string
              format: uuid
            declensions:
              description: Список склонений ФИО.
              type: array
              items:
                $ref: '#/components/schemas/FullNameDeclensionDTO'
    DocumentNotificationStatusResponseDto_SignerToNotifyDto:
      type: object
      description: Данные подписанта для отправки повторного уведомления.
      properties:
        id:
          description: ID подписанта.
          type: string
          format: uuid
        employeeId:
          description: ID сотрудника.
          type: string
          format: uuid
        type:
          description: Тип подписанта.
          $ref: '#/components/schemas/DocumentSignerType'
        notificationAvailabilityStatus:
          description: Статус возможности отправки уведомления данному подписанту.
          $ref: '#/components/schemas/NotificationAvailabilityStatus'
          x-nullable: true
        unavailabilityReason:
          description: Причина недоступности уведомления данному подписанту.
          $ref: '#/components/schemas/SignerUnavailabilityReason'
          x-nullable: true
        unavailabilityDescription:
          description: Локализованное описание причины недоступности или частичной доступности.Соответствует значению поля `unavailabilityReason`.
          type: string
          x-nullable: true
        personName:
          description: ФИО пользователя.
          $ref: '#/components/schemas/PersonNameDTO'
      required:
        - id
        - employeeId
        - type
        - personName
    DocumentNotificationStatusResponseDto:
      type: object
      description: Список документов со статусами возможности отправки и следующими подписантами.
      properties:
        document:
          description: Данные документа.
          $ref: '#/components/schemas/DocumentNotificationStatusResponseDto_DocumentDto'
        notificationAvailability:
          description: Статус доступности отправки повторного уведомления по документу.
          $ref: '#/components/schemas/DocumentNotificationStatusResponseDto_DocumentNotificationAvailabilityDto'
        nextSignersToNotify:
          description: Следующие подписанты, которым можно отправить уведомление (если доступны).
          type: array
          items:
            $ref: '#/components/schemas/DocumentNotificationStatusResponseDto_SignerToNotifyDto'
      required:
        - document
        - notificationAvailability
        - nextSignersToNotify
    NotifyNextDocumentsSignersV2RequestDto:
      type: object
      description: Запрос повторной отправки уведомлений по документам (версия 2)
      required:
        - documents
      properties:
        documents:
          type: array
          description: Список ID документов и версий.
          items:
            $ref: '#/components/schemas/DocumentIdAndVersionRequestDto'
          minItems: 1
    AdditionalNotificationResult:
      type: string
      description: Статус отправки дополнительного уведомления по документу.
      enum:
        - NOTIFIED
        - PARTLY_NOTIFIED
        - NOT_NOTIFIED
      x-enumDescriptions:
        NOTIFIED: Уведомление отправлено.
        PARTLY_NOTIFIED: Уведомление отправлено части подписантов.
        NOT_NOTIFIED: Уведомление не отправлено.
    AdditionalNotificationResultEmployee:
      type: string
      description: Статус отправки дополнительного уведомления по документу.
      enum:
        - NOTIFIED
        - NOT_NOTIFIED
      x-enumDescriptions:
        NOTIFIED: Уведомление отправлено.
        NOT_NOTIFIED: Уведомление не отправлено.
    SignerNotificationDto:
      type: object
      description: Данные подписанта для отправки повторного уведомления.
      required:
        - id
        - employeeId
        - signerType
        - personName
      properties:
        id:
          type: string
          format: uuid
          description: ID подписанта.
        employeeId:
          type: string
          format: uuid
          description: ID сотрудника.
        signerType:
          $ref: '#/components/schemas/DocumentSignerType'
          description: Тип подписанта.
        notificationStatus:
          $ref: '#/components/schemas/AdditionalNotificationResultEmployee'
          description: Статус возможности отправки уведомления данному подписанту.
          x-nullable: true
        personName:
          $ref: '#/components/schemas/PersonNameDTO'
          description: ФИО пользователя.
    NotifyNextSignersResponseDto:
      type: object
      description: Ответ на запрос уведомления следующих подписантов
      required:
        - document
        - documentNotificationStatus
        - nextSignersToNotify
      properties:
        document:
          $ref: '#/components/schemas/DocumentDTO'
          description: Данные документа
        documentNotificationStatus:
          $ref: '#/components/schemas/AdditionalNotificationResult'
          description: Статус возможности отправки
        nextSignersToNotify:
          type: array
          description: Следующие подписанты, которым нужно отправить уведомление (если доступны)
          items:
            $ref: '#/components/schemas/SignerNotificationDto'
    DocumentConfirmedSigningDTO:
      description: Данные, относящиеся к подтверждённому запросу на подписание документа.
      type: object
      properties:
        document:
          description: Данные документа.
          $ref: '#/components/schemas/DocumentDTO'
      required:
        - document
    CertificateIdDTO:
      description: ID сертификата.
      type: object
      properties:
        certificateId:
          description: ID сертификата.
          type: string
          format: uuid
      required:
        - certificateId
    DocumentSignByQesDTO:
      description: Данные для подписи документа с помощью УКЭП.
      type: object
      properties:
        signature:
          description: Файл подписи. Строка в формате base64, которая содержит бинарные данные подписи созданной с помощью УКЭП.
          type: string
        attorneyId:
          x-nullable: true
          description: Идентификатор МЧД в системе HRlink.
          type: string
          format: uuid
        attorneyExternalId:
          x-nullable: true
          description: Идентификатор МЧД во внешней системе.
          type: string
        version:
          description: Версия данных документа.
          type: integer
          format: int64
          minimum: 1
      required:
        - signature
    CommentDTO:
      description: Некоторый комментарий.
      type: object
      properties:
        comment:
          x-nullable: false
          description: Комментарий
          type: string
      required:
        - comment
    DocumentBulkSigningPackageType:
      description: |
        Тип пакета массового подписания.
        - `NORMATIVE_ACTS` - Пакет подписания ЛНА.
        - `HEAD_MANAGER` - Пакет подписания документов для руководителя.
        - `EMPLOYEE_OR_PARTICIPANT` - Пакет подписания документов для сотрудника/участника по документообороту.
      type: string
      enum:
        - NORMATIVE_ACTS
        - HEAD_MANAGER
        - EMPLOYEE_OR_PARTICIPANT
    DocumentBulkSigningSignatureType:
      description: |
        Тип подписи, используемой для подписания документа в массовом подписания.
        - `QES` - УКЭП
        - `CLOUD_NQES` - УНЭП
        - `SES` - ПЭП
      type: string
      enum:
        - QES
        - CLOUD_NQES
        - SES
    DocumentBulkSigningPackageDocumentSignerDto:
      description: Данные подписанта документа из пакета в процессе массового подписания.
      type: object
      properties:
        id:
          description: Идентификатор связки подписанта документа с пакетом массового подписания.
          type: string
          format: uuid
        document:
          description: Документ, который будет подписан в процессе массового подписания.
          $ref: '#/components/schemas/DocumentDTO'
        documentSignerId:
          description: Идентификатор активного подписанта документа.
          type: string
          format: uuid
        included:
          x-nullable: true
          description: Включен ли документ в пакет массового подписания.
          type: boolean
        suitableSignature:
          x-nullable: true
          description: Доступная подпись для документа в процессе массового подписания.
          $ref: '#/components/schemas/DocumentBulkSigningSignatureType'
    DocumentBulkSigningPackageDto:
      description: Данные пакета документов в процессе массового подписания.
      type: object
      properties:
        id:
          description: Идентификатор пакета массового подписания.
          type: string
          format: uuid
        type:
          description: Тип пакета массового подписания.
          $ref: '#/components/schemas/DocumentBulkSigningPackageType'
        suitableSignatures:
          description: Список доступных подписей для массового подписания пакета документов.
          type: array
          items:
            $ref: '#/components/schemas/DocumentBulkSigningSignatureType'
        signedDate:
          x-nullable: true
          description: Дата и время подписи пакета документов.
          type: string
          format: date-time
        signedPartly:
          description: Пакет документов подписан частично.
          type: boolean
        entities:
          description: Список элементов пакета массового подписания.
          type: array
          items:
            $ref: '#/components/schemas/DocumentBulkSigningPackageDocumentSignerDto'
    DocumentBulkSigningProcessResponseDto:
      description: Данные процесса массового подписания документов.
      type: object
      properties:
        id:
          description: Идентификатор процесса массового подписания документов.
          type: string
          format: uuid
        packages:
          description: Данные пакетов документов в процессе массового подписания.
          type: array
          items:
            $ref: '#/components/schemas/DocumentBulkSigningPackageDto'
    InclusionDocumentRequestDTO:
      description: Тело запроса включения/выключения документа из пакета массового подписания.
      type: object
      properties:
        include:
          description: Включить документ в пакет массового подписания.
          type: boolean
      required:
        - include
    DocumentBulkSigningConfirmRequestRequestDto:
      description: Данные запроса подтверждения массового подписания пакета документов.
      type: object
      properties:
        documentBulkSigningRequestId:
          description: Идентификатор запроса массового подписания документов, который надо подтвердить.
          type: string
          format: uuid
        code:
          description: Код подтверждения.
          type: string
          pattern: ^\\d{6}$
      required:
        - documentBulkSigningRequestId
        - code
    DocumentBulkSigningCreateRequestResponseDto:
      description: Данные созданного запроса массового подписания пакета документов.
      type: object
      properties:
        id:
          description: Идентификатор запроса массового подписания пакета документов.
          type: string
          format: uuid
        process:
          description: Данные процесса массового подписания документов.
          $ref: '#/components/schemas/DocumentBulkSigningProcessResponseDto'
    DocumentBulkSigningConfirmRequestResponseDto:
      description: Данные ответа операции подтверждения массового подписания пакета документов.
      type: object
      properties:
        id:
          description: Идентификатор подтверждения запроса массового подписания.
          type: string
          format: uuid
        documentBulkSigningRequest:
          description: Данные запроса массового подписания документов с процессом массового подписания.
          $ref: '#/components/schemas/DocumentBulkSigningCreateRequestResponseDto'
    DocumentBulkSignByQesDto:
      description: Данные документа, который надо подписать с помощью УКЭП.
      type: object
      properties:
        id:
          description: Идентификатор документа, который надо подписать с помощью УКЭП.
          type: string
          format: uuid
        attorneyId:
          x-nullable: true
          description: Идентификатор МЧД в системе HRlink.
          type: string
          format: uuid
        attorneyExternalId:
          x-nullable: true
          description: Идентификатор МЧД во внешней системе.
          type: string
      required:
        - id
    SignatureBulkSignByQesDto:
      description: Данные подписи УКЭП с подписываемыми документами.
      type: object
      properties:
        value:
          description: Подпись в формате base64.
          type: string
        documents:
          description: Список данных документов, которые надо подписать с помощью УКЭП.
          type: array
          items:
            $ref: '#/components/schemas/DocumentBulkSignByQesDto'
      required:
        - value
        - documents
    DocumentBulkSignByQesRequestDto:
      description: Данные для массовой подписи документов с помощью УКЭП.
      type: object
      properties:
        signatures:
          description: Список подписей УКЭП с подписываемыми документами.
          type: array
          items:
            $ref: '#/components/schemas/SignatureBulkSignByQesDto'
      required:
        - signatures
    DocumentBulkSigningRequestResponseDto:
      description: Краткие данные запроса массового подписания документов.
      type: object
      properties:
        id:
          description: Идентификатор запроса массового подписания документов.
          type: string
        signatureType:
          $ref: '#/components/schemas/DocumentBulkSigningSignatureType'
          description: Тип подписи, используемой для подписания документа в массовом подписании.   подписания.
        state:
          $ref: '#/components/schemas/DocumentSigningRequestState'
          description: Состояние запроса массового подписания документов.
        createdDate:
          description: Момент времени создания запроса массового подписания документов.
          type: string
          format: date-time
        expiresDate:
          description: Момент времени истечения запроса массового подписания документов.
          type: string
          format: date-time
        finishedDate:
          description: Момент времени завершения запроса массового подписания документов.
          type: string
          format: date-time
    AnnulDocumentRequestDTO:
      type: object
      description: Данные для запуска процесса аннулирования документа.
      properties:
        reason:
          type: string
          x-nullable: false
          description: Причина аннулирования документа.
      required:
        - reason
    AnnulDocumentResponseDTO:
      type: object
      description: Данные созданного процесса аннулирования документа.
      properties:
        id:
          type: string
          description: ID созданного акта об аннулировании.
          format: uuid
      required:
        - id
    ShortDocumentTypeWithExternalIdDTO:
      description: Сокращенные данные типа документов с ID во внешней системе.
      type: object
      allOf:
        - $ref: '#/components/schemas/ShortDocumentTypeDTO'
        - properties:
            externalId:
              description: Идентификатор типа документов во внешней системе.
              type: string
    DocumentTypeDTO:
      description: Данные типа документов.
      type: object
      allOf:
        - $ref: '#/components/schemas/ShortDocumentTypeWithExternalIdDTO'
        - properties:
            mintrudDocumentType:
              $ref: '#/components/schemas/MintrudDocumentTypeDTO'
            visible:
              description: Отображается ли данный тип документов пользователю.
              type: boolean
            system:
              description: Является ли тип документов системным.
              type: boolean
            externalId:
              description: Идентификатор типа документов во внешней системе.
              type: string
            version:
              description: Версия данных типа документа.
              type: integer
              format: int64
    CreateNonSystemDocumentTypeDTO:
      description: Данные для создания несистемного типа документов.
      type: object
      properties:
        name:
          description: Название типа документов.
          type: string
          example: Анкета кандидата
          x-nullable: false
        visible:
          description: Отображается ли данный тип документов пользователю.
          type: boolean
          default: true
        externalId:
          description: Идентификатор типа документов во внешней системе.
          type: string
        mintrudDocumentTypeCode:
          description: |
            Код типа документа по Минтруд.
            Получить коды типов <a href='mintrud-document-type-get-mintrud-document-types'>по ссылке</a>
          type: string
        signingByEmployeeSesEnabled:
          description: Включена ли возможность подписания ПЭП со стороны Сотрудника?
          type: boolean
          x-nullable: true
          default: false
        substitutorCreationHintEnabled:
          description: Включена ли подсказка о назначении заместителя?
          type: boolean
          x-nullable: true
          default: false
      x-nullable: false
      required:
        - name
    UpdateDocumentTypeV1DTO:
      description: Данные для обновления типа документов для API версии 1.
      type: object
      properties:
        name:
          description: Название типа документов.
          type: string
        visible:
          description: Отображать ли данный тип документов пользователю?
          type: boolean
        externalId:
          description: ID типа документов во внешней системе.
          type: string
        version:
          description: Версия данных.
          type: integer
          format: int64
    UpdateDocumentTypeV2DTO:
      description: Данные для обновления типа документов для API версии 2.
      type: object
      allOf:
        - $ref: '#/components/schemas/UpdateDocumentTypeV1DTO'
        - properties:
            mintrudDocumentTypeCode:
              description: Код типа документа по Минтруд.
              type: string
    UpdateDocumentTypeV3DTO:
      description: Данные для обновления типа документов для API версии 3.
      type: object
      allOf:
        - $ref: '#/components/schemas/UpdateDocumentTypeV2DTO'
        - type: object
          properties:
            signingByEmployeeSesEnabled:
              description: Включена ли возможность подписания ПЭП со стороны Сотрудника?
              type: boolean
            version:
              description: Версия данных.
              type: integer
              format: int64
          required:
            - signingByEmployeeSesEnabled
            - version
    UpdateDocumentTypeV4DTO:
      description: Данные для обновления типа документов для API версии 4.
      type: object
      allOf:
        - $ref: '#/components/schemas/UpdateDocumentTypeV3DTO'
        - properties:
            substitutorCreationHintEnabled:
              description: Включена ли подсказка о назначении заместителя?
              type: boolean
          required:
            - substitutorCreationHintEnabled
    ClientUserSubstitutionsDto:
      description: Представление информации о всех замещениях пользователя.
      type: object
      properties:
        substitutorOf:
          type: array
          description: Список замещений, в которых пользователь клиента является заместителем.
          items:
            $ref: '#/components/schemas/SubstitutionResponseDto'
        substitutedBy:
          type: array
          description: Список замещений, в которых пользователь клиента является замещаемым.
          items:
            $ref: '#/components/schemas/SubstitutionResponseDto'
    HeadManagerPersonNameWithIdDTO:
      description: Данные руководителя отдела.
      type: object
      allOf:
        - $ref: '#/components/schemas/PersonName'
        - properties:
            id:
              description: ID сотрудника-руководителя отдела.
              type: string
    MobileDeviceStatus:
      type: string
      description: |
        Статус мобильного устройства.
        - 'ACTIVE' - мобильное устройство активно.
        - 'INACTIVE' - мобильное устройство неактивно. Устройство считается неактивным, когда с момента последнего
        использования прошло более N времени, заданное в настройках.
      enum:
        - ACTIVE
        - INACTIVE
    MobileDeviceDTO:
      type: object
      properties:
        id:
          type: string
          description: ID мобильного устройства.
        status:
          type: string
          description: Статус мобильного устройства.
        model:
          description: Модель устройства.
          $ref: '#/components/schemas/MobileDeviceStatus'
        applicationVersion:
          type: string
          description: Версия приложения.
    GetEmployeeResponseDto:
      description: Подробная информация о пользователе клиента с замещениями.
      type: object
      allOf:
        - $ref: '#/components/schemas/ClientUserSingleFullInfoDTO'
        - properties:
            substitutions:
              $ref: '#/components/schemas/ClientUserSubstitutionsDto'
            headManagerEmployee:
              $ref: '#/components/schemas/HeadManagerPersonNameWithIdDTO'
            mobileDevices:
              items:
                $ref: '#/components/schemas/MobileDeviceDTO'
    UpdateEmployeeV1DTO:
      description: Информация сотрудника для обновления для API версии 1.
      type: object
      allOf:
        - $ref: '#/components/schemas/VersionDTO'
        - properties:
            departmentId:
              description: ID подразделения.
              type: string
              format: uuid
            departmentExternalId:
              description: ID подразделения во внешней системе.
              type: string
            positionId:
              description: ID должности сотрудника.
              type: string
              format: uuid
            positionExternalId:
              description: ID должности сотрудника во внешней системе.
              type: string
            externalId:
              description: ID сотрудника во внешней системе.
              type: string
            roleIds:
              description: ID ролей сотрудника.
              type: array
              items:
                type: string
                format: uuid
            tags:
              description: Теги сотрудника.
              type: array
              items:
                type: string
    UpdateEmployeeV2DTO:
      description: Информация сотрудника для обновления по внешнему ID сотрудника для API версии 2.
      type: object
      allOf:
        - $ref: '#/components/schemas/UpdateEmployeeV1DTO'
        - properties:
            availableVacationDayCount:
              description: Общее количество доступных дней отпуска по всем типам отпуска.
              type: integer
    UpdateEmployeeV3DTO:
      description: Информация сотрудника для обновления для API версии 3.
      type: object
      allOf:
        - $ref: '#/components/schemas/UpdateEmployeeV2DTO'
        - properties:
            number:
              description: Табельный номер сотрудника.
              type: string
    UpdateEmployeeV4DTO:
      description: Информация сотрудника для обновления для API версии 4.
      type: object
      allOf:
        - $ref: '#/components/schemas/UpdateEmployeeV3DTO'
        - properties:
            isMainWorkplace:
              description: Место работы является основным для физлица?
              type: boolean
              x-nullable: true
    UpdateEmployeeV5DTO:
      allOf:
        - $ref: '#/components/schemas/UpdateEmployeeV4DTO'
        - type: object
          description: Данные для обновления данных сотрудника (версия 5)
          properties:
            fullTimeEquivalent:
              type: string
              x-nullable: true
              minLength: 1
              maxLength: 10
              description: |
                Ставка сотрудника, отражающая долю от полной (FTE — эквивалент полной занятости сотрудника).
    InvitedEmployeeDTO:
      description: Данные приглашённого сотрудника.
      type: object
      properties:
        type:
          description: Тип приглашения.
          type: string
        invitationCreatedDate:
          description: Дата создания приглашения сотрудника.
          type: string
          format: date-time
    LastNqesChannelChangeRequestWithTerminatedData:
      description: Данные последнего запроса на смены канала подписания УНЭП с дополнительными данными о терминальном состоянии.
      type: object
      allOf:
        - $ref: '#/components/schemas/LastNqesChannelChangeRequest'
        - properties:
            rejectionComment:
              description: Комментарий отклонения заявки.
              type: string
            finishedDate:
              description: Момент времени завершения процесса смены канала подписания УНЭП.
              type: string
              format: date-time
    PaginatedUserFullInfoDTO:
      description: Полная информация о постранично загружаемом пользователе.
      type: object
      allOf:
        - $ref: '#/components/schemas/PersonWithPersonalDataDTO'
        - properties:
            lastNqesIssueRequest:
              description: Информация о последнем запросе выпуска УНЭП.
              $ref: '#/components/schemas/NqesIssueRequestDTO'
            invitation:
              description: Информация о приглашении пользователя.
              $ref: '#/components/schemas/InvitedEmployeeDTO'
            prrSigningEnabled:
              description: Подписание документа с помощью ПРР включено?
              type: boolean
            govKeySigningEnabled:
              description: Подписание документа с помощью Госключа включено?
              type: boolean
            qesSigningEnabled:
              description: Подписание документа с помощью УКЭП включено?
              type: boolean
            vtbSigningEnabled:
              description: Подписание с помощью ВТБ Онлайн включено?
              type: boolean
            disabledDate:
              description: Момент времени, когда пользователь был отключён от сервиса.
              type: string
              format: date-time
            lastNqesChannelChangeRequest:
              description: Данные последнего запроса на смену канала подписания УНЭП.
              $ref: '#/components/schemas/LastNqesChannelChangeRequestWithTerminatedData'
            customStructureElements:
              type: array
              description: Список данных элементов пользовательского справочника.
              items:
                $ref: '#/components/schemas/CustomStructureElementDTO'
              x-nullable: true
              default: null
    ClientUserIdsDTO:
      description: Информация о ID пользователя клиента.
      type: object
      properties:
        id:
          description: ID пользователя клиента.
          type: string
          format: uuid
        externalId:
          description: ID пользователя клиента во внешней системе.
          type: string
        userId:
          description: ID пользователя системы.
          type: string
          format: uuid
    PaginatedEmployeeDTO:
      description: Информация о постранично загружаемом сотруднике.
      type: object
      allOf:
        - $ref: '#/components/schemas/PaginatedUserFullInfoDTO'
        - properties:
            id:
              description: ID сотрудника.
              type: string
              format: uuid
            externalId:
              description: ID сотрудника во внешней системе.
              type: string
            clientUser:
              description: Информация о ID пользователя клиента.
              $ref: '#/components/schemas/ClientUserIdsDTO'
            dismissedDate:
              description: Дата увольнения сотрудника.
              type: string
              format: date
            scheduledDismissDate:
              description: Дата отложенного увольнения сотрудника.
              type: string
              format: date
            legalEntity:
              $ref: '#/components/schemas/ClientUserIdsDTO'
            department:
              description: Отдел клиента, к которому относится сотрудник.
              type: object
              properties:
                id:
                  description: Идентификатор отдела.
                  type: string
                  format: uuid
                name:
                  description: Название отдела.
                  type: string
            position:
              description: Должность.
              type: object
              properties:
                id:
                  description: Идентификатор должности.
                  type: string
                  format: uuid
                name:
                  description: Название должности.
                  type: string
            roles:
              description: Роли сотрудника.
              type: array
              items:
                $ref: '#/components/schemas/EmployeeRoleDTO'
            tags:
              description: Теги сотрудника.
              type: array
              items:
                type: string
            permittedOperations:
              description: Список операций над сотрудником, разрешённых текущему пользователю.
              type: array
              items:
                $ref: '#/components/schemas/PermittedOperationOnEmployee'
            headManager:
              description: Сотрудник является руководителем?
              type: boolean
            availableVacationDayCount:
              description: Общее количество доступных дней отпуска по всем типам отпуска.
              type: number
            availableVacationDayCountsByType:
              description: Данные о доступных сотруднику днях отпуска по типам.
              type: array
              items:
                $ref: '#/components/schemas/AvailableVacationDaysByTypeData'
            personDocumentVerifications:
              description: Информация о проверке документов в СМЭВ.
              type: array
              items:
                $ref: '#/components/schemas/PersonDocumentsVerificationResponseDTO'
            number:
              description: Табельный номер.
              type: string
            version:
              description: Версия данных сотрудника.
              type: integer
              format: int64
            prrSigningConfigured:
              description: |
                Пользователь уже прошел первоначальный процесс настройки подписания через ПРР?
              type: boolean
            prrInitialSetup:
              description: Данные отображения всего процесса настройки включения подписания через ПРР.
              $ref: '#/components/schemas/PrrInitialSetupDTO'
              x-nullable: true
            fullTimeEquivalent:
              description: Ставка сотрудника, отражающая долю от полной (FTE - эквивалент полной занятости сотрудника).
              type: string
              x-nullable: true
              default: null
            statusLastModifiedDate:
              description: Дата последнего изменения статуса сотрудника.
              type: string
              format: date-time
    UpdateEmployeeByExternalIdV5DTO:
      allOf:
        - $ref: '#/components/schemas/UpdateEmployeeV5DTO'
        - type: object
          description: |
            Информация сотрудника для обновления по внешнему ID сотрудника для API версии 5.
          properties:
            legalEntityId:
              type: string
              format: uuid
              x-nullable: true
              description: ID юридического лица.  Передать можно только текущее юрлицо сотрудника. Новое нельзя указать.
            legalEntityExternalId:
              type: string
              x-nullable: true
              description: ID юридического лица во внешней системе. ID юридического лица.  Передать можно только текущее юрлицо сотрудника. Новое нельзя указать.
    DismissEmployeeDTO:
      description: Информация сотрудника для увольнения.
      type: object
      allOf:
        - $ref: '#/components/schemas/VersionDTO'
        - properties:
            dismissedDate:
              description: Дата увольнения сотрудника.
              type: string
              format: date
    DismissedEmployeeDTO:
      description: Данные увольнения сотрудника.
      type: object
      allOf:
        - properties:
            id:
              description: Идентификатор увольнения.
              type: string
              format: uuid
            version:
              description: Версия данных об увольнении.
              type: integer
              format: int64
        - properties:
            dismissedDate:
              description: Дата увольнения сотрудника.
              type: string
              format: date
            scheduledDismissDate:
              description: Дата отложенного увольнения сотрудника.
              type: string
              format: date
    DismissOrRestoreEmployeeDto:
      description: Данные для увольнения / восстановления сотрудника.
      type: object
      properties:
        version:
          description: Версия сущности сотрудника.
          type: integer
          format: int64
          example: 12
        id:
          description: ID сотрудника.
          type: string
          format: uuid
          x-nullable: true
        externalId:
          description: Внешний ID сотрудника.
          type: string
          x-nullable: true
        legalEntityId:
          description: ID юридического лица сотрудника.
          type: string
          format: uuid
          x-nullable: true
        legalEntityExternalId:
          description: Внешний ID юридического лица сотрудника.
          type: string
          x-nullable: true
        dismissedDate:
          description: Дата увольнения сотрудника.
          type: string
          format: date
          x-nullable: true
    BulkDismissOrRestoreRequestDto:
      description: Данные запроса массового увольнения / восстановления сотрудников.
      type: object
      required:
        - employees
      properties:
        employees:
          description: Список данных сотрудников для увольнения / восстановления.
          type: array
          minItems: 1
          maxItems: 100
          items:
            $ref: '#/components/schemas/DismissOrRestoreEmployeeDto'
    BulkEmployeeDismissSkipReason:
      description: |
        Причина, по которой сотрудник был пропущен при выполнении операции:

        * `NOT_FOUND` — сотрудник с указанными параметрами не найден
        * `MORE_THAN_ONE_FOUND` — по заданным параметрам найдено более одного сотрудника
        * `EMPLOYEE_DOES_NOT_BELONG_TO_CLIENT` — сотрудник не принадлежит указанному клиенту
        * `LEGAL_ENTITY_NOT_FOUND` — юридическое лицо не найдено
        * `LEGAL_ENTITY_DOES_NOT_BELONG_TO_CLIENT` — юридическое лицо не принадлежит указанному клиенту
        * `ACCESS_DENIED` — нет прав доступа для выполнения операции
        * `INCORRECT_VERSION` — версия сотрудника в запросе не совпадает с версией в базе данных
        * `ALREADY_DISMISSED` — сотрудник уже уволен
        * `DISMISS_ALREADY_SCHEDULED` — для сотрудника уже запланировано отложенное увольнение
        * `ALREADY_ACTIVE` — сотрудник уже активен, восстановление не требуется
      type: string
      enum:
        - NOT_FOUND
        - MORE_THAN_ONE_FOUND
        - EMPLOYEE_DOES_NOT_BELONG_TO_CLIENT
        - LEGAL_ENTITY_NOT_FOUND
        - LEGAL_ENTITY_DOES_NOT_BELONG_TO_CLIENT
        - ACCESS_DENIED
        - INCORRECT_VERSION
        - ALREADY_DISMISSED
        - DISMISS_ALREADY_SCHEDULED
        - ALREADY_ACTIVE
    DismissOrRestoreEmployeeResponseDto:
      description: Данные сотрудника в ответе операции массового увольнения / восстановления.
      type: object
      properties:
        version:
          description: Версия сущности сотрудника.
          type: integer
          format: int64
          example: 12
        id:
          description: ID сотрудника.
          type: string
          format: uuid
          x-nullable: true
        externalId:
          description: Внешний ID сотрудника.
          type: string
          x-nullable: true
        legalEntityId:
          description: ID юридического лица сотрудника.
          type: string
          format: uuid
          x-nullable: true
        legalEntityExternalId:
          description: Внешний ID юридического лица сотрудника.
          type: string
          x-nullable: true
        dismissedDate:
          description: Дата увольнения сотрудника.
          type: string
          format: date
          x-nullable: true
        scheduledDismissDate:
          description: Дата отложенного увольнения сотрудника.
          type: string
          format: date
          x-nullable: true
        reason:
          description: Причина пропуска сотрудника.
          x-nullable: true
          $ref: '#/components/schemas/BulkEmployeeDismissSkipReason'
    BulkDismissOrRestoreResponseDto:
      description: Данные ответа запроса массового увольнения / восстановления сотрудников.
      type: object
      required:
        - processed
        - skipped
      properties:
        processed:
          description: Список сотрудников, которые были успешно обработаны.
          type: array
          items:
            $ref: '#/components/schemas/DismissOrRestoreEmployeeResponseDto'
        skipped:
          description: Список сотрудников, которые были пропущены при обработке.
          type: array
          items:
            $ref: '#/components/schemas/DismissOrRestoreEmployeeResponseDto'
    EmployeeIdWithLegalEntityIdDTO:
      description: Данные сотрудника, содержащие ID сотрудника и ID юрлица.
      type: object
      properties:
        id:
          description: ID сотрудника.
          type: string
          x-nullable: true
          format: uuid
        externalId:
          description: ID сотрудника во внешней системе.
          x-nullable: true
          type: string
        legalEntityId:
          description: ID юрлица.
          type: string
          format: uuid
          x-nullable: true
        legalEntityExternalId:
          description: ID юрлица во внешней системе.
          type: string
          x-nullable: true
    EmployeeWithFunctionalManagerDTO:
      description: Данные сотрудника, содержащие ID сотрудника и данные сотрудника управленческого руководителя.
      type: object
      allOf:
        - $ref: '#/components/schemas/EmployeeIdWithLegalEntityIdDTO'
        - properties:
            functionalManagerEmployee:
              $ref: '#/components/schemas/EmployeeIdWithLegalEntityIdDTO'
              x-nullable: true
            version:
              description: Версия данных сотрудника.
              type: number
              x-nullable: true
    UpdateFunctionalManagerIdsForEmployeesRequestDTO:
      description: Тело запроса API метода обновления ID сотрудников управленческих руководителей для указанных сотрудников.
      type: object
      properties:
        employees:
          description: Список данных сотрудников.
          type: array
          x-nullable: false
          items:
            $ref: '#/components/schemas/EmployeeWithFunctionalManagerDTO'
    EmployeeInfoDTO:
      description: Информация о сотруднике.
      type: object
      allOf:
        - $ref: '#/components/schemas/VersionDTO'
        - properties:
            employeeId:
              description: ID сотрудника.
              type: string
              format: uuid
            externalId:
              description: ID сотрудника во внешней системе.
              type: string
            dismissedDate:
              description: Дата увольнения сотрудника.
              type: string
              format: date
            scheduledDismissDate:
              description: Дата отложенного увольнения сотрудника.
              type: string
              format: date
            legalEntity:
              $ref: '#/components/schemas/LegalEntityDTO'
            department:
              type: object
              properties:
                id:
                  description: Идентификатор отдела.
                  type: string
                  format: uuid
                name:
                  description: Название отдела.
                  type: string
            position:
              type: object
              properties:
                id:
                  description: Идентификатор должности.
                  type: string
                  format: uuid
                name:
                  description: Название должности.
                  type: string
            roles:
              description: Роли сотрудника.
              type: array
              items:
                $ref: '#/components/schemas/EmployeeRoleDTO'
            tags:
              description: Теги сотрудника.
              type: array
              items:
                type: string
            permittedOperations:
              description: Список операций над сотрудником, разрешённых текущему пользователю.
              type: array
              items:
                $ref: '#/components/schemas/PermittedOperationOnEmployee'
            headManager:
              description: Сотрудник является руководителем?
              type: boolean
            availableVacationDayCount:
              description: Общее количество доступных дней отпуска по всем типам отпуска.
              type: number
            availableVacationDayCountsByType:
              description: Данные о доступных сотруднику днях отпуска по типам.
              type: array
              items:
                $ref: '#/components/schemas/AvailableVacationDaysByTypeData'
            number:
              description: Табельный номер.
              type: string
            functionalManager:
              description: Информация об управленческом руководителе.
              $ref: '#/components/schemas/EmployeeShortInfoDTO'
              x-nullable: true
    ClientUserListFullInfoDTO:
      description: Полная информация о пользователе клиента.
      type: object
      allOf:
        - $ref: '#/components/schemas/UserFullInfoDTO'
        - properties:
            clientUserId:
              description: ID пользователя клиента.
              type: string
              format: uuid
            clientUserExternalId:
              description: ID пользователя клиента во внешней системе.
              type: string
              x-nullable: true
            legalEntities:
              description: Информация пользователя, как сотрудника в юр. лицах.
              type: array
              items:
                $ref: '#/components/schemas/EmployeeInfoDTO'
            employeeRoles:
              description: Список данных связок ролей пользователя клиента в юрлице вместе с данными доверенных сотрудников пользователя клиента, имеющих соответствующие роли в своих юрлицах.
              x-nullable: true
              type: array
              items:
                $ref: '#/components/schemas/ClientUserEmployeeRolesWithProxyEmployeesDTO'
          required:
            - clientUserId
            - legalEntities
    PermittedClientDepartmentsResponseDto:
      description: Данные доступного отдела сотрудника.
      type: object
      properties:
        id:
          description: ID отдела.
          type: string
          format: uuid
        externalId:
          description: ID отдела во внешней системе.
          type: string
        parentDepartmentId:
          type: string
          description: ID родительского отдела.
          x-nullable: true
          format: uuid
        permitted:
          description: Доступен ли отдел сотруднику.
          type: boolean
    PermissionType:
      description: |-
        Тип доступа к отделу.
        - `INCLUDE_INHERITED` — доступ к отделу и всем дочерним. При создании нового дочернего отдела доступ появится автоматически.
        - `ONLY_FOR_THIS` — доступ только к этому отделу, без дочерних.
        - `ONLY_INHERITED` — доступ только к дочерним отделам, без родительского.
      type: string
      enum:
        - ONLY_FOR_THIS
        - ONLY_INHERITED
        - INCLUDE_INHERITED
    UpdatePermittedClientDepartmentsDtoV2.DepartmentData:
      description: Данные отдела с типом доступа.
      type: object
      properties:
        id:
          description: ID отдела.
          type: string
          format: uuid
        externalId:
          description: ID отдела во внешней системе.
          type: string
        permissionType:
          $ref: '#/components/schemas/PermissionType'
      required:
        - permissionType
    UpdatePermittedClientDepartmentsDtoV2:
      description: Данные для обновления списка доступных отделов сотрудника.
      type: object
      properties:
        clientDepartments:
          description: Список отделов, которые будут доступны сотруднику после обновления.
          type: array
          items:
            $ref: '#/components/schemas/UpdatePermittedClientDepartmentsDtoV2.DepartmentData'
      required:
        - clientDepartments
    EmployeeFilterDTO:
      description: Данные для фильтрации сотрудников.
      type: object
      properties:
        nameSearch:
          description: Текстовый поисковой запрос по ФИО сотрудника.
          type: string
        documentNumberSearch:
          description: Текстовый поисковой запрос по номеру документа.
          type: string
        positionIds:
          description: Список ID должностей сотрудников.
          type: array
          items:
            type: string
            format: uuid
        departmentIds:
          description: Список ID отделов сотрудников.
          type: array
          items:
            type: string
            format: uuid
        employeeIds:
          description: Множество ID сотрудников.
          type: array
          items:
            type: string
            format: uuid
        legalEntityIds:
          description: Список ID юрлиц.
          type: array
          items:
            type: string
            format: uuid
    EmployeeStatus:
      description: |
        Статус сотрудника.
        - ACTIVE - Работает.
        - DISMISSED - Уволен.
      type: string
      enum:
        - ACTIVE
        - DISMISSED
    EmployeeRegistrySignatureType:
      description: |
        Тип электронной подписи сотрудника в реестре сотрудников.
        - `PRR` - ПРР.
        - `PRR_DISABLED` - ПРР отключен.
        - `PRR_PENDING` - ПРР в процессе включения.
        - `PRR_REJECTED_OR_EXPIRED` - ПРР отклонен или просрочен.
        - `NQES` - УНЭП.
        - `PENDING_NQES` - УНЭП в процессе выпуска.
        - `NQES_REJECTED` - УНЭП отклонен.
        - `QES` - УКЭП.
        - `GOV_KEY` - Госключ.
        - `NONE` - Нет подписи.
      type: string
      enum:
        - PRR
        - PRR_PENDING
        - PRR_REJECTED_OR_EXPIRED
        - PRR_DISABLED
        - NQES
        - PENDING_NQES
        - NQES_REJECTED
        - QES
        - GOV_KEY
        - NONE
    EmployeeRegistryNotificationChannelType:
      description: |
        Тип электронной подписи сотрудника в реестре сотрудников.
        - EMAIL - Email.
        - SMS - Телефон.
        - ANY - Любой.
        - INVITATION_SENT - Приглашение для канала уведомлений было отправлено.
        - NONE - Нет подтвержденного канала и активного приглашения..
      type: string
      enum:
        - EMAIL
        - SMS
        - ANY
        - INVITATION_SENT
        - NONE
    PersonDocumentsVerificationFilterStatus:
      description: |
        Статус проверки документов.
        - `IN_PROGRESS` - Проверка документов человека находится в процессе.
        - `CONFIRMED` - роверка документов человека подтверждена.
        - `UNCONFIRMED` - Проверка документов человека не подтверждена.
        - `UNKNOWN` - Статус проверки документов человека неизвестен.
        - `NOT_CHECKED` - Проверка документов человека не проводилась.
      type: string
      enum:
        - IN_PROGRESS
        - CONFIRMED
        - UNCONFIRMED
        - UNKNOWN
        - NOT_CHECKED
    EmployeeRegistryPersonDocumentsVerificationFilterDTO:
      description: Фильтр по проверке документов сотрудников.
      type: object
      properties:
        documentType:
          $ref: '#/components/schemas/PersonDocumentsVerificationType'
        state:
          type: array
          items:
            $ref: '#/components/schemas/PersonDocumentsVerificationFilterStatus'
    EmployeesFilterWithoutPaginationDTO:
      description: Данные для фильтрации сотрудников без пагинации.
      type: object
      allOf:
        - $ref: '#/components/schemas/EmployeeFilterDTO'
        - properties:
            states:
              description: Список состояний сотрудников.
              type: array
              items:
                $ref: '#/components/schemas/EmployeeStatus'
            legalEntityIds:
              description: Список ID юрлиц сотрудников.
              type: array
              items:
                type: string
                format: uuid
            signatures:
              description: |
                Список электронных подписей сотрудников.
                Типы электронной подписи:
                - PRR - ПРР.
                - NQES - УНЭП.
                - PENDING_NQES - УНЭП в процессе выпуска.
                - NQES_REJECTED - УНЭП отклонен.
                - QES - УКЭП.
                - GOV_KEY - Госключ.
                - NONE - Нет подписи.
              type: array
              items:
                $ref: '#/components/schemas/EmployeeRegistrySignatureType'
            enabledChannels:
              description: Список включенных каналов уведомлений сотрудников.
              type: array
              items:
                $ref: '#/components/schemas/EmployeeRegistryNotificationChannelType'
            personDocumentVerifications:
              x-nullable: true
              description: Фильтр по проверке документов сотрудников.
              type: array
              items:
                $ref: '#/components/schemas/EmployeeRegistryPersonDocumentsVerificationFilterDTO'
            customStructureElementIds:
              type: array
              description: Список ID элементов пользовательских структур
              items:
                type: string
                format: uuid
              x-nullable: true
              default: null
            userStatuses:
              description: Фильтр по статусу пользователей.
              type: array
              items:
                type: string
                enum:
                  - DISABLED
                  - ENABLED
                x-enumDescriptions:
                  DISABLED: Пользователь отключён.
                  ENABLED: Пользователь активен.
              x-nullable: true
    EmployeeRegistryFilterDTO:
      description: Данные для фильтрации реестра сотрудников кадровика.
      type: object
      allOf:
        - $ref: '#/components/schemas/EmployeesFilterWithoutPaginationDTO'
        - properties:
            limit:
              description: Количество возвращаемых при запросе элементов.
              type: integer
              minimum: 0
            offset:
              description: Количество элементов, которые нужно пропустить при выборке.
              type: integer
              minimum: 0
    PaginatedEmployeeWithFunctionalManagerDTO:
      description: Информация о постранично загружаемом сотруднике с управленческим руководителем.
      type: object
      allOf:
        - $ref: '#/components/schemas/PaginatedEmployeeDTO'
        - properties:
            functionalManager:
              description: Информация об управленческом руководителе.
              $ref: '#/components/schemas/EmployeeShortInfoDTO'
    DeclensionDTO:
      description: Данные о склонении.
      type: object
      properties:
        caseType:
          $ref: '#/components/schemas/CaseType'
        value:
          description: Значение в приведенном падеже.
          type: string
      required:
        - caseType
        - value
    EmployeePositionV2DTO:
      description: Данные должности сотрудника со склонениями.
      type: object
      properties:
        id:
          description: Идентификатор должности сотрудника.
          type: string
          format: uuid
        name:
          description: Название должности сотрудника.
          type: string
        externalId:
          description: Идентификатор должности во внешней системе.
          type: string
          x-nullable: true
        version:
          description: Версия данных должности сотрудника.
          type: integer
          format: int64
        declensions:
          type: array
          x-nullable: true
          description: Склонения для названия должности.
          items:
            $ref: '#/components/schemas/DeclensionDTO'
    EmployeePositionForEmployeeAccessDTO:
      description: Данные должности для получения Сотрудником.
      type: object
      properties:
        id:
          description: Идентификатор должности в системе HRlink.
          type: integer
          format: uuid
        name:
          description: Название должности.
          type: string
    EmployeePositionForRegistry:
      description: Данные в зависимости от профиля (Сотрудник или Кадровик)
      oneOf:
        - $ref: '#/components/schemas/EmployeePositionV2DTO'
        - $ref: '#/components/schemas/EmployeePositionForEmployeeAccessDTO'
    ExportTaskType:
      description: |
        Тип данных для асинхронной выгрузки.
        - 'EMPLOYEE_REGISTRY' - Реестр сотрудников для кадровика.
        - 'NORMATIVE_ACT_DOCUMENTS' - Лист ознакомления с ЛНА.
        - 'EMPLOYEES_WITH_FUNCTIONAL_MANAGER' - Управленческая структура.
        - 'APPLICATION_REGISTRY' - Реестр заявлений для кадровика.
        - 'DOCUMENTS_DOCFLOW_ARCHIVES' - Архивы КЭДО по документам.
        - 'APPLICATIONS_DOCFLOW_ARCHIVES' - Архивы КЭДО по заявлениям.
      type: string
      enum:
        - EMPLOYEE_REGISTRY
        - NORMATIVE_ACT_DOCUMENTS
        - EMPLOYEES_WITH_FUNCTIONAL_MANAGER
        - APPLICATION_REGISTRY
        - DOCUMENTS_DOCFLOW_ARCHIVES
        - APPLICATIONS_DOCFLOW_ARCHIVES
    ExportTaskState:
      description: |
        Состояние задачи асинхронной выгрузки данных.
        - QUEUED - Задача создана.
        - IN_PROGRESS - Задача в процессе обработки.
        - FINISHED - Асинхронная выгрузка данных завершилась успешно.
        - FAILED - Асинхронная выгрузка данных завершилась неуспешно.
      type: string
      enum:
        - QUEUED
        - IN_PROGRESS
        - FINISHED
        - FAILED
    ExportTaskResultPartDTO:
      description: Данные части результата задачи выгрузки данных.
      type: object
      properties:
        id:
          description: ID части результата.
          type: string
          format: uuid
        fileId:
          description: ID файла части результата.
          type: string
          format: uuid
          x-nullable: true
        largeDisposableFileId:
          description: ID потенциально большого файла части результата.
          type: string
          format: uuid
          x-nullable: true
        name:
          description: Наименование части результата.
          type: string
        index:
          description: Нумерация части результата.
          type: integer
        createdDate:
          description: Дата формирования части результата.
          type: string
          format: date-time
    GetExportTasksStatusesResponseDTO:
      description: Данные задач асинхронной выгрузки данных для ответа на запрос.
      type: object
      properties:
        id:
          description: ID задачи асинхронной выгрузки данных.
          type: string
          format: uuid
        type:
          $ref: '#/components/schemas/ExportTaskType'
        state:
          $ref: '#/components/schemas/ExportTaskState'
        filter:
          description: Данные фильтра задачи асинхронной выгрузки данных.
          type: object
          x-nullable: true
        resultParts:
          description: Список частей результата задачи выгрузки данных.
          type: array
          x-nullable: true
          items:
            $ref: '#/components/schemas/ExportTaskResultPartDTO'
    CreateExportTaskDTO:
      description: Данные для создания задачи асинхронной выгрузки данных.
      type: object
      properties:
        type:
          $ref: '#/components/schemas/ExportTaskType'
        params:
          x-nullable: true
          description: Параметры для выгрузки данных.
          type: object
      required:
        - type
    ExportTaskStatusDTO:
      description: Данные статуса задачи асинхронной выгрузки данных.
      type: object
      properties:
        id:
          description: ID задачи асинхронной выгрузки данных.
          type: string
          format: uuid
        state:
          description: Состояние задачи асинхронной выгрузки данных.
          $ref: '#/components/schemas/ExportTaskState'
        resultParts:
          x-nullable: true
          description: Список частей результата задачи выгрузки данных.
          type: array
          items:
            $ref: '#/components/schemas/ExportTaskResultPartDTO'
    ImportTaskType:
      description: |
        Тип данных задачи асинхронной загрузки данных.
        - FUNCTIONAL_MANAGER - Выгрузка данных по сотруднику с управленческим руководителем.
      type: string
      enum:
        - FUNCTIONAL_MANAGER
    CreateImportTaskRequestDTO:
      description: Данные для создания задачи асинхронной загрузки данных.
      type: object
      properties:
        fileId:
          description: ID файла для загрузки данных.
          type: string
          format: uuid
        type:
          $ref: '#/components/schemas/ImportTaskType'
    ImportTaskState:
      description: |
        Состояние задачи загрузки данных.
        - QUEUED - Задача создана.
        - IN_PROGRESS - Задача в процессе обработки.
        - SUCCEEDED - Задача завершилась успешно.
        - FAILED - Задача завершилась неуспешно.
      type: string
      enum:
        - QUEUED
        - IN_PROGRESS
        - SUCCEEDED
        - FAILED
    CreateImportTaskResponseDTO:
      description: Данные созданной задачи асинхронной загрузки данных.
      type: object
      allOf:
        - properties:
            id:
              description: Идентификатор задачи.
              type: string
              format: uuid
        - properties:
            state:
              $ref: '#/components/schemas/ImportTaskState'
    ImportTaskFailReason:
      description: |
        Причина неуспешного завершения задачи.
        - FILE_NOT_FOUND - Файл для импорта данных не найден.
      type: string
      enum:
        - FILE_NOT_FOUND
    ImportTaskStatusDTO:
      type: object
      description: Данные статуса задачи асинхронной загрузки данных.
      properties:
        id:
          type: string
          description: Идентификатор задачи в HRlink.
          format: uuid
          x-nullable: false
        state:
          $ref: '#/components/schemas/ImportTaskState'
          x-nullable: false
        result:
          type: object
          description: Результат выполнения задачи.
          x-nullable: true
        failReason:
          $ref: '#/components/schemas/ImportTaskFailReason'
          x-nullable: true
    FullNameWithPositionDeclensionDTO:
      description: Данные руководителя юрлица для создания в заданном падеже.
      type: object
      allOf:
        - $ref: '#/components/schemas/FullNameDeclensionDTO'
        - properties:
            position:
              description: Должность в заданном падеже.
              type: string
    CreateTopManagerV3DTO:
      description: Данные руководителя юрлица для создания.
      type: object
      allOf:
        - $ref: '#/components/schemas/CreateTopManagerDTO'
        - properties:
            declensions:
              description: Данные руководителя юрлица для создания в заданном падеже.
              type: array
              items:
                $ref: '#/components/schemas/FullNameWithPositionDeclensionDTO'
    TopManagerV3DTO:
      description: Данные руководителя юрлица.
      type: object
      allOf:
        - $ref: '#/components/schemas/CreateTopManagerV3DTO'
        - properties:
            lastName:
              description: Фамилия пользователя клиента.
              type: string
            firstName:
              description: Имя пользователя клиента.
              type: string
            patronymic:
              description: Отчество пользователя клиента.
              type: string
            birthdate:
              description: Дата рождения пользователя клиента.
              type: string
              format: date
            snils:
              description: СНИЛС пользователя клиента.
              type: string
            inn:
              description: ИНН пользователя клиента.
              type: string
    LegalEntityAffiliationType:
      description: |
        Тип аффилированности юрлица по отношению к другим юрлицам.
        - ALL - Юрлицу доступны все юрлица.
        - ONLY_THIS - Юрлицу доступно только оно само.
      type: string
      enum:
        - ALL
        - ONLY_THIS
    LegalEntityV3DTO:
      description: Данные для юрлица для API версии 3.
      type: object
      allOf:
        - $ref: '#/components/schemas/UpdateLegalEntityDTO'
        - properties:
            id:
              description: ID юрлица.
              type: string
              format: uuid
            address:
              description: Юридический адрес.
              type: string
            region:
              description: Цифровой код региона.
              type: string
            topManager:
              description: Руководитель юрлица.
              $ref: '#/components/schemas/TopManagerV3DTO'
            affiliationType:
              $ref: '#/components/schemas/LegalEntityAffiliationType'
    LegalEntityV4DTO:
      description: Данные для юрлица для API версии 4.
      type: object
      allOf:
        - $ref: '#/components/schemas/LegalEntityV3DTO'
        - properties:
            parentLegalEntity:
              description: Сокращенные данные родительского юрлица.
              $ref: '#/components/schemas/ShortLegalEntityDTO'
    NewsStatus:
      type: string
      enum:
        - DRAFT
        - PENDING_PUBLICATION
        - PUBLISHED
      description: Статус новости.
    NewsVisibilityDto:
      description: Данные видимости новости.
      type: object
      properties:
        legalEntityIds:
          description: ID юрлиц.
          type: array
          items:
            type: string
            format: uuid
          x-nullable: true
        clientDepartmentIds:
          description: ID отделов клиента.
          type: array
          items:
            type: string
            format: uuid
          x-nullable: true
        employeePositionIds:
          description: ID должностей сотрудников.
          type: array
          items:
            type: string
            format: uuid
          x-nullable: true
        employeeRoleIds:
          description: ID ролей сотрудников.
          type: array
          items:
            type: string
            format: uuid
          x-nullable: true
    EkdNewsBaseRequestDto:
      description: Общие данные запроса, связанного с новостью.
      type: object
      properties:
        name:
          description: Название новости.
          type: string
        content:
          description: Содержание новости.
          type: string
        status:
          description: Статус новости.
          $ref: '#/components/schemas/NewsStatus'
        plannedPublicationDate:
          description: Планируемая дата публикации.
          type: string
          format: date-time
          x-nullable: true
        featuredImageFileId:
          description: ID файла изображения новости.
          type: string
          format: uuid
          x-nullable: true
        visibility:
          description: Данные видимости новости.
          $ref: '#/components/schemas/NewsVisibilityDto'
      required:
        - name
        - content
        - status
    EkdNewsCreatingRequestDto:
      description: Данные запроса для создания новости.
      type: object
      allOf:
        - $ref: '#/components/schemas/EkdNewsBaseRequestDto'
    NewsViewsDto:
      description: Данные просмотров новости.
      type: object
      properties:
        count:
          description: Количество просмотров.
          type: integer
          format: int64
        targetCount:
          description: Целевое количество просмотров.
          type: integer
          format: int64
          x-nullable: true
      required:
        - count
    NewsPinDto:
      description: Данные закрепления новости.
      type: object
      properties:
        enabled:
          description: Закрепление включено.
          type: boolean
        expirationDate:
          description: Дата истечения закрепления.
          type: string
          format: date-time
          x-nullable: true
      required:
        - enabled
    NewsShortResponseDto:
      description: Краткие данные новости.
      type: object
      properties:
        id:
          description: ID новости.
          type: string
          format: uuid
        version:
          description: Версия новости.
          type: integer
          format: int64
        name:
          description: Название новости.
          type: string
        content:
          description: Содержание новости.
          type: string
        publishedDate:
          description: Дата публикации новости.
          type: string
          format: date-time
          x-nullable: true
        featuredImageFileId:
          description: ID файла изображения новости.
          type: string
          format: uuid
          x-nullable: true
        views:
          description: Данные просмотров новости.
          $ref: '#/components/schemas/NewsViewsDto'
        pin:
          description: Данные закрепления новости.
          $ref: '#/components/schemas/NewsPinDto'
      required:
        - id
        - version
        - name
        - content
    NewsResponseDto:
      description: Данные новости.
      type: object
      allOf:
        - $ref: '#/components/schemas/NewsShortResponseDto'
        - type: object
          properties:
            status:
              description: Статус новости.
              $ref: '#/components/schemas/NewsStatus'
            plannedPublicationDate:
              description: Планируемая дата публикации.
              type: string
              format: date-time
              x-nullable: true
            deletedDate:
              description: Дата удаления новости.
              type: string
              format: date-time
              x-nullable: true
          required:
            - status
    EkdNewsFullResponseDto:
      description: Полные данные новости.
      type: object
      allOf:
        - $ref: '#/components/schemas/NewsResponseDto'
        - type: object
          properties:
            visibility:
              description: Данные видимости новости.
              $ref: '#/components/schemas/NewsVisibilityDto'
    NewsViewCountResponseDto:
      description: Данные новости с счетчиком просмотров.
      type: object
      properties:
        id:
          description: ID новости.
          type: string
          format: uuid
        version:
          description: Версия новости.
          type: integer
          format: int64
        viewCount:
          description: Количество просмотров.
          type: integer
          format: int64
      required:
        - id
        - version
        - viewCount
    BaseNewsRegistryRequestDto:
      description: Параметры реестра новостей.
      type: object
      properties:
        workspaceId:
          description: ID рабочего пространства.
          type: string
          format: uuid
          x-nullable: true
        ids:
          description: ID новостей.
          type: array
          items:
            type: string
            format: uuid
          x-nullable: true
        search:
          description: Поисковый запрос.
          type: string
          x-nullable: true
        publishedDateFrom:
          description: Дата публикации от.
          type: string
          format: date-time
          x-nullable: true
        publishedDateTo:
          description: Дата публикации до.
          type: string
          format: date-time
          x-nullable: true
        limit:
          description: Лимит записей (1-50).
          type: integer
          minimum: 1
          maximum: 50
          x-nullable: true
        offset:
          description: Смещение.
          type: integer
          minimum: 0
          x-nullable: true
    NewsEditorRegistryRequestDTO:
      description: Параметры реестра новостей для редактора.
      allOf:
        - $ref: '#/components/schemas/BaseNewsRegistryRequestDto'
        - type: object
          properties:
            statuses:
              description: Статусы новостей.
              type: array
              items:
                $ref: '#/components/schemas/NewsStatus'
              x-nullable: true
            plannedPublicationDateFrom:
              description: Нижняя граница планируемой даты публикации.
              type: string
              format: date-time
              x-nullable: true
            plannedPublicationDateTo:
              description: Верхняя граница планируемой даты публикации.
              type: string
              format: date-time
              x-nullable: true
            deleted:
              description: Новость удалена?
              type: boolean
              x-nullable: true
    NewsBaseResponseDto:
      description: Базовые данные новости в реестре.
      type: object
      allOf:
        - $ref: '#/components/schemas/NewsShortResponseDto'
        - type: object
          properties:
            viewed:
              description: Просмотрена ли новость текущим пользователем.
              type: boolean
      required:
        - viewed
    UnviewedNewsResponseDto:
      description: Данные непросмотренных новостей.
      type: object
      properties:
        count:
          description: Количество непросмотренных новостей.
          type: integer
          format: int32
      required:
        - count
    ParticipantForApprovalDocumentBaseRequestDTO:
      description: Данные участника маршрута подписания в запросе.
      type: object
      properties:
        id:
          description: ID участника маршрута подписания.
          type: string
          format: uuid
          x-nullable: false
        employeeId:
          description: ID участника маршрута подписания.
          type: string
          format: uuid
          x-nullable: false
        signingRouteTemplateParticipantId:
          description: ID участника маршрута подписания.
          type: string
          format: uuid
          x-nullable: false
    NormativeActApprovalDocumentBaseRequestDTO:
      description: Базовые данные для запросов связанных с утверждающим документом нормативного акта.
      type: object
      properties:
        routeTemplateId:
          description: ID шаблона маршрута подписания.
          type: string
          format: uuid
        headManagerId:
          description: ID руководителя отдела.
          type: string
          format: uuid
        participants:
          description: Список участников маршрута подписания.
          type: array
          items:
            $ref: '#/components/schemas/ParticipantForApprovalDocumentBaseRequestDTO'
        watcherIds:
          description: Список ID наблюдателей маршрута подписания.
          type: string
          format: uuid
    CreateNormativeActApprovalDocumentDTO:
      description: Данные для создания утверждающего документа нормативного акта.
      type: object
      allOf:
        - $ref: '#/components/schemas/NormativeActApprovalDocumentBaseRequestDTO'
    CreateNormativeActDTO:
      description: Данные для создания нормативного акта.
      type: object
      properties:
        name:
          description: Название.
          type: string
        startDate:
          description: Дата вступления в силу.
          type: string
          format: date
        endDate:
          description: Дата окончания действия.
          type: string
          format: date
        number:
          description: Номер.
          type: string
        documentTypeId:
          description: ID типа документа.
          type: string
          format: uuid
        documentTypeExternalId:
          description: ID типа документа во внешней системе.
          type: string
        fileId:
          description: ID файла.
          type: string
          format: uuid
        legalEntityId:
          description: ID юрлица.
          type: string
          format: uuid
        legalEntityExternalId:
          description: ID юрлица во внешней системе.
          type: string
        departmentIds:
          description: |
            Множество ID отделов, на которые распространяется нормативный акт.
            Если не задан и не задан `departmentExternalIds`,
            то распространяется на все отделы.
          type: array
          items:
            type: string
            format: uuid
        departmentExternalIds:
          description: |
            Множество ID отделов во внешней системе, на которые распространяется нормативный акт.
            Если не задан и не задан `departmentIds`,
            то распространяется на все отделы.
          type: array
          items:
            type: string
        positionIds:
          description: |
            Множество ID должностей, на которые распространяется нормативный акт.
            Если не задан и не задан `positionExternalIds`,
            то акт распространяется на все должности.
          type: array
          items:
            type: string
            format: uuid
        positionExternalIds:
          description: |
            Множество ID должностей во внешней системе, на которые распространяется нормативный акт.
            Если не задан и не задан `positionIds`,
            то акт распространяется на все должности.
          type: array
          items:
            type: string
        triggeredDocumentTypeIds:
          description: |
            Множество ID типов документов, вместе с которыми происходит автоматическая отправка акта.
            Если не задан и не задан `triggeredDocumentTypeExternalIds`,
            то автоматической отправки не будет.
          type: array
          items:
            type: string
            format: uuid
        triggeredDocumentTypeExternalIds:
          description: |
            Множество ID типов документов во внешней системе, вместе с которыми происходит
            автоматическая отправка акта.
            Если не задан и не задан `triggeredDocumentTypeIds`,
            то автоматической отправки не будет.
          type: array
          items:
            type: string
        hideAfterSigning:
          description: Скрыть акт от сотрудника после подписания?
          type: boolean
        externalId:
          description: ID нормативного акта во внешней системе.
          type: string
        approvalDocument:
          description: Данные для создания утверждающего документа нормативного акта.
          $ref: '#/components/schemas/CreateNormativeActApprovalDocumentDTO'
        legalEntityIds:
          description: Множество ID юрлиц, на которые распространяется нормативный акт.
          type: array
          x-nullable: true
          items:
            type: string
            format: uuid
        legalEntityExternalIds:
          description: Множество внешних ID юрлиц, на которые распространяется нормативный акт.
          type: array
          x-nullable: true
          items:
            type: string
    NormativeActSigningDTO:
      description: Данные подписания нормативного акта.
      type: object
      properties:
        currentCount:
          description: Текущее количество подписаний нормативного акта.
          type: integer
        totalCount:
          description: Общее количество ожидаемых подписаний нормативного акта.
          type: integer
    NormativeActStatus:
      description: |
        Статус нормативного акта.
        - `DRAFT` - Нормативный акт является черновиком.
        - `IN_PROCESS` - Нормативный акт в процессе подписания.
        - `FAILED` - Произошла ошибка. На текущий момент ошибка может произойти только при конвертации файла.
        - `SIGNED` - Нормативный акт подписан.
        - `DELETED` - Нормативный акт удалён.
        - `SEND_TO_SIGNING_TASK_PENDING` - Нормативный акт в процессе отправки на подписание сотрудникам.
        - `APPROVING` - Нормативный акт на подписании у руководителя.
        - `APPROVED` - Нормативный акт подписан руководителем.
      type: string
      enum:
        - DRAFT
        - IN_PROCESS
        - FAILED
        - SIGNED
        - DELETED
        - SEND_TO_SIGNING_TASK_PENDING
        - APPROVING
        - APPROVED
    NormativeActSendToSigningTaskData:
      description: Данные задачи отправки нормативного акта на подписание сотрудникам.
      type: object
      properties:
        id:
          description: Идентификатор задачи.
          type: string
          format: uuid
    NormativeActDTO:
      description: Данные нормативного акта.
      type: object
      properties:
        id:
          description: ID нормативного акта.
          type: string
          format: uuid
        name:
          description: Название.
          type: string
        startDate:
          description: Дата вступления в силу.
          type: string
          format: date
        endDate:
          description: Дата окончания действия.
          type: string
          format: date
        number:
          description: Номер.
          type: string
        documentType:
          description: Данные типа документа.
          $ref: '#/components/schemas/ShortDocumentTypeWithExternalIdDTO'
        originalFileId:
          description: ID файла.
          type: string
          format: uuid
        convertedFileId:
          description: ID файла в формате PDF/A.
          type: string
          format: uuid
        fileConversionFailedDate:
          description: Момент времени, когда конвертация файла в PDF/A формат завершилась неудачно.
          type: string
          format: date-time
        legalEntity:
          description: |
            Данные юрлица, если нормативный акт распространяется на одно юрлицо.
            Если акт распространяется на несколько юрлиц, то в данном поле будет `null`.
          $ref: '#/components/schemas/ShortLegalEntityDTO'
        legalEntities:
          description: Данные юрлиц, на которые распространяется нормативный акт.
          type: array
          items:
            $ref: '#/components/schemas/ShortLegalEntityDTO'
        creator:
          description: Данные создателя нормативного акта.
          $ref: '#/components/schemas/ClientUserShortInfoDTO'
        departments:
          description: Данные отделов, на которые распространяется нормативный акт.
          type: array
          items:
            $ref: '#/components/schemas/DepartmentWithoutVersionDTO'
        positions:
          description: Данные должностей, на которые распространяется нормативный акт.
          type: array
          items:
            type: object
            properties:
              id:
                description: Идентификатор должности.
                type: string
                format: uuid
              externalId:
                description: Идентификатор должности во внешней системе.
                type: string
              name:
                description: Название должности.
                type: string
        triggeredDocumentTypes:
          description: Данные типов документов, вместе с которыми происходит автоматическая отправка акта.
          type: array
          items:
            type: object
            properties:
              id:
                description: Идентификатор типа документа.
                type: string
                format: uuid
              externalId:
                description: Идентификатор типа документа во внешней системе.
                type: string
              name:
                description: Название типа документа.
                type: string
        signingInfo:
          $ref: '#/components/schemas/NormativeActSigningDTO'
        statuses:
          description: Статусы нормативного акта.
          type: array
          items:
            $ref: '#/components/schemas/NormativeActStatus'
        sentDate:
          description: Момент времени отправки акта.
          type: string
          format: date-time
        deletedDate:
          description: Момент времени удаления акта.
          type: string
        deleterId:
          description: ID пользователя клиента, удалившего нормативный акт.
          type: string
          format: uuid
        hideAfterSigning:
          description: Скрыть акт от сотрудника после подписания?
          type: boolean
        externalId:
          description: ID во внешней системе.
          type: string
        createdDate:
          description: Момент создания.
          type: string
          format: date-time
        autoSendEnabled:
          description: Включить автоматическую отправку нормативного акта на подписание?
          type: boolean
        sendToSigningTasks:
          description: Список данных задач отправки нормативного акта на подписание сотрудникам.
          type: array
          items:
            $ref: '#/components/schemas/NormativeActSendToSigningTaskData'
        version:
          description: Версия данных.
          type: integer
          format: int64
        documentTypeId:
          type: string
    ShortNormativeActDTO:
      description: Данные нормативного акта.
      type: object
      allOf:
        - type: object
          properties:
            id:
              description: Идентификатор нормативного акта.
              type: string
              format: uuid
            version:
              description: Версия данных нормативного акта.
              type: integer
              format: int64
        - properties:
            externalId:
              description: Идентификатор нормативного акта во внешней системе.
              type: string
    DeleteNormativeActsDTO:
      description: Данные для удаления нормативных актов.
      type: object
      properties:
        normativeActs:
          description: Данные нормативных актов.
          type: array
          items:
            $ref: '#/components/schemas/ShortNormativeActDTO'
    DeletedNormativeActsDTO:
      description: Данные удалённых нормативных актов.
      type: object
      properties:
        normativeActs:
          description: Данные нормативных актов.
          type: array
          items:
            $ref: '#/components/schemas/ShortNormativeActDTO'
    UpdateNormativeActApprovalDocumentDTO:
      description: Данные для обновления утверждающего документа нормативного акта.
      type: object
      allOf:
        - $ref: '#/components/schemas/NormativeActApprovalDocumentBaseRequestDTO'
    UpdateNormativeActDTO:
      description: Данные для обновления нормативного акта.
      type: object
      properties:
        name:
          description: Название.
          type: string
        number:
          description: Номер.
          type: string
        startDate:
          description: Дата вступления в силу.
          type: string
          format: date
        endDate:
          description: Дата окончания действия.
          type: string
          format: date
        documentTypeId:
          description: ID типа документа.
          type: string
          format: uuid
        documentTypeExternalId:
          description: ID типа документа во внешней системе.
          type: string
        legalEntityId:
          description: ID юрлица.
          type: string
          format: uuid
        legalEntityExternalId:
          description: ID юрлица во внешней системе.
          type: string
        departmentIds:
          description: |
            Множество ID отделов, на которые распространяется нормативный акт.
            Если список ID отделов в системе HRlink и список ID отделов во внешней системе не заданы, то нормативный акт
            распространяется на все отделы.
          type: array
          items:
            type: string
            format: uuid
        departmentExternalIds:
          description: |
            Множество ID отделов во внешней системе, на которые распространяется нормативный акт.
            Если список ID отделов в системе HRlink и список ID отделов во внешней системе не заданы, то нормативный акт
            распространяется на все отделы.
          type: array
          items:
            type: string
        positionIds:
          description: |
            Множество ID должностей, на которые распространяется нормативный акт.
            Если список ID должностей в системе HRlink и список ID должностей во внешней системе не заданы, то
            нормативный акт распространяется на все должности.
          type: array
          items:
            type: string
            format: uuid
        positionExternalIds:
          description: |
            Множество ID должностей во внешней системе, на которые распространяется нормативный акт.
            Если список ID должностей в системе HRlink и список ID должностей во внешней системе не заданы, то
            нормативный акт распространяется на все должности.
          type: array
          items:
            type: string
        triggeredDocumentTypeIds:
          description: |
            Множество ID типов документов, вместе с которыми происходит автоматическая отправка акта.
            Если список ID типов документов в системе HRlink и список ID типов документов во внешней системе не заданы, то автоматической отправки не будет.
          type: array
          items:
            type: string
            format: uuid
        triggeredDocumentTypeExternalIds:
          description: |
            Множество ID типов документов во внешней системе, вместе с которыми происходит автоматическая отправка нормативного акта.
            Если список ID типов документов в системе HRlink и список ID типов документов во внешней системе не заданы, то автоматической отправки не будет.
          type: array
          items:
            type: string
        hideAfterSigning:
          description: Скрыть акт от сотрудника после подписания?
          type: boolean
        externalId:
          description: ID нормативного акта во внешней системе.
          type: string
        version:
          description: Версия данных нормативного акта.
          type: integer
          format: int64
        approvalDocument:
          $ref: '#/components/schemas/UpdateNormativeActApprovalDocumentDTO'
        legalEntityIds:
          description: Множество ID юрлиц, на которые распространяется нормативный акт.
          type: array
          x-nullable: true
          minItems: 1
          items:
            type: string
            format: uuid
        legalEntityExternalIds:
          description: Множество ID юрлиц во внешней системе, на которые распространяется нормативный акт.
          type: array
          x-nullable: true
          minItems: 1
          items:
            type: string
    NormativeActDocumentStatus:
      description: |
        Статус документа нормативного акта.
        - NOT_SEEN - Документ не просмотрен.
        - SEEN - Документ просмотрен.
        - SIGNED - Документ подписан.
      type: string
      enum:
        - NOT_SEEN
        - SEEN
        - SIGNED
    DateTimePeriodDTO:
      description: Данные о периоде времени.
      type: object
      properties:
        from:
          description: Момент начала временного периода.
          type: string
          format: date-time
        to:
          description: Момент окончания временного периода.
          type: string
          format: date-time
        correct:
          description: Временной период задан корректно?
          type: boolean
    NormativeActDocumentSignersFilterDTO:
      description: Данные сотрудников-подписантов для фильтрации документов нормативного акта.
      type: object
      properties:
        employeeIds:
          description: Список ID сотрудников-подписантов.
          type: array
          items:
            type: string
            format: uuid
        statuses:
          description: Список статусов документов нормативного акта.
          type: array
          items:
            $ref: '#/components/schemas/NormativeActDocumentStatus'
        employeeDepartmentIds:
          description: Список ID отделов сотрудников-подписантов.
          type: array
          items:
            type: string
            format: uuid
        seenDate:
          $ref: '#/components/schemas/DateTimePeriodDTO'
        signedDate:
          $ref: '#/components/schemas/DateTimePeriodDTO'
    NormativeActDocumentsFilterDTO:
      description: Данные для фильтрации документов нормативного акта.
      type: object
      properties:
        ids:
          description: Список ID документов нормативного акта.
          type: array
          items:
            type: string
            format: uuid
        employeeDocumentSignerFilters:
          $ref: '#/components/schemas/NormativeActDocumentSignersFilterDTO'
        sentDate:
          $ref: '#/components/schemas/DateTimePeriodDTO'
        limit:
          description: Количество возвращаемых при запросе элементов.
          type: integer
          minimum: 0
        offset:
          description: Количество элементов, которые нужно пропустить при выборке.
          type: integer
          minimum: 0
    NormativeActDocumentSignerDTO:
      description: Данные сотрудника-подписанта документа нормативного акта.
      type: object
      properties:
        id:
          description: ID сотрудника-подписанта.
          type: string
          format: uuid
        employeeId:
          description: ID сотрудника.
          type: string
          format: uuid
        lastName:
          description: Фамилия.
          type: string
        firstName:
          description: Имя.
          type: string
        patronymic:
          description: Отчество.
          type: string
        externalId:
          description: ID сотрудника во внешней системе.
          type: string
        position:
          type: object
          properties:
            id:
              description: Идентификатор должности.
              type: string
              format: uuid
            externalId:
              description: Идентификатор должности во внешней системе.
              type: string
            name:
              description: Название должности.
              type: string
        department:
          $ref: '#/components/schemas/DepartmentWithoutVersionDTO'
        seenDate:
          description: Момент времени просмотра документа сотрудником.
          type: string
          format: date-time
        signedDate:
          description: Момент времени подписания документа сотрудником.
          type: string
          format: date-time
    NormativeActDocumentAndSignerDTO:
      description: Данные документа нормативного акта и его подписанта.
      type: object
      properties:
        id:
          description: ID документа нормативного акта.
          type: string
          format: uuid
        employeeDocumentSigner:
          $ref: '#/components/schemas/NormativeActDocumentSignerDTO'
        sentDate:
          description: Момент времени отправки документа на подпись.
          type: string
          format: date-time
        version:
          description: Версия документа.
          type: integer
          format: int64
    NormativeActSendToSigningTaskWithNormativeActDTO:
      description: Данные задачи отправки нормативного акта на подписание сотрудникам, содержащей данные нормативного акта.
      type: object
      allOf:
        - $ref: '#/components/schemas/NormativeActSendToSigningTaskData'
        - properties:
            normativeAct:
              $ref: '#/components/schemas/NormativeActDTO'
    NormativeActIdWithVersionDTO:
      description: Данные, содержащие версии нормативных актов с их ID в системе HRlink.
      type: object
      properties:
        normativeActs:
          description: Данные нормативных актов.
          type: array
          items:
            type: object
            properties:
              id:
                description: ID нормативного акта.
                type: string
                format: uuid
              externalId:
                description: ID нормативного акта во внешней системе.
                type: string
              version:
                description: Версия нормативного акта.
                type: integer
                format: int64
    SendBulkOfNormativeActsToSigningDTO:
      description: Данные для отправки группы нормативных актов на подписание сотрудникам.
      type: object
      properties:
        normativeActIds:
          description: Список ID нормативных актов в системе HRlink.
          type: array
          items:
            type: string
            format: uuid
        normativeActExternalIds:
          description: Список ID нормативных актов во внешней системе.
          type: array
          items:
            type: string
        employeeFilter:
          description: Данные для фильтрации сотрудников, которым нужно отправить нормативные акты на подписание.
          $ref: '#/components/schemas/EmployeeFilterDTO'
    SendNormativeActsForApprovalRequestDto:
      description: Данные запроса отправки нормативных актов на утверждение.
      type: object
      properties:
        normativeActs:
          description: Данные нормативных актов.
          type: array
          x-nullable: false
          items:
            $ref: '#/components/schemas/ShortNormativeActDTO'
    NormativeActRegistryFilterDTO:
      description: Параметры фильтрации реестра ЛНА.
      type: object
      properties:
        ids:
          description: Идентификаторы ЛНА для фильтрации.
          type: array
          items:
            type: string
            format: uuid
        statuses:
          description: Статусы ЛНА для фильтрации.
          type: array
          items:
            $ref: '#/components/schemas/NormativeActStatus'
        number:
          description: Версия ЛНА.
          type: string
        name:
          description: Наименование ЛНА.
          type: string
        legalEntityIds:
          description: Идентификаторы юрлиц для фильтрации.
          type: array
          items:
            type: string
            format: uuid
        departmentIds:
          description: Идентификаторы отделов клиента для фильтрации.
          type: array
          items:
            type: string
            format: uuid
        positionIds:
          description: Идентификаторы должностей для фильтрации.
          type: array
          items:
            type: string
            format: uuid
        creatorIds:
          description: ID создателей ЛНА для фильтрации.
          type: array
          items:
            type: string
            format: uuid
        startDate:
          description: Дата начала действия ЛНА.
          $ref: '#/components/schemas/DatePeriodDTO'
        endDate:
          description: Дата окончания действия ЛНА.
          $ref: '#/components/schemas/DatePeriodDTO'
        createdDate:
          description: Момент времени создания ЛНА.
          $ref: '#/components/schemas/DateTimePeriodDTO'
        limit:
          description: Количество возвращаемых элементов.
          type: integer
          minimum: 0
        offset:
          description: Смещение от начала списка.
          type: integer
          minimum: 0
    PlannedVacationEmployeeStatus:
      description: |
        Статус запрашиваемых планируемых отпусков сотрудников.
        - ALL - Все отпуска.
        - WAITING - Отпуска, ожидающие согласования.
        - APPROVED - Согласованные отпуска.
      type: string
      enum:
        - ALL
        - WAITING
        - APPROVED
    VacationFilterDTO:
      description: Данные для фильтрации периодов запланированных отпусков.
      type: object
      properties:
        startDateFrom:
          description: Начало периода, в который должно попадать начало запрашиваемого планируемого отпуска.
          type: string
          x-nullable: true
          format: date
        startDateTo:
          description: Конец периода, в который должно попадать начало запрашиваемого планируемого отпуска.
          type: string
          x-nullable: true
          format: date
        status:
          $ref: '#/components/schemas/PlannedVacationEmployeeStatus'
          type: string
          x-nullable: true
    EmployeeIdsInfoDTO:
      description: Данные об ID сотрудника.
      type: object
      properties:
        id:
          description: ID сотрудника в системе HRlink.
          type: string
          format: uuid
          x-nullable: true
        externalId:
          description: ID сотрудника во внешней системе.
          type: string
          x-nullable: true
    DepartmentIdsInfoDTO:
      description: Данные об ID отдела клиента.
      type: object
      properties:
        id:
          description: ID отдела клиента в системе HRlink.
          type: string
          format: uuid
          x-nullable: true
        externalId:
          description: ID отдела клиента во внешней системе.
          type: string
          x-nullable: true
    LegalEntityIdsInfoDTO:
      description: Данные об ID юридического лица.
      type: object
      properties:
        id:
          description: ID юрлица клиента в системе HRlink.
          type: string
          format: uuid
          x-nullable: true
        externalId:
          description: ID юрлица клиента во внешней системе.
          type: string
          x-nullable: true
    PlannedVacationEmployeeReqDTO:
      description: Данные запроса на получение планируемых отпусков сотрудников
      type: object
      required:
        - vacations
        - employees
        - department
        - legalEntity
      properties:
        vacations:
          $ref: '#/components/schemas/VacationFilterDTO'
          description: Данные для фильтрации периодов планируемых отпусков
        employees:
          type: array
          description: Список информации об ID сотрудников
          items:
            $ref: '#/components/schemas/EmployeeIdsInfoDTO'
        department:
          type: array
          description: Список информации об ID отделов
          items:
            $ref: '#/components/schemas/DepartmentIdsInfoDTO'
        legalEntity:
          type: array
          description: Список информации об ID юр лиц
          items:
            $ref: '#/components/schemas/LegalEntityIdsInfoDTO'
        limit:
          type: integer
          format: int32
          description: Количество возвращаемых при запросе элементов
          x-nullable: true
          default: null
        offset:
          type: integer
          format: int32
          description: Количество элементов, которые нужно пропустить при выборке
          x-nullable: true
          default: null
        withoutDismissedEmployees:
          description: Вернуть ответ без уволенных сотрудников?
          type: boolean
          x-nullable: true
          default: false
    PlannedVacationEmployeePeriodDTO:
      description: Данные об отпуске сотрудника.
      type: object
      properties:
        vacationType:
          $ref: '#/components/schemas/VacationType'
        vacationStatus:
          description: Статус отпуска.
          type: string
          enum:
            - Согласовано
            - Ожидает согласования
        dateFrom:
          description: Дата начала отпуска.
          type: string
          x-nullable: false
        dateTo:
          description: Дата окончания отпуска.
          type: string
          x-nullable: false
    PlannedVacationEmployeeResDTO:
      description: Данные для ответа на запрос на получение планируемых отпусков сотрудников.
      type: object
      properties:
        id:
          description: Идентификатор сотрудника в системе HRlink.
          type: string
          format: uuid
          x-nullable: false
        externalId:
          description: Идентификатор сотрудника во внешней системе.
          type: string
          x-nullable: true
        periods:
          type: array
          description: Список данных об отпусках сотрудника.
          items:
            $ref: '#/components/schemas/PlannedVacationEmployeePeriodDTO'
            type: object
            x-nullable: false
    CreateSigningRouteTemplateBaseDTO:
      type: object
      required:
        - name
        - signingObjectType
        - deactivated
      properties:
        name:
          type: string
          maxLength: 600
          description: Название шаблона маршрута подписания
        signingObjectType:
          type: string
          enum:
            - DOCUMENT
            - APPLICATION
        externalId:
          type: string
          description: Идентификатор шаблона во внешней системе
        deactivated:
          type: boolean
          description: Признак того, что шаблон деактивирован
    SigningRouteTemplateStageBaseDTO:
      type: object
      required:
        - indexNumber
        - type
      properties:
        indexNumber:
          type: integer
          minimum: 0
          description: Порядковый номер этапа
        type:
          type: string
          description: Тип этапа маршрута подписания
        completenessCondition:
          type: string
          description: Условие завершённости этапа
    CreateDocumentSigningRouteTemplateParticipantDTO:
      type: object
      required:
        - type
        - actionType
      properties:
        type:
          type: string
        actionType:
          type: string
        signingType:
          type: string
        employeeId:
          type: string
          format: uuid
    CreateDocumentSigningRouteTemplateStageDTO:
      allOf:
        - $ref: '#/components/schemas/SigningRouteTemplateStageBaseDTO'
        - type: object
          required:
            - participants
          properties:
            participants:
              type: array
              minItems: 1
              description: Участники этапа маршрута подписания документа
              items:
                $ref: '#/components/schemas/CreateDocumentSigningRouteTemplateParticipantDTO'
    CreateDocumentSigningRouteTemplateDTO:
      allOf:
        - $ref: '#/components/schemas/CreateSigningRouteTemplateBaseDTO'
        - type: object
          required:
            - stages
          properties:
            legalEntityIds:
              type: array
              description: Список ID юридических лиц
              items:
                type: string
                format: uuid
            stages:
              type: array
              minItems: 1
              description: Этапы маршрута подписания документа
              items:
                $ref: '#/components/schemas/CreateDocumentSigningRouteTemplateStageDTO'
    ApplicationSigningRouteTemplateStageDTO:
      allOf:
        - $ref: '#/components/schemas/SigningRouteTemplateStageBaseDTO'
        - type: object
          required:
            - responsibleEnabled
          properties:
            responsibleEnabled:
              type: boolean
              description: Определяется ли ответственный на этапе
            canDeleteBeforeStageCompleted:
              type: boolean
              description: Можно ли удалить заявление до завершения этапа
    CreateApplicationSigningRouteTemplateParticipantDTO:
      type: object
      required:
        - type
        - actionType
      properties:
        type:
          type: string
        actionType:
          type: string
    CreateApplicationSigningRouteTemplateStageDTO:
      allOf:
        - $ref: '#/components/schemas/ApplicationSigningRouteTemplateStageDTO'
        - type: object
          required:
            - participants
          properties:
            participants:
              type: array
              minItems: 1
              description: Участники этапа маршрута подписания заявления
              items:
                $ref: '#/components/schemas/CreateApplicationSigningRouteTemplateParticipantDTO'
    CreateApplicationSigningRouteTemplateDTO:
      allOf:
        - $ref: '#/components/schemas/CreateSigningRouteTemplateBaseDTO'
        - type: object
          required:
            - stages
          properties:
            stages:
              type: array
              minItems: 1
              description: Этапы маршрута подписания заявления
              items:
                $ref: '#/components/schemas/CreateApplicationSigningRouteTemplateStageDTO'
    CreateSigningRouteTemplate:
      description: Данные для создания шаблона маршрута подписания
      oneOf:
        - $ref: '#/components/schemas/CreateDocumentSigningRouteTemplateDTO'
        - $ref: '#/components/schemas/CreateApplicationSigningRouteTemplateDTO'
      discriminator:
        propertyName: signingObjectType
        mapping:
          DOCUMENT: '#/components/schemas/CreateDocumentSigningRouteTemplateDTO'
          APPLICATION: '#/components/schemas/CreateApplicationSigningRouteTemplateDTO'
    BaseLegalEntityWithRequisitesAndIdDTO:
      description: Основные данные юрлица c реквизитами и ID.
      type: object
      allOf:
        - $ref: '#/components/schemas/BaseLegalEntityWithRequisitesDTO'
        - properties:
            id:
              description: ID юрлица.
              type: string
              format: uuid
    AttorneysWithShortPrincipalDTO:
      description: Данные доверенности с сокращенными данными доверителя.
      type: object
      allOf:
        - $ref: '#/components/schemas/BaseAttorneyDTO'
        - properties:
            principal:
              x-nullable: true
              description: |
                Сокращенные данные доверителя.
                Имеет значение `null`, если МЧД подписана от имени управляющей компании.
                В этом случае заполнены поля `managementCompany` и `managementCompanyPrincipal`.
              $ref: '#/components/schemas/ShortAttorneyPersonDTO'
            delegate:
              x-nullable: false
              description: Данные представителя руководителя по МЧД.
              $ref: '#/components/schemas/AttorneyPersonDTO'
            managementCompanyPrincipal:
              x-nullable: true
              description: |
                Данные доверителя из управляющей компании.
                Имеет значение `null`, если заполнено поле `principal`.
              $ref: '#/components/schemas/PersonName'
    ClientUserWithTopManagerLegalEntitiesDTO:
      description: Данные пользователя клиента с данным о юрлицах, где пользователь является руководителем.
      type: object
      allOf:
        - properties:
            id:
              description: Идентификатор пользователя клиента.
              type: string
              format: uuid
            externalId:
              description: Идентификатор пользователя клиента во внешней системе.
              type: string
        - properties:
            myLegalEntities:
              description: Список данных юрлиц, где пользователь является руководителем.
              type: array
              items:
                $ref: '#/components/schemas/BaseLegalEntityWithRequisitesAndIdDTO'
            attorneys:
              description: Список данных МЧД с сокращенными данными доверителя.
              type: array
              items:
                $ref: '#/components/schemas/AttorneysWithShortPrincipalDTO'
            clientUserRoles:
              description: Список ролей пользователя клиента.
              type: array
              items:
                $ref: '#/components/schemas/UserRoleDto'
    CurrentUserLegalEntityDTO:
      description: Данные юрлица, отдаваемые в данных текущего пользователя.
      type: object
      allOf:
        - properties:
            id:
              description: Идентификатор юрлица.
              type: string
              format: uuid
            name:
              description: Название юрлица.
              type: string
        - properties:
            shortName:
              description: Короткое название юрлица.
              type: string
    CurrentUserEmployeePositionDTO:
      description: Данные должности сотрудника, отдаваемые в данных текущего пользователя.
      type: object
      allOf:
        - properties:
            id:
              description: Идентификатор должности.
              type: string
              format: uuid
            name:
              description: Название должности.
              type: string
    CurrentUserClientDepartmentDTO:
      description: Данные отдела клиента, отдаваемые в данных текущего пользователя.
      type: object
      allOf:
        - properties:
            id:
              description: Идентификатор отдела.
              type: string
              format: uuid
            name:
              description: Название отдела.
              type: string
        - properties:
            headManager:
              $ref: '#/components/schemas/EmployeeShortInfoWithNumberDTO'
              description: Данные руководителя отдела.
    CurrentUserEmployeeDTO:
      description: Данные сотрудника, отдаваемые в составе данных текущего пользователя.
      type: object
      allOf:
        - properties:
            id:
              description: Идентификатор сотрудника.
              type: string
              format: uuid
        - properties:
            clientId:
              description: ID клиента, к которому относится сотрудник.
              type: string
              format: uuid
            legalEntityId:
              description: ID юрлица, к которому относится сотрудник.
              type: string
              format: uuid
            legalEntity:
              $ref: '#/components/schemas/CurrentUserLegalEntityDTO'
            positionId:
              description: ID должности сотрудника.
              type: string
              format: uuid
            employeePosition:
              $ref: '#/components/schemas/CurrentUserEmployeePositionDTO'
            clientDepartment:
              $ref: '#/components/schemas/CurrentUserClientDepartmentDTO'
            dismissedDate:
              description: Дата увольнения сотрудника.
              type: string
              format: date
            availableVacationDayCount:
              description: Общее количество доступных дней отпуска по всем типам отпуска.
              type: number
            availableVacationDayCountsByType:
              description: Данные о доступных сотруднику днях отпуска по типам.
              type: array
              items:
                $ref: '#/components/schemas/AvailableVacationDaysByTypeData'
            functionalManager:
              $ref: '#/components/schemas/EmployeeShortInfoDTO'
              description: Информация об управленческом руководителе.
              x-nullable: true
            mainWorkplace:
              description: Текущее место трудоустройства сотрудника является основным местом работы?
              type: boolean
            subordinateDepartments:
              description: Список отделов, в которых сотрудник является руководителем.
              type: array
              items:
                type: object
                properties:
                  id:
                    description: Идентификатор отдела.
                    type: string
                    format: uuid
                  name:
                    description: Название отдела.
                    type: string
            number:
              description: Табельный номер сотрудника.
              type: string
              x-nullable: true
            prrSigningEnabled:
              description: |
                Флаг, включена ли у пользователя клиента возможность подписания через ПРР.

                - true - означает что у сотрудника включена возможность подписания через ПРР.
                - false - означает что у сотрудника отключена возможность подписания через ПРР.
                - null - означает сотрудник не проходил первоначальную настройку возможности подписания через ПРР.
              type: boolean
              x-nullable: true
            calendarId:
              description: ID календаря, на основании которого сформирован график работы сотрудника.
              type: string
              format: uuid
              x-nullable: true
            employeeRoles:
              description: Список данных ролей сотрудника.
              type: array
              items:
                $ref: '#/components/schemas/EmployeeRoleDTO'
            customStructureElements:
              description: Список данных элементов пользовательских структур.
              type: array
              items:
                $ref: '#/components/schemas/CustomStructureElementDTO'
              x-nullable: true
              default: null
    CommonNotificationChannelType:
      description: |
        Общий тип канала оповещения пользователя.
        - `ADDITIONAL` — дополнительный канал уведомления для параллельных уведомлений.
        - `MAIN` — основной канал уведомления. Основными считаются каналы EMAIL, SMS, TELEGRAM, WHATSAPP.
        - `PUSH` — push-уведомление в мобильном приложении.
      type: string
      enum:
        - ADDITIONAL
        - MAIN
        - PUSH
    EkdNotificationChannelDto:
      description: Данные о канале оповещений пользователя.
      type: object
      required:
        - id
        - commonType
      properties:
        id:
          description: ID канала оповещения.
          type: string
          format: uuid
        login:
          description: Логин канала.
          type: string
          x-nullable: true
        type:
          description: Тип оповещений канала.
          type: string
        commonType:
          description: Общий тип канала оповещения пользователя.
          $ref: '#/components/schemas/CommonNotificationChannelType'
        confirmed:
          description: Канал подтверждён?
          type: boolean
        priority:
          description: Приоритет канала оповещения. Меньше — приоритетнее.
          type: integer
        enabled:
          description: Канал включен?
          type: boolean
        invited:
          description: Есть ли активное приглашение? Активное приглашение — приглашение которое еще не принято и которое еще не деактивировано.
          type: boolean
        version:
          description: Версия данных о канале оповещения.
          type: integer
          format: int64
    ClientUserPermission:
      description: |
        Права, которые могут быть добавлены в роль пользователя клиента.
        - OWNER - Право идентифицироваться владельцем.
        - CLIENT_USERS - Право для группировки прав по пользователям клиента.
        - CLIENT_USERS_CREATE - Право для создания пользователя клиента.
        - CLIENT_USERS_UPDATE - Право для обновления пользователя клиента.
        - CLIENT_USERS_INVITE - Право для приглашения пользователя клиента.
        - EMPLOYEES - Право для группировки прав по сотрудникам.
        - EMPLOYEES_CREATE - Право для создания сотрудника.
        - EMPLOYEES_UPDATE - Право для обновления сотрудника.
        - EMPLOYEES_DISMISS - Право для увольнения сотрудника.
        - EMPLOYEES_RESTORE - Право для восстановления сотрудника.
        - EMPLOYEES_CREATE_QES_ISSUE - Право для создания заявки на выпуск УКЭП сотруднику.
        - EMPLOYEES_CREATE_NQES_ISSUE - Право для создания заявки на выпуск УНЭП сотруднику.
        - NQES_CHANNEL_CHANGE - Право для создания запроса на запуск процесса смены канала подписания УНЭП.
        - ENABLE_SIGNING_THROUGH_PRR - Право включать сотруднику возможность подписания документа с помощью ПРР.
        - ENABLE_SIGNING_THROUGH_GOV_KEY - Право включать сотруднику возможность подписания документа с помощью Госключа.
        - DISABLE_SIGNING_THROUGH_PRR - Право выключать сотруднику возможность подписания документа с помощью ПРР.
        - ENABLE_VTB_SIGNING - Право включать сотруднику возможность подписания с помощью ВТБ Онлайн.
        - DISABLE_VTB_SIGNING - Право отключать сотруднику возможность подписания с помощью ВТБ Онлайн.
        - EMPLOYEES_UPLOAD_CERTIFICATE - Право загружать сертификат сотрудника.
        - READ_PERMITTED_DOCUMENT_TYPES - Право получать список доступных для сотрудника типов документов.
        - UPDATE_PERMITTED_DOCUMENT_TYPES - Право обновлять список доступных для сотрудника типов документов.
        - READ_PERMITTED_CLIENT_DEPARTMENTS - Право получать список доступных для сотрудника отделов клиента.
        - UPDATE_PERMITTED_CLIENT_DEPARTMENTS - Право обновлять список доступных для сотрудника типов документов.
        - READ_PERMITTED_APPLICATION_TYPES - Право получать список доступных типов заявлений для сотрудника.
        - UPDATE_PERMITTED_APPLICATION_TYPES - Право редактировать список типов заявлений для сотрудника.
        - VIEW_EMPLOYEE_NUMBER - Право на просмотр табельного номера сотрудника.
        - EMPLOYEE_POSITIONS - Право для группировки прав по справочнику должностей сотрудника.
        - EMPLOYEE_POSITIONS_CREATE - Право для создания элементов в справочнике должностей сотрудника.
        - EMPLOYEE_POSITIONS_UPDATE - Право для обновления элементов в справочнике должностей сотрудника.
        - EMPLOYEE_POSITIONS_DELETE - Право для удаления элементов в справочнике должностей сотрудника.
        - LEGAL_ENTITIES - Право для группировки прав по юрлицам.
        - LEGAL_ENTITIES_CREATE - Право для создания юрлица.
        - LEGAL_ENTITIES_UPDATE - Право для обновления юрлица.
        - DEPARTMENTS - Право для группировки прав по справочнику отделов клиента.
        - DEPARTMENTS_CREATE - Право для создания элементов в справочнике отделов клиента.
        - DEPARTMENTS_UPDATE - Право для обновления элементов в справочнике отделов клиента.
        - DEPARTMENTS_DELETE - Право для удаления элементов в справочнике отделов клиента.
        - DOCUMENTS - Право для группировки прав по документам.
        - DOCUMENTS_CREATE - Право для создания документов.
        - DOCUMENTS_CREATE_FOR_SOMEONE_ELSE - Право для создания документов за других пользователей.
        - DOCUMENTS_UPDATE - Право для обновления документов.
        - DOCUMENTS_SEND_TO_SIGNING - Право для отправки документов на подписание.
        - DOCUMENTS_MULTIPLE_SEND_AND_SIGN - Право для массового подписания документов с одновременной отправкой документов на подпись, если это необходимо.
        - DOCUMENTS_SIGN_AS_HEAD_MANAGER - Право подписывать документы за руководителя.
        - DOCUMENTS_DELETE - Право для удаления документов.
        - DOCUMENT_FILE - Право на файл документа.
        - APPLICATION_GROUPS - Право для группировки прав по группам заявлений сотрудника.
        - APPLICATION_GROUPS_CREATE_FOR_SOMEONE_ELSE - Право для создания группы заявлений сотрудника для других пользователей.
        - APPLICATION_TYPES - Право для группировки прав по типам заявлений.
        - APPLICATION_TYPES_UPDATE - Право для обновления типов заявлений.
        - APPLICATION_TYPES_CHANGE_ORDER - Право для изменения порядка типов заявлений.
        - APPLICATION_TYPES_GET_TEMPLATE - Право для получения файла шаблона типа заявления сотрудника.
        - DOCUMENT_TYPES - Право для группировки прав по типам документов.
        - DOCUMENT_TYPES_CREATE - Право для создания типов документов.
        - DOCUMENT_TYPES_UPDATE - Право для обновления типов документов.
        - BULK_DATA_SYNC_TASKS - Право для группировки прав по задачам массовой синхронизации данных.
        - BULK_DATA_SYNC_TASKS_CREATE - Право на создание задач массовой синхронизации данных.
        - NORMATIVE_ACTS - Право для группировки прав по нормативным актам.
        - NORMATIVE_ACTS_CREATE - Право для создания нормативных актов.
        - NORMATIVE_ACTS_UPDATE - Право для обновления нормативных актов.
        - NORMATIVE_ACTS_SEND_TO_SIGNING - Право для отправки нормативных актов на подписание сотрудникам.
        - NORMATIVE_ACTS_DELETE - Право для удаления нормативных актов.
        - PERSONAL_DATA - Право на получение персональных данных.
        - ATTORNEYS - Право для группировки прав по МЧД.
        - ATTORNEYS_CREATE - Право на создание МЧД.
        - ATTORNEYS_UPDATE - Право на редактирование МЧД.
        - ATTORNEYS_SEND_TO_SIGNING - Право для отправки МЧД на подписание.
        - ATTORNEYS_IMPORT - Право на импорт МЧД.
        - ATTORNEYS_DELETE_OR_RESTORE - Право на удаление и восстановление МЧД.
        - UI_VIEW_EMPLOYEES_REGISTRY - Право на просмотр реестра сотрудников.
          Это право добавлено для упрощения разработки и ограничения просмотра страниц на UI. В дальнейшем оно будет
          заменено или удалено. Префикс UI_  добавлен, т.к. эти права используются только на UI и не используются на бэкенде
          и ни на какую логику не влияют.
        - UI_VIEW_CATALOGS - Право на просмотр справочников.
          Это право добавлено для упрощения разработки и ограничения просмотра страниц на UI. В дальнейшем оно будет
          заменено или удалено. Префикс UI_  добавлен, т.к. эти права используются только на UI и не используются на бэкенде
          и ни на какую логику не влияют.
        - CLIENT_USER_EMPLOYEE_ROLES - Право для группировки прав по ролям сотрудника пользователя клиента.
        - CLIENT_USER_EMPLOYEE_ROLES_UPDATE - Право на редактирование ролей пользователя клиента.
        - CALENDAR_CREATE - Право на создание календарей клиента.
        - CALENDAR_YEARS_EDIT - Право на редактирование годов календаря.
        - REPEAT_NOTIFICATION_SETTINGS - Право для группировки прав по настройкам повторных уведомлений.
        - REPEAT_NOTIFICATION_SETTINGS_UPDATE - Право для редактирования настроек повторных уведомлений.
        - ENTITY_RELATION - Право для группировки прав по связям между сущностями КЭДО.
        - ENTITY_RELATION_CREATE - Право на создание связей между сущностями КЭДО.
        - ENTITY_RELATION_DELETE - Право на удаление связей сущностей КЭДО.
        - SETTINGS_GENERAL - Право видеть раздел «Настройки».
        - SETTINGS_LICENSE_VIEW - Право просмотра информации о лицензиях.
        - SHOWCASE_EDIT - Право на редактирование витрины сервисов.
      type: string
      enum:
        - OWNER
        - CLIENT_USERS
        - CLIENT_USERS_CREATE
        - CLIENT_USERS_UPDATE
        - CLIENT_USERS_INVITE
        - EMPLOYEES
        - EMPLOYEES_CREATE
        - EMPLOYEES_UPDATE
        - EMPLOYEES_DISMISS
        - EMPLOYEES_RESTORE
        - EMPLOYEES_CREATE_QES_ISSUE
        - EMPLOYEES_CREATE_NQES_ISSUE
        - NQES_CHANNEL_CHANGE
        - ENABLE_SIGNING_THROUGH_PRR
        - ENABLE_SIGNING_THROUGH_GOV_KEY
        - DISABLE_SIGNING_THROUGH_PRR
        - ENABLE_VTB_SIGNING
        - DISABLE_VTB_SIGNING
        - EMPLOYEES_UPLOAD_CERTIFICATE
        - READ_PERMITTED_DOCUMENT_TYPES
        - UPDATE_PERMITTED_DOCUMENT_TYPES
        - READ_PERMITTED_CLIENT_DEPARTMENTS
        - UPDATE_PERMITTED_CLIENT_DEPARTMENTS
        - READ_PERMITTED_APPLICATION_TYPES
        - UPDATE_PERMITTED_APPLICATION_TYPES
        - VIEW_EMPLOYEE_NUMBER
        - EMPLOYEE_POSITIONS
        - EMPLOYEE_POSITIONS_CREATE
        - EMPLOYEE_POSITIONS_UPDATE
        - EMPLOYEE_POSITIONS_DELETE
        - LEGAL_ENTITIES
        - LEGAL_ENTITIES_CREATE
        - LEGAL_ENTITIES_UPDATE
        - DEPARTMENTS
        - DEPARTMENTS_CREATE
        - DEPARTMENTS_UPDATE
        - DEPARTMENTS_DELETE
        - DOCUMENTS
        - DOCUMENTS_CREATE
        - DOCUMENTS_CREATE_FOR_SOMEONE_ELSE
        - DOCUMENTS_UPDATE
        - DOCUMENTS_SEND_TO_SIGNING
        - DOCUMENTS_MULTIPLE_SEND_AND_SIGN
        - DOCUMENTS_SIGN_AS_HEAD_MANAGER
        - DOCUMENTS_DELETE
        - DOCUMENT_FILE
        - APPLICATION_GROUPS
        - APPLICATION_GROUPS_CREATE_FOR_SOMEONE_ELSE
        - APPLICATION_TYPES
        - APPLICATION_TYPES_UPDATE
        - APPLICATION_TYPES_CHANGE_ORDER
        - APPLICATION_TYPES_GET_TEMPLATE
        - DOCUMENT_TYPES
        - DOCUMENT_TYPES_CREATE
        - DOCUMENT_TYPES_UPDATE
        - BULK_DATA_SYNC_TASKS
        - BULK_DATA_SYNC_TASKS_CREATE
        - NORMATIVE_ACTS
        - NORMATIVE_ACTS_CREATE
        - NORMATIVE_ACTS_UPDATE
        - NORMATIVE_ACTS_SEND_TO_SIGNING
        - NORMATIVE_ACTS_DELETE
        - PERSONAL_DATA
        - ATTORNEYS
        - ATTORNEYS_CREATE
        - ATTORNEYS_UPDATE
        - ATTORNEYS_SEND_TO_SIGNING
        - ATTORNEYS_IMPORT
        - ATTORNEYS_DELETE_OR_RESTORE
        - UI_VIEW_EMPLOYEES_REGISTRY
        - UI_VIEW_CATALOGS
        - CLIENT_USER_EMPLOYEE_ROLES
        - CLIENT_USER_EMPLOYEE_ROLES_UPDATE
        - CALENDAR_CREATE
        - CALENDAR_YEARS_EDIT
        - REPEAT_NOTIFICATION_SETTINGS
        - REPEAT_NOTIFICATION_SETTINGS_UPDATE
        - ENTITY_RELATION
        - ENTITY_RELATION_CREATE
        - ENTITY_RELATION_DELETE
        - SETTINGS_GENERAL
        - SETTINGS_LICENSE_VIEW
        - SHOWCASE_EDIT
    EmployeePermission:
      description: |
        Права, которые могут быть добавлены в роль сотрудника.
        - HR - Право идентифицироваться кадровиком юрлица.
        - CLIENT_USERS - Право для группировки прав по пользователям клиента.
        - CLIENT_USERS_CREATE - Право для создания пользователя клиента.
        - CLIENT_USERS_UPDATE - Право для обновления пользователя клиента.
        - CLIENT_USERS_INVITE - Право для приглашения пользователя клиента.
        - EMPLOYEES - Право для группировки прав по сотрудникам.
        - EMPLOYEES_CREATE - Право для создания сотрудника.
        - EMPLOYEES_UPDATE - Право для обновления сотрудника.
        - EMPLOYEES_DISMISS - Право для увольнения сотрудника.
        - EMPLOYEES_RESTORE - Право для восстановления сотрудника.
        - EMPLOYEES_CREATE_QES_ISSUE - Право для создания заявки на выпуск УКЭП сотруднику.
        - EMPLOYEES_CREATE_NQES_ISSUE - Право для создания заявки на выпуск УНЭП сотруднику.
        - NQES_CHANNEL_CHANGE - Право для создания запроса на запуск процесса смены канала подписания УНЭП.
        - ENABLE_SIGNING_THROUGH_PRR - Право включать сотруднику возможность подписания документа с помощью ПРР.
        - ENABLE_SIGNING_THROUGH_GOV_KEY - Право включать сотруднику возможность подписания документа с помощью Госключа.
        - DISABLE_SIGNING_THROUGH_PRR - Право выключать сотруднику возможность подписания документа с помощью ПРР.
        - ENABLE_VTB_SIGNING - Право включать сотруднику возможность подписания с помощью ВТБ Онлайн.
        - DISABLE_VTB_SIGNING - Право отключать сотруднику возможность подписания с помощью ВТБ Онлайн.
        - EMPLOYEES_UPLOAD_CERTIFICATE - Право загружать сертификат сотрудника.
        - VIEW_EMPLOYEE_NUMBER - Право на просмотр табельного номера сотрудника.
        - EMPLOYEE_POSITIONS - Право для группировки прав по справочнику должностей сотрудника.
        - EMPLOYEE_POSITIONS_CREATE - Право для создания элементов в справочнике должностей сотрудника.
        - EMPLOYEE_POSITIONS_UPDATE - Право для обновления элементов в справочнике должностей сотрудника.
        - EMPLOYEE_POSITIONS_DELETE - Право для удаления элементов в справочнике должностей сотрудника.
        - LEGAL_ENTITIES - Право для группировки прав по юрлицам.
        - LEGAL_ENTITIES_UPDATE - Право для обновления юрлица.
        - DEPARTMENTS - Право для группировки прав по справочнику отделов клиента.
        - DEPARTMENTS_CREATE - Право для создания элементов в справочнике отделов клиента.
        - DEPARTMENTS_UPDATE - Право для обновления элементов в справочнике отделов клиента.
        - DEPARTMENTS_DELETE - Право для удаления элементов в справочнике отделов клиента.
        - DOCUMENTS - Право для группировки прав по документам.
        - DOCUMENTS_CREATE - Право для создания документов.
        - DOCUMENTS_CREATE_FOR_SOMEONE_ELSE - Право для создания документов за других пользователей.
        - DOCUMENTS_UPDATE - Право для обновления документов.
        - DOCUMENTS_SEND_TO_SIGNING - Право для отправки документов на подписание.
        - DOCUMENTS_MULTIPLE_SEND_AND_SIGN - Право для массового подписания документов с одновременной отправкой документов на подпись, если это необходимо.
        - DOCUMENTS_SIGN_AS_HEAD_MANAGER - Право подписывать документы за руководителя.
        - DOCUMENTS_DELETE - Право для удаления документов.
        - DOCUMENT_FILE - Право на файл документа.
        - HEAD_MANAGER - Право идентифицироваться руководителем юрлица.
        - APPLICATION_GROUPS - Право для группировки прав по группам заявлений сотрудника.
        - APPLICATION_GROUPS_CREATE_FOR_SOMEONE_ELSE - Право для создания группы заявлений сотрудника для других пользователей.
        - APPLICATIONS - Право для обработки заявлений сотрудника.
        - APPLICATION_TYPES - Право для группировки прав по типам заявлений.
        - APPLICATION_TYPES_UPDATE - Право для обновления типов заявлений.
        - APPLICATION_TYPES_GET_TEMPLATE - Право для получения файла шаблона типа заявления сотрудника.
        - BULK_DATA_SYNC_TASKS - Право для группировки прав по задачам массовой синхронизации данных.
        - BULK_DATA_SYNC_TASKS_CREATE - Право на создание задач массовой синхронизации данных.
        - NORMATIVE_ACTS - Право для группировки прав по нормативным актам.
        - NORMATIVE_ACTS_CREATE - Право для создания нормативных актов.
        - NORMATIVE_ACTS_UPDATE - Право для обновления нормативных актов.
        - NORMATIVE_ACTS_SEND_TO_SIGNING - Право для отправки нормативных актов на подписание сотрудникам.
        - NORMATIVE_ACTS_DELETE - Право для удаления нормативных актов.
        - PERSONAL_DATA - Право на получение персональных данных.
        - ATTORNEYS - Право для группировки прав по МЧД.
        - ATTORNEYS_CREATE - Право на создание МЧД.
        - ATTORNEYS_UPDATE - Право на редактирование МЧД.
        - ATTORNEYS_SEND_TO_SIGNING - Право для отправки МЧД на подписание.
        - ATTORNEYS_IMPORT - Право на импорт МЧД.
        - UI_VIEW_EMPLOYEES_REGISTRY - Право на просмотр реестра сотрудников.
          Это право добавлено для упрощения разработки и ограничения просмотра страниц на UI. В дальнейшем оно будет
          заменено или удалено. Префикс UI_  добавлен, т.к. эти права используются только на UI и не используются на бэкенде
          и ни на какую логику не влияют.
        - UI_VIEW_CATALOGS - Право на просмотр справочников.
          Это право добавлено для упрощения разработки и ограничения просмотра страниц на UI. В дальнейшем оно будет
          заменено или удалено. Префикс UI_  добавлен, т.к. эти права используются только на UI и не используются на бэкенде
          и ни на какую логику не влияют.
        - ENTITY_RELATION - Право для группировки прав по связям между сущностями КЭДО.
        - ENTITY_RELATION_CREATE - Право на создание связей между сущностями КЭДО.
        - ENTITY_RELATION_DELETE - Право на удаление связей сущностей КЭДО.
      type: string
      enum:
        - HR
        - CLIENT_USERS
        - CLIENT_USERS_CREATE
        - CLIENT_USERS_UPDATE
        - CLIENT_USERS_INVITE
        - EMPLOYEES
        - EMPLOYEES_CREATE
        - EMPLOYEES_UPDATE
        - EMPLOYEES_DISMISS
        - EMPLOYEES_RESTORE
        - EMPLOYEES_CREATE_QES_ISSUE
        - EMPLOYEES_CREATE_NQES_ISSUE
        - NQES_CHANNEL_CHANGE
        - ENABLE_SIGNING_THROUGH_PRR
        - ENABLE_SIGNING_THROUGH_GOV_KEY
        - DISABLE_SIGNING_THROUGH_PRR
        - ENABLE_VTB_SIGNING
        - DISABLE_VTB_SIGNING
        - EMPLOYEES_UPLOAD_CERTIFICATE
        - VIEW_EMPLOYEE_NUMBER
        - EMPLOYEE_POSITIONS
        - EMPLOYEE_POSITIONS_CREATE
        - EMPLOYEE_POSITIONS_UPDATE
        - LEGAL_ENTITIES
        - LEGAL_ENTITIES_UPDATE
        - DEPARTMENTS
        - DEPARTMENTS_CREATE
        - DEPARTMENTS_UPDATE
        - DEPARTMENTS_DELETE
        - DOCUMENTS
        - DOCUMENTS_CREATE
        - DOCUMENTS_CREATE_FOR_SOMEONE_ELSE
        - DOCUMENTS_UPDATE
        - DOCUMENTS_SEND_TO_SIGNING
        - DOCUMENTS_MULTIPLE_SEND_AND_SIGN
        - DOCUMENTS_SIGN_AS_HEAD_MANAGER
        - DOCUMENTS_DELETE
        - DOCUMENT_FILE
        - HEAD_MANAGER
        - APPLICATION_GROUPS
        - APPLICATION_GROUPS_CREATE_FOR_SOMEONE_ELSE
        - APPLICATIONS
        - APPLICATION_TYPES
        - APPLICATION_TYPES_UPDATE
        - APPLICATION_TYPES_GET_TEMPLATE
        - BULK_DATA_SYNC_TASKS
        - BULK_DATA_SYNC_TASKS_CREATE
        - NORMATIVE_ACTS
        - NORMATIVE_ACTS_CREATE
        - NORMATIVE_ACTS_UPDATE
        - NORMATIVE_ACTS_SEND_TO_SIGNING
        - NORMATIVE_ACTS_DELETE
        - PERSONAL_DATA
        - ATTORNEYS
        - ATTORNEYS_CREATE
        - ATTORNEYS_UPDATE
        - ATTORNEYS_SEND_TO_SIGNING
        - ATTORNEYS_IMPORT
        - UI_VIEW_EMPLOYEES_REGISTRY
        - UI_VIEW_CATALOGS
        - ENTITY_RELATION
        - ENTITY_RELATION_CREATE
        - ENTITY_RELATION_DELETE
    PermissionsDTO:
      description: Права, которыми обладает пользователь.
      type: object
      properties:
        canSendAndSignMultipleDocuments:
          description: Обладает ли правом массового подписания документов с отправкой документов на подписание, если это необходимо?
          type: boolean
        canUpdatePermittedClientDepartments:
          description: Обладает ли правом изменения доступных сотрудникам отделов клиента?
          type: boolean
        canUpdatePermittedDocumentTypes:
          description: Обладает ли правом изменения доступных сотрудникам типов документов?
          type: boolean
        canSeeDocuments:
          description: Обладает ли правом просматривать документы?
          type: boolean
        canGoToBusinessJourneys:
          description: Обладает ли правом переходить в сервисы командировок?
          type: boolean
        headManager:
          description: Обладает ли правом руководителя?
          type: boolean
        canChangeEmployeeRole:
          description: Обладает ли правом смены роли сотрудников?
          type: boolean
        canSeeApplicationTypes:
          description: Обладает ли правом просматривать типы заявлений?
          type: boolean
        canUpdateApplicationTypes:
          description: Обладает ли правом изменения типов заявлений?
          type: boolean
        clientUserPermissions:
          description: Множество прав, которыми обладает пользователь клиента.
          type: array
          items:
            $ref: '#/components/schemas/ClientUserPermission'
        employeePermissions:
          description: Множество прав, которыми обладает пользователь клиента.
          type: array
          items:
            $ref: '#/components/schemas/EmployeePermission'
    BaseNqesIssueTaskDTO:
      description: Основные данные задачи на выпуск УНЭП.
      type: object
      allOf:
        - properties:
            id:
              description: Идентификатор задачи.
              type: string
              format: uuid
        - properties:
            currentState:
              description: Текущее состояние задачи.
              type: string
            personIdentificationType:
              description: Тип идентификации человека.
              type: string
            confirmationChannelType:
              description: Тип канала подтверждения подписания в заявке на выпуск УНЭП.
              type: string
            confirmationChannel:
              description: Канал подтверждения подписания в заявке на выпуск УНЭП (телефон/email).
              type: string
    EkdPersonDocumentDto:
      description: Документ человека.
      type: object
      required:
        - type
        - number
      properties:
        id:
          description: Идентификатор документа.
          type: string
          format: uuid
        version:
          description: Версия данных.
          type: integer
          format: int64
        type:
          $ref: '#/components/schemas/PersonDocumentType'
        serialNumber:
          description: Серия документа.
          type: string
          x-nullable: true
        number:
          description: Номер документа.
          type: string
      additionalProperties:
        description: Дополнительные данные документа.
    RegistryType:
      type: string
      description: Тип реестра.
      enum:
        - HR_DOCUMENTS
        - EMPLOYEE_DOCUMENTS
      x-enumDescriptions:
        HR_DOCUMENTS: Реестр кадровика.
        EMPLOYEE_DOCUMENTS: Реестр сотрудника.
    RegistryColumnType:
      type: string
      description: Тип колонки реестра.
      enum:
        - STATE
        - NUMBER
        - TYPE
        - DATE
        - DEADLINE
        - EMPLOYEE
        - EMPLOYEE_ATTRIBUTES
        - EMPLOYER
        - LEGAL_ENTITY
        - HR
        - UPLOADED
        - PARTICIPANT
      x-enumDescriptions:
        STATE: Статус документа.
        NUMBER: Номер документа.
        TYPE: Тип документа.
        DATE: Дата документа.
        DEADLINE: Срок подписания.
        EMPLOYEE: Сотрудник, к которому относится документ.
        EMPLOYEE_ATTRIBUTES: Признаки сотрудника (доступно только для HR_DOCUMENTS).
        EMPLOYER: Руководитель.
        LEGAL_ENTITY: Юридическое лицо.
        HR: Ответственный кадровый специалист.
        UPLOADED: Признак загруженности документа.
        PARTICIPANT: Участник документа (доступно только для EMPLOYEE_DOCUMENTS).
    ColumnSettingsDto:
      type: object
      description: Настройки отдельной колонки реестра.
      properties:
        type:
          $ref: '#/components/schemas/RegistryColumnType'
          description: Тип колонки реестра.
        mandatory:
          type: boolean
          description: Является ли колонка обязательной.
        visible:
          type: boolean
          description: Отображается ли колонка в реестре.
      required:
        - type
        - mandatory
        - visible
    RegistrySettingsDTO:
      type: object
      description: Настройки реестра, включая тип и параметры отображаемых колонок.
      properties:
        type:
          $ref: '#/components/schemas/RegistryType'
          description: Тип реестра.
        columnSettings:
          type: array
          description: Настройки колонок реестра.
          items:
            $ref: '#/components/schemas/ColumnSettingsDto'
      required:
        - type
        - columnSettings
    UserLifeTimeGroupType:
      description: |
        Группа, к которой относится пользователь по сроку жизни.
        - `LET1M` - До 1 месяца.
        - `GT1MLET6M` - От 1 до 6 месяцев.
        - `GT6MLET12M` - От 6 месяцев до года.
        - `GT1YLET3Y` - Более 1 года.
        - `GT3Y` - Более 3 лет.
      type: string
      enum:
        - LET1M
        - GT1MLET6M
        - GT6MLET12M
        - GT1YLET3Y
        - GT3Y
    CurrentUserDTO:
      description: Данные текущего пользователя.
      type: object
      properties:
        id:
          description: ID пользователя.
          type: string
          format: uuid
        uin:
          description: Отформатированный цифровой идентификатор пользователя. Формат "XXX-XXX-XXX".
          type: string
        email:
          description: Email пользователя.
          type: string
        lastName:
          description: Фамилия.
          type: string
        firstName:
          description: Имя.
          type: string
        patronymic:
          description: Отчество.
          type: string
        clients:
          description: Данные о клиентах пользователя.
          type: array
          items:
            type: object
            properties:
              id:
                description: Идентификатор клиента.
                type: string
                format: uuid
              name:
                description: Название клиента.
                type: string
        clientUserIds:
          description: Данные о ID пользователей клиента пользователя.
          type: array
          items:
            type: string
            format: uuid
        clientUsers:
          description: Список данных пользователей клиента пользователя с данным о юрлицах, где пользователь является руководителем.
          type: array
          items:
            $ref: '#/components/schemas/ClientUserWithTopManagerLegalEntitiesDTO'
        employees:
          description: Список сотрудников, которыми является текущий пользователь.
          type: array
          items:
            $ref: '#/components/schemas/CurrentUserEmployeeDTO'
        certificates:
          description: Сертификаты пользователя.
          type: array
          items:
            $ref: '#/components/schemas/UserCertificateDTO'
        notificationChannels:
          description: Каналы оповещения сотрудника.
          type: array
          items:
            $ref: '#/components/schemas/EkdNotificationChannelDto'
        prrSigningEnabled:
          description: Подписание документа с помощью ПРР включено?
          type: boolean
        govKeySigningEnabled:
          description: Подписание документа с помощью Госключа включено?
          type: boolean
        qesSigningEnabled:
          description: Подписание документа с помощью УКЭП включено?
          type: boolean
        permissions:
          $ref: '#/components/schemas/PermissionsDTO'
        hr:
          description: Пользователь является кадровиком?
          type: boolean
        lastNqesIssuing:
          $ref: '#/components/schemas/BaseNqesIssueTaskDTO'
        lastSuccessfullyFinishedNqesIssuing:
          $ref: '#/components/schemas/BaseNqesIssueTaskDTO'
        personalDocuments:
          description: Документы текущего пользователя.
          type: array
          items:
            $ref: '#/components/schemas/EkdPersonDocumentDto'
        lastNqesChannelChangeRequest:
          $ref: '#/components/schemas/LastNqesChannelChangeRequest'
        timeZone:
          description: Часовой пояс пользователя в минутах от -720 до 720.
          type: integer
        birthdate:
          description: Дата рождения.
          type: string
          format: date
        substitutions:
          $ref: '#/components/schemas/ClientUserSubstitutionsDto'
        avatarAvailable:
          description: Аватарка доступна текущему пользователю?
          type: boolean
        functionalManager:
          description: Пользователь является управленческим руководителем?
          type: boolean
        selfDepartmentManager:
          description: Пользователь является своим же руководителем по иерархии отделов?
          type: boolean
        isSubstitutionAllowed:
          description: Раздел Заместители доступен для отображения?
          type: boolean
        uiAppModeSwitchNameKey:
          description: Ключ роли для переключателя режимов тенанта на UI.
          type:
            - string
            - 'null'
        registrySettings:
          type: array
          description: Настройки реестров.
          items:
            $ref: '#/components/schemas/RegistrySettingsDTO'
        lifeTimeGroup:
          $ref: '#/components/schemas/UserLifeTimeGroupType'
    PersonalDataInfoDto:
      description: Персональные данные текущего пользователя.
      type: object
      required:
        - id
        - lifeTimeGroup
      properties:
        id:
          description: ID пользователя.
          type: string
          format: uuid
        uin:
          description: Отформатированный цифровой идентификатор пользователя в формате `XXX-XXX-XXX`.
          type: string
        email:
          description: Email пользователя.
          type: string
        lastName:
          description: Фамилия.
          type: string
        firstName:
          description: Имя.
          type: string
        patronymic:
          description: Отчество.
          type: string
        notificationChannels:
          description: Каналы оповещения сотрудника.
          type: array
          items:
            $ref: '#/components/schemas/EkdNotificationChannelDto'
        personalDocuments:
          description: Документы текущего пользователя.
          type: array
          items:
            $ref: '#/components/schemas/EkdPersonDocumentDto'
        timeZone:
          description: Часовой пояс пользователя в минутах от -720 до 720.
          type: integer
          minimum: -720
          maximum: 720
        birthdate:
          description: Дата рождения.
          type: string
          format: date
        avatarAvailable:
          description: Аватарка доступна текущему пользователю.
          type: boolean
        lifeTimeGroup:
          description: Группа пользователя по сроку жизни.
          $ref: '#/components/schemas/UserLifeTimeGroupType'
    ClientInfoDto:
      description: Данные клиента.
      type: object
      properties:
        id:
          description: ID клиента.
          type: string
          format: uuid
        name:
          description: Название клиента.
          type: string
        urlKey:
          description: Ключ URL клиента для формирования URL-адресов пространства. Может быть не заполнен только у одного клиента.
          type: string
          x-nullable: true
        isDefaultAfterLogin:
          description: Клиент дефолтный при авторизации. Дефолтным становится самый старый клиент пользователя.
          type: boolean
        isFirstForTenant:
          description: Клиент первый для тенанта.
          type: boolean
    DepartmentInfoDto:
      description: Данные отдела клиента, отдаваемые в данных текущего пользователя.
      type: object
      properties:
        id:
          description: ID отдела.
          type: string
          format: uuid
        name:
          description: Название отдела.
          type: string
        headManagerEmployee:
          description: Руководитель отдела.
          $ref: '#/components/schemas/EmployeeShortInfoWithNumberDTO'
        active:
          description: Отдел активен.
          type: boolean
          x-nullable: true
    CurrentUserEmployeeInfoDto:
      description: Данные сотрудника, отдаваемые в составе данных текущего пользователя.
      type: object
      required:
        - subordinateDepartments
        - roles
      properties:
        id:
          description: ID сотрудника.
          type: string
          format: uuid
        legalEntity:
          description: Юрлицо, к которому относится сотрудник.
          $ref: '#/components/schemas/CurrentUserLegalEntityDTO'
        position:
          description: Должность сотрудника.
          $ref: '#/components/schemas/CurrentUserEmployeePositionDTO'
        number:
          description: Табельный номер сотрудника.
          type: string
          x-nullable: true
        department:
          description: Отдел клиента, к которому относится сотрудник.
          $ref: '#/components/schemas/DepartmentInfoDto'
        dismissedDate:
          description: Дата увольнения сотрудника.
          type: string
          format: date
        availableVacationDayCount:
          description: Количество доступных дней отпуска.
          type: number
        availableVacationDayCountsByType:
          description: Доступные сотруднику дни отпуска по типам.
          type: array
          items:
            $ref: '#/components/schemas/AvailableVacationDaysByTypeData'
        subordinateDepartments:
          description: Отделы, в которых сотрудник является руководителем.
          type: array
          items:
            type: object
            properties:
              id:
                description: ID отдела.
                type: string
                format: uuid
              name:
                description: Название отдела.
                type: string
        customStructureElements:
          description: Элементы пользовательских структур.
          type: array
          items:
            $ref: '#/components/schemas/CustomStructureElementDTO'
          x-nullable: true
        isMainWorkplace:
          description: Текущее место трудоустройства — основное место работы.
          type: boolean
        fullTimeEquivalent:
          description: Ставка сотрудника — доля от полной занятости (FTE).
          type: string
          x-nullable: true
        functionalManagerEmployee:
          description: Управленческий руководитель сотрудника.
          $ref: '#/components/schemas/EmployeeShortInfoDTO'
          x-nullable: true
        prrSigningEnabled:
          description: Возможность подписания через ПРР. `true` — включена, `false` — отключена, `null` — сотрудник не проходил первоначальную настройку.
          type: boolean
          x-nullable: true
        calendar:
          description: Календарь, на основании которого сформирован график работы сотрудника.
          type: object
          properties:
            id:
              description: ID календаря.
              type: string
              format: uuid
          x-nullable: true
        roles:
          description: Роли сотрудника.
          type: array
          items:
            $ref: '#/components/schemas/EmployeeRoleDTO'
    ClientUserInfoDto:
      description: Данные пользователя клиента.
      type: object
      required:
        - roles
        - registrySettings
      properties:
        id:
          description: ID пользователя клиента.
          type: string
          format: uuid
        externalId:
          description: ID пользователя клиента во внешней системе.
          type: string
        client:
          description: Данные клиента, к которому относится пользователь.
          $ref: '#/components/schemas/ClientInfoDto'
        myLegalEntities:
          description: Юрлица, в которых пользователь является руководителем.
          type: array
          items:
            $ref: '#/components/schemas/BaseLegalEntityWithRequisitesAndIdDTO'
        attorneys:
          description: МЧД с сокращёнными данными доверителя.
          type: array
          items:
            $ref: '#/components/schemas/AttorneysWithShortPrincipalDTO'
        roles:
          description: Роли пользователя клиента.
          type: array
          items:
            $ref: '#/components/schemas/UserRoleDto'
        employees:
          description: Сотрудники, которыми является текущий пользователь.
          type: array
          items:
            $ref: '#/components/schemas/CurrentUserEmployeeInfoDto'
        substitutions:
          description: Актуальные замещения, ассоциированные с пользователем.
          $ref: '#/components/schemas/ClientUserSubstitutionsDto'
        functionalManager:
          description: Пользователь является управленческим руководителем. `true`, если хотя бы один не уволенный сотрудник пользователя указан как управленческий руководитель другого не уволенного сотрудника.
          type: boolean
        selfDepartmentManager:
          description: Пользователь является своим же руководителем по иерархии отделов. `true`, если хотя бы один не уволенный сотрудник находится в отделе, в котором один из активных сотрудников пользователя является руководителем.
          type: boolean
        registrySettings:
          description: Настройки реестров.
          type: array
          items:
            $ref: '#/components/schemas/RegistrySettingsDTO'
        isSubstitutionAllowed:
          description: Отображать ли кнопку «Заместители» в UI.
          type: boolean
        uiAppModeSwitchNameKey:
          description: Ключ роли для переключателя режимов портала в UI.
          type: string
          x-nullable: true
    DigitalSignatureDataInfoDto:
      description: Данные о цифровых подписях пользователя.
      type: object
      properties:
        certificates:
          description: Сертификаты пользователя.
          type: array
          items:
            $ref: '#/components/schemas/UserCertificateDTO'
        govKeySigningEnabled:
          description: Подписание документа через Госключ включено.
          type: boolean
        qesSigningEnabled:
          description: Подписание документа через УКЭП включено.
          type: boolean
        lastNqesIssuing:
          description: Последняя задача на выпуск УНЭП.
          $ref: '#/components/schemas/BaseNqesIssueTaskDTO'
        lastSuccessfullyFinishedNqesIssuing:
          description: Последняя успешно завершённая задача на выпуск УНЭП.
          $ref: '#/components/schemas/BaseNqesIssueTaskDTO'
        lastNqesChannelChangeRequest:
          description: Последний запрос на смену канала подписания УНЭП.
          $ref: '#/components/schemas/LastNqesChannelChangeRequest'
    ClientUserPermissionsInfoDto:
      description: Права, которыми обладает пользователь клиента.
      type: object
      required:
        - clientUserId
        - permissions
      properties:
        clientUserId:
          description: ID пользователя клиента.
          type: string
          format: uuid
        permissions:
          description: Множество прав пользователя клиента.
          type: array
          items:
            $ref: '#/components/schemas/ClientUserPermission'
          uniqueItems: true
    EmployeePermissionsInfoDto:
      description: Права, которыми обладает сотрудник.
      type: object
      required:
        - employeeId
      properties:
        employeeId:
          description: ID сотрудника.
          type: string
          format: uuid
        legalEntityId:
          description: ID юрлица.
          type: string
          format: uuid
          x-nullable: true
        permissions:
          description: Множество прав сотрудника.
          type: array
          items:
            $ref: '#/components/schemas/EmployeePermission'
          uniqueItems: true
    ClientUserEmployeePermissionsInfoDto:
      description: Права, которыми обладают сотрудники пользователя клиента.
      type: object
      required:
        - clientUserId
        - legalEntityIds
        - permissions
      properties:
        clientUserId:
          description: ID пользователя клиента.
          type: string
          format: uuid
        legalEntityIds:
          description: ID юрлиц.
          type: array
          items:
            type: string
            format: uuid
        permissions:
          description: Множество прав, которыми обладают сотрудники пользователя клиента.
          type: array
          items:
            $ref: '#/components/schemas/EmployeePermission'
          uniqueItems: true
    ClientPermissionsInfoDto:
      description: Права пользователя клиента и его сотрудников.
      type: object
      required:
        - clientId
        - clientUserPermissions
        - employeePermissions
        - clientUserEmployeePermissions
      properties:
        clientId:
          description: ID клиента.
          type: string
          format: uuid
        clientUserPermissions:
          description: Права пользователя клиента.
          $ref: '#/components/schemas/ClientUserPermissionsInfoDto'
        employeePermissions:
          description: Права сотрудников.
          type: array
          items:
            $ref: '#/components/schemas/EmployeePermissionsInfoDto'
        clientUserEmployeePermissions:
          description: Права сотрудников пользователя клиента.
          $ref: '#/components/schemas/ClientUserEmployeePermissionsInfoDto'
    PermissionsInfoDto:
      description: Права, которыми обладает пользователь.
      type: object
      required:
        - userPermissions
        - clientPermissions
      properties:
        userPermissions:
          description: Права для администратора системы.
          type: array
          items:
            type: string
        clientPermissions:
          description: Права пользователя клиента в разрезе клиентов.
          type: array
          items:
            $ref: '#/components/schemas/ClientPermissionsInfoDto'
    CurrentUserV2Dto:
      description: 'Данные текущего пользователя (версия 2): персональные данные, пользователи клиента, цифровые подписи и права.'
      type: object
      required:
        - personalData
        - clientUsers
        - digitalSignatureData
        - permissions
      properties:
        personalData:
          description: Персональные данные текущего пользователя.
          $ref: '#/components/schemas/PersonalDataInfoDto'
        clientUsers:
          description: Пользователи клиента, относящиеся к текущему пользователю.
          type: array
          items:
            $ref: '#/components/schemas/ClientUserInfoDto'
        digitalSignatureData:
          description: Данные о цифровых подписях пользователя.
          $ref: '#/components/schemas/DigitalSignatureDataInfoDto'
        permissions:
          description: Права, которыми обладает пользователь.
          $ref: '#/components/schemas/PermissionsInfoDto'
    VacationsFilterDTO:
      description: Данные фильтрации отпусков сотрудников.
      type: object
      properties:
        employeeIds:
          description: Список ID сотрудников.
          type: array
          items:
            type: string
            format: uuid
          x-nullable: true
        departmentIds:
          description: Список ID отделов сотрудников.
          type: array
          items:
            type: string
            format: uuid
          x-nullable: true
        year:
          description: Год, на который запланированы отпуска.
          type: integer
          example: 2025
        month:
          description: Месяц, на который запланированы отпуска.
          type: integer
          minimum: 1
          maximum: 12
          x-nullable: true
      required:
        - year
    VacationRegistryFilterDTO:
      description: Данные фильтрации реестра отпусков сотрудников.
      type: object
      allOf:
        - $ref: '#/components/schemas/VacationsFilterDTO'
        - properties:
            onlyWithoutVacations:
              description: Получить информацию только по сотрудникам, у которых нет запланированных отпусков.
              type: boolean
            limit:
              description: Количество записей, которые необходимо вернуть.
              type: integer
            offset:
              description: Смещение от начала списка.
              type: integer
    ClientUserWithExternalIdDTO:
      description: Информация о пользователе клиента с внешним ID.
      type: object
      properties:
        id:
          description: Идентификатор пользователя клиента.
          type: string
          format: uuid
        externalId:
          description: Идентификатор пользователя во внешней системе клиента.
          type: string
          x-nullable: true
        userId:
          description: Идентификатор пользователя системы.
          type: string
          format: uuid
    PlannedVacationDTO:
      description: Данные запланированного отпуска.
      type: object
      properties:
        id:
          description: Идентификатор отпуска.
          type: string
          format: uuid
        startDate:
          description: Дата начала отпуска.
          type: string
          format: date
          example: '2020-01-01'
        endDate:
          description: Дата окончания отпуска.
          type: string
          format: date
          example: '2020-01-01'
        type:
          $ref: '#/components/schemas/VacationType'
        approvedDate:
          description: Момент времени, когда отпуск был согласован.
          type: string
          format: date-time
          example: '2023-01-01T10:30:00Z'
          x-nullable: true
      required:
        - startDate
        - endDate
        - type
    AnnualVacationDTO:
      description: Данные отпусков в разрезе года.
      type: object
      properties:
        year:
          description: Год, на который должны быть запланированы отпуска.
          type: integer
        mainVacationDayCount:
          description: Количество дней основного отпуска для планирования.
          type: integer
        additionalVacationDayCount:
          description: Количество дней дополнительного отпуска для планирования.
          type: integer
        calendarId:
          description: Идентификатор календаря, на основании которого формируется отпуск.
          type: string
          format: uuid
        plannedVacations:
          description: Запланированные на год отпуска.
          type: array
          items:
            $ref: '#/components/schemas/PlannedVacationDTO'
    EmployeeWithVacationsDTO:
      description: Данные о сотруднике с отпусками.
      type: object
      allOf:
        - $ref: '#/components/schemas/EmployeeShortInfoDTO'
        - properties:
            clientUser:
              $ref: '#/components/schemas/ClientUserWithExternalIdDTO'
            annualVacations:
              description: Данные отпусков в разрезе года.
              $ref: '#/components/schemas/AnnualVacationDTO'
              x-nullable: true
    CreateVacationTypeDto:
      description: Данные создания/обновления типа отпусков.
      type: object
      properties:
        externalId:
          description: ID типа отпуска во внешней системе.
          type: string
        name:
          description: Имя типа отпуска.
          type: string
          maxLength: 250
          minLength: 1
      required:
        - externalId
        - name
    CreateVacationTypesRequestDto:
      description: Данные создания/обновления типов отпусков.
      type: object
      properties:
        vacationTypes:
          description: Список данных создания/обновления типов отпусков.
          type: array
          items:
            $ref: '#/components/schemas/CreateVacationTypeDto'
      required:
        - vacationTypes
    ActiveUserApiTokenResponseDTO:
      description: |
        Данные активного пользовательского API токена, которые возвращаются в ответ на запрос.
        Заметьте, что значение самого токена не возвращается в ответ. Значение токена возвращается только один раз при его создании.
      type: object
      properties:
        id:
          description: ID токена.
          type: string
          format: uuid
        expiresDate:
          description: Момент, когда токен истекает.
          type: string
          format: date-time
        disabledDate:
          description: Момент, когда токен был отключён.
          type: string
          format: date-time
        version:
          description: Версия данных токена.
          type: integer
          format: int64
    FileDTO:
      description: Данные файла.
      type: object
      properties:
        id:
          description: ID файла.
          type: string
          format: uuid
        creatorId:
          description: ID пользователя, загрузившего файл.
          type: string
          format: uuid
        name:
          description: Название файла с расширением.
          type: string
        createdDate:
          description: Момент времени, когда файл был загружен.
          type: string
          format: date-time
  responses:
    BadRequest:
      description: Ошибка при валидации данных запроса.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
    Unauthorized:
      description: Запрос не аутенифицирован.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
    Forbidden:
      description: Для заданного пользователя доступ к ресурсу запрещен.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
    TooManyRequests:
      description: Превышен разрешенный лимит запросов за период.
      content:
        text/html: {}
x-tagGroups:
  - name: Текущий контекст
    tags:
      - currentUser
      - apiToken
  - name: Интеграция данных
    tags:
      - bulkDataSync
      - import
      - export
  - name: Организационная структура
    tags:
      - legalEntities
      - departments
      - positions
      - customStructures
  - name: Пользователи и сотрудники
    tags:
      - users
      - employees
      - substitutions
      - nqesIssuing
  - name: Документы
    tags:
      - documents
      - documentGroups
      - documentSigning
      - documentBulkSigning
      - documentAnnulation
      - documentTypes
      - documentComments
  - name: Заявления
    tags:
      - applications
      - applicationSigning
      - applicationTypes
      - applicationComments
  - name: Локальные нормативные акты (ЛНА)
    tags:
      - normativeActs
      - normativeActsSigning
  - name: Доверенности (МЧД)
    tags:
      - attorneys
      - attorneysSigning
  - name: График отпусков
    tags:
      - vacationSchedule
      - vacationTypes
  - name: Маршруты и календари
    tags:
      - routeTemplates
      - productionCalendar
      - mintrud
  - name: Файлы
    tags:
      - files
  - name: HRlink PRO
    tags:
      - news
