PATCH /api/projects/:id/doc-content/:nodeId — Изменить содержимое блока
Сгенерировано из матриц + кода. Правки вносить в источники (
docs/matrices/,server/routes/), не здесь.
| Поле | Значение |
|---|---|
| HTTP | PATCH /api/projects/:id/doc-content/:nodeId |
| Auth | optionalAuth, requireProjectAccess — гость + авторизованный, доступ к проекту (read/write) |
| Scope токена | read_write |
| PG-функции | api.upsert_block_doc_content |
| Таблицы | block_doc_content, block_doc_content_history |
| SRM | SRM-032, SRM-197 |
| RP (права) | RP-110 |
| Файл роута | server/routes/projects.js |
| Статус | partial, done |
Аргументы запроса (best-effort из хендлера; путь-параметры опущены):
| Аргумент | Где | Обяз. | Заметка |
|---|---|---|---|
content | body | подтвердить | |
editType | body | подтвердить |
Коды ответов/ошибок (из хендлера): 400, 403, 404, 500 (+ 200) — уточнить причины вручную
Для человека
Как открыть: откройте проект → вкладка «Doc» (▧) → у нужного блока нажмите карандаш (✎) «Редактировать». Блок переходит в режим правки: слева — Markdown-редактор, справа — живой предпросмотр. Правки сохраняются автоматически с задержкой около секунды после того, как вы перестаёте печатать.
Сохраняет вручную набранный текст одного блока документа. Предыдущая версия блока при этом не теряется — она уезжает в историю, так что любую правку можно потом откатить через навигацию по версиям.
Лимит на текст блока — 50 КБ; больше — ошибка 400. Редактировать может владелец проекта (и гость — только в своём проекте); у тех, кто открыл чужой документ только на чтение, кнопки правки нет (403 при попытке). Точные правила — RP-110.
Для агента
Запись — нужен токен со scope read_write (см. Конвенции). Вызов идёт под ролью владельца токена: те же ограничения, что в UI, — писать может только тот, у кого есть write-доступ к проекту.
Тело запроса (JSON):
| Поле | Тип | Обяз. | Назначение |
|---|---|---|---|
content | string | да | Новый текст блока (Markdown), ≤ 50 000 символов |
editType | string | нет | Помечает запись в истории: 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.
Связанные
- Экраны: Design Doc
- Конвенции · Роли · Ошибки · Глоссарий