Worker health check. Reports cache freshness, blacklist integrity, mint/burn freshness, and circuit-breaker states. Not served from Cloudflare edge cache (no-store).
{
"status": "healthy",
"timestamp": 1771856453,
"warnings": [],
"caches": {
"stablecoins": { "ageSeconds": 323, "maxAge": 600, "healthy": true, "producerJob": "sync-stablecoins", "producerIntervalSec": 900, "endpointMaxAge": 600, "availabilityMaxAge": 600 },
"stablecoin-charts": { "ageSeconds": 323, "maxAge": 3600, "healthy": true, "producerJob": "sync-stablecoin-charts", "producerIntervalSec": 3600, "endpointMaxAge": 3600, "availabilityMaxAge": 3600 },
"usds-status": { "ageSeconds": 47118, "maxAge": 86400, "healthy": true, "producerJob": "sync-usds-status", "producerIntervalSec": 86400, "endpointMaxAge": 86400, "availabilityMaxAge": 86400 },
"fx-rates": {
"ageSeconds": 1223,
"maxAge": 1800,
"healthy": true,
"producerJob": "sync-fx-rates",
"producerIntervalSec": 1800,
"endpointMaxAge": 1800,
"availabilityMaxAge": 1800,
"mode": "live",
"sourceUpdatedAt": 1771855200,
"sourceAgeSeconds": 323,
"sourceStatus": "fresh",
"warning": null,
"consecutiveFallbackRuns": 0
},
"bluechip-ratings": { "ageSeconds": 22815, "maxAge": 86400, "healthy": true, "producerJob": "sync-bluechip", "producerIntervalSec": 86400, "endpointMaxAge": 43200, "availabilityMaxAge": 86400 },
"dex-liquidity": { "ageSeconds": 290, "maxAge": 43200, "healthy": true, "producerJob": "sync-dex-liquidity", "producerIntervalSec": 1800, "endpointMaxAge": 3600, "availabilityMaxAge": 43200 },
"yield-data": { "ageSeconds": 820, "maxAge": 3600, "healthy": true, "producerJob": "sync-yield-data", "producerIntervalSec": 3600, "endpointMaxAge": 3600, "availabilityMaxAge": 3600 },
"dews": { "ageSeconds": 240, "maxAge": 1800, "healthy": true, "producerJob": "compute-dews", "producerIntervalSec": 1800, "endpointMaxAge": 1800, "availabilityMaxAge": 1800 }
},
"blacklist": {
"totalEvents": 13422,
"missingAmounts": 0,
"recentMissingAmounts": 0,
"recentWindowSec": 86400,
"missingRatio": 0
},
"mintBurn": {
"totalEvents": null,
"latestEventTs": null,
"latestHourlyTs": null,
"freshnessAgeSec": null,
"majorStaleCount": 0,
"staleMajorSymbols": [],
"sync": {
"lastSuccessfulSyncAt": 1771856400,
"freshnessStatus": "fresh",
"warning": null,
"criticalLaneHealthy": true
}
},
"circuits": {
"defillama-stablecoins": { "state": "closed", "consecutiveFailures": 0, "lastSuccessAt": 1772190029 },
"coingecko-prices": { "state": "closed", "consecutiveFailures": 0, "lastSuccessAt": 1772190030 }
},
"telegramSummary": {
"totalChats": 142,
"pendingDeliveries": 0,
"lastDispatchAt": 1771856400,
"lastDispatchStatus": "ok",
"safetyAlertSourceState": "ok",
"safetyAlertSourceAgeSeconds": 120,
"safetyAlertsSuppressed": false,
"safetyAlertSourceGeneration": "safety-7.12-alert-source-v1"
}
}
Blacklist ratio fields are still emitted here for the public surface, but threshold-based blacklist severity lives under /api/status data-quality; /api/health only escalates its top-level status when the blacklist health loader itself fails.