/api/v1/dbAuth: X-API-Key с permission db:query или db:*
Response envelope: формат ответа C (legacy JSON)
Важно: Raw SQL (query field) отключён. Используйте параметризованный контракт entity + action.
---
Параметризованный CRUD.
Request body:
| Поле | Тип | Обяз. | Описание | |||
|---|---|---|---|---|---|---|
entity | string | да* | Имя сущности (таблицы) | |||
action | string | да* | select \ | insert \ | update \ | delete |
fields | string[] | нет | Поля для select | |||
filters | object[] | нет | Фильтры [{field, op, value}] | |||
data | object | нет | Данные для insert/update | |||
limit | int | нет | default 100 (select) | |||
offset | int | нет | default 0 (select) | |||
sort | object[] | нет | Сортировка | |||
datasource_id | string | нет | ID datasource, default core | |||
database | string | нет | Имя БД/схемы | |||
transaction_id | string | нет | ID активной транзакции |
*Обязательны entity + action. Поле query (legacy SQL) возвращает 403.
Пример — select:
{
"entity": "products",
"action": "select",
"fields": ["id", "name", "price"],
"filters": [{ "field": "status", "op": "eq", "value": "active" }],
"limit": 50,
"offset": 0,
"sort": [{ "field": "created_at", "direction": "desc" }]
}
Пример — insert:
{
"entity": "orders",
"action": "insert",
"data": { "user_id": 42, "total": 199.99 }
}
Responses:
| Код | Описание |
|---|---|
| 200 | { "success": true, ...result } |
| 400 | Ошибка выполнения / валидации |
| 401 | Нет/неверный API key |
| 403 | Raw SQL отключён |
---
Начало транзакции.
Request body (optional):
| Поле | Тип | Описание |
|---|---|---|
transaction_id | string | UUID (генерируется если не указан) |
Response 200:
{ "success": true, "transaction_id": "uuid" }
---
Коммит транзакции.
Path: transaction_id — UUID из /begin
---
Откат транзакции.
---
Список активных транзакций текущего API key.
Response 200:
{
"success": true,
"transactions": [...],
"count": 0
}
---
Список настроенных datasource. Пароли не возвращаются.
Response 200:
{
"success": true,
"datasources": [
{ "id": "core", "type": "postgresql", "host": "...", "port": 5432, "database": "..." }
],
"count": 1
}
---
1. POST /transaction/begin → transaction_id
2. POST /query { ..., transaction_id } (multiple)
3. POST /transaction/{id}/commit или /rollback