Перейти к основному содержимому

Импортировать узлы из другой оргструктуры

POST 

/api/v1/clients/:clientId/orgStructures/:id/importElements

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

Копирует выбранные пользователем узлы из другой оргструктуры клиента (включая Юридическую) в target-оргструктуру, заданную в пути. Допускается self-import (sourceStructureId равен IDidВнутренний идентификатор сущности в формате UUID, генерируемый HRlink при создании. Неизменяемый, используется во всех внутренних операциях. target-оргструктуры) — узлы копируются в ту же структуру с новыми UUID.

sourceElementIds — плоский список конкретных узлов выборки (например, чекбоксы в UI). Иерархия среди выбранных восстанавливается в target: если прямой родитель выбран — потомок ложится под него; если не выбран — поднимаемся вверх по предкам source до ближайшего выбранного предка; если выбранных предков нет — узел становится корнем выборки и ложится под targetParentId. «Дыры» в выборке (промежуточные невыбранные узлы) допустимы — иерархия схлопывается.

Все импортированные узлы получают новые UUID; externalId у всех — null. Для source — Юридической оргструктуры все узлы создаются как DEPARTMENT; для обычной source тип узла сохраняется 1:1.

Фильтрация сотрудников по активности зависит от роли: HEAD_MANAGER копируется независимо от активности (включая уволенных) — иначе EMPLOYEE_AS_NODE-узел остался бы пустым, а отдел потерял бы исторического руководителя; EMPLOYEE (подчинённый) копируется только если сотрудник активен.

Источник в статусе ARCHIVED (для не-Юридической) отклоняется — допустимые статусы source: DRAFT и PUBLISHED; Юридическая семантически всегда доступна для импорта.

Возвращает обновлённые метаданные target-структуры и затронутые узлы: импортированные узлы (с пересчитанными счётчиками поддерева) плюс цепочка предков targetParentId до корня (если targetParentId задан). IDidВнутренний идентификатор сущности в формате UUID, генерируемый HRlink при создании. Неизменяемый, используется во всех внутренних операциях. всех импортированных узлов возвращаются в createdElementIds.

Имена узлов при импорте не проверяются на уникальность — допустимо появление узла с тем же именем, что и у соседа. Перенос узла внутри структуры выполняется через отдельный метод перемещения узла — self-import предназначен именно для копирования, без удаления исходника.

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

  • Тело запроса задано; sourceStructureId задан; sourceElementIds не пуст, элементы не null.

  • IDidВнутренний идентификатор сущности в формате UUID, генерируемый HRlink при создании. Неизменяемый, используется во всех внутренних операциях. клиента соответствует формату UUID; клиент существует, не удалён, к нему относится пользователь, выполняющий операцию.

  • У пользователя клиента есть право ORG_STRUCTURES_UPDATE.

  • IDidВнутренний идентификатор сущности в формате UUID, генерируемый HRlink при создании. Неизменяемый, используется во всех внутренних операциях. target-оргструктуры (path) соответствует формату UUID; структура существует, принадлежит клиенту, не является Юридической, находится в статусе DRAFT.

  • Если version задана — совпадает с актуальной версией target-оргструктуры в БД.

  • Режим редактирования target-оргструктуры свободен либо захвачен инициатором операции.

  • sourceStructureId, если не Юридическая, — существует и принадлежит клиенту (допускается равенство с IDidВнутренний идентификатор сущности в формате UUID, генерируемый HRlink при создании. Неизменяемый, используется во всех внутренних операциях. target — self-import); статус source не ARCHIVED.

  • Все sourceElementIds принадлежат source-структуре (для Юридической — присутствуют среди отделов клиента либо равны синтетическому узлу «Сотрудники без отдела»).

  • Если targetParentId задан — узел существует и относится к target-структуре.

  • После импорта итоговое количество узлов target-структуры не превышает лимит (по умолчанию 20 000).

  • Функционал оргструктур включён в настройках клиента.

Request

Responses

Успешная операция.