Справочник API
Обзор
Expense Budget Tracker публикует один машинный API:
https://api.expense-budget-tracker.com/v1/
Его можно использовать двумя способами:
- Через агентный онбординг, начиная с
GET /v1/ - Через прямые HTTP-запросы с уже существующей ApiKey
Все запросы применяют ту же Postgres row-level security, что и веб-приложение.
Discovery и опубликованные спецификации
Начинайте с:
https://api.expense-budget-tracker.com/v1/
Этот discovery-ответ объясняет, как агенту пройти bootstrap аутентификацию и какие действия выполнять дальше. На той же поверхности доступны:
GET /v1/openapi.jsonGET /v1/swagger.jsonGET /v1/schema
Используйте schema, когда нужен точный список relations и columns, доступных через /v1/sql.
Прямой доступ по HTTP
Скрипты, cron-задачи, дашборды и пользовательские приложения могут вызывать API напрямую после получения долгоживущей ApiKey.
curl -X POST https://api.expense-budget-tracker.com/v1/sql \
-H "Authorization: ApiKey ebta_your_key_here" \
-H "X-Workspace-Id: workspace-id" \
-H "Content-Type: application/json" \
-d '{"sql": "SELECT * FROM ledger_entries ORDER BY ts DESC LIMIT 10"}'
X-Workspace-Id нужен только если ключ еще не сохранил workspace по умолчанию или вы хотите переопределить его для одного запроса.
Краткий список endpoint'ов
GET /v1/— публичный discovery-документGET /v1/openapi.jsonиGET /v1/swagger.json— опубликованные спецификацииGET /v1/me— контекст аккаунтаGET /v1/workspaces— список доступных workspacePOST /v1/workspaces— создание workspacePOST /v1/workspaces/{workspaceId}/select— сохранение workspace по умолчаниюGET /v1/schema— список разрешенных relations и columnsPOST /v1/sql— выполнение одного ограниченного SQL-запроса
Политика SQL
POST /v1/sql принимает ровно один SQL statement за запрос.
Разрешены:
SELECTWITHINSERTUPDATEDELETE
Запрещены:
- несколько statement'ов
- DDL-команды вроде
CREATE,DROP,ALTER - транзакционные обертки
BEGIN,COMMIT,ROLLBACK set_config()- SQL-комментарии
- quoted identifiers
- dollar-quoted strings
Перед генерацией SQL сначала проверьте /v1/schema.