POST /api/projects — Создать проект
Сгенерировано из матриц + кода. Правки вносить в источники (
docs/matrices/,server/routes/), не здесь.
| Поле | Значение |
|---|---|
| HTTP | POST /api/projects |
| Auth | optionalAuth — гость + авторизованный |
| Scope токена | read_write |
| PG-функции | api.create_project |
| Таблицы | project |
| SRM | SRM-010, SRM-219 |
| RP (права) | RP-001, RP-002, RP-014 |
| Файл роута | server/routes/projects.js |
| Статус | done |
Аргументы запроса (best-effort из хендлера; путь-параметры опущены):
| Аргумент | Где | Обяз. | Заметка |
|---|---|---|---|
collection_id | body | подтвердить | |
prompt | body | подтвердить | |
space_id | body | подтвердить | |
title | body | подтвердить |
Коды ответов/ошибок (из хендлера): 201, 400, 403, 404 (+ 200) — уточнить причины вручную
Для человека
Как открыть: на стартовом экране со списком проектов нажмите «+ Новый проект» в шапке. Откроется экран создания: выберите «Компания × Спейс × Коллекция» и опишите задачу.
Создаёт новый проект из текстового описания задачи. Поле задачи обязательно, до 5000 символов; пустое или длиннее — ошибка 400.
Название можно не вводить. Если оставить его пустым, короткое имя из 3–5 слов придумает LLM: оно генерируется до создания проекта (поэтому запрос занимает на пару секунд дольше), и проект сразу появляется в списке с готовым названием.
Проект всегда создаётся внутри спейса:
- Гость (без входа) — проект попадает в гостевой спейс выбранной коллекции. Коллекция должна быть публичной или дефолтной, иначе гость её не видит (
403). - Авторизованный — проект попадает в личный спейс выбранной коллекции; если такого спейса ещё нет, он создаётся автоматически — при этом проверяется ваш доступ к коллекции.
Вместо коллекции можно сразу выбрать конкретный спейс, например командный в организации. Сразу после создания обычно запускают генерацию графа.
Кто может. Создать проект может любой, у кого есть доступ к коллекции: гость — к публичной или дефолтной; сотрудник и выше — к коллекциям своей организации и к тем, доступ к которым выдан отдельно. Наблюдатель кнопки создания не видит. Точные правила — RP-155.
Для агента
Запись — нужен токен со scope read_write (см. Конвенции). Вызов идёт под ролью владельца токена: те же ограничения, что в UI.
Тело запроса (JSON):
| Поле | Тип | Обяз. | Назначение |
|---|---|---|---|
prompt | string | да | Описание задачи, ≤ 5000 символов |
title | string | нет | Если опущено — имя сгенерирует LLM (синхронно, +пара секунд) |
collection_id | uuid | нет¹ | Резолвит личный (гостю — гостевой) спейс под коллекцию |
space_id | uuid | нет¹ | Прямое указание спейса |
¹ Передать 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 graphGET /api/projects/{id}/graph — read-graph — view=summary|full, diff_from=versionGET /api/projects/{id}/doc-content — read-doc — design-document contentТипичный следующий шаг — генерация графа (SSE).
Связанные
- Экраны: Создание проекта
- Конвенции · Роли · Ошибки · Глоссарий