--- name: sqlite_api lang: go domain: infra description: "API REST HTTP read-only sobre registry.db y operations.db de cada app. Permite consultas SQL (solo SELECT/PRAGMA), busqueda FTS5, exploracion de tablas y schema. Bind por defecto a localhost:8484." tags: [service, api, sqlite, http, registry, fts5] uses_functions: [] uses_types: [] framework: "net/http" entry_point: "main.go" dir_path: "projects/fn_monitoring/apps/sqlite_api" --- ## Uso ```bash # Arrancar (default: 127.0.0.1:8484) cd apps/sqlite_api && go run -tags fts5 . # Bind personalizado go run -tags fts5 . --bind 0.0.0.0:8484 ``` ## Endpoints | Metodo | Path | Descripcion | |--------|------|-------------| | GET | `/health` | Health check | | GET | `/api/databases` | Lista DBs disponibles (registry + ops:*) | | GET | `/api/databases/:db/tables` | Tablas y vistas de una DB | | GET | `/api/databases/:db/schema` | Schema SQL completo | | POST | `/api/databases/:db/query` | Ejecuta query SQL read-only | | GET | `/api/databases/:db/fts?q=...&table=...` | Busqueda FTS5 directa | ## Seguridad - Solo queries SELECT, PRAGMA, WITH y EXPLAIN - SQLite abierto con `?mode=ro` (read-only a nivel driver) - Timeout de 5 segundos por query - Bind a localhost por defecto - CORS habilitado para acceso desde frontends ## Bases de datos - `registry` — registry.db de la raiz - `ops:{app}` — operations.db de apps/{app}/ y projects/*/apps/{app}/ Auto-descubre operations.db al arrancar escaneando apps/ y projects/*/apps/. ## Health check ```bash curl http://localhost:8484/health # {"status":"ok"} ``` ## Puerto 8484 (no colisiona con Metabase 3000, Jupyter 8888, deploy_server 9090).