PUT /api/spaces/:spaceId/spaceman — Назначить менеджера спейса
Сгенерировано из матриц + кода. Правки вносить в источники (
docs/matrices/,server/routes/), не здесь.
| Поле | Значение |
|---|---|
| HTTP | PUT /api/spaces/:spaceId/spaceman |
| Auth | requireSpaceOrgAdmin — requireSpaceOrgAdmin |
| Scope токена | read_write |
| PG-функции | api.set_space_member_role |
| Таблицы | space_member |
| SRM | SRM-171 |
| RP (права) | RP-054 |
| Файл роута | server/routes/spaces.js |
| Статус | done |
Аргументы запроса (best-effort из хендлера; путь-параметры опущены):
| Аргумент | Где | Обяз. | Заметка |
|---|---|---|---|
user_id | body | подтвердить |
Коды ответов/ошибок (из хендлера): 200 — уточнить причины вручную
Для человека
Как открыть: откройте спейс → «Настройки спейса» → кнопка «Менеджер» → выберите сотрудника из выпадающего списка.
Назначает менеджера спейса (спейсмена) — сотрудника, который управляет спейсом: настраивает его оверлей, добавляет участников, ведёт маппинг ролей, меняет владельцев проектов. У спейса один спейсмен: при назначении нового прежний автоматически становится обычным сотрудником.
Кто может. Только администратор организации (requireSpaceOrgAdmin, RP-054/RP-160). Спейсмен не может «повысить» себя или другого — назначение роли менеджера всегда за org_admin. Кнопка «Менеджер» скрыта от всех, кроме org_admin.
Для агента
Запись — токен со scope read_write. В WRITE_ALLOW как SPACE_SET_SPACEMAN; маршрут защищён requireSpaceOrgAdmin, и вдобавок сама PG-функция требует, чтобы вызывающий был админом организации спейса (ACCESS_DENIED иначе). То есть назначить спейсмена может только токен владельца-org_admin — иначе 403.
Путь:
| Параметр | Где | Назначение |
|---|---|---|
id | path | UUID спейса |
Тело запроса (JSON):
| Поле | Тип | Обяз. | Назначение |
|---|---|---|---|
user_id | uuid | да | Кого назначить менеджером спейса |
Это удобный alias: под капотом — api.set_space_member_role(space, user, 'spaceman', caller). Назначаемый пользователь становится участником спейса с ролью spaceman, прежний спейсмен атомарно демоутится до employee.
Пример запроса:
curl -X PUT https://specbuilder.vnimanie.ai/api/spaces/f9e8d7c6-1234-4abc-9def-0123456789ab/spaceman \ -H "Authorization: Bearer tak_..." \ -H "Content-Type: application/json" \ -d '{"user_id":"7777aaaa-bbbb-4ccc-8ddd-eeeeffff0000"}'Ответ 200:
{ "ok": true }Если назначаемого пользователя нет — USER_NOT_FOUND → 404. Состав участников спейса с их ролями читается через список участников спейса (GET /api/spaces/:id/members).