Dashboard Get started

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.dev

Authentication

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

MethodPathBodyRole
GET/api/dashboardsViewer
POST/api/dashboards{ name }Member
GET/api/dashboards/:idViewer
PUT/api/dashboards/:id{ panels_json? name? }Member
DELETE/api/dashboards/:idMember
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

MethodPathRole
GET/api/alerts/rulesViewer
POST/api/alerts/rulesMember
PUT/api/alerts/rules/:idMember
DELETE/api/alerts/rules/:idAdmin
GET/api/alerts/eventsViewer

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));
};