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

POST /api/collections/generate-id — Сгенерировать ID коллекции

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

ПолеЗначение
HTTPPOST /api/collections/generate-id
AuthrequireAuth — только авторизованный
Scope токенаread_write
PG-функции
Таблицы
SRMSRM-223
RP (права)RP-103
Файл роутаserver/routes/collections.js
Статусdone

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

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

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

Для человека

Как открыть: орг-админ → раздел «Коллекции» → карточка коллекции → редактор; при добавлении слоя, блока или специальности рядом с полем ID есть кнопка «Сгенерировать» — она и вызывает этот метод.

Превращает человеческое название («Бизнес-аналитик», «РЕАЛИЗАЦИЯ») в системный ID в латинице: короткий слаг из 2–4 слов. Для блоков и специальностей — snake_case (business_analyst), для слоёв — UPPER_SNAKE_CASE (IMPLEMENTATION). ID придумывает LLM, поэтому из любого языка получается осмысленная транслитерация, а не побуквенная.

Это лишь подсказка для поля: значение можно отредактировать вручную перед сохранением. Помните, что ID — системный ключ (на него ссылаются блоки, рёбра, специальности), а название — отображаемая надпись; менять их нужно осознанно.

Название обязательно — без него вернётся ошибка 400. Если LLM недоступна, метод не падает, а отдаёт простой слаг из самого названия.

Кто может. Только администратор: орг-админ (для коллекций своей организации) или администратор платформы. Обычный сотрудник получит 403, неавторизованный — 401.

Для агента

Запись — нужен токен со scope read_write (см. Конвенции). Это административная утилита: вызов разрешён только если владелец токена — администратор платформы или org-admin (role = 'admin' хотя бы в одной организации). Иначе — 403, без сессии — 401. Метод дёргает LLM (отсюда требование прав — чтобы залогиненный не мог дёргать его бесконечно), но в БД ничего не пишет.

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

ПолеТипОбяз.Назначение
namestringдаЧеловеческое название, которое нужно транслитерировать. Пустое → 400
typestringнетspecialty | block | layer. Для layer результат в UPPER_SNAKE_CASE, иначе — snake_case

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

Окно терминала
curl -X POST https://specbuilder.vnimanie.ai/api/collections/generate-id \
-H "Authorization: Bearer tak_..." \
-H "Content-Type: application/json" \
-d '{"name":"Бизнес-аналитик","type":"specialty"}'

Ответ 200:

{ "id": "business_analyst" }

Это обычный JSON-ответ, не ресурс: контент-негоциация (Accept: text/markdown, ETag/304) к нему не применяется. ID — лишь предложение; чтобы он закрепился, передайте его в id при создании блока/слоя/специальности (POST /api/collections/{id}/blocks и т.п.). При недоступности LLM метод не возвращает ошибку, а отдаёт fallback-слаг, собранный из самого name.

Связанные