PUT /api/spaces/:id/role-mapping — Задать сопоставление ролей
Сгенерировано из матриц + кода. Правки вносить в источники (
docs/matrices/,server/routes/), не здесь.
| Поле | Значение |
|---|---|
| HTTP | PUT /api/spaces/:id/role-mapping |
| Auth | requireSpacemanOrOrgAdmin — requireSpacemanOrOrgAdmin |
| Scope токена | read_write |
| PG-функции | api.upsert_space_role_mapping |
| Таблицы | — |
| SRM | — (вне SRM, документировано по коду) |
| RP (права) | — |
| Файл роута | server/routes/spaces.js |
| Статус | по коду (вне SRM) |
Аргументы запроса (best-effort из хендлера; путь-параметры опущены):
| Аргумент | Где | Обяз. | Заметка |
|---|---|---|---|
source | body | подтвердить | |
target | body | подтвердить |
Коды ответов/ошибок (из хендлера): 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):
| Поле | Тип | Обяз. | Назначение |
|---|---|---|---|
source | string | да | id исходной специализации спейса |
target | string | да | 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. Текущий набор правил после изменения — сопоставление ролей.