Публичное API для интеграций: доступ к данным, файлам и бэкенд-сервисам через единую точку входа.
Документация для версии 1.0.6. На этой странице описаны публичные маршруты для внешних интеграций. Полная интерактивная документация (Admin и Public API, фильтры по источнику, Try it out) — в админ-панели: /admin/api-explorer. В 1.0.6 исправлено стабильное переключение фильтров источника API.
КАСКАД 360 предоставляет HTTP JSON API для подключения внешних приложений, мобильных клиентов и сервисов. Ядро не требует сессии администратора для публичных маршрутов — доступ контролируется API-ключами или JWT-токенами с ограниченными правами.
| Окружение | URL |
|---|---|
| Локальный запуск | http://localhost:5000 |
| Docker Compose (если настроен) | http://localhost:3535 |
| Префикс | Аутентификация | Назначение |
|---|---|---|
/api/v1/db/* | API-ключ (X-API-Key) | Чтение и изменение данных в подключённых БД |
/api/v1/files/* | API-ключ или JWT (Authorization: Bearer) | Загрузка, скачивание и метаданные файлов |
/api/module/* | Не требуется на уровне ядра* | Проксирование запросов к бэкенд-сервисам |
/api/health, /api/status | Не требуется | Проверка доступности платформы |
* Бэкенд-сервис может реализовать собственную авторизацию для бизнес-логики.
{
"success": true,
"data": { ... }
}
{
"success": false,
"error": "Описание ошибки"
}
На развёрнутом экземпляре доступны:
http://localhost:5000/admin/api-explorer — Admin и Public API, фильтры (ядро / модуль / плагин / сервис), Try it out с RBAC, экспорт OpenAPI (требует входа в админку).http://localhost:5000/api/docs/public — только Public API; на странице есть напоминание об API Explorer в админке.http://localhost:5000/api/openapi.jsonLegacy-адрес /api/v1/admin/docs перенаправляет в API Explorer.
Для публичного API используются два механизма. Сессия администратора (cookie после входа в панель) в интеграциях не применяется.
Ключ выдается администратором платформы в разделе управления API-ключами. Передавайте его в заголовке или query-параметре:
X-API-Key: your-api-key
# альтернатива
GET /api/v1/db/datasources?api_key=your-api-key
Ключ содержит набор разрешений. Для работы с БД нужны db:query или db:*; для файлов — files:upload, files:download или files:*.
Для сценариев, где файлы связаны с учётной записью пользователя, используйте JWT access token в заголовке:
Authorization: Bearer <access_token>
Токены выдаются по учётным данным пользователя:
Возвращает access_token и refresh_token. Endpoint технически находится в пространстве auth, но предназначен для интеграций, а не для управления панелью.
{
"username": "user@example.com",
"password": "your-password"
}
Обновление access token:
POST /api/v1/admin/auth/token/refresh
{ "refresh_token": "..." }
/api/v1/db/*)Назначение: интеграции с данными без прямого подключения к БД. Все маршруты требуют API-ключ с правами db:query или db:*.
Важно: произвольный SQL (query в теле запроса) отключён. Используйте параметризованный контракт entity + action — он защищён от SQL injection и не позволяет DDL-операции.
Параметризованные операции select, insert, update, delete по имени таблицы (сущности).
{
"entity": "products",
"action": "select",
"fields": ["id", "name", "price"],
"filters": [
{"field": "status", "op": "eq", "value": "active"},
{"field": "price", "op": "gte", "value": 100, "boolean": "and"}
],
"sort": [{"field": "id", "direction": "desc"}],
"limit": 50,
"offset": 0,
"datasource_id": "core",
"database": "shop"
}
{
"entity": "orders",
"action": "insert",
"data": {"user_id": 42, "total": 1500},
"datasource_id": "core",
"database": "shop"
}
Для update и delete поле filters обязательно — операции без условий отклоняются.
{
"entity": "orders",
"action": "update",
"data": {"status": "shipped"},
"filters": [{"field": "id", "op": "eq", "value": 1001}],
"datasource_id": "core",
"database": "shop"
}
op)| Оператор | Описание |
|---|---|
eq, ne | Равно / не равно |
gt, gte, lt, lte | Сравнение |
like | Шаблон LIKE |
in, not_in | Вхождение в список (value — массив) |
is_null, is_not_null | Проверка NULL (без value) |
{
"success": true,
"data": [
{"id": 1, "name": "Товар", "price": 199}
],
"row_count": 1
}
Для группы связанных изменений используйте транзакции. transaction_id передаётся в последующие вызовы /query.
| Метод | Путь | Назначение |
|---|---|---|
| POST | /api/v1/db/transaction/begin | Создать транзакцию, получить transaction_id |
| POST | /api/v1/db/transaction/<transaction_id>/commit | Подтвердить |
| POST | /api/v1/db/transaction/<transaction_id>/rollback | Откатить |
| GET | /api/v1/db/transaction/list | Список активных транзакций ключа |
Список подключённых источников (id, type, host, port, database). Пароли и секреты не возвращаются.
/api/v1/files/*)Загрузка и получение файлов через платформу. Авторизация: API-ключ с правами files:* или JWT access token.
Multipart form: поле file или files (множественная загрузка). Дополнительные поля формы:
category — категория файлаis_public — true / falsemetadata — JSON-строка с метаданнымиcurl -X POST http://localhost:5000/api/v1/files/upload \
-H "X-API-Key: your-api-key" \
-F "file=@document.pdf" \
-F "category=documents" \
-F "is_public=false"
Информация о файле: имя, размер, MIME, хеши, счётчик скачиваний. Для приватных файлов — только владелец (JWT) или ключ с files:download.
Возвращает бинарное содержимое файла. Правила доступа совпадают с метаданными.
/api/module/*)Единая точка входа для запросов к подключённым бэкенд-сервисам. Ядро резолвит модуль через правила маршрутизации и проксирует HTTP-запрос к целевому сервису.
/api/module/<module>/<method>
# пример
GET /api/module/back/products
POST /api/module/back/orders/create
Параметры query, заголовки и тело запроса передаются к бэкенду. Авторизация на уровне ядра не требуется — сервис может реализовать собственную проверку токенов или ключей.
curl -X GET "http://localhost:5000/api/module/back/products?limit=10" \
-H "Content-Type: application/json"
Конкретные методы и контракты зависят от развёрнутых модулей и сервисов. Схема маршрутов настраивается администратором платформы.
Не требуют аутентификации. Используются для health-check и мониторинга доступности.
| Метод | Путь | Назначение |
|---|---|---|
| GET | /api/health | Базовая проверка работоспособности |
| GET | /api/status | Расширенный статус платформы |
| GET | /api/openapi.json | OpenAPI спецификация публичного API |
| GET | /api/docs/public | Swagger UI |
| HTTP | Когда используется |
|---|---|
| 200 | Успешный запрос |
| 400 | Ошибка валидации или параметров |
| 401 | Нет или неверный API-ключ / JWT |
| 403 | Недостаточно прав (permission) или отключённый режим (beta) |
| 404 | Ресурс не найден |
| 429 | Превышен лимит запросов (rate limiting) |
| 500 | Внутренняя ошибка |
| 503 | Сервис или конфигурация недоступны |
{
"success": false,
"error": "Текст ошибки",
"details": { ... }
}
По умолчанию действует rate limiting: около 60 запросов в минуту и 1000 в час на ключ. При превышении в ответе может присутствовать поле retry_after.
| Параметр | Значение |
|---|---|
| Версия ядра | 1.0.6 |
| Префикс API | /api/v1 |
| Доступ к БД | API-ключ, параметризованный контракт |
| Доступ к файлам | API-ключ или JWT |
| Маршрутизация | /api/module/* без сессии админки |
| WebSocket | /ws (при включении в конфиге) |
Бета-режим. Если платформа запущена с app.beta: true, часть операций (например, изменение данных в системных БД) может быть ограничена. В ответе — сообщение о недоступности функции в текущем тарифе.
Установка и первичная настройка — в инструкции по установке. Для интеграции под ваш сценарий — форма связи.