Skip to content
Linra Omni Developer Docs

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.

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.

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.