Query API
The query proxy exposes a REST API for querying your telemetry data, managing dashboards, and configuring alerts. All endpoints require a session token from POST /api/auth/sign-in.
Base URL
text
https://la-query-proxy.lightarch.workers.devAuthentication
bash
# Sign in to get a session token
curl -X POST https://la-dashboard-worker.lightarch.workers.dev/api/auth/sign-in \
-H "Content-Type: application/json" \
-d '{"email":"[email protected]","password":"your-password"}'
# Returns: { "token": "abc123...", "tenantId": "tenant-xxxx", "role": "owner" }
# Use the token on all query-proxy requests
curl https://la-query-proxy.lightarch.workers.dev/api/usage \
-H "Authorization: Bearer abc123..."Raw SQL
Run any SELECT query against your hot index. Requires Member role.
bash
curl -X POST .../api/query \
-H "Authorization: Bearer TOKEN" \
-H "Content-Type: application/json" \
-d '{"sql": "SELECT service, COUNT(*) as n FROM recent_spans GROUP BY service"}'Response
{ "results": [
{ "service": "api-gateway", "n": 1842 },
{ "service": "payment-service", "n": 423 }
]}Only
SELECT statements are allowed. INSERT, UPDATE, DELETE, DROP are rejected with 400.Dashboards
| Method | Path | Body | Role |
|---|---|---|---|
| GET | /api/dashboards | — | Viewer |
| POST | /api/dashboards | { name } | Member |
| GET | /api/dashboards/:id | — | Viewer |
| PUT | /api/dashboards/:id | { panels_json? name? } | Member |
| DELETE | /api/dashboards/:id | — | Member |
bash
# Create dashboard
curl -X POST .../api/dashboards \
-H "Authorization: Bearer TOKEN" \
-d '{"name":"Production Overview"}'
# Update panels
curl -X PUT .../api/dashboards/DASHBOARD_ID \
-H "Authorization: Bearer TOKEN" \
-d '{"panels_json":"[{"id":"...","title":"Latency","sql":"SELECT...","chart":"line","width":2}]"}'Alert Rules
| Method | Path | Role |
|---|---|---|
| GET | /api/alerts/rules | Viewer |
| POST | /api/alerts/rules | Member |
| PUT | /api/alerts/rules/:id | Member |
| DELETE | /api/alerts/rules/:id | Admin |
| GET | /api/alerts/events | Viewer |
Metadata
bash
# Distinct services + environments + severities (last 7 days)
curl .../api/meta -H "Authorization: Bearer TOKEN"
# { "services": ["api-gateway","payment-service"], "environments": ["production","staging"], "severities": ["TRACE","DEBUG","INFO","WARN","ERROR","FATAL"] }
# Metric names
curl .../api/metrics/names -H "Authorization: Bearer TOKEN"
# Usage summary
curl .../api/usage -H "Authorization: Bearer TOKEN"WebSocket live tail
Connect via WebSocket to receive spans in real time (auth via query param since WS headers aren't supported in browsers):
javascript
const ws = new WebSocket(
'wss://la-query-proxy.lightarch.workers.dev/api/live?token=YOUR_SESSION_TOKEN'
);
ws.onmessage = (e) => {
const spans = JSON.parse(e.data); // SpanRecord[]
spans.forEach(span => console.log(span.service, span.body));
};