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

POST /api/projects/:id/doc-content/:nodeId/restore/:version — Восстановить версию блока

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

ПолеЗначение
HTTPPOST /api/projects/:id/doc-content/:nodeId/restore/:version
AuthoptionalAuth, requireProjectAccess — гость + авторизованный, доступ к проекту (read/write)
Scope токенаread_write
PG-функцииapi.restore_block_doc_version
Таблицыblock_doc_content, block_doc_content_history
SRMSRM-204
RP (права)RP-116
Файл роутаserver/routes/projects.js
Статусdone

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

аргументов не обнаружено (подтвердить вручную по server/routes/projects.js)

Коды ответов/ошибок (из хендлера): 400, 403, 404, 500 (+ 200) — уточнить причины вручную

Для человека

Как открыть: откройте проект → вид «Дизайн-документ» → блок → стрелками навигатора версий долистайте до нужной версии и нажмите «Восстановить». Это же действие срабатывает при отмене инлайн-коррекции (Ctrl+Z / «Отменить») — откатывает блок к версии до правки.

Делает выбранную старую версию текущим содержимым блока. Восстановление не удаляет историю: текущий текст перед заменой сам уходит в историю, а на его место встаёт копия старой версии с новым, очередным номером и пометкой «восстановление». То есть откат всегда обратим — позже можно так же вернуться к любой версии.

Несуществующий номер версии — ошибка «версия не найдена».

Кто может. Восстановить версию может только владелец проекта — сотрудник, чей это проект (RP-116). Менеджер спейса, наблюдатель и администратор организации чужой документ не откатывают; гость — только если проект его собственный.

Для агента

Запись — нужен токен со scope read_write (см. Конвенции). Кроме доступа к проекту хендлер требует уровень write: токен с доступом только на чтение проекта получит 403. Под гостевым доступом восстановление разрешено лишь владельцу проекта.

Путь-параметры:

ПараметрНазначение
:idUUID проекта
:nodeIdid блока (ноды)
:versionномер версии, которую делаем текущей (целое ≥ 1)

Тела запроса нет — что восстанавливать, задаёт :version в пути. Нечисло или < 1400, отсутствующая версия → 404.

Пример запроса:

Окно терминала
curl -X POST https://specbuilder.vnimanie.ai/api/projects/{id}/doc-content/{nodeId}/restore/2 \
-H "Authorization: Bearer tak_..."

Ответ 200 — идентификатор и новый номер версии (не тот, что восстанавливали):

{ "id": 415, "version": 4 }

Операция неразрушающая: текст версии 2 копируется в текущий блок как новая версия 4 с edit_type = restore, а прежний текущий уходит в историю. Поэтому в ответе version — следующий по счёту номер, а не 2. После восстановления свежий список версий можно перечитать через историю блока, а текущее содержимое — через получение блока.

Формат. Только JSON; Markdown-зеркала и ETag/304 у мутации нет. Блок affordances в ответе не строится (server/agent/affordances.js).

Связанные