GET /v1/dashboard
Read the authenticated tenant dashboard
Description (from the contract)
The target tenant, scope, user, and session are derived only from the authenticated tenant session. Any tenant_id parameter, including an empty or matching value, returns dashboard_scope_forbidden. The live session must conjunctively retain every required permission listed below in the same repeatable-read PostgreSQL transaction as the aggregate reads. nodes.read is optional; when absent, node-backed resource facts use the explicit unavailable branch.
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
range | query | string: today / yesterday / seven_days / thirty_days | Yes | Tenant calendar range in the requested timezone. |
timezone | query | string | Yes | IANA timezone name other than Local. Calendar boundaries converted to UTC must be hour aligned; zones with a non-hour boundary offset are rejected rather than rounded. |
site_id | query | string(uuid) | No | Optional canonical site UUID for ClickHouse drill-down; tenant scope remains session-derived. |
node_id | query | string(uuid) | No | Optional canonical node UUID for ClickHouse drill-down; tenant scope remains session-derived. |
X-Request-ID | header | string | No | Optional safe correlation ID; invalid values are replaced. |
Responses
| Status | Description |
|---|---|
200 | Version 2 dashboard snapshot for the authenticated tenant only. Fields: |
400 | dashboard_invalid_request |
401 | dashboard_authentication_required |
403 | dashboard_scope_forbidden or dashboard_permission_denied |
408 | dashboard_request_cancelled |
500 | dashboard_internal_error |
502 | dashboard_response_too_large |
503 | dashboard_storage_unavailable; no zero-value data is substituted. |
504 | dashboard_query_timeout |
What to do on failure
400Fix the parameters or body per the field list; do not retry unchanged.401Check the credential format and whether it expired or was rotated.403Check the key scopes, the owner’s current permissions and the tenant scope; never switch to a more privileged account.500Outcome unknown: read back by ID or list first, then decide whether to retry with the original Idempotency-Key.503A dependency is unavailable: retry later with the original Idempotency-Key.