Импортировать узлы из другой оргструктуры
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
- 200
- 400
- 401
- 403
- 429
Успешная операция.
Ошибка при валидации данных запроса.
Запрос не аутенифицирован.
Для заданного пользователя доступ к ресурсу запрещен.
Превышен разрешенный лимит запросов за период.