POST /api/spaces/:id/specialties/:specId — Переопределить специальность
Сгенерировано из матриц + кода. Правки вносить в источники (
docs/matrices/,server/routes/), не здесь.
| Поле | Значение |
|---|---|
| HTTP | POST /api/spaces/:id/specialties/:specId |
| Auth | — |
| Scope токена | read_write |
| PG-функции | — |
| Таблицы | — |
| SRM | — (вне SRM, документировано по коду) |
| RP (права) | — |
| Файл роута | server/routes/spaces.js |
| Статус | по коду (вне SRM) |
Аргументы запроса (best-effort из хендлера; путь-параметры опущены):
аргументов не обнаружено (подтвердить вручную по server/routes/spaces.js)
Коды ответов/ошибок (из хендлера): 200 — уточнить причины вручную
Для человека
Как открыть: вкладка «Спейсы» → карточка спейса → «Настройки спейса» → «Специализации». Дальше либо измените поле у существующей специальности (название, цвет, описание, видимость), либо нажмите «Добавить» и заведите новую — оба действия идут через этот метод.
Это рабочая лошадка оверлея специальностей. Один и тот же метод закрывает два сценария:
- Переопределить унаследованную специальность коллекции — вы меняете её поле прямо в спейсе, не трогая саму коллекцию. В таблице у поля появляется индикатор «переопределено» и кнопка «Вернуть исходное значение». Снять переопределение и вернуться к значению из коллекции — Снять переопределение.
- Завести кастомную специальность, которой в коллекции нет вовсе (строка с пометкой «кастомная»).
Передаются только меняемые поля; что не передали — остаётся как было. Изменения видны всем в спейсе, но саму коллекцию и другие спейсы не затрагивают — в этом весь смысл оверлея.
Кто может. Только менеджер этого спейса (спейсмен) или администратор организации (RP-053; на бэкенде — requireSpacemanOrOrgAdmin). Сотрудник, наблюдатель и гость кнопок правки не видят и получают 403.
Для агента
Запись — нужен токен со scope read_write (см. Конвенции). Путь POST /api/spaces/:id/specialties/:specId — на write-allowlist’е (server/auth/agentGate.js, операция SPACE_SPECIALTY_UPSERT). Эта же запись отвечает и за PUT — см. Изменить специальность; хендлер общий (upsertSpecialty). Вызов идёт под ролью владельца токена: пройдёт, только если владелец — спейсмен спейса или org_admin, иначе 403.
Путь:
| Параметр | Где | Назначение |
|---|---|---|
id | path | UUID спейса |
specId | path | Ключ специальности: существующий (переопределение) или новый (кастомная) |
Тело запроса (JSON, все поля необязательны — null = не трогать):
| Поле | Тип | Назначение |
|---|---|---|
name | string | Отображаемое имя |
color | string | Основной цвет (HEX) |
light | string | Светлый оттенок |
border | string | Цвет рамки |
description | string | Описание |
sort_order | number | Порядок сортировки |
is_custom | boolean | true — кастомная специальность спейса (нет в коллекции) |
enabled | boolean | Видимость в спейсе |
Пример запроса:
curl -X POST https://specbuilder.vnimanie.ai/api/spaces/a1b2c3d4-5678-49ab-8cde-f0123456789a/specialties/ml-engineer \ -H "Authorization: Bearer tak_..." \ -H "Content-Type: application/json" \ -d '{"color":"#16a34a","description":"Профиль под precision-agriculture"}'Ответ 200:
{ "ok": true }Ответ — подтверждение { "ok": true } (JSON в любом случае; отдельного Markdown-зеркала у мутации нет). Чтобы увидеть результат, перечитайте список специальностей.