admin

ADMIN-OPS-002 — systems registry: every external/infra dependency + honest status

Return the curated systems registry with live-computed status.

ADMIN-OPS-002. The operator's "is everything wired?" answer on one screen: backend API, database, redis, cert-signing, backups, Sentry, PostHog, email, Stripe, Hetzner, GitHub, DNS, support mailbox.

Read-only — no mutation, no audit row (nothing changes). Reuses the same live probes as GET /health/dependencies (DB SELECT 1, Redis PING) rather than inventing a second health path.

HONESTY (the point of this surface): - "ok" only when we actually probed it live this request (backend, DB, Redis). - "configured" reflects safe configuration presence or current declarative proof for services we can't ping (Sentry, PostHog, Resend, Stripe, WireGuard); "not_configured" means the required configuration/posture declaration is absent. - "unknown" for posture this API cannot independently verify (Hetzner, GitHub, DNS, the GH-Actions-scoped backup workflow, the support mailbox, the frontend web app, and declaration-only controls such as the WireGuard deployment plane).

SECRET SAFETY: the response contains ONLY booleans + public labels. No DSN / API key / connection string value is ever emitted (see services/admin_systems.py).

Authorization: - Anonymous → 401 (auth dep on require_admin). - Authenticated non-admin → 403 (require_admin). - Admin (email in ADMIN_EMAILS) → 200.

Flag gate (rule #4): 404 when ADMIN_DASHBOARD_ENABLED is off, so the whole /admin/* surface stays uniformly gated.

Response shape: { "computed_at": "<ISO8601 UTC>", "environment": "<env>", "version": "<app version>", "categories": ["frontend", "backend", "data", ...], "systems": [ {"id": "database", "name": "Database", "category": "data", "provider": "Neon serverless Postgres (EU · Frankfurt)", "status": "ok", "status_detail": "...", "metrics": [{"label": "Reachable", "value": "yes"}, ...], "dashboard_url": "https://console.neon.tech", "runbook_url": "https://github.com/.../RUNBOOK-postgres.md", "description": "..."}, ... ] }

get/api/v1/admin/systems

Request

  • Base URL: https://api.badgeia.com
  • URL: https://api.badgeia.com/api/v1/admin/systems
  • Auth: none declared

Response

Successful Response

object required

Changes

No recorded changes to this operation across all 1 revision of this API.