Get a token
Exchange your client ID & secret for a scoped access token.
POST /partner-oauth-tokenPush aggregator orders into any authorized restaurant, read its live menu, and receive signed status updates the moment the kitchen marks an order Ready. One REST API, one order spine — the same path a website, POS, or kiosk order takes.
Exchange your client ID & secret for a scoped access token.
POST /partner-oauth-tokenFetch a tenant's live, channel-priced menu — visible items only.
GET /partner-menuIngest an order into the shared spine. Idempotent by your order id.
POST /partner-ordersRegister a URL; receive signed order.status_changed events.
# headers Authorization: Bearer eyJhbGciOiJIUzI1Ni… (scoped access token) Content-Type: application/json // body { "tenant_id": "bilgah-pizza", "shop_id": "6b1e…-shop", "provider": "wolt", "external_order_id": "WOLT-8821", "order_type": "delivery", "items": [ { "product_id": "marg-…", "quantity": 2, "unit_price": 9.90 } ] }
// 201 Created · 142 ms · sandbox { "order_id": "9f3c2a71…-ord", "status": "received", "provider": "wolt", "idempotent": false }
# cURL curl -X POST https://d.nextechhq.com/functions/v1/partner-orders \ -H "Authorization: Bearer $TOKEN" \ -H "Content-Type: application/json" \ -d '{"tenant_id":"bilgah-pizza","provider":"wolt","external_order_id":"WOLT-8821","order_type":"delivery","items":[…]}'
whsec_9c…
| Event | Provider | Status | Attempts | Signature | When |
|---|---|---|---|---|---|
| order.status_changed | Wolt | Delivered | 1 | t=…,v1=8f3c… | just now |
| order.status_changed | Bolt Food | Delivered | 1 | t=…,v1=1a09… | 2 min ago |
| order.status_changed | Wolt | Retrying | 3 / 6 | t=…,v1=b27e… | next in 8 min |
| order.status_changed | Booking.com | Dead-letter | 6 / 6 | t=…,v1=44da… | 21 min ago |
t=<unix>,v1=HMAC‑SHA256(t.payload)
with your endpoint's signing secret. Reject anything that doesn't match — that's how you know it came from DinePro.