APIs
REST operations
Operate a running tenant from the same routes the Monitor and Alerts pages call. Auth, tenancy, and errors are on the REST API contract page.
How-tos: Replay a message, Watch the runtime, Page on failure.
Messages and replay
| Method | Path | Purpose |
|---|---|---|
GET | /messages | Ledger. Filter by tenant, integration, time, status. ?limit= |
POST | /messages/{queue_id}/{seq}/replay | New attempt. Original row stays. |
Replay accepts request_id / idempotency_key. Reuse the key to retry the call. A new key is a second replay. Replay always creates new history.
curl -s "$SIRIUS/messages?tenant_id=default&limit=20"
curl -s -X POST "$SIRIUS/messages/<queue_id>/<seq>/replay" \
-H 'content-type: application/json' \
-d '{"request_id":"replay-001"}'
Dead-letter queue
| Method | Path | Purpose |
|---|---|---|
GET | /failures | Open, retrying, and terminal items |
POST | /failures/{id}/retry | New attempt |
POST | /failures/{id}/resolve | Human handled it elsewhere |
POST | /failures/{id}/terminal | Irreversible close |
terminal is not a first response. Prefer retry after the destination is healthy, or resolve when the work happened outside Sirius.
Dashboard and instance metrics
| Method | Path | Purpose |
|---|---|---|
GET | /operations/overview | KPI tiles, charts, work queue |
GET | /operations/instance/metrics | Live CPU, memory, disk, database, runtime |
GET | /operations/instance/metrics/history | Retained trend |
GET / PUT | /operations/monitoring/settings | Window, capture, retention |
POST | /operations/monitoring/purge | Explicit purge |
Overview is computed from the ledger and the failure registry. The window is the operator-configured dashboard window (clamped), not a hardcoded 24 hours. Latency tiles render n/a when latency_ms is not recorded — they do not invent a number.
curl -s "$SIRIUS/operations/overview?tenant_id=default" | jq '.kpis'
curl -s "$SIRIUS/operations/instance/metrics" | jq '{cpu:.cpu.used_pct, mem:.memory.used_pct}'
Runtime internals
| Prefix | Purpose |
|---|---|
/runtime/supervisors | Worker supervisors |
POST /runtime/outbox/replay | Re-drive the output outbox |
/txcoord/transactions | In-flight multi-destination transactions (read-only) |
High-blast-radius mutations accept an idempotency key. Use it.
Logs
| Method | Path | Purpose |
|---|---|---|
GET | /logs | Search. level, q, related_to, limit |
GET / PUT | /logs/policy | Retention + legal hold |
POST | /logs/retention/purge | Purge (blocked by legal hold) |
related_to is queue_id:sequence. Lists page with X-Next-Cursor (default 200, ceiling 1000). Walk until the header is absent. A bad cursor is 400.
curl -s "$SIRIUS/logs?tenant_id=default&level=warn&q=timeout"
curl -s "$SIRIUS/logs?tenant_id=default&related_to=<queue_id>:<sequence>"
Alerts
| Method | Path | Purpose |
|---|---|---|
GET / POST | /alerts/rules | Rules (one signal each) |
GET / POST | /alerts/channels | Email, Slack, Teams, webhook |
POST | /alerts/channels/{id}/test | Send a probe |
GET | /alerts/instances | Firing / acked / resolved |
POST | /alerts/instances/{id}/ack | Take ownership |
POST | /alerts/instances/{id}/resolve | Close |
Rule body: name, signal, severity, optional selector, condition, channel_ids, throttle_seconds, resolve_notify. Channel credentials are write-only secret references. Outbound URLs are SSRF-guarded.
Signals: log, failure, integration_status, component, deploy, cluster. Conditions: match, threshold, status_transition. operations[] is valid only on deploy and cluster.
Diagnostics
POST /diagnostics/* covers connectivity probes, a health report, and a support bundle. Use these when you would otherwise ask someone to “send logs.” The bundle is the supported way to capture a tenant’s posture for a ticket.
Audit
GET /audit pages with X-Next-Cursor (default 100, ceiling 1000). Mutating calls are recorded. Attribute agents and services with X-Sirius-Agent-ID, X-Sirius-Actor-Type, and X-Sirius-Actor-ID.
GET /agent/tools?category=operate is the live index of every operations route.