GET /api/spaces/:spaceId/blocks — Блоки спейса
Сгенерировано из матриц + кода. Правки вносить в источники (
docs/matrices/,server/routes/), не здесь.
| Поле | Значение |
|---|---|
| HTTP | GET /api/spaces/:spaceId/blocks |
| Auth | requireSpaceAccess — requireSpaceAccess |
| Scope токена | read |
| PG-функции | api.list_space_blocks |
| Таблицы | space_block, space_block_overlay |
| SRM | SRM-161 |
| RP (права) | RP-053 |
| Файл роута | server/routes/spaces.js |
| Статус | done |
Аргументы запроса (best-effort из хендлера; путь-параметры опущены):
| Аргумент | Где | Обяз. | Заметка |
|---|---|---|---|
default_specialties | body | подтвердить | |
description | body | подтвердить | |
enabled | body | подтвердить | |
example_page | body | подтвердить | |
is_custom | body | подтвердить | |
layer_id | body | подтвердить | |
name | body | подтвердить | |
sort_order | body | подтвердить |
Коды ответов/ошибок (из хендлера): 200 — уточнить причины вручную
Для человека
Как открыть: в верхней панели нажмите «Спейсы», выберите карточку нужного спейса и перейдите на вкладку «Блоки».
Отдаёт список блоков спейса — узлов будущего документа внутри слоёв. Это не сырые блоки коллекции, а уже «склеенный» оверлей: к базовым блокам из коллекции применены все переопределения спейса. У каждого блока видно итоговое имя, описание, слой, специальности по умолчанию и порядок; помеченные галочкой «изменено» поля — те, где спейс отличается от коллекции (см. Настройки спейса → Слои/Блоки/Специальности). Скрытые (удалённые в спейсе) базовые блоки в этот срез не попадают, пока их не вернут.
Кто может. Список видит любой, у кого есть доступ к спейсу: сотрудник, менеджер спейса (спейсмен), наблюдатель, администратор организации (RP-135). Гость на свой гостевой спейс читает через отдельный публичный срез — см. Публичные блоки спейса.
Для агента
Чтение — достаточно токена со scope read (см. Конвенции). Доступ к спейсу проверяется так же, как в UI: токен видит блоки только тех спейсов, к которым у владельца есть доступ, иначе 403.
Путь-параметр — :spaceId (id спейса). Тела у запроса нет.
Пример запроса:
curl https://specbuilder.vnimanie.ai/api/spaces/{spaceId}/blocks \ -H "Authorization: Bearer tak_..."Ответ 200 — JSON-массив блоков (уже после применения оверлея):
[ { "id": "DATA_INGEST", "name": "Приём данных", "description": "...", "layer_id": "INGESTION", "default_specialties": ["DATA_ENGINEER"], "sort_order": 10, "is_custom": false, "enabled": true }]Этот эндпоинт отдаёт только JSON — Markdown-зеркала, блока ## Actions и ETag/304 у него нет: они есть лишь у ресурса спейса GET /api/spaces/{id} (server/agent/negotiate.js, affordances.js). Меняют этот список write-операции read_write-токена: переопределить, изменить, удалить, снять переопределение, вернуть.