API Reference
Все HTTP endpoints — Route Handlers в src/app/api
Все endpoints — Next.js Route Handlers в src/app/api/. Каждый (кроме публичных) обёрнут в withPermission(). Ответы — JSON через хелперы jsonOk / jsonError, валидация тела и query — Zod (src/lib/api/http.ts).
| Метод | Путь | Право | Назначение |
|---|
* | /api/auth/[...all] | — | Better Auth: вход, сессия, выход |
GET | /api/invitations/[token] | — | Данные приглашения (email, роль, компания) |
POST | /api/invitations/[token]/accept | — | Принять приглашение, создать аккаунт |
POST | /api/admin/invitations | user.invite | Создать приглашение |
| Метод | Путь | Право | Назначение |
|---|
GET | /api/tasks | task.view | Список задач: пагинация, фильтры (status, assignee, search, isTarget) |
POST | /api/tasks | task.create | Создать задачу (selectedItems, styles, interiorTypes, материалы) |
GET | /api/tasks/[id] | task.view | Одна задача |
PATCH | /api/tasks/[id] | task.update | Обновить задачу |
DELETE | /api/tasks/[id] | task.delete | Soft delete |
POST | /api/tasks/[id]/ai-prompt | ai.generate_prompt | Сгенерировать AI-промпт |
DELETE | /api/tasks/[id]/materials/[mid] | file.delete | Удалить материал |
GET | /api/tasks/stats | task.view | Статистика по задачам |
| Метод | Путь | Право | Назначение |
|---|
GET | /api/ready-content | content.view_ready | Список готового контента |
POST | /api/ready-content | content.upload_ready | Загрузить контент |
GET / PATCH / DELETE | /api/ready-content/[id] | view / upload / delete_ready | Одна запись: чтение, метаданные, удаление |
POST | /api/ready-content/[id]/approve | content.approve | Утвердить (APPROVED) |
POST | /api/ready-content/[id]/return-to-review | content.request_revision | Вернуть на проверку |
POST | /api/ready-content/[id]/new-version | content.upload_ready | Новая версия после правок |
POST | /api/ready-content/[id]/update-files | content.upload_ready | Обновить набор файлов |
POST | /api/ready-content/[id]/download-all | file.download | Скачать ZIP всех файлов |
GET / DELETE | /api/ready-content/[id]/files/[fileId] | download / delete | Отдельные файлы |
GET / POST | /api/ready-content/[id]/revisions | revision.view / create | Правки: список, создание |
PATCH | /api/ready-content/[id]/revisions/[revisionId] | revision.resolve | Закрыть правку |
| Метод | Путь | Право | Назначение |
|---|
GET / POST | /api/references | task.view / file.upload | Список, загрузка референса |
GET / DELETE | /api/references/[id] | task.view / file.delete | Один референс |
GET | /api/references/[id]/linked-tasks | task.view | Задачи, использующие референс |
GET / POST | /api/reference-categories | task.view / reference_category.create | Категории: список, создание |
GET | /api/reference-categories/stats | task.view | Статистика категорий (для UI /new-task) |
GET / PATCH / DELETE | /api/reference-categories/[id] | view / update / delete | Одна категория |
GET | /api/reference-categories/[id]/references | task.view | Референсы категории |
| Метод | Путь | Право | Назначение |
|---|
GET / POST | /api/calendar/items | calendar.view / calendar.assign_date | События: список, назначение даты |
PATCH | /api/calendar/items/[id]/move | calendar.move_item | Перенос (dnd: дата, lane, порядок) |
| Метод | Путь | Право | Назначение |
|---|
POST | /api/ai/generate | ai.generate_prompt | Генерация: SCENARIO, SHORT_TZ, REVISION_PARSE, COMPLETENESS_CHECK, CONTENT_MAKER |
POST | /api/ai/content-maker | ai.generate_copy | Структура контент-конструктора |
GET | /api/ai/config | admin.manage_ai_budget | Системный конфиг (бюджет, статус) |
GET / POST | /api/ai/providers | admin.manage_ai_budget | Провайдеры: список, создание |
PATCH / DELETE | /api/ai/providers/[id] | admin.manage_ai_budget | Обновить/удалить провайдер |
POST | /api/ai/providers/[id]/test | admin.manage_ai_budget | Тест соединения |
GET | /api/ai/usage | ai.view_usage | Логи использования |
POST | /api/ai/usage/chart | ai.view_usage | Данные графика затрат |
| Метод | Путь | Право | Назначение |
|---|
GET | /api/notifications | task.view | Список уведомлений |
POST | /api/notifications/[id]/read | task.view | Прочитано |
POST | /api/notifications/read-all | task.view | Всё прочитано |
GET | /api/push/vapid-key | — | Публичный VAPID-ключ |
POST | /api/push/subscribe | — | Подписать браузер на push |
POST | /api/push/unsubscribe | — | Отписать |
| Метод | Путь | Право | Назначение |
|---|
GET / POST | /api/safebot/items | safebot.view / safebot.create | Список, создание (Instagram URL → очередь) |
GET / DELETE | /api/safebot/items/[id] | safebot.view / safebot.delete | Один item, удаление |
POST | /api/safebot/items/[id]/retry | safebot.edit | Повторить скачивание |
POST | /api/safebot/items/[id]/promote | safebot.promote | Создать задачу из видео |
POST | /api/safebot/items/[id]/quick-promote | safebot.promote | Быстрый promote |
POST | /api/safebot/items/[id]/download | file.download | Скачать mp4 |
POST | /api/safebot/items/[id]/worker-update | SAFEBOT_WORKER_SECRET | Internal: воркер обновляет статус |
| Метод | Путь | Право | Назначение |
|---|
GET / POST | /api/admin/companies | company.view / company.create | Компании |
GET / PATCH | /api/admin/companies/[id] | company.view / company.edit | Одна компания |
GET / PATCH | /api/admin/users/[id] | user.view / user.change_role | Пользователь: профиль, роль |
GET / POST / PATCH / DELETE | /api/admin/users/[id]/permissions | user.change_role | Permission overrides |
GET | /api/admin/audit-log | audit.view | Аудит-лог |
GET | /api/admin/audit-log/actors | audit.view | Список акторов для фильтра |
POST | /api/admin/migrate-calendar | admin.manage_clients | Внутренняя миграция календаря |
| Метод | Путь | Право | Назначение |
|---|
POST | /api/uploads/presign | file.upload | Presigned PUT URL для S3 |
POST | /api/uploads/confirm/[fileId] | file.upload | Подтверждение загрузки → FileObject |
GET | /api/catalog/search | task.view | Поиск по каталогу Smart Selector |
GET | /api/catalog/t40-home | task.view | Набор для главной каталога |
GET | /api/health | — | Health check (Railway) |
- Создать
src/app/api/<route>/route.ts, экспортировать GET / POST / PATCH / DELETE.
- Обернуть в
withPermission("permission.key", handler).
- Права нет? Добавить в
src/lib/auth/permissions.ts.
- Валидация — Zod через
parseJson / parseQuery из lib/api/http.ts.
- Мутация — записать в
auditLog() и, если нужно, разослать уведомления.