POST /api/spaces/:spaceId/supervisors — Добавить наблюдателя
Сгенерировано из матриц + кода. Правки вносить в источники (
docs/matrices/,server/routes/), не здесь.
| Поле | Значение |
|---|---|
| HTTP | POST /api/spaces/:spaceId/supervisors |
| Auth | requireSpacemanOrOrgAdmin — requireSpacemanOrOrgAdmin |
| Scope токена | read_write |
| PG-функции | api.grant_supervisor_scope |
| Таблицы | supervisor_scope |
| SRM | SRM-056, SRM-304 |
| RP (права) | RP-056 |
| Файл роута | server/routes/spaces.js |
| Статус | done |
Аргументы запроса (best-effort из хендлера; путь-параметры опущены):
| Аргумент | Где | Обяз. | Заметка |
|---|---|---|---|
user_id | body | подтвердить |
Коды ответов/ошибок (из хендлера): 201 (+ 200) — уточнить причины вручную
Для человека
Как открыть: вкладка «Спейсы» → откройте спейс → «Настройки спейса» → раздел «Наблюдатели» → выберите участника организации и нажмите добавить.
Выдаёт человеку роль наблюдателя в этом спейсе: после этого он сможет смотреть проекты и документы спейса, но без права что-либо менять. Назначить можно только участника той же организации, к которой относится спейс, — постороннего аккаунта наблюдателем сделать нельзя. Запоминается, кто и когда выдал доступ.
Кто может. Менеджер спейса (спейсмен) своего спейса и администратор организации (RP-056, RP-159). Сотрудник и наблюдатель никого не назначают.
Для агента
Запись — нужен токен со scope read_write (см. Конвенции). Назначить наблюдателя сможет только токен спейсмена этого спейса или org_admin его организации; иначе requireSpacemanOrOrgAdmin вернёт 403. Путь в write-allowlist agent-gate как SUPERVISOR_GRANT (server/auth/agentGate.js).
Путь-параметр: :id — UUID спейса.
Тело запроса (JSON):
| Поле | Тип | Обяз. | Назначение |
|---|---|---|---|
user_id | uuid | да | Кого назначить наблюдателем (должен быть участником организации спейса) |
Пример запроса:
curl -X POST https://specbuilder.vnimanie.ai/api/spaces/f9e8d7c6-.../supervisors \ -H "Authorization: Bearer tak_..." \ -H "Content-Type: application/json" \ -d '{"user_id":"aaaa1111-..."}'Ответ 201:
{ "ok": true }Коды ошибок: 404 — спейса или пользователя не существует (SPACE_NOT_FOUND / USER_NOT_FOUND); 400 — назначаемый не состоит в организации спейса (бэкенд-проверка против выдачи наблюдения произвольному внешнему аккаунту). Ответ — JSON ({ ok: true }), без Markdown-зеркала и ETag. Проверить результат — список наблюдателей.