Skip to content
Linra Omni Developer Docs

List orders

List your orders.

Scent Orders

GET/api/v1/scent/orders

Lists the calling partner’s orders, read directly from the canonical order spine (a single BATCHED downstream fetch hydrates the whole page’s pricing — never one call per row). Every row carries the categorized pricing{} breakdown; pass ?include=lines to additionally embed each row’s line items and fulfilment groups (by-id is always full — see GET /api/v1/scent/orders/{orderId} below). status is a REPEATABLE match-any filter (?status=Processing&status=Completed) — omit to include every status; the date window is half-open (createdFrom inclusive, createdTo exclusive). customerRef narrows to one end-customer’s orders — it can only narrow, never widen, your own scope. Scope is always your own partner; no request parameter can widen it. A spine row whose downstream order was never created (e.g. a pre-create rejection) still appears — id: null, status: "Failed", and failureReason explaining why — see the Order states & errors guide.

Query parameters

pageinteger

1-based page number (default 1). A value below 1, or one that is not a whole number, returns 400 VALIDATION_INVALID_PAGE.

pageSizeinteger

Items per page, 1 to 100 (default 20). Any other value returns 400 VALIDATION_INVALID_PAGE_SIZE; it is never silently clamped.

productTypestring (enum)

Scent is the only creatable type today; Topup/Esim are legacy (decommissioned) values kept read-only so historical rows still filter/render.

statusarray of string (enum)

Repeatable match-any filter over the unified order status (e.g. ?status=Processing&status=Completed). Omit to include every status.

createdFromstring (date-time)

Only include orders created on or after this UTC instant (inclusive). 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.

createdTostring (date-time)

Only include orders created strictly before this UTC instant (exclusive — half-open window with createdFrom). 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.

customerRefstring

Optional per-customer filter (max 128 chars) — narrows to one end-customer’s own rows. Can only narrow, never widen, your own scope; omit to include every customer.

includestring

Comma-separated related detail to embed per row. Currently only lines is recognized (embeds lines and fulfillmentGroups). Omit for the lean row (id/status/pricing/deliveryRollup only).

Response

itemsarray of object
pagination.pageinteger
pagination.pageSizeinteger
pagination.totalCountinteger
pagination.totalPagesinteger
pagination.hasPreviousboolean

Whether there is a previous page.

pagination.hasNextboolean

Whether there is a next page.

Other responses

400A query parameter was rejected. Unknown parameter name: VALIDATION_UNKNOWN_QUERY_PARAMETER (details.allowedParameters). Value that does not parse (id, enum, number, boolean): VALIDATION_INVALID_QUERY_PARAMETER (enums add details.allowedValues). Unknown include token: VALIDATION_UNKNOWN_INCLUDE (details.allowedValues). pageSize outside 1–100: VALIDATION_INVALID_PAGE_SIZE. page below 1: VALIDATION_INVALID_PAGE. Unparseable date, or a from/to pair with from after to: VALIDATION_INVALID_DATE. details.errors names every offending parameter.
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/orders \
--header 'Authorization: Bearer $TOKEN'

Response

{
"state": "SUCCESS",
"payload": {
"items": [
{
"id": "5b1e3a1c-9d2e-4f3a-8b1c-9f0a2e3d4c5b",
"externalReference": "string",
"customerRef": "string",
"status": "Processing",
"createdAt": "2026-08-22T09:14:03Z",
"completedAt": "2026-08-22T09:14:03Z",
"failureReason": "string",
"pricing": {
"currency": "SAR",
"subtotal": 0,
"vat": 0,
"shippingFee": {
"amount": 0,
"vatAmount": 0,
"amountWithVat": 0
},
"discount": {
"code": "string",
"amount": 0
},
"total": 0,
"commission": {
"amount": 0,
"vatAmount": 0,
"amountWithVat": 0,
"netAfterCommission": 0
}
},
"lines": [
{
"id": "5b1e3a1c-9d2e-4f3a-8b1c-9f0a2e3d4c5b",
"variantId": "5b1e3a1c-9d2e-4f3a-8b1c-9f0a2e3d4c5b",
"sku": "string",
"brandName": "string",
"scentName": "string",
"sizeMl": 0,
"quantity": 0,
"returnedQuantity": 0,
"unitAmount": 0,
"lineTotal": 0,
"partnerCommission": 0,
"pricingMode": "Retail",
"taxClassification": "string",
"vatRateApplied": 0,
"lineGoodsVatAmount": 0,
"lineCommissionVatAmount": 0,
"unitAmountDisplay": 0,
"lineTotalDisplay": 0,
"partnerCommissionDisplay": 0
}
],
"fulfillmentGroups": [
{
"id": "5b1e3a1c-9d2e-4f3a-8b1c-9f0a2e3d4c5b",
"status": "Pending",
"trackingRef": "string",
"packedAt": "2026-08-22T09:14:03Z",
"shippedAt": "2026-08-22T09:14:03Z",
"deliveredAt": "2026-08-22T09:14:03Z"
}
],
"deliveryRollup": {
"totalGroups": 0,
"deliveredGroups": 0
},
"taxPoint": "2026-08-22T09:14:03Z",
"platformTaxRegistrationNumber": "string",
"partnerTaxRegistrationNumber": "string",
"partnerIsVatRegistered": true,
"displayCurrency": "string",
"rate": 0,
"totalAmountDisplay": 0
}
],
"pagination": {
"page": 0,
"pageSize": 0,
"totalCount": 0,
"totalPages": 0,
"hasPrevious": true,
"hasNext": true
}
},
"details": null
}