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

GET /api/spaces/:spaceId/specialties — Специальности спейса

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

ПолеЗначение
HTTPGET /api/spaces/:spaceId/specialties
AuthrequireSpaceAccess — requireSpaceAccess
Scope токенаread
PG-функцииapi.list_space_specialties
Таблицыspace_specialty, space_specialty_overlay
SRMSRM-160
RP (права)RP-053
Файл роутаserver/routes/spaces.js
Статусdone

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

АргументГдеОбяз.Заметка
borderbodyподтвердить
colorbodyподтвердить
descriptionbodyподтвердить
enabledbodyподтвердить
is_custombodyподтвердить
lightbodyподтвердить
namebodyподтвердить
sort_orderbodyподтвердить

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

Для человека

Как открыть: вкладка «Спейсы» в шапке → карточка нужного спейса → «Настройки спейса» → раздел «Специализации». Таблица в этом разделе и есть результат метода.

Возвращает специальности (роли-специализации) спейса — это оверлей поверх базовых специальностей коллекции. То, что вы видите в таблице, складывается из трёх слоёв: унаследованные специальности коллекции как есть; те же специальности, но с переопределёнными в спейсе полями (цвет, название, описание); и кастомные специальности, добавленные только в этом спейсе. Удалённые в спейсе унаследованные специальности из выдачи исчезают (их можно вернуть через Вернуть специальность).

По каждой строке приходит то, что нужно для отрисовки: ключ специальности, отображаемое имя, цвета (основной, светлый, рамка), описание, порядок сортировки и пометки — кастомная ли это строка и какие поля переопределены. Те, у кого есть переопределение, в интерфейсе помечаются индикатором и кнопкой «Вернуть исходное значение».

Кто может. Видит специальности любой, у кого есть доступ к спейсу: участник, менеджер спейса (спейсмен), наблюдатель, администратор организации. Менять — только спейсмен своего спейса или org_admin (см. Переопределить). Для гостевого спейса есть отдельный публичный срез — Публичные специальности.

Для агента

Чтение — достаточно токена со scope read (см. Конвенции). Путь под /api/spaces/... на read-allowlist’е (server/auth/agentGate.js), токен проходит. Выдача считается от лица владельца токена: специальности видны, только если у владельца есть доступ к спейсу, иначе 403.

Путь:

ПараметрГдеНазначение
spaceIdpathUUID спейса (в коде — :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 есть только у самого спейса — Получить спейс.

Связанные