Daily time series of funnel/revenue counts
Max range 92 days. Never a raw scan — served entirely from the precomputed daily aggregate.
/channel/dailyAuthorizationBearer token (JWT) · headerrequiredJWT issued by the external IdP via the OAuth 2.0 authorization-code flow (Kinde in
production; a simulator in test). The client obtains it and sends it as a Bearer token on
every authenticated call. Sarvex's services verify it — issuer, audience, signature
(IdP JWKS), expiry — and read identity and tenant from its claims. Sarvex does not issue
or revoke these tokens. merchant_id/store_id are read from the verified claims (and the
merchant→store mapping), never from the URL. The operator scope is required for
/operator/*. Operators acting on a specific merchant pass the X-Operate-As header,
which is recorded in the audit log.
fromstring<date>yyyy-MM-dd, inclusive. Defaults to 29 days before to. Range with to is capped at 92 days.
tostring<date>yyyy-MM-dd, inclusive. Defaults to today (UTC). Range with from is capped at 92 days.
surfacechannel_surfaceRestrict to one surface. Omit for the all-surfaces combined rollup.
google_ai_modegoogle_geminiopenai_chatgptother_agentunknownstore_idstringOne row per store/surface/day in range.
datachannel_daily_entry[]requiredShow propertiesHide properties
channel_daily_entrydatestring<date>surfacechannel_surfaceClosed multi-surface enum. openai_chatgpt is defined but never populated today — no signal in this codebase distinguishes ChatGPT/ACP traffic from any other non-Google agent yet; it exists so a future surface requires no schema migration. Only ever appears on a single store/surface/day row (channel_daily_entry); never "all" — see channel_surface_or_all for the combined-row field.
google_ai_modegoogle_geminiopenai_chatgptother_agentunknownstore_idstringsessionsintegersessions_confirmedintegersessions minus sessions_inferred.
sessions_inferredintegersessions_reached_cartintegersessions_reached_checkoutintegercheckouts_initiatedintegercheckouts_completedintegerrevenue_minorintegercurrencystring | nullThis row's own currency — a single store/surface/day is never ambiguous the way a summed range can be, so no currency_mixed flag exists here.
discovery_requestsintegerRequest-level count of pre-checkout catalog-search/lookup traffic — never sessionized (no correlation identifier exists for it); never presented as a session count.
rateschannel_ratesDerived at read time from stored counts (R7) — never itself stored.
Show propertiesHide properties
cart_ratenumber<double>sessions_reached_cart / sessions.
checkout_ratenumber<double>sessions_reached_checkout / sessions_reached_cart.
completion_ratenumber<double>checkouts_completed / checkouts_initiated.
aov_minorintegerrevenue_minor / checkouts_completed, zero-safe.
pagepagerequiredShow propertiesHide properties
cursorstring | nullrequiredhas_morebooleanrequiredAuthenticated but not permitted (e.g. non-operator on an operator route).
errorobjectrequiredShow propertiesHide properties
codestringrequiredmessagestringrequireddetailsobject | nullRequest body failed validation.
errorobjectrequiredShow propertiesHide properties
codestringrequiredmessagestringrequireddetailsobject | null