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

GET /api/spaces — Список спейсов

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

ПолеЗначение
HTTPGET /api/spaces
Auth
Scope токенаread
PG-функцииapi.list_org_spaces
Таблицыspace, space_member
SRMSRM-041
RP (права)RP-050
Файл роутаserver/routes/spaces.js
Статусdone

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

АргументГдеОбяз.Заметка
org_idqueryподтвердить

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

Для человека

Как открыть: это базовый список, на котором строится левая навигация и вкладка «Спейсы». Отдельной кнопки «показать все спейсы» нет — список подгружается сам при входе в приложение и наполняет переключатель спейсов.

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

По каждому спейсу приходит то, что нужно для плашки в списке: имя (для личного — «Личные», для командного — «Организация · Спейс»), коллекция, число живых проектов, ваша роль в этом спейсе и имя его менеджера (спейсмена). Можно сузить выдачу одной организацией — тогда вернутся только её спейсы.

Кто может. Любой вошедший пользователь видит свой срез. Роль внутри каждого спейса считается по приоритету: org_admin → роль участника (спейсмен/сотрудник) → наблюдатель → владелец личного спейса. Гость этот метод не вызывает — у него нет учётной записи.

Для агента

Чтение — достаточно токена со scope read (см. Конвенции). Выдача всегда считается от лица владельца токена: агент видит ровно те спейсы, что и его владелец в UI.

Параметры:

ПараметрГдеОбяз.Назначение
org_idqueryнетСузить выдачу одной организацией. Если владелец не состоит в ней — 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, перейдите на Получить спейс.

Связанные