POST /api/admin/roles — Создать справочную роль
Сгенерировано из матриц + кода. Правки вносить в источники (
docs/matrices/,server/routes/), не здесь.
| Поле | Значение |
|---|---|
| HTTP | POST /api/admin/roles |
| Auth | requireSiteAdmin — только site-admin |
| Scope токена | read_write |
| PG-функции | api.upsert_template_role |
| Таблицы | — |
| SRM | — (вне SRM, документировано по коду) |
| RP (права) | — |
| Файл роута | server/routes/admin.js |
| Статус | по коду (вне SRM) |
Аргументы запроса (best-effort из хендлера; путь-параметры опущены):
| Аргумент | Где | Обяз. | Заметка |
|---|---|---|---|
border | body | подтвердить | |
color | body | подтвердить | |
description | body | подтвердить | |
id | body | подтвердить | |
light | body | подтвердить | |
name | body | подтвердить | |
sort_order | body | подтвердить |
Коды ответов/ошибок (из хендлера): 201, 400, 500 (+ 200) — уточнить причины вручную
Для человека
Как открыть: войдите как site-admin (TOTP, см. Вход в Admin Panel) → Admin Panel → раздел справочника платформы → добавьте справочную роль и сохраните.
Заводит новую эталонную роль-исполнителя в глобальном справочнике (например, новую специальность). У роли задаются имя, три цвета оформления (заливка, светлый фон, контур — ими роль подсвечивается на графе), описание и порядок сортировки.
Это не системная роль доступа (employee, org_admin и т. п. — те фиксированы в коде и здесь не создаются), а профессиональная роль, которую можно назначать блокам. Операция — upsert: указали существующий id — поля перезапишутся.
Кто может. Только site-admin. Справочник один на платформу, новая роль становится доступна во всех организациях.
Для агента
Токену недоступно ни на каком scope. Site-admin-операция: requireSiteAdmin + блокировка /api/admin/* в агентном шлюзе (server/auth/agentGate.js). Bearer → 403. Только cookie-сессия site-admin.
Тело запроса (JSON):
| Поле | Тип | Обяз. | Назначение |
|---|---|---|---|
id | string | да | Системный ключ роли (PK); существующий → перезапись (upsert) |
name | string | да | Отображаемое имя |
color | string | да | Основной цвет (заливка) |
light | string | да | Светлый фон |
border | string | да | Цвет контура |
description | string | нет | Описание; пусто → '' |
sort_order | int | нет | Порядок; нет → 0 |
Пример (cookie-сессия site-admin):
curl -X POST https://specbuilder.vnimanie.ai/api/admin/roles \ -b cookies.txt \ -H "Content-Type: application/json" \ -d '{"id":"mlops-engineer","name":"MLOps-инженер","color":"#16a34a","light":"#dcfce7","border":"#15803d"}'Ответ 201:
{ "id": "mlops-engineer" }Markdown-зеркала/affordances у ресурса нет.