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

GET /api/projects/:id/doc-content/:nodeId/artifacts — Артефакты блока

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

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

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

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

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

Для человека

Как открыть: откройте проект → вид «Дизайн-документ» → найдите блок. Под основным текстом блока идут его артефакты — подсекции (каждая со своей специальностью и цветным чипом роли). По умолчанию основной блок раскрыт, а артефакты свёрнуты; разверните артефакт, чтобы увидеть его содержимое.

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

Кто может. Артефакты блока видит любой, кто видит сам документ: в своём проекте — все роли, включая гостя; в чужом — сотрудник и выше с доступом к проекту (RP-040, RP-041).

Для агента

Чтение — токен со scope read (см. Конвенции). Доступ к проекту проверяется через requireProjectAccess.

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

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

Тела запроса нет.

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

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

Ответ 200 — массив артефактов блока в порядке отображения (включая ещё не заполненные):

[
{
"content_item_id": 51,
"title": "Модель данных",
"owner_role": "data-engineer",
"description": "Схема таблиц и связей",
"content": "## Таблицы\n\n- events\n- aggregates",
"generated_by": "llm_generate",
"version": 2,
"updated_at": "2026-06-20T11:04:00Z"
},
{
"content_item_id": 52,
"title": "API-контракт",
"owner_role": "backend",
"description": "Эндпоинты сервиса",
"content": "",
"generated_by": null,
"version": 0,
"updated_at": null
}
]

content_item_id — id артефакта, который дальше подставляется в изменение и генерацию (путь-параметр :contentItemId). Пустая заготовка приходит с content: "", version: 0 и generated_by: null — это нормально, артефакт ещё не наполняли. owner_role — ключ специальности-владельца.

Формат. Метод отдаёт только JSON. Markdown-зеркала и ETag/304 у per-block списка нет. Если нужен Markdown по артефактам, его отдаёт проектный обзорный эндпоинт GET /api/projects/:id/artifact-contentAccept: text/markdown), но он собирает артефакты по всему проекту, а не по одному блоку. Блок affordances здесь не строится (server/agent/affordances.js).

Связанные