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

PATCH /api/projects/:id/doc-content/:nodeId/artifacts/:contentItemId — Изменить артефакт

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

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

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

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

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

Для человека

Как открыть: откройте проект → вид «Дизайн-документ» → блок → разверните нужный артефакт → нажмите на ручку (значок редактирования). Откроется textarea с Markdown — правьте текст и сохраните.

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

Ограничение по объёму — до 50 000 символов; больше — ошибка. Пустой текст допустим (артефакт будет очищен). Правка фиксируется как ручная.

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

Для агента

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

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

ПараметрНазначение
:idUUID проекта
:nodeIdid блока (ноды)
:contentItemIdid артефакта (из списка артефактов, поле content_item_id)

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

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

content должен быть строкой — иначе 400; длиннее 50 000 символов — тоже 400. Если артефакт с таким :contentItemId не принадлежит этому блоку — 404.

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

Окно терминала
curl -X PATCH https://specbuilder.vnimanie.ai/api/projects/{id}/doc-content/{nodeId}/artifacts/51 \
-H "Authorization: Bearer tak_..." \
-H "Content-Type: application/json" \
-d '{"content":"## Таблицы\n\n- events\n- aggregates","editType":"manual"}'

Ответ 200 — id записи и новый номер версии:

{ "id": 51, "version": 3 }

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

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

Связанные