POST /api/spaces/:id/blocks/:blockId/restore — Вернуть блок
Сгенерировано из матриц + кода. Правки вносить в источники (
docs/matrices/,server/routes/), не здесь.
| Поле | Значение |
|---|---|
| HTTP | POST /api/spaces/:id/blocks/:blockId/restore |
| Auth | requireSpacemanOrOrgAdmin — requireSpacemanOrOrgAdmin |
| Scope токена | read_write |
| PG-функции | api.restore_space_block |
| Таблицы | space_block_overlay |
| SRM | SRM-257 |
| RP (права) | — |
| Файл роута | server/routes/spaces.js |
| Статус | done |
Аргументы запроса (best-effort из хендлера; путь-параметры опущены):
аргументов не обнаружено (подтвердить вручную по server/routes/spaces.js)
Коды ответов/ошибок (из хендлера): 200 — уточнить причины вручную
Для человека
Как открыть: верхняя панель → «Спейсы» → карточка спейса → вкладка «Блоки» → у скрытого (удалённого) базового блока нажмите «Восстановить удалённый элемент».
Возвращает блок, который ранее был удалён в спейсе. Речь именно об унаследованном блоке коллекции: при удалении он не стирался, а помечался скрытым в оверлее — восстановление снимает эту пометку, и блок снова появляется в спейсе со всеми своими (если были) переопределениями. К кастомным блокам это не относится: их удаление безвозвратно, восстанавливать нечего.
Это другое «вернуть», чем «снять переопределение»: то откатывает отдельное поле к коллекции у живого блока, а это — поднимает из небытия скрытый блок целиком.
Кто может. Менеджер своего спейса или администратор организации (RP-130). Сотрудник и наблюдатель оверлей не настраивают.
Для агента
Запись — токен со scope read_write; доступ проверяет requireSpacemanOrOrgAdmin (спейсмен спейса или org-admin его организации), иначе 403. Путь занесён в write-allowlist agent-gate точным шаблоном (server/auth/agentGate.js).
Путь-параметры — :id и :blockId. Тела у запроса нет. Снимает пометку «удалён» с унаследованного блока — операция имеет смысл только для ранее скрытого базового блока.
Пример запроса:
curl -X POST https://specbuilder.vnimanie.ai/api/spaces/{id}/blocks/{blockId}/restore \ -H "Authorization: Bearer tak_..."Ответ 200: { "ok": true }. Только JSON, без ETag. Не путать с clear-override: здесь возвращается скрытый блок, а не значение поля. Результат — в списке блоков.