meta { name: Check Health type: http seq: 1 } get { url: {{appview_url}}/api/health } assert { res.status: eq 200 res.body.status: isDefined res.body.timestamp: isDefined res.body.services.database.status: isDefined res.body.services.database.latency_ms: isDefined res.body.services.firehose.status: isDefined res.body.services.firehose.connected: isDefined res.body.services.forumAgent.status: isDefined res.body.services.forumAgent.authenticated: isDefined } docs { Comprehensive health check endpoint for operational monitoring and visibility. Returns detailed status of all system components. **Authentication:** Public (no auth required) **Security:** Does not expose sensitive data (no DIDs, handles, credentials, or configuration details) Returns (always HTTP 200): { "status": "healthy" | "degraded" | "unhealthy", "timestamp": "2026-02-13T10:30:00.000Z", "services": { "database": { "status": "up" | "down", "latency_ms": 5 }, "firehose": { "status": "up" | "down", "connected": true, "last_event_at": "2026-02-13T10:29:55.000Z" // Optional }, "forumAgent": { "status": "authenticated" | "retrying" | "failed" | "unavailable" | "initializing", "authenticated": true, "last_auth_attempt": "2026-02-13T10:29:00.000Z", // Optional "retry_count": 2, // Only if status=retrying "next_retry_at": "2026-02-13T10:31:00.000Z", // Only if status=retrying "error": "Connection to PDS temporarily unavailable" // User-safe message } } } Overall Status Logic: - "healthy": All services up, forumAgent authenticated - "degraded": Database + firehose up, forumAgent not authenticated (read-only mode) - "unhealthy": Database or firehose down ForumAgent Status Values: - "authenticated": Successfully authenticated and ready for writes - "retrying": Failed temporarily, retrying with exponential backoff (includes retry_count and next_retry_at) - "failed": Permanently failed (auth error or max retries exceeded) - "unavailable": Not configured (missing FORUM_HANDLE or FORUM_PASSWORD) - "initializing": First auth attempt in progress Usage Examples: - Kubernetes liveness probe: Check `status !== "unhealthy"` - Web UI banner: Show read-only warning if `forumAgent.status !== "authenticated"` - Admin dashboard: Show retry countdown if `forumAgent.status === "retrying"` - Monitoring alerts: Alert if `status === "unhealthy"` for more than 2 minutes Example - Healthy System: { "status": "healthy", "timestamp": "2026-02-13T10:30:00.000Z", "services": { "database": { "status": "up", "latency_ms": 5 }, "firehose": { "status": "up", "connected": true, "last_event_at": "2026-02-13T10:29:55.000Z" }, "forumAgent": { "status": "authenticated", "authenticated": true } } } Example - Degraded System (ForumAgent Retrying): { "status": "degraded", "timestamp": "2026-02-13T10:30:00.000Z", "services": { "database": { "status": "up", "latency_ms": 5 }, "firehose": { "status": "up", "connected": true, "last_event_at": "2026-02-13T10:29:55.000Z" }, "forumAgent": { "status": "retrying", "authenticated": false, "last_auth_attempt": "2026-02-13T10:29:00.000Z", "retry_count": 2, "next_retry_at": "2026-02-13T10:31:00.000Z", "error": "Connection to PDS temporarily unavailable" } } } Example - Unhealthy System (Database Down): { "status": "unhealthy", "timestamp": "2026-02-13T10:30:00.000Z", "services": { "database": { "status": "down", "latency_ms": 0 }, "firehose": { "status": "up", "connected": true, "last_event_at": "2026-02-13T10:29:55.000Z" }, "forumAgent": { "status": "authenticated", "authenticated": true } } } Notes: - Always returns HTTP 200 (check response body for actual status) - Optional fields (last_event_at, last_auth_attempt, retry_count, next_retry_at, error) may be absent - All timestamps are ISO 8601 format - Database latency is measured in milliseconds }