This document describes the current Janus HTTP and WebSocket API.
The server binary is:
cargo run --bin http_server -- --host 127.0.0.1 --port 8080 --storage-dir ./data/storageGET /health
Returns a service health payload with storage background-flush status.
Healthy response:
{
"status": "ok",
"message": "Janus HTTP API is running",
"storage_status": "ok",
"storage_error": null
}If background storage flushing has failed, the endpoint returns HTTP 503 Service Unavailable with:
{
"status": "degraded",
"message": "Janus HTTP API is running with storage errors",
"storage_status": "error",
"storage_error": "Background flush failed: ..."
}GET /ops/status
Returns a richer operational snapshot with:
- overall service status
- storage background-flush health
- replay metrics
- query lifecycle counts
POST /api/queries
Request body:
{
"query_id": "anomaly_q1",
"janusql": "PREFIX ex: <http://example.org/> ...",
"baseline_mode": "aggregate"
}baseline_mode is optional and accepts:
aggregatelast
If the Janus-QL query contains USING BASELINE ..., that query-level clause overrides this registration default at execution time.
GET /api/queries
Response shape:
{
"queries": ["q1", "q2"],
"total": 2
}GET /api/queries/:id
Response includes:
query_idquery_textbaseline_moderegistered_atexecution_countis_runningstatus
Possible status values include:
RegisteredWarmingBaselineRunningStoppedFailed(...)
POST /api/queries/:id/start
Starts execution and creates the internal forwarder used for WebSocket subscribers.
POST /api/queries/:id/stop
Stops a running query.
DELETE /api/queries/:id
Deletes a stopped query from the registry.
WS /api/queries/:id/results
WebSocket messages are JSON-encoded query results containing:
query_idtimestampsourcebindings
source is either:
HistoricalLive
POST /api/queriesPOST /api/queries/:id/start- Connect
WS /api/queries/:id/results - Read query results
POST /api/queries/:id/stopDELETE /api/queries/:id
For baseline-backed hybrid queries:
- the query may enter
WarmingBaselineafter start - live execution still starts immediately
- results that depend on baseline joins may appear only after warm-up finishes