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

PUT /api/spaces/:id/role-mapping — Задать сопоставление ролей

Сгенерировано из матриц + кода. Правки вносить в источники (docs/matrices/, server/routes/), не здесь.

ПолеЗначение
HTTPPUT /api/spaces/:id/role-mapping
AuthrequireSpacemanOrOrgAdmin — requireSpacemanOrOrgAdmin
Scope токенаread_write
PG-функцииapi.upsert_space_role_mapping
Таблицы
SRM— (вне SRM, документировано по коду)
RP (права)
Файл роутаserver/routes/spaces.js
Статуспо коду (вне SRM)

Аргументы запроса (best-effort из хендлера; путь-параметры опущены):

АргументГдеОбяз.Заметка
sourcebodyподтвердить
targetbodyподтвердить

Коды ответов/ошибок (из хендлера): 400 (+ 200) — уточнить причины вручную

Для человека

Как открыть: вкладка «Спейсы» → откройте спейс → «Настройки спейса» → раздел «Специализации» → откройте специализацию на редактирование → справа от названия выберите в выпадающем списке, на какую другую специализацию её замапить → сохраните.

Задаёт одно правило сопоставления ролей: «специализация-источник в этом спейсе играет роль специализации-цели». Метод работает как upsert по источнику: если правило для этого источника уже было — оно перезаписывается новой целью, если не было — создаётся. Сопоставление действует только в пределах этого спейса и подхватывается при генерации проектов. Чтобы убрать правило, очистите выбор — это удаление сопоставления.

Кто может. Только менеджер спейса (спейсмен) и администратор организации (RP-158). Сотрудник и наблюдатель сопоставление не меняют.

Для агента

Запись — нужен токен со scope read_write (см. Конвенции). Изменить сопоставление сможет только токен спейсмена этого спейса или org_admin его организации; иначе requireSpacemanOrOrgAdmin вернёт 403. Путь в write-allowlist agent-gate как SPACE_ROLEMAP_UPSERT (server/auth/agentGate.js).

Путь-параметр: :id — UUID спейса.

Тело запроса (JSON):

ПолеТипОбяз.Назначение
sourcestringдаid исходной специализации спейса
targetstringдаid целевой специализации, на которую мапим

Оба поля обязательны: без любого — 400 ({"error":"source и target обязательны"}). Идентификаторы специализаций — из списка специализаций спейса. Метод upsert: повторный вызов с тем же source и новым target переписывает цель, дубликата не создаёт.

Пример запроса:

Окно терминала
curl -X PUT https://specbuilder.vnimanie.ai/api/spaces/f9e8d7c6-.../role-mapping \
-H "Authorization: Bearer tak_..." \
-H "Content-Type: application/json" \
-d '{"source":"MLOPS_ENGINEER","target":"BACKEND_ENGINEER"}'

Ответ 200:

{ "ok": true }

Ответ — всегда JSON ({ ok: true }), без Markdown-зеркала и ETag. Текущий набор правил после изменения — сопоставление ролей.

Связанные