Get own sales report time series
Get your own daily order count and revenue for a period.
Reports
/api/v1/scent/reports/sales/time-seriesOne point per Riyadh calendar day the requested window spans, INCLUDING zero-order days, for
YOUR OWN orders only. Same window semantics as the summary endpoint (fromUtc inclusive,
toUtc exclusive, defaults to the last 30 days). The response is a bare array, not a paged
result — there is one row per calendar day in the window, never a page-worth cutoff.
Query parameters
fromUtcstring (date-time)Period start (UTC), inclusive. Defaults to 30 days before toUtc. Read as UTC when it carries no offset; a date-only value means 00:00Z. An unparseable value, or a from/to pair with from after to, returns 400 VALIDATION_INVALID_DATE.
toUtcstring (date-time)Period end (UTC), exclusive. Defaults to now. Read as UTC when it carries no offset; a date-only value means 00:00Z. An unparseable value, or a from/to pair with from after to, returns 400 VALIDATION_INVALID_DATE.
Response
[].dateUtcstring (date-time)The bucket’s KSA-midnight start instant, in UTC.
[].orderCountinteger[].revenuenumber (decimal)Other responses
400An invalid window — fromUtc equal to toUtc (VALIDATION_INVALID_PERIOD), fromUtc after toUtc or an unparseable date (VALIDATION_INVALID_DATE), or a window over 400 days (VALIDATION_REPORT_WINDOW_TOO_LARGE). Any other rejected query input uses the shared query codes (VALIDATION_UNKNOWN_QUERY_PARAMETER, VALIDATION_INVALID_QUERY_PARAMETER, VALIDATION_INVALID_PAGE_SIZE, VALIDATION_INVALID_PAGE, VALIDATION_INVALID_DATE) — see the Errors guide.401No bearer token (UNAUTHORIZED_MISSING_TOKEN), an invalid token (UNAUTHORIZED_INVALID_TOKEN) or an expired one (UNAUTHORIZED_TOKEN_EXPIRED — mint a new token). UPSTREAM_AUTH_FAILED is different: a dependent service refused the Gateway itself. That is a server-side fault — retry later and do NOT re-mint your token. See the Errors guide.403The route is not available to your credential (FORBIDDEN).404No API route matches this path (NOT_FOUND_ROUTE). A missing resource on a real route returns that service’s own NOT_FOUND_* code instead.429Too many requests — see the Rate limits guide. Retry after the Retry-After header (seconds).502A dependent service returned an invalid response (BAD_GATEWAY). Retry with backoff.503The service is temporarily unavailable (SERVICE_UNAVAILABLE). Retry with backoff.504A dependent service did not respond in time (GATEWAY_TIMEOUT). Retry with backoff.curl --request GET \ --url https://api-omni.linra.net/api/v1/scent/reports/sales/time-series \ --header 'Authorization: Bearer $TOKEN'const res = await fetch('https://api-omni.linra.net/api/v1/scent/reports/sales/time-series', { headers: { Authorization: `Bearer ${token}`, },});const { payload } = await res.json();var response = await httpClient.GetAsync("https://api-omni.linra.net/api/v1/scent/reports/sales/time-series");
var envelope = await response.Content.ReadFromJsonAsync<ApiResponse<PagedResult<SalesReportTimeSeriesPoint>>>();Response
{ "state": "SUCCESS", "payload": [ { "dateUtc": "2026-08-22T09:14:03Z", "orderCount": 0, "revenue": 0 } ], "details": null}
