Skip to main content
Version: Dev

HTTP routes

Every route pgConsole serves. Each carries the security headers (Cache-Control: no-store, a strict CSP, X-Content-Type-Options, X-Frame-Options: DENY, and a referrer policy). State-changing routes are POST-only, CSRF-guarded, and same-origin-checked. A route for a disabled capability is not registered — it returns 404, never a route that refuses.

MethodPathLevelExists whenPurpose
GET/baselinealwaysThe status console: cluster, pods, events, backups, evidence. Rendered from snapshots.
GET/healthznonealwaysLiveness — a constant ok. Proves the process is alive, nothing more.
GET/readyznonealwaysReadiness — reaches the API (and a required sidecar). A constant body; probe detail is logged as a category only.
GET/logs/{pod}poweruserALLOW_LOGS=trueOne bounded, on-demand log tail for a membership-verified pod. A non-member pod is indistinguishable from a nonexistent one.
GET/operationspoweruserALLOW_OPERATIONS=trueThe closed catalog of day-2 operations.
GET/operations/{op}poweruserALLOW_OPERATIONS=trueThe confirmation form with a fresh CSRF token. No side effect.
POST/operations/{op}poweruserALLOW_OPERATIONS=trueExecutes one enumerated operation. CSRF + same-origin required.
GET/access-requestsdbaALLOW_ACCESS_REVIEW=trueThe review panel: pending requests with forms, decided requests read-only.
POST/access-requests/{name}/approvedbaALLOW_ACCESS_REVIEW=trueRecords an approval with a chosen role. CSRF + same-origin required.
POST/access-requests/{name}/denydbaALLOW_ACCESS_REVIEW=trueRecords a denial. CSRF + same-origin required.
GET/static/…nonealwaysStylesheet and static assets. No cluster state.

The read-only baseline (/, /logs at poweruser) makes no Kubernetes API call at render time except the closed exceptions: the log tail, readiness, the operation execution, and the access-review decision write. Health, readiness, and static assets are never level-gated — probes and stylesheets carry no cluster state.