{"openapi":"3.0.3","info":{"title":"Ever API","description":"Wholesale channel API. **[← Back to the developer portal](/)** · [Quickstart](/start) · [Errors](/errors) · [Data model](/ontology) · [Connect your own AI (MCP)](/agents)\n\n> This page lists only **the business endpoints your code calls**. Registering webhooks, requesting plans and checking your own access are all done by clicking in the [portal](/portal/me) — no code needed.\n\nStart by exchanging credentials at `POST /api/v1/auth/token` (body `{\"channel_code\":\"…\",\"secret\":\"…\"}`; no credentials yet? use the sandbox `sandbox` / `sandbox`), then click Authorize at the top right and paste the token in. For write endpoints, send an `Idempotency-Key` header to guard against duplicate submissions.\n\nContract version 1.0.0 (also in the `X-API-Version` header of every response). Our promise: **fields are only ever added, never removed, and existing fields never change meaning** — such changes do not bump the version and your code keeps working. A change that would break existing code bumps the major version under a new `/v2/` prefix, with the old version kept running for at least 6 months.","version":"1.4.0"},"tags":[{"name":"Auth","description":"Exchange your credentials for an access token. Every endpoint except the warehouse list needs one."},{"name":"Warehouses & stock","description":"Warehouse master data and stock. **For routine syncing use /stock/changes** rather than pulling a whole warehouse every time (7.2MB vs a few hundred bytes)."},{"name":"Products","description":"Product master data: names, images, descriptions, variants. **No stock quantities** — those live under stock."},{"name":"Prices","description":"The prices specific to your channel."},{"name":"Wholesale orders","description":"Wholesale ordering and lookup. Orders are **drafts by default** and need someone to confirm them in the ERP."},{"name":"Drop-ship orders","description":"Drop-ship (single-item fulfilment) ordering and lookup, with recipient details."},{"name":"Shipments & logistics","description":"Shipment lookup: whether it went out and what was in it; tracking events and customs ID upload (⚠️ off by default, apply to enable)."},{"name":"Stock reservations","description":"Channel stock reservations (locked stock)."},{"name":"Finance","description":"Reconciliation: balances, transactions, monthly bills, refund notes, freight notes. Read-only, and only for tokens obtained with an OMS account sign-in."},{"name":"Carts","description":"The OMS website cart, read and written per login account. System integrations usually skip it and order directly."},{"name":"Me","description":""},{"name":"Feeds","description":""}],"components":{"securitySchemes":{"bearer":{"type":"http","scheme":"bearer","bearerFormat":"JWT"}},"schemas":{}},"paths":{"/api/v1/auth/token":{"post":{"parameters":[],"operationId":"postApiV1AuthToken","summary":"Exchange for an access token: client_credentials (client_id = channel code, client_secret = secret) or password (username = OMS login account, password = OMS password) → Bearer access_token","tags":["Auth"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"grant_type":{"anyOf":[{"const":"client_credentials","type":"string"},{"const":"password","type":"string"}],"description":"OAuth2 grant type: client_credentials (channel code + secret) or password (OMS account + password). May be omitted: if username is given it is treated as password, otherwise client_credentials."},"client_id":{"minLength":1,"maxLength":32,"pattern":"^[A-Za-z0-9_-]+$","type":"string","description":"Channel code (the OAuth2 client_id), issued by your account manager; for the client_credentials grant. Use sandbox to try things out."},"client_secret":{"minLength":1,"maxLength":256,"type":"string","description":"Channel secret (the OAuth2 client_secret); for the client_credentials grant. Use sandbox to try things out (the sandbox returns demo data and never touches real stock)."},"username":{"minLength":1,"maxLength":64,"type":"string","description":"Your OMS website login account (password grant), e.g. 100470admin; we recommend a dedicated sub-account for system integration. Use sandbox to try things out."},"password":{"minLength":1,"maxLength":256,"type":"string","description":"Your OMS login password (password grant). Only handled at token exchange — the gateway never stores or logs it. Use sandbox to try things out."}}}},"multipart/form-data":{"schema":{"type":"object","properties":{"grant_type":{"anyOf":[{"const":"client_credentials","type":"string"},{"const":"password","type":"string"}]},"client_id":{"minLength":1,"maxLength":32,"pattern":"^[A-Za-z0-9_-]+$","type":"string"},"client_secret":{"minLength":1,"maxLength":256,"type":"string"},"username":{"minLength":1,"maxLength":64,"type":"string"},"password":{"minLength":1,"maxLength":256,"type":"string"}}}},"text/plain":{"schema":{"type":"object","properties":{"grant_type":{"anyOf":[{"const":"client_credentials","type":"string"},{"const":"password","type":"string"}]},"client_id":{"minLength":1,"maxLength":32,"pattern":"^[A-Za-z0-9_-]+$","type":"string"},"client_secret":{"minLength":1,"maxLength":256,"type":"string"},"username":{"minLength":1,"maxLength":64,"type":"string"},"password":{"minLength":1,"maxLength":256,"type":"string"}}}}}},"responses":{"200":{}}}},"/api/v1/me":{"get":{"operationId":"getApiV1Me","summary":"Who this token is: account, channel, usable warehouses, permissions, business switches (OMS profile for OMS logins; warehouse allowlist and gateway scopes for channel-secret tokens)","tags":["Auth"],"security":[{"bearer":[]}],"responses":{"200":{}}}},"/api/v1/me/readiness":{"get":{"operationId":"getApiV1MeReadiness","summary":"How far you have got: exchanged a token / can read the catalogue / can create an order / can see what is short / can submit. Every step you have not reached comes with what to do about it. Note this only sees calls that came through this gateway, and \"can submit\" does not mean the business runs end to end — shipping, reconciliation and returns come after.","tags":["Me"],"security":[{"bearer":[]}],"responses":{"200":{}}}},"/api/v1/shipping-methods":{"get":{"operationId":"getApiV1Shipping-methods","summary":"Shipping methods available to your account. Put shipping_method_id into shipping when creating a wholesale order","tags":["Wholesale orders"],"security":[{"bearer":[]}],"responses":{"200":{}}}},"/api/v1/carriers":{"get":{"operationId":"getApiV1Carriers","summary":"Carriers your account can choose from. carrier_id is optional on a wholesale order","tags":["Wholesale orders"],"security":[{"bearer":[]}],"responses":{"200":{}}}},"/api/v1/addresses":{"get":{"operationId":"getApiV1Addresses","summary":"Your OMS delivery address book. Put address_id into shipping when creating a wholesale order","tags":["Wholesale orders"],"security":[{"bearer":[]}],"responses":{"200":{}}}},"/api/v1/balances":{"get":{"operationId":"getApiV1Balances","summary":"Your account balances (Australia / China / New Zealand — whichever you have)","tags":["Finance"],"security":[{"bearer":[]}],"responses":{"200":{}}}},"/api/v1/transactions":{"get":{"parameters":[{"schema":{"type":"string","maxLength":10,"pattern":"^[0-9]{4}-[0-9]{2}-[0-9]{2}$"},"in":"query","name":"start_date","required":false,"description":"Start date, YYYY-MM-DD (inclusive)."},{"schema":{"type":"string","maxLength":10,"pattern":"^[0-9]{4}-[0-9]{2}-[0-9]{2}$"},"in":"query","name":"end_date","required":false,"description":"End date, YYYY-MM-DD (inclusive)."},{"schema":{"anyOf":[{"const":"recharge","type":"string"},{"const":"payment","type":"string"},{"const":"refund","type":"string"}]},"in":"query","name":"type","required":false,"description":"Show only one kind of transaction (optional): recharge (top-up) / payment (deduction) / refund. Omit for all."},{"schema":{"minimum":1,"anyOf":[{"format":"numeric","default":0,"type":"string"},{"minimum":1,"type":"number"}]},"in":"query","name":"page","required":false,"description":"Page number, from 1 (optional). Whole-warehouse stock returns everything when omitted — 30,000+ rows, paging recommended."},{"schema":{"minimum":1,"maximum":2000,"anyOf":[{"format":"numeric","default":0,"type":"string"},{"minimum":1,"maximum":2000,"type":"number"}]},"in":"query","name":"page_size","required":false,"description":"Rows per page (optional), max 2000."}],"operationId":"getApiV1Transactions","summary":"Transactions (top-up / payment / refund) with the balance after each; amount_total is the page total. The main reconciliation table","tags":["Finance"],"security":[{"bearer":[]}],"responses":{"200":{}}}},"/api/v1/bills":{"get":{"parameters":[{"schema":{"type":"string","maxLength":10,"pattern":"^[0-9]{4}-[0-9]{2}-[0-9]{2}$"},"in":"query","name":"start_date","required":false,"description":"Start date, YYYY-MM-DD (inclusive)."},{"schema":{"type":"string","maxLength":10,"pattern":"^[0-9]{4}-[0-9]{2}-[0-9]{2}$"},"in":"query","name":"end_date","required":false,"description":"End date, YYYY-MM-DD (inclusive)."},{"schema":{"minimum":1,"anyOf":[{"format":"numeric","default":0,"type":"string"},{"minimum":1,"type":"number"}]},"in":"query","name":"page","required":false,"description":"Page number, from 1 (optional). Whole-warehouse stock returns everything when omitted — 30,000+ rows, paging recommended."},{"schema":{"minimum":1,"maximum":2000,"anyOf":[{"format":"numeric","default":0,"type":"string"},{"minimum":1,"maximum":2000,"type":"number"}]},"in":"query","name":"page_size","required":false,"description":"Rows per page (optional), max 2000."}],"operationId":"getApiV1Bills","summary":"Monthly bills by warehouse and month, including whether they are paid","tags":["Finance"],"security":[{"bearer":[]}],"responses":{"200":{}}}},"/api/v1/refunds":{"get":{"parameters":[{"schema":{"type":"string","maxLength":10,"pattern":"^[0-9]{4}-[0-9]{2}-[0-9]{2}$"},"in":"query","name":"start_date","required":false,"description":"Start date, YYYY-MM-DD (inclusive)."},{"schema":{"type":"string","maxLength":10,"pattern":"^[0-9]{4}-[0-9]{2}-[0-9]{2}$"},"in":"query","name":"end_date","required":false,"description":"End date, YYYY-MM-DD (inclusive)."},{"schema":{"minimum":1,"anyOf":[{"format":"numeric","default":0,"type":"string"},{"minimum":1,"type":"number"}]},"in":"query","name":"page","required":false,"description":"Page number, from 1 (optional). Whole-warehouse stock returns everything when omitted — 30,000+ rows, paging recommended."},{"schema":{"minimum":1,"maximum":2000,"anyOf":[{"format":"numeric","default":0,"type":"string"},{"minimum":1,"maximum":2000,"type":"number"}]},"in":"query","name":"page_size","required":false,"description":"Rows per page (optional), max 2000."}],"operationId":"getApiV1Refunds","summary":"Refund notes (wholesale / drop-ship) with review status and reason","tags":["Finance"],"security":[{"bearer":[]}],"responses":{"200":{}}}},"/api/v1/freight-bills":{"get":{"parameters":[{"schema":{"type":"string","maxLength":10,"pattern":"^[0-9]{4}-[0-9]{2}-[0-9]{2}$"},"in":"query","name":"start_date","required":false,"description":"Start date, YYYY-MM-DD (inclusive)."},{"schema":{"type":"string","maxLength":10,"pattern":"^[0-9]{4}-[0-9]{2}-[0-9]{2}$"},"in":"query","name":"end_date","required":false,"description":"End date, YYYY-MM-DD (inclusive)."},{"schema":{"minimum":1,"anyOf":[{"format":"numeric","default":0,"type":"string"},{"minimum":1,"type":"number"}]},"in":"query","name":"page","required":false,"description":"Page number, from 1 (optional). Whole-warehouse stock returns everything when omitted — 30,000+ rows, paging recommended."},{"schema":{"minimum":1,"maximum":2000,"anyOf":[{"format":"numeric","default":0,"type":"string"},{"minimum":1,"maximum":2000,"type":"number"}]},"in":"query","name":"page_size","required":false,"description":"Rows per page (optional), max 2000."}],"operationId":"getApiV1Freight-bills","summary":"Freight notes (carrier, tracking number, cartons, amount)","tags":["Finance"],"security":[{"bearer":[]}],"responses":{"200":{}}}},"/api/v1/warehouses":{"get":{"operationId":"getApiV1Warehouses","summary":"Warehouse list: code, name, country, company, aggregate / physical, ships, currency","tags":["Warehouses & stock"],"responses":{"200":{}}}},"/api/v1/warehouses/{warehouse_code}/stock":{"get":{"parameters":[{"schema":{"anyOf":[{"const":"AU","type":"string"},{"const":"AUSYD2","type":"string"},{"const":"AUSYD1","type":"string"},{"const":"CN","type":"string"},{"const":"CHNZJ1","type":"string"}]},"in":"path","name":"warehouse_code","required":true,"description":"Warehouse code: AU (Australia, all warehouses — aggregate view), AUSYD2 (Sydney main, Rosehill), AUSYD1 (Sydney accessories), CN (China, all warehouses — aggregate view), CHNZJ1 (Zhenjiang). Full list: GET /api/v1/warehouses."},{"schema":{"type":"string","minLength":1,"maxLength":64,"pattern":"^[A-Za-z0-9_./-]+$"},"in":"query","name":"sku","required":false,"description":"SKU / barcode — the **colour + size** level, e.g. OB0021611. For the whole style use product_code instead."},{"schema":{"type":"string","minLength":1,"maxLength":64,"pattern":"^[A-Za-z0-9_./-]+$"},"in":"query","name":"product_code","required":false,"description":"Style code — **one style** (every colour / size variant), e.g. OB002. For a single variant use sku. When querying prices, several can be comma-separated."},{"schema":{"minimum":1,"anyOf":[{"format":"numeric","default":0,"type":"string"},{"minimum":1,"type":"number"}]},"in":"query","name":"page","required":false,"description":"Page number, from 1 (optional). Whole-warehouse stock returns everything when omitted — 30,000+ rows, paging recommended."},{"schema":{"minimum":1,"maximum":2000,"anyOf":[{"format":"numeric","default":0,"type":"string"},{"minimum":1,"maximum":2000,"type":"number"}]},"in":"query","name":"page_size","required":false,"description":"Rows per page (optional), max 2000."}],"operationId":"getApiV1WarehousesByWarehouse_codeStock","summary":"Stock in one warehouse: no filter = whole warehouse (page / page_size; X-Stock-Version header for incremental sync); sku= one variant; product_code= all variants of a style","tags":["Warehouses & stock"],"security":[{"bearer":[]}],"responses":{"200":{}}}},"/api/v1/warehouses/{warehouse_code}/stock/changes":{"get":{"parameters":[{"schema":{"anyOf":[{"const":"AU","type":"string"},{"const":"AUSYD2","type":"string"},{"const":"AUSYD1","type":"string"},{"const":"CN","type":"string"},{"const":"CHNZJ1","type":"string"}]},"in":"path","name":"warehouse_code","required":true,"description":"Warehouse code: AU (Australia, all warehouses — aggregate view), AUSYD2 (Sydney main, Rosehill), AUSYD1 (Sydney accessories), CN (China, all warehouses — aggregate view), CHNZJ1 (Zhenjiang). Full list: GET /api/v1/warehouses."},{"schema":{"minimum":0,"anyOf":[{"format":"numeric","default":0,"type":"string"},{"minimum":0,"type":"number"}]},"in":"query","name":"since","required":false,"description":"The version you received last time. Pass 0 on the first sync (you will get needs_full_sync=true, meaning do one full pull first)."},{"schema":{"minimum":1,"maximum":5000,"anyOf":[{"format":"numeric","default":0,"type":"string"},{"minimum":1,"maximum":5000,"type":"number"}]},"in":"query","name":"limit","required":false,"description":"Max changes returned this call (optional, default 1000, max 5000). **Soft limit**: changes in one version are never split, so you may get slightly more."}],"operationId":"getApiV1WarehousesByWarehouse_codeStockChanges","summary":"Stock changes (incremental). Pass since=the last version; while has_more=true call again with the new version. needs_full_sync=true means since is too old — do one full pull","tags":["Warehouses & stock"],"security":[{"bearer":[]}],"responses":{"200":{}}}},"/api/v1/products":{"get":{"parameters":[{"schema":{"anyOf":[{"const":"AU","type":"string"},{"const":"AUSYD2","type":"string"},{"const":"AUSYD1","type":"string"},{"const":"CN","type":"string"},{"const":"CHNZJ1","type":"string"}]},"in":"query","name":"warehouse_code","required":true,"description":"Warehouse code: AU (Australia, all warehouses — aggregate view), AUSYD2 (Sydney main, Rosehill), AUSYD1 (Sydney accessories), CN (China, all warehouses — aggregate view), CHNZJ1 (Zhenjiang). Full list: GET /api/v1/warehouses."},{"schema":{"type":"string","maxLength":128},"in":"query","name":"search","required":false,"description":"Search keyword (optional); fuzzy match on style code or product name."},{"schema":{"anyOf":[{"const":"wholesale","type":"string"},{"const":"dropship","type":"string"}]},"in":"query","name":"business_type","required":false,"description":"Business type (optional): wholesale or dropship. Omitted = both."},{"schema":{"minimum":1,"anyOf":[{"format":"numeric","default":0,"type":"string"},{"minimum":1,"type":"number"}]},"in":"query","name":"page","required":false,"description":"Page number, from 1 (optional). Whole-warehouse stock returns everything when omitted — 30,000+ rows, paging recommended."},{"schema":{"minimum":1,"maximum":2000,"anyOf":[{"format":"numeric","default":0,"type":"string"},{"minimum":1,"maximum":2000,"type":"number"}]},"in":"query","name":"page_size","required":false,"description":"Rows per page (optional), max 2000."}],"operationId":"getApiV1Products","summary":"Products in one warehouse (deduplicated by style code, with prices)","tags":["Products"],"security":[{"bearer":[]}],"responses":{"200":{}}}},"/api/v1/products/{product_code}":{"get":{"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":64,"pattern":"^[A-Za-z0-9_./-]+$"},"in":"path","name":"product_code","required":true,"description":"Style code — **one style** (every colour / size variant), e.g. OB002. For a single variant use sku. When querying prices, several can be comma-separated."},{"schema":{"anyOf":[{"const":"AU","type":"string"},{"const":"AUSYD2","type":"string"},{"const":"AUSYD1","type":"string"},{"const":"CN","type":"string"},{"const":"CHNZJ1","type":"string"}]},"in":"query","name":"warehouse_code","required":false,"description":"Warehouse code: AU (Australia, all warehouses — aggregate view), AUSYD2 (Sydney main, Rosehill), AUSYD1 (Sydney accessories), CN (China, all warehouses — aggregate view), CHNZJ1 (Zhenjiang). Full list: GET /api/v1/warehouses."}],"operationId":"getApiV1ProductsByProduct_code","summary":"Product detail by style code (images / description / prices + all variants; Chinese name / weight / materials not yet fed from upstream, present only when set)","tags":["Products"],"security":[{"bearer":[]}],"responses":{"200":{}}}},"/api/v1/skus/{sku}":{"get":{"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":64,"pattern":"^[A-Za-z0-9_./-]+$"},"in":"path","name":"sku","required":true,"description":"SKU / barcode — the **colour + size** level, e.g. OB0021611. For the whole style use product_code instead."},{"schema":{"anyOf":[{"const":"AU","type":"string"},{"const":"AUSYD2","type":"string"},{"const":"AUSYD1","type":"string"},{"const":"CN","type":"string"},{"const":"CHNZJ1","type":"string"}]},"in":"query","name":"warehouse_code","required":false,"description":"Warehouse code: AU (Australia, all warehouses — aggregate view), AUSYD2 (Sydney main, Rosehill), AUSYD1 (Sydney accessories), CN (China, all warehouses — aggregate view), CHNZJ1 (Zhenjiang). Full list: GET /api/v1/warehouses."}],"operationId":"getApiV1SkusBySku","summary":"Variant detail by SKU (one object)","tags":["Products"],"security":[{"bearer":[]}],"responses":{"200":{}}}},"/api/v1/dropship-products":{"get":{"parameters":[{"schema":{"anyOf":[{"const":"AU","type":"string"},{"const":"AUSYD2","type":"string"},{"const":"AUSYD1","type":"string"},{"const":"CN","type":"string"},{"const":"CHNZJ1","type":"string"}]},"in":"query","name":"warehouse_code","required":true,"description":"Warehouse code: AU (Australia, all warehouses — aggregate view), AUSYD2 (Sydney main, Rosehill), AUSYD1 (Sydney accessories), CN (China, all warehouses — aggregate view), CHNZJ1 (Zhenjiang). Full list: GET /api/v1/warehouses."},{"schema":{"type":"string","maxLength":128},"in":"query","name":"search","required":false,"description":"Search keyword (optional); fuzzy match on style code or product name."},{"schema":{"anyOf":[{"const":"wholesale","type":"string"},{"const":"dropship","type":"string"}]},"in":"query","name":"business_type","required":false,"description":"Business type (optional): wholesale or dropship. Omitted = both."},{"schema":{"minimum":1,"anyOf":[{"format":"numeric","default":0,"type":"string"},{"minimum":1,"type":"number"}]},"in":"query","name":"page","required":false,"description":"Page number, from 1 (optional). Whole-warehouse stock returns everything when omitted — 30,000+ rows, paging recommended."},{"schema":{"minimum":1,"maximum":2000,"anyOf":[{"format":"numeric","default":0,"type":"string"},{"minimum":1,"maximum":2000,"type":"number"}]},"in":"query","name":"page_size","required":false,"description":"Rows per page (optional), max 2000."}],"operationId":"getApiV1Dropship-products","summary":"Products on sale in the drop-ship system (paged)","tags":["Products"],"security":[{"bearer":[]}],"responses":{"200":{}}}},"/api/v1/prices":{"get":{"parameters":[{"schema":{"anyOf":[{"const":"AU","type":"string"},{"const":"AUSYD2","type":"string"},{"const":"AUSYD1","type":"string"},{"const":"CN","type":"string"},{"const":"CHNZJ1","type":"string"}]},"in":"query","name":"warehouse_code","required":true,"description":"Warehouse code: AU (Australia, all warehouses — aggregate view), AUSYD2 (Sydney main, Rosehill), AUSYD1 (Sydney accessories), CN (China, all warehouses — aggregate view), CHNZJ1 (Zhenjiang). Full list: GET /api/v1/warehouses."},{"schema":{"type":"string","maxLength":4096},"in":"query","name":"product_code","required":false,"description":"Style code — **one style** (every colour / size variant), e.g. OB002. For a single variant use sku. When querying prices, several can be comma-separated."},{"schema":{"type":"string","maxLength":128},"in":"query","name":"search","required":false,"description":"Search keyword (optional); fuzzy match on style code or product name."},{"schema":{"minimum":1,"anyOf":[{"format":"numeric","default":0,"type":"string"},{"minimum":1,"type":"number"}]},"in":"query","name":"page","required":false,"description":"Page number, from 1 (optional). Whole-warehouse stock returns everything when omitted — 30,000+ rows, paging recommended."},{"schema":{"minimum":1,"maximum":2000,"anyOf":[{"format":"numeric","default":0,"type":"string"},{"minimum":1,"maximum":2000,"type":"number"}]},"in":"query","name":"page_size","required":false,"description":"Rows per page (optional), max 2000."}],"operationId":"getApiV1Prices","summary":"Your channel's product prices (paged; product_code may be comma-separated)","tags":["Prices"],"security":[{"bearer":[]}],"responses":{"200":{}}}},"/api/v1/orders":{"post":{"parameters":[],"operationId":"postApiV1Orders","summary":"Create a wholesale order (draft by default; auto_confirm=true submits for review)","tags":["Wholesale orders"],"security":[{"bearer":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["warehouse_code","lines"],"properties":{"warehouse_code":{"anyOf":[{"const":"AU","type":"string"},{"const":"AUSYD2","type":"string"},{"const":"AUSYD1","type":"string"},{"const":"CN","type":"string"},{"const":"CHNZJ1","type":"string"}],"description":"Warehouse code: AU (Australia, all warehouses — aggregate view), AUSYD2 (Sydney main, Rosehill), AUSYD1 (Sydney accessories), CN (China, all warehouses — aggregate view), CHNZJ1 (Zhenjiang). Full list: GET /api/v1/warehouses."},"lines":{"minItems":1,"maxItems":1000,"type":"array","items":{"type":"object","required":["sku","quantity"],"properties":{"sku":{"minLength":1,"maxLength":64,"type":"string","description":"SKU / barcode — the **colour + size** level, e.g. OB0021611. For the whole style use product_code instead."},"quantity":{"minimum":0,"maximum":99999,"anyOf":[{"format":"integer","default":0,"type":"string"},{"minimum":0,"maximum":99999,"type":"integer"}],"description":"Quantity, a positive integer, e.g. 2. In reservation adjustments / carts, 0 removes the line."}}},"description":"Line array, each { sku, quantity }. At least one; quantity=0 removes the line when adjusting a reservation."},"note":{"maxLength":500,"type":"string","description":"Remark (optional, up to 500 characters)."},"client_order_number":{"maxLength":64,"type":"string","description":"The order number in your own system (the one you sent when creating the drop-ship order)."},"auto_confirm":{"type":"boolean","description":"Submit immediately (optional). **Omitted = draft only**, someone confirms it in the ERP before it takes effect — this default is intentional. A submitted drop-ship order is allocated at once and can no longer be edited."},"shipping":{"type":"object","properties":{"shipping_method_id":{"minLength":1,"maxLength":64,"type":"string","description":"Shipping method id, from GET /api/v1/shipping-methods."},"carrier_id":{"minLength":1,"maxLength":64,"type":"string","description":"Carrier id (optional), from GET /api/v1/carriers."},"address_id":{"minLength":1,"maxLength":64,"type":"string","description":"Delivery address id, from GET /api/v1/addresses. The address book is maintained on the OMS site under User → Preferences."},"pickup_at":{"maxLength":32,"type":"string","description":"Pickup time (optional, only for the pickup method), e.g. 2026-09-10T14:00:00."}},"description":"Shipping info (required when placing a wholesale order signed in with an OMS account). Inside: shipping_method_id (see GET /api/v1/shipping-methods), address_id (see GET /api/v1/addresses), carrier_id (optional), pickup_at (only for pickup). Omit the whole object to use the defaults set on your OMS account; if none are set you get an error pointing here."}}}},"multipart/form-data":{"schema":{"type":"object","required":["warehouse_code","lines"],"properties":{"warehouse_code":{"anyOf":[{"const":"AU","type":"string"},{"const":"AUSYD2","type":"string"},{"const":"AUSYD1","type":"string"},{"const":"CN","type":"string"},{"const":"CHNZJ1","type":"string"}]},"lines":{"minItems":1,"maxItems":1000,"type":"array","items":{"type":"object","required":["sku","quantity"],"properties":{"sku":{"minLength":1,"maxLength":64,"type":"string"},"quantity":{"minimum":0,"maximum":99999,"anyOf":[{"format":"integer","default":0,"type":"string"},{"minimum":0,"maximum":99999,"type":"integer"}]}}}},"note":{"maxLength":500,"type":"string"},"client_order_number":{"maxLength":64,"type":"string"},"auto_confirm":{"type":"boolean"},"shipping":{"type":"object","properties":{"shipping_method_id":{"minLength":1,"maxLength":64,"type":"string"},"carrier_id":{"minLength":1,"maxLength":64,"type":"string"},"address_id":{"minLength":1,"maxLength":64,"type":"string"},"pickup_at":{"maxLength":32,"type":"string"}}}}}},"text/plain":{"schema":{"type":"object","required":["warehouse_code","lines"],"properties":{"warehouse_code":{"anyOf":[{"const":"AU","type":"string"},{"const":"AUSYD2","type":"string"},{"const":"AUSYD1","type":"string"},{"const":"CN","type":"string"},{"const":"CHNZJ1","type":"string"}]},"lines":{"minItems":1,"maxItems":1000,"type":"array","items":{"type":"object","required":["sku","quantity"],"properties":{"sku":{"minLength":1,"maxLength":64,"type":"string"},"quantity":{"minimum":0,"maximum":99999,"anyOf":[{"format":"integer","default":0,"type":"string"},{"minimum":0,"maximum":99999,"type":"integer"}]}}}},"note":{"maxLength":500,"type":"string"},"client_order_number":{"maxLength":64,"type":"string"},"auto_confirm":{"type":"boolean"},"shipping":{"type":"object","properties":{"shipping_method_id":{"minLength":1,"maxLength":64,"type":"string"},"carrier_id":{"minLength":1,"maxLength":64,"type":"string"},"address_id":{"minLength":1,"maxLength":64,"type":"string"},"pickup_at":{"maxLength":32,"type":"string"}}}}}}}},"responses":{"200":{}}},"get":{"parameters":[{"description":"你自己那边的单号（下单时传过的）——对账时拿它找回我们这边的单","schema":{"type":"string","maxLength":64},"in":"query","name":"client_order_number","required":false},{"schema":{"type":"string","maxLength":10,"pattern":"^[0-9]{4}-[0-9]{2}-[0-9]{2}$"},"in":"query","name":"start_date","required":true,"description":"Start date, YYYY-MM-DD (inclusive)."},{"schema":{"type":"string","maxLength":10,"pattern":"^[0-9]{4}-[0-9]{2}-[0-9]{2}$"},"in":"query","name":"end_date","required":true,"description":"End date, YYYY-MM-DD (inclusive)."},{"description":"逗号分隔：draft / confirmed / cancelled","schema":{"type":"string","maxLength":128,"pattern":"^[A-Za-z0-9,\\s_-]*$"},"in":"query","name":"status","required":false}],"operationId":"getApiV1Orders","summary":"Your channel's wholesale orders within a date range","tags":["Wholesale orders"],"security":[{"bearer":[]}],"responses":{"200":{}}}},"/api/v1/orders/{order_id}":{"get":{"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":64},"in":"path","name":"order_id","required":true,"description":"Wholesale order id, from the order list. Own channel only."}],"operationId":"getApiV1OrdersByOrder_id","summary":"Wholesale order detail (ownership checked)","tags":["Wholesale orders"],"security":[{"bearer":[]}],"responses":{"200":{}}},"delete":{"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":64},"in":"path","name":"order_id","required":true,"description":"Wholesale order id, from the order list. Own channel only."}],"operationId":"deleteApiV1OrdersByOrder_id","summary":"Void the wholesale order and release the stock it was holding. Orders already shipped cannot be voided","tags":["Wholesale orders"],"security":[{"bearer":[]}],"responses":{"200":{}}}},"/api/v1/orders/{order_id}/allocation-preview":{"post":{"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":64},"in":"path","name":"order_id","required":true,"description":"Wholesale order id, from the order list. Own channel only."}],"operationId":"postApiV1OrdersByOrder_idAllocation-preview","summary":"Allocation preview: per line, how much can be allocated, how much is owed, when pre-sale stock arrives, the amount payable and whether the balance covers it. Note: the preview holds stock — submit or cancel afterwards","tags":["Wholesale orders"],"security":[{"bearer":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"use_reservation":{"type":"boolean","description":"Whether to draw on your reserved (locked) stock for this allocation. Omit = do not use it."}}}},"multipart/form-data":{"schema":{"type":"object","properties":{"use_reservation":{"type":"boolean"}}}},"text/plain":{"schema":{"type":"object","properties":{"use_reservation":{"type":"boolean"}}}}}},"responses":{"200":{}}}},"/api/v1/orders/{order_id}/submit":{"post":{"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":64},"in":"path","name":"order_id","required":true,"description":"Wholesale order id, from the order list. Own channel only."}],"operationId":"postApiV1OrdersByOrder_idSubmit","summary":"Submit the wholesale order (lines can no longer be changed). payment_method defaults to invoice (pay on invoice)","tags":["Wholesale orders"],"security":[{"bearer":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"payment_method":{"anyOf":[{"const":"balance","type":"string"},{"const":"wechat","type":"string"},{"const":"alipay","type":"string"},{"const":"invoice","type":"string"}],"description":"How to pay: balance / invoice (pay on invoice) / wechat / alipay. Defaults to invoice, i.e. monthly settlement."},"use_reservation":{"type":"boolean","description":"Whether to draw on your reserved (locked) stock for this allocation. Omit = do not use it."}}}},"multipart/form-data":{"schema":{"type":"object","properties":{"payment_method":{"anyOf":[{"const":"balance","type":"string"},{"const":"wechat","type":"string"},{"const":"alipay","type":"string"},{"const":"invoice","type":"string"}]},"use_reservation":{"type":"boolean"}}}},"text/plain":{"schema":{"type":"object","properties":{"payment_method":{"anyOf":[{"const":"balance","type":"string"},{"const":"wechat","type":"string"},{"const":"alipay","type":"string"},{"const":"invoice","type":"string"}]},"use_reservation":{"type":"boolean"}}}}}},"responses":{"200":{}}}},"/api/v1/feeds/products":{"get":{"parameters":[{"schema":{"anyOf":[{"const":"AU","type":"string"},{"const":"AUSYD2","type":"string"},{"const":"AUSYD1","type":"string"},{"const":"CN","type":"string"},{"const":"CHNZJ1","type":"string"}]},"in":"query","name":"warehouse_code","required":true,"description":"Warehouse code: AU (Australia, all warehouses — aggregate view), AUSYD2 (Sydney main, Rosehill), AUSYD1 (Sydney accessories), CN (China, all warehouses — aggregate view), CHNZJ1 (Zhenjiang). Full list: GET /api/v1/warehouses."},{"description":"csv（默认）/ xml / json","schema":{"type":"string","maxLength":8},"in":"query","name":"format","required":false},{"description":"你站上的商品页地址模板，里面用 {product_code} 或 {sku} 占位，我们替你拼。**不给就不出 link**，而 link 是必填项","schema":{"type":"string","maxLength":300},"in":"query","name":"link_template","required":false},{"description":"图片链接的绝对前缀。不给用服务端配置。**必须走加密链接（TLS）**，明文图片链接各平台基本都会拒","schema":{"type":"string","maxLength":200},"in":"query","name":"image_base","required":false},{"description":"强制重拼。**不会再给你旧的那份** —— 回 202，拼好了再来取","schema":{"type":"boolean"},"in":"query","name":"rebuild","required":false}],"operationId":"getApiV1FeedsProducts","summary":"Build a product feed (Google Merchant spec — this is also the bulk export): produces csv / xml / json in one go and stores them for scheduled fetch. Requires an OMS account login: only an OMS session can return YOUR channel price, and a feed built from the master price would have you selling at the wrong price.","tags":["Feeds"],"security":[{"bearer":[]}],"responses":{"200":{}}}},"/api/v1/feeds/products/status":{"get":{"parameters":[{"schema":{"anyOf":[{"const":"AU","type":"string"},{"const":"AUSYD2","type":"string"},{"const":"AUSYD1","type":"string"},{"const":"CN","type":"string"},{"const":"CHNZJ1","type":"string"}]},"in":"query","name":"warehouse_code","required":true,"description":"Warehouse code: AU (Australia, all warehouses — aggregate view), AUSYD2 (Sydney main, Rosehill), AUSYD1 (Sydney accessories), CN (China, all warehouses — aggregate view), CHNZJ1 (Zhenjiang). Full list: GET /api/v1/warehouses."}],"operationId":"getApiV1FeedsProductsStatus","summary":"Check where the product feed build stands: building / done / failed (with the failure reason), plus the row count, build time and issues of the latest artifact. A build takes minutes and runs in the background — nobody sees a background failure, so the reason surfaces here.","tags":["Feeds"],"security":[{"bearer":[]}],"responses":{"200":{}}}},"/feeds/{channel}/{file}":{"get":{"operationId":"getFeedsByChannelByFile","summary":"下载商品 feed（HTTP Basic；给 Google Merchant 这类定时抓取用）。带 ETag / Last-Modified / 构建时间","tags":["Feeds"],"parameters":[{"schema":{"type":"string"},"in":"path","name":"channel","required":true},{"schema":{"type":"string"},"in":"path","name":"file","required":true}],"responses":{"200":{}}}},"/api/v1/dropship-orders":{"post":{"parameters":[],"operationId":"postApiV1Dropship-orders","summary":"Create a drop-ship order (recipient + lines)","tags":["Drop-ship orders"],"security":[{"bearer":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["warehouse_code","sku","quantity","recipient"],"properties":{"warehouse_code":{"anyOf":[{"const":"AU","type":"string"},{"const":"AUSYD2","type":"string"},{"const":"AUSYD1","type":"string"},{"const":"CN","type":"string"},{"const":"CHNZJ1","type":"string"}],"description":"Warehouse code: AU (Australia, all warehouses — aggregate view), AUSYD2 (Sydney main, Rosehill), AUSYD1 (Sydney accessories), CN (China, all warehouses — aggregate view), CHNZJ1 (Zhenjiang). Full list: GET /api/v1/warehouses."},"sku":{"minLength":1,"maxLength":64,"type":"string","description":"SKU / barcode — the **colour + size** level, e.g. OB0021611. For the whole style use product_code instead."},"quantity":{"minimum":1,"maximum":99999,"anyOf":[{"format":"integer","default":0,"type":"string"},{"minimum":1,"maximum":99999,"type":"integer"}],"description":"Quantity, a positive integer, e.g. 2. In reservation adjustments / carts, 0 removes the line."},"recipient":{"type":"object","required":["name","phone","address","country_code"],"properties":{"name":{"minLength":1,"maxLength":128,"type":"string","description":"Recipient name."},"phone":{"minLength":1,"maxLength":64,"type":"string","description":"Recipient phone; include the country code for cross-border parcels, e.g. +61…"},"address":{"minLength":1,"maxLength":512,"type":"string","description":"Delivery address including the street number — incomplete addresses are the top cause of failed delivery."},"country_code":{"anyOf":[{"const":"AU","type":"string"},{"const":"CN","type":"string"},{"const":"NZ","type":"string"}],"description":"Destination country: AU / CN / NZ (drop-ship supports these three)."},"state":{"maxLength":64,"type":"string","description":"State / province, e.g. NSW. Required for AU and NZ addresses."},"city":{"maxLength":128,"type":"string","description":"City, e.g. Sydney. Required for AU and NZ addresses."},"postal_code":{"maxLength":16,"type":"string","description":"Postcode, e.g. 2000. Required for AU and NZ addresses."}},"description":"Recipient object { name, phone, address, country_code, state, city, postal_code }. country_code is AU / CN / NZ; state, city and postal_code are required for AU and NZ. Include the country code in the phone for cross-border parcels (e.g. +61…) and the street number in the address — incomplete addresses are the top cause of failed delivery."},"sender":{"type":"object","properties":{"name":{"maxLength":128,"type":"string","description":"Recipient name."},"phone":{"maxLength":64,"type":"string","description":"Recipient phone; include the country code for cross-border parcels, e.g. +61…"}},"description":"Sender object { name, phone } (optional), printed on the waybill."},"shipping_method":{"anyOf":[{"const":"normal","type":"string"},{"const":"express","type":"string"},{"const":"ems","type":"string"}],"description":"Shipping method: normal (default), express or ems."},"auto_confirm":{"type":"boolean","description":"Submit immediately (optional). **Omitted = draft only**, someone confirms it in the ERP before it takes effect — this default is intentional. A submitted drop-ship order is allocated at once and can no longer be edited."},"client_order_number":{"maxLength":64,"type":"string","description":"The order number in your own system (the one you sent when creating the drop-ship order)."},"note":{"maxLength":500,"type":"string","description":"Remark (optional, up to 500 characters)."}}}},"multipart/form-data":{"schema":{"type":"object","required":["warehouse_code","sku","quantity","recipient"],"properties":{"warehouse_code":{"anyOf":[{"const":"AU","type":"string"},{"const":"AUSYD2","type":"string"},{"const":"AUSYD1","type":"string"},{"const":"CN","type":"string"},{"const":"CHNZJ1","type":"string"}]},"sku":{"minLength":1,"maxLength":64,"type":"string"},"quantity":{"minimum":1,"maximum":99999,"anyOf":[{"format":"integer","default":0,"type":"string"},{"minimum":1,"maximum":99999,"type":"integer"}]},"recipient":{"type":"object","required":["name","phone","address","country_code"],"properties":{"name":{"minLength":1,"maxLength":128,"type":"string"},"phone":{"minLength":1,"maxLength":64,"type":"string"},"address":{"minLength":1,"maxLength":512,"type":"string"},"country_code":{"anyOf":[{"const":"AU","type":"string"},{"const":"CN","type":"string"},{"const":"NZ","type":"string"}]},"state":{"maxLength":64,"type":"string"},"city":{"maxLength":128,"type":"string"},"postal_code":{"maxLength":16,"type":"string"}}},"sender":{"type":"object","properties":{"name":{"maxLength":128,"type":"string"},"phone":{"maxLength":64,"type":"string"}}},"shipping_method":{"anyOf":[{"const":"normal","type":"string"},{"const":"express","type":"string"},{"const":"ems","type":"string"}]},"auto_confirm":{"type":"boolean"},"client_order_number":{"maxLength":64,"type":"string"},"note":{"maxLength":500,"type":"string"}}}},"text/plain":{"schema":{"type":"object","required":["warehouse_code","sku","quantity","recipient"],"properties":{"warehouse_code":{"anyOf":[{"const":"AU","type":"string"},{"const":"AUSYD2","type":"string"},{"const":"AUSYD1","type":"string"},{"const":"CN","type":"string"},{"const":"CHNZJ1","type":"string"}]},"sku":{"minLength":1,"maxLength":64,"type":"string"},"quantity":{"minimum":1,"maximum":99999,"anyOf":[{"format":"integer","default":0,"type":"string"},{"minimum":1,"maximum":99999,"type":"integer"}]},"recipient":{"type":"object","required":["name","phone","address","country_code"],"properties":{"name":{"minLength":1,"maxLength":128,"type":"string"},"phone":{"minLength":1,"maxLength":64,"type":"string"},"address":{"minLength":1,"maxLength":512,"type":"string"},"country_code":{"anyOf":[{"const":"AU","type":"string"},{"const":"CN","type":"string"},{"const":"NZ","type":"string"}]},"state":{"maxLength":64,"type":"string"},"city":{"maxLength":128,"type":"string"},"postal_code":{"maxLength":16,"type":"string"}}},"sender":{"type":"object","properties":{"name":{"maxLength":128,"type":"string"},"phone":{"maxLength":64,"type":"string"}}},"shipping_method":{"anyOf":[{"const":"normal","type":"string"},{"const":"express","type":"string"},{"const":"ems","type":"string"}]},"auto_confirm":{"type":"boolean"},"client_order_number":{"maxLength":64,"type":"string"},"note":{"maxLength":500,"type":"string"}}}}}},"responses":{"200":{}}},"get":{"parameters":[{"schema":{"anyOf":[{"const":"AU","type":"string"},{"const":"AUSYD2","type":"string"},{"const":"AUSYD1","type":"string"},{"const":"CN","type":"string"},{"const":"CHNZJ1","type":"string"}]},"in":"query","name":"warehouse_code","required":false,"description":"Warehouse code: AU (Australia, all warehouses — aggregate view), AUSYD2 (Sydney main, Rosehill), AUSYD1 (Sydney accessories), CN (China, all warehouses — aggregate view), CHNZJ1 (Zhenjiang). Full list: GET /api/v1/warehouses."},{"schema":{"type":"string","maxLength":10,"pattern":"^[0-9]{4}-[0-9]{2}-[0-9]{2}$"},"in":"query","name":"start_date","required":false,"description":"Start date, YYYY-MM-DD (inclusive)."},{"schema":{"type":"string","maxLength":10,"pattern":"^[0-9]{4}-[0-9]{2}-[0-9]{2}$"},"in":"query","name":"end_date","required":false,"description":"End date, YYYY-MM-DD (inclusive)."},{"schema":{"anyOf":[{"type":"boolean"},{"format":"boolean","default":false,"type":"string"}]},"in":"query","name":"shipped","required":false,"description":"Only shipped (true) or unshipped (false) orders (optional)."},{"schema":{"type":"string","minLength":1,"maxLength":64},"in":"query","name":"client_order_number","required":false,"description":"The order number in your own system (the one you sent when creating the drop-ship order)."},{"schema":{"type":"string","minLength":1,"maxLength":64},"in":"query","name":"serial_number","required":false,"description":"Drop-ship serial number, from the drop-ship order list. Own channel only."}],"operationId":"getApiV1Dropship-orders","summary":"Drop-ship orders: by warehouse + date range, or look one up by client_order_number / serial_number","tags":["Drop-ship orders"],"security":[{"bearer":[]}],"responses":{"200":{}}}},"/api/v1/dropship-orders/summary":{"get":{"parameters":[{"schema":{"anyOf":[{"const":"AU","type":"string"},{"const":"AUSYD2","type":"string"},{"const":"AUSYD1","type":"string"},{"const":"CN","type":"string"},{"const":"CHNZJ1","type":"string"}]},"in":"query","name":"warehouse_code","required":true,"description":"Warehouse code: AU (Australia, all warehouses — aggregate view), AUSYD2 (Sydney main, Rosehill), AUSYD1 (Sydney accessories), CN (China, all warehouses — aggregate view), CHNZJ1 (Zhenjiang). Full list: GET /api/v1/warehouses."},{"schema":{"type":"string","maxLength":10,"pattern":"^[0-9]{4}-[0-9]{2}-[0-9]{2}$"},"in":"query","name":"start_date","required":true,"description":"Start date, YYYY-MM-DD (inclusive)."},{"schema":{"type":"string","maxLength":10,"pattern":"^[0-9]{4}-[0-9]{2}-[0-9]{2}$"},"in":"query","name":"end_date","required":true,"description":"End date, YYYY-MM-DD (inclusive)."},{"schema":{"minimum":1,"anyOf":[{"format":"numeric","default":0,"type":"string"},{"minimum":1,"type":"number"}]},"in":"query","name":"page","required":false,"description":"Page number, from 1 (optional). Whole-warehouse stock returns everything when omitted — 30,000+ rows, paging recommended."},{"schema":{"minimum":1,"maximum":2000,"anyOf":[{"format":"numeric","default":0,"type":"string"},{"minimum":1,"maximum":2000,"type":"number"}]},"in":"query","name":"page_size","required":false,"description":"Rows per page (optional), max 2000."}],"operationId":"getApiV1Dropship-ordersSummary","summary":"Drop-ship order summary list (paged)","tags":["Drop-ship orders"],"security":[{"bearer":[]}],"responses":{"200":{}}}},"/api/v1/dropship-orders/{dropship_order_id}":{"get":{"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":64},"in":"path","name":"dropship_order_id","required":true,"description":"Drop-ship order id, from the drop-ship order list. Own channel only."}],"operationId":"getApiV1Dropship-ordersByDropship_order_id","summary":"Drop-ship order detail (ownership checked)","tags":["Drop-ship orders"],"security":[{"bearer":[]}],"responses":{"200":{}}},"delete":{"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":64},"in":"path","name":"dropship_order_id","required":true,"description":"Drop-ship order id, from the drop-ship order list. Own channel only."}],"operationId":"deleteApiV1Dropship-ordersByDropship_order_id","summary":"Void the drop-ship line and release the stock it was holding. Lines already shipped cannot be voided","tags":["Drop-ship orders"],"security":[{"bearer":[]}],"responses":{"200":{}}}},"/api/v1/dropship-orders/allocation-preview":{"post":{"parameters":[],"operationId":"postApiV1Dropship-ordersAllocation-preview","summary":"Drop-ship pre-allocation: per line, whether it can be filled, how much is short, when pre-sale stock arrives and what is payable. Note: pre-allocation holds stock — submit, or call DELETE …/{dropship_order_id}/allocation to release it","tags":["Drop-ship orders"],"security":[{"bearer":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["warehouse_code","dropship_order_ids"],"properties":{"warehouse_code":{"anyOf":[{"const":"AU","type":"string"},{"const":"AUSYD2","type":"string"},{"const":"AUSYD1","type":"string"},{"const":"CN","type":"string"},{"const":"CHNZJ1","type":"string"}],"description":"Warehouse code: AU (Australia, all warehouses — aggregate view), AUSYD2 (Sydney main, Rosehill), AUSYD1 (Sydney accessories), CN (China, all warehouses — aggregate view), CHNZJ1 (Zhenjiang). Full list: GET /api/v1/warehouses."},"dropship_order_ids":{"minItems":1,"maxItems":200,"type":"array","items":{"minLength":1,"maxLength":64,"type":"string"},"description":"Array of drop-ship serial numbers (the serial_number returned when the line was created). Up to 200 per call."},"use_reservation":{"type":"boolean","description":"Whether to draw on your reserved (locked) stock for this allocation. Omit = do not use it."}}}},"multipart/form-data":{"schema":{"type":"object","required":["warehouse_code","dropship_order_ids"],"properties":{"warehouse_code":{"anyOf":[{"const":"AU","type":"string"},{"const":"AUSYD2","type":"string"},{"const":"AUSYD1","type":"string"},{"const":"CN","type":"string"},{"const":"CHNZJ1","type":"string"}]},"dropship_order_ids":{"minItems":1,"maxItems":200,"type":"array","items":{"minLength":1,"maxLength":64,"type":"string"}},"use_reservation":{"type":"boolean"}}}},"text/plain":{"schema":{"type":"object","required":["warehouse_code","dropship_order_ids"],"properties":{"warehouse_code":{"anyOf":[{"const":"AU","type":"string"},{"const":"AUSYD2","type":"string"},{"const":"AUSYD1","type":"string"},{"const":"CN","type":"string"},{"const":"CHNZJ1","type":"string"}]},"dropship_order_ids":{"minItems":1,"maxItems":200,"type":"array","items":{"minLength":1,"maxLength":64,"type":"string"}},"use_reservation":{"type":"boolean"}}}}}},"responses":{"200":{}}}},"/api/v1/dropship-orders/submit":{"post":{"parameters":[],"operationId":"postApiV1Dropship-ordersSubmit","summary":"Submit drop-ship lines (no changes afterwards). Preview first, then submit with the preview_key; payment_method defaults to invoice","tags":["Drop-ship orders"],"security":[{"bearer":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["warehouse_code","dropship_order_ids"],"properties":{"warehouse_code":{"anyOf":[{"const":"AU","type":"string"},{"const":"AUSYD2","type":"string"},{"const":"AUSYD1","type":"string"},{"const":"CN","type":"string"},{"const":"CHNZJ1","type":"string"}],"description":"Warehouse code: AU (Australia, all warehouses — aggregate view), AUSYD2 (Sydney main, Rosehill), AUSYD1 (Sydney accessories), CN (China, all warehouses — aggregate view), CHNZJ1 (Zhenjiang). Full list: GET /api/v1/warehouses."},"dropship_order_ids":{"minItems":1,"maxItems":200,"type":"array","items":{"minLength":1,"maxLength":64,"type":"string"},"description":"Array of drop-ship serial numbers (the serial_number returned when the line was created). Up to 200 per call."},"preview_key":{"maxLength":128,"type":"string","description":"The preview_key returned by the allocation preview. Sending it means \"submit exactly what that preview showed\"; omit it and allocation is recalculated at submit time."},"payment_method":{"anyOf":[{"const":"balance","type":"string"},{"const":"wechat","type":"string"},{"const":"alipay","type":"string"},{"const":"invoice","type":"string"}],"description":"How to pay: balance / invoice (pay on invoice) / wechat / alipay. Defaults to invoice, i.e. monthly settlement."},"use_reservation":{"type":"boolean","description":"Whether to draw on your reserved (locked) stock for this allocation. Omit = do not use it."}}}},"multipart/form-data":{"schema":{"type":"object","required":["warehouse_code","dropship_order_ids"],"properties":{"warehouse_code":{"anyOf":[{"const":"AU","type":"string"},{"const":"AUSYD2","type":"string"},{"const":"AUSYD1","type":"string"},{"const":"CN","type":"string"},{"const":"CHNZJ1","type":"string"}]},"dropship_order_ids":{"minItems":1,"maxItems":200,"type":"array","items":{"minLength":1,"maxLength":64,"type":"string"}},"preview_key":{"maxLength":128,"type":"string"},"payment_method":{"anyOf":[{"const":"balance","type":"string"},{"const":"wechat","type":"string"},{"const":"alipay","type":"string"},{"const":"invoice","type":"string"}]},"use_reservation":{"type":"boolean"}}}},"text/plain":{"schema":{"type":"object","required":["warehouse_code","dropship_order_ids"],"properties":{"warehouse_code":{"anyOf":[{"const":"AU","type":"string"},{"const":"AUSYD2","type":"string"},{"const":"AUSYD1","type":"string"},{"const":"CN","type":"string"},{"const":"CHNZJ1","type":"string"}]},"dropship_order_ids":{"minItems":1,"maxItems":200,"type":"array","items":{"minLength":1,"maxLength":64,"type":"string"}},"preview_key":{"maxLength":128,"type":"string"},"payment_method":{"anyOf":[{"const":"balance","type":"string"},{"const":"wechat","type":"string"},{"const":"alipay","type":"string"},{"const":"invoice","type":"string"}]},"use_reservation":{"type":"boolean"}}}}}},"responses":{"200":{}}}},"/api/v1/dropship-orders/{dropship_order_id}/allocation":{"delete":{"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":64},"in":"path","name":"dropship_order_id","required":true,"description":"Drop-ship order id, from the drop-ship order list. Own channel only."}],"operationId":"deleteApiV1Dropship-ordersByDropship_order_idAllocation","summary":"Release the stock this drop-ship line holds from a pre-allocation you decided not to submit","tags":["Drop-ship orders"],"security":[{"bearer":[]}],"responses":{"200":{}}}},"/api/v1/shipments":{"get":{"parameters":[{"schema":{"anyOf":[{"const":"AU","type":"string"},{"const":"AUSYD2","type":"string"},{"const":"AUSYD1","type":"string"},{"const":"CN","type":"string"},{"const":"CHNZJ1","type":"string"}]},"in":"query","name":"warehouse_code","required":true,"description":"Warehouse code: AU (Australia, all warehouses — aggregate view), AUSYD2 (Sydney main, Rosehill), AUSYD1 (Sydney accessories), CN (China, all warehouses — aggregate view), CHNZJ1 (Zhenjiang). Full list: GET /api/v1/warehouses."},{"schema":{"type":"string","maxLength":10,"pattern":"^[0-9]{4}-[0-9]{2}-[0-9]{2}$"},"in":"query","name":"start_date","required":false,"description":"Start date, YYYY-MM-DD (inclusive)."},{"schema":{"type":"string","maxLength":10,"pattern":"^[0-9]{4}-[0-9]{2}-[0-9]{2}$"},"in":"query","name":"end_date","required":false,"description":"End date, YYYY-MM-DD (inclusive)."}],"operationId":"getApiV1Shipments","summary":"Your channel's shipments","tags":["Shipments & logistics"],"security":[{"bearer":[]}],"responses":{"200":{}}}},"/api/v1/shipments/identity-documents":{"post":{"parameters":[],"operationId":"postApiV1ShipmentsIdentity-documents","summary":"Upload recipient ID images ⚠️ front and back of the end consumer's ID (PII). Off by default, apply to enable; pass-through only, never logged or cached","tags":["Shipments & logistics"],"security":[{"bearer":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["front_image","back_image"],"properties":{"front_image":{"maxLength":8000000,"type":"string","description":"⚠️ Front of the ID document (base64). Sensitive personal data of the end consumer: we pass it through only, never log or cache it. Off by default; apply explicitly."},"back_image":{"maxLength":8000000,"type":"string","description":"⚠️ Back of the ID document (base64). Same as above."},"shipment_ids":{"maxItems":100,"type":"array","items":{"minLength":1,"maxLength":64,"type":"string"},"description":"Related shipment ids (optional)."},"recipient":{"type":"object","properties":{"name":{"maxLength":128,"type":"string","description":"Recipient name."},"phone":{"maxLength":64,"type":"string","description":"Recipient phone; include the country code for cross-border parcels, e.g. +61…"}},"description":"Recipient object { name, phone, address, country_code, state, city, postal_code }. country_code is AU / CN / NZ; state, city and postal_code are required for AU and NZ. Include the country code in the phone for cross-border parcels (e.g. +61…) and the street number in the address — incomplete addresses are the top cause of failed delivery."},"document_number":{"maxLength":64,"type":"string","description":"ID number (optional)."}}}},"multipart/form-data":{"schema":{"type":"object","required":["front_image","back_image"],"properties":{"front_image":{"maxLength":8000000,"type":"string"},"back_image":{"maxLength":8000000,"type":"string"},"shipment_ids":{"maxItems":100,"type":"array","items":{"minLength":1,"maxLength":64,"type":"string"}},"recipient":{"type":"object","properties":{"name":{"maxLength":128,"type":"string"},"phone":{"maxLength":64,"type":"string"}}},"document_number":{"maxLength":64,"type":"string"}}}},"text/plain":{"schema":{"type":"object","required":["front_image","back_image"],"properties":{"front_image":{"maxLength":8000000,"type":"string"},"back_image":{"maxLength":8000000,"type":"string"},"shipment_ids":{"maxItems":100,"type":"array","items":{"minLength":1,"maxLength":64,"type":"string"}},"recipient":{"type":"object","properties":{"name":{"maxLength":128,"type":"string"},"phone":{"maxLength":64,"type":"string"}}},"document_number":{"maxLength":64,"type":"string"}}}}}},"responses":{"200":{}}}},"/api/v1/shipments/{shipment_id}":{"get":{"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":64},"in":"path","name":"shipment_id","required":true,"description":"Shipment id (also used for tracking), from the shipment list. Own channel only."}],"operationId":"getApiV1ShipmentsByShipment_id","summary":"Shipment detail (ownership checked)","tags":["Shipments & logistics"],"security":[{"bearer":[]}],"responses":{"200":{}}}},"/api/v1/shipments/{shipment_id}/tracking":{"get":{"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":64},"in":"path","name":"shipment_id","required":true,"description":"Shipment id (also used for tracking), from the shipment list. Own channel only."}],"operationId":"getApiV1ShipmentsByShipment_idTracking","summary":"Tracking events (Auexpress; off by default, apply to enable)","tags":["Shipments & logistics"],"security":[{"bearer":[]}],"responses":{"200":{}}}},"/api/v1/reservations":{"get":{"parameters":[{"schema":{"anyOf":[{"const":"AU","type":"string"},{"const":"AUSYD2","type":"string"},{"const":"AUSYD1","type":"string"},{"const":"CN","type":"string"},{"const":"CHNZJ1","type":"string"}]},"in":"query","name":"warehouse_code","required":true,"description":"Warehouse code: AU (Australia, all warehouses — aggregate view), AUSYD2 (Sydney main, Rosehill), AUSYD1 (Sydney accessories), CN (China, all warehouses — aggregate view), CHNZJ1 (Zhenjiang). Full list: GET /api/v1/warehouses."},{"schema":{"type":"string","maxLength":10,"pattern":"^[0-9]{4}-[0-9]{2}-[0-9]{2}$"},"in":"query","name":"start_date","required":false,"description":"Start date, YYYY-MM-DD (inclusive)."},{"schema":{"type":"string","maxLength":10,"pattern":"^[0-9]{4}-[0-9]{2}-[0-9]{2}$"},"in":"query","name":"end_date","required":false,"description":"End date, YYYY-MM-DD (inclusive)."},{"schema":{"anyOf":[{"const":"reserved","type":"string"},{"const":"cancelled","type":"string"}]},"in":"query","name":"status","required":false,"description":"Status filter (optional), comma-separated. Wholesale orders: draft / confirmed / cancelled; reservations: reserved / cancelled. No filter when omitted (reservations default to reserved + cancelled). The response uses the same words in `status`, with the raw code in `status_raw`."}],"operationId":"getApiV1Reservations","summary":"Your channel's stock reservations","tags":["Stock reservations"],"security":[{"bearer":[]}],"responses":{"200":{}}}},"/api/v1/reservations/{reservation_id}":{"get":{"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":64},"in":"path","name":"reservation_id","required":true,"description":"Reservation id, from the reservation list. Own channel only (read / adjust)."}],"operationId":"getApiV1ReservationsByReservation_id","summary":"Reservation detail (ownership checked)","tags":["Stock reservations"],"security":[{"bearer":[]}],"responses":{"200":{}}},"patch":{"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":64},"in":"path","name":"reservation_id","required":true,"description":"Reservation id, from the reservation list. Own channel only (read / adjust)."}],"operationId":"patchApiV1ReservationsByReservation_id","summary":"Adjust reservation lines (write; ownership checked)","tags":["Stock reservations"],"security":[{"bearer":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["lines"],"properties":{"lines":{"minItems":1,"maxItems":1000,"type":"array","items":{"type":"object","required":["sku","quantity"],"properties":{"sku":{"minLength":1,"maxLength":64,"type":"string","description":"SKU / barcode — the **colour + size** level, e.g. OB0021611. For the whole style use product_code instead."},"quantity":{"minimum":0,"maximum":99999,"anyOf":[{"format":"integer","default":0,"type":"string"},{"minimum":0,"maximum":99999,"type":"integer"}],"description":"Quantity, a positive integer, e.g. 2. In reservation adjustments / carts, 0 removes the line."}}},"description":"Line array, each { sku, quantity }. At least one; quantity=0 removes the line when adjusting a reservation."},"note":{"maxLength":500,"type":"string","description":"Remark (optional, up to 500 characters)."}}}},"multipart/form-data":{"schema":{"type":"object","required":["lines"],"properties":{"lines":{"minItems":1,"maxItems":1000,"type":"array","items":{"type":"object","required":["sku","quantity"],"properties":{"sku":{"minLength":1,"maxLength":64,"type":"string"},"quantity":{"minimum":0,"maximum":99999,"anyOf":[{"format":"integer","default":0,"type":"string"},{"minimum":0,"maximum":99999,"type":"integer"}]}}}},"note":{"maxLength":500,"type":"string"}}}},"text/plain":{"schema":{"type":"object","required":["lines"],"properties":{"lines":{"minItems":1,"maxItems":1000,"type":"array","items":{"type":"object","required":["sku","quantity"],"properties":{"sku":{"minLength":1,"maxLength":64,"type":"string"},"quantity":{"minimum":0,"maximum":99999,"anyOf":[{"format":"integer","default":0,"type":"string"},{"minimum":0,"maximum":99999,"type":"integer"}]}}}},"note":{"maxLength":500,"type":"string"}}}}}},"responses":{"200":{}}}},"/api/v1/carts/{account}":{"get":{"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":64},"in":"path","name":"account","required":true,"description":"Cart owner account (the OMS site login, e.g. 100470admin)."}],"operationId":"getApiV1CartsByAccount","summary":"One account's cart","tags":["Carts"],"security":[{"bearer":[]}],"responses":{"200":{}}}},"/api/v1/carts/{account}/lines":{"put":{"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":64},"in":"path","name":"account","required":true,"description":"Cart owner account (the OMS site login, e.g. 100470admin)."}],"operationId":"putApiV1CartsByAccountLines","summary":"Add / update cart items (idempotent)","tags":["Carts"],"security":[{"bearer":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["lines"],"properties":{"lines":{"minItems":1,"maxItems":500,"type":"array","items":{"type":"object","required":["sku","quantity"],"properties":{"sku":{"minLength":1,"maxLength":64,"type":"string","description":"SKU / barcode — the **colour + size** level, e.g. OB0021611. For the whole style use product_code instead."},"quantity":{"minimum":0,"maximum":99999,"anyOf":[{"format":"integer","default":0,"type":"string"},{"minimum":0,"maximum":99999,"type":"integer"}],"description":"Quantity, a positive integer, e.g. 2. In reservation adjustments / carts, 0 removes the line."}}},"description":"Line array, each { sku, quantity }. At least one; quantity=0 removes the line when adjusting a reservation."}}}},"multipart/form-data":{"schema":{"type":"object","required":["lines"],"properties":{"lines":{"minItems":1,"maxItems":500,"type":"array","items":{"type":"object","required":["sku","quantity"],"properties":{"sku":{"minLength":1,"maxLength":64,"type":"string"},"quantity":{"minimum":0,"maximum":99999,"anyOf":[{"format":"integer","default":0,"type":"string"},{"minimum":0,"maximum":99999,"type":"integer"}]}}}}}}},"text/plain":{"schema":{"type":"object","required":["lines"],"properties":{"lines":{"minItems":1,"maxItems":500,"type":"array","items":{"type":"object","required":["sku","quantity"],"properties":{"sku":{"minLength":1,"maxLength":64,"type":"string"},"quantity":{"minimum":0,"maximum":99999,"anyOf":[{"format":"integer","default":0,"type":"string"},{"minimum":0,"maximum":99999,"type":"integer"}]}}}}}}}}},"responses":{"200":{}}}},"/api/v1/carts/{account}/lines/{sku}":{"delete":{"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":64},"in":"path","name":"account","required":true,"description":"Cart owner account (the OMS site login, e.g. 100470admin)."},{"schema":{"type":"string","minLength":1,"maxLength":64},"in":"path","name":"sku","required":true,"description":"SKU / barcode — the **colour + size** level, e.g. OB0021611. For the whole style use product_code instead."}],"operationId":"deleteApiV1CartsByAccountLinesBySku","summary":"Remove one SKU from the cart","tags":["Carts"],"security":[{"bearer":[]}],"responses":{"200":{}}}},"/api/v1/carts/{account}/products/{product_code}":{"delete":{"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":64},"in":"path","name":"account","required":true,"description":"Cart owner account (the OMS site login, e.g. 100470admin)."},{"schema":{"type":"string","minLength":1,"maxLength":64},"in":"path","name":"product_code","required":true,"description":"Style code — **one style** (every colour / size variant), e.g. OB002. For a single variant use sku. When querying prices, several can be comma-separated."}],"operationId":"deleteApiV1CartsByAccountProductsByProduct_code","summary":"Remove every SKU of one style from the cart","tags":["Carts"],"security":[{"bearer":[]}],"responses":{"200":{}}}}}}