A self-contained Cloudflare Worker that mimics the standardized SM project Reporting API contract consumed by DataPuller::AppApiService.
All /api/v1/reporting/* endpoints require:
Authorization: Bearer <API_KEY>
The default key is test-bearer-token-123 unless an API_KEY environment variable is set on this Worker.
GET /api/v1/reporting/manifestGET /api/v1/reporting/summary?start_date&end_dateGET /api/v1/reporting/time_series?metric&start_date&end_dateGET /api/v1/reporting/breakdowns?metric&dimension&start_date&end_dateGET /api/v1/reporting/events?start_date&end_datecurl -H "Authorization: Bearer test-bearer-token-123" \ "https://reporting-app-sample-api.pages.dev/api/v1/reporting/manifest" curl -H "Authorization: Bearer test-bearer-token-123" \ "https://reporting-app-sample-api.pages.dev/api/v1/reporting/summary?start_date=2026-04-06&end_date=2026-04-12" curl -H "Authorization: Bearer test-bearer-token-123" \ "https://reporting-app-sample-api.pages.dev/api/v1/reporting/breakdowns?metric=entries&dimension=geographic&start_date=2026-04-06&end_date=2026-04-12"
Append one of these query params to any reporting endpoint:
?force_status=500 — server error → orchestrator returns "degraded"?force_status=503 — service unavailable → orchestrator returns "degraded"?force_status=401 — auth failure → orchestrator returns "unreachable"?force_status=invalid_json — non-JSON body → InvalidResponseError?force_status=timeout — hangs 15s → TimeoutErrorYYYY-MM-DD. Default range is the trailing 7 days ending yesterday.geographic, city, device, source, engagement.