{"service":"observe","environment":"beta","routes":[{"route":"POST /api/ingest","agent":true,"what":"send a batch of log/metric/error/audit events (job credential, or a signed-in page)"},{"route":"GET /api/errors?source=&since=24h&q=&limit=","agent":true,"what":"recent errors by fingerprint: count, today, first and last seen, last message"},{"route":"GET /api/errors/top?source=&limit=","agent":true,"what":"today's top fingerprints by occurrences"},{"route":"GET /api/errors/<source>/<fingerprint>","agent":true,"what":"one error with its first stack"},{"route":"GET /api/diagnostics?source=&device=&level=&since=","agent":true,"what":"recent warn/error logs with their data"},{"route":"GET /api/counts?days=7&source=","agent":true,"what":"per source per day: accepted, dropped by reason, over-budget counts; table sizes and budgets"},{"route":"GET /api/metrics?source=&name=&hours=24","agent":true,"what":"hourly metric rollups and totals"},{"route":"GET /api/audit?actor=&action=&subject=&source=&since=&before=&limit=","agent":true,"what":"audit search, newest first, paged by seq"},{"route":"GET /api/sources","agent":true,"what":"credentials (no secrets) and the pages that may send"},{"route":"GET /api/debug","agent":true,"what":"open debug windows"},{"route":"PUT /api/debug/<device> {minutes}","agent":true,"what":"debug level on for a device for 1-240 minutes (observe rw, Idempotency-Key)"},{"route":"DELETE /api/debug/<device>","agent":true,"what":"end a debug window (observe rw, Idempotency-Key)"},{"route":"POST /api/maintenance/retention","agent":true,"what":"run the retention now, as the daily cron does (observe rw, Idempotency-Key, audited)"},{"route":"GET /api/me","agent":true,"what":"who you are to Observe and your access"},{"route":"GET /api/health","agent":false,"what":"binding proof, no data"},{"route":"GET /api/app/version","agent":false,"what":"build id and commit"}]}