GET /api/spaces/:spaceId/specialties — Специальности спейса
Сгенерировано из матриц + кода. Правки вносить в источники (
docs/matrices/,server/routes/), не здесь.
| Поле | Значение |
|---|---|
| HTTP | GET /api/spaces/:spaceId/specialties |
| Auth | requireSpaceAccess — requireSpaceAccess |
| Scope токена | read |
| PG-функции | api.list_space_specialties |
| Таблицы | space_specialty, space_specialty_overlay |
| SRM | SRM-160 |
| RP (права) | RP-053 |
| Файл роута | server/routes/spaces.js |
| Статус | done |
Аргументы запроса (best-effort из хендлера; путь-параметры опущены):
| Аргумент | Где | Обяз. | Заметка |
|---|---|---|---|
border | body | подтвердить | |
color | body | подтвердить | |
description | body | подтвердить | |
enabled | body | подтвердить | |
is_custom | body | подтвердить | |
light | body | подтвердить | |
name | body | подтвердить | |
sort_order | body | подтвердить |
Коды ответов/ошибок (из хендлера): 200 — уточнить причины вручную
Для человека
Как открыть: вкладка «Спейсы» в шапке → карточка нужного спейса → «Настройки спейса» → раздел «Специализации». Таблица в этом разделе и есть результат метода.
Возвращает специальности (роли-специализации) спейса — это оверлей поверх базовых специальностей коллекции. То, что вы видите в таблице, складывается из трёх слоёв: унаследованные специальности коллекции как есть; те же специальности, но с переопределёнными в спейсе полями (цвет, название, описание); и кастомные специальности, добавленные только в этом спейсе. Удалённые в спейсе унаследованные специальности из выдачи исчезают (их можно вернуть через Вернуть специальность).
По каждой строке приходит то, что нужно для отрисовки: ключ специальности, отображаемое имя, цвета (основной, светлый, рамка), описание, порядок сортировки и пометки — кастомная ли это строка и какие поля переопределены. Те, у кого есть переопределение, в интерфейсе помечаются индикатором и кнопкой «Вернуть исходное значение».
Кто может. Видит специальности любой, у кого есть доступ к спейсу: участник, менеджер спейса (спейсмен), наблюдатель, администратор организации. Менять — только спейсмен своего спейса или org_admin (см. Переопределить). Для гостевого спейса есть отдельный публичный срез — Публичные специальности.
Для агента
Чтение — достаточно токена со scope read (см. Конвенции). Путь под /api/spaces/... на read-allowlist’е (server/auth/agentGate.js), токен проходит. Выдача считается от лица владельца токена: специальности видны, только если у владельца есть доступ к спейсу, иначе 403.
Путь:
| Параметр | Где | Назначение |
|---|---|---|
spaceId | path | UUID спейса (в коде — :id) |
Пример запроса:
curl https://specbuilder.vnimanie.ai/api/spaces/a1b2c3d4-5678-49ab-8cde-f0123456789a/specialties \ -H "Authorization: Bearer tak_..."Ответ 200:
[ { "id": "ml-engineer", "name": "ML-инженер", "color": "#3b82f6", "light": "#dbeafe", "border": "#1d4ed8", "description": "Обучение и инференс моделей", "sort_order": 1, "is_custom": false, "enabled": true }]Список отдаётся только как JSON — Markdown-зеркала у листинга специальностей нет (sendResource/sendList на этом пути не подключены, см. server/agent/negotiate.js). Accept: text/markdown ничего не меняет, ETag/304 не выдаётся. Markdown с блоком ## Actions есть только у самого спейса — Получить спейс.