- Implemented ReachabilityCenterComponent for displaying asset reachability status with summary and filtering options. - Added ReachabilityWhyDrawerComponent to show detailed reachability evidence and call paths. - Created unit tests for both components to ensure functionality and correctness. - Updated accessibility test results for the new components.
3.5 KiB
3.5 KiB
Orchestrator Gateway Contract (draft v0.2)
Scope: expose Orchestrator read + operator control surfaces through the Web gateway (tenant-scoped, deterministic pagination, cache headers) to unblock Console control-plane views.
This is an interim contract until the gateway is aligned to the Orchestrator OpenAPI (/openapi/orchestrator.json in the Orchestrator service).
Security / headers
Authorization: Bearer <token>(orDPoPwhere configured)X-StellaOps-Tenant: <tenantId>(required)X-Stella-Project: <projectId>(optional)X-Stella-Trace-Id: <traceId>(optional; clients SHOULD send one)- Scopes:
orch:read,orch:quota,orch:operate,orch:backfill(endpoint-specific) - Operator audit headers (required on mutating requests):
X-Stella-Operator-Reason: <free-text>X-Stella-Operator-Ticket: <ticket-id>(optional but recommended)
Endpoints
GET /orchestrator/sources— list registered job sources (tenant-scoped).- Query params:
sourceType,enabled,limit,continuationToken
- Query params:
GET /orchestrator/sources/{sourceId}— source detail.GET /orchestrator/quotas— list quotas (scope:orch:quota).- Query params:
jobType,paused,limit,continuationToken
- Query params:
GET /orchestrator/quotas/{quotaId}— quota detail (scope:orch:quota).POST /orchestrator/quotas— create quota (scope:orch:quota).PUT /orchestrator/quotas/{quotaId}— update quota (scope:orch:quota).DELETE /orchestrator/quotas/{quotaId}— delete quota (scope:orch:quota).POST /orchestrator/quotas/{quotaId}/pause— pause quota (scope:orch:quota).POST /orchestrator/quotas/{quotaId}/resume— resume quota (scope:orch:quota).GET /orchestrator/quotas/summary— quota/backpressure metrics summary (scope:orch:quota).GET /orchestrator/jobs/summary— job summary counts (scope:orch:read).GET /orchestrator/deadletter/stats— deadletter stats and top error clustering (scope:orch:operate).GET /orchestrator/deadletter/summary— grouped deadletter summary (scope:orch:operate).POST /orchestrator/deadletter/{entryId}/replay— replay a deadletter entry (scope:orch:backfill).POST /orchestrator/deadletter/replay/batch— replay a set of entry IDs (scope:orch:backfill).POST /orchestrator/deadletter/replay/pending— replay pending entries by filter (scope:orch:backfill).POST /orchestrator/pack-runs/{packRunId}/cancel— cancel a pack run (scope:orch:operate).POST /orchestrator/pack-runs/{packRunId}/retry— retry a pack run (scope:orch:backfill).
Caching & pagination
limitmax:200.- Cursor/paging uses
continuationToken(opaque string). - Recommended headers:
Cache-Control: private, max-age=60, stale-if-error=300. ETagSHOULD be stable over a sorted payload; clients MAY sendIf-None-Match.
Determinism rules
- Ordering:
- sources:
(name asc, sourceId asc) - quotas:
(jobType asc, quotaId asc) - deadletter summary:
(category asc, errorCode asc)
- sources:
- Timestamps: ISO-8601 UTC.
Samples
docs/api/gateway/samples/orchestrator-sources.jsondocs/api/gateway/samples/orchestrator-quotas.jsondocs/api/gateway/samples/orchestrator-quota-summary.jsondocs/api/gateway/samples/orchestrator-deadletter-stats.jsondocs/api/gateway/samples/orchestrator-deadletter-summary.jsondocs/api/gateway/samples/orchestrator-deadletter-replay.jsondocs/api/gateway/samples/orchestrator-packrun-cancel.jsondocs/api/gateway/samples/orchestrator-packrun-retry.json