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

PUT /api/collections/:id/layers/:layerId — Изменить слой

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

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

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

АргументГдеОбяз.Заметка
base_ybodyподтвердить
colorbodyподтвердить
descriptionbodyподтвердить
display_namebodyподтвердить
doc_titlebodyподтвердить
sort_orderbodyподтвердить

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

Для человека

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

Меняет надпись, цвет, порядок, описание этапа и заголовок раздела документа у слоя. Ключ (id) при этом не меняется — он берётся из выбранного слоя; меняются только отображение и параметры.

Заголовок раздела документа можно очистить — тогда в документе снова используется надпись слоя. Коллекция должна быть активной — изменить слой в коллекции из корзины нельзя (404).

Кто может. Администратор организации-владельца (и администратор площадки).

Для агента

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

Ключ слоя берётся из пути (:layerId), а не из тела — в отличие от POST, где id приходит в теле. Под капотом тот же upsert по (collection_id, :layerId): если слоя с таким ключом нет, он будет создан.

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

ПолеТипОбяз.Назначение
display_namestringдаОтображаемая надпись слоя
colorstringдаЦвет полосы слоя (hex)
base_ynumberнетВертикальная позиция полосы; по умолчанию 0
sort_orderintegerнетПорядок слоёв; по умолчанию 0
descriptionstringнетОписание этапа; по умолчанию ""
doc_titlestringнетЗаголовок раздела документа; пустая строка → null (тогда берётся display_name)

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

Окно терминала
curl -X PUT https://specbuilder.vnimanie.ai/api/collections/0660b640-86b0-42c5-8e22-93973848bb56/layers/requirements \
-H "Authorization: Bearer tak_..." \
-H "Content-Type: application/json" \
-d '{"display_name":"Требования и ограничения","color":"#0284c7","sort_order":2,"doc_title":"Требования"}'

Ответ 200:

{ "ok": true }

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

Связанные