GET /api/spaces — Список спейсов
Сгенерировано из матриц + кода. Правки вносить в источники (
docs/matrices/,server/routes/), не здесь.
| Поле | Значение |
|---|---|
| HTTP | GET /api/spaces |
| Auth | — |
| Scope токена | read |
| PG-функции | api.list_org_spaces |
| Таблицы | space, space_member |
| SRM | SRM-041 |
| RP (права) | RP-050 |
| Файл роута | server/routes/spaces.js |
| Статус | done |
Аргументы запроса (best-effort из хендлера; путь-параметры опущены):
| Аргумент | Где | Обяз. | Заметка |
|---|---|---|---|
org_id | query | подтвердить |
Коды ответов/ошибок (из хендлера): 200 — уточнить причины вручную
Для человека
Как открыть: это базовый список, на котором строится левая навигация и вкладка «Спейсы». Отдельной кнопки «показать все спейсы» нет — список подгружается сам при входе в приложение и наполняет переключатель спейсов.
Возвращает все спейсы, к которым у вас есть доступ: ваш личный спейс, командные спейсы организаций, где вы участник или администратор, и спейсы под вашим наблюдением. Гостевые спейсы и спейсы, где вы никак не связаны, в список не попадают. Удалённые (в корзине) — тоже нет, для них отдельный метод Удалённые спейсы.
По каждому спейсу приходит то, что нужно для плашки в списке: имя (для личного — «Личные», для командного — «Организация · Спейс»), коллекция, число живых проектов, ваша роль в этом спейсе и имя его менеджера (спейсмена). Можно сузить выдачу одной организацией — тогда вернутся только её спейсы.
Кто может. Любой вошедший пользователь видит свой срез. Роль внутри каждого спейса считается по приоритету: org_admin → роль участника (спейсмен/сотрудник) → наблюдатель → владелец личного спейса. Гость этот метод не вызывает — у него нет учётной записи.
Для агента
Чтение — достаточно токена со scope read (см. Конвенции). Выдача всегда считается от лица владельца токена: агент видит ровно те спейсы, что и его владелец в UI.
Параметры:
| Параметр | Где | Обяз. | Назначение |
|---|---|---|---|
org_id | query | нет | Сузить выдачу одной организацией. Если владелец не состоит в ней — 400 (NOT_ORG_MEMBER) |
Пример запроса:
curl https://specbuilder.vnimanie.ai/api/spaces \ -H "Authorization: Bearer tak_..."Ответ 200:
[ { "id": "f9e8d7c6-1234-4abc-9def-0123456789ab", "type": "personal", "name": "personal", "slug": "default", "display_name": "Личные", "org_id": null, "org_name": null, "collection_id": "0660b640-86b0-42c5-8e22-93973848bb56", "collection_name": "ML/AI Development", "project_count": 4, "my_role": "owner", "spaceman_name": null }, { "id": "a1b2c3d4-5678-49ab-8cde-f0123456789a", "type": "team", "name": "Маркетинг", "slug": "marketing", "display_name": "ООО «Будущее» · Маркетинг", "org_id": "0011aabb-...", "org_name": "ООО «Будущее»", "collection_id": "0660b640-86b0-42c5-8e22-93973848bb56", "collection_name": "ML/AI Development", "project_count": 7, "my_role": "spaceman", "spaceman_name": "Иван Петров" }]Этот список отдаётся только как JSON — Markdown-зеркало у листинга спейсов нет (sendResource/sendList здесь не подключены, см. server/agent/negotiate.js). Accept: text/markdown на этом пути ничего не меняет, ETag/304 тоже не выдаётся. Чтобы получить Markdown по конкретному спейсу с блоком ## Actions, перейдите на Получить спейс.