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

POST /api/collections/:id/edges — Добавить связь

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

ПолеЗначение
HTTPPOST /api/collections/:id/edges
Auth
Scope токенаread_write
PG-функцииapi.create_collection_edge
Таблицы
SRM— (вне SRM, документировано по коду)
RP (права)
Файл роутаserver/routes/collections.js
Статуспо коду (вне SRM)

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

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

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

Для человека

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

Создаёт связь между двумя блоками коллекции — стрелку «откуда → куда»: один блок предшествует другому. Связать блок сам с собой нельзя (400). Повторное добавление той же пары дубль не создаёт и ошибки не вызывает.

Коллекция должна быть активной: добавить связь в коллекцию из корзины нельзя (404).

Кто может. Редактировать состав коллекции может администратор организации-владельца (и администратор площадки). Сотрудники и наблюдатели связи изменять не могут.

Для агента

Запись — нужен токен со scope read_write (см. Конвенции). У роута нет route-middleware; права досматривает PG-функция: редактировать содержимое коллекции может только org-admin владеющей организации (или site-admin), под чьей ролью идёт токен.

Идемпотентно: одна и та же пара (source_id, target_id) добавляется один раз, повтор не создаёт дубль (всё равно 201). Петля запрещена: source_id == target_idSELF_EDGE (400). source_id и target_id — это ключи блоков (collection_block.id).

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

ПолеТипОбяз.Назначение
source_idstringдаКлюч блока-источника (откуда)
target_idstringдаКлюч блока-получателя (куда)

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

Окно терминала
curl -X POST https://specbuilder.vnimanie.ai/api/collections/0660b640-86b0-42c5-8e22-93973848bb56/edges \
-H "Authorization: Bearer tak_..." \
-H "Content-Type: application/json" \
-d '{"source_id":"requirements","target_id":"data-model"}'

Ответ 201:

{ "ok": true }

Петля (source_id == target_id) → 400 (SELF_EDGE); коллекция в корзине → 404 (COLLECTION_NOT_FOUND). Cookie-клиент получает JSON; Markdown-зеркало — только токену с Accept: text/markdown (server/agent/negotiate.js).

Связанные