Обзор REST API
OpenPR предоставляет RESTful API, построенный на Rust и Axum, для программного доступа ко всем функциям платформы. API поддерживает форматы запросов/ответов JSON и аутентификацию на основе JWT.
Базовый URL
http://localhost:8080/apiВ продакшен-развёртываниях за обратным прокси (Caddy/Nginx) API обычно проксируется через URL фронтенда.
Формат ответа
Все ответы API следуют единообразной структуре JSON:
Успех
{
"code": 0,
"message": "success",
"data": { ... }
}Ошибка
{
"code": 400,
"message": "Detailed error description"
}Распространённые коды ошибок:
| Код | Значение |
|---|---|
| 400 | Некорректный запрос (ошибка валидации) |
| 401 | Не авторизован (отсутствующий или недействительный токен) |
| 403 | Запрещено (недостаточно прав) |
| 404 | Не найдено |
| 500 | Внутренняя ошибка сервера |
Категории API
| Категория | Базовый путь | Описание |
|---|---|---|
| Аутентификация | /api/auth/* | Регистрация, вход, обновление токена |
| Проекты | /api/workspaces/*/projects/* | CRUD, участники, настройки |
| Задачи | /api/projects/*/issues/* | CRUD, назначение, метки, комментарии |
| Доска | /api/projects/*/board | Состояние kanban-доски |
| Спринты | /api/projects/*/sprints/* | CRUD спринтов и планирование |
| Метки | /api/labels/* | CRUD меток |
| Поиск | /api/search | Полнотекстовый поиск |
| Предложения | /api/proposals/* | Создание, голосование, отправка, архивирование |
| Управление | /api/governance/* | Конфигурация, журналы аудита |
| Решения | /api/decisions/* | Записи решений |
| Оценки доверия | /api/trust-scores/* | Оценки, история, апелляции |
| Вето | /api/veto/* | Вето, эскалация |
| AI-агенты | /api/projects/*/ai-agents/* | Управление агентами |
| AI-задачи | /api/projects/*/ai-tasks/* | Назначение задач |
| Токены ботов | /api/workspaces/*/bots | CRUD токенов ботов |
| Загрузка файлов | /api/v1/upload | Загрузка файлов multipart |
| Webhooks | /api/workspaces/*/webhooks/* | CRUD webhooks |
| Администрирование | /api/admin/* | Системное управление |
Полный справочник API см. в Справочнике эндпоинтов.
Тип содержимого
Все запросы POST/PUT/PATCH должны использовать Content-Type: application/json, за исключением загрузки файлов, которая использует multipart/form-data.
Пагинация
Эндпоинты списков поддерживают пагинацию:
curl "http://localhost:8080/api/projects/<id>/issues?page=1&per_page=20" \
-H "Authorization: Bearer <token>"Полнотекстовый поиск
Эндпоинт поиска использует PostgreSQL полнотекстовый поиск по задачам, комментариям и предложениям:
curl "http://localhost:8080/api/search?q=authentication+bug" \
-H "Authorization: Bearer <token>"Проверка работоспособности
API-сервер предоставляет эндпоинт работоспособности, который не требует аутентификации:
curl http://localhost:8080/healthСледующие шаги
- Аутентификация — JWT-аутентификация и токены ботов
- Справочник эндпоинтов — полная документация эндпоинтов
- MCP-сервер — удобный для AI интерфейс с 34 инструментами