{"openapi":"3.1.0","info":{"version":"1.0.0","title":"Channel API","description":"Deliverect Channel API."},"servers":[{"url":"https://api.staging.deliverect.com"}],"security":[{"oauth2ClientCredentials":[]}],"components":{"securitySchemes":{"oauth2ClientCredentials":{"type":"oauth2","description":"Obtain an access token using the partner client ID and client secret. Send the returned token with each API request in the Authorization header as a Bearer token.","flows":{"clientCredentials":{"tokenUrl":"/oauth/token","scopes":{}}}}}},"x-readme":{"headers":[],"explorer-enabled":true,"proxy-enabled":true,"oauth-options":{"useInsecureClientAuthentication":true}},"x-readme-fauxas":true,"tags":[{"name":"Endpoints","description":"Deliverect Endpoints. Use `https://api.staging.deliverect.com` for testing and `https://api.deliverect.com` in production."},{"name":"Webhooks","description":"Deliverect Webhooks. Requests can be signed with HMAC-SHA256 using a pre-shared secret configured on your integration, so you can verify they came from Deliverect and weren't altered in transit (see HMAC Authentication Guide <a href=\"https://developers.deliverect.com/reference/hmac-authentication\" target=\"_blank\" rel=\"noopener noreferrer\">here</a>)."}],"paths":{"/{channelName}/menuStatus/{_id}":{"post":{"tags":["Endpoints"],"summary":"Menu Update (Async)","description":"","operationId":"post_channelname-menustatus-id","parameters":[{"name":"channelName","in":"path","required":true,"schema":{"type":"string","default":"my-channel"}},{"name":"_id","in":"path","required":true,"schema":{"type":"string","default":"menu-update-id"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"string"},"comment":{"type":"string"}},"required":["status"]},"examples":{"Menu Update - FAILED":{"summary":"Menu Update - FAILED","value":{"status":"FAILED","comment":"maximum menu size exceeded"}},"Menu Update - ONLINE":{"summary":"Menu Update - ONLINE","value":{"status":"ONLINE","comment":"string"}}}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"examples":{"OK":{"summary":"OK","value":"{}"}}}}},"400":{"content":{"application/json":{"schema":{"type":"object","properties":{}},"examples":{"Bad Request":{"summary":"Bad Request","value":"{}"}}}},"description":"Bad Request"}}}},"/{channelName}/updateStoreStatus/{channelLinkId}":{"post":{"tags":["Endpoints"],"summary":"Update Store Status","description":"","operationId":"post_channelname-updatestorestatus-channellinkid","parameters":[{"name":"channelName","in":"path","required":true,"schema":{"type":"string","default":"my-channel"}},{"name":"channelLinkId","in":"path","required":true,"schema":{"type":"string","default":"61bcc34f657cc48c23eb60d5"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"string","enum":["open","closed"]},"reason":{"type":"string"}},"required":["status","reason"]},"examples":{"Close Store":{"summary":"Close Store","value":{"status":"closed","reason":"Too many failed orders"}},"Open Store":{"summary":"Open Store","value":{"status":"open","reason":"Channel is opened"}}}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"examples":{"OK":{"summary":"OK","value":{"message":"Changed store status"}}}}}},"400":{"content":{"application/json":{"schema":{"type":"object","properties":{}},"examples":{"Bad Request":{"summary":"Bad Request","value":{"message":"Invalid value passed in status field: 'invalidStatus'"}}}}},"description":"Bad Request"},"403":{"content":{"application/json":{"schema":{"type":"object","properties":{}},"examples":{"Forbidden":{"summary":"Forbidden","value":{"message":"You don't have permissions to perform this action"}}}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"type":"object","properties":{}},"examples":{"Not Found":{"summary":"Not Found","value":{"message":"Channel link id {channelLinkId} not found."}}}}},"description":"Not Found"}}}},"/{channelName}/courierUpdate/{channelLinkId}":{"post":{"tags":["Endpoints"],"summary":"Update Courier / Guest Status","description":"","operationId":"post_channelname-courierupdate-channellinkid","parameters":[{"name":"channelName","in":"path","required":true,"schema":{"type":"string","default":"{channelName}"}},{"name":"channelLinkId","in":"path","required":true,"schema":{"type":"string","default":"{channelLinkId}"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"channelOrderId":{"type":"string"},"courierUpdate":{"type":"object","properties":{"status":{"type":"integer"},"arrivalTime":{"type":"string","format":"date-time"},"deliveryTime":{"type":"string","format":"date-time"},"courier":{"type":"object","properties":{"firstName":{"type":"string"},"lastName":{"type":"string"},"phoneNumber":{"type":"string"}}}},"required":["status"]}},"required":["channelOrderId","courierUpdate"]},"examples":{"Courier Update":{"summary":"Courier Update","value":{"channelOrderId":"63171d0000000d34b5efe","courierUpdate":{"status":85,"arrivalTime":"2022-10-25T16:24:40.482Z","deliveryTime":"2022-10-25T16:54:40.482Z","courier":{"firstName":"Joe","lastName":"Driver","phoneNumber":"+44 20 3936 1162"}}}}}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"examples":{"OK":{"summary":"OK","value":"{}"}}}}}}}},"/{channelName}/updateRating":{"post":{"tags":["Endpoints"],"summary":"Order Rating Update","description":"Update rating for a previously placed order.","operationId":"post_channelname-updaterating","parameters":[{"name":"channelName","in":"path","required":true,"schema":{"type":"string","default":"my-channel"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"channelOrderId":{"type":"string"},"orderDate":{"type":"string","format":"date-time"},"channelLinkId":{"type":"string"},"rating":{"type":"array","items":{"type":"object","properties":{"subject":{"type":"integer"},"rating":{"type":"integer"},"comment":{"type":"string"},"reason":{"type":"integer"}},"required":["subject","rating"]}}},"required":["channelOrderId","orderDate","channelLinkId","rating"]},"examples":{"Order Rating Update":{"summary":"Order Rating Update","value":{"channelOrderId":"CXTDBKMZ-1229","orderDate":"2021-04-13T11:53:34.453Z","channelLinkId":"606d8489fcd8eddf13b121a6","rating":[{"reason":10000,"rating":5,"comment":"Food was amazing.","subject":1},{"rating":5,"subject":2}]}}}}}},"responses":{"200":{"description":"Successful response"}}}},"/tables/{locationId}":{"get":{"tags":["Endpoints"],"summary":"Tables and Floors","description":"","operationId":"get_tables-locationid","parameters":[{"name":"locationId","in":"path","required":true,"schema":{"type":"string","default":""}}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"tables":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","example":"table#1"},"name":{"type":"string","example":"Table #1"},"floorId":{"type":"string","example":"restaurant"},"seats":{"type":"integer","example":6,"default":0},"type":{"type":"string","example":"unknown"}}}},"floors":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","example":"restaurant"},"name":{"type":"string","example":"Restaurant"}}}}}},"examples":{"GET POS tables":{"summary":"GET POS tables","value":{"tables":[{"id":"table#1","name":"Table #1","floorId":"restaurant","seats":6,"type":"unknown"}],"floors":[{"id":"restaurant","name":"Restaurant"}]}}}}}},"400":{"content":{"application/json":{"schema":{"type":"object","properties":{}},"examples":{"Bad Request":{"summary":"Bad Request","value":{"error":"failed to get tables: Error message"}}}}},"description":"Bad Request"},"422":{"content":{"application/json":{"schema":{"type":"object","properties":{}},"examples":{"Unprocessable Entity":{"summary":"Unprocessable Entity","value":{"error":"Get tables action is not supported for this location."}}}}},"description":"Unprocessable Entity"}}}},"/fulfillment/orders/{orderId}":{"get":{"tags":["Endpoints"],"summary":"Dispatch Details","operationId":"order-delivery-update-1","parameters":[{"in":"path","name":"orderId","schema":{"type":"string"},"required":true,"description":"The unique Deliverect order Id"}],"responses":{"200":{"description":"200","content":{"application/json":{"schema":{"type":"object","properties":{"account":{"type":"string","example":"695ec3074bc6b43f8465e3b1"},"location":{"type":"string","example":"6a034f0e94b35afc9da3997d"},"pickupTime":{"type":"string","example":"2026-08-08T19:12:57Z"},"pickupTimeETA":{"type":"string","example":"2026-08-08T19:12:57Z"},"transportType":{"type":"string","example":"unknown"},"price":{"type":"integer","example":550,"default":0},"trackingURL":{"type":"string","example":"https://www.doordash.com/orders/drive?urlCode=2f5a5b92-7be3-4d6a-8788-125254ff7dc4"},"deliverectTrackingURL":{},"deliveryTimeETA":{"type":"string","example":"2026-08-08T19:17:01Z"}}},"examples":{"Result":{"summary":"Result","value":{"account":"62********************7c","location":"61********************a1","pickupTime":"YYYY-MM-DDTHH:mm:ss.SSSSSSZ","pickupTimeETA":"YYYY-MM-DDTHH:mm:ss.SSSSSSZ","transportType":"car","price":550,"trackingURL":"https://www.dispatch_provider.com?url=2f7dc4","deliverectTrackingURL":null,"deliveryTimeETA":"YYYY-MM-DDTHH:mm:ss.SSSSSSZ"}}}}}},"404":{"content":{"application/json":{"schema":{"type":"object","properties":{}},"examples":{"Not Found":{"summary":"Not Found","value":{"error":"No delivery jobs associated with the order."}}}}},"description":"Not Found"}}}},"/fulfillment/validate":{"post":{"tags":["Endpoints"],"summary":"Dispatch Availability","description":"","operationId":"post_fulfillment-validate","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"channelLinkId":{"type":"string","description":"The <Glossary>channelLinkId</Glossary> is the unique identifier of the channel (merchant store) in Deliverect. Provide either this field or `channelLinkIds` — if `channelLinkIds` is provided, this field is disregarded."},"channelLinkIds":{"type":"array","items":{"type":"string"},"description":"An array of <Glossary>channelLinkId</Glossary> values, used to validate delivery availability across multiple pickup locations. Deliverect will determine the best possible pickup location for the delivery, based on price and distance. When this array is provided, the singular `channelLinkId` field is disregarded."},"pickupTime":{"type":"string","format":"date-time","description":"Expected time for the order to be picked up from the restaurant. Required only for future orders — if not provided, the current time is used. Time format is UTC `yyyy-MM-ddTHH:mm:ssZ` (all time values in this API are in UTC, as per <a href=\"https://en.wikipedia.org/wiki/ISO_8601\" target=\"_blank\" rel=\"noopener noreferrer\">ISO 8601</a>)."},"deliveryLocations":{"type":"object","description":"Delivery details for the customer or end-user.","properties":{"deliveryTime":{"type":"string","format":"date-time","description":"Expected delivery time for the order (UTC). Time format is `yyyy-MM-ddTHH:mm:ssZ` (all time values in this API are in UTC, as per <a href=\"https://en.wikipedia.org/wiki/ISO_8601\" target=\"_blank\" rel=\"noopener noreferrer\">ISO 8601</a>). If `deliveryTime` is less than 30 minutes from now, Deliverect will treat this as an ASAP order request."},"streetNumber":{"type":"string","description":"The street number. If the number has already been included in the `street` field, it should not be repeated here."},"street":{"type":"string","description":"The street name, including the street number where provided."},"postalCode":{"type":"string","description":"The postal or zip code, required, unless the region’s address format doesn’t use postal codes."},"city":{"type":"string","description":"The city of the delivery address."},"country":{"type":"string","description":"The country of the delivery address."},"coordinates":{"type":"object","description":"The geographic coordinates of the delivery location.","properties":{"longitude":{"type":"number","format":"double","description":"Longitude of the delivery location.","example":3.73361},"latitude":{"type":"number","format":"double","description":"Latitude of the delivery location.","example":51.03111}},"required":["longitude","latitude"]},"name":{"type":"string","description":"The name of the customer"},"phone":{"type":"string","description":"The contact phone number for the customer"},"packageSize":{"type":"string","enum":["small","large","extraLarge","unknown"],"default":"unknown","description":"The size of the package for the delivery. Not all Dispatch providers can adjust transport according to size requirements — verify with Deliverect whether the Dispatch provider in use supports `packageSize`. See the <a href=\"https://developers.deliverect.com/page/dispatch-delivery-job-model#package-sizes\" target=\"_blank\" rel=\"noopener noreferrer\">supported package sizes</a> for details.<br><br>`small` = 22 x 42 x 45 cm — standard delivery with a courier on a bicycle or scooter<br>`large` = 30 x 124 x 80 cm — delivery necessary by car or van<br>`extraLarge` = larger than 30 x 124 x 80 cm — for large catering orders with many trays, delivered by van<br>`unknown` = default, applied when `packageSize` is not provided"}},"required":["deliveryTime","street","postalCode","city","coordinates"]}},"required":["deliveryLocations"]},"examples":{"Dispatch Availability Example":{"summary":"Dispatch Availability Example","value":{"channelLinkId":"62********************7c","pickupTime":"yyyy-MM-ddTHH:mm:ssZ","deliveryLocations":{"deliveryTime":"yyyy-MM-ddTHH:mm:ssZ","packageSize":"unknown","name":"customer name","street":"customer street and number","city":"customer city","country":"customer country","postalCode":"postal code","source":"customer address","phone":"+111111111","coordinates":{"longitude":3.73361,"latitude":51.03111}}}},"Dispatch Availability - Multiple Locations":{"summary":"Dispatch Availability - Multiple Locations","value":{"channelLinkIds":["62********************7c","62********************7d"],"deliveryLocations":{"deliveryTime":"yyyy-MM-ddTHH:mm:ssZ","packageSize":"unknown","name":"customer name","street":"customer street and number","city":"customer city","country":"customer country","postalCode":"postal code","phone":"+111111111","coordinates":{"latitude":12.345678,"longitude":-98.765432},"source":"customer address"},"channelLinkId":"62********************7c","pickupTime":"yyyy-MM-ddTHH:mm:ssZ"}}}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"examples":{"Offers Not Available":{"summary":"Offers Not Available","value":"{\n  \"available\": False, \n  \"errors\": \"No valid offers available\"\n}"},"Offers Available":{"summary":"Offers Available","value":{"validationId":"62********************3e","available":true,"expiresAt":"YYYY-MM-DDTHH:mm:ss.SSSSSSZ","deliveryTimeETA":"YYYY-MM-DDTHH:mm:ss.SSSSSSZ","price":0}},"Offers Available - Multiple Stores":{"summary":"Offers Available - Multiple Stores","value":{"channelLinkIds":["61********************65"],"validationId":"62********************3e","available":true,"expiresAt":"yyyy-MM-ddTHH:mm:ssZ","deliveryTimeETA":"2022-08-08 11:00:00","pickupTimeEta":"2022-08-08 10:00:00","price":0}}},"schema":{"type":"object","properties":{"channelLinkIds":{"type":"array","items":{"type":"string","example":"61bcc34**57cc48c23eb65"}},"validationId":{"type":"string","example":"62********************3e"},"available":{"type":"boolean","example":true,"default":true},"expiresAt":{"type":"string","example":"YYYY-MM-DDTHH:mm:ss.SSSSSSZ"},"deliveryTimeETA":{"type":"string","example":"2022-08-08 11:00:00"},"pickupTimeEta":{"type":"string","example":"2022-08-08 10:00:00"},"price":{"type":"integer","example":0,"default":0}}}}}},"400":{"content":{"application/json":{"schema":{"type":"object","properties":{}},"examples":{"Bad Request":{"summary":"Bad Request","value":[{"loc":["channelLinkId"],"msg":"field required","type":"value_error.missing"},{"loc":["deliveryLocations","deliveryTime"],"msg":"field required","type":"value_error.missing"}]}}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"type":"object","properties":{}},"examples":{"Unauthorized":{"summary":"Unauthorized","value":{"code":"token_expired","description":"token is expired"}}}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"type":"object","properties":{}},"examples":{"Forbidden":{"summary":"Forbidden","value":{"error":"ChannelLinkId sent is not linked to the account"}}}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"type":"object","properties":{}},"examples":{"Not Found":{"summary":"Not Found","value":{"error":"ChannelLinkId sent is not found"}}}}},"description":"Not Found"}},"x-readme":{}}},"/{channelName}/order/{channelLinkId}":{"post":{"tags":["Endpoints"],"summary":"Create / Cancel Order","description":"","operationId":"post_channelname-order-channellinkid","parameters":[{"name":"channelName","in":"path","required":true,"schema":{"type":"string","default":"{channelName}"},"description":"This is provided as a '<Glossary>Scope</Glossary>' to grants permission to create orders within linked accounts only. This value must be provided in lowercase."},{"name":"channelLinkId","in":"path","required":true,"schema":{"type":"string","default":"{channelLinkId}"},"description":"The <Glossary>channelLinkId</Glossary> is the unique identifier for the channel configured on a restaurant location. This value is provided in the [Channel Registration](ref:channel_register) request."}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"channelOrderId":{"type":"string","description":"The full unique ID for the order from the ordering channel. This value cannot be reused within 48 hours after pickup, across all accounts."},"channelOrderDisplayId":{"type":"string","description":"A more human-readable order reference to provide to the customer or restaurant."},"validationId":{"type":"string","description":"The validation ID returned from the <a href=\"https://developers.deliverect.com/v3.0-ordering-experience/reference/post_fulfillment-validate\" target=\"_blank\" rel=\"noopener noreferrer\">dispatch availability</a> endpoint. This value cannot be reused and is valid for 10 minutes from generation. If an expired `validationId` is sent, the request fails with error 417."},"orderType":{"type":"integer","enum":[1,2,3,4],"description":"The type of order being placed. See the <a href=\"https://developers.deliverect.com/v3.0-ordering-experience/reference/create-channel-order#order-types\" target=\"_blank\" rel=\"noopener noreferrer\">Order Types</a> guide for full details.<br><br>`1` = Pickup<br>`2` = Delivery<br>`3` = Eat-in<br>`4` = Curbside"},"deliveryIsAsap":{"type":"boolean","description":"Indicates whether the delivery or pickup is ASAP. If `pickupTime` is within 30 minutes, this should be `true`."},"pickupTime":{"type":"string","description":"Timestamp in UTC (`yyyy-MM-ddTHH:mm:ssZ`). All time values in this API are in UTC, as per <a href=\"https://en.wikipedia.org/wiki/ISO_8601\" target=\"_blank\" rel=\"noopener noreferrer\">ISO 8601</a>. Required for delivery, pickup, and any non-ASAP order."},"deliveryTime":{"type":"string","description":"Timestamp in UTC (`yyyy-MM-ddTHH:mm:ssZ`). All time values in this API are in UTC, as per <a href=\"https://en.wikipedia.org/wiki/ISO_8601\" target=\"_blank\" rel=\"noopener noreferrer\">ISO 8601</a>. Required for non-ASAP delivery orders."},"placedTime":{"type":"string","description":"The time the order was placed. Timestamp in UTC (`yyyy-MM-ddTHH:mm:ssZ`), as per <a href=\"https://en.wikipedia.org/wiki/ISO_8601\" target=\"_blank\" rel=\"noopener noreferrer\">ISO 8601</a>."},"estimatedPickupTime":{"type":"string","description":"**Legacy parameter.** Timestamp in UTC (`yyyy-MM-ddTHH:mm:ssZ`), as per <a href=\"https://en.wikipedia.org/wiki/ISO_8601\" target=\"_blank\" rel=\"noopener noreferrer\">ISO 8601</a>. If your channel doesn't use a separate estimate for the pickup time, reuse the `pickupTime` value here."},"courier":{"type":"string","description":"Specifies who is delivering the order. There are two possible values: the channel's own name, sent when the channel itself handles delivery for the restaurant, or `restaurant`, sent when the restaurant is arranging its own delivery — this is also required where orders are fulfilled by an integrated Dispatch partner. See the <a href=\"https://developers.deliverect.com/v3.0-ordering-experience/reference/create-channel-order#create-orders-for-dispatch--last-mile-fulfillment\" target=\"_blank\" rel=\"noopener noreferrer\">Dispatch / last-mile fulfillment</a> guide for more information."},"ageCheck":{"type":"boolean","description":"Indicates whether the driver should verify the customer's age."},"deliveryAddress":{"type":"object","description":"The delivery address. Required if delivery is fulfilled by the restaurant or by a dispatch provider via Deliverect.","properties":{"street":{"type":"string","description":"The full street address, as a single-line string. Required if delivery is done by the restaurant or a dispatch provider via Deliverect."},"streetNumber":{"type":"string","description":"The numerical address assigned to the home, business, or other property. Required if delivery is done by the restaurant or a dispatch provider via Deliverect."},"postalCode":{"type":"string","description":"The postal or zip code. Required if delivery is done by the restaurant or a dispatch provider via Deliverect."},"area":{"type":"string","description":"The name of a geographic area or locality that groups addressable objects together, without being an administrative unit."},"city":{"type":"string","description":"City. Required if delivery is done by the restaurant or a dispatch provider via Deliverect."},"country":{"type":"string","description":"Country. Required if delivery is done by the restaurant or a dispatch provider via Deliverect."},"extraAddressInfo":{"type":"string","description":"Additional instructions for locating the customer's location, e.g. floor, unit, or access notes."},"coordinates":{"type":"object","description":"The geographic coordinates of the delivery address.","properties":{"latitude":{"type":"number","format":"float"},"longitude":{"type":"number","format":"float"}}},"verification":{"type":"object","description":"Address verification details.","properties":{"pincode":{"type":"string","description":"A verification pin code used to confirm the delivery address."}}}}},"deliveryInfo":{"type":"object","description":"Delivery information.","properties":{"packageSize":{"type":"string","description":"The size of the package."},"transportType":{"type":"string","description":"The mode of transport used for delivery, e.g. `bicycle`, `car`, `motorbike`."}}},"decimalDigits":{"type":"integer","description":"The number of decimal digits used for all monetary values in the order (typically `2`)."},"payment":{"type":"object","description":"Payment details for the order. See the <a href=\"https://developers.deliverect.com/v3.0-ordering-experience/docs/payments#payments\" target=\"_blank\" rel=\"noopener noreferrer\">Payments</a> guide for full details.","properties":{"amount":{"type":"integer","description":"The total amount paid, sent as an integer with 2 decimal digits (e.g. $5.00 is sent as `500`). Always pass the payment amount, whether or not the order is already paid.<br><br>`amount` = sum of the prices of all products in the order + `deliveryCost` + `serviceCharge` + `deliveryCostTax` + `serviceChargeTax` + the sum of all tax amounts in the `taxes` array."},"type":{"type":"integer","enum":[0,1],"description":"The method of payment used. See the <a href=\"https://developers.deliverect.com/v3.0-ordering-experience/docs/payments#payments\" target=\"_blank\" rel=\"noopener noreferrer\">Payments</a> guide for full details.<br><br>`0` = Credit card (online)<br>`1` = Cash"},"due":{"type":"integer","description":"The outstanding amount due."},"rebate":{"type":"integer","description":"The rebate amount applied to the payment, where applicable."},"commissionType":{"type":"string","description":"The type of commission charged by the channel for its services. Each type corresponds to an agreed percentage of the order value taken as commission. This is only provided by some channels."}},"required":["amount","type"]},"taxes":{"type":"array","description":"A consumption tax imposed by the relevant government on the sale of goods and services.","items":{"type":"object","properties":{"taxClassId":{"type":"integer","description":"An ID corresponding to this tax class. Not currently needed."},"name":{"type":"string","description":"The display name for this tax category, as it should be printed on a receipt. Not currently needed."},"total":{"type":"integer","description":"The tax total, for tax-exclusive locations, sent as an integer with 2 decimal digits (e.g. $1.00 is sent as `100`). See the <a href=\"https://developers.deliverect.com/v3.0-ordering-experience/docs/how-to-process-taxes\" target=\"_blank\" rel=\"noopener noreferrer\">Tax Exclusive Orders</a> guide for more details."}},"required":["total"]}},"taxRemitted":{"type":"integer","description":"In regions where the channel is responsible for charging tax, e.g. where it is a 'Marketplace Facilitator', this is the total tax remitted. This value should be sent outside the `taxes` array."},"items":{"type":"array","description":"The list of products included in the order.","items":{"type":"object","properties":{"plu":{"type":"string","description":"<Glossary>PLU</Glossary> is the unique code of the product."},"name":{"type":"string","description":"The name of the product or modifier."},"price":{"type":"integer","description":"The unit price for the item, sent as an integer with 2 decimal digits (e.g. $1.00 is sent as `100`)."},"quantity":{"type":"integer","description":"The number of items."},"remark":{"type":"string","description":"Item-level notes."},"itemUnavailableActions":{"type":"array","items":{"type":"string"},"description":"For ordering platforms in the retail space, customers can specify a preferred action to take if an item is unavailable. See the <a href=\"https://developers.deliverect.com/v2.0-retail/docs/how-to-handle-item-availability-actions\" target=\"_blank\" rel=\"noopener noreferrer\">item availability actions</a> guide for details."},"discountReferenceIds":{"type":"array","items":{"type":"integer"},"description":"References the discount(s) to apply to this specific item. Each ID must be referenced in the `discounts` array. See the <a href=\"https://developers.deliverect.com/v3.0-ordering-experience/docs/how-to-apply-discounts#discounts-reference-to-specific-items\" target=\"_blank\" rel=\"noopener noreferrer\">discounts</a> guide for details."},"subItems":{"type":"array","description":"Modifiers or sub-items for this item, where applicable.","items":{"type":"object","properties":{"plu":{"type":"string","description":"<Glossary>PLU</Glossary> is the unique code of the sub-item."},"name":{"type":"string","description":"The name of the sub-item."},"price":{"type":"integer","description":"The unit price for the sub-item, sent as an integer with 2 decimal digits (e.g. $1.00 is sent as `100`)."},"quantity":{"type":"integer","description":"The number of sub-items."},"remark":{"type":"string","description":"Sub-item-level notes."},"subItems":{"type":"array","description":"Nested modifiers or sub-items, where applicable.","items":{"type":"object"}}}}}},"required":["plu","name","price","quantity"]}},"includeCutlery":{"type":"boolean","description":"Indicates whether cutlery/utensils have been requested."},"table":{"type":"string","description":"For 'Eat-in' orders, a table number can be provided."},"orderIsAlreadyPaid":{"type":"boolean","description":"Confirms whether the order has already been fully paid. Set to `false` where a customer can check out without processing payment (e.g. pickup orders paid by cash on collection); otherwise set to `true`. Always pass the `payment.amount`, whether or not the order is already paid."},"note":{"type":"string","description":"Order-level note."},"numberOfCustomers":{"type":"integer","description":"The number of customers for the order."},"customer":{"type":"object","description":"Details about the customer placing the order.","properties":{"name":{"type":"string","description":"The name of the customer."},"companyName":{"type":"string","description":"A company name from which the order is placed."},"phoneNumber":{"type":"string","description":"The customer's contact phone number."},"phoneAccessCode":{"type":"string","description":"Used where a contact centre routes calls using a unique code."},"email":{"type":"string","description":"The customer's contact email address."},"tin":{"type":"string","description":"Tax Identification Number."},"note":{"type":"string","description":"An additional note about the customer."}}},"deliveryCost":{"type":"integer","description":"The cost of delivery applied, sent as an integer with 2 decimal digits (e.g. €1.00 is sent as `100`)."},"deliveryCostTax":{"type":"integer","description":"The tax applied to the delivery cost, sent as an integer with 2 decimal digits (e.g. €1.00 is sent as `100`)."},"serviceCharge":{"type":"integer","description":"The cost of any service charges applied, sent as an integer with 2 decimal digits (e.g. €1.00 is sent as `100`)."},"serviceChargeTax":{"type":"integer","description":"The tax applied to the service charge."},"tip":{"type":"integer","description":"A tip intended for the restaurant. Not all POS partners handle this; a toggle setting is available to exclude it if unsupported."},"driverTip":{"type":"integer","description":"A tip intended for the driver. Not all POS partners handle this; a toggle setting is available to exclude it if unsupported."},"bagFee":{"type":"integer","description":"A charge (mandatory in certain regions) against the packaging used, sent as an integer with 2 decimal digits (e.g. $1.20 is sent as `120`). Appears as a line item on the integrated POS when included."},"discountTotal":{"type":"integer","description":"The total discount, sent as a negative value. Required when applying a discount to the order — see the <a href=\"https://developers.deliverect.com/v3.0-ordering-experience/docs/how-to-apply-discounts#introduction\" target=\"_blank\" rel=\"noopener noreferrer\">discounts</a> guide for more detail."},"discounts":{"type":"array","description":"Optional, more detailed information about a discount, provided alongside `discountTotal`. See the <a href=\"https://developers.deliverect.com/v3.0-ordering-experience/docs/how-to-apply-discounts#introduction\" target=\"_blank\" rel=\"noopener noreferrer\">discounts</a> guide for full details.","items":{"type":"object","properties":{"type":{"type":"string","description":"The mapped channel discount type. See the <a href=\"https://developers.deliverect.com/page/list-of-discount-types\" target=\"_blank\" rel=\"noopener noreferrer\">list of Discount Types</a> in Deliverect."},"provider":{"type":"string","description":"The issuer of the discount — i.e. the party that bears the discounted amount."},"name":{"type":"string","description":"The name given to the discount."},"channelDiscountCode":{"type":"string","description":"The unique discount code used by the channel."},"referenceId":{"type":"integer","description":"A reference ID for this discount, used to link it from an item's `discountReferenceIds`."},"value":{"type":"integer","description":"The value of the discount."},"amount":{"type":"integer","description":"The actual discounted amount."}}}}},"required":["channelOrderId","channelOrderDisplayId","orderType","deliveryIsAsap","decimalDigits","courier","orderIsAlreadyPaid","payment","items"]},"examples":{"Create Order (Tax inclusive)":{"summary":"Create Order (Tax inclusive)","description":"For customers in tax inclusive regions, no additional tax calculation is required","value":{"channelOrderId":"TEST****628","channelOrderDisplayId":"T**628","validationId":"62********************3w","orderType":1,"deliveryIsAsap":true,"pickupTime":"yyyy-MM-ddTHH:mm:ssZ","deliveryTime":"yyyy-MM-ddTHH:mm:ssZ","placedTime":"yyyy-MM-ddTHH:mm:ssZ","courier":"restaurant","ageCheck":false,"deliveryAddress":{"street":"Folgate Street","streetNumber":"35","postalCode":"E1 6BX","area":"Spitalfields","city":"London","country":"United Kingdom","extraAddressInfo":"Ground Floor, near Spitalfields Market","coordinates":{"latitude":51.51942,"longitude":-0.07771},"verification":{"pincode":"1234"}},"deliveryInfo":{"packageSize":"small","transportType":"bicycle"},"decimalDigits":2,"payment":{"amount":1800,"type":0,"due":0},"taxes":[],"taxRemitted":0,"items":[{"plu":"P-SATE","name":"Chicken Sate","price":450,"quantity":1,"remark":"Extra spicy","discountReferenceIds":[1],"subItems":[{"plu":"RICE-01","name":"White Rice","price":450,"quantity":1,"subItems":[{"plu":"SAUCE-01","name":"Sate Sauce","price":50,"quantity":2,"subItems":[]}]}]}],"includeCutlery":false,"table":"","orderIsAlreadyPaid":true,"note":"","numberOfCustomers":1,"customer":{"name":"John","companyName":"Doe","phoneNumber":"0618776767","phoneAccessCode":"2105","email":"test@test.com","tin":"1234","note":"call once you arrive"},"deliveryCost":300,"deliveryCostTax":0,"serviceCharge":400,"serviceChargeTax":0,"tip":200,"driverTip":0,"bagFee":0,"discountTotal":-100,"discounts":[{"type":"order_flat_off","provider":"channel","name":"Test discount","channelDiscountCode":"test 1234","referenceId":1,"value":100,"amount":100}]}},"Create Order (Tax Exclusive)":{"summary":"Create Order (Tax Exclusive)","description":"For customers in tax exclusive regions, you should ensure you handle tax accordingly, see guide [here](https://developers.deliverect.com/v3.0-ordering-experience/docs/how-to-process-taxes)","value":{"channelOrderId":"TEST****629","channelOrderDisplayId":"T**629","validationId":"62********************3x","orderType":1,"deliveryIsAsap":true,"pickupTime":"yyyy-MM-ddTHH:mm:ssZ","deliveryTime":"yyyy-MM-ddTHH:mm:ssZ","placedTime":"yyyy-MM-ddTHH:mm:ssZ","courier":"restaurant","ageCheck":false,"deliveryAddress":{"street":"Adelaide Street East","streetNumber":"207","postalCode":"M5A1N4","area":"Distillery District","city":"Toronto","country":"Canada","extraAddressInfo":"1st floor","coordinates":{"latitude":43.65152,"longitude":-79.37128},"verification":{"pincode":""}},"deliveryInfo":{"packageSize":"small","transportType":"bicycle"},"decimalDigits":2,"payment":{"amount":1800,"type":0,"due":0},"taxes":[{"taxClassId":0,"name":"taxes","total":77}],"taxRemitted":77,"items":[{"plu":"P-SATE","name":"Chicken Sate","price":450,"quantity":1,"remark":"Extra spicy","discountReferenceIds":[1],"subItems":[{"plu":"RICE-01","name":"White Rice","price":450,"quantity":1,"subItems":[{"plu":"SAUCE-01","name":"Sate Sauce","price":50,"quantity":2,"subItems":[]}]}]}],"includeCutlery":false,"table":"","orderIsAlreadyPaid":true,"note":"","numberOfCustomers":1,"customer":{"name":"Jane","companyName":"Doe","phoneNumber":"0618776767","phoneAccessCode":"5040","email":"test@test.com","tin":"1234","note":"call once you arrive"},"deliveryCost":300,"deliveryCostTax":0,"serviceCharge":400,"serviceChargeTax":0,"tip":200,"driverTip":0,"bagFee":0,"discountTotal":-100,"discounts":[{"type":"order_flat_off","provider":"channel","name":"Test discount","channelDiscountCode":"test 1234","referenceId":1,"value":100,"amount":100}]}},"Cancel Order":{"summary":"Cancel Order","value":{"channelOrderId":"{{channelOrderId}}","channelOrderDisplayId":"{{channelOrderDisplayId}}","cancellationReason":"CANCELLATION","status":100}}}}}},"responses":{"201":{"content":{"application/json":{"schema":{"type":"object","description":"<div class=\"callout-banner callout-banner--important\">\n  <span class=\"callout-icon\"><i class=\"fa-regular fa-triangle-exclamation\"></i></span>\n  <p><strong>Order Response</strong><br>All orders sent in a valid format with the correct scope applied will receive a <code>201</code>. This does not indicate that the POS has successfully processed the order. You should reference the events sent to your <a href=\"https://developers.deliverect.com/v3.0-ordering-experience/reference/channel_order_status\" style=\"color: #b71c1c; font-weight: 600; text-decoration: underline;\">Order Status Update</a> webhook to confirm whether the order was successfully processed.</p>\n</div>","properties":{}},"examples":{"Created":{"summary":"Created","value":"{}"}}}},"description":"Created"},"400":{"content":{"application/json":{"schema":{"type":"object","properties":{}},"examples":{"Bad Request":{"summary":"Bad Request","value":{"orderFieldsErrors":{"channelOrderId":"Missing from the payload.","channelOrderDisplayId":"Missing from the payload.","items":"Missing from the payload.","decimalDigits":"Missing from the payload."},"orderPaymentErrors":{"amount":"Missing from the payload.","type":"Missing from the payload."}}}}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"type":"object","properties":{}},"examples":{"Unauthorized":{"summary":"Unauthorized","value":{"code":"token_expired","description":"token is expired"}}}}},"description":"Unauthorized"},"404":{"content":{"application/json":{"schema":{"type":"object","properties":{}},"examples":{"Not Found":{"summary":"Not Found","value":{"message":"The requested URL was not found on the server. If you entered the URL manually please check your spelling and try again."}}}}},"description":"Not Found"},"417":{"description":"ValidationId is expired or invalid. Please Validate the job again","content":{"text/html":{"schema":{"type":"object","properties":{}}}}},"500":{"content":{"application/json":{"schema":{"type":"object","properties":{}},"examples":{"Internal Server Error":{"summary":"Internal Server Error","value":{"error":{"code":"internal_server_error","message":"Internal server error"}}}}}},"description":"Internal Server Error"}}}}},"webhooks":{"https://yourwebhook.com/register":{"post":{"tags":["Webhooks"],"summary":"Channel Registration","description":"","operationId":"channel_register1","requestBody":{"content":{"application/json":{"schema":{"type":"object","required":["status","channelLocationId","channelLinkId","locationId","channelLinkName"],"properties":{"status":{"type":"string","description":"The store's onboarding status:\n\n- `register` — A new store/location needs to establish a connection between Deliverect and a channel platform\n- `active` — A new store/location is ready to start receiving orders into Deliverect from the channel platform\n- `inactive` — A customer wants to stop receiving orders to this store/location from the channel platform","enum":["register","active","inactive"],"example":"register"},"channelLocationId":{"type":"string","description":"An identifier which can be set in Deliverect, which is known to the Merchant and allows mapping to the corresponding Deliverect channel link","example":"UniqueIdInChannelForThisLocation"},"channelLinkId":{"type":"string","description":"<Glossary>channelLinkId</Glossary> is an individual store’s unique ID in Deliverect.","example":"{{channelLinkId}}"},"locationId":{"type":"string","description":"<Glossary>locationId</Glossary> is Deliverect's unique identifier of a physical restaurant location, store, or kitchen.","example":"{{locationId}}"},"channelLinkName":{"type":"string","description":"The channel name displayed in Deliverect.","example":"Order Boss"}}},"examples":{"register":{"summary":"Register","description":"As the first onboarding step to initiate store mapping, the `register` status is sent and in response requires a JSON body including all supported webhook URLs (see <a href=\"https://developers.deliverect.com/v3.0-ordering-experience/reference/channel_register#response-schemas\" target=\"_self\">Response body</a>)","value":{"status":"register","channelLocationId":"UniqueIdInChannelForThisLocation","channelLinkId":"{{channelLinkId}}","locationId":"{{locationId}}","channelLinkName":"Order Boss"}},"active":{"summary":"Activate","description":"When a store is ready, the `active` status confirms that all integration functions are to be enabled as the store is ready to start receiving orders.","value":{"status":"active","channelLocationId":"{{externalChannelLocationId}}","channelLinkId":"{{channelLinkId}}","locationId":"{{locationId}}","channelLinkName":"Order Boss"}},"inactive":{"summary":"Deactivate","description":"For offboarding, the `inactive` status confirms the customer wants to stop receiving orders to this store and needs fully de-integrated.","value":{"status":"inactive","channelLocationId":"{{externalChannelLocationId}}","channelLinkId":"{{channelLinkId}}","locationId":"{{locationId}}","channelLinkName":"Order Boss"}}}}},"required":true,"description":"To facilitate store onboarding, Deliverect first sends a `register` event to initiate store mapping on the channel side, where a JSON body listing all supported webhook URLs is expected in response (see <a href=\"https://developers.deliverect.com/v3.0-ordering-experience/reference/channel_register#response-schemas\" target=\"_self\">Response body</a>). When customers are ready to launch, an `active` status confirms that integrations functions like ordering, menu management etc should be switched on. If a store is to be offboarded sends an `inactive` event is sent and all aspects of the connection should be de-integrated."},"responses":{"200":{"description":"For a `register` event, return the JSON object below with the correct endpoint to use for each webhook event type. Deliverect stores these automatically, so no manual configuration is needed. For `active` and `inactive` events, no response body is expected; return a `200` only.","content":{"application/json":{"schema":{"type":"object","description":"<div class=\"callout-banner callout-banner--neutral\">\n  <span class=\"callout-icon\"><i class=\"fa-regular fa-square-info\"></i></span>\n  <p>\n    Please note, the expected response to a <code>register</code> event is\n    <strong>case-sensitive</strong> ensure the response matches the required format exactly.\n  </p>\n</div>\n\n```json\n{\n  \"statusUpdateURL\": \"https://integrator.com/statusUpdate\",\n  \"menuUpdateURL\": \"https://integrator.com/menuUpdate\",\n  \"snoozeUnsnoozeURL\": \"https://integrator.com/snoozeUnsnooze\",\n  \"busyModeURL\": \"https://integrator.com/busyMode\",\n  \"updatePrepTimeURL\": \"https://integrator.com/updatePrepTimeURL\",\n  \"courierUpdateURL\": \"https://yourwebhook.com/courier_update\",\n  \"paymentUpdateURL\": \"https://yourwebhook.com/payment_update\",\n  \"authorizationURL\": \"https://yourwebhook.com/authorization\",\n  \"menuUrl\": \"https://integrator.com/store\"\n}\n```","required":["statusUpdateURL","menuUpdateURL","snoozeUnsnoozeURL","busyModeURL"],"properties":{"statusUpdateURL":{"type":"string","description":"Receive <a href=\"/reference/channel_order_status\" target=\"_self\">Order Status Update</a> events","example":"https://integrator.com/statusUpdate"},"menuUpdateURL":{"type":"string","description":"Receive <a href=\"/reference/channel_menu_update\" target=\"_self\">Menu Update</a> requests","example":"https://integrator.com/menuUpdate"},"snoozeUnsnoozeURL":{"type":"string","description":"Receive both <a href=\"/reference/channel_snooze\" target=\"_self\">Snooze / Unsnooze Products</a> requests","example":"https://integrator.com/snoozeUnsnooze"},"busyModeURL":{"type":"string","description":"Receive <a href=\"/reference/busy-mode\" target=\"_self\">Busy mode</a> requests (paused/online)","example":"https://integrator.com/busyMode"},"updatePrepTimeURL":{"type":"string","description":"Receive <a href=\"/reference/channel_prep_time\" target=\"_self\">Preparation Time Update</a> requests","example":"https://integrator.com/updatePrepTimeURL"},"courierUpdateURL":{"type":"string","description":"Receive <a href=\"/reference/courier-update-webhook\" target=\"_self\">Courier Update</a> events","example":"https://yourwebhook.com/courier_update"},"paymentUpdateURL":{"type":"string","description":"Receive <a href=\"/reference/payment-update-webhook\" target=\"_self\">Payment Update</a> events","example":"https://yourwebhook.com/payment_update"},"authorizationURL":{"type":"string","description":"Receive <a href=\"/reference/channel_authorize\" target=\"_self\">SSO Authorization</a> requests","example":"https://yourwebhook.com/authorization"},"menuUrl":{"type":"string","description":"Merchant Store URL / site URL","example":"https://integrator.com/store"}}},"examples":{"register":{"summary":"Register Response","value":{"statusUpdateURL":"https://integrator.com/statusUpdate","menuUpdateURL":"https://integrator.com/menuUpdate","snoozeUnsnoozeURL":"https://integrator.com/snoozeUnsnooze","busyModeURL":"https://integrator.com/busyMode","updatePrepTimeURL":"https://integrator.com/updatePrepTimeURL","courierUpdateURL":"https://yourwebhook.com/courier_update","paymentUpdateURL":"https://yourwebhook.com/payment_update","authorizationURL":"https://yourwebhook.com/authorization","menuUrl":"https://integrator.com/store"}}}}}},"400":{"description":"400","content":{"application/json":{"examples":{"Result":{"value":"{}"}},"schema":{"type":"object","properties":{}}}}}},"deprecated":false,"x-readme":{"explorer-enabled":false,"code-samples":[{"language":"json","name":"Register","code":"{\n  \"status\": \"register\",\n  \"channelLocationId\": \"UniqueIdInChannelForThisLocation\",\n  \"channelLinkId\": \"{{channelLinkId}}\",\n  \"locationId\": \"{{locationId}}\",\n  \"channelLinkName\": \"Order Boss\"\n}","correspondingExample":"register"},{"language":"json","name":"Activate","code":"{\n  \"status\": \"active\",\n  \"channelLocationId\": \"{{externalChannelLocationId}}\",\n  \"channelLinkId\": \"{{channelLinkId}}\",\n  \"locationId\": \"{{locationId}}\",\n  \"channelLinkName\": \"Order Boss\"\n}","correspondingExample":"active"},{"language":"json","name":"Deactivate","code":"{\n  \"status\": \"inactive\",\n  \"channelLocationId\": \"{{externalChannelLocationId}}\",\n  \"channelLinkId\": \"{{channelLinkId}}\",\n  \"locationId\": \"{{locationId}}\",\n  \"channelLinkName\": \"Order Boss\"\n}","correspondingExample":"inactive"}]},"parameters":[{"name":"Content-Type","in":"header","description":"application/json","schema":{"type":"string","default":"application/json"}},{"name":"Accept","in":"header","description":"application/json","schema":{"type":"string","default":"application/json"}},{"name":"User-Agent","in":"header","required":true,"description":"Identifies Deliverect as the sender of the webhook, in the format `Deliverect/{version}`.","schema":{"type":"string","default":"Deliverect/{version}"}},{"name":"X-Server-Authorization-HMAC-SHA256","in":"header","required":true,"description":"HMAC-SHA256 signature of the raw request body, generated with your shared secret. Recompute the signature on receipt and compare it to this value to verify the request came from Deliverect (see the <a href=\"https://developers.deliverect.com/reference/hmac-authentication\" target=\"_blank\" rel=\"noopener noreferrer\">HMAC authentication guide</a>).","schema":{"type":"string","default":"{signature}"}}],"security":[]}},"https://yourwebhook.com/menu_update":{"post":{"tags":["Webhooks"],"summary":"Menu Update","description":"","operationId":"channel_menu_update","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"menu":{"type":"string","description":"The name of the menu. Always present."},"menuTranslations":{"type":"object","description":"Translation of the menu name with language codes as keys (see guide <a href=\"https://developers.deliverect.com/v3.0-ordering-experience/docs/how-to-handle-translations\" target=\"_blank\" rel=\"noopener noreferrer\">here</a>).","properties":{"es":{"type":"string","description":"Menu Title in Spanish (`es`).","example":"Menú principal"},"fr":{"type":"string","description":"Menu Title in French (`fr`).","example":"Exemple de Menu"},"nl":{"type":"string","description":"Menu Title in Dutch (`nl`).","example":"Hoofdmenu"},"ar":{"type":"string","description":"Menu Title in Arabic (`ar`).","example":"القائمة الرئيسية"}},"example":{"es":"Menú principal","fr":"Exemple de Menu","nl":"Hoofdmenu","ar":"القائمة الرئيسية"}},"description":{"type":"string","description":"Description of the menu."},"descriptionTranslations":{"type":"object","description":"Translation of the menu description with language codes as keys (see guide <a href=\"https://developers.deliverect.com/v3.0-ordering-experience/docs/how-to-handle-translations\" target=\"_blank\" rel=\"noopener noreferrer\">here</a>).","properties":{"es":{"type":"string","description":"Menu Description in Spanish (`es`).","example":"Deliciosos Bistecs Fritos"},"fr":{"type":"string","description":"Menu Description in French (`fr`).","example":"Steak Frites Délicieux"},"nl":{"type":"string","description":"Menu Description in Dutch (`nl`).","example":"Heerlijke Biefstuk Frites"},"ar":{"type":"string","description":"Menu Description in Arabic (`ar`).","example":"شريحة لحم فريتس"}},"example":{"es":"Deliciosos Bistecs Fritos","fr":"Steak Frites Délicieux","nl":"Heerlijke Biefstuk Frites","ar":"شريحة لحم فريتس"}},"menuImageURL":{"type":"string","description":"Header/Banner image url of the menu (more info on images <a href=\"https://developers.deliverect.com/v3.0-ordering-experience/docs/how-to-handle-images\" target=\"_blank\" rel=\"noopener noreferrer\">here</a>)."},"menuId":{"type":"string","description":"Internal Deliverect menu id. Always present."},"menuType":{"type":"integer","description":"Five different types of menus, with each representing the intended ordering type for which the menu is suitable:\n\n- DELIVERY_AND_PICKUP = `0`\n- DELIVERY = `1`\n- PICKUP = `2`\n- EAT_IN = `3`\n- CURBSIDE = `4`\n\nAlways present.","enum":[0,1,2,3,4]},"channelLinkId":{"type":"string","description":"<Glossary>channelLinkId</Glossary> is an individual store’s unique ID in Deliverect."},"nestedModifiers":{"type":"boolean","description":"Indicates if nested modifiers are present in the menu (see section <a href=\"https://developers.deliverect.com/v3.0-ordering-experience/docs/how-to-handle-modifer-groups#nested-modifiers\" target=\"_blank\" rel=\"noopener noreferrer\">here</a> for further reference). Always present."},"currency":{"type":"integer","description":"<a href=\"https://developers.deliverect.com/page/list-of-currencies\" target=\"_blank\" rel=\"noopener noreferrer\">Currency</a> of the menu."},"productTags":{"type":"array","items":{"type":"integer"},"description":"Array of all tags that exist in the menu (see guide <a href=\"https://developers.deliverect.com/v3.0-ordering-experience/docs/how-to-handle-product-metadata\" target=\"_blank\" rel=\"noopener noreferrer\">here</a>)."},"availabilities":{"type":"array","description":"The times during which the menu should be available. This will in most cases equate to the store's opening hours.","items":{"type":"object","description":"A recurring weekly time window during which the parent entity should be available.","properties":{"dayOfWeek":{"type":"integer","description":"An integer value that indicates the day of the week for this availability (starting at `1` for Monday)."},"startTime":{"type":"string","description":"A 24-hour `HH:MM` format notation of the start time of availability expressed in the local time of the location."},"endTime":{"type":"string","description":"A 24-hour `HH:MM` format notation of the end time of availability expressed in the local time of the location."}}}},"categories":{"type":"array","description":"The categories within a menu.","items":{"type":"object","description":"A category within a menu.","properties":{"_id":{"type":"string","description":"Internal Deliverect id of the category."},"name":{"type":"string","description":"Category name."},"nameTranslations":{"type":"object","description":"Translations of the category name with language codes as keys (see guide <a href=\"https://developers.deliverect.com/v3.0-ordering-experience/docs/how-to-handle-translations\" target=\"_blank\" rel=\"noopener noreferrer\">here</a>).","properties":{"es":{"type":"string","description":"Category Name in Spanish (`es`).","example":"Filetes y hamburguesas"},"fr":{"type":"string","description":"Category Name in French (`fr`).","example":"Steaks et burgers"},"nl":{"type":"string","description":"Category Name in Dutch (`nl`).","example":"Steaks en burgers"},"ar":{"type":"string","description":"Category Name in Arabic (`ar`).","example":"ستيك وبرغر"}},"example":{"es":"Filetes y hamburguesas","fr":"Steaks et burgers","nl":"Steaks en burgers","ar":"ستيك وبرغر"}},"description":{"type":"string","description":"Description of the category."},"descriptionTranslations":{"type":"object","description":"Translation of the category description with language codes as keys (see guide <a href=\"https://developers.deliverect.com/v3.0-ordering-experience/docs/how-to-handle-translations\" target=\"_blank\" rel=\"noopener noreferrer\">here</a>).","properties":{"es":{"type":"string","description":"Category Description in Spanish (`es`).","example":"Algo de la parrilla"},"fr":{"type":"string","description":"Category Description in French (`fr`).","example":"Quelque chose du grill"},"nl":{"type":"string","description":"Category Description in Dutch (`nl`).","example":"Iets van de grill"},"ar":{"type":"string","description":"Category Description in Arabic (`ar`).","example":"أطباق من الشواية"}},"example":{"es":"Algo de la parrilla","fr":"Quelque chose du grill","nl":"Iets van de grill","ar":"أطباق من الشواية"}},"imageUrl":{"type":"string","description":"Image url of the category (see more info on images <a href=\"https://developers.deliverect.com/v3.0-ordering-experience/docs/how-to-handle-images\" target=\"_blank\" rel=\"noopener noreferrer\">here</a>)."},"availabilities":{"type":"array","description":"Category availabilities.","items":{"type":"object","description":"Category availability window.","properties":{"dayOfWeek":{"type":"integer","description":"An integer value that indicates the day of the week for this availability (starting at `1` for Monday)."},"startTime":{"type":"string","description":"A 24-hour `HH:MM` format notation of the start time of availability expressed in the local time of the location."},"endTime":{"type":"string","description":"A 24-hour `HH:MM` format notation of the end time of availability expressed in the local time of the location."},"category":{"type":"string","description":"Unique ID of the menu category."}}}},"subProducts":{"type":"array","items":{"type":"string"},"description":"Products that exist under each category, see <a href=\"https://developers.deliverect.com/v3.0-ordering-experience/docs/how-to-sort-categories-items\" target=\"_blank\" rel=\"noopener noreferrer\">guide here</a> for more context on correct sorting."},"menu":{"type":"string","description":"The unique ID of the menu this category belongs to."},"account":{"type":"string","description":"The unique ID of the account this category belongs to."},"subCategories":{"type":"array","items":{"type":"string"},"description":"List of child category IDs, present in retail catalogs."},"posLocationId":{"type":"string","deprecated":true},"products":{"type":"array","items":{"type":"string"},"description":"Deprecated. For correct sorting of products in categories, see `subProducts`.","deprecated":true},"posCategoryType":{"type":"string","deprecated":true},"posCategoryId":{"type":"string","deprecated":true},"sortedChannelProductIds":{"type":"array","items":{"type":"string"},"description":"Deprecated. For correct sorting of products in categories, see `subProducts`.","deprecated":true},"subProductSortOrder":{"type":"array","items":{"type":"string"},"description":"Deprecated. For correct sorting of products in categories, see `subProducts`.","deprecated":true},"level":{"type":"integer","deprecated":true}}}},"products":{"type":"object","description":"Object keyed by ID; `{productId}` represents each key.","properties":{"{productId}":{"type":"object","description":"Identifier of a particular product and its location in the menu structure, matching the product's `_id`. This is not a universal identifier for the product and is not fixed.","properties":{"_id":{"type":"string","description":"Identifier of a particular product and its location in the menu structure. This is not a universal identifier for the product and is not fixed."},"plu":{"type":"string","description":"Unique identifier of the item, to be used when creating orders."},"gtin":{"type":"array","items":{"type":"string"},"description":"GTIN (Global Trade Item Number) for product, which could be an EAN code. NB: these are not validated as yet."},"imageUrl":{"type":"string","description":"Image associated with the item (see more info on images <a href=\"https://developers.deliverect.com/v3.0-ordering-experience/docs/how-to-handle-images\" target=\"_blank\" rel=\"noopener noreferrer\">here</a>)."},"name":{"type":"string","description":"Item name."},"price":{"type":"integer","description":"Price of the item with 2 decimal digits, e.g. 1 euro is stored as 100."},"bottleDepositPrice":{"type":"integer","description":"Deprecated. See `supplementalInfo.deposit`.","deprecated":true},"nameTranslations":{"type":"object","description":"Translation of an item name with language codes as keys (see guide <a href=\"https://developers.deliverect.com/v3.0-ordering-experience/docs/how-to-handle-translations\" target=\"_blank\" rel=\"noopener noreferrer\">here</a>).","properties":{"es":{"type":"string","description":"Product Name in Spanish (`es`).","example":"Deliciosos Bistecs Fritos"},"fr":{"type":"string","description":"Product Name in French (`fr`).","example":"Steak Frites Delicieux"},"nl":{"type":"string","description":"Product Name in Dutch (`nl`).","example":"Heerlijke Biefstuk Frites"},"ar":{"type":"string","description":"Product Name in Arabic (`ar`).","example":"ستيك لذيذ مع بطاطس مقلية"}},"example":{"es":"Deliciosos Bistecs Fritos","fr":"Steak Frites Delicieux","nl":"Heerlijke Biefstuk Frites","ar":"ستيك لذيذ مع بطاطس مقلية"}},"productType":{"type":"integer","description":"<Glossary>productType</Glossary> is Product","enum":[1],"default":1},"description":{"type":"string","description":"Item description."},"descriptionTranslations":{"type":"object","description":"Translation of the item description with language codes as keys (see guide <a href=\"https://developers.deliverect.com/v3.0-ordering-experience/docs/how-to-handle-translations\" target=\"_blank\" rel=\"noopener noreferrer\">here</a>).","properties":{"es":{"type":"string","description":"Product Description in Spanish (`es`).","example":"Producto de ejemplo básico con - Grupos de modificadores - variables mín./máx. - selección predeterminada - traducciones"},"fr":{"type":"string","description":"Product Description in French (`fr`).","example":"Exemple de produit de base avec - groupes de modificateurs - variables min/max - sélection par défaut - traductions"},"nl":{"type":"string","description":"Product Description in Dutch (`nl`).","example":"Eenvoudig voorbeeldproduct met - Modifiergroepen - min/max-variabelen - standaardselectie - vertalingen"},"ar":{"type":"string","description":"Product Description in Arabic (`ar`).","example":"مثال لمنتج أساسي يتضمن - مجموعات الإضافات - متغيرات الحد الأدنى/الأقصى - الاختيار الافتراضي - الترجمات"}},"example":{"es":"Producto de ejemplo básico con - Grupos de modificadores - variables mín./máx. - selección predeterminada - traducciones","fr":"Exemple de produit de base avec - groupes de modificateurs - variables min/max - sélection par défaut - traductions","nl":"Eenvoudig voorbeeldproduct met - Modifiergroepen - min/max-variabelen - standaardselectie - vertalingen","ar":"مثال لمنتج أساسي يتضمن - مجموعات الإضافات - متغيرات الحد الأدنى/الأقصى - الاختيار الافتراضي - الترجمات"}},"deliveryTax":{"type":"integer","description":"Sales tax specific on order type of 'Delivery' for the item. Tax rates are always stored as an int with 3 decimal digits, e.g. 5% would be sent as `5000`."},"takeawayTax":{"type":"integer","description":"Sales tax specific on order type of 'Takeaway' for the item. Tax rates are always sent as an int with 3 decimal digits, e.g. 5% would be sent as `5000`."},"eatInTax":{"type":"integer","description":"Sales tax specific on order type of 'Eat-in' for the item. Tax rates are always sent as an int with 3 decimal digits, e.g. 5% would be sent as `5000`."},"multiMax":{"type":"integer","description":"Maximum quantity of any single item which can be purchased within a group (modifier group). Also applicable to products, where it should control how many items can be added to a basket, e.g. Paracetamol."},"defaultQuantity":{"type":"integer","description":"Controls the behaviour of 'pre-selected' items, where a quantity >0 should be automatically selected (typically '1'); higher default quantities can also be set."},"isCombo":{"type":"boolean","description":"Indicates if a product is a combo item/meal deal."},"isVariant":{"type":"boolean","description":"Applicable to a **product** to indicate if it is a variant or not (see guide <a href=\"https://developers.deliverect.com/v3.0-ordering-experience/docs/how-to-handle-variants\" target=\"_blank\" rel=\"noopener noreferrer\">here</a>)."},"snoozed":{"type":"boolean","description":"Indicates whether an item is snoozed at the point of a menu being published."},"visible":{"type":"boolean","description":"Deprecated. The value will always be set to `true` as disabled items won't appear in the menu payload.","deprecated":true},"productTags":{"type":"array","items":{"type":"integer"},"description":"All tags which apply to this item, see complete list <a href=\"https://developers.deliverect.com/v3.0-ordering-experience/docs/how-to-handle-product-metadata\" target=\"_blank\" rel=\"noopener noreferrer\">here</a>."},"account":{"type":"string","description":"Unique customer account ID where the item is stored."},"referenceId":{"type":"string","description":"The original PLU of the item, only for tracking sales, e.g. for loyalty purposes. Not to be included in the payload for order creation."},"location":{"type":"string","description":"Unique customer location ID where the item is stored."},"capacityUsages":{"type":"array","items":{},"deprecated":true},"subProducts":{"type":"array","items":{"type":"string"},"description":"List of items belonging to the group."},"beverageInfo":{"type":"object","description":"Information specific to beverages.","properties":{"caffeine":{"type":"integer","description":"Caffeine content of the beverage, expressed in milligrams (mg).","example":95},"alcohol":{"type":"integer","description":"Alcohol percentage, sent as an integer in E2 format (the percentage multiplied by 100) so that decimal values can be represented. For example, `1250` represents 12.5% and `475` represents 4.75%.","example":1250}}},"calories":{"type":"integer","description":"Expressed in kcal / Cals."},"caloriesRangeHigh":{"type":"integer","description":"If a range is supported, the minimum is `calories` and maximum is `caloriesRangeHigh`."},"caloriesFromFat":{"type":"integer","description":"Calories from fat, expressed in kcal / Cals.","example":100},"kJFromFat":{"type":"integer","description":"Energy from fat, expressed in kilojoules (kJ).","example":418},"nutritionalInfo":{"type":"object","description":"Expressed in grams, e.g. `fat`, `sugar`, `saturatedFat`, `carbohydrates`, `protein`, `salt`, etc (see this section of the product guide <a href=\"https://developers.deliverect.com/v3.0-ordering-experience/docs/how-to-handle-product-metadata\" target=\"_blank\" rel=\"noopener noreferrer\">here</a>).","properties":{"fat":{"type":"number","description":"Fat in grams.","example":32.5},"sugar":{"type":"number","description":"Sugar in grams.","example":2.1},"addedSugar":{"type":"number","description":"Added sugar in grams."},"saturatedFat":{"type":"number","description":"Saturated fat in grams.","example":12.8},"monoUnsaturatedFat":{"type":"number","description":"Monounsaturated fat in grams."},"polyUnsaturatedFat":{"type":"number","description":"Polyunsaturated fat in grams."},"transFat":{"type":"number","description":"Trans fat in grams."},"cholesterol":{"type":"number","description":"Cholesterol."},"carbohydrates":{"type":"number","description":"Carbohydrates in grams.","example":48},"polyols":{"type":"number","description":"Polyols in grams."},"starch":{"type":"number","description":"Starch in grams."},"fiber":{"type":"number","description":"Fibre in grams."},"dietaryFiber":{"type":"number","description":"Dietary fibre in grams.","example":4.3},"protein":{"type":"number","description":"Protein in grams.","example":41.2},"salt":{"type":"number","description":"Salt in grams.","example":2.4},"sodium":{"type":"number","description":"Sodium."},"vitaminC":{"type":"number","description":"Vitamin C."},"calcium":{"type":"number","description":"Calcium."},"magnesium":{"type":"number","description":"Magnesium."},"chloride":{"type":"number","description":"Chloride."},"fluoride":{"type":"number","description":"Fluoride."},"potassium":{"type":"number","description":"Potassium."},"servingSize":{"type":"object","description":"Details of a serving size.","properties":{"amount":{"type":"number","description":"The serving size amount."},"unitType":{"type":"integer","description":"What the serving size unit type is; Weight (in grams) = `1`, Volume (in milliliter) = `2`, Count (i.e., piece, slice, capsule, cookie, etc) = `3`.","enum":[1,2,3]},"countUnitDescription":{"type":"string","description":"The serving size unit description."}}},"servingCount":{"type":"integer","description":"Number of servings.","example":1},"netQuantity":{"type":"object","description":"Details on quantity.","properties":{"amount":{"type":"number","description":"The net quantity amount."},"unitType":{"type":"integer","description":"What the net quantity unit type is; Weight (in grams) = `1`, Volume (in milliliter) = `2`, Count (i.e., piece, slice, capsule, cookie, etc) = `3`.","enum":[1,2,3]},"countUnitDescription":{"type":"string","description":"The net quantity unit description."}}}}},"packaging":{"type":"object","description":"Details on the packaging.","properties":{"count":{"type":"integer","description":"Quantity of packaging."},"reusable":{"type":"boolean","description":"Whether packaging is re-usable or not."},"storageInstructions":{"type":"string","description":"Instructions for storage."}}},"supplementalInfo":{"type":"object","description":"Additional information about an item, for more information see <a href=\"https://developers.deliverect.com/v3.0-ordering-experience/docs/how-to-handle-product-metadata\" target=\"_blank\" rel=\"noopener noreferrer\">here</a>.","properties":{"legalName":{"type":"string","description":"Legal name of the item."},"instructionsForUse":{"type":"string","description":"Any specific instructions for use."},"ingredients":{"type":"array","items":{"type":"string"},"description":"Array of ingredients."},"additives":{"type":"array","items":{"type":"string"},"description":"Array of additives."},"prepackaged":{"type":"boolean","description":"Specifies whether the item is prepackaged."},"deposit":{"type":"integer","description":"In certain regions a deposit is required for e.g. bottled drinks; this will be included in the price, yet the deposit should be clearly displayed to the consumer. Deposit expressed to 2 decimal digits, e.g. 1 euro is stored as 100 (see guide <a href=\"https://developers.deliverect.com/v3.0-ordering-experience/docs/how-to-set-bottle-deposits\" target=\"_blank\" rel=\"noopener noreferrer\">here</a>)."},"fbo":{"type":"object","description":"Details of the food business operator.","properties":{"name":{"type":"string","description":"Food business operator name."},"address":{"type":"string","description":"Food business operator address."},"brand":{"type":"string","description":"Food business operator brand name."},"countryOfOrigin":{"type":"string","description":"Food business operator country of origin."}}}}},"parentId":{"type":"string","description":"Deprecated. Follow each `subProducts` array recursively from the top level down to determine nesting. `parentId` is legacy and shouldn't be used.","deprecated":true},"posCategoryIds":{"type":"array","items":{"type":"string"},"description":"The POS ID of the category this product belongs to in the POS."},"posProductCategoryId":{"type":"string","description":"The ID of this product in the POS, internal to POS, not to be used when creating orders."},"posProductId":{"type":"string","description":"The ID of this product in the POS, internal to POS, not to be used when creating orders."},"subProductSortOrder":{"type":"array","items":{"type":"string"},"description":"A list of product PLUs belonging to this product that preserves the order of these sub-products."},"metadata":{"type":"array","description":"A list of custom key/value pairings added to product data, e.g. `\"metadata\": [{\"key\": \"highlight\", \"value\": \"true\"}]`.","items":{"type":"object","properties":{"key":{"type":"string"},"value":{"type":"string"}}}},"displayLabels":{"type":"array","items":{"type":"string","enum":["new","popular","offer","exclusive","limited","hero","featured"]},"description":"List of labels for marketing purposes applied to products, e.g. `{\"displayLabels\": [\"new\", \"popular\"]}`."}}}}},"modifiers":{"type":"object","description":"Modifiers in the menu, sharing a common attribute structure with `products` (collectively referred to as *items* below).\n\nObject keyed by ID; `{modifierId}` represents each key.","properties":{"{modifierId}":{"type":"object","description":"Identifier of a particular modifier and its location in the menu structure, matching the modifier's `_id`. This is not a universal identifier for the modifier and is not fixed.","properties":{"_id":{"type":"string","description":"Identifier of a particular modifier and its location in the menu structure. This is not a universal identifier for the modifier and is not fixed."},"plu":{"type":"string","description":"Unique identifier of the item, to be used when creating orders."},"gtin":{"type":"array","items":{"type":"string"},"description":"GTIN (Global Trade Item Number) for product, which could be an EAN code. NB: these are not validated as yet."},"imageUrl":{"type":"string","description":"Image associated with the item (see more info on images <a href=\"https://developers.deliverect.com/v3.0-ordering-experience/docs/how-to-handle-images\" target=\"_blank\" rel=\"noopener noreferrer\">here</a>)."},"name":{"type":"string","description":"Item name."},"price":{"type":"integer","description":"Price of the item with 2 decimal digits, e.g. 1 euro is stored as 100."},"bottleDepositPrice":{"type":"integer","description":"Deprecated. See `supplementalInfo.deposit`.","deprecated":true},"nameTranslations":{"type":"object","description":"Translation of an item name with language codes as keys (see guide <a href=\"https://developers.deliverect.com/v3.0-ordering-experience/docs/how-to-handle-translations\" target=\"_blank\" rel=\"noopener noreferrer\">here</a>).","properties":{"es":{"type":"string","description":"Modifier Name in Spanish (`es`).","example":"Deliciosos Bistecs Fritos"},"fr":{"type":"string","description":"Modifier Name in French (`fr`).","example":"Steak Frites Delicieux"},"nl":{"type":"string","description":"Modifier Name in Dutch (`nl`).","example":"Heerlijke Biefstuk Frites"},"ar":{"type":"string","description":"Modifier Name in Arabic (`ar`).","example":"كوكا كولا"}},"example":{"es":"Deliciosos Bistecs Fritos","fr":"Steak Frites Delicieux","nl":"Heerlijke Biefstuk Frites","ar":"كوكا كولا"}},"productType":{"type":"integer","description":"<Glossary>productType</Glossary> is Modifier","enum":[2],"default":2},"description":{"type":"string","description":"Item description."},"descriptionTranslations":{"type":"object","description":"Translation of the item description with language codes as keys (see guide <a href=\"https://developers.deliverect.com/v3.0-ordering-experience/docs/how-to-handle-translations\" target=\"_blank\" rel=\"noopener noreferrer\">here</a>).","properties":{"es":{"type":"string","description":"Modifier Description in Spanish (`es`).","example":"Bebida con sabor a cola, con azúcar y cafeína"},"fr":{"type":"string","description":"Modifier Description in French (`fr`).","example":"Exemple de produit de base avec - groupes de modificateurs - variables min/max - sélection par défaut - traductions"},"nl":{"type":"string","description":"Modifier Description in Dutch (`nl`).","example":"Drank met colasmaak, met suiker en cafeïne"},"ar":{"type":"string","description":"Modifier Description in Arabic (`ar`).","example":"مشروب بنكهة الكولا يحتوي على السكر والكافيين"}},"example":{"es":"Bebida con sabor a cola, con azúcar y cafeína","fr":"Exemple de produit de base avec - groupes de modificateurs - variables min/max - sélection par défaut - traductions","nl":"Drank met colasmaak, met suiker en cafeïne","ar":"مشروب بنكهة الكولا يحتوي على السكر والكافيين"}},"deliveryTax":{"type":"integer","description":"Sales tax specific on order type of 'Delivery' for the item. Tax rates are always stored as an int with 3 decimal digits, e.g. 5% would be sent as `5000`."},"takeawayTax":{"type":"integer","description":"Sales tax specific on order type of 'Takeaway' for the item. Tax rates are always sent as an int with 3 decimal digits, e.g. 5% would be sent as `5000`."},"eatInTax":{"type":"integer","description":"Sales tax specific on order type of 'Eat-in' for the item. Tax rates are always sent as an int with 3 decimal digits, e.g. 5% would be sent as `5000`."},"defaultQuantity":{"type":"integer","description":"Controls the behaviour of 'pre-selected' items, where a quantity >0 should be automatically selected (typically '1'); higher default quantities can also be set."},"isCombo":{"type":"boolean","description":"Indicates if a product is a combo item/meal deal."},"snoozed":{"type":"boolean","description":"Indicates whether an item is snoozed at the point of a menu being published."},"visible":{"type":"boolean","description":"Deprecated. The value will always be set to `true` as disabled items won't appear in the menu payload.","deprecated":true},"productTags":{"type":"array","items":{"type":"integer"},"description":"All tags which apply to this item, see complete list <a href=\"https://developers.deliverect.com/v3.0-ordering-experience/docs/how-to-handle-product-metadata\" target=\"_blank\" rel=\"noopener noreferrer\">here</a>."},"account":{"type":"string","description":"Unique customer account ID where the item is stored."},"referenceId":{"type":"string","description":"The original PLU of the item, only for tracking sales, e.g. for loyalty purposes. Not to be included in the payload for order creation."},"location":{"type":"string","description":"Unique customer location ID where the item is stored."},"capacityUsages":{"type":"array","items":{},"deprecated":true},"subProducts":{"type":"array","items":{"type":"string"},"description":"List of items belonging to the group."},"beverageInfo":{"type":"object","description":"Information specific to beverages.","properties":{"caffeine":{"type":"integer","description":"Caffeine content of the beverage, expressed in milligrams (mg).","example":95},"alcohol":{"type":"integer","description":"Alcohol percentage, sent as an integer in E2 format (the percentage multiplied by 100) so that decimal values can be represented. For example, `1250` represents 12.5% and `475` represents 4.75%.","example":1250}}},"calories":{"type":"integer","description":"Expressed in kcal / Cals."},"caloriesRangeHigh":{"type":"integer","description":"If a range is supported, the minimum is `calories` and maximum is `caloriesRangeHigh`."},"caloriesFromFat":{"type":"integer","description":"Calories from fat, expressed in kcal / Cals.","example":100},"kJFromFat":{"type":"integer","description":"Energy from fat, expressed in kilojoules (kJ).","example":418},"nutritionalInfo":{"type":"object","description":"Expressed in grams, e.g. `fat`, `sugar`, `saturatedFat`, `carbohydrates`, `protein`, `salt`, etc (see this section of the product guide <a href=\"https://developers.deliverect.com/v3.0-ordering-experience/docs/how-to-handle-product-metadata\" target=\"_blank\" rel=\"noopener noreferrer\">here</a>).","properties":{"fat":{"type":"number","description":"Fat in grams.","example":32.5},"sugar":{"type":"number","description":"Sugar in grams.","example":2.1},"addedSugar":{"type":"number","description":"Added sugar in grams."},"saturatedFat":{"type":"number","description":"Saturated fat in grams.","example":12.8},"monoUnsaturatedFat":{"type":"number","description":"Monounsaturated fat in grams."},"polyUnsaturatedFat":{"type":"number","description":"Polyunsaturated fat in grams."},"transFat":{"type":"number","description":"Trans fat in grams."},"cholesterol":{"type":"number","description":"Cholesterol."},"carbohydrates":{"type":"number","description":"Carbohydrates in grams.","example":48},"polyols":{"type":"number","description":"Polyols in grams."},"starch":{"type":"number","description":"Starch in grams."},"fiber":{"type":"number","description":"Fibre in grams."},"dietaryFiber":{"type":"number","description":"Dietary fibre in grams.","example":4.3},"protein":{"type":"number","description":"Protein in grams.","example":41.2},"salt":{"type":"number","description":"Salt in grams.","example":2.4},"sodium":{"type":"number","description":"Sodium."},"vitaminC":{"type":"number","description":"Vitamin C."},"calcium":{"type":"number","description":"Calcium."},"magnesium":{"type":"number","description":"Magnesium."},"chloride":{"type":"number","description":"Chloride."},"fluoride":{"type":"number","description":"Fluoride."},"potassium":{"type":"number","description":"Potassium."},"servingSize":{"type":"object","description":"Details of a serving size.","properties":{"amount":{"type":"number","description":"The serving size amount."},"unitType":{"type":"integer","description":"What the serving size unit type is; Weight (in grams) = `1`, Volume (in milliliter) = `2`, Count (i.e., piece, slice, capsule, cookie, etc) = `3`.","enum":[1,2,3]},"countUnitDescription":{"type":"string","description":"The serving size unit description."}}},"servingCount":{"type":"integer","description":"Number of servings.","example":1},"netQuantity":{"type":"object","description":"Details on quantity.","properties":{"amount":{"type":"number","description":"The net quantity amount."},"unitType":{"type":"integer","description":"What the net quantity unit type is; Weight (in grams) = `1`, Volume (in milliliter) = `2`, Count (i.e., piece, slice, capsule, cookie, etc) = `3`.","enum":[1,2,3]},"countUnitDescription":{"type":"string","description":"The net quantity unit description."}}}}},"packaging":{"type":"object","description":"Details on the packaging.","properties":{"count":{"type":"integer","description":"Quantity of packaging."},"reusable":{"type":"boolean","description":"Whether packaging is re-usable or not."},"storageInstructions":{"type":"string","description":"Instructions for storage."}}},"supplementalInfo":{"type":"object","description":"Additional information about an item, for more information see <a href=\"https://developers.deliverect.com/v3.0-ordering-experience/docs/how-to-handle-product-metadata\" target=\"_blank\" rel=\"noopener noreferrer\">here</a>.","properties":{"legalName":{"type":"string","description":"Legal name of the item."},"instructionsForUse":{"type":"string","description":"Any specific instructions for use."},"ingredients":{"type":"array","items":{"type":"string"},"description":"Array of ingredients."},"additives":{"type":"array","items":{"type":"string"},"description":"Array of additives."},"prepackaged":{"type":"boolean","description":"Specifies whether the item is prepackaged."},"deposit":{"type":"integer","description":"In certain regions a deposit is required for e.g. bottled drinks; this will be included in the price, yet the deposit should be clearly displayed to the consumer. Deposit expressed to 2 decimal digits, e.g. 1 euro is stored as 100 (see guide <a href=\"https://developers.deliverect.com/v3.0-ordering-experience/docs/how-to-set-bottle-deposits\" target=\"_blank\" rel=\"noopener noreferrer\">here</a>)."},"fbo":{"type":"object","description":"Details of the food business operator.","properties":{"name":{"type":"string","description":"Food business operator name."},"address":{"type":"string","description":"Food business operator address."},"brand":{"type":"string","description":"Food business operator brand name."},"countryOfOrigin":{"type":"string","description":"Food business operator country of origin."}}}}},"parentId":{"type":"string","description":"Deprecated. Follow each `subProducts` array recursively from the top level down to determine nesting. `parentId` is legacy and shouldn't be used.","deprecated":true},"posCategoryIds":{"type":"array","items":{"type":"string"},"description":"The POS ID of the category this product belongs to in the POS."},"posProductCategoryId":{"type":"string","description":"The ID of this product in the POS, internal to POS, not to be used when creating orders."},"posProductId":{"type":"string","description":"The ID of this product in the POS, internal to POS, not to be used when creating orders."},"subProductSortOrder":{"type":"array","items":{"type":"string"},"description":"A list of product PLUs belonging to this product that preserves the order of these sub-products."},"metadata":{"type":"array","description":"A list of custom key/value pairings added to product data, e.g. `\"metadata\": [{\"key\": \"highlight\", \"value\": \"true\"}]`.","items":{"type":"object","properties":{"key":{"type":"string"},"value":{"type":"string"}}}},"displayLabels":{"type":"array","items":{"type":"string","enum":["new","popular","offer","exclusive","limited","hero","featured"]},"description":"List of labels for marketing purposes applied to products, e.g. `{\"displayLabels\": [\"new\", \"popular\"]}`."}}}}},"modifierGroups":{"type":"object","description":"Modifier groups in the menu.\n\nObject keyed by ID; `{modifierGroupId}` represents each key.","properties":{"{modifierGroupId}":{"type":"object","description":"Identifier of a particular modifier group and its location in the menu structure, matching the modifier group's `_id`. This is not a universal identifier for the modifier group and is not fixed.","properties":{"_id":{"type":"string","description":"Identifier of a particular modifier group and its location in the menu structure. This is not a universal identifier for the modifier group and is not fixed."},"plu":{"type":"string","description":"Unique identifier of the item, to be used when creating orders."},"name":{"type":"string","description":"Item name."},"nameTranslations":{"type":"object","description":"Translation of an item name with language codes as keys (see guide <a href=\"https://developers.deliverect.com/v3.0-ordering-experience/docs/how-to-handle-translations\" target=\"_blank\" rel=\"noopener noreferrer\">here</a>).","properties":{"es":{"type":"string","description":"Modifier Group Name in Spanish (`es`).","example":"Deliciosos Bistecs Fritos"},"fr":{"type":"string","description":"Modifier Group Name in French (`fr`).","example":"Steak Frites Delicieux"},"nl":{"type":"string","description":"Modifier Group Name in Dutch (`nl`).","example":"Heerlijke Biefstuk Frites"},"ar":{"type":"string","description":"Modifier Group Name in Arabic (`ar`).","example":"تعليمات الطهي"}},"example":{"es":"Deliciosos Bistecs Fritos","fr":"Steak Frites Delicieux","nl":"Heerlijke Biefstuk Frites","ar":"تعليمات الطهي"}},"productType":{"type":"integer","description":"<Glossary>productType</Glossary> is Modifier Group","enum":[3],"default":3},"description":{"type":"string","description":"Item description."},"imageUrl":{"type":"string","description":"Image associated with the item (see more info on images <a href=\"https://developers.deliverect.com/v3.0-ordering-experience/docs/how-to-handle-images\" target=\"_blank\" rel=\"noopener noreferrer\">here</a>)."},"descriptionTranslations":{"type":"object","description":"Translation of the item description with language codes as keys (see guide <a href=\"https://developers.deliverect.com/v3.0-ordering-experience/docs/how-to-handle-translations\" target=\"_blank\" rel=\"noopener noreferrer\">here</a>).","properties":{"es":{"type":"string","description":"Modifier Group Description in Spanish (`es`).","example":"Producto de ejemplo básico con - Grupos de modificadores - variables mín./máx. - selección predeterminada - traducciones"},"fr":{"type":"string","description":"Modifier Group Description in French (`fr`).","example":"Exemple de produit de base avec - groupes de modificateurs - variables min/max - sélection par défaut - traductions"},"nl":{"type":"string","description":"Modifier Group Description in Dutch (`nl`).","example":"Eenvoudig voorbeeldproduct met - Modifiergroepen - min/max-variabelen - standaardselectie - vertalingen"},"ar":{"type":"string","description":"Modifier Group Description in Arabic (`ar`).","example":"مثال لمنتج أساسي يتضمن - مجموعات الإضافات - متغيرات الحد الأدنى/الأقصى - الاختيار الافتراضي - الترجمات"}},"example":{"es":"Producto de ejemplo básico con - Grupos de modificadores - variables mín./máx. - selección predeterminada - traducciones","fr":"Exemple de produit de base avec - groupes de modificateurs - variables min/max - sélection par défaut - traductions","nl":"Eenvoudig voorbeeldproduct met - Modifiergroepen - min/max-variabelen - standaardselectie - vertalingen","ar":"مثال لمنتج أساسي يتضمن - مجموعات الإضافات - متغيرات الحد الأدنى/الأقصى - الاختيار الافتراضي - الترجمات"}},"max":{"type":"integer","description":"Maximum number of items under a group to be purchased."},"min":{"type":"integer","description":"Minimum number of items under a group to be purchased."},"minUniqueOptions":{"type":"integer","description":"Minimum number of different options that must be selected within the group."},"maxUniqueOptions":{"type":"integer","description":"Maximum number of different options that can be selected within the group."},"multiMin":{"type":"integer","description":"Minimum quantity of any single item which must be selected within the group, when selected."},"multiMax":{"type":"integer","description":"Maximum quantity of any single item which can be purchased within a group (modifier group). Also applicable to products, where it should control how many items can be added to a basket, e.g. Paracetamol."},"maxFree":{"type":"integer","description":"Maximum number of sub-items that can be selected free of charge."},"multiply":{"type":"integer","description":"Used in a modifier group to show this product multiple times in the GUI; `1` means one entry (so no copies)."},"isVariantGroup":{"type":"boolean","description":"Applicable to a **modifier group** to indicate if it is a variant or not (see guide <a href=\"https://developers.deliverect.com/v3.0-ordering-experience/docs/how-to-handle-variants\" target=\"_blank\" rel=\"noopener noreferrer\">here</a>)."},"isUpsell":{"type":"boolean","description":"Indicates if the **modifier group** is an Upsell group."},"snoozed":{"type":"boolean","description":"Indicates whether an item is snoozed at the point of a menu being published."},"productTags":{"type":"array","items":{"type":"integer"},"description":"All tags which apply to this item, see complete list <a href=\"https://developers.deliverect.com/v3.0-ordering-experience/docs/how-to-handle-product-metadata\" target=\"_blank\" rel=\"noopener noreferrer\">here</a>."},"account":{"type":"string","description":"Unique customer account ID where the item is stored."},"location":{"type":"string","description":"Unique customer location ID where the item is stored."},"capacityUsages":{"type":"array","items":{},"deprecated":true},"subProducts":{"type":"array","items":{"type":"string"},"description":"List of items belonging to the group."},"subProductSortOrder":{"type":"array","items":{"type":"string"},"description":"A list of PLUs belonging to this modifier group that preserves the order of its sub-products."},"parentId":{"type":"string","description":"Deprecated. Follow each `subProducts` array recursively from the top level down to determine nesting. `parentId` is legacy and shouldn't be used.","deprecated":true},"posCategoryIds":{"type":"array","items":{"type":"string"},"description":"The POS ID of the category this product belongs to in the POS."},"posProductCategoryId":{"type":"string","description":"The ID of this product in the POS, internal to POS, not to be used when creating orders."},"posProductId":{"type":"string","description":"The ID of this product in the POS, internal to POS, not to be used when creating orders."}}}}},"snoozedProducts":{"type":"object","description":"PLUs of products and modifiers that are currently snoozed and should be unavailable on the menu.\n\nObject keyed by ID; `{snoozeId}` represents each key.","properties":{"{snoozeId}":{"type":"object","description":"A unique reference for the snooze object.","properties":{"location":{"type":"string","description":"Deliverect location ID where the item is snoozed."},"name":{"type":"string","description":"Item name."},"plu":{"type":"string","description":"Item reference."},"snoozeStart":{"type":"string","description":"Timestamp in UTC when snooze begins, format `yyyy-MM-dd HH:mm:ss.SSSSSSZ`."},"snoozeEnd":{"type":"string","description":"Timestamp in UTC when snooze ends, format `yyyy-MM-dd HH:mm:ss.SSSSSSZ`."}}}}},"validations":{"type":"array","items":{},"deprecated":true},"bundles":{"type":"object","deprecated":true,"description":"<span class=\"legacy-label\">Legacy</span>","additionalProperties":false}}},"examples":{"Menu Example":{"summary":"Menu Example","description":"Follow the guide <a href=\"https://developers.deliverect.com/v3.0-ordering-experience/docs/how-to-recieve-menus\" target=\"_blank\">How to receive menus</a> to create and publish a test menu to your channel from your Deliverect test account. See full JSON sample <a href=\"https://storage.googleapis.com/retail-api-docs/menusample.json\" target=\"_blank\">here</a>.","value":{"availabilities":[{"dayOfWeek":1,"endTime":"17:00","startTime":"09:00"},{"dayOfWeek":2,"endTime":"17:00","startTime":"09:00"},{"dayOfWeek":3,"endTime":"17:00","startTime":"09:00"},{"dayOfWeek":4,"endTime":"17:00","startTime":"09:00"},{"dayOfWeek":5,"endTime":"17:00","startTime":"09:00"},{"dayOfWeek":6,"endTime":"17:00","startTime":"09:00"},{"dayOfWeek":6,"endTime":"22:00","startTime":"19:00"},{"dayOfWeek":7,"endTime":"17:00","startTime":"09:00"}],"bundles":{},"categories":[{"_id":"65********************87","name":"Steaks","description":"","descriptionTranslations":{},"nameTranslations":{},"account":"62********************f1","posLocationId":"","posCategoryType":"","posCategoryId":"","imageUrl":"","subCategories":[],"products":[],"availabilities":[],"level":1,"menu":"65********************79","sortedChannelProductIds":[],"subProducts":["65********************30"],"subProductSortOrder":[]}],"channelLinkId":"65********************7f","currency":3,"description":"","descriptionTranslations":{"fr":"Un exemple de menu de diffu00e9rentes configurations de produits, profitez-enu00a0!"},"menu":"Example Menu","menuId":"65********************79","menuImageURL":"","menuType":0,"modifierGroups":{"65********************31":{"_id":"65********************31","name":"Cooking instructions","description":"","descriptionTranslations":{},"nameTranslations":{"es":"Cocinado","fr":"Cuisson"},"account":"62********************f1","capacityUsages":[],"deliveryTax":9000,"eatInTax":9000,"takeawayTax":9000,"location":"65********************32","max":1,"min":1,"multiply":1,"plu":"MOD-01","posCategoryIds":[],"posProductCategoryId":"","posProductId":"","productTags":[],"productType":3,"subProducts":["65********************32","65********************33"],"parentId":"65********************30","snoozed":false,"subProductSortOrder":[]}},"modifiers":{"65********************32":{"_id":"65********************32","name":"Rare","description":"","descriptionTranslations":{},"nameTranslations":{"es":"Poco hecho","fr":"Saignant"},"account":"62********************f1","capacityUsages":[],"deliveryTax":9000,"eatInTax":9000,"takeawayTax":9000,"location":"65********************32","max":0,"min":0,"multiply":1,"plu":"COOK-01","posCategoryIds":[],"posProductCategoryId":"","posProductId":"","price":0,"productTags":[],"productType":2,"subProducts":[],"parentId":"65********************31","snoozed":false,"subProductSortOrder":[]},"65********************34":{"_id":"65********************34","name":"Well Done","description":"","descriptionTranslations":{},"nameTranslations":{"es":"Muy hecho","fr":"Bien cuit"},"account":"62********************f1","capacityUsages":[],"deliveryTax":9000,"eatInTax":9000,"takeawayTax":9000,"location":"65********************32","max":0,"min":0,"multiply":1,"plu":"COOK-03","posCategoryIds":[],"posProductCategoryId":"","posProductId":"","price":0,"productTags":[],"productType":2,"subProducts":[],"parentId":"65********************31","snoozed":false,"subProductSortOrder":[]}},"menuTranslations":{"fr":"Exemple de Menu"},"nestedModifiers":true,"products":{"65********************30":{"_id":"65********************30","name":"Delicious Steak and Frites ud83dude0b","description":"","descriptionTranslations":{"fr":"Exemple de produit de base avec - groupes de modificateurs - variables min/max - su00e9lection par du00e9faut - traductions"},"nameTranslations":{"es":"Deliciosos Bistecs Fritos","fr":"Steak Frites Du00e9licieux"},"account":"62********************f1","capacityUsages":[],"deliveryTax":9000,"eatInTax":9000,"takeawayTax":9000,"imageUrl":"","location":"65********************32","max":0,"min":0,"multiply":1,"plu":"STK-01","posCategoryIds":[],"posProductCategoryId":"","posProductId":"","price":1500,"productTags":[],"productType":1,"subProducts":["65********************31","65********************35"],"parentId":"65********************87","snoozed":false,"subProductSortOrder":[],"referenceId":"STK-01"}},"productTags":[104,108],"snoozedProducts":{},"validations":[]}}}}}},"responses":{"200":{"description":"200","content":{"application/json":{"examples":{"Result":{"value":"{}"}},"schema":{"type":"object","properties":{}}}}},"400":{"description":"400","content":{"application/json":{"examples":{"Result":{"value":"{}"}},"schema":{"type":"object","properties":{}}}}}},"deprecated":false,"x-readme":{"explorer-enabled":false,"code-samples":[{"language":"json","name":"Menu Example","code":"{\n  \"availabilities\": [\n    {\n      \"dayOfWeek\": 1,\n      \"endTime\": \"17:00\",\n      \"startTime\": \"09:00\"\n    },\n    {\n      \"dayOfWeek\": 2,\n      \"endTime\": \"17:00\",\n      \"startTime\": \"09:00\"\n    },\n    {\n      \"dayOfWeek\": 3,\n      \"endTime\": \"17:00\",\n      \"startTime\": \"09:00\"\n    },\n    {\n      \"dayOfWeek\": 4,\n      \"endTime\": \"17:00\",\n      \"startTime\": \"09:00\"\n    },\n    {\n      \"dayOfWeek\": 5,\n      \"endTime\": \"17:00\",\n      \"startTime\": \"09:00\"\n    },\n    {\n      \"dayOfWeek\": 6,\n      \"endTime\": \"17:00\",\n      \"startTime\": \"09:00\"\n    },\n    {\n      \"dayOfWeek\": 6,\n      \"endTime\": \"22:00\",\n      \"startTime\": \"19:00\"\n    },\n    {\n      \"dayOfWeek\": 7,\n      \"endTime\": \"17:00\",\n      \"startTime\": \"09:00\"\n    }\n  ],\n  \"bundles\": {},\n  \"categories\": [\n    {\n      \"_id\": \"65********************87\",\n      \"name\": \"Steaks\",\n      \"description\": \"\",\n      \"descriptionTranslations\": {},\n      \"nameTranslations\": {},\n      \"account\": \"62********************f1\",\n      \"posLocationId\": \"\",\n      \"posCategoryType\": \"\",\n      \"posCategoryId\": \"\",\n      \"imageUrl\": \"\",\n      \"subCategories\": [],\n      \"products\": [],\n      \"availabilities\": [],\n      \"level\": 1,\n      \"menu\": \"65********************79\",\n      \"sortedChannelProductIds\": [],\n      \"subProducts\": [\n        \"65********************30\"\n      ],\n      \"subProductSortOrder\": []\n    }\n  ],\n  \"channelLinkId\": \"65********************7f\",\n  \"currency\": 3,\n  \"description\": \"\",\n  \"descriptionTranslations\": {\n    \"fr\": \"Un exemple de menu de diffu00e9rentes configurations de produits, profitez-enu00a0!\"\n  },\n  \"menu\": \"Example Menu\",\n  \"menuId\": \"65********************79\",\n  \"menuImageURL\": \"\",\n  \"menuType\": 0,\n  \"modifierGroups\": {\n    \"65********************31\": {\n      \"_id\": \"65********************31\",\n      \"name\": \"Cooking instructions\",\n      \"description\": \"\",\n      \"descriptionTranslations\": {},\n      \"nameTranslations\": {\n        \"es\": \"Cocinado\",\n        \"fr\": \"Cuisson\"\n      },\n      \"account\": \"62********************f1\",\n      \"capacityUsages\": [],\n      \"deliveryTax\": 9000,\n      \"eatInTax\": 9000,\n      \"takeawayTax\": 9000,\n      \"location\": \"65********************32\",\n      \"max\": 1,\n      \"min\": 1,\n      \"multiply\": 1,\n      \"plu\": \"MOD-01\",\n      \"posCategoryIds\": [],\n      \"posProductCategoryId\": \"\",\n      \"posProductId\": \"\",\n      \"productTags\": [],\n      \"productType\": 3,\n      \"subProducts\": [\n        \"65********************32\",\n        \"65********************33\"\n      ],\n      \"parentId\": \"65********************30\",\n      \"snoozed\": false,\n      \"subProductSortOrder\": []\n    }\n  },\n  \"modifiers\": {\n    \"65********************32\": {\n      \"_id\": \"65********************32\",\n      \"name\": \"Rare\",\n      \"description\": \"\",\n      \"descriptionTranslations\": {},\n      \"nameTranslations\": {\n        \"es\": \"Poco hecho\",\n        \"fr\": \"Saignant\"\n      },\n      \"account\": \"62********************f1\",\n      \"capacityUsages\": [],\n      \"deliveryTax\": 9000,\n      \"eatInTax\": 9000,\n      \"takeawayTax\": 9000,\n      \"location\": \"65********************32\",\n      \"max\": 0,\n      \"min\": 0,\n      \"multiply\": 1,\n      \"plu\": \"COOK-01\",\n      \"posCategoryIds\": [],\n      \"posProductCategoryId\": \"\",\n      \"posProductId\": \"\",\n      \"price\": 0,\n      \"productTags\": [],\n      \"productType\": 2,\n      \"subProducts\": [],\n      \"parentId\": \"65********************31\",\n      \"snoozed\": false,\n      \"subProductSortOrder\": []\n    },\n    \"65********************34\": {\n      \"_id\": \"65********************34\",\n      \"name\": \"Well Done\",\n      \"description\": \"\",\n      \"descriptionTranslations\": {},\n      \"nameTranslations\": {\n        \"es\": \"Muy hecho\",\n        \"fr\": \"Bien cuit\"\n      },\n      \"account\": \"62********************f1\",\n      \"capacityUsages\": [],\n      \"deliveryTax\": 9000,\n      \"eatInTax\": 9000,\n      \"takeawayTax\": 9000,\n      \"location\": \"65********************32\",\n      \"max\": 0,\n      \"min\": 0,\n      \"multiply\": 1,\n      \"plu\": \"COOK-03\",\n      \"posCategoryIds\": [],\n      \"posProductCategoryId\": \"\",\n      \"posProductId\": \"\",\n      \"price\": 0,\n      \"productTags\": [],\n      \"productType\": 2,\n      \"subProducts\": [],\n      \"parentId\": \"65********************31\",\n      \"snoozed\": false,\n      \"subProductSortOrder\": []\n    }\n  },\n  \"menuTranslations\": {\n    \"fr\": \"Exemple de Menu\"\n  },\n  \"nestedModifiers\": true,\n  \"products\": {\n    \"65********************30\": {\n      \"_id\": \"65********************30\",\n      \"name\": \"Delicious Steak and Frites ud83dude0b\",\n      \"description\": \"\",\n      \"descriptionTranslations\": {\n        \"fr\": \"Exemple de produit de base avec - groupes de modificateurs - variables min/max - su00e9lection par du00e9faut - traductions\"\n      },\n      \"nameTranslations\": {\n        \"es\": \"Deliciosos Bistecs Fritos\",\n        \"fr\": \"Steak Frites Du00e9licieux\"\n      },\n      \"account\": \"62********************f1\",\n      \"capacityUsages\": [],\n      \"deliveryTax\": 9000,\n      \"eatInTax\": 9000,\n      \"takeawayTax\": 9000,\n      \"imageUrl\": \"\",\n      \"location\": \"65********************32\",\n      \"max\": 0,\n      \"min\": 0,\n      \"multiply\": 1,\n      \"plu\": \"STK-01\",\n      \"posCategoryIds\": [],\n      \"posProductCategoryId\": \"\",\n      \"posProductId\": \"\",\n      \"price\": 1500,\n      \"productTags\": [],\n      \"productType\": 1,\n      \"subProducts\": [\n        \"65********************31\",\n        \"65********************35\"\n      ],\n      \"parentId\": \"65********************87\",\n      \"snoozed\": false,\n      \"subProductSortOrder\": [],\n      \"referenceId\": \"STK-01\"\n    }\n  },\n  \"productTags\": [\n    104,\n    108\n  ],\n  \"snoozedProducts\": {},\n  \"validations\": []\n}","correspondingExample":"Menu Example"}]},"parameters":[{"name":"Content-Type","in":"header","description":"application/json","schema":{"type":"string","default":"application/json"}},{"name":"Accept","in":"header","description":"application/json","schema":{"type":"string","default":"application/json"}},{"name":"User-Agent","in":"header","required":true,"description":"Identifies Deliverect as the sender of the webhook, in the format `Deliverect/{version}`.","schema":{"type":"string","default":"Deliverect/{version}"}},{"name":"X-Server-Authorization-HMAC-SHA256","in":"header","required":true,"description":"HMAC-SHA256 signature of the raw request body, generated with your shared secret. Recompute the signature on receipt and compare it to this value to verify the request came from Deliverect (see the <a href=\"https://developers.deliverect.com/reference/hmac-authentication\" target=\"_blank\" rel=\"noopener noreferrer\">HMAC authentication guide</a>).","schema":{"type":"string","default":"{signature}"}}],"security":[]}},"https://yourwebhook.com/order_status":{"post":{"tags":["Webhooks"],"summary":"Order Status Update","description":"","operationId":"channel_order_status","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"orderId":{"type":"string","description":"Unique identifier of the order in Deliverect."},"status":{"type":"integer","description":"Order status (see list <a href=\"https://developers.deliverect.com/page/order-status#pos-order-statuses\" target=\"_blank\" rel=\"noopener noreferrer\">here</a>)."},"timeStamp":{"type":"string","format":"date-time","description":"Timestamp of the status update, in UTC `yyyy-MM-ddTHH:mm:ss.SSSZ`."},"receiptId":{"type":"string","description":"Provided by the POS in response to incoming orders as a reference to a specific POS receipt."},"reason":{"type":"string","description":"In case of error, cancellation or denial, the reason will be populated here, if provided."},"channelOrderId":{"type":"string","description":"The full unique ID from the delivery channel. Together with the `channel` is guaranteed to be unique for 48h after pickup."},"location":{"type":"string","description":"Deliverect's unique identifier of a physical restaurant location, store, or kitchen."},"channelLink":{"type":"string","description":"Unique identifier of the channel (merchant store) in Deliverect. Retrieve all IDs per account via <a href=\"https://developers.deliverect.com/v1.1-restaurants/reference/channel-links\" target=\"_blank\" rel=\"noopener noreferrer\">GET Channel Links</a>."}}},"examples":{"Order Accepted":{"summary":"Order Accepted","description":"Each integrated POS will provide statuses in accordance with their own workflows, meaning the specific statuses received can vary, yet any order with status between `20` (Accepted) and `95` (Auto-finalized) confirms a successfully accepted order. See complete list of statuses <a href=\"https://developers.deliverect.com/page/order-status\" target=\"_blank\">here</a>.","value":{"orderId":"61********************b4","status":20,"timeStamp":"yyyy-MM-ddTHH:mm:ss.SSSZ","receiptId":"","reason":"","channelOrderId":"TEST******4206","location":"61********************b4","channelLink":"61********************c3"}},"Order Denied":{"summary":"Order Denied","description":"Each integrated POS will provide statuses in accordance with their own workflows, meaning the specific statuses received can vary, yet any order with status between `20` (Accepted) and `95` (Auto-finalized) confirms a successfully accepted order. See complete list of statuses <a href=\"https://developers.deliverect.com/page/order-status\" target=\"_blank\">here</a>.","value":{"orderId":"61********************b4","status":35,"timeStamp":"yyyy-MM-ddTHH:mm:ss.SSSZ","receiptId":"","reason":"Device ID: 24********************************a0","channelOrderId":"TEST******4206","location":"61********************b4","channelLink":"61********************c3"}},"Order Cancelled":{"summary":"Order Cancelled","description":"Each integrated POS will provide statuses in accordance with their own workflows, meaning the specific statuses received can vary, yet any order with status between `20` (Accepted) and `95` (Auto-finalized) confirms a successfully accepted order. See complete list of statuses <a href=\"https://developers.deliverect.com/page/order-status\" target=\"_blank\">here</a>.","value":{"orderId":"61********************b4","status":110,"timeStamp":"yyyy-MM-ddTHH:mm:ss.SSSZ","receiptId":"","reason":"Item out of stock","channelOrderId":"TEST******4206","location":"61********************b4","channelLink":"61********************c3"}},"Order Failed":{"summary":"Order Failed","description":"Each integrated POS will provide statuses in accordance with their own workflows, meaning the specific statuses received can vary, yet any order with status between `20` (Accepted) and `95` (Auto-finalized) confirms a successfully accepted order. See complete list of statuses <a href=\"https://developers.deliverect.com/page/order-status\" target=\"_blank\">here</a>.","value":{"orderId":"61********************b4","status":120,"timeStamp":"yyyy-MM-ddTHH:mm:ss.SSSZ","receiptId":"","reason":"","channelOrderId":"TEST******4206","location":"61********************b4","channelLink":"61********************c3"}}}}}},"responses":{"200":{"description":"200","content":{"application/json":{"examples":{"Result":{"value":"{}"}},"schema":{"type":"object","properties":{}}}}},"400":{"description":"400","content":{"application/json":{"examples":{"Result":{"value":"{}"}},"schema":{"type":"object","properties":{}}}}}},"deprecated":false,"x-readme":{"explorer-enabled":false,"code-samples":[{"language":"json","name":"Order Accepted","code":"{\n  \"orderId\": \"61********************b4\",\n  \"status\": 20,\n  \"timeStamp\": \"yyyy-MM-ddTHH:mm:ss.SSSZ\",\n  \"receiptId\": \"\",\n  \"reason\": \"\",\n  \"channelOrderId\": \"TEST******4206\",\n  \"location\": \"61********************b4\",\n  \"channelLink\": \"61********************c3\"\n}","correspondingExample":"Order Accepted"},{"language":"json","name":"Order Denied","code":"{\n  \"orderId\": \"61********************b4\",\n  \"status\": 35,\n  \"timeStamp\": \"yyyy-MM-ddTHH:mm:ss.SSSZ\",\n  \"receiptId\": \"\",\n  \"reason\": \"Device ID: 24********************************a0\",\n  \"channelOrderId\": \"TEST******4206\",\n  \"location\": \"61********************b4\",\n  \"channelLink\": \"61********************c3\"\n}","correspondingExample":"Order Denied"},{"language":"json","name":"Order Cancelled","code":"{\n  \"orderId\": \"61********************b4\",\n  \"status\": 110,\n  \"timeStamp\": \"yyyy-MM-ddTHH:mm:ss.SSSZ\",\n  \"receiptId\": \"\",\n  \"reason\": \"Item out of stock\",\n  \"channelOrderId\": \"TEST******4206\",\n  \"location\": \"61********************b4\",\n  \"channelLink\": \"61********************c3\"\n}","correspondingExample":"Order Cancelled"},{"language":"json","name":"Order Failed","code":"{\n  \"orderId\": \"61********************b4\",\n  \"status\": 120,\n  \"timeStamp\": \"yyyy-MM-ddTHH:mm:ss.SSSZ\",\n  \"receiptId\": \"\",\n  \"reason\": \"\",\n  \"channelOrderId\": \"TEST******4206\",\n  \"location\": \"61********************b4\",\n  \"channelLink\": \"61********************c3\"\n}","correspondingExample":"Order Failed"}]},"parameters":[{"name":"Content-Type","in":"header","description":"application/json","schema":{"type":"string","default":"application/json"}},{"name":"Accept","in":"header","description":"application/json","schema":{"type":"string","default":"application/json"}},{"name":"User-Agent","in":"header","required":true,"description":"Identifies Deliverect as the sender of the webhook, in the format `Deliverect/{version}`.","schema":{"type":"string","default":"Deliverect/{version}"}},{"name":"X-Server-Authorization-HMAC-SHA256","in":"header","required":true,"description":"HMAC-SHA256 signature of the raw request body, generated with your shared secret. Recompute the signature on receipt and compare it to this value to verify the request came from Deliverect (see the <a href=\"https://developers.deliverect.com/reference/hmac-authentication\" target=\"_blank\" rel=\"noopener noreferrer\">HMAC authentication guide</a>).","schema":{"type":"string","default":"{signature}"}}],"security":[]}},"https://yourwebhook.com/prep_time":{"post":{"tags":["Webhooks"],"summary":"Preparation Time Update","description":"","operationId":"channel_prep_time","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"channelOrderId":{"type":"string","example":"X7CESD","description":"The full unique ID from the delivery channel. Together with the `channel` is guaranteed to be unique for 48h after pickup."},"orderId":{"type":"string","example":"5e********************9b","description":"Unique identifier of the order in Deliverect."},"location":{"type":"string","example":"5e********************0b","description":"Unique ID for the POS to identify the store location."},"status":{"type":"integer","example":20,"description":"Order status (see list <a href=\"https://developers.deliverect.com/page/order-status\" target=\"_blank\" rel=\"noopener noreferrer\">here</a>)."},"pickupTime":{"type":"string","format":"date-time","example":"yyyy-MM-ddTHH:mm:ss.SSSZ","description":"Pickup time of the order, in UTC `yyyy-MM-ddTHH:mm:ss.SSSZ`."}}},"examples":{"Preparation Time Update Example":{"summary":"Preparation Time Update Example","description":"The webhook event includes an updated `\"pickupTime\"`. Channel partners should communicate this to the end customer and, where handling delivery orders, to the courier as well.","value":{"channelOrderId":"T**4206","orderId":"62********************7c","location":"61********************b4","status":20,"pickupTime":"yyyy-MM-ddTHH:mm:ss.SSSZ"}}}}}},"responses":{"200":{"description":"200","content":{"application/json":{"examples":{"Result":{"value":"{}"}},"schema":{"type":"object","properties":{}}}}},"400":{"description":"400","content":{"application/json":{"examples":{"Result":{"value":"{}"}},"schema":{"type":"object","properties":{}}}}}},"x-readme":{"explorer-enabled":false,"code-samples":[{"language":"json","name":"Preparation Time Update Example","code":"{\n  \"channelOrderId\": \"T**4206\",\n  \"orderId\": \"62********************7c\",\n  \"location\": \"61********************b4\",\n  \"status\": 20,\n  \"pickupTime\": \"yyyy-MM-ddTHH:mm:ss.SSSZ\"\n}","correspondingExample":"Preparation Time Update Example"}]},"parameters":[{"name":"Content-Type","in":"header","description":"application/json","schema":{"type":"string","default":"application/json"}},{"name":"Accept","in":"header","description":"application/json","schema":{"type":"string","default":"application/json"}},{"name":"User-Agent","in":"header","required":true,"description":"Identifies Deliverect as the sender of the webhook, in the format `Deliverect/{version}`.","schema":{"type":"string","default":"Deliverect/{version}"}},{"name":"X-Server-Authorization-HMAC-SHA256","in":"header","required":true,"description":"HMAC-SHA256 signature of the raw request body, generated with your shared secret. Recompute the signature on receipt and compare it to this value to verify the request came from Deliverect (see the <a href=\"https://developers.deliverect.com/reference/hmac-authentication\" target=\"_blank\" rel=\"noopener noreferrer\">HMAC authentication guide</a>).","schema":{"type":"string","default":"{signature}"}}],"security":[]}},"https://yourwebhook.com/courier_update":{"post":{"tags":["Webhooks"],"summary":"Courier Update","description":"","operationId":"channel_courier_update","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"orderId":{"type":"string","description":"The unique ID of the order in Deliverect."},"channelOrderId":{"type":"string","description":"The unique ID of the order sourced from the ordering channel."},"status":{"type":"integer","description":"The status from the <a href=\"https://developers.deliverect.com/page/order-status#courier-statuses\" target=\"_blank\" rel=\"noopener noreferrer\">list of values</a> supported for updates."},"pickupTime":{"type":"string","format":"date-time","description":"The arrival time for the courier to their pickup location, in UTC `yyyy-MM-ddTHH:mm:ss.SSSZ` (only available prior to status ARRIVED_AT_PICKUP - `85`)."},"deliveryTime":{"type":"string","format":"date-time","description":"The delivery time, in UTC `yyyy-MM-ddTHH:mm:ss.SSSZ`."},"courierName":{"type":"string","description":"Name of the courier / rider."},"coordinates":{"type":"object","description":"The coordinates object showing `\"coordinates\": { \"coordinates\": [long, lat] }`.","properties":{"coordinates":{"type":"array","description":"Longitude and latitude of the courier, in that order.","items":{"type":"number"},"minItems":2,"maxItems":2}}},"courierId":{"type":"string","description":"Where the Deliverect <a href=\"https://help.deliverect.com/en/articles/9388962-courier-app-introduction\" target=\"_blank\" rel=\"noopener noreferrer\">Courier App</a> is used, this is the unique ID of the courier."},"dispatchPartner":{"type":"string","description":"The name of the dispatch partner company."},"multipleDrivers":{"type":"boolean","description":"Sent as `true` when the delivery is split across more than one driver."},"trackingURL":{"type":"string","description":"Tracking URL for the delivery job. Only returned when supported by the Dispatch provider."}}},"examples":{"Sample Courier Update":{"summary":"Sample Courier Update","description":"For a full list of all courier `status` values, see <a href=\"https://developers.deliverect.com/page/order-status#courier-statuses\" target=\"_blank\">Courier statuses</a>.","value":{"orderId":"65********************a3","channelOrderId":"T8****28","status":87,"deliveryTime":"yyyy-MM-ddTHH:mm:ss.SSSZ","courierName":"DRIVER NAME","coordinates":{"coordinates":[-4.294259666220875,55.78873945318564]},"courierId":"9B******HK","dispatchPartner":"COURIERAPP","trackingURL":"trackingURL"}},"Sample Courier Update (multiple couriers)":{"summary":"Sample Courier Update (multiple couriers)","description":"For a full list of all courier `status` values, see <a href=\"https://developers.deliverect.com/page/order-status#courier-statuses\" target=\"_blank\">Courier statuses</a>.","value":{"orderId":"65********************a3","channelOrderId":"T8****29","status":87,"deliveryTime":"yyyy-MM-ddTHH:mm:ss.SSSZ","courierName":"DRIVER NAME","coordinates":{"coordinates":[-4.294259666220875,55.78873945318564]},"courierId":"9B******HL","dispatchPartner":"UBERDAAS","multipleDrivers":true}}}}}},"responses":{"200":{"description":"200","content":{"application/json":{"examples":{"Result":{"value":"{}"}},"schema":{"type":"object","properties":{}}}}},"400":{"description":"400","content":{"application/json":{"examples":{"Result":{"value":"{}"}},"schema":{"type":"object","properties":{}}}}}},"deprecated":false,"x-readme":{"explorer-enabled":false,"code-samples":[{"language":"json","name":"Sample Courier Update","code":"{\n  \"orderId\": \"65********************a3\",\n  \"channelOrderId\": \"T8****28\",\n  \"status\": 87,\n  \"deliveryTime\": \"yyyy-MM-ddTHH:mm:ss.SSSZ\",\n  \"courierName\": \"DRIVER NAME\",\n  \"coordinates\": {\n    \"coordinates\": [\n      -4.294259666220875,\n      55.78873945318564\n    ]\n  },\n  \"courierId\": \"9B******HK\",\n  \"dispatchPartner\": \"COURIERAPP\",\n  \"trackingURL\": \"trackingURL\"\n}","correspondingExample":"Sample Courier Update"},{"language":"json","name":"Sample Courier Update (multiple couriers)","code":"{\n  \"orderId\": \"65********************a3\",\n  \"channelOrderId\": \"T8****29\",\n  \"status\": 87,\n  \"deliveryTime\": \"yyyy-MM-ddTHH:mm:ss.SSSZ\",\n  \"courierName\": \"DRIVER NAME\",\n  \"coordinates\": {\n    \"coordinates\": [\n      -4.294259666220875,\n      55.78873945318564\n    ]\n  },\n  \"courierId\": \"9B******HL\",\n  \"dispatchPartner\": \"UBERDAAS\",\n  \"multipleDrivers\": true\n}","correspondingExample":"Sample Courier Update (multiple couriers)"}]},"parameters":[{"name":"Content-Type","in":"header","description":"application/json","schema":{"type":"string","default":"application/json"}},{"name":"Accept","in":"header","description":"application/json","schema":{"type":"string","default":"application/json"}},{"name":"User-Agent","in":"header","required":true,"description":"Identifies Deliverect as the sender of the webhook, in the format `Deliverect/{version}`.","schema":{"type":"string","default":"Deliverect/{version}"}},{"name":"X-Server-Authorization-HMAC-SHA256","in":"header","required":true,"description":"HMAC-SHA256 signature of the raw request body, generated with your shared secret. Recompute the signature on receipt and compare it to this value to verify the request came from Deliverect (see the <a href=\"https://developers.deliverect.com/reference/hmac-authentication\" target=\"_blank\" rel=\"noopener noreferrer\">HMAC authentication guide</a>).","schema":{"type":"string","default":"{signature}"}}],"security":[]}},"https://yourwebhook.com/snooze":{"post":{"tags":["Webhooks"],"summary":"Snooze / Unsnooze Products","operationId":"channel_snooze","requestBody":{"content":{"application/json":{"schema":{"type":"object","required":["accountId","locationId","channelLinkId","operations"],"properties":{"accountId":{"type":"string","description":"<Glossary>accountId</Glossary> is the unique identifier of the customer account in Deliverect."},"locationId":{"type":"string","description":"<Glossary>locationId</Glossary> is Deliverect's unique identifier of a physical restaurant location, store, or kitchen."},"channelLinkId":{"type":"string","description":"<Glossary>channelLinkId</Glossary> is an individual store’s unique ID in Deliverect."},"operations":{"type":"array","minItems":1,"description":"Snooze or unsnooze operations to apply.","items":{"type":"object","required":["action","data"],"properties":{"action":{"type":"string","enum":["snooze","unsnooze"],"description":"`\"snooze\"` or `\"unsnooze\"`."},"data":{"type":"object","required":["items","allSnoozedItems"],"properties":{"items":{"type":"array","description":"A list of items showing the period during which they each should be snoozed.","items":{"type":"object","required":["plu","snoozeStart","snoozeEnd"],"properties":{"plu":{"type":"string","description":"The items should be snoozed based on the PLU."},"snoozeStart":{"type":"string","format":"date-time","description":"When snooze status should begin, timestamp is in UTC `yyyy-MM-ddTHH:mm:ss.SSSZ`."},"snoozeEnd":{"type":"string","format":"date-time","description":"When snooze status should end, timestamp is in UTC `yyyy-MM-ddTHH:mm:ss.SSSZ`."}}}},"allSnoozedItems":{"type":"array","description":"Each time you receive a snooze request for your channel, you will also receive the complete list of all items (`allSnoozedItems`) that should currently be in a snoozed state, i.e. all previously snoozed items will be included with each request. This additional list of items can be disabled if required via Channel settings.","items":{"type":"object","required":["plu","snoozeStart","snoozeEnd"],"properties":{"plu":{"type":"string","description":"The items should be snoozed based on the PLU."},"snoozeStart":{"type":"string","format":"date-time","description":"When snooze status should begin, timestamp is in UTC `yyyy-MM-ddTHH:mm:ss.SSSZ`."},"snoozeEnd":{"type":"string","format":"date-time","description":"When snooze status should end, timestamp is in UTC `yyyy-MM-ddTHH:mm:ss.SSSZ`."}}}}}}}}}}},"examples":{"Snooze Request":{"summary":"Snooze Request","description":"Both Snooze and Unsnooze events will be communicated to all channels hosting a menu containing the snoozed items. Within each event, you will also receive the complete list of all currently snoozed items (`allSnoozedItems`).","value":{"accountId":"5b********************d4","locationId":"5c********************b8","channelLinkId":"5e********************9b","operations":[{"action":"snooze","data":{"items":[{"plu":"PIE1","snoozeStart":"yyyy-MM-ddTHH:mm:ss.SSSZ","snoozeEnd":"yyyy-MM-ddTHH:mm:ss.SSSZ"}],"allSnoozedItems":[{"plu":"PIE1","snoozeStart":"yyyy-MM-ddTHH:mm:ss.SSSZ","snoozeEnd":"yyyy-MM-ddTHH:mm:ss.SSSZ"},{"plu":"MSB1","snoozeStart":"yyyy-MM-ddTHH:mm:ss.SSSZ","snoozeEnd":"yyyy-MM-ddTHH:mm:ss.SSSZ"}]}}]}},"Unsooze Request":{"summary":"Unsooze Request","description":"Both Snooze and Unsnooze events will be communicated to all channels hosting a menu containing the snoozed items. Within each event, you will also receive the complete list of all currently snoozed items (`allSnoozedItems`).","value":{"accountId":"5b********************d4","locationId":"5c********************b8","channelLinkId":"5e********************9b","operations":[{"action":"unsnooze","data":{"items":[{"plu":"PIE1","snoozeStart":"yyyy-MM-ddTHH:mm:ss.SSSZ","snoozeEnd":"yyyy-MM-ddTHH:mm:ss.SSSZ"},{"plu":"MSB1","snoozeStart":"yyyy-MM-ddTHH:mm:ss.SSSZ","snoozeEnd":"yyyy-MM-ddTHH:mm:ss.SSSZ"}],"allSnoozedItems":[]}}]}}}}}},"responses":{"200":{"description":"200 OK","content":{"application/json":{"examples":{"Result":{"value":"{}"}},"schema":{"type":"object","properties":{}}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string"}},"required":["name"]}}}}},"x-readme":{"explorer-enabled":false,"code-samples":[{"language":"json","name":"Snooze Request","code":"{\n  \"accountId\": \"5b********************d4\",\n  \"locationId\": \"5c********************b8\",\n  \"channelLinkId\": \"5e********************9b\",\n  \"operations\": [\n    {\n      \"action\": \"snooze\",\n      \"data\": {\n        \"items\": [\n          {\n            \"plu\": \"PIE1\",\n            \"snoozeStart\": \"yyyy-MM-ddTHH:mm:ss.SSSZ\",\n            \"snoozeEnd\": \"yyyy-MM-ddTHH:mm:ss.SSSZ\"\n          }\n        ],\n        \"allSnoozedItems\": [\n          {\n            \"plu\": \"PIE1\",\n            \"snoozeStart\": \"yyyy-MM-ddTHH:mm:ss.SSSZ\",\n            \"snoozeEnd\": \"yyyy-MM-ddTHH:mm:ss.SSSZ\"\n          },\n          {\n            \"plu\": \"MSB1\",\n            \"snoozeStart\": \"yyyy-MM-ddTHH:mm:ss.SSSZ\",\n            \"snoozeEnd\": \"yyyy-MM-ddTHH:mm:ss.SSSZ\"\n          }\n        ]\n      }\n    }\n  ]\n}","correspondingExample":"Snooze Request"},{"language":"json","name":"Unsooze Request","code":"{\n  \"accountId\": \"5b********************d4\",\n  \"locationId\": \"5c********************b8\",\n  \"channelLinkId\": \"5e********************9b\",\n  \"operations\": [\n    {\n      \"action\": \"unsnooze\",\n      \"data\": {\n        \"items\": [\n          {\n            \"plu\": \"PIE1\",\n            \"snoozeStart\": \"yyyy-MM-ddTHH:mm:ss.SSSZ\",\n            \"snoozeEnd\": \"yyyy-MM-ddTHH:mm:ss.SSSZ\"\n          },\n          {\n            \"plu\": \"MSB1\",\n            \"snoozeStart\": \"yyyy-MM-ddTHH:mm:ss.SSSZ\",\n            \"snoozeEnd\": \"yyyy-MM-ddTHH:mm:ss.SSSZ\"\n          }\n        ],\n        \"allSnoozedItems\": []\n      }\n    }\n  ]\n}","correspondingExample":"Unsooze Request"}]},"parameters":[{"name":"Content-Type","in":"header","description":"application/json","schema":{"type":"string","default":"application/json"}},{"name":"Accept","in":"header","description":"application/json","schema":{"type":"string","default":"application/json"}},{"name":"User-Agent","in":"header","required":true,"description":"Identifies Deliverect as the sender of the webhook, in the format `Deliverect/{version}`.","schema":{"type":"string","default":"Deliverect/{version}"}},{"name":"X-Server-Authorization-HMAC-SHA256","in":"header","required":true,"description":"HMAC-SHA256 signature of the raw request body, generated with your shared secret. Recompute the signature on receipt and compare it to this value to verify the request came from Deliverect (see the <a href=\"https://developers.deliverect.com/reference/hmac-authentication\" target=\"_blank\" rel=\"noopener noreferrer\">HMAC authentication guide</a>).","schema":{"type":"string","default":"{signature}"}}],"security":[]}},"https://yourwebhook.com/busy_mode":{"post":{"tags":["Webhooks"],"summary":"Busy mode","description":"","operationId":"channel_busy_mode","requestBody":{"content":{"application/json":{"schema":{"type":"object","required":["accountId","locationId","channelLinkId","status"],"properties":{"accountId":{"type":"string","description":"<Glossary>accountId</Glossary> is the unique identifier of the customer account in Deliverect."},"locationId":{"type":"string","description":"<Glossary>locationId</Glossary> is Deliverect's unique identifier of a physical restaurant location, store, or kitchen."},"channelLinkId":{"type":"string","description":"<Glossary>channelLinkId</Glossary> is an individual store’s unique ID in Deliverect."},"status":{"type":"string","enum":["PAUSED","BUSY","ONLINE"],"description":"The updated store status:\n\n- `PAUSED` — The store should be 'paused' and closed to online orders until further notification\n- `BUSY` — The store is currently busy and **ASAP orders should not be possible**; the specified `delay` in minutes should be clearly communicated to guests when processing new orders\n- `ONLINE` — This is a request to disable busy mode. The store should be open as normal"},"delay":{"type":"integer","description":"Additional delay in minutes to apply to new orders. Only sent with the `BUSY` status."}}},"examples":{"PAUSED":{"summary":"PAUSED","description":"Busy mode events will specify the target store via its unique `channelLinkId` together with one of three updated `status` values of `\"PAUSED\"`, `\"ONLINE\"` or `\"BUSY\"`, with an additional `delay` in minutes which should apply to new orders that can be sent with the `BUSY` status.","value":{"accountId":"5b********************d4","locationId":"5c********************b8","channelLinkId":"5e********************9b","status":"PAUSED"}},"ONLINE":{"summary":"ONLINE","description":"Busy mode events will specify the target store via its unique `channelLinkId` together with one of three updated `status` values of `\"PAUSED\"`, `\"ONLINE\"` or `\"BUSY\"`, with an additional `delay` in minutes which should apply to new orders that can be sent with the `BUSY` status.","value":{"accountId":"5b********************d4","locationId":"5c********************b8","channelLinkId":"5e********************9b","status":"ONLINE"}},"BUSY":{"summary":"BUSY","description":"Busy mode events will specify the target store via its unique `channelLinkId` together with one of three updated `status` values of `\"PAUSED\"`, `\"ONLINE\"` or `\"BUSY\"`, with an additional `delay` in minutes which should apply to new orders that can be sent with the `BUSY` status.","value":{"accountId":"61********************bb","locationId":"63********************df","channelLinkId":"64********************b0","status":"BUSY","delay":30}}}}}},"responses":{"200":{"description":"The response should indicate pausing or unpausing the store was successful with a `200 OK` status code. The body of the response should echo the current status of the store after having made the change.","content":{"application/json":{"schema":{"type":"object","description":"The body of the response should echo the current status of the store after having made the change.\n\n```json Store Paused 200 OK\n{\n  \"status\": \"PAUSED\"\n}\n```\n```json Store Online 200 OK\n{\n  \"status\": \"ONLINE\"\n}\n```\n```json Store Busy 200 OK\n{\n  \"status\": \"BUSY\"\n}\n```","required":["status"],"properties":{"status":{"type":"string","enum":["PAUSED","ONLINE","BUSY"],"description":"The current status of the store after the change:\n\n- `PAUSED` — Store Paused 200 OK\n- `ONLINE` — Store Online 200 OK\n- `BUSY` — Store Busy 200 OK"}}},"examples":{"Store Paused 200 OK":{"summary":"Store Paused 200 OK","value":{"status":"PAUSED"}},"Store Online 200 OK":{"summary":"Store Online 200 OK","value":{"status":"ONLINE"}},"Store Busy 200 OK":{"summary":"Store Busy 200 OK","value":{"status":"BUSY"}}}}}},"400":{"description":"400","content":{"application/json":{"examples":{"Result":{"value":"{}"}},"schema":{"type":"object","properties":{}}}}}},"deprecated":false,"x-readme":{"explorer-enabled":false,"code-samples":[{"language":"json","name":"PAUSED","code":"{\n  \"accountId\": \"5b********************d4\",\n  \"locationId\": \"5c********************b8\",\n  \"channelLinkId\": \"5e********************9b\",\n  \"status\": \"PAUSED\"\n}","correspondingExample":"PAUSED"},{"language":"json","name":"ONLINE","code":"{\n  \"accountId\": \"5b********************d4\",\n  \"locationId\": \"5c********************b8\",\n  \"channelLinkId\": \"5e********************9b\",\n  \"status\": \"ONLINE\"\n}","correspondingExample":"ONLINE"},{"language":"json","name":"BUSY","code":"{\n  \"accountId\": \"61********************bb\",\n  \"locationId\": \"63********************df\",\n  \"channelLinkId\": \"64********************b0\",\n  \"status\": \"BUSY\",\n  \"delay\": 30\n}","correspondingExample":"BUSY"}]},"parameters":[{"name":"Content-Type","in":"header","description":"application/json","schema":{"type":"string","default":"application/json"}},{"name":"Accept","in":"header","description":"application/json","schema":{"type":"string","default":"application/json"}},{"name":"User-Agent","in":"header","required":true,"description":"Identifies Deliverect as the sender of the webhook, in the format `Deliverect/{version}`.","schema":{"type":"string","default":"Deliverect/{version}"}},{"name":"X-Server-Authorization-HMAC-SHA256","in":"header","required":true,"description":"HMAC-SHA256 signature of the raw request body, generated with your shared secret. Recompute the signature on receipt and compare it to this value to verify the request came from Deliverect (see the <a href=\"https://developers.deliverect.com/reference/hmac-authentication\" target=\"_blank\" rel=\"noopener noreferrer\">HMAC authentication guide</a>).","schema":{"type":"string","default":"{signature}"}}],"security":[]}}}}