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

POST /api/projects — Создать проект

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

ПолеЗначение
HTTPPOST /api/projects
AuthoptionalAuth — гость + авторизованный
Scope токенаread_write
PG-функцииapi.create_project
Таблицыproject
SRMSRM-010, SRM-219
RP (права)RP-001, RP-002, RP-014
Файл роутаserver/routes/projects.js
Статусdone

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

АргументГдеОбяз.Заметка
collection_idbodyподтвердить
promptbodyподтвердить
space_idbodyподтвердить
titlebodyподтвердить

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

Для человека

Как открыть: на стартовом экране со списком проектов нажмите «+ Новый проект» в шапке. Откроется экран создания: выберите «Компания × Спейс × Коллекция» и опишите задачу.

Создаёт новый проект из текстового описания задачи. Поле задачи обязательно, до 5000 символов; пустое или длиннее — ошибка 400.

Название можно не вводить. Если оставить его пустым, короткое имя из 3–5 слов придумает LLM: оно генерируется до создания проекта (поэтому запрос занимает на пару секунд дольше), и проект сразу появляется в списке с готовым названием.

Проект всегда создаётся внутри спейса:

  • Гость (без входа) — проект попадает в гостевой спейс выбранной коллекции. Коллекция должна быть публичной или дефолтной, иначе гость её не видит (403).
  • Авторизованный — проект попадает в личный спейс выбранной коллекции; если такого спейса ещё нет, он создаётся автоматически — при этом проверяется ваш доступ к коллекции.

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

Кто может. Создать проект может любой, у кого есть доступ к коллекции: гость — к публичной или дефолтной; сотрудник и выше — к коллекциям своей организации и к тем, доступ к которым выдан отдельно. Наблюдатель кнопки создания не видит. Точные правила — RP-155.

Для агента

Запись — нужен токен со scope read_write (см. Конвенции). Вызов идёт под ролью владельца токена: те же ограничения, что в UI.

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

ПолеТипОбяз.Назначение
promptstringдаОписание задачи, ≤ 5000 символов
titlestringнетЕсли опущено — имя сгенерирует LLM (синхронно, +пара секунд)
collection_iduuidнет¹Резолвит личный (гостю — гостевой) спейс под коллекцию
space_iduuidнет¹Прямое указание спейса

¹ Передать space_id или collection_id.

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

Окно терминала
curl -X POST https://specbuilder.vnimanie.ai/api/projects \
-H "Authorization: Bearer tak_..." \
-H "Content-Type: application/json" \
-d '{"prompt":"Сервис аналитики продаж для отдела маркетинга","collection_id":"0660b640-86b0-42c5-8e22-93973848bb56"}'

Ответ 201:

{ "id": "a1b2c3d4-...", "title": "Сервис аналитики продаж", "space_id": "f9e8d7c6-..." }

Cookie-клиент всегда получает JSON; Markdown-зеркало отдаётся только токену с Accept: text/markdown (server/agent/negotiate.js).

После создания доступны read-аффордансы набора project (server/agent/affordances.js):

GET /api/projects/{id} — read-project — returns this project with its graph
GET /api/projects/{id}/graph — read-graph — view=summary|full, diff_from=version
GET /api/projects/{id}/doc-content — read-doc — design-document content

Типичный следующий шаг — генерация графа (SSE).

Связанные