URL conventions
How to tell a platform-wide endpoint from a product-specific one, just by looking at its path.
Linra Omni’s partner API follows one structural rule everywhere:
A product-specific endpoint lives under its own product segment, first:
/api/v1/{product}/{resource}(today:/api/v1/scent/orders,/api/v1/scent/cart/{customerRef}, …). Everything else is a platform/global endpoint that works the same way regardless of which products you integrate with.
This is the fleet-wide standard, not just a Scent convention — a future product’s own order
surface lives at /api/v1/{product}/orders the same way (e.g. a future /api/v1/esim/orders),
never a shared or product-suffixed shape. Collections are always plural
(/api/v1/scent/orders, not /api/v1/scent/order).
This is why the API Reference sidebar is itself split into a Platform group and a Scent group — the grouping mirrors this URL rule exactly, one resource at a time.
Platform (global) endpoints
Section titled “Platform (global) endpoints”| Resource | Base path | Why it’s platform-level |
|---|---|---|
| Authentication | /api/v1/auth/token |
Credential exchange is identical for every integration, whatever products it touches. |
| Wallet | /api/v1/wallet/** |
A partner has one wallet, not one per product. |
| Billing | /api/v1/statements/** |
Statements settle across whatever you bought, any product. |
| Commission Periods | /api/v1/commission-periods/** |
The commission operating cycle is a wallet/finance concept, not a product one. |
Scent (product-specific) endpoints
Section titled “Scent (product-specific) endpoints”Everything under /api/v1/scent/** — orders, catalog, cart, checkout, discount codes, returns,
reports — plus Scent’s own webhook subscription door, /api/v1/scent/webhooks/** (see the note
below on webhooks specifically). Orders live at /api/v1/scent/orders (list, create) and
/api/v1/scent/orders/{orderId} (get, tracking) — every product’s orders share the same
status vocabulary (UnifiedOrderStatus), even though each product’s own order resource lives
under its own segment. See Order states & errors for that vocabulary and
Scent for this product’s full endpoint list.
One thing worth knowing about, so it doesn’t read as an inconsistency
Section titled “One thing worth knowing about, so it doesn’t read as an inconsistency”Webhook subscription management is per-product on purpose. You might expect webhook
subscriptions — a generic “notify me of events” mechanism — to live at a neutral, platform-level
path. Linra deliberately chose otherwise: each product gets its own webhook registration door
(/api/v1/scent/webhooks today; a future product would get /api/v1/{product}/webhooks of its
own), because each product defines its own event vocabulary and a partner may only want one
product’s events. The delivery MECHANISM — HMAC signing, retries, the envelope shape — is the same
regardless of which product’s door you’re subscribed through, and is covered once, generally, in
Webhooks & HMAC verification.

