# Omnihub - Shoppertise ## API Docs - Root > Outlets [List Shoppertise outlets](https://omni.cools.my/list-shoppertise-outlets-45639085e0.md): Returns all outlets configured for Shoppertise (those with a `shoppertiseMerchantId` set). Pass `merchantID=SHOPPERTISE` to identify the platform. - Root > Outlets [Outlet detail](https://omni.cools.my/outlet-detail-45639086e0.md): Returns full configuration detail for a single Shoppertise outlet resolved by `partnerMerchantID` (matched against `shoppertiseMerchantId` or `platformMerchantId`). - Root > Orders [Order webhook (new order intake)](https://omni.cools.my/order-webhook-new-order-intake-45639087e0.md): Receives a new Shoppertise order. Requires `orderID`. The raw payload is stored and processing is queued asynchronously. If an order with the same `orderID` already exists it is treated as a duplicate and acknowledged with 200 (idempotent). - Root > Orders [Update order status](https://omni.cools.my/update-order-status-45639089e0.md): Sets the status of an existing order. This is the single endpoint for both lifecycle updates and cancellations. - Root > Orders [List orders (paginated)](https://omni.cools.my/list-orders-paginated-45639090e0.md): Returns a paginated list of Shoppertise orders. Authenticated via `Authorization: Bearer `. `merchantID` is required; for Shoppertise always pass `SHOPPERTISE`. - Root > Orders [Order detail](https://omni.cools.my/order-detail-45639091e0.md): Returns full detail for a single Shoppertise order including line items and state history. Authenticated via `Authorization: Bearer `. - Root > Menu [Get menu by partnerMerchantID](https://omni.cools.my/get-menu-by-partnermerchantid-45639092e0.md): Returns the full menu payload for an outlet resolved from `partnerMerchantID` (matched against `company_outlet.platformMerchantId` or `shoppertiseMerchantId`). Authenticated via `Authorization: Bearer `. - Root > Menu [Notify Shoppertise to pull menu (SHOPPERTISE API)](https://omni.cools.my/notify-shoppertise-to-pull-menu-shoppertise-api-45639093e0.md): Triggers Omnihub to call the Shoppertise platform API (`POST {SHOPPERTISE_API_URL}/partner/v1/merchant/menu/notification`) so Shoppertise knows the menu is ready to be fetched. Shoppertise then calls `GET /api/shoppertise/menu?partnerMerchantID=...` on Omnihub to pull the updated menu. - Root > Availability [Update product availability (SHOPPERTISE API)](https://omni.cools.my/update-product-availability-shoppertise-api-45639094e0.md): Updates the availability of one or more products for a given outlet. Omnihub calls the Shoppertise platform API (`PUT {SHOPPERTISE_API_URL}/partner/v1/batch/menu`) to push the changes. Auth is via an OAuth access token from the Shoppertise token endpoint. ## Schemas - Root [Order](https://omni.cools.my/order-18375951d0.md): - Root [Currency](https://omni.cools.my/currency-18375952d0.md): - Root [Price](https://omni.cools.my/price-18375953d0.md): - Root [OrderItem](https://omni.cools.my/orderitem-18375954d0.md): - Root [Campaign](https://omni.cools.my/campaign-18375955d0.md): - Root [CampaignFreeItem](https://omni.cools.my/campaignfreeitem-18375956d0.md): - Root [Modifier](https://omni.cools.my/modifier-18375957d0.md): - Root [Receiver](https://omni.cools.my/receiver-18375958d0.md): - Root [VirtualContact](https://omni.cools.my/virtualcontact-18375959d0.md): - Root [OrderCancelRequest](https://omni.cools.my/ordercancelrequest-18375960d0.md): - Root [OutletSummary](https://omni.cools.my/outletsummary-18375961d0.md): - Root [OutletDetail](https://omni.cools.my/outletdetail-18375962d0.md): - Root [OrderAccepted](https://omni.cools.my/orderaccepted-18375963d0.md): - Root [OrderDuplicate](https://omni.cools.my/orderduplicate-18375964d0.md): - Root [SuccessBool](https://omni.cools.my/successbool-18375965d0.md): - Root [ErrorString](https://omni.cools.my/errorstring-18375966d0.md): - Root [InvalidOutletError](https://omni.cools.my/invalidoutleterror-18375967d0.md): - Root [InvalidItemError](https://omni.cools.my/invaliditemerror-18375968d0.md): - Root [InvalidModifierError](https://omni.cools.my/invalidmodifiererror-18375969d0.md): - Root [StatusStringMessage](https://omni.cools.my/statusstringmessage-18375970d0.md): - Root [ShoppertiseMenu](https://omni.cools.my/shoppertisemenu-18375971d0.md): - Root [MenuPushRequest](https://omni.cools.my/menupushrequest-18375972d0.md): - Root [MenuPushNotification](https://omni.cools.my/menupushnotification-18375973d0.md): - Root [MenuPushResponse](https://omni.cools.my/menupushresponse-18375974d0.md): - Root [ProductAvailabilityRequest](https://omni.cools.my/productavailabilityrequest-18375975d0.md): - Root [ProductAvailabilityItem](https://omni.cools.my/productavailabilityitem-18375976d0.md): - Root [ProductAvailabilityCallback](https://omni.cools.my/productavailabilitycallback-18375977d0.md):