{"openapi":"3.1.0","info":{"title":"POS API","description":"Our POS API provides endpoints for synchronizing product data, webhooks for receiving orders from digital sales channels in real time and APIs to manage the order lifecycle including preparation updates which are routed directly onwards to all integrated ordering platforms.","version":"1.0.0"},"servers":[{"url":"https://api.staging.deliverect.com","description":"Staging"},{"url":"https://api.deliverect.com","description":"Production"}],"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 are 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":{"/updatePreparationTime":{"post":{"responses":{"200":{"description":"","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"}},"parameters":[],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"order":{"type":"string"},"minutes":{"type":"integer"}},"required":["minutes","order"]},"examples":{"Example":{"summary":"Example","value":{"order":"{orderId}","minutes":15}}}}}},"operationId":"post_updatepreparationtime","summary":"Update Order Preparation Time","tags":["Endpoints"]}},"/updateBill/{locationId}":{"post":{"tags":["Endpoints"],"summary":"Update Bill","operationId":"updateBill","parameters":[{"name":"locationId","in":"path","required":true,"schema":{"type":"string"},"description":"Deliverect location ID"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","description":"Closed bill payload from the POS.","properties":{"id":{"type":"string"},"status":{"type":"integer"},"tableId":{"type":"string"},"createdAt":{"type":"string","format":"date-time"},"lastUpdated":{"type":"string","format":"date-time"},"closedAt":{"type":"string","format":"date-time"},"decimalDigits":{"type":"integer"},"discountTotal":{"type":"integer"},"discounts":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"total":{"type":"integer"}}}},"surchargesTotal":{"type":"integer"},"surcharges":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"total":{"type":"integer"}}}},"taxTotal":{"type":"integer"},"taxes":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"total":{"type":"integer"}}}},"total":{"type":"integer"},"totalDue":{"type":"integer"},"items":{"type":"array","items":{"type":"object","properties":{"plu":{"type":"string"},"name":{"type":"string"},"quantity":{"type":"integer"},"price":{"type":"integer"},"subItems":{"type":"array","items":{"type":"object","properties":{"plu":{"type":"string"},"name":{"type":"string"},"quantity":{"type":"integer"},"price":{"type":"integer"}}}}}}},"payments":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"total":{"type":"integer"}}}}},"example":{"id":"R29532LF","status":20,"tableId":"T1","createdAt":"2023-08-18T14:49:39.379000Z","lastUpdated":"2023-08-18T14:49:39.379000Z","closedAt":"2023-08-18T14:49:39.379000Z","decimalDigits":2,"discountTotal":100,"discounts":[{"name":"Our company birthday discount","total":100}],"surchargesTotal":200,"surcharges":[{"name":"Take-away","total":200}],"taxTotal":48,"taxes":[{"name":"6% VAT","total":48}],"total":800,"totalDue":400,"items":[{"plu":"PLU-01","name":"My first product","quantity":1,"price":300},{"plu":"PLU-02","name":"My second product","quantity":1,"price":400,"subItems":[{"plu":"PLU-03","name":"My modifier","quantity":1,"price":0}]}],"payments":[{"name":"Cash","total":400}]}},"examples":{"Bill Example":{"summary":"Bill Example","value":{"id":"R29532LF","status":20,"tableId":"T1","createdAt":"2023-08-18T14:49:39.379000Z","lastUpdated":"2023-08-18T14:49:39.379000Z","closedAt":"2023-08-18T14:49:39.379000Z","decimalDigits":2,"discountTotal":100,"discounts":[{"name":"Our company birthday discount","total":100}],"surchargesTotal":200,"surcharges":[{"name":"Take-away","total":200}],"taxTotal":48,"taxes":[{"name":"6% VAT","total":48}],"total":800,"totalDue":400,"items":[{"plu":"PLU-01","name":"My first product","quantity":1,"price":300},{"plu":"PLU-02","name":"My second product","quantity":1,"price":400,"subItems":[{"plu":"PLU-03","name":"My modifier","quantity":1,"price":0}]}],"payments":[{"name":"Cash","total":400}]}}}}}},"responses":{"200":{"description":"Bill queued for processing","content":{"application/json":{"schema":{"type":"string","example":"Bill queued for processing"},"examples":{"OK":{"summary":"OK","value":"{}"}}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"string","example":"Please provide a JSON format as specified in the API docs"}}}}}}},"/orderStatus/{orderId}":{"post":{"responses":{"200":{"description":"","content":{"application/json":{"examples":{"OK":{"summary":"OK","value":{"result":"OK"}},"Status Updated + Pickup time changed":{"summary":"Status Updated + Pickup time changed","value":{"result":"OK","pickupTime":"2023-02-09T13:00:38.006000Z","deliveryTime":"yyyy-MM-ddTHH:mm:ss.SSSSSSZ"}}}}}},"400":{"content":{"application/json":{"schema":{"type":"object","properties":{}},"examples":{"Bad Request":{"summary":"Bad Request","value":"{}"}}}},"description":"Bad Request"}},"parameters":[{"in":"path","name":"orderId","schema":{"type":"string"},"required":true}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","required":["orderId","receiptId","status"],"properties":{"orderId":{"type":"string","description":"The original _id that was sent to the POS order webhook"},"receiptId":{"type":"string","description":"Internal ID assigned by the POS, typically in a human-readable format for printed receipts."},"status":{"type":"integer","description":"Status to update"},"pickupTime":{"type":"string","format":"date-time","description":"Updated pickupTime is in UTC yyyy-MM-ddTHH:mm:ssZ"},"reason":{"type":"string","description":"Reason for a status change e.g. 'ITEM OUT OF STOCK'"},"timeStamp":{"type":"string","format":"date-time","description":"Timestamp when the status was applied"}}},"examples":{"Failed Order":{"summary":"Failed Order","value":{"orderId":"63********************a7","status":120,"reason":"Invalid PLU","timeStamp":"yyyy-MM-ddTHH:mm:ss.SSSSSSZ","receiptId":""}},"Order Cancelled":{"summary":"Order Cancelled","value":{"orderId":"63********************a7","status":110,"reason":"cancellation","timeStamp":"yyyy-MM-ddTHH:mm:ss.SSSSSSZ","receiptId":""}},"Order Accepted + Pickup Time Updated":{"summary":"Order Accepted + Pickup Time Updated","value":{"orderId":"63********************a7","status":20,"receiptId":"T3651A85-1","pickupTime":"yyyy-MM-ddTHH:mm:ss.SSSSSSZ","timeStamp":"yyyy-MM-ddTHH:mm:ss.SSSSSSZ"}}}}}},"operationId":"post_orderstatus-orderid","summary":"Update Order Status","tags":["Endpoints"]}},"/productAndCategories":{"post":{"tags":["Endpoints"],"summary":"Insert Products","operationId":"insertUpdateProductsAndCategories","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["accountId","locationId","products","categories"],"properties":{"accountId":{"type":"string","description":"<Glossary>accountId</Glossary> is the unique identifier of the customer account in Deliverect (obtained during onboarding via the [Register POS](https://developers.deliverect.com/v1.1-restaurants/reference/pos_register) webhook)"},"locationId":{"type":"string","description":"<Glossary>locationId</Glossary> is the unique identifier of a physical restaurant location, store, or kitchen (obtained during onboarding via the [Register POS](https://developers.deliverect.com/v1.1-restaurants/reference/pos_register) webhook)"},"products":{"type":"array","items":{"properties":{"name":{"type":"string","description":"Name for the product"},"plu":{"type":"string","description":"Unique identifier for a product."},"price":{"type":"integer","format":"int32","description":"Defined by an integer with 2 decimal digits, e.g. $5.00 is stored as 500."},"description":{"type":"string","description":"Product description"},"productType":{"type":"integer","format":"int32","description":"Specifies the product type being inserted:\n- `1` – **Product**: a 'top level' item on a menu (can also be grouped within a modifier group or bundle)\n- `2` – **Modifier**: options selectable when ordering a product, typically modifications of the product\n- `3` – **Modifier Group**: a grouping of modifiers (can also group products)\n- `4` – **Bundle**: can only contain products offered as part of a 'Meal Deal', which Deliverect will set to zero value (exception: where Overloads are set)\n\nSee the <a href=\"https://developers.deliverect.com/v1.1-restaurants/docs/product-configurations\" target=\"_blank\" rel=\"noopener noreferrer\">product types guide</a> for more details.","enum":[1,2,3,4]},"gtin":{"type":"array","description":"GTIN (Global Trade Item Number) for product, which could be EAN code","default":[],"items":{"type":"string"}},"isVariant":{"type":"boolean","description":"Indicates a product is a variant. See the <a href=\"https://developers.deliverect.com/v1.1-restaurants/docs/how-to-configure-variant-products\" target=\"_blank\" rel=\"noopener noreferrer\">variant products guide</a> for more details."},"isCombo":{"type":"boolean","description":"Indicates product is a combo."},"deliveryTax":{"type":"integer","format":"int32","description":"Tax rate for delivery order, integer with 3 decimal digits. See the <a href=\"https://developers.deliverect.com/v1.1-restaurants/docs/product-configurations#tax\" target=\"_blank\" rel=\"noopener noreferrer\">product configurations guide</a> for more details."},"takeawayTax":{"type":"integer","format":"int32","description":"Tax rate for pickup order, integer with 3 decimal digits. See the <a href=\"https://developers.deliverect.com/v1.1-restaurants/docs/product-configurations#tax\" target=\"_blank\" rel=\"noopener noreferrer\">product configurations guide</a> for more details."},"eatInTax":{"type":"integer","format":"int32","description":"Tax rate for Eat-in order, integer with 3 decimal digits. See the <a href=\"https://developers.deliverect.com/v1.1-restaurants/docs/product-configurations#tax\" target=\"_blank\" rel=\"noopener noreferrer\">product configurations guide</a> for more details."},"priceLevels":{"type":"object","properties":{"TA":{"type":"integer","format":"int32"},"DL":{"type":"integer","format":"int32"},"UE":{"type":"integer","format":"int32"}},"description":"Object containing the `priceLevels.posId` specified on the `priceLevels` array, and the corresponding price. Example: { \"UE\": 900, \"DL\": 850, \"TA\": 825 }. See the <a href=\"https://developers.deliverect.com/v1.1-restaurants/docs/how-to-configure-price-levels\" target=\"_blank\" rel=\"noopener noreferrer\">price levels guide</a> for more details."},"overloads":{"type":"array","items":{"properties":{"scopes":{"type":"array","default":[],"items":{"type":"string"},"description":"Define surcharges applied to the specific modifier group or bundle. See the <a href=\"https://developers.deliverect.com/v1.1-restaurants/docs/overloads\" target=\"_blank\" rel=\"noopener noreferrer\">overloads guide</a> for more details."},"bundlePrice":{"type":"integer","format":"int32","description":"Determines the price for the overload when the grouping is a bundle. See the <a href=\"https://developers.deliverect.com/v1.1-restaurants/docs/overloads\" target=\"_blank\" rel=\"noopener noreferrer\">overloads guide</a> for more details."},"price":{"type":"integer","format":"int32","description":"Determines the price for the overload. See the <a href=\"https://developers.deliverect.com/v1.1-restaurants/docs/overloads\" target=\"_blank\" rel=\"noopener noreferrer\">overloads guide</a> for more details."},"name":{"type":"string"},"defaultQuantity":{"type":"integer","format":"int32","description":"Overrides `defaultQuantity` for this specific scope — specify '1' to 'pre-select' the item only within that scope (compatible with only a few channels)."},"maxFree":{"type":"integer","format":"int32","description":"Overrides `maxFree` for this specific scope — specifies how many sub products can be ordered at zero value within that scope, normal pricing applying after the set limit."}},"type":"object"},"description":"Specifies price variances from the 'base' price dependant on where the option is offered."},"posProductId":{"type":"string","description":"Internal reference ID for the product coming from the POS. Optional use."},"posCategoryIds":{"type":"array","default":[],"items":{"type":"string"},"description":"Products should belong to at least one category; each Id listed corresponds to a lookup table which you will provide along with the customer facing category name — see `categories.posCategoryId`."},"imageUrl":{"type":"string","description":"Cloud hosted image URL. See the <a href=\"https://developers.deliverect.com/v1.1-restaurants/docs/how-to-set-product-images\" target=\"_blank\" rel=\"noopener noreferrer\">product images guide</a> for more details."},"nameTranslations":{"type":"object","properties":{"en":{"type":"string"},"es":{"type":"string"},"fr":{"type":"string"},"nl":{"type":"string"},"ar":{"type":"string"},"el":{"type":"string"}},"description":"Object containing name translations. See the <a href=\"https://developers.deliverect.com/v1.1-restaurants/docs/how-to-set-translations\" target=\"_blank\" rel=\"noopener noreferrer\">translations guide</a> for more information."},"productTags":{"type":"array","default":[],"items":{"type":"integer","format":"int32"},"description":"e.g. `108` = mustard. See the <a href=\"https://developers.deliverect.com/v1.1-restaurants/docs/how-to-configure-nutritionalsupplemental-data#product-tags\" target=\"_blank\" rel=\"noopener noreferrer\">product tags guide</a> for the full guide."},"multiMax":{"type":"integer","description":"sets the maximum quantity orderable of any one item in a group, can also set the maximum quantity of a product to be ordered in a basket","format":"int32"},"defaultQuantity":{"type":"integer","description":"applicable to modifiers (productType: 2) to 'pre-select' an option","format":"int32"},"nutritionalInfo":{"type":"object","properties":{"fat":{"type":"integer","format":"int32"},"protein":{"type":"integer","format":"int32"},"sugar":{"type":"integer","format":"int32"},"addedSugar":{"type":"integer","format":"int32"},"saturatedFat":{"type":"integer","format":"int32"},"carbohydrates":{"type":"integer","format":"int32"},"salt":{"type":"integer","format":"int32"},"transFat":{"type":"integer","format":"int32"},"monoUnsaturatedFat":{"type":"integer","format":"int32"},"polyUnsaturatedFat":{"type":"integer","format":"int32"},"cholesterol":{"type":"integer","format":"int32"},"starch":{"type":"integer","format":"int32"},"sodium":{"type":"integer","format":"int32"},"fiber":{"type":"integer","format":"int32"},"vitaminC":{"type":"integer","format":"int32"},"calcium":{"type":"integer","format":"int32"},"magnesium":{"type":"integer","format":"int32"},"chloride":{"type":"integer","format":"int32"},"fluoride":{"type":"integer","format":"int32"},"potassium":{"type":"integer","format":"int32"},"polyols":{"type":"integer","format":"int32"},"servingSize":{"type":"object","properties":{"amount":{"type":"integer","format":"int32","description":"the serving size amount"},"unitType":{"type":"integer","format":"int32","description":"the unit of the serving size amount. unitType: 1 = Weight (in grams), 2 = Volume (in milliliter), 3 = Count (i.e. piece, slice, tablet, capsule, cookie, etc)"},"countUnitDescription":{"type":"string","description":"the serving size unit"}}},"netQuantity":{"type":"object","properties":{"amount":{"type":"integer","format":"int32","description":"value of the quantity amount"},"unitType":{"type":"integer","format":"int32"},"countUnitDescription":{"type":"string","description":"the unit of the quantity amount"}}}},"description":"An object containing the nutritional values for the product, including flat numeric fields expressed in grams (e.g. fat, protein, salt) as well as `servingSize` and `netQuantity`, each an object specifying an `amount`, `unitType`, and `countUnitDescription`. See the <a href=\"https://developers.deliverect.com/v1.1-restaurants/docs/how-to-configure-nutritionalsupplemental-data#nutritional-information-and-supplemental-info\" target=\"_blank\" rel=\"noopener noreferrer\">nutritional & supplemental info guide</a> for more details."},"supplementalInfo":{"type":"object","properties":{"instructionsForUse":{"type":"string","description":"Instructions for the use e.g. \"Cool before drink.\" See the <a href=\"https://developers.deliverect.com/v1.1-restaurants/docs/how-to-configure-nutritionalsupplemental-data#nutritional-information-and-supplemental-info\" target=\"_blank\" rel=\"noopener noreferrer\">nutritional & supplemental info guide</a> for more information."},"ingredients":{"type":"array","items":{"type":"string"},"description":"e.g. \"Water\""},"additives":{"type":"array","items":{"type":"string"},"description":"e.g. [\"Artificial Food Coloring\", \"PRESERVATIVES_NITRATE\"]"},"prepackaged":{"type":"boolean","description":"Indicates if the item is prepackaged."},"deposit":{"type":"integer","format":"int32","description":"Value of the deposit if applicable."},"fbo":{"type":"object","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"}}},"legalName":{"type":"string","description":"The legal name of the product"}}},"bottleDepositPrice":{"type":"integer","format":"int32","description":"Legacy attribute. For correct format see `supplementalInfo.deposit` and the <a href=\"https://developers.deliverect.com/v1.1-restaurants/docs/how-to-set-deposits\" target=\"_blank\" rel=\"noopener noreferrer\">deposits guide</a>."},"visible":{"type":"boolean","description":"This specifies if the item is enabled or disabled within a location"},"subProducts":{"type":"array","default":[],"items":{"type":"string"},"description":"A product can contain additional options — see the <a href=\"https://developers.deliverect.com/v1.1-restaurants/docs/how-to-configure-modifier-groups\" target=\"_blank\" rel=\"noopener noreferrer\">modifier groups guide</a>."},"kitchenName":{"type":"string","description":"An optional additional name for the product that will be sent through with the order"},"stock":{"type":"integer","format":"int32","description":"The current level of stock for this item (relevant in retail accounts)"},"channelOverrides":{"type":"object","description":"Allows the `visible` flag to apply differently per channel. See the <a href=\"https://developers.deliverect.com/v1.1-restaurants/docs/how-to-apply-visible-status-per-channel\" target=\"_blank\" rel=\"noopener noreferrer\">guide here</a>. Each key represents the ID of a channel (obtained via <a href=\"https://developers.deliverect.com/v1.1-restaurants/reference/channel-integrators\" target=\"_blank\" rel=\"noopener noreferrer\">GET Integrated Channels</a>). For example channel ID `\"7\"` (Uber Eats) marked as `\"visible\": false`, while `\"12\"` (DoorDash) marked as `\"visible\": true`.","example":{"7":{"visible":false},"12":{"visible":true}}},"descriptionTranslations":{"type":"object","description":"Object containing the translations for the descriptions. See the <a href=\"https://developers.deliverect.com/v1.1-restaurants/docs/how-to-set-translations\" target=\"_blank\" rel=\"noopener noreferrer\">translations guide</a> for more details.","properties":{"en":{"type":"string"},"es":{"type":"string"},"fr":{"type":"string"},"nl":{"type":"string"},"ar":{"type":"string"},"el":{"type":"string"}}},"isVariantGroup":{"type":"boolean","description":"Indicates the group contains variants. See the <a href=\"https://developers.deliverect.com/v1.1-restaurants/docs/how-to-configure-variant-products\" target=\"_blank\" rel=\"noopener noreferrer\">variant products guide</a> for more details."},"min":{"type":"integer","format":"int32","description":"Minimum quantity for a modifier."},"max":{"type":"integer","format":"int32","description":"Maximum quantity for a modifier."},"maxFree":{"type":"integer","format":"int32","description":"Specifies how many sub products can be ordered at zero value, normal pricing applying after the set limit."},"minUniqueOptions":{"type":"integer","format":"int32","description":"Minimum unique options that can be selected in any one modifier group."},"maxUniqueOptions":{"type":"integer","format":"int32","description":"Maximum unique options that can be selected in any one modifier group."},"autoApply":{"type":"array","items":{"type":"object","properties":{"plu":{"type":"string","description":"A predefined set of zero-priced items applied to an order by Deliverect. See the <a href=\"https://developers.deliverect.com/v1.1-restaurants/docs/how-to-auto-apply-modifiers\" target=\"_blank\" rel=\"noopener noreferrer\">auto-apply modifiers guide</a> for more details."}}}},"sortOrder":{"type":"integer","format":"int32","description":"Defines the order in which an item will appear when auto-applied. See the <a href=\"https://developers.deliverect.com/v1.1-restaurants/docs/how-to-auto-apply-modifiers\" target=\"_blank\" rel=\"noopener noreferrer\">auto-apply modifiers guide</a> for more details."},"beverageInfo":{"type":"object","properties":{"caffeine":{"type":"integer","format":"int32","description":"Caffeine content of the beverage, expressed in milligrams (mg).","example":95},"alcohol":{"type":"integer","format":"int32","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","format":"int32","description":"kcal / Cals"},"caloriesRangeHigh":{"type":"integer","format":"int32","description":"Where a range of calories applies to a variable option e.g. a 'Sandwich Deal' where selections are required. To apply this, the format would be: Minimum = `calories`, Maximum = `caloriesRangeHigh`."},"packaging":{"type":"object","properties":{"reusable":{"type":"boolean","description":"Whether packaging is reusable"},"storageInstructions":{"type":"string","description":"How to store an item"},"count":{"type":"integer","format":"int32"}}},"isIngredientGroup":{"type":"boolean","description":"Indicates the group contains ingredients (e.g. toppings) rather than variants or standard modifiers."},"isUpsell":{"type":"boolean","description":"Indicates whether this product is an upsell item."}},"required":["name","plu","price","productType","deliveryTax"],"type":"object"}},"categories":{"type":"array","items":{"properties":{"name":{"type":"string","default":"Build your own Pizza","description":"Name for the category."},"posCategoryId":{"type":"string","default":"PZ","description":"Id assigned to the category."},"imageUrl":{"type":"string","description":"Image for the category"},"description":{"type":"string","description":"Description of the category"}},"type":"object"},"description":"This is the lookup table for every product which specifies `posCategoryIds`. It sets the categories which would form a menu when imported, and also provides a reference when products are added to menus in Deliverect."},"priceLevels":{"type":"array","items":{"properties":{"name":{"type":"string","default":"Takeaway","description":"Name for the priceLevel"},"posId":{"type":"string","default":"TA","description":"Id for the priceLevel. Value used inside the array `products.priceLevels`"}},"type":"object"},"description":"See the <a href=\"https://developers.deliverect.com/v1.1-restaurants/docs/how-to-configure-price-levels\" target=\"_blank\" rel=\"noopener noreferrer\">price levels guide</a> for more information. This is mandatory when using Price Levels, otherwise the Price Level will not work."}}},"examples":{"1. Single Product + Price Levels + Supplemental Info":{"summary":"1. Single Product + Price Levels + Supplemental Info","value":{"accountId":"{{accountId}}","locationId":"{{locationId}}","products":[{"name":"Ginger Beer","description":"Made with locally grown ginger and sugarcane","productType":1,"plu":"DRNK-03","price":380,"priceLevels":{"DL":420,"TA":410,"1PO":400},"productTags":[10],"imageUrl":"https://storage.googleapis.com/ikona-bucket-staging/images/5ff6ee089328c8aefeeabe33/gingerbeer-62285548db5986001ebf58d1.jpg","deliveryTax":1200,"takeawayTax":1200,"eatInTax":1200,"gtin":["8712345000103","74993001078"],"beverageInfo":{"caffeine":0,"alcohol":450},"supplementalInfo":{"instructionsForUse":"Best served chilled","ingredients":["Water","Sugar"],"additives":["Artificial Food Coloring","Sodium Nitrite"],"prepackaged":true,"deposit":100},"calories":500,"packaging":{"count":1,"reusable":true,"storageInstructions":"Keep cool"},"caloriesRangeHigh":750,"nutritionalInfo":{"fat":2,"sugar":2,"saturatedFat":1.5,"carbohydrates":1.5,"protein":2,"salt":2,"servingSize":{"amount":3,"unitType":3,"countUnitDescription":"g"},"netQuantity":{"amount":12,"unitType":1,"countUnitDescription":"g"}},"posCategoryIds":["DRK"]}],"categories":[{"posCategoryId":"DRK","name":"Drinks","imageUrl":"https://storage.googleapis.com/ikona-bucket-staging/images/618a2c5306a6208df4e9d061/Drinks-6772a0cd6448d47caa95c689.jpg"}],"priceLevels":[{"name":"Takeaway","posId":"TA"},{"name":"Delivery","posId":"DL"},{"name":"FirstParty","posId":"1PO"}]}},"2. Product + Modifier Group":{"summary":"2. Product + Modifier Group","value":{"accountId":"{{accountId}}","locationId":"{{locationId}}","products":[{"name":"Delicious Steak Frites","description":"Product with Modifier groups, min/max, defaultQuantity, translations","nameTranslations":{"es":"Deliciosos Bistecs Fritos","fr":"Steak Frites Delicieux","nl":"Heerlijke Biefstuk Frites","ar":"شريحة لحم فريتس"},"descriptionTranslations":{"es":"Deliciosos Bistecs Fritos","fr":"Steak Frites Délicieux","nl":"Heerlijke Biefstuk Frites","ar":"شريحة لحم فريتس"},"productType":1,"plu":"STK-01","price":1500,"imageUrl":"https://storage.googleapis.com/ikona-bucket-staging/images/5ff6ee089328c8aefeeabe33/steak-622862588c506f015be6018e.jpeg","subProducts":["MOD-01","MOD-02","AUTO-01"],"deliveryTax":1200,"takeawayTax":1200,"eatInTax":1200,"kitchenName":"Steak","posCategoryIds":["STK"]},{"name":"Cooking instructions","nameTranslations":{"es":"Cocinado","fr":"Cuisson","nl":"Kook instructies","ar":"تعليمات الطبخ"},"productType":3,"plu":"MOD-01","min":1,"max":1,"subProducts":["COOK-01","COOK-02","COOK-03"]},{"name":"Rare","nameTranslations":{"es":"Poco hecho","fr":"Saignant","nl":"Rood","ar":"غير ناضج جيدا"},"productType":2,"plu":"COOK-01"},{"name":"Medium Rare","nameTranslations":{"es":"Al punto","fr":"À point","nl":"Half doorbakken","ar":"مُتَوَسِّط النُضْجِ"},"productType":2,"plu":"COOK-02"},{"name":"Well Done","nameTranslations":{"es":"Muy hecho","fr":"Bien cuit","nl":"Doorbakken","ar":"مطبوخ جيدا"},"productType":2,"plu":"COOK-03"},{"name":"Add a side","nameTranslations":{"es":"Elige tu acompañamiento","fr":"Choisissez votre garniture","nl":"Kies je bijgerecht","ar":"اختر طبقك الجانبي"},"productType":3,"plu":"MOD-02","imageUrl":"https://storage.googleapis.com/ikona-bucket-staging/images/5ff6ee089328c8aefeeabe33/pizza-6228525eb303fc03a148de46.jpeg","min":0,"max":0,"multiMax":3,"subProducts":["SI-01","SI-02","SI-03"]},{"name":"Fries","description":"Fries","nameTranslations":{"es":"Patatas fritas","fr":"Frites","nl":"Frietjes","ar":"بطاطس مقلية"},"productType":2,"plu":"SI-01","price":0,"defaultQuantity":1,"deliveryTax":1200,"takeawayTax":1200,"eatInTax":1200},{"name":"Salad","description":"Salad","nameTranslations":{"es":"Ensalada","fr":"Salade","nl":"Salade","ar":"سلطة"},"productType":2,"plu":"SI-02","price":200,"deliveryTax":1200,"takeawayTax":1200,"eatInTax":1200},{"name":"Mashed Potato","description":"Mashed Potato","nameTranslations":{"es":"Puré de patata","fr":"Purée de pommes de terre","nl":"Aardappelpuree","ar":"البطاطا المهروسة"},"productType":2,"plu":"SI-03","price":100,"deliveryTax":1200,"takeawayTax":1200,"eatInTax":1200,"kitchenName":"Mash"},{"name":"Garnishes","productType":3,"plu":"AUTO-01","autoApply":[{"plu":"PR1"}],"subProducts":["PR1","PR2"]},{"name":"Parsley","productType":2,"plu":"PR1","defaultQuantity":2}],"categories":[{"posCategoryId":"STK","name":"Steak & Burgers","imageUrl":"https://storage.googleapis.com/ikona-bucket-staging/images/618a2c5306a6208df4e9d061/Steaks%20and%20Burgers-6772a08c467817883c7ae27d.jpg"}]}},"3. Product + Nested Modifiers":{"summary":"3. Product + Nested Modifiers","value":{"accountId":"{{accountId}}","locationId":"{{locationId}}","products":[{"name":"Chicken Sate","description":"Product with Nested Modifiers - Multimax variables - Allergens (tags)","productType":1,"plu":"P-SATE","price":450,"productTags":[104,108,109],"imageUrl":"https://storage.googleapis.com/ikona-bucket-staging/images/5ff6ee089328c8aefeeabe33/satay-62284e3c8c506f015be60184.jpeg","subProducts":["MG-RICE"],"deliveryTax":1200,"takeawayTax":1200,"eatInTax":1200,"posCategoryIds":["CHK"]},{"name":"Rice Selection","productType":3,"plu":"MG-RICE","min":1,"max":1,"subProducts":["RICE-01"]},{"name":"White Rice","description":"White coloured rice","productType":1,"plu":"RICE-01","price":450,"imageUrl":"https://storage.googleapis.com/ikona-bucket-staging/images/5ff6ee089328c8aefeeabe33/nasiputi-1610290140494.jpg","subProducts":["MG-SAUCES"],"deliveryTax":1200,"takeawayTax":1200,"eatInTax":1200,"posCategoryIds":["SD"]},{"name":"Choose a sauce","productType":3,"plu":"MG-SAUCES","min":0,"max":1,"subProducts":["SAUCE-01","SAUCE-02"]},{"name":"Sate Sauce","productType":2,"plu":"SAUCE-01","price":50,"deliveryTax":1200,"takeawayTax":1200,"eatInTax":1200},{"name":"Hot Sauce","productType":2,"plu":"SAUCE-02","price":50,"deliveryTax":1200,"takeawayTax":1200,"eatInTax":1200}],"categories":[{"posCategoryId":"CHK","name":"Chicken","imageUrl":"https://storage.googleapis.com/ikona-bucket-staging/images/618a2c5306a6208df4e9d061/Chicken-6772a111d6ff7c6facadf7ea.jpeg"},{"posCategoryId":"SD","name":"Side Dishes","imageUrl":"https://storage.googleapis.com/ikona-bucket-staging/images/618a2c5306a6208df4e9d061/Sides-6772a0ade9c10b3d77b489a4.jpg"}]}},"4. Variant Product (sizes)":{"summary":"4. Variant Product (sizes)","value":{"accountId":"{{accountId}}","locationId":"{{locationId}}","products":[{"name":"Chicken Tenders","description":"Variant prices for different sizes will show cheapaest on top level product","productType":1,"isVariant":true,"plu":"VAR-PROD-1","price":0,"imageUrl":"https://storage.googleapis.com/ikona-bucket-staging/images/5ff6ee089328c8aefeeabe33/chicken-62285f90db5986001ebf58d5.jpg","subProducts":["MG-VAR-1"],"deliveryTax":1200,"takeawayTax":1200,"eatInTax":1200,"posCategoryIds":["CHK"]},{"name":"How many pieces?","productType":3,"isVariantGroup":true,"plu":"MG-VAR-1","min":1,"max":1,"subProducts":["VAR-1","VAR-2"]},{"name":"3 Pieces","productType":1,"plu":"VAR-1","price":800,"imageUrl":"https://resizer.staging.deliverect.com/xjen-2xRW9YzpXuWWG0brT-rs9z4W41LGVS36PELDzw/rt:fill/g:ce/el:0/aHR0cHM6Ly9zdG9yYWdlLmdvb2dsZWFwaXMuY29tL2lrb25hLWJ1Y2tldC1zdGFnaW5nL2ltYWdlcy82NmIzNTJlZjBjZDU3OTkyMTU0M2IzODAvMy1waWVjZS1jaGlja2VuLXRlbmRlcnMtNjcyMGYxNTRmMTgxNTI2ZjIzZTI3MGQ2LmpwZw==.jpg","deliveryTax":1200,"takeawayTax":1200,"eatInTax":1200},{"name":"6 Pieces","productType":1,"plu":"VAR-2","price":1100,"deliveryTax":1200,"takeawayTax":1200,"eatInTax":1200}],"categories":[{"posCategoryId":"CHK","name":"Chicken","imageUrl":"https://storage.googleapis.com/ikona-bucket-staging/images/618a2c5306a6208df4e9d061/Chicken-6772a111d6ff7c6facadf7ea.jpeg"}]}},"5. Meal Deal / Combo + Upsell":{"summary":"5. Meal Deal / Combo + Upsell","value":{"accountId":"{{accountId}}","locationId":"{{locationId}}","products":[{"name":"Burger Combo (Drink not Included)","description":"Combo with Bundles - Modifier Groups as Upsell","productType":1,"isCombo":true,"plu":"P-BRGR","price":950,"imageUrl":"https://storage.googleapis.com/ikona-bucket-staging/images/5ff6ee089328c8aefeeabe33/burger-62286be78c506f015be60190.jpeg","subProducts":["BNDL-BRG","UPSLL-01"],"deliveryTax":1200,"takeawayTax":1200,"eatInTax":1200,"posCategoryIds":["STK"]},{"name":"Burger Selection","productType":4,"plu":"BNDL-BRG","min":1,"max":1,"subProducts":["P-BURG-CHK","P-BURG-CHE","P-BURG-VEG"]},{"name":"Chicken Burger","description":"Crispy coated chicken thigh, iceberg lettuce, pickles, slice of cheese & mayo, all in a toasted brioche bun.","productType":1,"isVariant":true,"plu":"P-BURG-CHK","price":800,"imageUrl":"https://storage.googleapis.com/ikona-bucket-staging/images/5ff6ee089328c8aefeeabe33/chkburger-6228c1dcdb5986001ebf58df.jpeg","subProducts":["MG-FRS","UPSLL-01"],"deliveryTax":1200,"takeawayTax":1200,"eatInTax":1200,"posCategoryIds":["STK"]},{"name":"Fries Selection","productType":3,"isVariantGroup":true,"plu":"MG-FRS","min":1,"max":1,"subProducts":["P-FRS-S","P-FRS-M"]},{"name":"French Fries","description":"Plain fries from France","productType":1,"plu":"P-FRS-S","price":200,"imageUrl":"https://res.cloudinary.com/dyjxkus2h/image/upload/v1774957023/u9rr1srf6q6mapnsbg3k.jpg","deliveryTax":1200,"takeawayTax":1200,"eatInTax":1200,"posCategoryIds":["SD"]},{"name":"Curly Fries","description":"Spiralised potatoes, fried","productType":1,"plu":"P-FRS-M","price":200,"imageUrl":"https://res.cloudinary.com/dyjxkus2h/image/upload/v1774956887/eljk574rb3mwagajyrau.jpg","deliveryTax":1200,"takeawayTax":1200,"eatInTax":1200,"posCategoryIds":["SD"]},{"name":"Add a Drink?","productType":3,"plu":"UPSLL-01","min":0,"max":0,"multiMax":99,"overloads":[{"scopes":["P-BRGR"],"name":"Add a Drink? (not included)"}],"subProducts":["DRNK-01","DRNK-03"],"isUpsell":true},{"name":"Coca Cola","description":"Cola flavoured sugar and caffeine.","productType":1,"plu":"DRNK-01","price":400,"productTags":[10],"imageUrl":"https://storage.googleapis.com/ikona-bucket-staging/images/5ff6ee089328c8aefeeabe33/cocacola-622854a78c506f015be6018a.jpeg","deliveryTax":1200,"takeawayTax":1200,"eatInTax":1200,"posCategoryIds":["DRK"]},{"name":"Ginger Beer","description":"Made with locally grown ginger and sugarcane","productType":1,"plu":"DRNK-03","price":400,"productTags":[10],"imageUrl":"https://storage.googleapis.com/ikona-bucket-staging/images/5ff6ee089328c8aefeeabe33/gingerbeer-62285548db5986001ebf58d1.jpg","deliveryTax":1200,"takeawayTax":1200,"eatInTax":1200,"gtin":["8712345000103","74993001078"],"beverageInfo":{"caffeine":0,"alcohol":450},"supplementalInfo":{"instructionsForUse":"Best served chilled","ingredients":["Water","Sugar"],"additives":["Artificial Food Coloring","Sodium Nitrite"],"prepackaged":true,"deposit":100},"calories":500,"packaging":{"count":1,"reusable":true,"storageInstructions":"Keep cool"},"caloriesRangeHigh":750,"nutritionalInfo":{"fat":2,"sugar":2,"saturatedFat":1.5,"carbohydrates":1.5,"protein":2,"salt":2,"servingSize":{"amount":3,"unitType":3,"countUnitDescription":"g"},"netQuantity":{"amount":12,"unitType":1,"countUnitDescription":"g"}},"posCategoryIds":["DRK"]},{"name":"Cheeseburger","description":"100% beef patty, cheddar, caramelized onions, mayonnaise, pickles in a Pretzel bun","productType":1,"plu":"P-BURG-CHE","price":850,"imageUrl":"https://storage.googleapis.com/ikona-bucket-staging/images/5ff6ee089328c8aefeeabe33/cheeseburger-62286e26db5986001ebf58d7.jpg","subProducts":["MG-FRS","UPSLL-01"],"deliveryTax":1200,"takeawayTax":1200,"eatInTax":1200,"posCategoryIds":["STK"]},{"name":"Veggie Burger","description":"Black bean burgers with sweet potato, mushrooms, quinoa, and pecans.","productType":1,"plu":"P-BURG-VEG","price":750,"imageUrl":"https://storage.googleapis.com/ikona-bucket-staging/images/5ff6ee089328c8aefeeabe33/veggieburger-62286cbac715b403b0eb7294.jpeg","subProducts":["MG-FRS","UPSLL-01"],"deliveryTax":1200,"takeawayTax":1200,"eatInTax":1200,"posCategoryIds":["STK"]}],"categories":[{"posCategoryId":"STK","name":"Steak & Burgers","imageUrl":"https://storage.googleapis.com/ikona-bucket-staging/images/618a2c5306a6208df4e9d061/Steaks%20and%20Burgers-6772a08c467817883c7ae27d.jpg"},{"posCategoryId":"SD","name":"Side Dishes","imageUrl":"https://storage.googleapis.com/ikona-bucket-staging/images/618a2c5306a6208df4e9d061/Sides-6772a0ade9c10b3d77b489a4.jpg"},{"posCategoryId":"DRK","name":"Drinks","imageUrl":"https://storage.googleapis.com/ikona-bucket-staging/images/618a2c5306a6208df4e9d061/Drinks-6772a0cd6448d47caa95c689.jpg"}]}},"6. Price Overloads":{"summary":"6. Price Overloads","value":{"accountId":"{{accountId}}","locationId":"{{locationId}}","products":[{"name":"Build a Poke Bowl","description":"Select a size then choose your ingredients","productType":1,"isCombo":true,"plu":"P-PB-01","price":1000,"imageUrl":"https://storage.googleapis.com/ikona-bucket-staging/images/5ff6ee089328c8aefeeabe33/poke-622850c8b303fc03a148de44.jpg","subProducts":["POKE-SZ","BNDL-01","BNDL-02"],"deliveryTax":1200,"takeawayTax":1200,"eatInTax":1200,"posCategoryIds":["POKB"]},{"name":"Choose your size","productType":3,"plu":"POKE-SZ","min":1,"max":1,"subProducts":["SZ-01"]},{"name":"Mini Poke Bowl","description":"A little bowl of Poke","productType":1,"plu":"SZ-01","price":800,"subProducts":["BNDL-01-SML"],"deliveryTax":1200,"takeawayTax":1200,"eatInTax":1200},{"name":"Choose Your Protein","productType":4,"plu":"BNDL-01-SML","price":0,"min":1,"max":1,"subProducts":["PRT-01","PRT-02"]},{"name":"Yuzu Salmon","productType":1,"plu":"PRT-01","price":0,"overloads":[{"scopes":["BNDL-01-SML"],"bundlePrice":180},{"scopes":["BNDL-LG"],"bundlePrice":250}],"deliveryTax":1200,"takeawayTax":1200,"eatInTax":1200},{"name":"Spicy Tuna","productType":1,"plu":"PRT-02","price":0,"deliveryTax":1200,"takeawayTax":1200,"eatInTax":1200},{"name":"Choose Your Base","productType":4,"plu":"BNDL-01","min":1,"max":1,"subProducts":["BS-01","BS-02"]},{"name":"Sushi Rice","productType":1,"plu":"BS-01","price":0,"deliveryTax":1200,"takeawayTax":1200,"eatInTax":1200},{"name":"Cruncy Cabbage Slaw","productType":1,"plu":"BS-02","price":0,"deliveryTax":1200,"takeawayTax":1200,"eatInTax":1200},{"name":"Add Extras","productType":3,"plu":"BNDL-02","min":0,"max":3,"multiMax":3,"subProducts":["XTRA-TOF","PRT-03"],"isUpsell":true},{"name":"Spicy Tofu","productType":1,"plu":"XTRA-TOF","price":0,"deliveryTax":1200,"takeawayTax":1200,"eatInTax":1200},{"name":"Teriyaki Chicken","productType":1,"plu":"PRT-03","price":0,"deliveryTax":1200,"takeawayTax":1200,"eatInTax":1200}],"categories":[{"posCategoryId":"POKB","name":"Poke Bowls","imageUrl":"https://storage.googleapis.com/ikona-bucket-staging/images/618a2c5306a6208df4e9d061/Poke%20Bowls-6772a0e28d35e1e63aa25a50.jpg"}]}},"7. Ingredient Groups (Delta Modifiers)":{"summary":"7. Ingredient Groups (Delta Modifiers)","value":{"accountId":"{{accountId}}","locationId":"{{locationId}}","products":[{"name":"The Hawaiian","description":"Italys favourite Pizza!","productType":1,"plu":"PIZZ-01","price":800,"imageUrl":"https://storage.googleapis.com/ikona-bucket-staging/images/5ff6ee089328c8aefeeabe33/hawaiian-622855c7b303fc03a148de48.jpeg","deliveryTax":1200,"takeawayTax":1200,"eatInTax":1200,"subProducts":["Pick-HAW-Size"],"posCategoryIds":["PZ"]},{"name":"Select Size","plu":"Pick-HAW-Size","isVariantGroup":true,"min":1,"max":1,"productType":3,"subProducts":["PIZZ-01_MED","PIZZ-01_LG"]},{"name":"Medium","plu":"PIZZ-01_MED","price":1700,"deliveryTax":1200,"productType":1,"subProducts":["Pick-PIZZA-Base","PIZZ-01-TOP","Pick-PIZZA-Extras"]},{"name":"Select Base","plu":"Pick-PIZZA-Base","min":1,"max":1,"productType":3,"subProducts":["B-AMERIC","B-ITAL"]},{"name":"American","plu":"B-AMERIC","defaultQuantity":1,"productType":2},{"name":"Italian","plu":"B-ITAL","defaultQuantity":1,"productType":2},{"name":"Toppings","plu":"PIZZ-01-TOP","isIngredientGroup":true,"min":0,"max":4,"multiMax":1,"productType":3,"subProducts":["HAM","PINE","MOZ","SAU","OREG","CH-FL"]},{"name":"Ham","deliveryTax":1200,"plu":"HAM","price":0,"productType":2,"overloads":[{"scopes":["PIZZ-01_MED-->>PIZZ-01-TOP","PIZZ-01_LG-->>PIZZ-01-TOP"],"defaultQuantity":1},{"scopes":["Pick-PIZZA-Extras"],"price":200}]},{"name":"Pineapple","deliveryTax":1200,"plu":"PINE","price":0,"productType":2,"overloads":[{"scopes":["PIZZ-01_MED-->>PIZZ-01-TOP","PIZZ-01_LG-->>PIZZ-01-TOP"],"defaultQuantity":1},{"scopes":["Pick-PIZZA-Extras"],"price":180}]},{"name":"Mozzarella cheese","deliveryTax":1200,"plu":"MOZ","price":0,"productType":2,"overloads":[{"scopes":["PIZZ-01_MED-->>PIZZ-01-TOP","PIZZ-01_LG-->>PIZZ-01-TOP","BYOP-00-->>BYOP-TOP"],"defaultQuantity":1},{"scopes":["Pick-PIZZA-Extras"],"price":150}]},{"name":"Pizza Sauce","deliveryTax":1200,"plu":"SAU","price":0,"productType":2,"overloads":[{"scopes":["PIZZ-01_MED-->>PIZZ-01-TOP","PIZZ-01_LG-->>PIZZ-01-TOP","BYOP-00-->>BYOP-TOP"],"defaultQuantity":1},{"scopes":["Pick-PIZZA-Extras"],"price":180}]},{"name":"Oregano","deliveryTax":1200,"plu":"OREG","price":0,"productType":2},{"name":"Chili Flakes","deliveryTax":1200,"plu":"CH-FL","price":0,"productType":2},{"name":"Extra Toppings","plu":"Pick-PIZZA-Extras","max":0,"min":10,"multiMax":10,"overloads":[{"scopes":["BYOP-00"],"maxFree":1}],"productType":3,"subProducts":["HAM","PEPP","JAL","PINE"]},{"name":"Pepperoni","deliveryTax":1200,"plu":"PEPP","price":150,"productType":2},{"name":"Jalapeños","deliveryTax":1200,"plu":"JAL","price":100,"productType":2},{"name":"Large","plu":"PIZZ-01_LG","defaultQuantity":1,"price":2000,"deliveryTax":1200,"productType":1,"subProducts":["Pick-PIZZA-Base","PIZZ-01-TOP","Pick-PIZZA-Extras"]}],"categories":[{"posCategoryId":"PZ","name":"Pizzas","imageUrl":"https://storage.googleapis.com/ikona-bucket-staging/images/618a2c5306a6208df4e9d061/Pizza-6772a0fb8d35e1e63aa25a53.jpg"}]}}}}}},"responses":{"200":{"description":"Synchronous","content":{"application/json":{"schema":{"type":"object","properties":{"products":{"type":"object","properties":{"inserted":{"type":"integer","example":1,"default":0},"updated":{"type":"integer","example":0,"default":0},"deleted":{"type":"integer","example":0,"default":0},"ignored":{"type":"integer","example":0,"default":0}}},"modifiers":{"type":"object","properties":{"inserted":{"type":"integer","example":6,"default":0},"updated":{"type":"integer","example":0,"default":0},"deleted":{"type":"integer","example":0,"default":0},"ignored":{"type":"integer","example":0,"default":0}}},"modifierGroups":{"type":"object","properties":{"inserted":{"type":"integer","example":2,"default":0},"updated":{"type":"integer","example":0,"default":0},"deleted":{"type":"integer","example":0,"default":0},"ignored":{"type":"integer","example":0,"default":0}}},"bundles":{"type":"object","properties":{"inserted":{"type":"integer","example":0,"default":0},"updated":{"type":"integer","example":0,"default":0},"deleted":{"type":"integer","example":0,"default":0},"ignored":{"type":"integer","example":0,"default":0}}},"priceLevels":{"type":"integer","example":0,"default":0},"warnings":{"type":"integer","example":0,"default":0},"errors":{"type":"integer","example":0,"default":0}}},"examples":{"OK":{"summary":"OK","value":{"products":{"inserted":1,"updated":0,"deleted":0,"ignored":0},"modifiers":{"inserted":6,"updated":0,"deleted":0,"ignored":0},"modifierGroups":{"inserted":2,"updated":0,"deleted":0,"ignored":0},"bundles":{"inserted":0,"updated":0,"deleted":0,"ignored":0},"priceLevels":0,"warnings":0,"errors":0}}}}}},"202":{"description":"Asynchronous"},"403":{"description":"403","content":{"application/json":{"schema":{"type":"object","properties":{"code":{"type":"string","example":"Authorization error"},"description":{"type":"string","example":"Not allowed access to this account."}},"example":"{\n    \"code\": \"Authorization error\",\n    \"description\": \"Not allowed access to this account.\"\n}"},"examples":{"Forbidden":{"summary":"Forbidden","value":{"code":"Authorization error","description":"Not allowed access to this account."}}}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"string"}}},"examples":{"accountNotFound":{"summary":"Account not found","value":{"error":"Account 5b****71c6489f0029****d4 not found"}},"locationNotFound":{"summary":"Location not found","value":{"error":"Location 5c****ecc6489f0001****b8 was not found in this account."}}}}}},"422":{"content":{"application/json":{"schema":{"type":"object","properties":{}},"examples":{"Invalid Location":{"summary":"Invalid Location","value":{"location":"Invalid Location"}},"Invalid Account":{"summary":"Invalid Account","value":{"account":"Invalid Account."}}}}},"description":"Unprocessable Entity"}}}},"/locations/{locationId}/readiness/pos":{"put":{"responses":{"200":{"description":"Accepted. Check \"recorded\" to confirm it was processed.","content":{"application/json":{"examples":{"OK":{"summary":"OK","value":{"component":"pos","status":"online","recorded":true}}}}}},"400":{"description":"\"status\" is not \"online\" or \"offline\"","content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string"}},"required":["name"]}}}},"401":{"description":"Missing or invalid Authorization","content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string"}},"required":["name"]}}}},"403":{"description":"Not allowed to access this location","content":{}},"404":{"description":" Unknown locationId","content":{"application/json":{"schema":{"type":"object","properties":{}}}}}},"parameters":[{"in":"path","name":"locationId","schema":{"type":"string"},"required":true}],"operationId":"put_locations-locationid-readiness-pos","summary":"POS Health check ","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string"}},"required":["name"]},"examples":{"POS Online":{"summary":"POS Online","value":{"status":"online"}}}}}},"tags":["Endpoints"]}},"/orderValidation/{validationId}":{"post":{"responses":{"200":{"description":"Validation recorded","content":{"application/json":{"examples":{"Validation recorded. Body contains the normalized `OrderValidationResult`":{"summary":"Validation recorded. Body contains the normalized `OrderValidationResult`","value":"{}"}}}}},"400":{"content":{"application/json":{"schema":{"type":"object","properties":{}},"examples":{"Invalid JSON or non-object body.":{"summary":"Invalid JSON or non-object body.","value":"{}"},"Unknown or expired `validationId` (TTL is 15 minutes).":{"summary":"Unknown or expired `validationId` (TTL is 15 minutes).","value":"{}"}}}},"description":"Unknown or expired validationId (TTL is 15 min) or Invalid JSON or non-object body"}},"parameters":[{"in":"path","name":"validationId","schema":{"type":"string"},"required":true}],"summary":"Validation Response Async","operationId":"post_ordervalidation-validationid","tags":["Endpoints"]}}},"webhooks":{"https://yourwebhook.com/register":{"post":{"tags":["Webhooks"],"summary":"Register POS","operationId":"pos_register","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, in the format `Deliverect/{version}`.","schema":{"type":"string"}},{"name":"X-Server-Authorization-HMAC-SHA256","in":"header","required":true,"description":"Signature of the raw request body using your shared secret; recompute it on receipt to verify the request came from Deliverect (see <a href=\"https://developers.deliverect.com/reference/hmac-authentication\" target=\"_blank\" rel=\"noopener noreferrer\">HMAC authentication guide</a>).","schema":{"type":"string"}}],"requestBody":{"required":true,"description":"Sent by Deliverect as a JSON payload.","content":{"application/json":{"schema":{"type":"object","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."},"externalLocationId":{"type":"string","description":"<Glossary>externalLocationId</Glossary> is an identifier of the location known on the POS side, it is stored within the POS config in Deliverect"},"locationName":{"type":"string","description":"Name of the location set in Deliverect."}}},"examples":{"registerEvent":{"summary":"Register Event Example","value":{"accountId":"63********************a7","locationId":"62********************e4","externalLocationId":"61********************r5","locationName":"Test Store"}}}}}},"responses":{"200":{"description":"Return the integration URLs.","content":{"application/json":{"schema":{"type":"object","description":"When below URLs are returned as response, they will be automatically set in the location settings.\n\n<HTMLBlock>{`\n<div class=\"callout-banner callout-banner--neutral\">\n  <span class=\"callout-icon\"><i class=\"fa-regular fa-square-info\"></i></span>\n  <p>For any webhooks not supported, an empty string can be set\n  </p>\n</div>\n`}</HTMLBlock>\n\n```json Example Response\n{\n  \"ordersWebhookURL\": \"https://integrator.com/ordersWebhookURL\",\n  \"syncProductsURL\": \"https://integrator.com/syncProductsURL\",\n  \"syncTablesURL\": \"https://integrator.com/syncTablesURL\",\n  \"syncFloorsURL\": \"https://integrator.com/syncFloorsURL\",\n  \"operationsWebhookURL\": \"https://integrator.com/operationsURL\",\n  \"storeStatusWebhookURL\": \"https://integrator.com/storeStatusURL\",\n  \"taxCalculationWebhookURL\": \"https://integrator.com/taxCalculationURL\"\n}\n```","required":["ordersWebhookURL","syncProductsURL"],"properties":{"syncProductsURL":{"type":"string","description":"Sync products from the POS to Deliverect (see [Sync Products](ref:pos_syncproducts))."},"ordersWebhookURL":{"type":"string","description":"Insert order from Deliverect to the POS (see [Order Notification](ref:kds_order_notification-1))."},"syncTablesURL":{"type":"string","description":"Sync tables from the POS to Deliverect (see [Sync Tables](ref:pos_tables_locationid))."},"syncFloorsURL":{"type":"string","description":"Sync floors from the POS to Deliverect (see [Sync Floors](ref:pos_floors_locationid))."},"operationsWebhookURL":{"type":"string","description":"Sync operational updates for published menus. Activated only by customer request."},"storeStatusWebhookURL":{"type":"string","description":"Sync any status changes made to channels per location. Activated only by customer request."},"taxCalculationWebhookURL":{"type":"string","description":"Sync calculated tax based on a basket amount (see [Tax Calculation](ref:tax-calculation-2))."}}},"examples":{"Result":{"value":{"ordersWebhookURL":"https://integrator.com/ordersWebhookURL","syncProductsURL":"https://integrator.com/syncProductsURL","syncTablesURL":"https://integrator.com/syncTablesURL","syncFloorsURL":"https://integrator.com/syncFloorsURL","operationsWebhookURL":"https://integrator.com/operationsURL","storeStatusWebhookURL":"https://integrator.com/storeStatusURL","taxCalculationWebhookURL":"https://integrator.com/taxCalculationURL"}}}}}}},"deprecated":false,"x-readme":{"explorer-enabled":false,"code-samples":[{"language":"json","name":"Register Event Example","code":"{\n  \"accountId\": \"63********************a7\",\n  \"locationId\": \"62********************e4\",\n  \"externalLocationId\": \"61********************r5\",\n  \"locationName\": \"Test Store\"\n}","correspondingExample":"registerEvent"}]},"security":[]}},"https://yourwebhook.com/orders":{"post":{"tags":["Webhooks"],"summary":"Order Notification","operationId":"pos_ordercancel","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, in the format `Deliverect/{version}`.","schema":{"type":"string"}},{"name":"X-Server-Authorization-HMAC-SHA256","in":"header","required":true,"description":"Signature of the raw request body using your shared secret; recompute it on receipt to verify the request came from Deliverect (see <a href=\"https://developers.deliverect.com/reference/hmac-authentication\" target=\"_blank\" rel=\"noopener noreferrer\">HMAC authentication guide</a>).","schema":{"type":"string"}}],"requestBody":{"required":true,"description":"Sent by Deliverect as a JSON payload.","content":{"application/json":{"schema":{"type":"object","properties":{"_created":{"type":"string","format":"date-time","description":"Time the order was created in Deliverect, in the format `yyyy-MM-ddTHH:mm:ss.SSSSSSZ`."},"_updated":{"type":"string","format":"date-time","description":"Time the order was last updated in Deliverect, in the format `yyyy-MM-ddTHH:mm:ss.SSSSSSZ`."},"_id":{"type":"string","description":"Unique identifier of the order in Deliverect. Please note cancel requests are processed as new orders with `\"status\": 100` and bearing original order `_id` (see cancellation guide [here](https://developers.deliverect.com/v1.1-restaurants/docs/how-to-handle-cancellations))."},"account":{"type":"string","description":"Unique customer account ID in Deliverect."},"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."},"channelOrderDisplayId":{"type":"string","description":"Alternative order ID set by ordering channel, primarily for convenience and readability. This is not unique and typically a shortened version of `channelOrderId` consisting of 4-5 alphanumeric characters, although may go up to 12 characters."},"posId":{"type":"string","description":"The POS order ID."},"posReceiptId":{"type":"string","description":"Provided by the POS in response to incoming orders as a reference to a specific POS receipt."},"posLocationId":{"type":"string","description":"<Glossary>posLocationId</Glossary> is an identifier of the location known on the POS side, it is stored within the POS config in Deliverect."},"location":{"type":"string","description":"<Glossary>locationId</Glossary> is the unique ID for the POS to identify the store location."},"channelLink":{"type":"string","description":"<Glossary>channelLinkId</Glossary> is the unique identifier of the channel (merchant store) in Deliverect. Retrieve all IDs per account via [GET Channel Links](https://developers.deliverect.com/v1.1-restaurants/reference/channel-integrators)."},"status":{"type":"integer","description":"Current order status (see all <a href=\"https://developers.deliverect.com/page/order-status\" target=\"_blank\" rel=\"noopener noreferrer\">Order statuses here</a>)."},"statusHistory":{"type":"array","description":"All status changes of the order up to the point the webhook is sent.","items":{"type":"object","properties":{"timeStamp":{"type":"string","format":"date-time","description":"Time of the status change, in the format `yyyy-MM-ddTHH:mm:ss.SSSSSSZ`."},"status":{"type":"integer","description":"Order status (see all <a href=\"https://developers.deliverect.com/page/order-status\" target=\"_blank\" rel=\"noopener noreferrer\">Order statuses here</a>)."},"response":{"type":"string","description":"In case of error, it will be populated here."},"source":{"type":"integer","description":"Source of status update `1` = POS, `2` = Channel and `5` = Internal."}}}},"packaging":{"type":"object","description":"Order-level packaging preferences.","properties":{"includeCutlery":{"type":"boolean","description":"Specifies if cutlery/utensils should be included or not."}}},"by":{"type":"string","description":"Order source (if known) e.g. `app` or `mobile`, not the same as `channel` that specifies the ordering platform (see guide [here](https://developers.deliverect.com/v1.1-restaurants/docs/how-to-recieve-orders))."},"orderType":{"type":"integer","description":"Type of order.\n\n- Pickup: `1`\n- Delivery: `2`\n- Eat in: `3`\n- Curbside: `4`\n- Drive thru: `5`","enum":[1,2,3,4,5]},"channel":{"type":"integer","description":"Unique ID of the channel (see [GET Integrated channels](https://developers.deliverect.com/v1.1-restaurants/reference/channel-integrators))."},"pos":{"type":"integer","description":"Unique ID of the POS."},"rating":{"type":"array","description":"Legacy attribute, not to be referenced as part of an integration.","items":{"type":"object","additionalProperties":true},"deprecated":true},"pickupTime":{"type":"string","format":"date-time","description":"Time the order is due to be picked up, in the format `yyyy-MM-ddTHH:mm:ss.SSSSSSZ`."},"deliveryTime":{"type":"string","format":"date-time","description":"Time the order is due to be delivered, in the format `yyyy-MM-ddTHH:mm:ss.SSSSSSZ`."},"deliveryIsAsap":{"type":"boolean","description":"Signifies if the order is required as soon as possible."},"courier":{"type":"object","description":"Details of courier.","properties":{"firstName":{"type":"string","description":"Courier's first name."},"lastName":{"type":"string","description":"Courier's last name."},"phoneNumber":{"type":"string","description":"Courier's phone number."},"deliveryBy":{"type":"string","description":"Name of the party fulfilling the delivery."}}},"courierUpdateHistory":{"type":"array","description":"History of every courier update received for the order.","items":{"type":"object","properties":{"status":{"type":"integer","description":"Courier status (see all <a href=\"https://developers.deliverect.com/page/order-status#courier-statuses\" target=\"_blank\" rel=\"noopener noreferrer\">Courier statuses here</a>)."},"received":{"type":"string","format":"date-time","description":"Time the courier update was received, in the format `yyyy-MM-ddTHH:mm:ss.SSSSSSZ`."},"courier":{"type":"object","additionalProperties":true,"description":"Courier info updates."},"arrivalTime":{"type":"string","format":"date-time","description":"Courier arrival time, in the format `yyyy-MM-ddTHH:mm:ss.SSSSSSZ`."},"deliveryTime":{"type":"string","format":"date-time","description":"Courier delivery time, in the format `yyyy-MM-ddTHH:mm:ss.SSSSSSZ`."},"source":{"type":"integer","description":"The source from where the update is coming: `1` = POS, `2` = Channel, `3` = DMA, `4` = Driver, `5` = Internal, `6` = Delivery System, `7` = Manual, `8` = KDS, `9` = Bill to Order Status."}}}},"customer":{"type":"object","description":"Customer is the end-consumer.","properties":{"name":{"type":"string","description":"Name of the customer."},"companyName":{"type":"string","description":"Company name."},"phoneNumber":{"type":"string","description":"Customer phone number, e.g. `+31618776767`."},"phoneAccessCode":{"type":"string","description":"Phone access code used to contact channel support (e.g. `1123`)."},"email":{"type":"string","description":"Email address, where provided."},"note":{"type":"string","description":"Note from the customer (e.g. \"Call once you arrive\")."},"tin":{"type":"string","description":"Tax identification number."}}},"deliveryAddress":{"type":"object","description":"Provided address for an order.","properties":{"street":{"type":"string","description":"This includes the street number where provided, e.g. `Stationsstraat 79e`."},"postalCode":{"type":"string","description":"Postal code, e.g. `3811 MH`."},"area":{"type":"string","description":"Area or district, where provided."},"city":{"type":"string","description":"City, e.g. `Amersfoort`."},"country":{"type":"string","description":"Country, e.g. `Netherlands`."},"source":{"type":"string","description":"Sent to the POS where address information exists, to help handle address variations from different countries."},"extraAddressInfo":{"type":"string","description":"Additional address information, e.g. `second floor`."},"coordinates":{"type":"object","description":"Geographic position of the address.","properties":{"coordinates":{"type":"array","description":"Coordinates as `[longitude, latitude]`.","items":{"type":"number"}}}}}},"orderIsAlreadyPaid":{"type":"boolean","description":"Statement of whether an order was paid online or not."},"taxes":{"type":"array","description":"All taxes applied to an order (in tax exclusive regions only).","items":{"type":"object","properties":{"name":{"type":"string","description":"Tax name, e.g. `VAT`."},"taxClassId":{"type":"integer","description":"Tax class ID, e.g. `0`, `1` or `2`."},"total":{"type":"integer","description":"The composite total of all taxes. It will be sent as an integer with 2 decimal digits e.g. 1 euro would be sent as 100."}}}},"payment":{"type":"object","description":"Payment details.","properties":{"amount":{"type":"integer","description":"Total amount tendered. It will be sent as an integer with 2 decimal digits e.g. 1 euro would be sent as 100."},"type":{"type":"integer","description":"Payment method applied (see full list [here](https://developers.deliverect.com/page/pos-payments-taxes-discount-other-charges))."},"due":{"type":"integer","description":"Any outstanding amount to be collected from the customer if there is a cash (unpaid) order. It will be sent as an integer with 2 decimal digits e.g. 1 euro would be sent as 100."},"rebate":{"type":"integer","description":"Any discounts offered by the channel. The ordering customer pays the amount without the rebate, but the restaurant receives the total amount from the channel. It will be sent as an integer with 2 decimal digits e.g. 1 euro would be sent as 100."},"commissionType":{"type":"string","description":"The type of commission rate charged, as categorised by the channel."}}},"note":{"type":"string","description":"Overall note for an order."},"items":{"type":"array","description":"All the items included in an order.","items":{"type":"object","properties":{"_id":{"type":"string","description":"Unique identifier of the item line within the order."},"plu":{"type":"string","description":"Unique reference for the product."},"name":{"type":"string","description":"The name of the product or modifier."},"sortOrder":{"type":"integer","description":"The 'stepped' order of any auto-applied items, where `0` is the first item to be listed (see guide [here](https://developers.deliverect.com/page/product-configuration#auto-apply))."},"price":{"type":"integer","description":"Price set for the product or modifier. It will be sent as an integer with 2 decimal digits e.g. 1 euro would be sent as 100."},"quantity":{"type":"number","description":"Quantity of item ordered, for subItems quantity, see guide [here](https://developers.deliverect.com/docs/how-to-interpret-modifiers-and-the-quantity-ordered)."},"productType":{"type":"integer","description":"Specific type of item (see full list [here](https://developers.deliverect.com/reference/insertupdate-products-and-categories#product-types))."},"remark":{"type":"string","description":"A note specific to an individual item."},"isCombo":{"type":"boolean","description":"Indicates a product sold is part of a combo."},"inBundle":{"type":"boolean","description":"Indicates the item is contained inside a bundle."},"categoryInfo":{"type":"object","additionalProperties":true,"description":"Category metadata for the item, where available."},"subItems":{"type":"array","description":"All subitems are items associated with the product ordered. The quantity is multiplied by however many top-level items are ordered (see guide [here](https://developers.deliverect.com/docs/how-to-interpret-modifiers-and-the-quantity-ordered)).","items":{"type":"object","properties":{"_id":{"type":"string","description":"Unique identifier of the item line within the order."},"plu":{"type":"string","description":"Unique reference for the product."},"name":{"type":"string","description":"The name of the product or modifier."},"sortOrder":{"type":"integer","description":"The 'stepped' order of any auto-applied items, where `0` is the first item to be listed (see guide [here](https://developers.deliverect.com/page/product-configuration#auto-apply))."},"price":{"type":"integer","description":"Price set for the product or modifier. It will be sent as an integer with 2 decimal digits e.g. 1 euro would be sent as 100."},"quantity":{"type":"number","description":"Quantity of item ordered, for subItems quantity, see guide [here](https://developers.deliverect.com/docs/how-to-interpret-modifiers-and-the-quantity-ordered)."},"productType":{"type":"integer","description":"Specific type of item (see full list [here](https://developers.deliverect.com/reference/insertupdate-products-and-categories#product-types))."},"remark":{"type":"string","description":"A note specific to an individual item."},"isCombo":{"type":"boolean","description":"Indicates a product sold is part of a combo."},"inBundle":{"type":"boolean","description":"Indicates the item is contained inside a bundle."},"categoryInfo":{"type":"object","additionalProperties":true,"description":"Category metadata for the item, where available."},"subItems":{"type":"array","description":"Nested sub-items, following the same structure.","items":{"type":"object","additionalProperties":true}},"packaging":{"type":"object","description":"Per-item packaging details.","properties":{"count":{"type":"integer","description":"Number of packages used for the item."},"reusable":{"type":"boolean","description":"`true` when reusable packaging is used."},"packedItems":{"type":"integer","description":"Number of items packed."}}},"productTags":{"type":"array","description":"Indicates [the tags](https://developers.deliverect.com/page/custom-tags-and-allergens) contained inside a product.","items":{"type":"integer"}}}}},"packaging":{"type":"object","description":"Per-item packaging details.","properties":{"count":{"type":"integer","description":"Number of packages used for the item."},"reusable":{"type":"boolean","description":"`true` when reusable packaging is used."},"packedItems":{"type":"integer","description":"Number of items packed."}}},"productTags":{"type":"array","description":"Indicates [the tags](https://developers.deliverect.com/page/custom-tags-and-allergens) contained inside a product.","items":{"type":"integer"}},"discountReferenceId":{"type":"integer","description":"Singular discount reference, appears alongside `discountReferenceIds`."},"discountReferenceIds":{"type":"array","description":"An array of identifiers for each discount applied to an item (see guide [here](https://developers.deliverect.com/docs/how-are-discounts-sent)).","items":{"type":"integer"}}}}},"decimalDigits":{"type":"integer","description":"Decimal precision of order and payment amounts."},"numberOfCustomers":{"type":"integer","description":"Indicates how many diners (applicable to table ordering)."},"channelOrderRawId":{"type":"string","description":"Deliverect internal ID of an order."},"channelOrderHistoryRawIds":{"type":"array","description":"Legacy attribute, not to be referenced as part of an integration.","items":{"type":"string"},"deprecated":true},"serviceCharge":{"type":"integer","description":"Service charge applied. It will be sent as an integer with 2 decimal digits e.g. 1 euro would be sent as 100."},"deliveryCost":{"type":"integer","description":"Delivery cost applied. It will be sent as an integer with 2 decimal digits e.g. 1 euro would be sent as 100."},"bagFee":{"type":"integer","description":"A surcharge applied for the packaging. It will be sent as an integer with 2 decimal digits e.g. 1 euro would be sent as 100."},"tip":{"type":"integer","description":"A tip intended for the restaurant operator. It will be sent as an integer with 2 decimal digits e.g. 1 euro would be sent as 100."},"driverTip":{"type":"integer","description":"A tip intended for the driver/courier. It will be sent as an integer with 2 decimal digits e.g. 1 euro would be sent as 100."},"smallOrderFee":{"type":"integer","description":"A surcharge applied by channels who impose minimum basket fees. It will be sent as an integer with 2 decimal digits e.g. 1 euro would be sent as 100."},"discountTotal":{"type":"integer","description":"Ordering platforms may offer multiple forms of discount e.g. % discount. A discount total is sent as a minus value representing the deduction from the total order (see guide [here](https://developers.deliverect.com/docs/how-are-discounts-sent)). It will be sent as an integer with 2 decimal digits e.g. 1 euro would be sent as 100."},"discounts":{"type":"array","description":"All applied discounts within an order.","items":{"type":"object","properties":{"type":{"type":"string","description":"Mapped channel discount type from the [list of Discount Types in Deliverect](https://developers.deliverect.com/page/list-of-discount-types)."},"provider":{"type":"string","description":"The issuer of the discount, i.e. the one who bears the discounted amount (see [list of provider types in Deliverect](https://developers.deliverect.com/page/discount-provider-type))."},"name":{"type":"string","description":"The name of the discount."},"channelDiscountCode":{"type":"string","description":"The unique discount code used by the channel."},"referenceId":{"type":"integer","description":"A unique identifier of the discount, where applicable, this will show against items included in the discount."},"value":{"type":"integer","description":"The flat amount of money or percentage covered by the discount, stored with precision 2, so $1.50 -> `150`, 25.1% -> `2510`."},"amount":{"type":"integer","description":"Actual amount discounted, e.g. 10% off on a $50 bill, the `value` will be `1000` and `amount` will be `500`. It will be sent as an integer with 2 decimal digits e.g. 1 euro would be sent as 100."},"amountRestaurant":{"type":"integer","description":"The amount of the restaurant's contribution to the discount. It will be sent as an integer with 2 decimal digits e.g. 1 euro would be sent as 100."},"amountChannel":{"type":"integer","description":"The amount of the channel's contribution to the discount. It will be sent as an integer with 2 decimal digits e.g. 1 euro would be sent as 100."}}}},"capacityUsages":{"type":"array","description":"Legacy attribute, not to be referenced as part of an integration.","items":{"type":"object","additionalProperties":true},"deprecated":true},"recent":{"type":"boolean","description":"Legacy attribute, not to be referenced as part of an integration.","deprecated":true},"resolvedBy":{"type":"string","description":"Legacy attribute, not to be referenced as part of an integration.","deprecated":true},"brandId":{"type":"string","description":"Appears where the customer operates multiple brands from one location (see [Get account brands](https://developers.deliverect.com/reference/get-accounts-brands))."},"testOrder":{"type":"boolean","description":"Only applicable as `true` in staging environment via menu preview orders."},"timezone":{"type":"string","description":"Timezone of the location, e.g. `Europe/London` (see TZ [list here](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones))."},"date":{"type":"integer","description":"Order created date in format `YMD`."},"tags":{"type":"array","description":"Custom tag(s) applied to the store location, typically a brand name, e.g. `[\"Best Burger\"]`.","items":{"type":"string"}},"taxTotal":{"type":"integer","description":"Sum of `deliveryTax` + `serviceChargeTax` + `deliveryCostTax`. It will be sent as an integer with 2 decimal digits e.g. 1 euro would be sent as 100."},"taxRemitted":{"type":"integer","description":"Some ordering platforms collect and pay taxes and share this info as a value-remitted tax. It will be sent as an integer with 2 decimal digits e.g. 1 euro would be sent as 100."},"table":{"type":"string","description":"With 'Eat-in' orders (`\"orderType\": 3`) a table identifier can be sent (see more details [here](https://developers.deliverect.com/page/pos-direct-table-ordering))."}},"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\n    Please note any <span class=\"deprecated-label\">Deprecated</span> parameters should be ignored\n  </p>\n</div>"},"examples":{"orderExample":{"summary":"Order Example","value":{"_created":"yyyy-MM-ddTHH:mm:ss.SSSSSSZ","_updated":"yyyy-MM-ddTHH:mm:ss.SSSSSSZ","_id":"62********************7c","account":"61********************a1","channelOrderId":"TEST******4206","channelOrderDisplayId":"T**4206","posId":"","posReceiptId":"","posLocationId":"","location":"61********************b4","channelLink":"61********************c3","status":1,"statusHistory":[{"timeStamp":"yyyy-MM-ddTHH:mm:ss.SSSSSSZ","status":4,"response":"","source":2},{"timeStamp":"yyyy-MM-ddTHH:mm:ss.SSSSSSZ","status":1,"response":"","source":5}],"packaging":{"includeCutlery":false},"by":"Deliverect","orderType":2,"channel":1,"pos":10000,"rating":[],"pickupTime":"yyyy-MM-ddTHH:mm:ss.SSSSSSZ","deliveryTime":"yyyy-MM-ddTHH:mm:ss.SSSSSSZ","deliveryIsAsap":true,"courier":{"firstName":"","lastName":"","phoneNumber":"","deliveryBy":"restaurant"},"courierUpdateHistory":[{"status":72,"received":"yyyy-MM-ddTHH:mm:ss.SSSSSSZ","courier":{},"arrivalTime":"yyyy-MM-ddTHH:mm:ss.SSSSSSZ","deliveryTime":"yyyy-MM-ddTHH:mm:ss.SSSSSSZ","source":5}],"customer":{"name":"Jack","companyName":"Deliverect","phoneNumber":"+31615887898","phoneAccessCode":"0020","email":"test@test.com","note":"call me when you arrive","tin":""},"deliveryAddress":{"street":"","postalCode":"","area":"","city":"","country":"","extraAddressInfo":"","coordinates":{"coordinates":[80.9,-90.3]}},"orderIsAlreadyPaid":true,"taxes":[],"payment":{"amount":650,"type":0,"due":0,"rebate":0,"commissionType":""},"note":"","items":[{"_id":"68********************3c","plu":"P-BRGR","name":"Burger Combo (Drink not Included)","sortOrder":0,"price":500,"quantity":1,"productType":1,"isCombo":true,"subItems":[{"_id":"68********************3c","plu":"DRK-01","name":"Diet Soda","sortOrder":0,"price":100,"quantity":1,"productType":1,"subItems":[]},{"_id":"68********************3c","plu":"P-BURG-CHE","name":"Cheeseburger","sortOrder":0,"price":0,"quantity":1,"productType":1,"inBundle":true,"subItems":[{"_id":"68********************3c","plu":"P-GHRK","name":"Extra Gherkin","sortOrder":0,"price":50,"quantity":2,"productType":1,"subItems":[],"productTags":[]}],"productTags":[]}],"productTags":[14]}],"decimalDigits":2,"numberOfCustomers":1,"channelOrderRawId":"62********************73","channelOrderHistoryRawIds":[],"serviceCharge":0,"deliveryCost":0,"bagFee":0,"tip":0,"driverTip":0,"smallOrderFee":0,"discountTotal":-50,"discounts":[{"type":"order_flat_off","provider":"channel","name":"Discount","channelDiscountCode":"50OFF","referenceId":1,"value":50,"amount":50}],"capacityUsages":[],"recent":true,"resolvedBy":"","brandId":"61********************60","testOrder":true,"timezone":"Europe/Amsterdam","date":20230414,"tags":["BRAND X"]}}}}}},"responses":{"200":{"description":"Return a `2xx` status to confirm receipt, then send status updates asynchronously via [Update Order Status](https://developers.deliverect.com/v1.1-restaurants/reference/update-order-status)."}},"deprecated":false,"x-readme":{"explorer-enabled":false,"code-samples":[{"language":"json","name":"Order Example","code":"{\n  \"_created\": \"yyyy-MM-ddTHH:mm:ss.SSSSSSZ\",\n  \"_updated\": \"yyyy-MM-ddTHH:mm:ss.SSSSSSZ\",\n  \"_id\": \"62********************7c\",\n  \"account\": \"61********************a1\",\n  \"channelOrderId\": \"TEST******4206\",\n  \"channelOrderDisplayId\": \"T**4206\",\n  \"posId\": \"\",\n  \"posReceiptId\": \"\",\n  \"posLocationId\": \"\",\n  \"location\": \"61********************b4\",\n  \"channelLink\": \"61********************c3\",\n  \"status\": 1,\n  \"statusHistory\": [\n    {\n      \"timeStamp\": \"yyyy-MM-ddTHH:mm:ss.SSSSSSZ\",\n      \"status\": 4,\n      \"response\": \"\",\n      \"source\": 2\n    },\n    {\n      \"timeStamp\": \"yyyy-MM-ddTHH:mm:ss.SSSSSSZ\",\n      \"status\": 1,\n      \"response\": \"\",\n      \"source\": 5\n    }\n  ],\n  \"packaging\": {\n    \"includeCutlery\": false\n  },\n  \"by\": \"Deliverect\",\n  \"orderType\": 2,\n  \"channel\": 1,\n  \"pos\": 10000,\n  \"rating\": [],\n  \"pickupTime\": \"yyyy-MM-ddTHH:mm:ss.SSSSSSZ\",\n  \"deliveryTime\": \"yyyy-MM-ddTHH:mm:ss.SSSSSSZ\",\n  \"deliveryIsAsap\": true,\n  \"courier\": {\n    \"firstName\": \"\",\n    \"lastName\": \"\",\n    \"phoneNumber\": \"\",\n    \"deliveryBy\": \"restaurant\"\n  },\n  \"courierUpdateHistory\": [\n    {\n      \"status\": 72,\n      \"received\": \"yyyy-MM-ddTHH:mm:ss.SSSSSSZ\",\n      \"courier\": {},\n      \"arrivalTime\": \"yyyy-MM-ddTHH:mm:ss.SSSSSSZ\",\n      \"deliveryTime\": \"yyyy-MM-ddTHH:mm:ss.SSSSSSZ\",\n      \"source\": 5\n    }\n  ],\n  \"customer\": {\n    \"name\": \"Jack\",\n    \"companyName\": \"Deliverect\",\n    \"phoneNumber\": \"+31615887898\",\n    \"phoneAccessCode\": \"0020\",\n    \"email\": \"test@test.com\",\n    \"note\": \"call me when you arrive\",\n    \"tin\": \"\"\n  },\n  \"deliveryAddress\": {\n    \"street\": \"\",\n    \"postalCode\": \"\",\n    \"area\": \"\",\n    \"city\": \"\",\n    \"country\": \"\",\n    \"extraAddressInfo\": \"\",\n    \"coordinates\": {\n      \"coordinates\": [\n        80.9,\n        -90.3\n      ]\n    }\n  },\n  \"orderIsAlreadyPaid\": true,\n  \"taxes\": [],\n  \"payment\": {\n    \"amount\": 650,\n    \"type\": 0,\n    \"due\": 0,\n    \"rebate\": 0,\n    \"commissionType\": \"\"\n  },\n  \"note\": \"\",\n  \"items\": [\n    {\n      \"_id\": \"68********************3c\",\n      \"plu\": \"P-BRGR\",\n      \"name\": \"Burger Combo (Drink not Included)\",\n      \"sortOrder\": 0,\n      \"price\": 500,\n      \"quantity\": 1,\n      \"productType\": 1,\n      \"isCombo\": true,\n      \"subItems\": [\n        {\n          \"_id\": \"68********************3c\",\n          \"plu\": \"DRK-01\",\n          \"name\": \"Diet Soda\",\n          \"sortOrder\": 0,\n          \"price\": 100,\n          \"quantity\": 1,\n          \"productType\": 1,\n          \"subItems\": []\n        },\n        {\n          \"_id\": \"68********************3c\",\n          \"plu\": \"P-BURG-CHE\",\n          \"name\": \"Cheeseburger\",\n          \"sortOrder\": 0,\n          \"price\": 0,\n          \"quantity\": 1,\n          \"productType\": 1,\n          \"inBundle\": true,\n          \"subItems\": [\n            {\n              \"_id\": \"68********************3c\",\n              \"plu\": \"P-GHRK\",\n              \"name\": \"Extra Gherkin\",\n              \"sortOrder\": 0,\n              \"price\": 50,\n              \"quantity\": 2,\n              \"productType\": 1,\n              \"subItems\": [],\n              \"productTags\": []\n            }\n          ],\n          \"productTags\": []\n        }\n      ],\n      \"productTags\": [\n        14\n      ]\n    }\n  ],\n  \"decimalDigits\": 2,\n  \"numberOfCustomers\": 1,\n  \"channelOrderRawId\": \"62********************73\",\n  \"channelOrderHistoryRawIds\": [],\n  \"serviceCharge\": 0,\n  \"deliveryCost\": 0,\n  \"bagFee\": 0,\n  \"tip\": 0,\n  \"driverTip\": 0,\n  \"smallOrderFee\": 0,\n  \"discountTotal\": -50,\n  \"discounts\": [\n    {\n      \"type\": \"order_flat_off\",\n      \"provider\": \"channel\",\n      \"name\": \"Discount\",\n      \"channelDiscountCode\": \"50OFF\",\n      \"referenceId\": 1,\n      \"value\": 50,\n      \"amount\": 50\n    }\n  ],\n  \"capacityUsages\": [],\n  \"recent\": true,\n  \"resolvedBy\": \"\",\n  \"brandId\": \"61********************60\",\n  \"testOrder\": true,\n  \"timezone\": \"Europe/Amsterdam\",\n  \"date\": 20230414,\n  \"tags\": [\n    \"BRAND X\"\n  ]\n}","correspondingExample":"orderExample"}]},"security":[]}},"https://yourwebhook.com/validate-order":{"post":{"tags":["Webhooks"],"summary":"Order Validation","operationId":"post_validate-order","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, in the format `Deliverect/{version}`.","schema":{"type":"string"}},{"name":"X-Server-Authorization-HMAC-SHA256","in":"header","required":true,"description":"Signature of the raw request body using your shared secret; recompute it on receipt to verify the request came from Deliverect (see <a href=\"https://developers.deliverect.com/reference/hmac-authentication\" target=\"_blank\" rel=\"noopener noreferrer\">HMAC authentication guide</a>).","schema":{"type":"string"}}],"requestBody":{"required":true,"description":"Sent by Deliverect as a JSON payload.","content":{"application/json":{"schema":{"type":"object","properties":{"validationId":{"type":"string","description":"Unique identifier for this validation round. Echo this in async callbacks."},"callbackUrl":{"type":"string","description":"Deliverect URL to POST the completed result when using async validation. Format: `{apiBaseUrl}/orderValidation/{validationId}`"},"_created":{"type":"string","format":"date-time","description":"Time the order was created in Deliverect, in the format `yyyy-MM-ddTHH:mm:ss.SSSSSSZ`."},"_updated":{"type":"string","format":"date-time","description":"Time the order was last updated in Deliverect, in the format `yyyy-MM-ddTHH:mm:ss.SSSSSSZ`."},"_id":{"type":"string","description":"Deliverect's identifier for the transient cart."},"account":{"type":"string","description":"Unique customer account ID in Deliverect."},"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."},"channelOrderDisplayId":{"type":"string","description":"Alternative order ID set by ordering channel, primarily for convenience and readability. This is not unique and typically a shortened version of `channelOrderId` consisting of 4-5 alphanumeric characters, although may go up to 12 characters."},"posId":{"type":"string","description":"The POS order ID."},"posReceiptId":{"type":"string","description":"Provided by the POS in response to incoming orders as a reference to a specific POS receipt."},"posLocationId":{"type":"string","description":"<Glossary>posLocationId</Glossary> is an identifier of the location known on the POS side, it is stored within the POS config in Deliverect."},"location":{"type":"string","description":"<Glossary>locationId</Glossary> is the unique ID for the POS to identify the store location."},"channelLink":{"type":"string","description":"<Glossary>channelLinkId</Glossary> is the unique identifier of the channel (merchant store) in Deliverect. Retrieve all IDs per account via [GET Channel Links](https://developers.deliverect.com/v1.1-restaurants/reference/channel-integrators)."},"status":{"type":"integer","description":"Current order status (see all <a href=\"https://developers.deliverect.com/page/order-status\" target=\"_blank\" rel=\"noopener noreferrer\">Order statuses here</a>)."},"statusHistory":{"type":"array","description":"All status changes of the order up to the point the webhook is sent.","items":{"type":"object","properties":{"timeStamp":{"type":"string","format":"date-time","description":"Time of the status change, in the format `yyyy-MM-ddTHH:mm:ss.SSSSSSZ`."},"status":{"type":"integer","description":"Order status (see all <a href=\"https://developers.deliverect.com/page/order-status\" target=\"_blank\" rel=\"noopener noreferrer\">Order statuses here</a>)."},"response":{"type":"string","description":"In case of error, it will be populated here."},"source":{"type":"integer","description":"Source of status update `1` = POS, `2` = Channel and `5` = Internal."}}}},"packaging":{"type":"object","description":"Order-level packaging preferences.","properties":{"includeCutlery":{"type":"boolean","description":"Specifies if cutlery/utensils should be included or not."}}},"by":{"type":"string","description":"Order source (if known) e.g. `app` or `mobile`, not the same as `channel` that specifies the ordering platform (see guide [here](https://developers.deliverect.com/v1.1-restaurants/docs/how-to-recieve-orders))."},"orderType":{"type":"integer","description":"Type of order.\n\n- Pickup: `1`\n- Delivery: `2`\n- Eat in: `3`\n- Curbside: `4`\n- Drive thru: `5`","enum":[1,2,3,4,5]},"channel":{"type":"integer","description":"Unique ID of the channel (see [GET Integrated channels](https://developers.deliverect.com/v1.1-restaurants/reference/channel-integrators))."},"pos":{"type":"integer","description":"Unique ID of the POS."},"rating":{"type":"array","description":"Legacy attribute, not to be referenced as part of an integration.","items":{"type":"object","additionalProperties":true},"deprecated":true},"pickupTime":{"type":"string","format":"date-time","description":"Time the order is due to be picked up, in the format `yyyy-MM-ddTHH:mm:ss.SSSSSSZ`."},"deliveryTime":{"type":"string","format":"date-time","description":"Time the order is due to be delivered, in the format `yyyy-MM-ddTHH:mm:ss.SSSSSSZ`."},"deliveryIsAsap":{"type":"boolean","description":"Signifies if the order is required as soon as possible."},"courier":{"type":"object","description":"Details of courier.","properties":{"firstName":{"type":"string","description":"Courier's first name."},"lastName":{"type":"string","description":"Courier's last name."},"phoneNumber":{"type":"string","description":"Courier's phone number."},"deliveryBy":{"type":"string","description":"Name of the party fulfilling the delivery."}}},"courierUpdateHistory":{"type":"array","description":"History of every courier update received for the order.","items":{"type":"object","properties":{"status":{"type":"integer","description":"Courier status (see all <a href=\"https://developers.deliverect.com/page/order-status#courier-statuses\" target=\"_blank\" rel=\"noopener noreferrer\">Courier statuses here</a>)."},"received":{"type":"string","format":"date-time","description":"Time the courier update was received, in the format `yyyy-MM-ddTHH:mm:ss.SSSSSSZ`."},"courier":{"type":"object","additionalProperties":true,"description":"Courier info updates."},"arrivalTime":{"type":"string","format":"date-time","description":"Courier arrival time, in the format `yyyy-MM-ddTHH:mm:ss.SSSSSSZ`."},"deliveryTime":{"type":"string","format":"date-time","description":"Courier delivery time, in the format `yyyy-MM-ddTHH:mm:ss.SSSSSSZ`."},"source":{"type":"integer","description":"The source from where the update is coming: `1` = POS, `2` = Channel, `3` = DMA, `4` = Driver, `5` = Internal, `6` = Delivery System, `7` = Manual, `8` = KDS, `9` = Bill to Order Status."}}}},"customer":{"type":"object","description":"Customer is the end-consumer.","properties":{"name":{"type":"string","description":"Name of the customer."},"companyName":{"type":"string","description":"Company name."},"phoneNumber":{"type":"string","description":"Customer phone number, e.g. `+31618776767`."},"phoneAccessCode":{"type":"string","description":"Phone access code used to contact channel support (e.g. `1123`)."},"email":{"type":"string","description":"Email address, where provided."},"note":{"type":"string","description":"Note from the customer (e.g. \"Call once you arrive\")."},"tin":{"type":"string","description":"Tax identification number."}}},"deliveryAddress":{"type":"object","description":"Provided address for an order.","properties":{"street":{"type":"string","description":"This includes the street number where provided, e.g. `Stationsstraat 79e`."},"postalCode":{"type":"string","description":"Postal code, e.g. `3811 MH`."},"area":{"type":"string","description":"Area or district, where provided."},"city":{"type":"string","description":"City, e.g. `Amersfoort`."},"country":{"type":"string","description":"Country, e.g. `Netherlands`."},"source":{"type":"string","description":"Sent to the POS where address information exists, to help handle address variations from different countries."},"extraAddressInfo":{"type":"string","description":"Additional address information, e.g. `second floor`."},"coordinates":{"type":"object","description":"Geographic position of the address.","properties":{"coordinates":{"type":"array","description":"Coordinates as `[longitude, latitude]`.","items":{"type":"number"}}}}}},"orderIsAlreadyPaid":{"type":"boolean","description":"Statement of whether an order was paid online or not."},"taxes":{"type":"array","description":"All taxes applied to an order (in tax exclusive regions only).","items":{"type":"object","properties":{"name":{"type":"string","description":"Tax name, e.g. `VAT`."},"taxClassId":{"type":"integer","description":"Tax class ID, e.g. `0`, `1` or `2`."},"total":{"type":"integer","description":"The composite total of all taxes. It will be sent as an integer with 2 decimal digits e.g. 1 euro would be sent as 100."}}}},"payment":{"type":"object","description":"Payment details.","properties":{"amount":{"type":"integer","description":"Total amount tendered. It will be sent as an integer with 2 decimal digits e.g. 1 euro would be sent as 100."},"type":{"type":"integer","description":"Payment method applied (see full list [here](https://developers.deliverect.com/page/pos-payments-taxes-discount-other-charges))."},"due":{"type":"integer","description":"Any outstanding amount to be collected from the customer if there is a cash (unpaid) order. It will be sent as an integer with 2 decimal digits e.g. 1 euro would be sent as 100."},"rebate":{"type":"integer","description":"Any discounts offered by the channel. The ordering customer pays the amount without the rebate, but the restaurant receives the total amount from the channel. It will be sent as an integer with 2 decimal digits e.g. 1 euro would be sent as 100."},"commissionType":{"type":"string","description":"The type of commission rate charged, as categorised by the channel."}}},"note":{"type":"string","description":"Overall note for an order."},"items":{"type":"array","description":"All the items included in an order.","items":{"type":"object","properties":{"_id":{"type":"string","description":"Deliverect's internal line identifier (may be present on each line). Return this as `itemId` in your response when validating specific lines. Prefer `itemId` over `plu` when the same PLU appears more than once."},"plu":{"type":"string","description":"Unique reference for the product."},"name":{"type":"string","description":"The name of the product or modifier."},"sortOrder":{"type":"integer","description":"The 'stepped' order of any auto-applied items, where `0` is the first item to be listed (see guide [here](https://developers.deliverect.com/page/product-configuration#auto-apply))."},"price":{"type":"integer","description":"Price set for the product or modifier. It will be sent as an integer with 2 decimal digits e.g. 1 euro would be sent as 100."},"quantity":{"type":"number","description":"Quantity of item ordered, for subItems quantity, see guide [here](https://developers.deliverect.com/docs/how-to-interpret-modifiers-and-the-quantity-ordered)."},"productType":{"type":"integer","description":"Specific type of item (see full list [here](https://developers.deliverect.com/reference/insertupdate-products-and-categories#product-types))."},"remark":{"type":"string","description":"A note specific to an individual item."},"isCombo":{"type":"boolean","description":"Indicates a product sold is part of a combo."},"inBundle":{"type":"boolean","description":"Indicates the item is contained inside a bundle."},"categoryInfo":{"type":"object","additionalProperties":true,"description":"Category metadata for the item, where available."},"subItems":{"type":"array","description":"All subitems are items associated with the product ordered. The quantity is multiplied by however many top-level items are ordered (see guide [here](https://developers.deliverect.com/docs/how-to-interpret-modifiers-and-the-quantity-ordered)).","items":{"type":"object","properties":{"_id":{"type":"string","description":"Unique identifier of the item line within the order."},"plu":{"type":"string","description":"Unique reference for the product."},"name":{"type":"string","description":"The name of the product or modifier."},"sortOrder":{"type":"integer","description":"The 'stepped' order of any auto-applied items, where `0` is the first item to be listed (see guide [here](https://developers.deliverect.com/page/product-configuration#auto-apply))."},"price":{"type":"integer","description":"Price set for the product or modifier. It will be sent as an integer with 2 decimal digits e.g. 1 euro would be sent as 100."},"quantity":{"type":"number","description":"Quantity of item ordered, for subItems quantity, see guide [here](https://developers.deliverect.com/docs/how-to-interpret-modifiers-and-the-quantity-ordered)."},"productType":{"type":"integer","description":"Specific type of item (see full list [here](https://developers.deliverect.com/reference/insertupdate-products-and-categories#product-types))."},"remark":{"type":"string","description":"A note specific to an individual item."},"isCombo":{"type":"boolean","description":"Indicates a product sold is part of a combo."},"inBundle":{"type":"boolean","description":"Indicates the item is contained inside a bundle."},"categoryInfo":{"type":"object","additionalProperties":true,"description":"Category metadata for the item, where available."},"subItems":{"type":"array","description":"Nested sub-items, following the same structure.","items":{"type":"object","additionalProperties":true}},"packaging":{"type":"object","description":"Per-item packaging details.","properties":{"count":{"type":"integer","description":"Number of packages used for the item."},"reusable":{"type":"boolean","description":"`true` when reusable packaging is used."},"packedItems":{"type":"integer","description":"Number of items packed."}}},"productTags":{"type":"array","description":"Indicates [the tags](https://developers.deliverect.com/page/custom-tags-and-allergens) contained inside a product.","items":{"type":"integer"}}}}},"packaging":{"type":"object","description":"Per-item packaging details.","properties":{"count":{"type":"integer","description":"Number of packages used for the item."},"reusable":{"type":"boolean","description":"`true` when reusable packaging is used."},"packedItems":{"type":"integer","description":"Number of items packed."}}},"productTags":{"type":"array","description":"Indicates [the tags](https://developers.deliverect.com/page/custom-tags-and-allergens) contained inside a product.","items":{"type":"integer"}},"discountReferenceId":{"type":"integer","description":"Singular discount reference, appears alongside `discountReferenceIds`."},"discountReferenceIds":{"type":"array","description":"An array of identifiers for each discount applied to an item (see guide [here](https://developers.deliverect.com/docs/how-are-discounts-sent)).","items":{"type":"integer"}}}}},"decimalDigits":{"type":"integer","description":"Decimal precision of order and payment amounts."},"numberOfCustomers":{"type":"integer","description":"Indicates how many diners (applicable to table ordering)."},"channelOrderRawId":{"type":"string","description":"Deliverect internal ID of an order."},"channelOrderHistoryRawIds":{"type":"array","description":"Legacy attribute, not to be referenced as part of an integration.","items":{"type":"string"},"deprecated":true},"serviceCharge":{"type":"integer","description":"Service charge applied. It will be sent as an integer with 2 decimal digits e.g. 1 euro would be sent as 100."},"deliveryCost":{"type":"integer","description":"Delivery cost applied. It will be sent as an integer with 2 decimal digits e.g. 1 euro would be sent as 100."},"bagFee":{"type":"integer","description":"A surcharge applied for the packaging. It will be sent as an integer with 2 decimal digits e.g. 1 euro would be sent as 100."},"tip":{"type":"integer","description":"A tip intended for the restaurant operator. It will be sent as an integer with 2 decimal digits e.g. 1 euro would be sent as 100."},"driverTip":{"type":"integer","description":"A tip intended for the driver/courier. It will be sent as an integer with 2 decimal digits e.g. 1 euro would be sent as 100."},"smallOrderFee":{"type":"integer","description":"A surcharge applied by channels who impose minimum basket fees. It will be sent as an integer with 2 decimal digits e.g. 1 euro would be sent as 100."},"discountTotal":{"type":"integer","description":"Ordering platforms may offer multiple forms of discount e.g. % discount. A discount total is sent as a minus value representing the deduction from the total order (see guide [here](https://developers.deliverect.com/docs/how-are-discounts-sent)). It will be sent as an integer with 2 decimal digits e.g. 1 euro would be sent as 100."},"discounts":{"type":"array","description":"All applied discounts within an order.","items":{"type":"object","properties":{"type":{"type":"string","description":"Mapped channel discount type from the [list of Discount Types in Deliverect](https://developers.deliverect.com/page/list-of-discount-types)."},"provider":{"type":"string","description":"The issuer of the discount, i.e. the one who bears the discounted amount (see [list of provider types in Deliverect](https://developers.deliverect.com/page/discount-provider-type))."},"name":{"type":"string","description":"The name of the discount."},"channelDiscountCode":{"type":"string","description":"The unique discount code used by the channel."},"referenceId":{"type":"integer","description":"A unique identifier of the discount, where applicable, this will show against items included in the discount."},"value":{"type":"integer","description":"The flat amount of money or percentage covered by the discount, stored with precision 2, so $1.50 -> `150`, 25.1% -> `2510`."},"amount":{"type":"integer","description":"Actual amount discounted, e.g. 10% off on a $50 bill, the `value` will be `1000` and `amount` will be `500`. It will be sent as an integer with 2 decimal digits e.g. 1 euro would be sent as 100."},"amountRestaurant":{"type":"integer","description":"The amount of the restaurant's contribution to the discount. It will be sent as an integer with 2 decimal digits e.g. 1 euro would be sent as 100."},"amountChannel":{"type":"integer","description":"The amount of the channel's contribution to the discount. It will be sent as an integer with 2 decimal digits e.g. 1 euro would be sent as 100."}}}},"capacityUsages":{"type":"array","description":"Legacy attribute, not to be referenced as part of an integration.","items":{"type":"object","additionalProperties":true},"deprecated":true},"recent":{"type":"boolean","description":"Legacy attribute, not to be referenced as part of an integration.","deprecated":true},"resolvedBy":{"type":"string","description":"Legacy attribute, not to be referenced as part of an integration.","deprecated":true},"brandId":{"type":"string","description":"Appears where the customer operates multiple brands from one location (see [Get account brands](https://developers.deliverect.com/reference/get-accounts-brands))."},"testOrder":{"type":"boolean","description":"Only applicable as `true` in staging environment via menu preview orders."},"timezone":{"type":"string","description":"Timezone of the location, e.g. `Europe/London` (see TZ [list here](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones))."},"date":{"type":"integer","description":"Order created date in format `YMD`."},"tags":{"type":"array","description":"Custom tag(s) applied to the store location, typically a brand name, e.g. `[\"Best Burger\"]`.","items":{"type":"string"}},"taxTotal":{"type":"integer","description":"Sum of `deliveryTax` + `serviceChargeTax` + `deliveryCostTax`. It will be sent as an integer with 2 decimal digits e.g. 1 euro would be sent as 100."},"taxRemitted":{"type":"integer","description":"Some ordering platforms collect and pay taxes and share this info as a value-remitted tax. It will be sent as an integer with 2 decimal digits e.g. 1 euro would be sent as 100."},"table":{"type":"string","description":"With 'Eat-in' orders (`\"orderType\": 3`) a table identifier can be sent (see more details [here](https://developers.deliverect.com/page/pos-direct-table-ordering))."}},"description":"The body is the standard Order Notification payload with two additional top-level fields, `validationId` and `callbackUrl`. Prices and amounts are integer values in the smallest currency unit (cents).\n\n<div class=\"callout-banner callout-banner--neutral\">\n  <span class=\"callout-icon\"><i class=\"fa-regular fa-square-info\"></i></span>\n  <p>\n\n    Please note any <span class=\"deprecated-label\">Deprecated</span> parameters should be ignored\n  </p>\n</div>"},"examples":{"validateRequest":{"summary":"Sample Validate Request","value":{"validationId":"68********************e8","callbackUrl":"https://api.deliverect.com/orderValidation/68********************e8","_id":"62********************7c","account":"61********************a1","location":"61********************b4","channelLink":"61********************c3","posLocationId":"","orderType":2,"orderIsAlreadyPaid":true,"items":[{"_id":"68********************3c","plu":"P-BRGR","name":"Burger Combo (Drink not Included)","price":500,"quantity":1,"productType":1,"subItems":[{"plu":"DRK-01","name":"Diet Soda","price":100,"quantity":1,"productType":1,"subItems":[]}]},{"_id":"68c2a1b0f1e2d3a4b5c6d7f1","plu":"FRIES-001","name":"Large Fries","price":349,"quantity":1,"productType":1,"subItems":[]}],"taxTotal":124,"payment":{"amount":1073,"type":0},"decimalDigits":2}}}}}},"responses":{"200":{"description":"Synchronous validation ([flow diagram](https://developers.deliverect.com/page/synchronous-order-validation)). Recommended where possible, so validation errors reach the guest straight away.","content":{"application/json":{"schema":{"type":"object","description":"Return the validation result. When you know the failure mode, return explicit `errors[]` entries with the correct `code` ([see list of error codes](https://developers.deliverect.com/page/validation-error-codes)); otherwise Deliverect infers errors from a minimal response. Rules are applied in order:\n\n| Rule | Applies when your response includes | Deliverect's result |\n|---|---|---|\n| **Explicit errors** | Entries in `errors[]` | Errors take precedence, so never set `isValid: true` while also reporting errors. |\n| **Partial stock** | `items[]` with `available: false` and `quantity` > `0` but below the requested quantity | `quantity_unavailable` |\n| **Full unavailability** | `items[]` with `available: false` and `quantity` of `0` or omitted | `product_snoozed` |\n| **Price comparison** | `items[].price` | Compared to the matching request line (by `itemId`, then `plu`). A difference over 1 cent returns `price_mismatch`. |\n| **Tax comparison** | `charges.tax` or `taxTotal` | Compared to the request's `taxTotal`. A difference over 1 cent returns `tax_mismatch`. |\n| **De-duplication** | Identical `(code, path)` pairs | Returned once only. |","properties":{"isValid":{"type":"boolean","description":"Explicit pass/fail flag. Alias: `success`."},"success":{"type":"boolean","description":"Alias for `isValid`."},"items":{"type":"array","description":"Per-line POS view of the cart. Used for inferred validation when `errors` is empty.","items":{"type":"object","properties":{"plu":{"type":"string","description":"Product lookup code."},"itemId":{"type":"string","description":"Deliverect line `_id` from the request. Preferred over `plu` when disambiguating duplicate PLUs."},"available":{"type":"boolean","description":"`false` if the item cannot be fulfilled as requested."},"price":{"type":"integer","description":"POS unit price in smallest currency unit. Compared against the request when no explicit price error is given."},"quantity":{"type":"integer","description":"Quantity the POS can fulfil. Used with `available: false` to distinguish partial stock from a full 86."}}}},"errors":{"type":"array","description":"Explicit validation problems. Preferred when you know exactly what failed. Identical `(code, path)` pairs are deduplicated.","items":{"type":"object","properties":{"code":{"type":"string","enum":["product_not_found","product_snoozed","quantity_unavailable","price_mismatch","tax_mismatch","unknown"],"description":"Machine-readable error code.\n\n| Code | When to use |\n|---|---|\n| `product_not_found` | PLU does not exist or is not sold at this location. |\n| `product_snoozed` | Product exists but is temporarily unavailable (86 / snooze). Also inferred when `available: false` and available quantity is `0` or omitted. |\n| `quantity_unavailable` | Requested quantity exceeds available stock. Inferred when `available: false` and `quantity` is greater than `0` but less than requested. |\n| `price_mismatch` | POS unit price differs from the request by more than **1 cent**. Inferred when `items[].price` is returned without an explicit error. |\n| `tax_mismatch` | POS order tax differs from `taxTotal` / `charges.tax` by more than **1 cent**. Inferred when totals are returned without an explicit error. |\n| `unknown` | Any other validation failure, or an unrecognized code string. |"},"message":{"type":"string","description":"Human-readable explanation."},"path":{"type":"string","description":"JSON pointer into the request order, e.g. `/items/0/price` or `/items/1/subItems/0`. Resolved automatically when omitted if `plu` or `itemId` is provided."},"plu":{"type":"string","description":"Affected product code."},"itemId":{"type":"string","description":"Affected Deliverect line ID."},"expected":{"type":"integer","description":"Value Deliverect sent (e.g. requested quantity or price)."},"actual":{"type":"integer","description":"Value the POS reports."}}}},"charges":{"type":"object","description":"Order-level totals as seen by the POS.","properties":{"subTotal":{"type":"integer","description":"Subtotal excl. tax, smallest currency unit."},"tax":{"type":"integer","description":"Total tax."},"total":{"type":"integer","description":"Grand total."},"currency":{"type":"string","description":"ISO 4217 currency code."}}},"taxTotal":{"type":"integer","description":"Alternative to `charges.tax`."}}},"examples":{"validCart":{"summary":"Valid cart","value":{"isValid":true,"items":[{"itemId":"68c2a1b0f1e2d3a4b5c6d7f0","plu":"BURGER-001","available":true,"price":899,"quantity":1},{"itemId":"68c2a1b0f1e2d3a4b5c6d7f1","plu":"FRIES-001","available":true,"price":349,"quantity":1}],"charges":{"subTotal":1248,"tax":124,"total":1372,"currency":"EUR"}}},"unavailableItem":{"summary":"Unavailable item (explicit error)","value":{"isValid":false,"errors":[{"code":"product_snoozed","plu":"FRIES-001","itemId":"68c2a1b0f1e2d3a4b5c6d7f1","message":"Large Fries is temporarily unavailable","expected":1,"actual":0}]}},"priceMismatch":{"summary":"Price mismatch (inferred)","value":{"success":true,"items":[{"plu":"BURGER-001","available":true,"price":949}]}},"partialQuantity":{"summary":"Partial quantity (inferred)","value":{"items":[{"plu":"FRIES-001","available":false,"quantity":2}]}}}}}},"202":{"description":"Asynchronous validation ([flow diagram](https://developers.deliverect.com/page/aysynchronous-order-validation)). Return `202` or an empty `200`, then POST the result to `callbackUrl` (see [Validation Response Async](https://developers.deliverect.com/v1.1-restaurants/reference/validation-response-async)).","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    Use this flow when validation requires a round trip to in-store systems and cannot complete within a few seconds.\n  </p>\n</div>\n\n<div class=\"callout-banner callout-banner--important\">\n  <span class=\"callout-icon\"><i class=\"fa-regular fa-triangle-exclamation\"></i></span>\n  <p><strong>15-minute validation window</strong><br>\nDeliverect stores pending validations for <strong>15 minutes</strong> When responding with a <code>202</code> (or an empty <code>200</code>), the completed result must be posted to the provided <code>callbackUrl</code> within this window. After expiry the <code>validationId</code> is unknown and the callback will return a <code>400</code></p>\n</div>\n\nSee [Validation Response Async](https://developers.deliverect.com/v1.1-restaurants/reference/validation-response-async) for the full endpoint reference.","properties":{}}}}},"400":{"description":"Client error (any `4xx` is treated as a failed validation)","content":{"application/json":{"schema":{"type":"object","properties":{"reason":{"type":"string","description":"Reason for the failure, surfaced to the channel as a failed validation."}},"description":"```json Error — 4xx\n{\n  \"reason\": \"Store is closed\"\n}\n```"},"examples":{"Result":{"value":{"reason":"Store is closed"}}}}}},"500":{"description":"Internal server error (any `5xx` is treated as a failed validation)","content":{"application/json":{"schema":{"type":"object","properties":{"reason":{"type":"string","description":"Reason for the failure, surfaced to the channel as a failed validation."}},"description":"```json Error — 5xx\n{\n  \"reason\": \"Store is closed\"\n}\n```"},"examples":{"Result":{"value":{"reason":"Store is closed"}}}}}}},"deprecated":false,"x-readme":{"explorer-enabled":false,"code-samples":[{"language":"json","name":"Sample Validate Request","code":"{\n  \"validationId\": \"68********************e8\",\n  \"callbackUrl\": \"https://api.deliverect.com/orderValidation/68********************e8\",\n  \"_id\": \"62********************7c\",\n  \"account\": \"61********************a1\",\n  \"location\": \"61********************b4\",\n  \"channelLink\": \"61********************c3\",\n  \"posLocationId\": \"\",\n  \"orderType\": 2,\n  \"orderIsAlreadyPaid\": true,\n  \"items\": [\n    {\n      \"_id\": \"68********************3c\",\n      \"plu\": \"P-BRGR\",\n      \"name\": \"Burger Combo (Drink not Included)\",\n      \"price\": 500,\n      \"quantity\": 1,\n      \"productType\": 1,\n      \"subItems\": [\n        {\n          \"plu\": \"DRK-01\",\n          \"name\": \"Diet Soda\",\n          \"price\": 100,\n          \"quantity\": 1,\n          \"productType\": 1,\n          \"subItems\": []\n        }\n      ]\n    },\n    {\n      \"_id\": \"68c2a1b0f1e2d3a4b5c6d7f1\",\n      \"plu\": \"FRIES-001\",\n      \"name\": \"Large Fries\",\n      \"price\": 349,\n      \"quantity\": 1,\n      \"productType\": 1,\n      \"subItems\": []\n    }\n  ],\n  \"taxTotal\": 124,\n  \"payment\": {\n    \"amount\": 1073,\n    \"type\": 0\n  },\n  \"decimalDigits\": 2\n}","correspondingExample":"validateRequest"}]},"security":[]}},"https://yourwebhook.com/sync_products":{"get":{"tags":["Webhooks"],"summary":"Sync Products","operationId":"pos_syncproducts","parameters":[{"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, in the format `Deliverect/{version}`.","schema":{"type":"string"}},{"name":"X-Server-Authorization-HMAC-SHA256","in":"header","required":true,"description":"Signature generated with your shared secret (GET requests have no body); recompute it on receipt to verify the request came from Deliverect (see <a href=\"https://developers.deliverect.com/reference/hmac-authentication\" target=\"_blank\" rel=\"noopener noreferrer\">HMAC authentication guide</a>).","schema":{"type":"string"}}],"responses":{"200":{"description":"Synchronous: respond with the complete product data set."},"204":{"description":"Asynchronous: respond with an empty `204`, then send products via Insert Products."},"400":{"description":"400","content":{"application/json":{"examples":{"Result":{"value":"{\n    \"error\": \"Product Sync aborted: Too many products 17 would be deleted.\\nThis may affect your menus and is irreversible. If you still want to proceed, please use the \\\"Force Sync\\\" option.\"\n}"}},"schema":{"type":"object","properties":{"error":{"type":"string","example":"Product Sync aborted: Too many products 17 would be deleted.\nThis may affect your menus and is irreversible. If you still want to proceed, please use the \"Force Sync\" option."}}}}}}},"deprecated":false,"x-readme":{"explorer-enabled":false},"security":[]}},"https://yourwebhook.com/sync_tables":{"get":{"tags":["Webhooks"],"summary":"Sync Tables","operationId":"pos_tables_locationid","parameters":[{"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, in the format `Deliverect/{version}`.","schema":{"type":"string"}},{"name":"X-Server-Authorization-HMAC-SHA256","in":"header","required":true,"description":"Signature generated with your shared secret (GET requests have no body); recompute it on receipt to verify the request came from Deliverect (see <a href=\"https://developers.deliverect.com/reference/hmac-authentication\" target=\"_blank\" rel=\"noopener noreferrer\">HMAC authentication guide</a>).","schema":{"type":"string"}}],"responses":{"200":{"description":"Return the tables configured in the POS.","content":{"application/json":{"schema":{"type":"object","properties":{"tables":{"type":"array","description":"List of table objects returned in the response.","items":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier for the table or service location."},"name":{"type":"string","description":"Display name of the table or service location."},"floorId":{"type":"string","description":"Identifier of the floor the table belongs to."},"seats":{"type":"integer","description":"Number of seats available at the table."}}}}},"description":"```json Example Response\n{\n  \"tables\": [\n    {\n      \"id\": \"BS1\",\n      \"name\": \"Bar seat #1\",\n      \"floorId\": \"B1\",\n      \"seats\": 1\n    },\n    {\n      \"id\": \"BS2\",\n      \"name\": \"Bar seat #2\",\n      \"floorId\": \"B1\",\n      \"seats\": 1\n    },\n    {\n      \"id\": \"BS3\",\n      \"name\": \"Bar seat #3\",\n      \"floorId\": \"B1\",\n      \"seats\": 1\n    },\n    {\n      \"id\": \"T1\",\n      \"name\": \"Table #1\",\n      \"floorId\": \"R1\",\n      \"seats\": 6\n    },\n    {\n      \"id\": \"T2\",\n      \"name\": \"Table #2\",\n      \"floorId\": \"R1\",\n      \"seats\": 8\n    },\n    {\n      \"id\": \"DLVY\",\n      \"name\": \"delivery\"\n    }\n  ]\n}\n```"},"examples":{"Result":{"value":{"tables":[{"id":"BS1","name":"Bar seat #1","floorId":"B1","seats":1},{"id":"BS2","name":"Bar seat #2","floorId":"B1","seats":1},{"id":"BS3","name":"Bar seat #3","floorId":"B1","seats":1},{"id":"T1","name":"Table #1","floorId":"R1","seats":6},{"id":"T2","name":"Table #2","floorId":"R1","seats":8},{"id":"DLVY","name":"delivery"}]}}}}}}},"deprecated":false,"x-readme":{"explorer-enabled":false},"security":[]}},"https://yourwebhook.com/sync_floors":{"get":{"tags":["Webhooks"],"summary":"Sync Floors","operationId":"pos_floors_locationid","parameters":[{"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, in the format `Deliverect/{version}`.","schema":{"type":"string"}},{"name":"X-Server-Authorization-HMAC-SHA256","in":"header","required":true,"description":"Signature generated with your shared secret (GET requests have no body); recompute it on receipt to verify the request came from Deliverect (see <a href=\"https://developers.deliverect.com/reference/hmac-authentication\" target=\"_blank\" rel=\"noopener noreferrer\">HMAC authentication guide</a>).","schema":{"type":"string"}}],"responses":{"200":{"description":"Return the floors configured in the POS.","content":{"application/json":{"schema":{"type":"object","properties":{"floors":{"type":"array","description":"List of floor objects returned in the response.","items":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier for the floor."},"name":{"type":"string","description":"Display name of the floor."},"description":{"type":"string","description":"Short description of the floor."},"capacity":{"type":"integer","description":"Maximum number of people the floor can accommodate."}}}}},"description":"```json 200 OK\n{\n  \"floors\": [\n    {\n      \"id\": \"B1\",\n      \"name\": \"Bar\",\n      \"description\": \"Bar floor\",\n      \"capacity\": 60\n    },\n    {\n      \"id\": \"R1\",\n      \"name\": \"Restaurant\",\n      \"description\": \"Restaurant floor\",\n      \"capacity\": 75\n    }\n  ]\n}\n```"},"examples":{"OK":{"summary":"OK","value":{"floors":[{"id":"B1","name":"Bar","description":"Bar floor","capacity":60},{"id":"R1","name":"Restaurant","description":"Restaurant floor","capacity":75}]}}}}}}},"deprecated":false,"x-readme":{"explorer-enabled":false},"security":[]}},"https://yourwebhook.com/product_sync_callback":{"post":{"tags":["Webhooks"],"summary":"Product Update Callback (async)","operationId":"pos_api_product_sync_callback","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, in the format `Deliverect/{version}`.","schema":{"type":"string"}},{"name":"X-Server-Authorization-HMAC-SHA256","in":"header","required":true,"description":"Signature of the raw request body using your shared secret; recompute it on receipt to verify the request came from Deliverect (see <a href=\"https://developers.deliverect.com/reference/hmac-authentication\" target=\"_blank\" rel=\"noopener noreferrer\">HMAC authentication guide</a>).","schema":{"type":"string"}}],"requestBody":{"required":true,"description":"Sent by Deliverect as a JSON payload.","content":{"application/json":{"schema":{"type":"object","properties":{"operationReportId":{"type":"string","description":"Unique identifier of the product update operation."},"products":{"type":"object","description":"Summary of products synced.","properties":{"inserted":{"type":"integer","description":"Number of products inserted."},"updated":{"type":"integer","description":"Number of products updated."},"deleted":{"type":"integer","description":"Number of products deleted."},"ignored":{"type":"integer","description":"Number of products ignored."}}},"modifiers":{"type":"object","description":"Summary of modifiers synced.","properties":{"inserted":{"type":"integer","description":"Number of modifiers inserted."},"updated":{"type":"integer","description":"Number of modifiers updated."},"deleted":{"type":"integer","description":"Number of modifiers deleted."},"ignored":{"type":"integer","description":"Number of modifiers ignored."}}},"modifierGroups":{"type":"object","description":"Summary of modifier groups synced.","properties":{"inserted":{"type":"integer","description":"Number of modifier groups inserted."},"updated":{"type":"integer","description":"Number of modifier groups updated."},"deleted":{"type":"integer","description":"Number of modifier groups deleted."},"ignored":{"type":"integer","description":"Number of modifier groups ignored."}}},"bundles":{"type":"object","description":"Summary of bundles synced.","properties":{"inserted":{"type":"integer","description":"Number of bundles inserted."},"updated":{"type":"integer","description":"Number of bundles updated."},"deleted":{"type":"integer","description":"Number of bundles deleted."},"ignored":{"type":"integer","description":"Number of bundles ignored."}}},"priceLevels":{"type":"integer","description":"Number of price levels synced."},"warnings":{"type":"integer","description":"Number of warnings raised during the update."},"errors":{"type":"integer","description":"Number of errors raised during the update."}}},"examples":{"asyncResponse":{"summary":"Async Response","value":{"operationReportId":"507f****************9011","products":{"inserted":1,"updated":0,"deleted":0,"ignored":0},"modifiers":{"inserted":6,"updated":0,"deleted":0,"ignored":0},"modifierGroups":{"inserted":2,"updated":0,"deleted":0,"ignored":0},"bundles":{"inserted":0,"updated":0,"deleted":0,"ignored":0},"priceLevels":0,"warnings":0,"errors":0}}}}}},"responses":{"200":{"description":"Return a `2xx` status to acknowledge receipt."}},"deprecated":false,"x-readme":{"explorer-enabled":false,"code-samples":[{"language":"json","name":"Async Response","code":"{\n  \"operationReportId\": \"507f****************9011\",\n  \"products\": {\n    \"inserted\": 1,\n    \"updated\": 0,\n    \"deleted\": 0,\n    \"ignored\": 0\n  },\n  \"modifiers\": {\n    \"inserted\": 6,\n    \"updated\": 0,\n    \"deleted\": 0,\n    \"ignored\": 0\n  },\n  \"modifierGroups\": {\n    \"inserted\": 2,\n    \"updated\": 0,\n    \"deleted\": 0,\n    \"ignored\": 0\n  },\n  \"bundles\": {\n    \"inserted\": 0,\n    \"updated\": 0,\n    \"deleted\": 0,\n    \"ignored\": 0\n  },\n  \"priceLevels\": 0,\n  \"warnings\": 0,\n  \"errors\": 0\n}","correspondingExample":"asyncResponse"}]},"security":[]}},"https://yourwebhook.com/tax_calculation":{"post":{"tags":["Webhooks"],"summary":"Tax Calculation","operationId":"tax-calculation","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, in the format `Deliverect/{version}`.","schema":{"type":"string"}},{"name":"X-Server-Authorization-HMAC-SHA256","in":"header","required":true,"description":"Signature of the raw request body using your shared secret; recompute it on receipt to verify the request came from Deliverect (see <a href=\"https://developers.deliverect.com/reference/hmac-authentication\" target=\"_blank\" rel=\"noopener noreferrer\">HMAC authentication guide</a>).","schema":{"type":"string"}}],"requestBody":{"required":true,"description":"Sent by Deliverect as a JSON payload.","content":{"application/json":{"schema":{"type":"object","properties":{"_created":{"type":"string","format":"date-time","description":"Time the order was created in Deliverect, in the format `yyyy-MM-ddTHH:mm:ss.SSSSSSZ`."},"_updated":{"type":"string","format":"date-time","description":"Time the order was last updated in Deliverect, in the format `yyyy-MM-ddTHH:mm:ss.SSSSSSZ`."},"_id":{"type":"string","description":"Unique identifier of the order in Deliverect. Please note cancel requests are processed as new orders with `\"status\": 100` and bearing original order `_id` (see cancellation guide [here](https://developers.deliverect.com/v1.1-restaurants/docs/how-to-handle-cancellations))."},"account":{"type":"string","description":"Unique customer account ID in Deliverect."},"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."},"channelOrderDisplayId":{"type":"string","description":"Alternative order ID set by ordering channel, primarily for convenience and readability. This is not unique and typically a shortened version of `channelOrderId` consisting of 4-5 alphanumeric characters, although may go up to 12 characters."},"posId":{"type":"string","description":"The POS order ID."},"posReceiptId":{"type":"string","description":"Provided by the POS in response to incoming orders as a reference to a specific POS receipt."},"posLocationId":{"type":"string","description":"<Glossary>posLocationId</Glossary> is an identifier of the location known on the POS side, it is stored within the POS config in Deliverect."},"location":{"type":"string","description":"<Glossary>locationId</Glossary> is the unique ID for the POS to identify the store location."},"channelLink":{"type":"string","description":"<Glossary>channelLinkId</Glossary> is the unique identifier of the channel (merchant store) in Deliverect. Retrieve all IDs per account via [GET Channel Links](https://developers.deliverect.com/v1.1-restaurants/reference/channel-integrators)."},"status":{"type":"integer","description":"Current order status (see all <a href=\"https://developers.deliverect.com/page/order-status\" target=\"_blank\" rel=\"noopener noreferrer\">Order statuses here</a>)."},"statusHistory":{"type":"array","description":"All status changes of the order up to the point the webhook is sent.","items":{"type":"object","properties":{"timeStamp":{"type":"string","format":"date-time","description":"Time of the status change, in the format `yyyy-MM-ddTHH:mm:ss.SSSSSSZ`."},"status":{"type":"integer","description":"Order status (see all <a href=\"https://developers.deliverect.com/page/order-status\" target=\"_blank\" rel=\"noopener noreferrer\">Order statuses here</a>)."},"response":{"type":"string","description":"In case of error, it will be populated here."},"source":{"type":"integer","description":"Source of status update `1` = POS, `2` = Channel and `5` = Internal."}}}},"packaging":{"type":"object","description":"Order-level packaging preferences.","properties":{"includeCutlery":{"type":"boolean","description":"Specifies if cutlery/utensils should be included or not."}}},"by":{"type":"string","description":"Order source (if known) e.g. `app` or `mobile`, not the same as `channel` that specifies the ordering platform (see guide [here](https://developers.deliverect.com/v1.1-restaurants/docs/how-to-recieve-orders))."},"orderType":{"type":"integer","description":"Type of order.\n\n- Pickup: `1`\n- Delivery: `2`\n- Eat in: `3`\n- Curbside: `4`\n- Drive thru: `5`","enum":[1,2,3,4,5]},"channel":{"type":"integer","description":"Unique ID of the channel (see [GET Integrated channels](https://developers.deliverect.com/v1.1-restaurants/reference/channel-integrators))."},"pos":{"type":"integer","description":"Unique ID of the POS."},"rating":{"type":"array","description":"Legacy attribute, not to be referenced as part of an integration.","items":{"type":"object","additionalProperties":true},"deprecated":true},"pickupTime":{"type":"string","format":"date-time","description":"Time the order is due to be picked up, in the format `yyyy-MM-ddTHH:mm:ss.SSSSSSZ`."},"deliveryTime":{"type":"string","format":"date-time","description":"Time the order is due to be delivered, in the format `yyyy-MM-ddTHH:mm:ss.SSSSSSZ`."},"deliveryIsAsap":{"type":"boolean","description":"Signifies if the order is required as soon as possible."},"courier":{"type":"object","description":"Details of courier.","properties":{"firstName":{"type":"string","description":"Courier's first name."},"lastName":{"type":"string","description":"Courier's last name."},"phoneNumber":{"type":"string","description":"Courier's phone number."},"deliveryBy":{"type":"string","description":"Name of the party fulfilling the delivery."}}},"courierUpdateHistory":{"type":"array","description":"History of every courier update received for the order.","items":{"type":"object","properties":{"status":{"type":"integer","description":"Courier status (see all <a href=\"https://developers.deliverect.com/page/order-status#courier-statuses\" target=\"_blank\" rel=\"noopener noreferrer\">Courier statuses here</a>)."},"received":{"type":"string","format":"date-time","description":"Time the courier update was received, in the format `yyyy-MM-ddTHH:mm:ss.SSSSSSZ`."},"courier":{"type":"object","additionalProperties":true,"description":"Courier info updates."},"arrivalTime":{"type":"string","format":"date-time","description":"Courier arrival time, in the format `yyyy-MM-ddTHH:mm:ss.SSSSSSZ`."},"deliveryTime":{"type":"string","format":"date-time","description":"Courier delivery time, in the format `yyyy-MM-ddTHH:mm:ss.SSSSSSZ`."},"source":{"type":"integer","description":"The source from where the update is coming: `1` = POS, `2` = Channel, `3` = DMA, `4` = Driver, `5` = Internal, `6` = Delivery System, `7` = Manual, `8` = KDS, `9` = Bill to Order Status."}}}},"customer":{"type":"object","description":"Customer is the end-consumer.","properties":{"name":{"type":"string","description":"Name of the customer."},"companyName":{"type":"string","description":"Company name."},"phoneNumber":{"type":"string","description":"Customer phone number, e.g. `+31618776767`."},"phoneAccessCode":{"type":"string","description":"Phone access code used to contact channel support (e.g. `1123`)."},"email":{"type":"string","description":"Email address, where provided."},"note":{"type":"string","description":"Note from the customer (e.g. \"Call once you arrive\")."},"tin":{"type":"string","description":"Tax identification number."}}},"deliveryAddress":{"type":"object","description":"Provided address for an order.","properties":{"street":{"type":"string","description":"This includes the street number where provided, e.g. `Stationsstraat 79e`."},"postalCode":{"type":"string","description":"Postal code, e.g. `3811 MH`."},"area":{"type":"string","description":"Area or district, where provided."},"city":{"type":"string","description":"City, e.g. `Amersfoort`."},"country":{"type":"string","description":"Country, e.g. `Netherlands`."},"source":{"type":"string","description":"Sent to the POS where address information exists, to help handle address variations from different countries."},"extraAddressInfo":{"type":"string","description":"Additional address information, e.g. `second floor`."},"coordinates":{"type":"object","description":"Geographic position of the address.","properties":{"coordinates":{"type":"array","description":"Coordinates as `[longitude, latitude]`.","items":{"type":"number"}}}}}},"orderIsAlreadyPaid":{"type":"boolean","description":"Statement of whether an order was paid online or not."},"taxes":{"type":"array","description":"All taxes applied to an order (in tax exclusive regions only).","items":{"type":"object","properties":{"name":{"type":"string","description":"Tax name, e.g. `VAT`."},"taxClassId":{"type":"integer","description":"Tax class ID, e.g. `0`, `1` or `2`."},"total":{"type":"integer","description":"The composite total of all taxes. It will be sent as an integer with 2 decimal digits e.g. 1 euro would be sent as 100."}}}},"payment":{"type":"object","description":"Payment details.","properties":{"amount":{"type":"integer","description":"Total amount tendered. It will be sent as an integer with 2 decimal digits e.g. 1 euro would be sent as 100."},"type":{"type":"integer","description":"Payment method applied (see full list [here](https://developers.deliverect.com/page/pos-payments-taxes-discount-other-charges))."},"due":{"type":"integer","description":"Any outstanding amount to be collected from the customer if there is a cash (unpaid) order. It will be sent as an integer with 2 decimal digits e.g. 1 euro would be sent as 100."},"rebate":{"type":"integer","description":"Any discounts offered by the channel. The ordering customer pays the amount without the rebate, but the restaurant receives the total amount from the channel. It will be sent as an integer with 2 decimal digits e.g. 1 euro would be sent as 100."},"commissionType":{"type":"string","description":"The type of commission rate charged, as categorised by the channel."}}},"note":{"type":"string","description":"Overall note for an order."},"items":{"type":"array","description":"All the items included in an order.","items":{"type":"object","properties":{"_id":{"type":"string","description":"Unique identifier of the item line within the order."},"plu":{"type":"string","description":"Unique reference for the product."},"name":{"type":"string","description":"The name of the product or modifier."},"sortOrder":{"type":"integer","description":"The 'stepped' order of any auto-applied items, where `0` is the first item to be listed (see guide [here](https://developers.deliverect.com/page/product-configuration#auto-apply))."},"price":{"type":"integer","description":"Price set for the product or modifier. It will be sent as an integer with 2 decimal digits e.g. 1 euro would be sent as 100."},"quantity":{"type":"number","description":"Quantity of item ordered, for subItems quantity, see guide [here](https://developers.deliverect.com/docs/how-to-interpret-modifiers-and-the-quantity-ordered)."},"productType":{"type":"integer","description":"Specific type of item (see full list [here](https://developers.deliverect.com/reference/insertupdate-products-and-categories#product-types))."},"remark":{"type":"string","description":"A note specific to an individual item."},"isCombo":{"type":"boolean","description":"Indicates a product sold is part of a combo."},"inBundle":{"type":"boolean","description":"Indicates the item is contained inside a bundle."},"categoryInfo":{"type":"object","additionalProperties":true,"description":"Category metadata for the item, where available."},"subItems":{"type":"array","description":"All subitems are items associated with the product ordered. The quantity is multiplied by however many top-level items are ordered (see guide [here](https://developers.deliverect.com/docs/how-to-interpret-modifiers-and-the-quantity-ordered)).","items":{"type":"object","properties":{"_id":{"type":"string","description":"Unique identifier of the item line within the order."},"plu":{"type":"string","description":"Unique reference for the product."},"name":{"type":"string","description":"The name of the product or modifier."},"sortOrder":{"type":"integer","description":"The 'stepped' order of any auto-applied items, where `0` is the first item to be listed (see guide [here](https://developers.deliverect.com/page/product-configuration#auto-apply))."},"price":{"type":"integer","description":"Price set for the product or modifier. It will be sent as an integer with 2 decimal digits e.g. 1 euro would be sent as 100."},"quantity":{"type":"number","description":"Quantity of item ordered, for subItems quantity, see guide [here](https://developers.deliverect.com/docs/how-to-interpret-modifiers-and-the-quantity-ordered)."},"productType":{"type":"integer","description":"Specific type of item (see full list [here](https://developers.deliverect.com/reference/insertupdate-products-and-categories#product-types))."},"remark":{"type":"string","description":"A note specific to an individual item."},"isCombo":{"type":"boolean","description":"Indicates a product sold is part of a combo."},"inBundle":{"type":"boolean","description":"Indicates the item is contained inside a bundle."},"categoryInfo":{"type":"object","additionalProperties":true,"description":"Category metadata for the item, where available."},"subItems":{"type":"array","description":"Nested sub-items, following the same structure.","items":{"type":"object","additionalProperties":true}},"packaging":{"type":"object","description":"Per-item packaging details.","properties":{"count":{"type":"integer","description":"Number of packages used for the item."},"reusable":{"type":"boolean","description":"`true` when reusable packaging is used."},"packedItems":{"type":"integer","description":"Number of items packed."}}},"productTags":{"type":"array","description":"Indicates [the tags](https://developers.deliverect.com/page/custom-tags-and-allergens) contained inside a product.","items":{"type":"integer"}}}}},"packaging":{"type":"object","description":"Per-item packaging details.","properties":{"count":{"type":"integer","description":"Number of packages used for the item."},"reusable":{"type":"boolean","description":"`true` when reusable packaging is used."},"packedItems":{"type":"integer","description":"Number of items packed."}}},"productTags":{"type":"array","description":"Indicates [the tags](https://developers.deliverect.com/page/custom-tags-and-allergens) contained inside a product.","items":{"type":"integer"}},"discountReferenceId":{"type":"integer","description":"Singular discount reference, appears alongside `discountReferenceIds`."},"discountReferenceIds":{"type":"array","description":"An array of identifiers for each discount applied to an item (see guide [here](https://developers.deliverect.com/docs/how-are-discounts-sent)).","items":{"type":"integer"}}}}},"decimalDigits":{"type":"integer","description":"Decimal precision of order and payment amounts."},"numberOfCustomers":{"type":"integer","description":"Indicates how many diners (applicable to table ordering)."},"channelOrderRawId":{"type":"string","description":"Deliverect internal ID of an order."},"channelOrderHistoryRawIds":{"type":"array","description":"Legacy attribute, not to be referenced as part of an integration.","items":{"type":"string"},"deprecated":true},"serviceCharge":{"type":"integer","description":"Service charge applied. It will be sent as an integer with 2 decimal digits e.g. 1 euro would be sent as 100."},"deliveryCost":{"type":"integer","description":"Delivery cost applied. It will be sent as an integer with 2 decimal digits e.g. 1 euro would be sent as 100."},"bagFee":{"type":"integer","description":"A surcharge applied for the packaging. It will be sent as an integer with 2 decimal digits e.g. 1 euro would be sent as 100."},"tip":{"type":"integer","description":"A tip intended for the restaurant operator. It will be sent as an integer with 2 decimal digits e.g. 1 euro would be sent as 100."},"driverTip":{"type":"integer","description":"A tip intended for the driver/courier. It will be sent as an integer with 2 decimal digits e.g. 1 euro would be sent as 100."},"smallOrderFee":{"type":"integer","description":"A surcharge applied by channels who impose minimum basket fees. It will be sent as an integer with 2 decimal digits e.g. 1 euro would be sent as 100."},"discountTotal":{"type":"integer","description":"Ordering platforms may offer multiple forms of discount e.g. % discount. A discount total is sent as a minus value representing the deduction from the total order (see guide [here](https://developers.deliverect.com/docs/how-are-discounts-sent)). It will be sent as an integer with 2 decimal digits e.g. 1 euro would be sent as 100."},"discounts":{"type":"array","description":"All applied discounts within an order.","items":{"type":"object","properties":{"type":{"type":"string","description":"Mapped channel discount type from the [list of Discount Types in Deliverect](https://developers.deliverect.com/page/list-of-discount-types)."},"provider":{"type":"string","description":"The issuer of the discount, i.e. the one who bears the discounted amount (see [list of provider types in Deliverect](https://developers.deliverect.com/page/discount-provider-type))."},"name":{"type":"string","description":"The name of the discount."},"channelDiscountCode":{"type":"string","description":"The unique discount code used by the channel."},"referenceId":{"type":"integer","description":"A unique identifier of the discount, where applicable, this will show against items included in the discount."},"value":{"type":"integer","description":"The flat amount of money or percentage covered by the discount, stored with precision 2, so $1.50 -> `150`, 25.1% -> `2510`."},"amount":{"type":"integer","description":"Actual amount discounted, e.g. 10% off on a $50 bill, the `value` will be `1000` and `amount` will be `500`. It will be sent as an integer with 2 decimal digits e.g. 1 euro would be sent as 100."},"amountRestaurant":{"type":"integer","description":"The amount of the restaurant's contribution to the discount. It will be sent as an integer with 2 decimal digits e.g. 1 euro would be sent as 100."},"amountChannel":{"type":"integer","description":"The amount of the channel's contribution to the discount. It will be sent as an integer with 2 decimal digits e.g. 1 euro would be sent as 100."}}}},"capacityUsages":{"type":"array","description":"Legacy attribute, not to be referenced as part of an integration.","items":{"type":"object","additionalProperties":true},"deprecated":true},"recent":{"type":"boolean","description":"Legacy attribute, not to be referenced as part of an integration.","deprecated":true},"resolvedBy":{"type":"string","description":"Legacy attribute, not to be referenced as part of an integration.","deprecated":true},"brandId":{"type":"string","description":"Appears where the customer operates multiple brands from one location (see [Get account brands](https://developers.deliverect.com/reference/get-accounts-brands))."},"testOrder":{"type":"boolean","description":"Only applicable as `true` in staging environment via menu preview orders."},"timezone":{"type":"string","description":"Timezone of the location, e.g. `Europe/London` (see TZ [list here](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones))."},"date":{"type":"integer","description":"Order created date in format `YMD`."},"tags":{"type":"array","description":"Custom tag(s) applied to the store location, typically a brand name, e.g. `[\"Best Burger\"]`.","items":{"type":"string"}},"taxTotal":{"type":"integer","description":"Sum of `deliveryTax` + `serviceChargeTax` + `deliveryCostTax`. It will be sent as an integer with 2 decimal digits e.g. 1 euro would be sent as 100."},"taxRemitted":{"type":"integer","description":"Some ordering platforms collect and pay taxes and share this info as a value-remitted tax. It will be sent as an integer with 2 decimal digits e.g. 1 euro would be sent as 100."},"table":{"type":"string","description":"With 'Eat-in' orders (`\"orderType\": 3`) a table identifier can be sent (see more details [here](https://developers.deliverect.com/page/pos-direct-table-ordering))."}},"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\n    Please note any <span class=\"deprecated-label\">Deprecated</span> parameters should be ignored\n  </p>\n</div>"},"examples":{"taxCalculationExample":{"summary":"Tax Calculation Example","value":{"_created":"yyyy-MM-ddTHH:mm:ss.SSSSSSZ","_updated":"yyyy-MM-ddTHH:mm:ss.SSSSSSZ","_id":"62********************7c","account":"61********************a1","channelOrderId":"TEST******4206","channelOrderDisplayId":"T**4206","posId":"","posReceiptId":"","posLocationId":"","location":"62********************3r","channelLink":"67********************59","status":4,"statusHistory":[],"packaging":{"includeCutlery":false},"by":"","orderType":1,"channel":20003,"pos":0,"rating":[],"pickupTime":"yyyy-MM-ddTHH:mm:ss.SSSSSSZ","deliveryIsAsap":false,"courier":{"deliveryBy":"restaurant"},"customer":{"name":"","companyName":"","phoneNumber":"","email":"","note":"","tin":""},"deliveryAddress":{},"orderIsAlreadyPaid":false,"taxes":[{"name":"GST","total":465}],"taxTotal":466,"taxRemitted":0,"payment":{"amount":3811,"type":9,"due":0,"rebate":0},"note":"","items":[{"_id":"68********************3c","plu":"11309003-1","name":"Chicken Crunchers","sortOrder":0,"price":1550,"quantity":2,"productType":1,"categoryInfo":{},"subItems":[{"_id":"68********************3c","plu":"P-GHRK","name":"Extra Gherkin","sortOrder":0,"price":50,"quantity":2,"productType":1,"subItems":[],"productTags":[]}],"packaging":{"includeCutlery":false},"discountReferenceIds":[]}],"decimalDigits":2,"numberOfCustomers":0,"channelOrderHistoryRawIds":[],"serviceCharge":93,"deliveryCost":0,"bagFee":152,"tip":0,"driverTip":0,"smallOrderFee":0,"discountTotal":0,"discounts":[],"capacityUsages":[],"recent":false,"resolvedBy":""}}}}}},"responses":{"200":{"description":"Return the calculated taxes.","content":{"application/json":{"schema":{"type":"object","properties":{"taxes":{"type":"array","description":"Each entry represents a tax applied to the ordered items.","items":{"type":"object","properties":{"name":{"type":"string","description":"Human-readable name of the applied tax."},"taxClassId":{"type":"integer","description":"Unique identifier for the tax in the POS system."},"total":{"type":"integer","description":"Amount of tax payable for the specified tax, expressed as an integer with 2 decimal digits e.g. 1 dollar would be sent as 100."}}}}},"description":"```json Example Response\n{\n  \"taxes\": [\n    {\n      \"name\": \"tax-name\",\n      \"taxClassId\": 123,\n      \"total\": 100\n    }\n  ]\n}\n```"},"examples":{"Result":{"value":{"taxes":[{"name":"tax-name","taxClassId":123,"total":100}]}}}}}}},"deprecated":false,"x-readme":{"explorer-enabled":false,"code-samples":[{"language":"json","name":"Tax Calculation Example","code":"{\n  \"_created\": \"yyyy-MM-ddTHH:mm:ss.SSSSSSZ\",\n  \"_updated\": \"yyyy-MM-ddTHH:mm:ss.SSSSSSZ\",\n  \"_id\": \"62********************7c\",\n  \"account\": \"61********************a1\",\n  \"channelOrderId\": \"TEST******4206\",\n  \"channelOrderDisplayId\": \"T**4206\",\n  \"posId\": \"\",\n  \"posReceiptId\": \"\",\n  \"posLocationId\": \"\",\n  \"location\": \"62********************3r\",\n  \"channelLink\": \"67********************59\",\n  \"status\": 4,\n  \"statusHistory\": [],\n  \"packaging\": {\n    \"includeCutlery\": false\n  },\n  \"by\": \"\",\n  \"orderType\": 1,\n  \"channel\": 20003,\n  \"pos\": 0,\n  \"rating\": [],\n  \"pickupTime\": \"yyyy-MM-ddTHH:mm:ss.SSSSSSZ\",\n  \"deliveryIsAsap\": false,\n  \"courier\": {\n    \"deliveryBy\": \"restaurant\"\n  },\n  \"customer\": {\n    \"name\": \"\",\n    \"companyName\": \"\",\n    \"phoneNumber\": \"\",\n    \"email\": \"\",\n    \"note\": \"\",\n    \"tin\": \"\"\n  },\n  \"deliveryAddress\": {},\n  \"orderIsAlreadyPaid\": false,\n  \"taxes\": [\n    {\n      \"name\": \"GST\",\n      \"total\": 465\n    }\n  ],\n  \"taxTotal\": 466,\n  \"taxRemitted\": 0,\n  \"payment\": {\n    \"amount\": 3811,\n    \"type\": 9,\n    \"due\": 0,\n    \"rebate\": 0\n  },\n  \"note\": \"\",\n  \"items\": [\n    {\n      \"_id\": \"68********************3c\",\n      \"plu\": \"11309003-1\",\n      \"name\": \"Chicken Crunchers\",\n      \"sortOrder\": 0,\n      \"price\": 1550,\n      \"quantity\": 2,\n      \"productType\": 1,\n      \"categoryInfo\": {},\n      \"subItems\": [\n        {\n          \"_id\": \"68********************3c\",\n          \"plu\": \"P-GHRK\",\n          \"name\": \"Extra Gherkin\",\n          \"sortOrder\": 0,\n          \"price\": 50,\n          \"quantity\": 2,\n          \"productType\": 1,\n          \"subItems\": [],\n          \"productTags\": []\n        }\n      ],\n      \"packaging\": {\n        \"includeCutlery\": false\n      },\n      \"discountReferenceIds\": []\n    }\n  ],\n  \"decimalDigits\": 2,\n  \"numberOfCustomers\": 0,\n  \"channelOrderHistoryRawIds\": [],\n  \"serviceCharge\": 93,\n  \"deliveryCost\": 0,\n  \"bagFee\": 152,\n  \"tip\": 0,\n  \"driverTip\": 0,\n  \"smallOrderFee\": 0,\n  \"discountTotal\": 0,\n  \"discounts\": [],\n  \"capacityUsages\": [],\n  \"recent\": false,\n  \"resolvedBy\": \"\"\n}","correspondingExample":"taxCalculationExample"}]},"security":[]}}}}