Files
Baradb/docs/bg/api-http.md
T
dimgigov eb62b381a1 feat: multi-database backup, HTTP API endpoints, admin panel UI
- backup CLI: add --all-databases, --database, --data-root flags
- backup format: tar.gz with databases/<name>/ + backup.json metadata
- HTTP API: new endpoints /databases, /backup, /backups, /restore
- HTTP API: database switching via X-Database header
- Admin panel: database selector dropdown, Databases tab, Backups tab
- Admin panel: backup/restore UI with fetch() to new endpoints
- Update deps: hunos 1.3.0, jwt-nim-baraba 2.1.0
- Docker: backup cron uses --all-databases --data-root=/data/databases
- Docs: update api-http.md, protocol.md with correct endpoints
- OpenAPI spec updated to v1.1.6

Known limitation: DELETE /databases disabled due to ORC SIGSEGV
in LSMTree.close(). Use SQL DROP DATABASE instead.
2026-05-25 18:46:07 +03:00

2.7 KiB

HTTP/REST API

JSON-базиран REST API за уеб приложения.

Базов URL

http://localhost:9912

Endpoints

GET /health

Health проверка:

curl http://localhost:9912/health

GET /metrics

Prometheus метрики:

curl http://localhost:9912/metrics

POST /auth

JWT автентикация:

curl -X POST http://localhost:9912/auth \
  -H "Content-Type: application/json" \
  -d '{"username": "admin", "password": "secret"}'

POST /query

Изпълнение на SQL заявка:

curl -X POST http://localhost:9912/query \
  -H "Content-Type: application/json" \
  -H "X-Database: default" \
  -d '{"query": "SELECT * FROM users WHERE age > 18"}'

Отговор:

{
  "columns": ["name", "age"],
  "rows": [{"name": "Alice", "age": 30}],
  "affectedRows": 0
}

Забележка: Header X-Database избира към коя база данни да се изпълни заявката. Ако липсва, се използва default.

GET /tables

Списък с таблици в избраната база данни:

curl http://localhost:9912/tables -H "X-Database: default"

GET /databases

Списък с налични бази данни:

curl http://localhost:9912/databases

POST /databases

Създаване на нова база данни (изисква admin права):

curl -X POST http://localhost:9912/databases \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer <token>" \
  -d '{"name": "mydb"}'

POST /backup

Създаване на backup (изисква admin права):

# Backup на всички бази данни
curl -X POST http://localhost:9912/backup \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer <token>" \
  -d '{"all": true}'

# Backup на единична база
curl -X POST http://localhost:9912/backup \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer <token>" \
  -d '{"database": "default"}'

GET /backups

Списък с налични архиви:

curl http://localhost:9912/backups -H "Authorization: Bearer <token>"

POST /restore

Възстановяване от архив (изисква admin права):

curl -X POST http://localhost:9912/restore \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer <token>" \
  -d '{"input": "backup_1234567890.tar.gz", "all": true}'

Грешки

{
  "error": "Unauthorized"
}

Автентикация

curl -H "Authorization: Bearer <token>" \
  http://localhost:9912/metrics