GET /api/spaces/:spaceId/specialty-assignments — Назначения специальностей
Сгенерировано из матриц + кода. Правки вносить в источники (
docs/matrices/,server/routes/), не здесь.
| Поле | Значение |
|---|---|
| HTTP | GET /api/spaces/:spaceId/specialty-assignments |
| Auth | requireSpaceAccess — requireSpaceAccess |
| Scope токена | read |
| PG-функции | api.list_space_specialty_assignments |
| Таблицы | space_specialty_assignment |
| SRM | SRM-165 |
| RP (права) | — |
| Файл роута | server/routes/spaces.js |
| Статус | done |
Аргументы запроса (best-effort из хендлера; путь-параметры опущены):
аргументов не обнаружено (подтвердить вручную по server/routes/spaces.js)
Коды ответов/ошибок (из хендлера): 200 — уточнить причины вручную
Для человека
Как открыть: вкладка «Спейсы» → карточка спейса → «Настройки спейса» → раздел участников/специализаций, где видно, кто за какую специальность отвечает.
Возвращает назначения специальностей в спейсе — связки «участник ↔ специальность». Назначение — это привязка конкретного человека к конкретной специальности спейса: так становится видно, кто в этом спейсе ML-инженер, кто аналитик, и т. д. Один участник может нести несколько специальностей, и наоборот.
Не путайте две сущности: специальности — это сам справочник ролей-специализаций спейса (что вообще бывает), а назначения — кто из участников какую из них занимает.
Кто может. Видит назначения любой, у кого есть доступ к спейсу: участник, менеджер спейса (спейсмен), наблюдатель, org_admin. Менять назначения — только спейсмен или 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/specialty-assignments \ -H "Authorization: Bearer tak_..."Ответ 200:
[ { "specialty_id": "ml-engineer", "user_id": "7f3a1b22-9c44-4d55-8e66-aa11bb22cc33", "user_name": "Иван Петров" }]Список отдаётся только как JSON — Markdown-зеркала у назначений нет (server/agent/negotiate.js). Accept: text/markdown ничего не меняет, ETag/304 не выдаётся.