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

PATCH /api/projects/:id/doc-content/:nodeId — Изменить содержимое блока

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

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

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

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

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

Для человека

Как открыть: откройте проект → вкладка «Doc» (▧) → у нужного блока нажмите карандаш (✎) «Редактировать». Блок переходит в режим правки: слева — Markdown-редактор, справа — живой предпросмотр. Правки сохраняются автоматически с задержкой около секунды после того, как вы перестаёте печатать.

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

Лимит на текст блока — 50 КБ; больше — ошибка 400. Редактировать может владелец проекта (и гость — только в своём проекте); у тех, кто открыл чужой документ только на чтение, кнопки правки нет (403 при попытке). Точные правила — RP-110.

Для агента

Запись — нужен токен со scope read_write (см. Конвенции). Вызов идёт под ролью владельца токена: те же ограничения, что в UI, — писать может только тот, у кого есть write-доступ к проекту.

Тело запроса (JSON):

ПолеТипОбяз.Назначение
contentstringдаНовый текст блока (Markdown), ≤ 50 000 символов
editTypestringнетПомечает запись в истории: manual (ручная правка) или llm_inline. Любое другое значение → безопасный дефолт manual

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

Окно терминала
curl -X PATCH https://specbuilder.vnimanie.ai/api/projects/a1b2c3d4-.../doc-content/node-7 \
-H "Authorization: Bearer tak_..." \
-H "Content-Type: application/json" \
-d '{"content":"## Сбор данных\n\nИсточники: витрина продаж, выгрузка CRM...","editType":"manual"}'

Ответ 200:

{ "version": 4, "node_id": "node-7" }

Перед записью предыдущий текст блока автоматически уходит в историю (block_doc_content_history) — это даёт откат: см. набор B (история версий и восстановление). Запись отдаёт JSON; Markdown-зеркала у мутации нет — чтобы прочитать блок обратно в Markdown, дёрните GET блока. Если :nodeId не существует в графе проекта — 404.

Связанные