{"info":{"_postman_id":"ec7259bd-82f3-4a09-a170-39a4e647fd84","name":"Foodstack Public API","description":"<html><head></head><body><p>Foodstack allows restaurants to directly connect channels like Careem, Hungerstation, Jahez, Kaffeen and others with their POS system. More info on features and platforms supported on <a href=\"https://xyz.dev/\">https://xyz.dev/</a></p>\n<p>This API can be used to integrate additional channels or POS systems to Foodstack services.</p>\n<p>Contact us at <a href=\"mailto:integrations@xyz.dev\">integrations@xyz.dev</a> for a test account.  </p>\n<hr>\n<p>For any webhooks that we call, you can use whitelisting. The prefered way is to whitelist our domains, since that allows us to add/change IPs without impacting you. But currently these are the IPs we use</p>\n<p>Production:</p>\n<p>You will be sending data to this IP<br>Incoming: XXX.XXX.XXX.XXX<br>Your endpoint will receive calls from these IP's<br>Outgoing: XXX.XXX.XXX.XXX, XXX.XXX.XXX.XXX, XXX.XXX.XXX.XXX</p>\n<p>Staging:<br>Incoming: XXX.XXX.XXX.XXX\nOutgoing: XXX.XXX.XXX.XXX</p>\n<hr>\n</body></html>","schema":"https://schema.getpostman.com/json/collection/v2.0.0/collection.json","toc":[],"owner":"13238301","collectionId":"ec7259bd-82f3-4a09-a170-39a4e647fd84","publishedId":"TVYGawhL","public":true,"customColor":{"top-bar":"F0F0F0","right-sidebar":"303030","highlight":"692269"},"publishDate":"2020-10-26T13:59:32.000Z"},"item":[{"name":"Authentication","item":[{"name":"OAuth 2.0","event":[{"listen":"test","script":{"id":"f7242138-85ee-4fc0-ab11-de8926f1015e","exec":["var jsonData = pm.response.json();","","pm.environment.set(\"integratorToken\", jsonData.access_token);"],"type":"text/javascript"}}],"id":"e6c7e6d5-48a0-4f47-83d9-2a87217b85ae","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"noauth","isInherited":false},"method":"POST","header":[{"key":"content-type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n\t\"client_id\":\"{{clientId}}\",\n\t\"client_secret\":\"{{clientSecret}}\",\n\t\"audience\":\"https://api.foodstack.brain.io\",\n\t\"grant_type\":\"client_credentials\"\n}"},"url":"http://api.brain.io/oauth/token","urlObject":{"path":["token"],"host":["http://api.brain.io/oauth"],"query":[],"variable":[]}},"response":[{"id":"346366d1-aa4d-4f0e-a06c-13f54638859a","name":"200","originalRequest":{"method":"POST","header":[{"key":"content-type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n\t\"client_id\":\"{{clientId}}\",\n\t\"client_secret\":\"{{clientSecret}}\",\n\t\"audience\":\"https://api.foodstack.brain.io\",\n\t\"grant_type\":\"client_credentials\"\n}"},"url":"https://api.staging.foodstack.brain.io/oauth/token"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Date","value":"Wed, 20 Feb 2019 13:18:00 GMT"},{"key":"Content-Type","value":"application/json"},{"key":"Content-Length","value":"828"},{"key":"Connection","value":"keep-alive"},{"key":"X-Auth0-RequestId","value":"521b1266bf81fec2fb6b"},{"key":"X-RateLimit-Limit","value":"30"},{"key":"X-RateLimit-Remaining","value":"29"},{"key":"X-RateLimit-Reset","value":"1550668681"},{"key":"Cache-Control","value":"private, no-store, no-cache, must-revalidate, post-check=0, pre-check=0"},{"key":"Pragma","value":"no-cache"},{"key":"Strict-Transport-Security","value":"max-age=15724800"},{"key":"X-Robots-Tag","value":"noindex, nofollow, nosnippet, noarchive"}],"cookie":[],"responseTime":null,"body":"{\n    \"access_token\": \"ey**-**-Q\",\n    \"expires_in\": 86400,\n    \"token_type\": \"Bearer\"\n}"},{"id":"4e1f2d3d-a123-4a21-8332-dd2fecfc598b","name":"401","originalRequest":{"method":"POST","header":[{"key":"content-type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n\t\"client_id\":\"CLIENTID\",\n\t\"client_secret\":\"CLIENTSECRET\",\n\t\"audience\":\"https://api.foodstack.brain.io\",\n\t\"grant_type\":\"client_credentials\"\n}"},"url":"https://api.staging.foodstack.brain.io/oauth/token"},"status":"Unauthorized","code":401,"_postman_previewlanguage":"json","header":[{"key":"Date","value":"Wed, 20 Feb 2019 13:11:39 GMT"},{"key":"Content-Type","value":"application/json"},{"key":"Content-Length","value":"60"},{"key":"Connection","value":"keep-alive"},{"key":"X-Auth0-RequestId","value":"1bb8a6bbea0c249b00dd"},{"key":"X-RateLimit-Limit","value":"30"},{"key":"X-RateLimit-Remaining","value":"29"},{"key":"X-RateLimit-Reset","value":"1550668300"},{"key":"WWW-Authenticate","value":"Basic realm=\"Users\""},{"key":"Cache-Control","value":"private, no-store, no-cache, must-revalidate, post-check=0, pre-check=0"}],"cookie":[],"responseTime":null,"body":"{\n    \"error\": \"access_denied\",\n    \"error_description\": \"Unauthorized\"\n}"}],"_postman_id":"e6c7e6d5-48a0-4f47-83d9-2a87217b85ae"}],"id":"38e33b98-5db0-4a40-ace0-ca5c08832df2","description":"<p>If you already have an account you can use your OAuth token to perform calls.</p>\n<p>To go live as an integration though, you will need to request a clientId and clientSecret and use the machineToMachine token endpoint</p>\n<p>Don't forget to cache this token. You should only request a new one when your old one expires.\nYou can quickly go to <a href=\"https://jwt.io\">here</a> to see what's in the token.</p>\n","event":[{"listen":"prerequest","script":{"id":"6bdfaaf4-2b0b-4621-a60c-6d90a9532f1f","type":"text/javascript","exec":[""]}},{"listen":"test","script":{"id":"d86995cc-4f8d-43b1-9da4-15ff0f6b73a3","type":"text/javascript","exec":[""]}}],"_postman_id":"38e33b98-5db0-4a40-ace0-ca5c08832df2","auth":{"type":"oauth2","oauth2":{"basicConfig":[{"key":"accessToken","value":"{{integratorToken}}"}],"advancedConfig":[{"key":"useBrowser","value":"<use-browser>"}]},"isInherited":true,"source":{"_postman_id":"ec7259bd-82f3-4a09-a170-39a4e647fd84","id":"ec7259bd-82f3-4a09-a170-39a4e647fd84","name":"Foodstack Public API","type":"collection"}}},{"name":"POS API / Reporting API","item":[{"name":"Foodstack","item":[{"name":"Get linked accounts","id":"955a9842-0386-48ab-ae60-3db17f120312","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"http://api.brain.io/accounts","description":"<p>Every restaurant has an account.\nWhen such an account is linked to your integrator account, it will show up when doing this call.</p>\n","auth":{"type":"oauth2","oauth2":{"basicConfig":[{"key":"accessToken","value":"{{integratorToken}}"}],"advancedConfig":[{"key":"useBrowser","value":"<use-browser>"}]},"isInherited":true,"source":{"_postman_id":"ec7259bd-82f3-4a09-a170-39a4e647fd84","id":"ec7259bd-82f3-4a09-a170-39a4e647fd84","name":"Foodstack Public API","type":"collection"}},"urlObject":{"host":["http://api.brain.io/accounts"],"query":[],"variable":[]}},"response":[{"id":"36c50c62-066b-4c35-93a0-31ba2d51ea3e","name":"200","originalRequest":{"method":"GET","header":[],"url":{"raw":"http://api.brain.io/accounts?embedded={\"accounts\": 1}","host":["http://api.brain.io/accounts"],"query":[{"key":"embedded","value":"{\"accounts\": 1}"}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Server","value":"nginx/1.13.9"},{"key":"Date","value":"Wed, 20 Feb 2019 13:44:37 GMT"},{"key":"Content-Type","value":"application/json"},{"key":"Content-Length","value":"6016"},{"key":"Connection","value":"keep-alive"},{"key":"X-Total-Count","value":"13"},{"key":"Cache-Control","value":"max-age=20"},{"key":"Expires","value":"Wed, 20 Feb 2019 13:44:57 GMT"},{"key":"Last-Modified","value":"Sun, 17 Feb 2019 18:31:08 GMT"},{"key":"Access-Control-Allow-Origin","value":"*"},{"key":"Access-Control-Allow-Headers","value":"Content-Type,Authorization"},{"key":"Access-Control-Allow-Headers","value":"User-Agent,Keep-Alive,Content-Type,Authorization"},{"key":"Access-Control-Allow-Methods","value":"GET,PUT,POST,DELETE,OPTIONS"},{"key":"Access-Control-Allow-Methods","value":"GET, POST, OPTIONS, DELETE, PUT, PATCH"},{"key":"Access-Control-Allow-Credentials","value":"true"}],"cookie":[],"responseTime":null,"body":"{\n    \"_items\": [\n        {\n            \"_id\": \"5be9c971c6489f0029******\",\n            \"_created\": \"2018-11-12T18:41:53.000000Z\",\n            \"_updated\": \"2019-01-30T13:49:47.000000Z\",\n            \"_etag\": \"1da42e823e5ad2cef8f302ab61dee1baec******\",\n            \"name\": \"Integrator account\",\n            \"accountType\": 0,\n            \"users\": [\n                \"5be9c971c6489f0029******\",\n                \"5be9e464c6489f02b6******\"\n            ],\n            \"locations\": [\n                \"5bf02f38c6489f002c******\",\n                \"5bf02f38c6489f002c******\"\n            ],\n            \"_deleted\": false,\n            \"_links\": {\n                \"self\": {\n                    \"title\": \"accounts\",\n                    \"href\": \"accounts/5be9c971c6489f0029******\"\n                }\n            }\n        },\n        {\n            \"_id\": \"5be9f26fc6489f02b6******\",\n            \"name\": \"Linked Account 1\",\n            \"accountType\": 2,\n            \"_updated\": \"2019-01-22T10:26:31.000000Z\",\n            \"_created\": \"2018-11-12T21:36:47.000000Z\",\n            \"_etag\": \"ab8e0687b8ebcf93a9e3217f9abd61026348c472\",\n            \"users\": [\n                \"5be9f5bdc6489f02b6******\"\n            ],\n            \"locations\": [\n                \"5bf02f38c6489f002c******\"\n            ],\n            \"_deleted\": false,\n            \"_links\": {\n                \"self\": {\n                    \"title\": \"accounts\",\n                    \"href\": \"accounts/5be9f26fc6489f02b6******\"\n                }\n            }\n        }\n    ],\n    \"_links\": {\n        \"parent\": {\n            \"title\": \"home\",\n            \"href\": \"/\"\n        },\n        \"self\": {\n            \"title\": \"accounts\",\n            \"href\": \"accounts\"\n        }\n    },\n    \"_meta\": {\n        \"page\": 1,\n        \"max_results\": 25,\n        \"total\": 13\n    }\n}"},{"id":"3c9f38d4-69ec-4e02-8561-baad44f051bd","name":"401 - Get linked accounts","originalRequest":{"method":"GET","header":[],"url":"http://api.brain.io/accounts"},"status":"UNAUTHORIZED","code":401,"_postman_previewlanguage":"json","header":[{"key":"Server","value":"nginx/1.13.9"},{"key":"Date","value":"Wed, 27 Feb 2019 12:14:10 GMT"},{"key":"Content-Type","value":"application/json"},{"key":"Content-Length","value":"91"},{"key":"Connection","value":"keep-alive"},{"key":"WWW-Authenticate","value":"Basic realm=\"eve\""},{"key":"Cache-Control","value":"max-age=20"},{"key":"Expires","value":"Wed, 27 Feb 2019 12:14:30 GMT"},{"key":"Access-Control-Allow-Origin","value":"*"},{"key":"Access-Control-Allow-Headers","value":"Content-Type,Authorization"},{"key":"Access-Control-Allow-Methods","value":"GET,PUT,POST,DELETE,OPTIONS"}],"cookie":[],"responseTime":null,"body":"{\n    \"_status\": \"ERR\",\n    \"_error\": {\n        \"code\": 401,\n        \"message\": \"Please provide proper credentials\"\n    }\n}"},{"id":"6323a8db-6d98-4317-889d-8c980a0674fc","name":"401","originalRequest":{"method":"GET","header":[],"url":{"raw":"http://api.brain.io/accounts?embedded={\"accounts\": 1}","host":["http://api.brain.io/accounts"],"query":[{"key":"embedded","value":"{\"accounts\": 1}"}]}},"status":"UNAUTHORIZED","code":401,"_postman_previewlanguage":"json","header":[{"key":"Server","value":"nginx/1.13.9"},{"key":"Date","value":"Wed, 20 Feb 2019 13:59:59 GMT"},{"key":"Content-Type","value":"application/json"},{"key":"Content-Length","value":"80"},{"key":"Connection","value":"keep-alive"},{"key":"Access-Control-Allow-Origin","value":"*"},{"key":"Access-Control-Allow-Headers","value":"Content-Type,Authorization"},{"key":"Access-Control-Allow-Methods","value":"GET,PUT,POST,DELETE,OPTIONS"}],"cookie":[],"responseTime":null,"body":"{\n    \"code\": \"invalid_header\",\n    \"description\": \"Unable to parse authentication token.\"\n}"},{"id":"a112474d-059e-44e2-bca5-ffcfb2a77bd9","name":"200 - Get linked accounts","originalRequest":{"method":"GET","header":[],"url":"http://api.brain.io/accounts"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Server","value":"nginx/1.13.9"},{"key":"Date","value":"Wed, 27 Feb 2019 12:23:21 GMT"},{"key":"Content-Type","value":"application/json"},{"key":"Content-Length","value":"1039"},{"key":"Connection","value":"keep-alive"},{"key":"X-Total-Count","value":"2"},{"key":"Cache-Control","value":"max-age=20"},{"key":"Expires","value":"Wed, 27 Feb 2019 12:23:41 GMT"},{"key":"Last-Modified","value":"Tue, 26 Feb 2019 10:28:07 GMT"},{"key":"Access-Control-Allow-Origin","value":"*"},{"key":"Access-Control-Allow-Headers","value":"Content-Type,Authorization"},{"key":"Access-Control-Allow-Headers","value":"User-Agent,Keep-Alive,Content-Type,Authorization"},{"key":"Access-Control-Allow-Methods","value":"GET,PUT,POST,DELETE,OPTIONS"},{"key":"Access-Control-Allow-Methods","value":"GET, POST, OPTIONS, DELETE, PUT, PATCH"},{"key":"Access-Control-Allow-Credentials","value":"true"}],"cookie":[],"responseTime":null,"body":"{\n    \"_items\": [\n        {\n            \"_id\": \"5c7511fcc6489f0001b3cfde\",\n            \"name\": \"Foodstack Test POS Partner\",\n            \"accountType\": 1,\n            \"_updated\": \"2019-02-26T10:28:07.000000Z\",\n            \"_created\": \"2019-02-26T10:16:28.000000Z\",\n            \"_deleted\": false,\n            \"_etag\": \"42cdcfa0c5fe744f2ddecd00c0188b40b63a7fcc\",\n            \"users\": [\n                \"5c7512f1c6489f0001b3cfdf\",\n                \"5c7515bec6489f0001b3cff9\"\n            ],\n            \"accounts\": [\n                \"5c75147ec6489f0001b3cfef\"\n            ],\n            \"_links\": {\n                \"self\": {\n                    \"title\": \"accounts\",\n                    \"href\": \"accounts/5c7511fcc6489f0001b3cfde\"\n                }\n            }\n        },\n        {\n            \"_id\": \"5c75147ec6489f0001b3cfef\",\n            \"name\": \"Foodstack Test POS Resto\",\n            \"accountType\": 2,\n            \"_updated\": \"2019-02-26T10:27:21.000000Z\",\n            \"_created\": \"2019-02-26T10:27:10.000000Z\",\n            \"_deleted\": false,\n            \"_etag\": \"0b64e08badb2dbb6497899b3a506d3931cc2477e\",\n            \"locations\": [\n                \"5c751489c6489f0001b3cff0\"\n            ],\n            \"users\": [\n                \"5c7514e3c6489f0001b3cff3\"\n            ],\n            \"_links\": {\n                \"self\": {\n                    \"title\": \"accounts\",\n                    \"href\": \"accounts/5c75147ec6489f0001b3cfef\"\n                }\n            }\n        }\n    ],\n    \"_links\": {\n        \"parent\": {\n            \"title\": \"home\",\n            \"href\": \"/\"\n        },\n        \"self\": {\n            \"title\": \"accounts\",\n            \"href\": \"accounts\"\n        }\n    },\n    \"_meta\": {\n        \"page\": 1,\n        \"max_results\": 25,\n        \"total\": 2\n    }\n}"}],"_postman_id":"955a9842-0386-48ab-ae60-3db17f120312"},{"name":"Get locations","id":"3f9829c9-7ae8-42ec-b906-939c74f3b7db","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"http://api.brain.io/locations?account={{accountId}}","description":"<p>Per physical restaurant location, there will be a <em>Location</em>. This endpoint can be used to query them.</p>\n<p>You can have to specify an account, otherwise the locations of your own account will be returned</p>\n","auth":{"type":"oauth2","oauth2":{"basicConfig":[{"key":"accessToken","value":"{{integratorToken}}"}],"advancedConfig":[{"key":"useBrowser","value":"<use-browser>"}]},"isInherited":true,"source":{"_postman_id":"ec7259bd-82f3-4a09-a170-39a4e647fd84","id":"ec7259bd-82f3-4a09-a170-39a4e647fd84","name":"Foodstack Public API","type":"collection"}},"urlObject":{"host":["http://api.brain.io/locations"],"query":[{"key":"account","value":"{{accountId}}"}],"variable":[]}},"response":[{"id":"4aa69a88-37dd-43ca-ab7b-b7928d09dda5","name":"Account and location result","originalRequest":{"method":"GET","header":[],"url":{"raw":"http://api.brain.io/accounts?embedded={\"accounts\":1,\"accounts.locations\":1}","host":["http://api.brain.io/accounts"],"query":[{"key":"embedded","value":"{\"accounts\":1,\"accounts.locations\":1}"}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Server","value":"nginx/1.14.1"},{"key":"Date","value":"Thu, 14 Feb 2019 16:24:59 GMT"},{"key":"Content-Type","value":"application/json"},{"key":"Content-Length","value":"1270"},{"key":"Connection","value":"keep-alive"},{"key":"X-Total-Count","value":"1"},{"key":"Cache-Control","value":"max-age=20"},{"key":"Expires","value":"Thu, 14 Feb 2019 16:25:19 GMT"},{"key":"Last-Modified","value":"Thu, 14 Feb 2019 13:57:59 GMT"},{"key":"Access-Control-Allow-Origin","value":"*"},{"key":"Access-Control-Allow-Headers","value":"Content-Type,Authorization"},{"key":"Access-Control-Allow-Headers","value":"User-Agent,Keep-Alive,Content-Type,Authorization"},{"key":"Access-Control-Allow-Methods","value":"GET,PUT,POST,DELETE,OPTIONS"},{"key":"Access-Control-Allow-Methods","value":"GET, POST, OPTIONS, DELETE, PUT, PATCH"},{"key":"Access-Control-Allow-Credentials","value":"true"}],"cookie":[],"responseTime":null,"body":"{\n    \"_items\": [\n        {\n            \"_id\": \"5c1a40f6c6489f00bac4c252\",\n            \"name\": \"Partner Jelte\",\n            \"accountType\": 1,\n            \"_updated\": \"2019-02-14T13:57:59.000000Z\",\n            \"_created\": \"2018-12-19T13:00:38.000000Z\",\n            \"_etag\": \"ad515c7db898b7004253d8ea46d07a3b7e0cbd99\",\n            \"locations\": [\n                \"5c1a4117c6489f00bac4c253\",\n                \"5c20ea48c6489f0016a132f7\",\n                \"5c20f1cec6489f0035972273\",\n                \"5c6573e7c6489f00014c507c\"\n            ],\n            \"accounts\": [\n                {\n                    \"_id\": \"5c3f8a90c6489f002c85dd3d\",\n                    \"name\": \"Gastrofixies\",\n                    \"accountType\": 2,\n                    \"_updated\": \"2019-01-16T19:49:37.000000Z\",\n                    \"_created\": \"2019-01-16T19:48:32.000000Z\",\n                    \"_deleted\": false,\n                    \"_etag\": \"56f924441a4de194e96f3d9f6ebc962b7a8d524c\",\n                    \"locations\": [\n                        {\n                            \"_id\": \"5c3f8ad1c6489f002c85dd3e\",\n                            \"name\": \"Gastro gefixed (10905)\",\n                            \"account\": \"5c3f8a90c6489f002c85dd3d\",\n                            \"_updated\": \"2019-01-28T12:19:19.000000Z\",\n                            \"_created\": \"2019-01-16T19:49:37.000000Z\",\n                            \"_deleted\": false,\n                            \"_etag\": \"11b454d7423e292c4455c5c142ebc12d2563f8ea\",\n                            \"channelLinks\": [\n                                \"5c3f8aeac6489f002c85dd41\",\n                                \"5c4ef347c6489f0001594856\"\n                            ]\n                        }\n                    ]\n                }\n            ],\n            \"users\": [\n                \"5c2496cbc6489f00169462a3\"\n            ],\n            \"_deleted\": false,\n            \"_links\": {\n                \"self\": {\n                    \"title\": \"accounts\",\n                    \"href\": \"accounts/5c1a40f6c6489f00bac4c252\"\n                }\n            }\n        }\n    ],\n    \"_links\": {\n        \"parent\": {\n            \"title\": \"home\",\n            \"href\": \"/\"\n        },\n        \"self\": {\n            \"title\": \"accounts\",\n            \"href\": \"accounts\"\n        }\n    },\n    \"_meta\": {\n        \"page\": 1,\n        \"max_results\": 25,\n        \"total\": 1\n    }\n}"},{"id":"7e3870ad-32b1-4448-921b-abda6f7639a2","name":"locations by account","originalRequest":{"method":"GET","header":[],"url":{"raw":"http://api.brain.io/locations?where={\"account\":\"{{accountId}}\"}","host":["http://api.brain.io/locations"],"query":[{"key":"where","value":"{\"account\":\"{{accountId}}\"}"}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Server","value":"nginx/1.13.9"},{"key":"Date","value":"Wed, 20 Feb 2019 14:10:26 GMT"},{"key":"Content-Type","value":"application/json"},{"key":"Content-Length","value":"2068"},{"key":"Connection","value":"keep-alive"},{"key":"X-Total-Count","value":"4"},{"key":"Cache-Control","value":"max-age=20"},{"key":"Expires","value":"Wed, 20 Feb 2019 14:10:46 GMT"},{"key":"Last-Modified","value":"Thu, 14 Feb 2019 11:16:35 GMT"},{"key":"Access-Control-Allow-Origin","value":"*"},{"key":"Access-Control-Allow-Headers","value":"Content-Type,Authorization"},{"key":"Access-Control-Allow-Headers","value":"User-Agent,Keep-Alive,Content-Type,Authorization"},{"key":"Access-Control-Allow-Methods","value":"GET,PUT,POST,DELETE,OPTIONS"},{"key":"Access-Control-Allow-Methods","value":"GET, POST, OPTIONS, DELETE, PUT, PATCH"},{"key":"Access-Control-Allow-Credentials","value":"true"}],"cookie":[],"responseTime":null,"body":"{\n    \"_items\": [\n        {\n            \"_id\": \"5bf02f38c6489f002c******\",\n            \"_created\": \"2018-11-17T15:09:44.000000Z\",\n            \"_updated\": \"2019-02-14T11:16:20.000000Z\",\n            \"_etag\": \"ef043a0519e16ba48d7b4b2f5af928c9324760e0\",\n            \"name\": \"Test location 1\",\n            \"status\": \"INTEGRATOR\",\n            \"channelLinks\": [\n                \"5bf02f38c6489f002******1\",\n                \"5bf02f38c6489f002******2\"\n            ],\n            \"account\": \"5be9c971c6489f0029******\",\n            \"_deleted\": false,\n            \"_links\": {\n                \"self\": {\n                    \"title\": \"Locations\",\n                    \"href\": \"locations/5bf02f38c6489f002c******\"\n                }\n            }\n        },\n        {\n            \"_id\": \"5bf02f38c6489f002c******\",\n            \"_created\": \"2018-11-17T15:09:44.000000Z\",\n            \"_updated\": \"2019-01-16T17:30:40.000000Z\",\n            \"_etag\": \"c9a39040acd03086bcd9abfd00af7acb5c5e748f\",\n            \"name\": \"Test Location 2\",\n            \"status\": \"INTEGRATOR\",\n            \"channelLinks\": [\n                \"5bf02f38c6489f002******1\"\n            ],\n            \"account\": \"5be9c971c6489f0029******\",\n            \"_deleted\": false,\n            \"_links\": {\n                \"self\": {\n                    \"title\": \"Locations\",\n                    \"href\": \"locations/5bf02f38c6489f002c******\"\n                }\n            }\n        }\n    ],\n    \"_links\": {\n        \"parent\": {\n            \"title\": \"home\",\n            \"href\": \"/\"\n        },\n        \"self\": {\n            \"title\": \"locations\",\n            \"href\": \"locations?where={\\\"account\\\": \\\"5be9c971c6489f00297746d4\\\"}\"\n        }\n    },\n    \"_meta\": {\n        \"page\": 1,\n        \"max_results\": 25,\n        \"total\": 4\n    }\n}"}],"_postman_id":"3f9829c9-7ae8-42ec-b906-939c74f3b7db"},{"name":"Get new orders","id":"a3d6c4fb-0541-4125-91a4-e3339c0a3624","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"http://api.brain.io/orders?account={{accountId}}&location={{locationId}}&status=2&updated_at_gte=\"2019-02-20T00:00:00.000Z\"&_sort=created_at","description":"<p>An order represents what a customer ordered using a channel. It contains the products, prices and payment information.</p>\n<p>Depending on the channel we also get customer info. </p>\n<p>It also contains whether this is a takeout or delivery order. If the customer does the delivery himself, then a delivery address will also be available</p>\n<p>A POS that has no cloud API yet should create a proxy to receive orders. Querying orders should only happen if your endpoint has been down for a while and you want to check if there were orders that you missed. </p>\n<p>Status 1 means we parsed the order. If this failed, the status would be 120 or above. These orders aren't useful for the POS, and support will proactively take care of these, but they can be queried as well so that you know what goes wrong. Alternatively you can see these orders in the <a href=\"https://frontend.foodstack.brain.io/orders\"> frontend</a></p>\n","auth":{"type":"oauth2","oauth2":{"basicConfig":[{"key":"accessToken","value":"{{integratorToken}}"}],"advancedConfig":[{"key":"useBrowser","value":"<use-browser>"}]},"isInherited":true,"source":{"_postman_id":"ec7259bd-82f3-4a09-a170-39a4e647fd84","id":"ec7259bd-82f3-4a09-a170-39a4e647fd84","name":"Foodstack Public API","type":"collection"}},"urlObject":{"host":["http://api.brain.io/orders"],"query":[{"key":"account","value":"{{accountId}}"},{"key":"location","value":"{{locationId}}"},{"key":"status","value":"2"},{"key":"updated_at_gte","value":"\"2019-02-20T00:00:00.000Z\""},{"key":"_sort","value":"created_at"}],"variable":[]}},"response":[{"id":"3daa1bde-bb63-41bb-8006-cfce47120710","name":"Get new orders for location since 20 Febr","originalRequest":{"method":"GET","header":[],"url":{"raw":"http://api.brain.io/orders?where={\"account\":\"{{accountId}}\",\"location\":\"{{locationId}}\",\"status\":1,\"_updated\": {\"$gte\": \"2019-02-20T00:00:00.000Z\"}}&sort=-_created","host":["http://api.brain.io/orders"],"query":[{"key":"where","value":"{\"account\":\"{{accountId}}\",\"location\":\"{{locationId}}\",\"status\":1,\"_updated\": {\"$gte\": \"2019-02-20T00:00:00.000Z\"}}"},{"key":"sort","value":"-_created"}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Server","value":"nginx/1.13.9"},{"key":"Date","value":"Wed, 20 Feb 2019 16:42:31 GMT"},{"key":"Content-Type","value":"application/json"},{"key":"Content-Length","value":"3356"},{"key":"Connection","value":"keep-alive"},{"key":"X-Total-Count","value":"1"},{"key":"Cache-Control","value":"max-age=20"},{"key":"Expires","value":"Wed, 20 Feb 2019 16:42:51 GMT"},{"key":"Last-Modified","value":"Wed, 20 Feb 2019 16:40:52 GMT"},{"key":"Access-Control-Allow-Origin","value":"*"},{"key":"Access-Control-Allow-Headers","value":"Content-Type,Authorization"},{"key":"Access-Control-Allow-Headers","value":"User-Agent,Keep-Alive,Content-Type,Authorization"},{"key":"Access-Control-Allow-Methods","value":"GET,PUT,POST,DELETE,OPTIONS"},{"key":"Access-Control-Allow-Methods","value":"GET, POST, OPTIONS, DELETE, PUT, PATCH"},{"key":"Access-Control-Allow-Credentials","value":"true"}],"cookie":[],"responseTime":null,"body":"{\n    \"_items\": [\n        {\n            \"_id\": \"5c6d830a0182d6000e******\",\n            \"_created\": \"2019-02-20T16:40:44.000000Z\",\n            \"_updated\": \"2019-02-20T16:40:52.000000Z\",\n            \"_etag\": \"33a7f3f6c7c5f8e82fc97116220b8c23094db14f\",\n            \"channelOrderId\": \"******-1527\",\n            \"channelOrderDisplayId\": \"1527\",\n            \"posLocationId\": \"30458\",\n            \"location\": \"5bf02f38c6489f002c******\",\n            \"channelLink\": \"5bf02f38c6489f002c******\",\n            \"status\": 1,\n            \"statusHistory\": [\n                {\n                    \"_created\": \"2019-02-20T16:40:42.703000Z\",\n                    \"response\": \"\",\n                    \"timeStamp\": \"2019-02-20T16:40:42.703000Z\",\n                    \"status\": 4\n                },\n                {\n                    \"_created\": \"2019-02-20T16:40:42.726000Z\",\n                    \"response\": \"\",\n                    \"timeStamp\": \"2019-02-20T16:40:42.726000Z\",\n                    \"status\": 1\n                }\n            ],\n            \"channelStatusHistory\": [\n                {\n                    \"_id\": \"5c6d830c0182d6000e95542a\",\n                    \"_created\": \"2019-02-20T16:40:44.888000Z\",\n                    \"_updated\": \"2019-02-20T16:40:44.888000Z\",\n                    \"_etag\": \"\",\n                    \"orderStatus\": 2,\n                    \"channelStatus\": \"2019-02-20 16:40:42\",\n                    \"success\": true,\n                    \"response\": \"{}\"\n                }\n            ],\n            \"by\": \"\",\n            \"orderType\": 2,\n            \"channel\": 2,\n            \"pickupTime\": \"2019-02-20T16:40:42.000000Z\",\n            \"deliveryIsAsap\": false,\n            \"courier\": \" \",\n            \"customer\": {\n                \"name\": \"Customer name\",\n                \"companyName\": \"Foodstack\",\n                \"phoneNumber\": \"0123456789\",\n                \"email\": \"customer@foodstack.brain.io\"\n            },\n            \"deliveryAddress\": {\n                \"street\": \"\",\n                \"streetNumber\": \"\",\n                \"postalCode\": \"\",\n                \"city\": \"\",\n                \"extraAddressInfo\": \"\"\n            },\n            \"orderIsAlreadyPaid\": true,\n            \"payment\": {\n                \"amount\": 400,\n                \"type\": 0\n            },\n            \"note\": \"\",\n            \"items\": [\n                {\n                    \"plu\": \"P1\",\n                    \"name\": \"Product 1\",\n                    \"price\": 200,\n                    \"quantity\": 1,\n                    \"productType\": 1,\n                    \"subItems\": []\n                },\n                {\n                    \"_id\": \"5c6d830a0182d6000e955423\",\n                    \"_created\": \"2019-02-20T16:40:42.726000Z\",\n                    \"_updated\": \"2019-02-20T16:40:42.726000Z\",\n                    \"_etag\": \"\",\n                    \"plu\": \"P2\",\n                    \"name\": \"Product 2\",\n                    \"price\": 200,\n                    \"quantity\": 1,\n                    \"productType\": 1,\n                    \"subItems\": []\n                }\n            ],\n            \"decimalDigits\": 2,\n            \"numberOfCustomers\": 1,\n            \"deliveryCost\": 0,\n            \"serviceCharge\": 0,\n            \"discountTotal\": 0,\n            \"posCustomerId\": \"256706\",\n            \"account\": \"5be9c971c6489f0029******\",\n            \"posReceiptId\": \"297812\",\n            \"_links\": {\n                \"self\": {\n                    \"title\": \"order\",\n                    \"href\": \"orders/5c6d830a0182d6000e******\"\n                }\n            }\n        }\n    ],\n    \"_links\": {\n        \"parent\": {\n            \"title\": \"home\",\n            \"href\": \"/\"\n        },\n        \"self\": {\n            \"title\": \"orders\",\n            \"href\": \"orders?where={\\\"account\\\":\\\"5be9c971c6489f0029******\\\",\\\"location\\\":\\\"5bf02f38c6489f002c******\\\",\\\"status\\\":1,\\\"_updated\\\": {\\\"$gte\\\": \\\"2019-02-20T00:00:00.000Z\\\"}}&sort=-_created\"\n        }\n    },\n    \"_meta\": {\n        \"page\": 1,\n        \"max_results\": 25,\n        \"total\": 1\n    }\n}"},{"id":"885c32f6-b34e-442d-9242-de68934bc318","name":"Get failed orders","originalRequest":{"method":"GET","header":[],"url":{"raw":"http://api.brain.io/orders?where={\"account\":\"{{accountId}}\",\"location\":\"{{locationId}}\",\"status\":120,\"_updated\": {\"$gte\": \"2019-02-20T00:00:00.000Z\"}}&sort=-_created","host":["http://api.brain.io/orders"],"query":[{"key":"where","value":"{\"account\":\"{{accountId}}\",\"location\":\"{{locationId}}\",\"status\":120,\"_updated\": {\"$gte\": \"2019-02-20T00:00:00.000Z\"}}"},{"key":"sort","value":"-_created"}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Server","value":"nginx/1.13.9"},{"key":"Date","value":"Wed, 27 Feb 2019 09:28:03 GMT"},{"key":"Content-Type","value":"application/json"},{"key":"Content-Length","value":"25702"},{"key":"Connection","value":"keep-alive"},{"key":"X-Total-Count","value":"6"},{"key":"Cache-Control","value":"max-age=20"},{"key":"Expires","value":"Wed, 27 Feb 2019 09:28:23 GMT"},{"key":"Last-Modified","value":"Mon, 25 Feb 2019 09:47:28 GMT"},{"key":"Access-Control-Allow-Origin","value":"*"},{"key":"Access-Control-Allow-Headers","value":"Content-Type,Authorization"},{"key":"Access-Control-Allow-Headers","value":"User-Agent,Keep-Alive,Content-Type,Authorization"},{"key":"Access-Control-Allow-Methods","value":"GET,PUT,POST,DELETE,OPTIONS"},{"key":"Access-Control-Allow-Methods","value":"GET, POST, OPTIONS, DELETE, PUT, PATCH"},{"key":"Access-Control-Allow-Credentials","value":"true"}],"cookie":[],"responseTime":null,"body":"{\n    \"_items\": [\n        {\n            \"_id\": \"5c6d64c1fc57b6000e******\",\n            \"_created\": \"2019-02-20T14:31:29.000000Z\",\n            \"_updated\": \"2019-02-20T14:31:30.000000Z\",\n            \"_etag\": \"e68cee11782edbf746747fda37de85995b54d748\",\n            \"channelOrderId\": \"1487734400-1234\",\n            \"channelOrderDisplayId\": \"1234\",\n            \"posId\": \"\",\n            \"posReceiptId\": \"\",\n            \"posLocationId\": \"30458\",\n            \"location\": \"5bf02f38c6489f002c******\",\n            \"channelLink\": \"5bf02f38c6489f002c******\",\n            \"status\": 120,\n            \"statusHistory\": [\n                {\n                    \"response\": \"\",\n                    \"timeStamp\": \"2019-02-20T14:31:29.541000Z\",\n                    \"status\": 4\n                },\n                {\n                    \"response\": \"\",\n                    \"timeStamp\": \"2019-02-20T14:31:29.615000Z\",\n                    \"status\": 1\n                },\n                {\n                    \"response\": \"InvalidProduct:  Invalid PLU: 136113\\n\",\n                    \"timeStamp\": \"2019-02-20T14:31:29.635000Z\",\n                    \"status\": 120\n                }\n            ],\n            \"channelStatusHistory\": [\n                {\n                    \"orderStatus\": 120,\n                    \"channelStatus\": \"\",\n                    \"success\": false,\n                    \"response\": \"{}\"\n                }\n            ],\n            \"by\": \"\",\n            \"orderType\": 2,\n            \"channel\": 2,\n            \"pickupTime\": \"2019-02-20T14:31:28.000000Z\",\n            \"deliveryIsAsap\": false,\n            \"courier\": \" \",\n            \"customer\": {\n                \"name\": \"Customer name\",\n                \"companyName\": \"Foodstack\",\n                \"phoneNumber\": \"0123456789\",\n                \"email\": \"customer@foodstack.brain.io\"\n            },\n            \"deliveryAddress\": {\n                \"street\": \"\",\n                \"streetNumber\": \"\",\n                \"postalCode\": \"\",\n                \"city\": \"\",\n                \"extraAddressInfo\": \"\"\n            },\n            \"orderIsAlreadyPaid\": true,\n            \"payment\": {\n                \"amount\": 200,\n                \"type\": 0\n            },\n            \"note\": \"test note value\",\n            \"items\": [\n                {\n                    \"plu\": \"136113\",\n                    \"name\": \"\",\n                    \"price\": 200,\n                    \"quantity\": 1,\n                    \"productType\": 1,\n                    \"subItems\": []\n                }\n            ],\n            \"decimalDigits\": 2,\n            \"numberOfCustomers\": 1,\n            \"deliveryCost\": 0,\n            \"serviceCharge\": 0,\n            \"discountTotal\": 0,\n            \"posCustomerId\": \"256706\",\n            \"account\": \"5be9c971c6489f0029******\",\n            \"channelOrderRawId\": \"5c6d64c1c6489f00016e486d\",\n            \"_links\": {\n                \"self\": {\n                    \"title\": \"order\",\n                    \"href\": \"orders/5c6d64c1fc57b6000e******\"\n                }\n            }\n        }\n    ],\n    \"_links\": {\n        \"parent\": {\n            \"title\": \"home\",\n            \"href\": \"/\"\n        },\n        \"self\": {\n            \"title\": \"orders\",\n            \"href\": \"orders?where={\\\"account\\\":\\\"5be9c971c6489f0029******\\\",\\\"location\\\":\\\"5bf02f38c6489f002c******\\\",\\\"status\\\":120,\\\"_updated\\\": {\\\"$gte\\\": \\\"2019-02-20T00:00:00.000Z\\\"}}&sort=-_created\"\n        }\n    },\n    \"_meta\": {\n        \"page\": 1,\n        \"max_results\": 25,\n        \"total\": 6\n    }\n}"},{"id":"ed49be83-bd21-47f4-afef-1061b5e6fc4b","name":"Get new orders for whole account since 20 Febr","originalRequest":{"method":"GET","header":[],"url":{"raw":"http://api.brain.io/orders?where={\"account\":\"{{accountId}}\",\"status\":1,\"_updated\": {\"$gte\": \"2019-02-20T00:00:00.000Z\"}}&sort=-_created","host":["http://api.brain.io/orders"],"query":[{"key":"where","value":"{\"account\":\"{{accountId}}\",\"status\":1,\"_updated\": {\"$gte\": \"2019-02-20T00:00:00.000Z\"}}"},{"key":"sort","value":"-_created"}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Server","value":"nginx/1.13.9"},{"key":"Date","value":"Thu, 21 Feb 2019 15:47:01 GMT"},{"key":"Content-Type","value":"application/json"},{"key":"Content-Length","value":"3314"},{"key":"Connection","value":"keep-alive"},{"key":"X-Total-Count","value":"1"},{"key":"Cache-Control","value":"max-age=20"},{"key":"Expires","value":"Thu, 21 Feb 2019 15:47:21 GMT"},{"key":"Last-Modified","value":"Wed, 20 Feb 2019 16:40:52 GMT"},{"key":"Access-Control-Allow-Origin","value":"*"},{"key":"Access-Control-Allow-Headers","value":"Content-Type,Authorization"},{"key":"Access-Control-Allow-Headers","value":"User-Agent,Keep-Alive,Content-Type,Authorization"},{"key":"Access-Control-Allow-Methods","value":"GET,PUT,POST,DELETE,OPTIONS"},{"key":"Access-Control-Allow-Methods","value":"GET, POST, OPTIONS, DELETE, PUT, PATCH"},{"key":"Access-Control-Allow-Credentials","value":"true"}],"cookie":[],"responseTime":null,"body":"{\n    \"_items\": [\n        {\n            \"_id\": \"5c6d830a0182d6000e******\",\n           ...\n        }\n    ],\n    \"_links\": {\n        \"parent\": {\n            \"title\": \"home\",\n            \"href\": \"/\"\n        },\n        \"self\": {\n            \"title\": \"orders\",\n            \"href\": \"orders?where={\\\"account\\\":\\\"5be9c971c6489f0029******\\\",\\\"status\\\":1,\\\"_updated\\\": {\\\"$gte\\\": \\\"2019-02-20T00:00:00.000Z\\\"}}&sort=-_created\"\n        }\n    },\n    \"_meta\": {\n        \"page\": 1,\n        \"max_results\": 25,\n        \"total\": 1\n    }\n}"}],"_postman_id":"a3d6c4fb-0541-4125-91a4-e3339c0a3624"},{"name":"Update order status","id":"b9c4dd6a-8856-4da5-93c2-3c7408bbb9d1","protocolProfileBehavior":{"disableBodyPruning":true,"disabledSystemHeaders":{"content-type":true}},"request":{"auth":{"type":"oauth2","oauth2":{"basicConfig":[{"key":"accessToken","value":"{{PARTNERTOKEN}}"}],"advancedConfig":[{"key":"tokenType","value":"<token-type>"}]},"isInherited":false},"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json","type":"text"}],"body":{"mode":"raw","raw":"{\n    \"orderId\": \"5d****e3448c290010****53\",\n    \"status\": 10,\n    \"reason\": \"new order\",\n    \"timeStamp\": \"2019-09-05 07:44:15.000Z\",\n    \"receiptId\": \"1234\"\n}"},"url":"http://api.brain.io/orderStatus/5d08c4e3448c290010c84453","description":"<p>This allows a POS to update the status of an order.</p>\n<p>When sending an order status update, make sure to always include three things: <code>orderId</code>, <code>receiptID</code>, and <code>status</code>.\nSome POS systems use a separate id for the order (<code>orderId</code>) and the receipt that was printed for it (<code>receiptId</code>). The latter is usually something human-friendly, while the former can be a long internal ID.\nIf a separate <code>receiptId</code> does not apply, it's a good practice to default the value for it to that of <code>orderId</code>.</p>\n<p> The table below lists statuses and their corresponding integer value.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Foodstack status tag</th>\n<th>Description</th>\n<th>Integer value</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>PARSED</code></td>\n<td>received and parsed by Foodstack</td>\n<td>1</td>\n</tr>\n<tr>\n<td><code>RECEIVED</code></td>\n<td>received by POS</td>\n<td>2</td>\n</tr>\n<tr>\n<td><code>NEW</code></td>\n<td>received by POS and receipt is created</td>\n<td>10</td>\n</tr>\n<tr>\n<td><code>ACCEPTED</code></td>\n<td>accepted/confirmed</td>\n<td>20</td>\n</tr>\n<tr>\n<td><code>REJECTED</code></td>\n<td>rejected</td>\n<td>30</td>\n</tr>\n<tr>\n<td><code>PRINTED</code></td>\n<td>printed</td>\n<td>40</td>\n</tr>\n<tr>\n<td><code>PREPARING</code></td>\n<td>in preparation</td>\n<td>50</td>\n</tr>\n<tr>\n<td><code>PREPARED</code></td>\n<td>is prepared</td>\n<td>60</td>\n</tr>\n<tr>\n<td><code>READY FOR PICKUP</code></td>\n<td>ready for pickup</td>\n<td>70</td>\n</tr>\n<tr>\n<td><code>IN DELIVERY</code></td>\n<td>en route to customer</td>\n<td>80</td>\n</tr>\n<tr>\n<td><code>FINALIZED</code></td>\n<td>finalized, order is fully handled and no further status updates are coming</td>\n<td>90</td>\n</tr>\n<tr>\n<td><code>AUTO FINALIZED</code></td>\n<td>accepted by POS, but any other status updates unsupported by POS (to be avoided at all costs!)</td>\n<td>95</td>\n</tr>\n<tr>\n<td><code>CANCEL</code></td>\n<td>should be voided</td>\n<td>100</td>\n</tr>\n<tr>\n<td><code>CANCELED</code></td>\n<td>has been voided on POS</td>\n<td>110</td>\n</tr>\n<tr>\n<td><code>FAILED</code></td>\n<td>failed</td>\n<td>120</td>\n</tr>\n<tr>\n<td><code>POS RECEIVED FAILED</code></td>\n<td>not received by POS</td>\n<td>121</td>\n</tr>\n<tr>\n<td><code>PARSE FAILED</code></td>\n<td>parsing failed</td>\n<td>124</td>\n</tr>\n</tbody>\n</table>\n</div><p><code>REJECTED</code> should only be used if the order is already in the POS and was (accidentally) submitted a second time.</p>\n<p><code>FINALIZED</code> means that the order is finalised in the POS. Note that this doesn't necessarily mean that the food has also already been delivered to the end customer!</p>\n<hr />\n<h3 id=\"cancel-vs-canceled\"><code>CANCEL</code> vs <code>CANCELED</code></h3>\n<h4 id=\"cancel\"><code>CANCEL</code></h4>\n<p>This is a status sent <strong>to</strong> the POS when we ask it to cancel an order.</p>\n<p>Such a request comes in at the orders webhook endpoint, as an order with the <code>CANCEL</code> status.</p>\n<p>Your POS should never send an order status update request with this status to Foodstack.</p>\n<h4 id=\"canceled\"><code>CANCELED</code></h4>\n<p>Means the order was indeed canceled by the POS.</p>\n<p>In the case of an order with status <code>CANCEL</code>, Foodstack will resend that order to the POS, with the same <code>channelOrderId</code> and <code>channelOrderDisplayId</code> (again, see the link above for more information).</p>\n<p>An example of an order status update request to Foodstack to confirm cancellation by the POS can be seen on the right. Select the example from the drop-down box.</p>\n<h4 id=\"how-should-your-pos-handle-this\">How should your POS handle this?</h4>\n<ol>\n<li>On the POS side, it should be made very clear to the user that the order needs to be canceled. Printing new tickets for orders, that indicate the order was canceled (so the kitchen knows they don't need to prepare the order) is a right way of doing this. Whether a canceled order should be voided or not is up to the logic of the POS.</li>\n<li>The POS should send Foodstack a status <code>CANCELED</code> (110) <strong>back</strong>, so Foodstack knows the order has been canceled in the POS.</li>\n</ol>\n<hr />\n<p><code>FAILED</code> is a status that should be used when the POS could not be reached, or when an order could not be processed correctly, for example when a product is available on the merchant's online store, but deleted in his POS account.</p>\n<p>When a status is not supported, it can be skipped. It is however very important that statuses are synced back. Some channels will only mark the order successful when the status is ACCEPTED or higher, and some channels take the PREPARING state into account. The more data you can provide, the better the experience for the customer.</p>\n<p>(For some channels, such as Takeaway for instance, orders will not be retrieved if they aren't put to status PRINTED. In this case, their support will call the restaurant if it takes more than five minutes to reach this status)</p>\n<p>If you want to specify a reason for a status change (for instance when it failed) you can set the reason property.</p>\n","urlObject":{"path":["5d08c4e3448c290010c84453"],"host":["http://api.brain.io/orderStatus"],"query":[],"variable":[]}},"response":[{"id":"522a5a71-9c26-4f5e-a6af-005388963122","name":"NEW order","originalRequest":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json","type":"text"}],"body":{"mode":"raw","raw":"{\n    \"orderId\": \"5d****e3448c290010****53\",\n    \"status\": 10,\n    \"reason\": \"new order\",\n    \"timeStamp\": \"2019-09-05 07:44:15.000Z\",\n    \"receiptId\": \"1234\"\n}","options":{"raw":{"language":"json"}}},"url":"http://api.brain.io/orderStatus/5d08c4e3448c290010c84453"},"status":"OK","code":200,"_postman_previewlanguage":"Text","header":[],"cookie":[],"responseTime":null,"body":"OK"},{"id":"ca699030-187c-420c-ad12-bef4bd59a455","name":"Order CANCELED","originalRequest":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json","type":"text"}],"body":{"mode":"raw","raw":"{\n    \"orderId\": \"5d****e3448c290010****53\",\n    \"status\": 110,\n    \"reason\": \"cancellation\",\n    \"timeStamp\": \"2019-09-05 07:44:15.000Z\",\n    \"receiptId\": \"1234\"\n}","options":{"raw":{"language":"json"}}},"url":"http://api.brain.io/orderStatus/5d08c4e3448c290010c84453"},"status":"OK","code":200,"_postman_previewlanguage":"Text","header":[],"cookie":[],"responseTime":null,"body":"OK"}],"_postman_id":"b9c4dd6a-8856-4da5-93c2-3c7408bbb9d1"},{"name":"Retry order","id":"e0a5a379-9d72-47ec-b6fd-0fb97d3ae3d2","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"oauth2","oauth2":{"basicConfig":[{"key":"accessToken","value":"{{PARTNERTOKEN}}"}]},"isInherited":false},"method":"GET","header":[],"url":"http://api.brain.io/retry/{orderId}","description":"<p>Use this request to force a retry of an order.\nNote: this should only be used to retry <strong>failed</strong> orders</p>\n<h2 id=\"endpoint-parameters\">Endpoint parameters</h2>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Meaning</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>orderId</code></td>\n<td>The <code>channelOrderId</code> of the order</td>\n</tr>\n</tbody>\n</table>\n</div>","urlObject":{"path":["{orderId}"],"host":["http://api.brain.io/retry"],"query":[],"variable":[]}},"response":[{"id":"8c843470-3b50-47d1-af09-32c443a8847f","name":"200","originalRequest":{"method":"GET","header":[],"url":"http://api.brain.io/retry/5e57c089a1ca05000bb8f78e"},"status":"OK","code":200,"_postman_previewlanguage":"html","header":[{"key":"Server","value":"nginx/1.11.10"},{"key":"Date","value":"Thu, 27 Feb 2020 13:22:59 GMT"},{"key":"Content-Type","value":"text/html; charset=utf-8"},{"key":"Content-Length","value":"27"},{"key":"Connection","value":"keep-alive"},{"key":"Access-Control-Allow-Origin","value":"*"},{"key":"Access-Control-Allow-Headers","value":"Content-Type,Authorization"},{"key":"Access-Control-Allow-Methods","value":"GET,PUT,POST,DELETE,OPTIONS"}],"cookie":[],"responseTime":null,"body":"Order retried successfully."}],"_postman_id":"e0a5a379-9d72-47ec-b6fd-0fb97d3ae3d2"},{"name":"Insert/update products and categories","id":"086b01db-9444-4c2d-a508-9cf9c89b5739","protocolProfileBehavior":{"disableBodyPruning":true,"disabledSystemHeaders":{"content-type":true}},"request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","type":"text","value":"application/json"}],"body":{"mode":"raw","raw":"{\n    \"accountId\": \"5b****71c6489f0029****d4\",\n    \"locationId\": \"5c****ecc6489f0001****b8\",\n    \"products\": [\n        {\n            \"productType\": 1,\n            \"plu\": \"PR03\",\n            \"price\": 800,\n            \"name\": \"Cheese Lovers Pizza\",\n            \"posProductId\": \"DV-POS-3\",\n            \"posCategoryIds\": \"DV-CAT-2\",\n            \"imageUrl\": \"https://cdn.pixabay.com/photo/2016/03/05/09/22/eat-1237432_960_720.png\",\n            \"description\": \"Pizza made for cheese fanatics\",\n            \"deliveryTax\": 9000,\n            \"takeawayTax\": 9000,\n            \"subProducts\": [\n                \"6516732\"\n            ]\n        },\n        {\n            \"productType\": 1,\n            \"plu\": \"PR04\",\n            \"price\": 750,\n            \"name\": \"BBQ Chicken Pizza\",\n            \"posProductId\": \"DV-POS-4\",\n            \"posCategoryIds\": \"DV-CAT-2\",\n            \"imageUrl\": \"\",\n            \"description\": \"The best BBQ Chicken Pizza in town\",\n            \"deliveryTax\": 9000,\n            \"takeawayTax\": 9000,\n            \"subProducts\": [\n                \"6516732\"\n            ]\n        },\n        {\n            \"productType\": 3,\n            \"plu\": \"6516732\",\n            \"price\": 299,\n            \"name\": \"Extra topping\",\n            \"posProductId\": \"6516732\",\n            \"posCategoryIds\": \"\",\n            \"imageUrl\": \"\",\n            \"description\": \"Select your extra topping\",\n            \"deliveryTax\": 0,\n            \"takeawayTax\": 0,\n            \"subProducts\": [\n                \"TP001\",\n                \"TP002\"\n            ],\n            \"min\": 0,\n            \"max\": 2\n        },\n        {\n            \"productType\": 2,\n            \"plu\": \"TP001\",\n            \"price\": 100,\n            \"name\": \"Extra Cheese\",\n            \"posProductId\": \"TP_POS-001\",\n            \"posCategoryIds\": \"\",\n            \"imageUrl\": \"\",\n            \"description\": \"Extra Cheezzzz\",\n            \"deliveryTax\": 9000,\n            \"takeawayTax\": 9000\n        },\n        {\n            \"productType\": 2,\n            \"plu\": \"TP002\",\n            \"price\": 200,\n            \"name\": \"Extra Peperoni\",\n            \"posProductId\": \"TP_POS-002\",\n            \"posCategoryIds\": \"\",\n            \"imageUrl\": \"\",\n            \"description\": \"Extra Peperoni\",\n            \"deliveryTax\": 9000,\n            \"takeawayTax\": 9000\n        }\n    ],\n    \"categories\": [\n        {\n            \"name\": \"Pizza\",\n            \"posCategoryId\": \"DV-CAT-2\",\n            \"imageUrl\": \"\"\n        }\n    ]\n}"},"url":"http://api.brain.io/productAndCategories","description":"<p>Products and categories of the POS should be pushed to Foodstack. We will map the incoming order items to the products.</p>\n<p>Ideally all products that can at one point be ordered online are pushed here.</p>\n<p>Restaurant owners can customise their online menu's by using these products coming from the POS. They can overwrite name, price and images if necessary. Everything that is not overwritten will automatically be pushed online when updates from the POS are pushed</p>\n<p>Price is stored as an int with <strong>2 decimal digits</strong>, so 100.00 S.R. is stored as 100 S.R. It will later be possible to overwrite this on account level.</p>\n<h2 id=\"product-types\">Product types</h2>\n<p>We currently support 4 types of products: Products, ModifierGroups, Modifiers, and Bundles. Modifiers are options that can be selected when ordering a product. They are organised in ModifierGroups that can be assigned to one or more products. Bundles group together products for a customer to choose out of, and are used for creating meal deals.\nWhen pushing products to us you can use the values for product types as displayed in the table below.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Product type</th>\n<th>Integer value</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>Product</td>\n<td>1</td>\n</tr>\n<tr>\n<td>Modifier</td>\n<td>2</td>\n</tr>\n<tr>\n<td>Modifier group</td>\n<td>3</td>\n</tr>\n<tr>\n<td>Bundle</td>\n<td>4</td>\n</tr>\n</tbody>\n</table>\n</div><p>A product can be in one or more categories. posCategoryIds are the references to those categories. It's important to have at least 1 and link every product to it. </p>\n<p>The PLU is normally something that's easier for the customer to use, and it should be the same across all locations for the same product. The PLU (Price Look-up Code) is what will be used for mapping orders coming from the channels. This means this is mandatory.</p>\n<h2 id=\"deleting-products\">Deleting products</h2>\n<p>There is currently no way to directly delete a product. To achieve the desired effect, a list of products can be pushed again, in which products \"to be deleted\" are omitted or de-activated depending on the POS.</p>\n<h2 id=\"multi-select-modifiers\">Multi-select modifiers</h2>\n<p>You can indicate that it must be possible for modifiers in a certain modifier group to be selected more than once.</p>\n<p>This request is almost identical to the previous. The only difference is that the  modifier group (with PLU) has two fields added: <code>max</code>, and <code>multiMax</code>.</p>\n<ol>\n<li><p>The <code>max</code> field gets a value of two. This limits the maximum number of modifiers that can be selected to two. As there are only two modifiers in the group, this in itself wouldn't make much of a difference when modifiers can only be selected once.</p>\n</li>\n<li><p>Adding <code>multiMax</code> makes it so that modifiers in this modifier group can be selected more than once. Because it has a value of two, each modifier can be selected at most two times.</p>\n</li>\n</ol>\n<p>The net effect of these added attributes is as follows: a customer will be able to select up to two sauce modifiers as an example from this modifier group. It doesn't have to be one of each anymore.</p>\n<h3 id=\"selected-by-default\">Selected by default</h3>\n<p>It's possible to set a default quantity for modifiers and meal deal items. With a default quantity of 1, the item is selected by default in the channel menu.</p>\n<p>This is shown in the fifth meal deal example, where the sauce modifier has a field <code>defaultQuantity</code>, with a value of 1. Because of this, the sauce modifier will be selected by default.</p>\n<h2 id=\"product-translations\">Product translations</h2>\n<p>Translations of product names and descriptions can be provided in the JSON.\nA base name (field <code>name</code>) is always required and translations are optional (field <code>nameTranslations</code>). Translations are supported for all product types.</p>\n<p>The translations are passed as a nested JSON object where the property names are language tags and the values are the translations temselves.</p>\n<p>Example:</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code>{\n    \"productType\": 1,\n    \"plu\": \"MEAT-02\",\n    \"price\": 200,\n    \"name\": \"Chicken\",\n    \"nameTranslations\": {\n        \"ar\": \"دجاج\",\n        \"en\": \"Chicken\"\n    },  \n    \"description\": \"Grilled chicken\",\n    \"descriptionTranslations\": {\n        \"ar\": \"دجاج مشوي\",\n        \"en\": \"Grilled chicken.\"\n    }\n}\n</code></pre><p>The language tags are ISO 639-1 (<a href=\"https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes\">https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes</a>) language codes. They can be complemented by a lowercase ISO 3166-1 (<a href=\"https://en.wikipedia.org/wiki/ISO_3166-1\">https://en.wikipedia.org/wiki/ISO_3166-1</a>) country code.</p>\n<p>List of common language tags:</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>name</th>\n<th>language tag</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>Arabic</td>\n<td>ar</td>\n</tr>\n<tr>\n<td>English</td>\n<td>US</td>\n</tr>\n</tbody>\n</table>\n</div>","auth":{"type":"oauth2","oauth2":{"basicConfig":[{"key":"accessToken","value":"{{integratorToken}}"}],"advancedConfig":[{"key":"useBrowser","value":"<use-browser>"}]},"isInherited":true,"source":{"_postman_id":"ec7259bd-82f3-4a09-a170-39a4e647fd84","id":"ec7259bd-82f3-4a09-a170-39a4e647fd84","name":"Foodstack Public API","type":"collection"}},"urlObject":{"host":["http://api.brain.io/productAndCategories"],"query":[],"variable":[]}},"response":[{"id":"03a19912-06d4-45be-a203-c14a21ba0756","name":"Meal deal example 1: Kid Fun Meal Box - drink included","originalRequest":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json","type":"text"}],"body":{"mode":"raw","raw":"{\n    \"accountId\": \"5f****1e953d3a40ec****4f\",\n    \"locationId\": \"5f****9953d3a40ec****53\",\n    \"products\": [\n        {\n            \"productType\": 1,\n            \"plu\": \"BRGR-01\",\n            \"price\": 0,\n            \"name\": \"Hamburger\",\n            \"posProductId\": \"POS-ID-001\",\n            \"posCategoryIds\": [\n                \"POS-CAT-001\"\n            ],\n            \"imageUrl\": \"\",\n            \"description\": \"\",\n            \"deliveryTax\": 6000,\n            \"takeawayTax\": 6000\n        },\n        {\n            \"productType\": 1,\n            \"plu\": \"BRGR-02\",\n            \"price\": 0,\n            \"name\": \"Cheese Burger\",\n            \"posProductId\": \"POS-ID-002\",\n            \"posCategoryIds\": [\n                \"POS-CAT-001\"\n            ],\n            \"imageUrl\": \"\",\n            \"description\": \"\",\n            \"deliveryTax\": 6000,\n            \"takeawayTax\": 6000\n        },\n        {\n            \"productType\": 1,\n            \"plu\": \"FRS-01\",\n            \"price\": 0,\n            \"name\": \"Small Fries\",\n            \"posProductId\": \"POS-ID-003\",\n            \"posCategoryIds\": [\n                \"POS-CAT-001\"\n            ],\n            \"imageUrl\": \"\",\n            \"description\": \"\",\n            \"deliveryTax\": 6000,\n            \"takeawayTax\": 6000,\n            \"subProducts\": [\n                \"SCS-01\"\n            ]\n        },\n        {\n            \"productType\": 1,\n            \"plu\": \"FRS-02\",\n            \"price\": 0,\n            \"name\": \"Medium Fries\",\n            \"posProductId\": \"POS-ID-004\",\n            \"posCategoryIds\": [\n                \"POS-CAT-001\"\n            ],\n            \"imageUrl\": \"\",\n            \"description\": \"\",\n            \"deliveryTax\": 6000,\n            \"takeawayTax\": 6000,\n            \"subProducts\": [\n                \"SCS-01\"\n            ]\n        },\n        {\n            \"productType\": 1,\n            \"plu\": \"FRS-03\",\n            \"price\": 0,\n            \"name\": \"Large Fries\",\n            \"posProductId\": \"POS-ID-005\",\n            \"posCategoryIds\": [\n                \"POS-CAT-001\"\n            ],\n            \"imageUrl\": \"\",\n            \"description\": \"\",\n            \"deliveryTax\": 6000,\n            \"takeawayTax\": 6000,\n            \"subProducts\": [\n                \"SCS-01\"\n            ]\n        },\n        {\n            \"productType\": 1,\n            \"plu\": \"DRNK-01\",\n            \"price\": 0,\n            \"name\": \"Lemonade\",\n            \"posProductId\": \"POS-ID-006\",\n            \"posCategoryIds\": [\n                \"POS-CAT-001\"\n            ],\n            \"imageUrl\": \"\",\n            \"description\": \"\",\n            \"deliveryTax\": 6000,\n            \"takeawayTax\": 6000\n        },\n        {\n            \"productType\": 1,\n            \"plu\": \"DRNK-02\",\n            \"price\": 0,\n            \"name\": \"Iced Tea\",\n            \"posProductId\": \"POS-ID-007\",\n            \"posCategoryIds\": [\n                \"POS-CAT-001\"\n            ],\n            \"imageUrl\": \"\",\n            \"description\": \"\",\n            \"deliveryTax\": 6000,\n            \"takeawayTax\": 6000\n        },\n        {\n            \"productType\": 4,\n            \"plu\": \"BNDL-01\",\n            \"price\": 0,\n            \"name\": \"Choose Your Burger\",\n            \"posProductId\": \"POS-ID-008\",\n            \"posCategoryIds\": [\n                \"POS-CAT-001\"\n            ],\n            \"imageUrl\": \"\",\n            \"description\": \"\",\n            \"min\": 1,\n            \"max\": 1,\n            \"deliveryTax\": 6000,\n            \"takeawayTax\": 6000,\n            \"subProducts\": [\n                \"BRGR-01\",\n                \"BRGR-02\"\n            ]\n        },\n        {\n            \"productType\": 4,\n            \"plu\": \"BNDL-02\",\n            \"price\": 0,\n            \"name\": \"Choose Your Fries\",\n            \"posProductId\": \"POS-ID-009\",\n            \"posCategoryIds\": [\n                \"POS-CAT-001\"\n            ],\n            \"imageUrl\": \"\",\n            \"description\": \"\",\n            \"min\": 1,\n            \"max\": 1,\n            \"deliveryTax\": 6000,\n            \"takeawayTax\": 6000,\n            \"subProducts\": [\n                \"FRS-01\",\n                \"FRS-02\",\n                \"FRS-03\"\n            ]\n        },\n        {\n            \"productType\": 4,\n            \"plu\": \"BNDL-03\",\n            \"price\": 0,\n            \"name\": \"Choose Your Drink\",\n            \"posProductId\": \"POS-ID-010\",\n            \"posCategoryIds\": [\n                \"POS-CAT-001\"\n            ],\n            \"imageUrl\": \"\",\n            \"description\": \"\",\n            \"min\": 1,\n            \"max\": 1,\n            \"deliveryTax\": 6000,\n            \"takeawayTax\": 6000,\n            \"subProducts\": [\n                \"DRNK-01\",\n                \"DRNK-02\"\n            ]\n        },\n        {\n            \"productType\": 1,\n            \"isCombo\": true,\n            \"plu\": \"CMB-01\",\n            \"price\": 800,\n            \"name\": \"Kid Fun Meal Box\",\n            \"posProductId\": \"POS-ID-011\",\n            \"posCategoryIds\": [\n                \"POS-CAT-001\"\n            ],\n            \"imageUrl\": \"\",\n            \"description\": \"\",\n            \"deliveryTax\": 6000,\n            \"takeawayTax\": 6000,\n            \"subProducts\": [\n                \"BNDL-01\",\n                \"BNDL-02\",\n                \"BNDL-03\"\n            ]\n        },\n        {\n            \"productType\": 2,\n            \"plu\": \"SC-01\",\n            \"price\": 50,\n            \"name\": \"Mayonnaise\",\n            \"posProductId\": \"POS-ID-012\",\n            \"posCategoryIds\": [\n                \"POS-CAT-001\"\n            ],\n            \"imageUrl\": \"\",\n            \"description\": \"\",\n            \"deliveryTax\": 6000,\n            \"takeawayTax\": 6000\n        },\n        {\n            \"productType\": 2,\n            \"plu\": \"SC-02\",\n            \"price\": 50,\n            \"name\": \"Ketchup\",\n            \"posProductId\": \"POS-ID-013\",\n            \"posCategoryIds\": [\n                \"POS-CAT-001\"\n            ],\n            \"imageUrl\": \"\",\n            \"description\": \"\",\n            \"deliveryTax\": 6000,\n            \"takeawayTax\": 6000\n        },\n        {\n            \"productType\": 3,\n            \"plu\": \"SCS-01\",\n            \"name\": \"Sauce Selection\",\n            \"posProductId\": \"POS-ID-014\",\n            \"posCategoryIds\": [\n                \"POS-CAT-001\"\n            ],\n            \"imageUrl\": \"\",\n            \"description\": \"\",\n            \"deliveryTax\": 6000,\n            \"takeawayTax\": 6000,\n            \"subProducts\": [\n                \"SC-01\",\n                \"SC-02\"\n            ]\n        }\n    ],\n    \"categories\": [\n        {\n            \"name\": \"POS Products\",\n            \"posCategoryId\": \"POS-CAT-001\",\n            \"imageUrl\": \"\"\n        }\n    ]\n}","options":{"raw":{"language":"json"}}},"url":"http://api.brain.io/productAndCategories"},"_postman_previewlanguage":"Text","header":[],"cookie":[],"responseTime":null,"body":""},{"id":"0d29d994-7824-47c1-bf91-7ad8dd60ea54","name":"Meal deal example 6: Hamburger combo","originalRequest":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json","type":"text"}],"body":{"mode":"raw","raw":"{\n    \"accountId\": \"5f7ac9e60f73e82f269ec822\",\n    \"locationId\": \"5f7aca150f73e82f269ec827\",\n    \"products\": [\n        {\n            \"productType\": 1,\n            \"isCombo\": true,\n            \"plu\": \"P-BRGR\",\n            \"price\": 0,\n            \"name\": \"Hamburger\",\n            \"posProductId\": \"POS-ID-0001\",\n            \"posCategoryIds\": [\n                \"POS-CAT-0001\"\n            ],\n            \"subProducts\": [\n                \"MG-FRS\"\n            ],\n            \"imageUrl\": \"\",\n            \"description\": \"\",\n            \"deliveryTax\": 6000,\n            \"takeawayTax\": 6000\n        },\n        {\n            \"productType\": 1,\n            \"plu\": \"M-FRS-S\",\n            \"price\": 100,\n            \"name\": \"Small Fries\",\n            \"posProductId\": \"POS-ID-0002\",\n            \"posCategoryIds\": [\n                \"POS-CAT-0001\"\n            ],\n            \"subProducts\": [\n                \"MG-SC\"\n            ],\n            \"imageUrl\": \"\",\n            \"description\": \"\",\n            \"deliveryTax\": 6000,\n            \"takeawayTax\": 6000\n        },\n        {\n            \"productType\": 1,\n            \"plu\": \"M-FRS-M\",\n            \"price\": 150,\n            \"name\": \"Medium Fries\",\n            \"posProductId\": \"POS-ID-0003\",\n            \"posCategoryIds\": [\n                \"POS-CAT-0001\"\n            ],\n            \"subProducts\": [\n                \"MG-SC\"\n            ],\n            \"imageUrl\": \"\",\n            \"description\": \"\",\n            \"deliveryTax\": 6000,\n            \"takeawayTax\": 6000\n        },\n        {\n            \"productType\": 1,\n            \"plu\": \"M-FRS-L\",\n            \"price\": 200,\n            \"name\": \"Large Fries\",\n            \"posProductId\": \"POS-ID-0004\",\n            \"posCategoryIds\": [\n                \"POS-CAT-0001\"\n            ],\n            \"subProducts\": [\n                \"MG-SC\"\n            ],\n            \"imageUrl\": \"\",\n            \"description\": \"\",\n            \"deliveryTax\": 6000,\n            \"takeawayTax\": 6000\n        },\n        {\n            \"productType\": 3,\n            \"plu\": \"MG-FRS\",\n            \"name\": \"Fries Selection\",\n            \"posProductId\": \"POS-ID-0005\",\n            \"posCategoryIds\": [\n                \"POS-CAT-0001\"\n            ],\n            \"subProducts\": [\n                \"M-FRS-S\",\n                \"M-FRS-M\",\n                \"M-FRS-L\"\n            ],\n            \"imageUrl\": \"\",\n            \"description\": \"\",\n            \"deliveryTax\": 6000,\n            \"takeawayTax\": 6000\n        },\n        {\n            \"productType\": 2,\n            \"plu\": \"M-SC-MA\",\n            \"price\": 50,\n            \"name\": \"Mayonnaise\",\n            \"posProductId\": \"POS-ID-0006\",\n            \"posCategoryIds\": [\n                \"POS-CAT-0001\"\n            ],\n            \"imageUrl\": \"\",\n            \"description\": \"\",\n            \"deliveryTax\": 6000,\n            \"takeawayTax\": 6000\n        },\n        {\n            \"productType\": 2,\n            \"plu\": \"M-SC-KE\",\n            \"price\": 50,\n            \"name\": \"Ketchup\",\n            \"posProductId\": \"POS-ID-0007\",\n            \"posCategoryIds\": [\n                \"POS-CAT-0001\"\n            ],\n            \"imageUrl\": \"\",\n            \"description\": \"\",\n            \"deliveryTax\": 6000,\n            \"takeawayTax\": 6000\n        },\n        {\n            \"productType\": 3,\n            \"plu\": \"MG-SC\",\n            \"name\": \"Sauce Selection\",\n            \"posProductId\": \"POS-ID-0008\",\n            \"posCategoryIds\": [\n                \"POS-CAT-0001\"\n            ],\n            \"subProducts\": [\n                \"M-SC-MA\",\n                \"M-SC-KE\"\n            ],\n            \"imageUrl\": \"\",\n            \"description\": \"\",\n            \"deliveryTax\": 6000,\n            \"takeawayTax\": 6000\n        }\n    ],\n    \"categories\": [\n        {\n            \"name\": \"POS Products\",\n            \"posCategoryId\": \"POS-CAT-0001\",\n            \"imageUrl\": \"\"\n        }\n    ]\n}","options":{"raw":{"language":"json"}}},"url":"http://api.brain.io/productAndCategories"},"_postman_previewlanguage":"Text","header":[],"cookie":[],"responseTime":null,"body":""},{"id":"198816ac-757a-4557-918e-af36a1c72bca","name":"Meal deal example 5: Kid Fun Meal Box - multiselect modifiers","originalRequest":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json","type":"text"}],"body":{"mode":"raw","raw":"{\n    \"accountId\": \"5f578c59b3f0c76fccbf26a7\",\n    \"locationId\": \"5f578c6cb3f0c76fccbf26ac\",\n    \"products\": [\n        {\n            \"productType\": 1,\n            \"plu\": \"BRGR-01\",\n            \"price\": 0,\n            \"name\": \"Hamburger\",\n            \"posProductId\": \"POS-ID-001\",\n            \"posCategoryIds\": [\n                \"POS-CAT-001\"\n            ],\n            \"imageUrl\": \"\",\n            \"description\": \"\",\n            \"deliveryTax\": 6000,\n            \"takeawayTax\": 6000\n        },\n        {\n            \"productType\": 1,\n            \"plu\": \"BRGR-02\",\n            \"price\": 0,\n            \"name\": \"Cheese Burger\",\n            \"posProductId\": \"POS-ID-002\",\n            \"posCategoryIds\": [\n                \"POS-CAT-001\"\n            ],\n            \"imageUrl\": \"\",\n            \"description\": \"\",\n            \"deliveryTax\": 6000,\n            \"takeawayTax\": 6000\n        },\n        {\n            \"productType\": 1,\n            \"plu\": \"FRS-01\",\n            \"price\": 0,\n            \"name\": \"Small Fries\",\n            \"posProductId\": \"POS-ID-003\",\n            \"posCategoryIds\": [\n                \"POS-CAT-001\"\n            ],\n            \"imageUrl\": \"\",\n            \"description\": \"\",\n            \"deliveryTax\": 6000,\n            \"takeawayTax\": 6000,\n            \"subProducts\": [\n                \"SCS-01\"\n            ]\n        },\n        {\n            \"productType\": 1,\n            \"plu\": \"FRS-02\",\n            \"price\": 0,\n            \"name\": \"Medium Fries\",\n            \"posProductId\": \"POS-ID-004\",\n            \"posCategoryIds\": [\n                \"POS-CAT-001\"\n            ],\n            \"imageUrl\": \"\",\n            \"description\": \"\",\n            \"deliveryTax\": 6000,\n            \"takeawayTax\": 6000,\n            \"subProducts\": [\n                \"SCS-01\"\n            ]\n        },\n        {\n            \"productType\": 1,\n            \"plu\": \"FRS-03\",\n            \"price\": 0,\n            \"name\": \"Large Fries\",\n            \"posProductId\": \"POS-ID-005\",\n            \"posCategoryIds\": [\n                \"POS-CAT-001\"\n            ],\n            \"imageUrl\": \"\",\n            \"description\": \"\",\n            \"deliveryTax\": 6000,\n            \"takeawayTax\": 6000,\n            \"subProducts\": [\n                \"SCS-01\"\n            ]\n        },\n        {\n            \"productType\": 1,\n            \"plu\": \"DRNK-01\",\n            \"price\": 0,\n            \"name\": \"Lemonade\",\n            \"posProductId\": \"POS-ID-006\",\n            \"posCategoryIds\": [\n                \"POS-CAT-001\"\n            ],\n            \"imageUrl\": \"\",\n            \"description\": \"\",\n            \"deliveryTax\": 6000,\n            \"takeawayTax\": 6000\n        },\n        {\n            \"productType\": 1,\n            \"plu\": \"DRNK-02\",\n            \"price\": 0,\n            \"name\": \"Iced Tea\",\n            \"posProductId\": \"POS-ID-007\",\n            \"posCategoryIds\": [\n                \"POS-CAT-001\"\n            ],\n            \"imageUrl\": \"\",\n            \"description\": \"\",\n            \"deliveryTax\": 6000,\n            \"takeawayTax\": 6000\n        },\n        {\n            \"productType\": 4,\n            \"plu\": \"BNDL-01\",\n            \"price\": 0,\n            \"name\": \"Choose Your Burger\",\n            \"posProductId\": \"POS-ID-008\",\n            \"posCategoryIds\": [\n                \"POS-CAT-001\"\n            ],\n            \"imageUrl\": \"\",\n            \"description\": \"\",\n            \"min\": 1,\n            \"max\": 1,\n            \"deliveryTax\": 6000,\n            \"takeawayTax\": 6000,\n            \"subProducts\": [\n                \"BRGR-01\",\n                \"BRGR-02\"\n            ]\n        },\n        {\n            \"productType\": 4,\n            \"plu\": \"BNDL-02\",\n            \"price\": 0,\n            \"name\": \"Choose Your Fries\",\n            \"posProductId\": \"POS-ID-009\",\n            \"posCategoryIds\": [\n                \"POS-CAT-001\"\n            ],\n            \"imageUrl\": \"\",\n            \"description\": \"\",\n            \"min\": 1,\n            \"max\": 1,\n            \"deliveryTax\": 6000,\n            \"takeawayTax\": 6000,\n            \"subProducts\": [\n                \"FRS-01\",\n                \"FRS-02\",\n                \"FRS-03\"\n            ]\n        },\n        {\n            \"productType\": 4,\n            \"plu\": \"BNDL-03\",\n            \"price\": 0,\n            \"name\": \"Choose Your Drink\",\n            \"posProductId\": \"POS-ID-010\",\n            \"posCategoryIds\": [\n                \"POS-CAT-001\"\n            ],\n            \"imageUrl\": \"\",\n            \"description\": \"\",\n            \"min\": 1,\n            \"max\": 1,\n            \"deliveryTax\": 6000,\n            \"takeawayTax\": 6000,\n            \"subProducts\": [\n                \"DRNK-01\",\n                \"DRNK-02\"\n            ]\n        },\n        {\n            \"productType\": 1,\n            \"isCombo\": true,\n            \"plu\": \"CMB-01\",\n            \"price\": 800,\n            \"name\": \"Kid Fun Meal Box\",\n            \"posProductId\": \"POS-ID-011\",\n            \"posCategoryIds\": [\n                \"POS-CAT-001\"\n            ],\n            \"imageUrl\": \"\",\n            \"description\": \"\",\n            \"deliveryTax\": 6000,\n            \"takeawayTax\": 6000,\n            \"subProducts\": [\n                \"BNDL-01\",\n                \"BNDL-02\",\n                \"BNDL-03\"\n            ]\n        },\n        {\n            \"productType\": 2,\n            \"plu\": \"SC-01\",\n            \"price\": 50,\n            \"name\": \"Mayonnaise\",\n            \"posProductId\": \"POS-ID-012\",\n            \"posCategoryIds\": [\n                \"POS-CAT-001\"\n            ],\n            \"imageUrl\": \"\",\n            \"description\": \"\",\n            \"deliveryTax\": 6000,\n            \"takeawayTax\": 6000,\n            \"defaultQuantity\": 1\n        },\n        {\n            \"productType\": 2,\n            \"plu\": \"SC-02\",\n            \"price\": 50,\n            \"name\": \"Ketchup\",\n            \"posProductId\": \"POS-ID-013\",\n            \"posCategoryIds\": [\n                \"POS-CAT-001\"\n            ],\n            \"imageUrl\": \"\",\n            \"description\": \"\",\n            \"deliveryTax\": 6000,\n            \"takeawayTax\": 6000\n        },\n        {\n            \"productType\": 3,\n            \"plu\": \"SCS-01\",\n            \"name\": \"Sauce Selection\",\n            \"posProductId\": \"POS-ID-014\",\n            \"posCategoryIds\": [\n                \"POS-CAT-001\"\n            ],\n            \"imageUrl\": \"\",\n            \"description\": \"\",\n            \"deliveryTax\": 6000,\n            \"takeawayTax\": 6000,\n            \"subProducts\": [\n                \"SC-01\",\n                \"SC-02\"\n            ],\n            \"max\": 2,\n            \"multiMax\": 2\n        }\n    ],\n    \"categories\": [\n        {\n            \"name\": \"POS Products\",\n            \"posCategoryId\": \"POS-CAT-001\",\n            \"imageUrl\": \"\"\n        }\n    ]\n}","options":{"raw":{"language":"json"}}},"url":"http://api.brain.io/productAndCategories"},"_postman_previewlanguage":"Text","header":[],"cookie":[],"responseTime":null,"body":""},{"id":"4d24ce0a-8443-4b9e-84b6-41efd5ae1d31","name":"Meal deal example 4: Healthy Snack Bowl","originalRequest":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json","type":"text"}],"body":{"mode":"raw","raw":"{\n    \"accountId\": \"5f****8ba850c18614****94\",\n    \"locationId\": \"5f****aea850c18614****55\",\n    \"products\": [\n        {\n            \"productType\": 1,\n            \"plu\": \"RICE-01\",\n            \"price\": 0,\n            \"name\": \"Brown Rice\",\n            \"posProductId\": \"POS-ID-001\",\n            \"posCategoryIds\": [\n                \"POS-CAT-001\"\n            ],\n            \"imageUrl\": \"\",\n            \"description\": \"\",\n            \"deliveryTax\": 6000,\n            \"takeawayTax\": 6000\n        },\n        {\n            \"productType\": 1,\n            \"plu\": \"RICE-02\",\n            \"price\": 0,\n            \"name\": \"White Rice\",\n            \"posProductId\": \"POS-ID-002\",\n            \"posCategoryIds\": [\n                \"POS-CAT-001\"\n            ],\n            \"imageUrl\": \"\",\n            \"description\": \"\",\n            \"deliveryTax\": 6000,\n            \"takeawayTax\": 6000\n        },\n        {\n            \"productType\": 1,\n            \"plu\": \"VEG-01\",\n            \"price\": 0,\n            \"name\": \"Corn\",\n            \"posProductId\": \"POS-ID-003\",\n            \"posCategoryIds\": [\n                \"POS-CAT-001\"\n            ],\n            \"imageUrl\": \"\",\n            \"description\": \"\",\n            \"deliveryTax\": 6000,\n            \"takeawayTax\": 6000,\n            \"subProducts\": [\n                \"SCS-01\"\n            ]\n        },\n        {\n            \"productType\": 1,\n            \"plu\": \"VEG-02\",\n            \"price\": 0,\n            \"name\": \"Carrots\",\n            \"posProductId\": \"POS-ID-004\",\n            \"posCategoryIds\": [\n                \"POS-CAT-001\"\n            ],\n            \"imageUrl\": \"\",\n            \"description\": \"\",\n            \"deliveryTax\": 6000,\n            \"takeawayTax\": 6000,\n            \"subProducts\": [\n                \"SCS-01\"\n            ]\n        },\n        {\n            \"productType\": 1,\n            \"plu\": \"VEG-03\",\n            \"price\": 0,\n            \"name\": \"Avocado\",\n            \"posProductId\": \"POS-ID-005\",\n            \"posCategoryIds\": [\n                \"POS-CAT-001\"\n            ],\n            \"imageUrl\": \"\",\n            \"description\": \"\",\n            \"deliveryTax\": 6000,\n            \"takeawayTax\": 6000,\n            \"subProducts\": [\n                \"SCS-01\"\n            ]\n        },\n        {\n            \"productType\": 1,\n            \"plu\": \"MEAT-01\",\n            \"price\": 0,\n            \"name\": \"Beef\",\n            \"posProductId\": \"POS-ID-006\",\n            \"posCategoryIds\": [\n                \"POS-CAT-001\"\n            ],\n            \"imageUrl\": \"\",\n            \"description\": \"\",\n            \"deliveryTax\": 6000,\n            \"takeawayTax\": 6000\n        },\n        {\n            \"productType\": 1,\n            \"plu\": \"MEAT-02\",\n            \"price\": 0,\n            \"name\": \"Chicken\",\n            \"posProductId\": \"POS-ID-007\",\n            \"posCategoryIds\": [\n                \"POS-CAT-001\"\n            ],\n            \"imageUrl\": \"\",\n            \"description\": \"\",\n            \"deliveryTax\": 6000,\n            \"takeawayTax\": 6000\n        },\n        {\n            \"productType\": 1,\n            \"plu\": \"XTRA-01\",\n            \"price\": 0,\n            \"name\": \"Nuts\",\n            \"posProductId\": \"POS-ID-008\",\n            \"posCategoryIds\": [\n                \"POS-CAT-001\"\n            ],\n            \"imageUrl\": \"\",\n            \"description\": \"\",\n            \"deliveryTax\": 6000,\n            \"takeawayTax\": 6000\n        },\n        {\n            \"productType\": 1,\n            \"plu\": \"XTRA-02\",\n            \"price\": 0,\n            \"name\": \"Crispy Onions\",\n            \"posProductId\": \"POS-ID-009\",\n            \"posCategoryIds\": [\n                \"POS-CAT-001\"\n            ],\n            \"imageUrl\": \"\",\n            \"description\": \"\",\n            \"deliveryTax\": 6000,\n            \"takeawayTax\": 6000\n        },\n        {\n            \"productType\": 1,\n            \"plu\": \"SAUC-01\",\n            \"price\": 0,\n            \"name\": \"Sweet-and-Sour\",\n            \"posProductId\": \"POS-ID-010\",\n            \"posCategoryIds\": [\n                \"POS-CAT-001\"\n            ],\n            \"imageUrl\": \"\",\n            \"description\": \"\",\n            \"deliveryTax\": 6000,\n            \"takeawayTax\": 6000\n        },\n        {\n            \"productType\": 1,\n            \"plu\": \"SAUC-02\",\n            \"price\": 0,\n            \"name\": \"Spicy Chili\",\n            \"posProductId\": \"POS-ID-011\",\n            \"posCategoryIds\": [\n                \"POS-CAT-001\"\n            ],\n            \"imageUrl\": \"\",\n            \"description\": \"\",\n            \"deliveryTax\": 6000,\n            \"takeawayTax\": 6000\n        },\n        {\n            \"productType\": 4,\n            \"plu\": \"BNDL-01\",\n            \"price\": 0,\n            \"name\": \"Choose Your Rice\",\n            \"posProductId\": \"POS-ID-012\",\n            \"posCategoryIds\": [\n                \"POS-CAT-001\"\n            ],\n            \"imageUrl\": \"\",\n            \"description\": \"\",\n            \"min\": 1,\n            \"max\": 1,\n            \"deliveryTax\": 6000,\n            \"takeawayTax\": 6000,\n            \"subProducts\": [\n                \"RICE-01\",\n                \"RICE-02\"\n            ]\n        },\n        {\n            \"productType\": 4,\n            \"plu\": \"BNDL-02\",\n            \"price\": 0,\n            \"name\": \"Choose Your Veggies\",\n            \"posProductId\": \"POS-ID-013\",\n            \"posCategoryIds\": [\n                \"POS-CAT-001\"\n            ],\n            \"imageUrl\": \"\",\n            \"description\": \"\",\n            \"min\": 1,\n            \"max\": 1,\n            \"deliveryTax\": 6000,\n            \"takeawayTax\": 6000,\n            \"subProducts\": [\n                \"VEG-01\",\n                \"VEG-02\",\n                \"VEG-03\"\n            ]\n        },\n        {\n            \"productType\": 4,\n            \"plu\": \"BNDL-03\",\n            \"price\": 0,\n            \"name\": \"Choose Your Meat\",\n            \"posProductId\": \"POS-ID-014\",\n            \"posCategoryIds\": [\n                \"POS-CAT-001\"\n            ],\n            \"imageUrl\": \"\",\n            \"description\": \"\",\n            \"min\": 1,\n            \"max\": 1,\n            \"deliveryTax\": 6000,\n            \"takeawayTax\": 6000,\n            \"subProducts\": [\n                \"MEAT-01\",\n                \"MEAT-02\"\n            ]\n        },\n        {\n            \"productType\": 4,\n            \"plu\": \"BNDL-04\",\n            \"price\": 0,\n            \"name\": \"Choose Your Extras\",\n            \"posProductId\": \"POS-ID-015\",\n            \"posCategoryIds\": [\n                \"POS-CAT-001\"\n            ],\n            \"imageUrl\": \"\",\n            \"description\": \"\",\n            \"min\": 1,\n            \"max\": 1,\n            \"deliveryTax\": 6000,\n            \"takeawayTax\": 6000,\n            \"subProducts\": [\n                \"XTRA-01\",\n                \"XTRA-02\"\n            ]\n        },\n        {\n            \"productType\": 4,\n            \"plu\": \"BNDL-05\",\n            \"price\": 0,\n            \"name\": \"Choose Your Sauce\",\n            \"posProductId\": \"POS-ID-016\",\n            \"posCategoryIds\": [\n                \"POS-CAT-001\"\n            ],\n            \"imageUrl\": \"\",\n            \"description\": \"\",\n            \"min\": 1,\n            \"max\": 1,\n            \"deliveryTax\": 6000,\n            \"takeawayTax\": 6000,\n            \"subProducts\": [\n                \"SAUC-01\",\n                \"SAUC-02\"\n            ]\n        },\n        {\n            \"productType\": 1,\n            \"isCombo\": true,\n            \"plu\": \"CMB-01\",\n            \"price\": 1000,\n            \"name\": \"Healthy Snack Bowl\",\n            \"posProductId\": \"POS-ID-017\",\n            \"posCategoryIds\": [\n                \"POS-CAT-001\"\n            ],\n            \"imageUrl\": \"\",\n            \"description\": \"\",\n            \"deliveryTax\": 6000,\n            \"takeawayTax\": 6000,\n            \"subProducts\": [\n                \"BNDL-01\",\n                \"BNDL-02\",\n                \"BNDL-03\",\n                \"BNDL-04\",\n                \"BNDL-05\"\n            ]\n        }\n    ],\n    \"categories\": [\n        {\n            \"name\": \"POS Products\",\n            \"posCategoryId\": \"POS-CAT-001\",\n            \"imageUrl\": \"\"\n        }\n    ]\n}","options":{"raw":{"language":"json"}}},"url":"http://api.brain.io/productAndCategories"},"_postman_previewlanguage":"Text","header":[],"cookie":[],"responseTime":null,"body":""},{"id":"4e266df4-6437-4f97-996b-27b3aeba4d2f","name":"Insert/update meal deals (with embeded groups / nested modifiers)","originalRequest":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json","type":"text"}],"body":{"mode":"raw","raw":"{\n    \"accountId\": \"{{accountId}}\",\n    \"locationId\": \"{{locationId}}\",\n    \"products\": [\n        {\n            \"productType\": 1,\n            \"plu\": \"PR01\",\n            \"price\": 800,\n            \"name\": \"Cheese Lovers Pizza\",\n            \"posProductId\": \"DV-POS-3\",\n            \"posCategoryIds\": \"DV-CAT-2\",\n            \"imageUrl\": \"\",\n            \"description\": \"Pizza made for cheese fanatics\",\n            \"deliveryTax\": 9000,\n            \"takeawayTax\": 9000,\n            \"subProducts\": [\n                \"MG2\"\n            ]\n        },\n        {\n            \"productType\": 3,\n            \"plu\": \"MG2\",\n            \"price\": 299,\n            \"name\": \"Extra topping\",\n            \"posProductId\": \"6516732\",\n            \"posCategoryIds\": \"\",\n            \"imageUrl\": \"\",\n            \"description\": \"Select your extra topping\",\n            \"deliveryTax\": 0,\n            \"takeawayTax\": 0,\n            \"subProducts\": [\n                \"PR2\"\n            ],\n            \"min\": 0,\n            \"max\": 2\n        },\n        {\n            \"productType\": 1,\n            \"plu\": \"PR2\",\n            \"price\": 100,\n            \"name\": \"Extra Cheese\",\n            \"posProductId\": \"TP_POS-001\",\n            \"posCategoryIds\": \"\",\n            \"imageUrl\": \"\",\n            \"description\": \"Extra Cheezzzz\",\n            \"deliveryTax\": 9000,\n            \"takeawayTax\": 9000,\n            \"subProducts\": [\n                \"MG1\"\n            ]\n        },\n        {\n            \"productType\": 3,\n            \"plu\": \"MG1\",\n            \"price\": 750,\n            \"name\": \"Choose your sauce\",\n            \"posProductId\": \"DV-POS-4\",\n            \"posCategoryIds\": \"DV-CAT-2\",\n            \"imageUrl\": \"\",\n            \"description\": \"The best BBQ Chicken Pizza in town\",\n            \"deliveryTax\": 9000,\n            \"takeawayTax\": 9000,\n            \"subProducts\": [\n                \"MOD1\"\n            ],\n            \"min\": 0,\n            \"max\": 1\n        },\n        {\n            \"productType\": 2,\n            \"plu\": \"MOD1\",\n            \"price\": 200,\n            \"name\": \"Mayo\",\n            \"posProductId\": \"TP_POS-002\",\n            \"posCategoryIds\": \"\",\n            \"imageUrl\": \"\",\n            \"description\": \"Extra Peperoni\",\n            \"deliveryTax\": 9000,\n            \"takeawayTax\": 9000\n        }\n    ],\n    \"categories\": [\n        {\n            \"name\": \"Pizza\",\n            \"posCategoryId\": \"DV-CAT-2\",\n            \"imageUrl\": \"\"\n        }\n    ]\n}","options":{"raw":{"language":"json"}}},"url":"http://api.brain.io/productAndCategories"},"_postman_previewlanguage":"Text","header":[],"cookie":[],"responseTime":null,"body":""},{"id":"7e24f241-c307-434d-b5d0-6c06bf3422b3","name":"Meal deal example 2: Kid Fun Meal Box - drink as upsell","originalRequest":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json","type":"text"}],"body":{"mode":"raw","raw":"{\n    \"accountId\": \"5f****04e9a87394fa****99\",\n    \"locationId\": \"5f****64e9a87394fa****9d\",\n    \"products\": [\n        {\n            \"productType\": 1,\n            \"plu\": \"BRGR-01\",\n            \"price\": 0,\n            \"name\": \"Hamburger\",\n            \"posProductId\": \"POS-ID-001\",\n            \"posCategoryIds\": [\n                \"POS-CAT-001\"\n            ],\n            \"imageUrl\": \"\",\n            \"description\": \"\",\n            \"deliveryTax\": 6000,\n            \"takeawayTax\": 6000\n        },\n        {\n            \"productType\": 1,\n            \"plu\": \"BRGR-02\",\n            \"price\": 0,\n            \"name\": \"Cheese Burger\",\n            \"posProductId\": \"POS-ID-002\",\n            \"posCategoryIds\": [\n                \"POS-CAT-001\"\n            ],\n            \"imageUrl\": \"\",\n            \"description\": \"\",\n            \"deliveryTax\": 6000,\n            \"takeawayTax\": 6000\n        },\n        {\n            \"productType\": 1,\n            \"plu\": \"FRS-01\",\n            \"price\": 0,\n            \"name\": \"Small Fries\",\n            \"posProductId\": \"POS-ID-003\",\n            \"posCategoryIds\": [\n                \"POS-CAT-001\"\n            ],\n            \"imageUrl\": \"\",\n            \"description\": \"\",\n            \"deliveryTax\": 6000,\n            \"takeawayTax\": 6000,\n            \"subProducts\": [\n                \"SCS-01\"\n            ]\n        },\n        {\n            \"productType\": 1,\n            \"plu\": \"FRS-02\",\n            \"price\": 0,\n            \"name\": \"Medium Fries\",\n            \"posProductId\": \"POS-ID-004\",\n            \"posCategoryIds\": [\n                \"POS-CAT-001\"\n            ],\n            \"imageUrl\": \"\",\n            \"description\": \"\",\n            \"deliveryTax\": 6000,\n            \"takeawayTax\": 6000,\n            \"subProducts\": [\n                \"SCS-01\"\n            ]\n        },\n        {\n            \"productType\": 1,\n            \"plu\": \"FRS-03\",\n            \"price\": 0,\n            \"name\": \"Large Fries\",\n            \"posProductId\": \"POS-ID-005\",\n            \"posCategoryIds\": [\n                \"POS-CAT-001\"\n            ],\n            \"imageUrl\": \"\",\n            \"description\": \"\",\n            \"deliveryTax\": 6000,\n            \"takeawayTax\": 6000,\n            \"subProducts\": [\n                \"SCS-01\"\n            ]\n        },\n        {\n            \"productType\": 1,\n            \"plu\": \"DRNK-01\",\n            \"price\": 420,\n            \"name\": \"Lemonade\",\n            \"posProductId\": \"POS-ID-006\",\n            \"posCategoryIds\": [\n                \"POS-CAT-001\"\n            ],\n            \"imageUrl\": \"\",\n            \"description\": \"\",\n            \"deliveryTax\": 6000,\n            \"takeawayTax\": 6000\n        },\n        {\n            \"productType\": 1,\n            \"plu\": \"DRNK-02\",\n            \"price\": 400,\n            \"name\": \"Iced Tea\",\n            \"posProductId\": \"POS-ID-007\",\n            \"posCategoryIds\": [\n                \"POS-CAT-001\"\n            ],\n            \"imageUrl\": \"\",\n            \"description\": \"\",\n            \"deliveryTax\": 6000,\n            \"takeawayTax\": 6000\n        },\n        {\n            \"productType\": 4,\n            \"plu\": \"BNDL-01\",\n            \"price\": 0,\n            \"name\": \"Choose Your Burger\",\n            \"posProductId\": \"POS-ID-008\",\n            \"posCategoryIds\": [\n                \"POS-CAT-001\"\n            ],\n            \"imageUrl\": \"\",\n            \"description\": \"\",\n            \"min\": 1,\n            \"max\": 1,\n            \"deliveryTax\": 6000,\n            \"takeawayTax\": 6000,\n            \"subProducts\": [\n                \"BRGR-01\",\n                \"BRGR-02\"\n            ]\n        },\n        {\n            \"productType\": 4,\n            \"plu\": \"BNDL-02\",\n            \"price\": 0,\n            \"name\": \"Choose Your Fries\",\n            \"posProductId\": \"POS-ID-009\",\n            \"posCategoryIds\": [\n                \"POS-CAT-001\"\n            ],\n            \"imageUrl\": \"\",\n            \"description\": \"\",\n            \"min\": 1,\n            \"max\": 1,\n            \"deliveryTax\": 6000,\n            \"takeawayTax\": 6000,\n            \"subProducts\": [\n                \"FRS-01\",\n                \"FRS-02\",\n                \"FRS-03\"\n            ]\n        },\n        {\n            \"productType\": 3,\n            \"plu\": \"UPSLL-01\",\n            \"name\": \"Add a Drink? (not included)\",\n            \"posProductId\": \"POS-ID-010\",\n            \"posCategoryIds\": [\n                \"POS-CAT-001\"\n            ],\n            \"imageUrl\": \"\",\n            \"description\": \"\",\n            \"min\": 0,\n            \"max\": 2,\n            \"deliveryTax\": 6000,\n            \"takeawayTax\": 6000,\n            \"subProducts\": [\n                \"DRNK-01\",\n                \"DRNK-02\"\n            ]\n        },\n        {\n            \"productType\": 1,\n            \"isCombo\": true,\n            \"plu\": \"CMB-01\",\n            \"price\": 500,\n            \"name\": \"Kid Fun Meal Box\",\n            \"posProductId\": \"POS-ID-011\",\n            \"posCategoryIds\": [\n                \"POS-CAT-001\"\n            ],\n            \"imageUrl\": \"\",\n            \"description\": \"\",\n            \"deliveryTax\": 6000,\n            \"takeawayTax\": 6000,\n            \"subProducts\": [\n                \"BNDL-01\",\n                \"BNDL-02\",\n                \"UPSLL-01\"\n            ]\n        },\n        {\n            \"productType\": 2,\n            \"plu\": \"SC-01\",\n            \"price\": 50,\n            \"name\": \"Mayonnaise\",\n            \"posProductId\": \"POS-ID-012\",\n            \"posCategoryIds\": [\n                \"POS-CAT-001\"\n            ],\n            \"imageUrl\": \"\",\n            \"description\": \"\",\n            \"deliveryTax\": 6000,\n            \"takeawayTax\": 6000\n        },\n        {\n            \"productType\": 2,\n            \"plu\": \"SC-02\",\n            \"price\": 50,\n            \"name\": \"Ketchup\",\n            \"posProductId\": \"POS-ID-013\",\n            \"posCategoryIds\": [\n                \"POS-CAT-001\"\n            ],\n            \"imageUrl\": \"\",\n            \"description\": \"\",\n            \"deliveryTax\": 6000,\n            \"takeawayTax\": 6000\n        },\n        {\n            \"productType\": 3,\n            \"plu\": \"SCS-01\",\n            \"name\": \"Sauce Selection\",\n            \"posProductId\": \"POS-ID-014\",\n            \"posCategoryIds\": [\n                \"POS-CAT-001\"\n            ],\n            \"imageUrl\": \"\",\n            \"description\": \"\",\n            \"deliveryTax\": 6000,\n            \"takeawayTax\": 6000,\n            \"subProducts\": [\n                \"SC-01\",\n                \"SC-02\"\n            ]\n        }\n    ],\n    \"categories\": [\n        {\n            \"name\": \"POS Products\",\n            \"posCategoryId\": \"POS-CAT-001\",\n            \"imageUrl\": \"\"\n        }\n    ]\n}","options":{"raw":{"language":"json"}}},"url":"http://api.brain.io/productAndCategories"},"_postman_previewlanguage":"Text","header":[],"cookie":[],"responseTime":null,"body":""},{"id":"99e89992-a0e3-433e-a3df-cd2195d6e853","name":"Meal deal example 3: Kid Fun Meal Box - burgers available separately","originalRequest":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json","type":"text"}],"body":{"mode":"raw","raw":"{\n    \"accountId\": \"5f****78a850c18614****8f\",\n    \"locationId\": \"5f****c1a850c18614****98\",\n    \"products\": [\n        {\n            \"productType\": 1,\n            \"plu\": \"BRGR-01\",\n            \"price\": 300,\n            \"name\": \"Hamburger\",\n            \"posProductId\": \"POS-ID-001\",\n            \"posCategoryIds\": [\n                \"POS-CAT-001\"\n            ],\n            \"imageUrl\": \"\",\n            \"description\": \"\",\n            \"deliveryTax\": 6000,\n            \"takeawayTax\": 6000\n        },\n        {\n            \"productType\": 1,\n            \"plu\": \"BRGR-02\",\n            \"price\": 350,\n            \"name\": \"Cheese Burger\",\n            \"posProductId\": \"POS-ID-002\",\n            \"posCategoryIds\": [\n                \"POS-CAT-001\"\n            ],\n            \"imageUrl\": \"\",\n            \"description\": \"\",\n            \"deliveryTax\": 6000,\n            \"takeawayTax\": 6000\n        },\n        {\n            \"productType\": 1,\n            \"plu\": \"BNDL-BRGR-01\",\n            \"price\": 0,\n            \"name\": \"Hamburger\",\n            \"posProductId\": \"POS-ID-001\",\n            \"posCategoryIds\": [\n                \"POS-CAT-001\"\n            ],\n            \"imageUrl\": \"\",\n            \"description\": \"\",\n            \"deliveryTax\": 6000,\n            \"takeawayTax\": 6000\n        },\n        {\n            \"productType\": 1,\n            \"plu\": \"BNDL-BRGR-02\",\n            \"price\": 0,\n            \"name\": \"Cheese Burger\",\n            \"posProductId\": \"POS-ID-002\",\n            \"posCategoryIds\": [\n                \"POS-CAT-001\"\n            ],\n            \"imageUrl\": \"\",\n            \"description\": \"\",\n            \"deliveryTax\": 6000,\n            \"takeawayTax\": 6000\n        },\n        {\n            \"productType\": 1,\n            \"plu\": \"FRS-01\",\n            \"price\": 0,\n            \"name\": \"Small Fries\",\n            \"posProductId\": \"POS-ID-003\",\n            \"posCategoryIds\": [\n                \"POS-CAT-001\"\n            ],\n            \"imageUrl\": \"\",\n            \"description\": \"\",\n            \"deliveryTax\": 6000,\n            \"takeawayTax\": 6000,\n            \"subProducts\": [\n                \"SCS-01\"\n            ]\n        },\n        {\n            \"productType\": 1,\n            \"plu\": \"FRS-02\",\n            \"price\": 0,\n            \"name\": \"Medium Fries\",\n            \"posProductId\": \"POS-ID-004\",\n            \"posCategoryIds\": [\n                \"POS-CAT-001\"\n            ],\n            \"imageUrl\": \"\",\n            \"description\": \"\",\n            \"deliveryTax\": 6000,\n            \"takeawayTax\": 6000,\n            \"subProducts\": [\n                \"SCS-01\"\n            ]\n        },\n        {\n            \"productType\": 1,\n            \"plu\": \"FRS-03\",\n            \"price\": 0,\n            \"name\": \"Large Fries\",\n            \"posProductId\": \"POS-ID-005\",\n            \"posCategoryIds\": [\n                \"POS-CAT-001\"\n            ],\n            \"imageUrl\": \"\",\n            \"description\": \"\",\n            \"deliveryTax\": 6000,\n            \"takeawayTax\": 6000,\n            \"subProducts\": [\n                \"SCS-01\"\n            ]\n        },\n        {\n            \"productType\": 1,\n            \"plu\": \"DRNK-01\",\n            \"price\": 0,\n            \"name\": \"Lemonade\",\n            \"posProductId\": \"POS-ID-006\",\n            \"posCategoryIds\": [\n                \"POS-CAT-001\"\n            ],\n            \"imageUrl\": \"\",\n            \"description\": \"\",\n            \"deliveryTax\": 6000,\n            \"takeawayTax\": 6000\n        },\n        {\n            \"productType\": 1,\n            \"plu\": \"DRNK-02\",\n            \"price\": 0,\n            \"name\": \"Iced Tea\",\n            \"posProductId\": \"POS-ID-007\",\n            \"posCategoryIds\": [\n                \"POS-CAT-001\"\n            ],\n            \"imageUrl\": \"\",\n            \"description\": \"\",\n            \"deliveryTax\": 6000,\n            \"takeawayTax\": 6000\n        },\n        {\n            \"productType\": 4,\n            \"plu\": \"BNDL-01\",\n            \"price\": 0,\n            \"name\": \"Choose Your Burger\",\n            \"posProductId\": \"POS-ID-008\",\n            \"posCategoryIds\": [\n                \"POS-CAT-001\"\n            ],\n            \"imageUrl\": \"\",\n            \"description\": \"\",\n            \"min\": 1,\n            \"max\": 1,\n            \"deliveryTax\": 6000,\n            \"takeawayTax\": 6000,\n            \"subProducts\": [\n                \"BNDL-BRGR-01\",\n                \"BNDL-BRGR-02\"\n            ]\n        },\n        {\n            \"productType\": 4,\n            \"plu\": \"BNDL-02\",\n            \"price\": 0,\n            \"name\": \"Choose Your Fries\",\n            \"posProductId\": \"POS-ID-009\",\n            \"posCategoryIds\": [\n                \"POS-CAT-001\"\n            ],\n            \"imageUrl\": \"\",\n            \"description\": \"\",\n            \"min\": 1,\n            \"max\": 1,\n            \"deliveryTax\": 6000,\n            \"takeawayTax\": 6000,\n            \"subProducts\": [\n                \"FRS-01\",\n                \"FRS-02\",\n                \"FRS-03\"\n            ]\n        },\n        {\n            \"productType\": 4,\n            \"plu\": \"BNDL-03\",\n            \"price\": 0,\n            \"name\": \"Choose Your Drink\",\n            \"posProductId\": \"POS-ID-010\",\n            \"posCategoryIds\": [\n                \"POS-CAT-001\"\n            ],\n            \"imageUrl\": \"\",\n            \"description\": \"\",\n            \"min\": 1,\n            \"max\": 1,\n            \"deliveryTax\": 6000,\n            \"takeawayTax\": 6000,\n            \"subProducts\": [\n                \"DRNK-01\",\n                \"DRNK-02\"\n            ]\n        },\n        {\n            \"productType\": 1,\n            \"isCombo\": true,\n            \"plu\": \"CMB-01\",\n            \"price\": 800,\n            \"name\": \"Kid Fun Meal Box\",\n            \"posProductId\": \"POS-ID-011\",\n            \"posCategoryIds\": [\n                \"POS-CAT-001\"\n            ],\n            \"imageUrl\": \"\",\n            \"description\": \"\",\n            \"deliveryTax\": 6000,\n            \"takeawayTax\": 6000,\n            \"subProducts\": [\n                \"BNDL-01\",\n                \"BNDL-02\",\n                \"BNDL-03\"\n            ]\n        },\n        {\n            \"productType\": 2,\n            \"plu\": \"SC-01\",\n            \"price\": 50,\n            \"name\": \"Mayonnaise\",\n            \"posProductId\": \"POS-ID-012\",\n            \"posCategoryIds\": [\n                \"POS-CAT-001\"\n            ],\n            \"imageUrl\": \"\",\n            \"description\": \"\",\n            \"deliveryTax\": 6000,\n            \"takeawayTax\": 6000\n        },\n        {\n            \"productType\": 2,\n            \"plu\": \"SC-02\",\n            \"price\": 50,\n            \"name\": \"Ketchup\",\n            \"posProductId\": \"POS-ID-013\",\n            \"posCategoryIds\": [\n                \"POS-CAT-001\"\n            ],\n            \"imageUrl\": \"\",\n            \"description\": \"\",\n            \"deliveryTax\": 6000,\n            \"takeawayTax\": 6000\n        },\n        {\n            \"productType\": 3,\n            \"plu\": \"SCS-01\",\n            \"name\": \"Sauce Selection\",\n            \"posProductId\": \"POS-ID-014\",\n            \"posCategoryIds\": [\n                \"POS-CAT-001\"\n            ],\n            \"imageUrl\": \"\",\n            \"description\": \"\",\n            \"deliveryTax\": 6000,\n            \"takeawayTax\": 6000,\n            \"subProducts\": [\n                \"SC-01\",\n                \"SC-02\"\n            ]\n        }\n    ],\n    \"categories\": [\n        {\n            \"name\": \"POS Products\",\n            \"posCategoryId\": \"POS-CAT-001\",\n            \"imageUrl\": \"\"\n        }\n    ]\n}","options":{"raw":{"language":"json"}}},"url":"http://api.brain.io/productAndCategories"},"_postman_previewlanguage":"Text","header":[],"cookie":[],"responseTime":null,"body":""},{"id":"d8186b2d-3655-4b08-b443-692587e66f82","name":"Insert/update products and categories","originalRequest":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json","type":"text"}],"body":{"mode":"raw","raw":"{\n\t\"accountId\": \"{{accountId}}\",\n\t\"locationId\": \"{{locationId}}\",\n\t\"products\": [\n\t\t{\n\t\t\t\"productType\": 1,\n\t\t\t\"plu\": \"PR03\",\n\t\t\t\"price\": 900,\n\t\t\t\"name\": \"Cheese Lovers Pizza\",\n\t\t\t\"posProductId\": \"INTERNAL-POS-ID-1\",\n\t\t\t\"posCategoryIds\": \"INTERNAL-POS-CAT-2\",\n\t\t\t\"imageUrl\": \"\",\n\t\t\t\"uniqueKey\": \"\",\n\t\t\t\"description\": \"Pizza made for cheese fanatics\",\n\t\t\t\"deliveryTax\": 6000,\n\t\t\t\"takeawayTax\": 6000\n\t\t},\n\t\t{\n\t\t\t\"productType\": 1,\n\t\t\t\"plu\": \"PR04\",\n\t\t\t\"price\": 900,\n\t\t\t\"name\": \"BBQ Chicken Pizza\",\n\t\t\t\"posProductId\": \"INTERNAL-POS-ID-2\",\n\t\t\t\"posCategoryIds\": \"INTERNAL-POS-CAT-2\",\n\t\t\t\"imageUrl\": \"\",\n\t\t\t\"uniqueKey\": \"\",\n\t\t\t\"description\": \"The best BBQ Chicken Pizza in town\",\n\t\t\t\"deliveryTax\": 6000,\n\t\t\t\"takeawayTax\": 6000\n\t\t}\n\t],\n\t\"categories\": [\n\t\t{\n\t\t\t\"name\": \"Pizza\",\n\t\t\t\"posCategoryId\": \"INTERNAL-POS-CAT-2\",\n\t\t\t\"imageUrl\": \"\"\n\t\t}\n\t]\n}","options":{"raw":{"language":"json"}}},"url":"http://api.brain.io/productAndCategories"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Server","value":"nginx/1.11.10"},{"key":"Date","value":"Mon, 20 May 2019 11:01:22 GMT"},{"key":"Content-Type","value":"text/html"},{"key":"Content-Length","value":"214"},{"key":"Connection","value":"keep-alive"}],"cookie":[],"responseTime":null,"body":""}],"_postman_id":"086b01db-9444-4c2d-a508-9cf9c89b5739"},{"name":"get products for account","id":"797054a6-a335-4834-aca6-5bd7d2289c86","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"http://api.brain.io/products?account={{accountId}}","auth":{"type":"oauth2","oauth2":{"basicConfig":[{"key":"accessToken","value":"{{integratorToken}}"}],"advancedConfig":[{"key":"useBrowser","value":"<use-browser>"}]},"isInherited":true,"source":{"_postman_id":"ec7259bd-82f3-4a09-a170-39a4e647fd84","id":"ec7259bd-82f3-4a09-a170-39a4e647fd84","name":"Foodstack Public API","type":"collection"}},"urlObject":{"host":["http://api.brain.io/products"],"query":[{"key":"account","value":"{{accountId}}"}],"variable":[]}},"response":[],"_postman_id":"797054a6-a335-4834-aca6-5bd7d2289c86"},{"name":"get categories for account","id":"a63a50f0-d996-49c5-8f4a-d439804d20e4","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"http://api.brain.io/productCategories?channel=1000&account={{accountId}}","auth":{"type":"oauth2","oauth2":{"basicConfig":[{"key":"accessToken","value":"{{integratorToken}}"}],"advancedConfig":[{"key":"useBrowser","value":"<use-browser>"}]},"isInherited":true,"source":{"_postman_id":"ec7259bd-82f3-4a09-a170-39a4e647fd84","id":"ec7259bd-82f3-4a09-a170-39a4e647fd84","name":"Foodstack Public API","type":"collection"}},"urlObject":{"host":["http://api.brain.io/productCategories"],"query":[{"key":"channel","value":"1000"},{"key":"account","value":"{{accountId}}"}],"variable":[]}},"response":[],"_postman_id":"a63a50f0-d996-49c5-8f4a-d439804d20e4"}],"id":"a5b297d0-93c2-4ae2-b18a-5b955d2f0ede","description":"<p>These are endpoints hosted on the foodstack.brain.io domain.\nThere is a staging environment: <a href=\"https://api.staging.foodstack.brain.io\">https://api.staging.foodstack.brain.io</a> and a production environment <a href=\"https://api.foodstack.brain.io\">https://api.foodstack.brain.io</a></p>\n","_postman_id":"a5b297d0-93c2-4ae2-b18a-5b955d2f0ede","auth":{"type":"oauth2","oauth2":{"basicConfig":[{"key":"accessToken","value":"{{integratorToken}}"}],"advancedConfig":[{"key":"useBrowser","value":"<use-browser>"}]},"isInherited":true,"source":{"_postman_id":"ec7259bd-82f3-4a09-a170-39a4e647fd84","id":"ec7259bd-82f3-4a09-a170-39a4e647fd84","name":"Foodstack Public API","type":"collection"}}},{"name":"Webhooks","item":[{"name":"Orders webhook","id":"baf6ba63-5ec6-4ad1-b725-36757e9f5a7d","protocolProfileBehavior":{"disableBodyPruning":true,"disabledSystemHeaders":{"content-type":true}},"request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","type":"text","value":"application/json"}],"body":{"mode":"raw","raw":"{\n    \"_id\": \"5c6d830a0182d6000e******\",\n    \"_created\": \"2019-02-20T16:40:44.000000Z\",\n    \"_updated\": \"2019-02-20T16:40:52.000000Z\",\n    \"channelOrderId\": \"******-1527\",\n    \"channelOrderDisplayId\": \"1527\",\n    \"posLocationId\": \"30458\",\n    \"location\": \"5bf02f38c6489f002c******\",\n    \"channelLink\": \"5bf02f38c6489f002c******\",\n    \"status\": 1,\n    \"statusHistory\": [\n        {\n            \"_created\": \"2019-02-20T16:40:42.703000Z\",\n            \"response\": \"\",\n            \"timeStamp\": \"2019-02-20T16:40:42.703000Z\",\n            \"status\": 4\n        },\n        {\n            \"_created\": \"2019-02-20T16:40:42.726000Z\",\n            \"response\": \"\",\n            \"timeStamp\": \"2019-02-20T16:40:42.726000Z\",\n            \"status\": 1\n        }\n    ],\n    \"by\": \"\",\n    \"orderType\": 2,\n    \"channel\": 2,\n    \"table\": \"table 4\",\n    \"pickupTime\": \"2019-02-20T16:40:42.000000Z\",\n    \"deliveryIsAsap\": false,\n    \"courier\": {\n        \"firstName\": \"Delivery\",\n        \"lastName\": \"Rider\",\n        \"phoneNumber\": \"0032494112233\",\n        \"deliveryBy\": \"UberEats\"\n    },\n    \"customer\": {\n        \"name\": \"Customer name\",\n        \"companyName\": \"Foodstack\",\n        \"phoneNumber\": \"0123456789\",\n        \"email\": \"customer@foodstack.brain.io\"\n    },\n    \"deliveryAddress\": {\n        \"street\": \"\",\n        \"streetNumber\": \"\",\n        \"postalCode\": \"\",\n        \"city\": \"\",\n        \"extraAddressInfo\": \"\"\n    },\n    \"orderIsAlreadyPaid\": true,\n    \"payment\": {\n        \"amount\": 400,\n        \"type\": 0\n    },\n    \"note\": \"\",\n    \"items\": [\n        {\n            \"plu\": \"P1\",\n            \"name\": \"Product 1\",\n            \"price\": 200,\n            \"quantity\": 1,\n            \"productType\": 1,\n            \"remark\": \"\",\n            \"subItems\": [\n                {\n                    \"plu\": \"O1\",\n                    \"name\": \"Modifier 1/ Option 1\",\n                    \"price\": 0,\n                    \"quantity\": 1,\n                    \"productType\": 2,\n                    \"remark\": \"\",\n                    \"isInternal\": false,\n                    \"subItems\": []\n                },\n                {\n                    \"plu\": \"O2\",\n                    \"name\": \"Modifier 2/ Option 2\",\n                    \"price\": 200,\n                    \"quantity\": 1,\n                    \"productType\": 2,\n                    \"remark\": \"\",\n                    \"isInternal\": false,\n                    \"subItems\": []\n                }\n            ]\n        },\n        {\n            \"plu\": \"P2\",\n            \"name\": \"Product 2\",\n            \"price\": 200,\n            \"quantity\": 1,\n            \"productType\": 1,\n            \"remark\": \"\",\n            \"subItems\": [\n                {\n                    \"plu\": \"O1\",\n                    \"name\": \"Modifier 1/ Option 1\",\n                    \"price\": 0,\n                    \"quantity\": 1,\n                    \"productType\": 2,\n                    \"remark\": \"\",\n                    \"isInternal\": false,\n                    \"subItems\": []\n                }\n            ]\n        }\n    ],\n    \"decimalDigits\": 2,\n    \"numberOfCustomers\": 1,\n    \"deliveryCost\": 0,\n    \"serviceCharge\": 0,\n    \"discountTotal\": 0,\n    \"posCustomerId\": \"256706\",\n    \"account\": \"5be9c971c6489f0029******\",\n    \"posReceiptId\": \"\",\n    \"tags\": [\n        \"Brand X\",\n        \"Brand Y\"\n    ]\n}"},"url":"{{webhookUrl}}orders","description":"<p>An order represents what a customer ordered using a channel. It contains the products, prices and payment information.</p>\n<p>Depending on the channel we also get customer info.</p>\n<p>It also contains whether this is a takeout or delivery order. If the customer does the delivery himself, then a delivery address will also be available</p>\n<p>A POS that has a cloud API should put an endpoint online that accepts orders like shown here.</p>\n<p>The <code>orderType</code> can be interpreted as follows:</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Type</th>\n<th>Integer value</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>pickup</td>\n<td>1</td>\n</tr>\n<tr>\n<td>delivery</td>\n<td>2</td>\n</tr>\n<tr>\n<td>eat in</td>\n<td>3</td>\n</tr>\n</tbody>\n</table>\n</div><p>We assume this endpoint responds quickly. You are encouraged to do things asynchronously. When everything has been done, just call the update order status endpoint to let us know. When you receive an order successfully we expect a HTTP 200 or 201 status response back. Any other HTTP status will cause the order to be retried after a couple of seconds. After a couple of failed retries we will mark the order as failed.</p>\n<p>The return value should be the posOrderId. This can be used by support/customers to reference an order when things go wrong</p>\n<h2 id=\"request-parameters\">Request parameters</h2>\n<p>This table explains the difference between <code>channelOrderId</code>, <code>channelOrderDisplayId</code>, and <code>channelOrderRawId</code>. It also provides an explanation for some other fields.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Meaning</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>channelOrderId</code></td>\n<td>the full unique ID from the delivery Channel</td>\n</tr>\n<tr>\n<td><code>channelOrderDisplayId</code></td>\n<td>the more human-readable ID from the channel (only unique in a certain duration, like a day)</td>\n</tr>\n<tr>\n<td><code>channelOrderRawId</code></td>\n<td>an internal ID you don't need to store or use</td>\n</tr>\n<tr>\n<td><code>by</code></td>\n<td>When filled in, this field contains information about the subchannel through which the end customer ordered. This can be for example 'app' or 'mobile', 'web', 'unknown', or a third party. Most of the time, this field will be empty.</td>\n</tr>\n<tr>\n<td><code>(courier).deliveryBy</code></td>\n<td>The <code>courier</code> field contains information about the courier (the person making the delivery). It has an attribute <code>deliveryBy</code> which can contain the delivery channel name, but can also be 'restaurant'. This field can also be empty.</td>\n</tr>\n</tbody>\n</table>\n</div><h2 id=\"example-meal-deals\">Example: meal deals</h2>\n<p>From the drop-down on the right, you can select examples of how meal deal orders will be sent to your POS.</p>\n<p>Click <a href=\"https://developers.foodstack.brain.io/?version=latest#c102c78d-46bb-42e7-8c53-166978f71aa4\">here</a> to see examples of how your POS should sync products as a meal deal to Foodstack.</p>\n<hr />\n<h4 id=\"cancels-and-rejects\">Cancels and rejects</h4>\n<p>There are two flows for incoming orders. One in which orders are autoaccepted, and another one where they need to <strong>manually</strong> be accepted. This can be done through your POS. Alternatively, our app can be used for this if you do not support this feature.</p>\n<p>Some channels support canceling orders. When a channel requests for an order to be canceled (which we call a <strong>cancel</strong>), your POS will receive a request from Foodstack on the same endpoint that is used for new orders.</p>\n<p>Again, not all channels support sending cancellation requests. Furthermore, it's important to know that you should only expect cancellation requests for orders that just came in.</p>\n<p>When a new order comes in, your POS API can <strong>reject</strong> it (if it supports this). A reason for this can be that the order is undesired, that some required ingredient is not in stock, or that there is no time to prepare the order.</p>\n<p>Once your POS API has accepted an order, it should no longer be possible for that order to be canceled (in other words, your POS API cannot reject orders once accepted).</p>\n<p>An order that is to be canceled by the POS will have the same data as the original order, except for its status. Most notably, the order will have the same <code>channelOrderId</code>. This ID can be used to trace back the original order.</p>\n<p>An order to be canceled will have the <code>CANCEL</code> (100) status. When you get such an order, make sure to handle the cancellation correctly by sending an order status update request to Foodstack.</p>\n<h5 id=\"note\">Note</h5>\n<p>If you receive a status that is not documented here, these can safely be ignored in most cases. Contact Foodstack to get the meaning of this status.</p>\n<p>In no case should an unknown status hinder your flow of processing orders.</p>\n","auth":{"type":"oauth2","oauth2":{"basicConfig":[{"key":"accessToken","value":"{{integratorToken}}"}],"advancedConfig":[{"key":"useBrowser","value":"<use-browser>"}]},"isInherited":true,"source":{"_postman_id":"ec7259bd-82f3-4a09-a170-39a4e647fd84","id":"ec7259bd-82f3-4a09-a170-39a4e647fd84","name":"Foodstack Public API","type":"collection"}},"urlObject":{"host":["{{webhookUrl}}orders"],"query":[],"variable":[]}},"response":[{"id":"2134965b-e431-4681-b0fb-bbae61cebdec","name":"Meal deal example 2: Kid Fun Meal Box - drink as upsell","originalRequest":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json","type":"text"}],"body":{"mode":"raw","raw":"{\n    \"_id\": \"5f****9e05df90810d****b7\",\n    \"_created\": \"2020-08-20T10:04:13.987000Z\",\n    \"_updated\": \"2020-08-20T10:04:14.092000Z\",\n    \"_etag\": \"\",\n    \"account\": \"5f****04e9a87394fa****99\",\n    \"channelOrderId\": \"TEST1597917853\",\n    \"channelOrderDisplayId\": \"TEST1597917853\",\n    \"posId\": \"\",\n    \"posReceiptId\": \"\",\n    \"posLocationId\": \"TEST\",\n    \"location\": \"5f****64e9a87394fa****9d\",\n    \"channelLink\": \"5f****e4d9311f40d2****f4\",\n    \"status\": 1,\n    \"statusHistory\": [\n        {\n            \"timeStamp\": \"2020-08-20T10:04:14.143000Z\",\n            \"status\": 4,\n            \"response\": \"\",\n            \"source\": 5\n        },\n        {\n            \"timeStamp\": \"2020-08-20T10:04:14.165000Z\",\n            \"status\": 1,\n            \"response\": \"\",\n            \"source\": 2\n        }\n    ],\n    \"channelStatusHistory\": [],\n    \"by\": \"Foodstack\",\n    \"orderType\": 2,\n    \"channel\": 1,\n    \"pos\": 10000,\n    \"pickupTime\": \"2020-08-20T10:04:13.000000Z\",\n    \"deliveryTime\": \"2020-08-20T10:04:13.000000Z\",\n    \"deliveryIsAsap\": true,\n    \"courier\": {\n        \"deliveryBy\": \"restaurant\"\n    },\n    \"customer\": {\n        \"name\": \"\",\n        \"companyName\": \"\",\n        \"phoneNumber\": \"\",\n        \"email\": \"\"\n    },\n    \"deliveryAddress\": {\n        \"street\": \"The Krook\",\n        \"streetNumber\": \"4\",\n        \"postalCode\": \"8888KL\",\n        \"city\": \"Gent\",\n        \"extraAddressInfo\": \"\"\n    },\n    \"orderIsAlreadyPaid\": true,\n    \"payment\": {\n        \"amount\": 950,\n        \"type\": 0\n    },\n    \"note\": \"This is a test order\",\n    \"items\": [\n        {\n            \"plu\": \"CMB-01\",\n            \"name\": \"Kid Fun Meal Box\",\n            \"sortOrder\": 0,\n            \"price\": 500,\n            \"quantity\": 1,\n            \"productType\": 1,\n            \"isInternal\": false,\n            \"isCombo\": true,\n            \"subItems\": [\n                {\n                    \"plu\": \"BRGR-02\",\n                    \"name\": \"Cheese Burger\",\n                    \"sortOrder\": 0,\n                    \"price\": 0,\n                    \"quantity\": 1,\n                    \"productType\": 1,\n                    \"isInternal\": false,\n                    \"subItems\": []\n                },\n                {\n                    \"plu\": \"FRS-02\",\n                    \"name\": \"Medium Fries\",\n                    \"sortOrder\": 0,\n                    \"price\": 0,\n                    \"quantity\": 1,\n                    \"productType\": 1,\n                    \"isInternal\": false,\n                    \"subItems\": [\n                        {\n                            \"plu\": \"SC-02\",\n                            \"name\": \"Ketchup\",\n                            \"sortOrder\": 0,\n                            \"price\": 50,\n                            \"quantity\": 1,\n                            \"productType\": 2,\n                            \"isInternal\": false,\n                            \"subItems\": []\n                        }\n                    ]\n                },\n                {\n                    \"plu\": \"DRNK-02\",\n                    \"name\": \"Iced Tea\",\n                    \"sortOrder\": 0,\n                    \"price\": 400,\n                    \"quantity\": 1,\n                    \"productType\": 1,\n                    \"isInternal\": false,\n                    \"subItems\": []\n                }\n            ]\n        }\n    ],\n    \"decimalDigits\": 2,\n    \"numberOfCustomers\": 1,\n    \"channelOrderRawId\": \"5f****9da850c18614****8c\",\n    \"serviceCharge\": 0,\n    \"deliveryCost\": 0,\n    \"discountTotal\": 0,\n    \"historyDriverUpdates\": [],\n    \"capacityUsages\": []\n}","options":{"raw":{"language":"json"}}},"url":"{{webhookUrl}}orders"},"_postman_previewlanguage":"Text","header":[],"cookie":[],"responseTime":null,"body":""},{"id":"4e178097-2dea-4a32-b848-210b828ab401","name":"Meal deal example 4: Healthy Snack Bowl","originalRequest":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json","type":"text"}],"body":{"mode":"raw","raw":"{\n    \"_id\": \"5f****b56c275c2cfe****b7\",\n    \"_created\": \"2020-08-20T11:00:05.362000Z\",\n    \"_updated\": \"2020-08-20T11:00:05.746000Z\",\n    \"_etag\": \"\",\n    \"account\": \"5f****8ba850c18614****94\",\n    \"channelOrderId\": \"TEST1597921205\",\n    \"channelOrderDisplayId\": \"TEST1597921205\",\n    \"posId\": \"\",\n    \"posReceiptId\": \"\",\n    \"posLocationId\": \"TEST-0001\",\n    \"location\": \"5f****aea850c18614****55\",\n    \"channelLink\": \"5f****30a850c18614****7d\",\n    \"status\": 1,\n    \"statusHistory\": [\n        {\n            \"timeStamp\": \"2020-08-20T11:00:05.994000Z\",\n            \"status\": 4,\n            \"response\": \"\",\n            \"source\": 5\n        },\n        {\n            \"timeStamp\": \"2020-08-20T11:00:06.057000Z\",\n            \"status\": 1,\n            \"response\": \"\",\n            \"source\": 2\n        }\n    ],\n    \"channelStatusHistory\": [],\n    \"by\": \"Foodstack\",\n    \"orderType\": 2,\n    \"channel\": 1,\n    \"pos\": 10000,\n    \"pickupTime\": \"2020-08-20T11:00:05.000000Z\",\n    \"deliveryTime\": \"2020-08-20T11:00:05.000000Z\",\n    \"deliveryIsAsap\": true,\n    \"courier\": {\n        \"deliveryBy\": \"restaurant\"\n    },\n    \"customer\": {\n        \"name\": \"\",\n        \"companyName\": \"\",\n        \"phoneNumber\": \"\",\n        \"email\": \"\"\n    },\n    \"deliveryAddress\": {\n        \"street\": \"The Krook\",\n        \"streetNumber\": \"4\",\n        \"postalCode\": \"8888KL\",\n        \"city\": \"Gent\",\n        \"extraAddressInfo\": \"\"\n    },\n    \"orderIsAlreadyPaid\": true,\n    \"payment\": {\n        \"amount\": 1000,\n        \"type\": 0\n    },\n    \"note\": \"This is a test order\",\n    \"items\": [\n        {\n            \"plu\": \"CMB-01\",\n            \"name\": \"Healthy Snack Bowl\",\n            \"sortOrder\": 0,\n            \"price\": 1000,\n            \"quantity\": 1,\n            \"productType\": 1,\n            \"isInternal\": false,\n            \"isCombo\": true,\n            \"subItems\": [\n                {\n                    \"plu\": \"RICE-01\",\n                    \"name\": \"Brown Rice\",\n                    \"sortOrder\": 0,\n                    \"price\": 0,\n                    \"quantity\": 1,\n                    \"productType\": 1,\n                    \"isInternal\": false,\n                    \"subItems\": []\n                },\n                {\n                    \"plu\": \"VEG-03\",\n                    \"name\": \"Avocado\",\n                    \"sortOrder\": 0,\n                    \"price\": 0,\n                    \"quantity\": 1,\n                    \"productType\": 1,\n                    \"isInternal\": false,\n                    \"subItems\": []\n                },\n                {\n                    \"plu\": \"MEAT-02\",\n                    \"name\": \"Chicken\",\n                    \"sortOrder\": 0,\n                    \"price\": 0,\n                    \"quantity\": 1,\n                    \"productType\": 1,\n                    \"isInternal\": false,\n                    \"subItems\": []\n                },\n                {\n                    \"plu\": \"XTRA-01\",\n                    \"name\": \"Nuts\",\n                    \"sortOrder\": 0,\n                    \"price\": 0,\n                    \"quantity\": 1,\n                    \"productType\": 1,\n                    \"isInternal\": false,\n                    \"subItems\": []\n                },\n                {\n                    \"plu\": \"SAUC-02\",\n                    \"name\": \"Spicy Chili\",\n                    \"sortOrder\": 0,\n                    \"price\": 0,\n                    \"quantity\": 1,\n                    \"productType\": 1,\n                    \"isInternal\": false,\n                    \"subItems\": []\n                }\n            ]\n        }\n    ],\n    \"decimalDigits\": 2,\n    \"numberOfCustomers\": 1,\n    \"channelOrderRawId\": \"5f****b5a850c18614****d3\",\n    \"serviceCharge\": 0,\n    \"deliveryCost\": 0,\n    \"discountTotal\": 0,\n    \"historyDriverUpdates\": [],\n    \"capacityUsages\": []\n}","options":{"raw":{"language":"json"}}},"url":"{{webhookUrl}}orders"},"_postman_previewlanguage":"Text","header":[],"cookie":[],"responseTime":null,"body":""},{"id":"673da503-ed82-48ff-bfb0-23ce2bfa5765","name":"Order canceled by channel, to be canceled by POS","originalRequest":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json","type":"text"}],"body":{"mode":"raw","raw":"{\n    \"_id\": \"5c6d830a0182d6000e******\",\n    \"_created\": \"2019-02-20T16:40:44.000000Z\",\n    \"_updated\": \"2019-02-20T16:40:52.000000Z\",\n    \"channelOrderId\": \"******-1527\",\n    \"channelOrderDisplayId\": \"1527\",\n    \"posLocationId\": \"30458\",\n    \"location\": \"5bf02f38c6489f002c******\",\n    \"channelLink\": \"5bf02f38c6489f002c******\",\n    \"status\": 100,\n    \"statusHistory\": [\n        {\n            \"_created\": \"2019-02-20T16:40:42.703000Z\",\n            \"response\": \"\",\n            \"timeStamp\": \"2019-02-20T16:40:42.703000Z\",\n            \"status\": 4\n        },\n        {\n            \"_created\": \"2019-02-20T16:40:42.726000Z\",\n            \"response\": \"\",\n            \"timeStamp\": \"2019-02-20T16:40:42.726000Z\",\n            \"status\": 1\n        }\n    ],\n    \"by\": \"\",\n    \"orderType\": 2,\n    \"channel\": 2,\n    \"pickupTime\": \"2019-02-20T16:40:42.000000Z\",\n    \"deliveryIsAsap\": false,\n    \"courier\": {\n        \"firstName\": \"Delivery\",\n        \"lastName\": \"Rider\",\n        \"phoneNumber\": \"0032494112233\",\n        \"deliveryBy\": \"UberEats\"\n    },\n    \"customer\": {\n        \"name\": \"Customer name\",\n        \"companyName\": \"Foodstack\",\n        \"phoneNumber\": \"0123456789\",\n        \"email\": \"customer@foodstack.brain.io\"\n    },\n    \"deliveryAddress\": {\n        \"street\": \"\",\n        \"streetNumber\": \"\",\n        \"postalCode\": \"\",\n        \"city\": \"\",\n        \"extraAddressInfo\": \"\"\n    },\n    \"orderIsAlreadyPaid\": true,\n    \"payment\": {\n        \"amount\": 400,\n        \"type\": 0\n    },\n    \"note\": \"\",\n    \"items\": [\n        {\n            \"plu\": \"P1\",\n            \"name\": \"Product 1\",\n            \"price\": 200,\n            \"quantity\": 1,\n            \"productType\": 1,\n            \"subItems\": [\n                {\n                    \"plu\": \"O1\",\n                    \"name\": \"Modifier 1/ Option 1\",\n                    \"price\": 0,\n                    \"quantity\": 1,\n                    \"productType\": 2,\n                    \"isInternal\": false,\n                    \"subItems\": []\n                },\n                {\n                    \"plu\": \"O2\",\n                    \"name\": \"Modifier 2/ Option 2\",\n                    \"price\": 200,\n                    \"quantity\": 1,\n                    \"productType\": 2,\n                    \"isInternal\": false,\n                    \"subItems\": []\n                }\n            ]\n        },\n        {\n            \"plu\": \"P2\",\n            \"name\": \"Product 2\",\n            \"price\": 200,\n            \"quantity\": 1,\n            \"productType\": 1,\n            \"subItems\": [\n                {\n                    \"plu\": \"O1\",\n                    \"name\": \"Modifier 1/ Option 1\",\n                    \"price\": 0,\n                    \"quantity\": 1,\n                    \"productType\": 2,\n                    \"isInternal\": false,\n                    \"subItems\": []\n                }\n            ]\n        }\n    ],\n    \"decimalDigits\": 2,\n    \"numberOfCustomers\": 1,\n    \"deliveryCost\": 0,\n    \"serviceCharge\": 0,\n    \"discountTotal\": 0,\n    \"posCustomerId\": \"256706\",\n    \"account\": \"5be9c971c6489f0029******\",\n    \"posReceiptId\": \"\",\n    \"tags\": [\n        \"Brand X\",\n        \"Brand Y\"\n    ]\n}","options":{"raw":{"language":"json"}}},"url":"{{webhookUrl}}orders"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[],"cookie":[],"responseTime":null,"body":"{\n    \"posOrderId\": \"302105\",\n    \"posReceiptId\": \"41253185\"\n}"},{"id":"72d8ae63-dc5d-4ed8-b4d8-6ff56e0e0b74","name":"Meal deal example 3: Kid Fun Meal Box - burgers available separately","originalRequest":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json","type":"text"}],"body":{"mode":"raw","raw":"{\n    \"_id\": \"5f****1a8f32c70edf****b7\",\n    \"_created\": \"2020-08-20T10:53:14.063000Z\",\n    \"_updated\": \"2020-08-20T10:53:14.684000Z\",\n    \"_etag\": \"\",\n    \"account\": \"5f****78a850c18614****8f\",\n    \"channelOrderId\": \"TEST1597920794\",\n    \"channelOrderDisplayId\": \"TEST1597920794\",\n    \"posId\": \"\",\n    \"posReceiptId\": \"\",\n    \"posLocationId\": \"TEST-0001\",\n    \"location\": \"5f****c1a850c18614****98\",\n    \"channelLink\": \"5f****d6a850c18614****9b\",\n    \"status\": 1,\n    \"statusHistory\": [\n        {\n            \"timeStamp\": \"2020-08-20T10:53:14.994000Z\",\n            \"status\": 4,\n            \"response\": \"\",\n            \"source\": 5\n        },\n        {\n            \"timeStamp\": \"2020-08-20T10:53:15.068000Z\",\n            \"status\": 1,\n            \"response\": \"\",\n            \"source\": 2\n        }\n    ],\n    \"channelStatusHistory\": [],\n    \"by\": \"Foodstack\",\n    \"orderType\": 2,\n    \"channel\": 1,\n    \"pos\": 10000,\n    \"pickupTime\": \"2020-08-20T10:53:14.000000Z\",\n    \"deliveryTime\": \"2020-08-20T10:53:14.000000Z\",\n    \"deliveryIsAsap\": true,\n    \"courier\": {\n        \"deliveryBy\": \"restaurant\"\n    },\n    \"customer\": {\n        \"name\": \"\",\n        \"companyName\": \"\",\n        \"phoneNumber\": \"\",\n        \"email\": \"\"\n    },\n    \"deliveryAddress\": {\n        \"street\": \"The Krook\",\n        \"streetNumber\": \"4\",\n        \"postalCode\": \"8888KL\",\n        \"city\": \"Gent\",\n        \"extraAddressInfo\": \"\"\n    },\n    \"orderIsAlreadyPaid\": true,\n    \"payment\": {\n        \"amount\": 1200,\n        \"type\": 0\n    },\n    \"note\": \"This is a test order\",\n    \"items\": [\n        {\n            \"plu\": \"CMB-01\",\n            \"name\": \"Kid Fun Meal Box\",\n            \"sortOrder\": 0,\n            \"price\": 800,\n            \"quantity\": 1,\n            \"productType\": 1,\n            \"isInternal\": false,\n            \"isCombo\": true,\n            \"subItems\": [\n                {\n                    \"plu\": \"BNDL-BRGR-02\",\n                    \"name\": \"Cheese Burger\",\n                    \"sortOrder\": 0,\n                    \"price\": 0,\n                    \"quantity\": 1,\n                    \"productType\": 1,\n                    \"isInternal\": false,\n                    \"subItems\": []\n                },\n                {\n                    \"plu\": \"FRS-02\",\n                    \"name\": \"Medium Fries\",\n                    \"sortOrder\": 0,\n                    \"price\": 0,\n                    \"quantity\": 1,\n                    \"productType\": 1,\n                    \"isInternal\": false,\n                    \"subItems\": [\n                        {\n                            \"plu\": \"SC-02\",\n                            \"name\": \"Ketchup\",\n                            \"sortOrder\": 0,\n                            \"price\": 50,\n                            \"quantity\": 1,\n                            \"productType\": 2,\n                            \"isInternal\": false,\n                            \"subItems\": []\n                        }\n                    ]\n                },\n                {\n                    \"plu\": \"DRNK-02\",\n                    \"name\": \"Iced Tea\",\n                    \"sortOrder\": 0,\n                    \"price\": 0,\n                    \"quantity\": 1,\n                    \"productType\": 1,\n                    \"isInternal\": false,\n                    \"subItems\": []\n                }\n            ]\n        },\n        {\n            \"plu\": \"BRGR-02\",\n            \"name\": \"Cheese Burger\",\n            \"sortOrder\": 0,\n            \"price\": 350,\n            \"quantity\": 1,\n            \"productType\": 1,\n            \"isInternal\": false,\n            \"subItems\": []\n        }\n    ],\n    \"decimalDigits\": 2,\n    \"numberOfCustomers\": 1,\n    \"channelOrderRawId\": \"5f****1aa850c18614****53\",\n    \"serviceCharge\": 0,\n    \"deliveryCost\": 0,\n    \"discountTotal\": 0,\n    \"historyDriverUpdates\": [],\n    \"capacityUsages\": []\n}","options":{"raw":{"language":"json"}}},"url":"{{webhookUrl}}orders"},"_postman_previewlanguage":"Text","header":[],"cookie":[],"responseTime":null,"body":""},{"id":"a340ba6f-69bc-46a4-b825-caa6c1107f0c","name":"Order parsed by Foodstack","originalRequest":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json","type":"text"}],"body":{"mode":"raw","raw":"{\n    \"_id\": \"5c6d830a0182d6000e******\",\n    \"_created\": \"2019-02-20T16:40:44.000000Z\",\n    \"_updated\": \"2019-02-20T16:40:52.000000Z\",\n    \"channelOrderId\": \"******-1527\",\n    \"channelOrderDisplayId\": \"1527\",\n    \"posLocationId\": \"30458\",\n    \"location\": \"5bf02f38c6489f002c******\",\n    \"channelLink\": \"5bf02f38c6489f002c******\",\n    \"status\": 1,\n    \"statusHistory\": [\n        {\n            \"_created\": \"2019-02-20T16:40:42.703000Z\",\n            \"response\": \"\",\n            \"timeStamp\": \"2019-02-20T16:40:42.703000Z\",\n            \"status\": 4\n        },\n        {\n            \"_created\": \"2019-02-20T16:40:42.726000Z\",\n            \"response\": \"\",\n            \"timeStamp\": \"2019-02-20T16:40:42.726000Z\",\n            \"status\": 1\n        }\n    ],\n    \"by\": \"web\",\n    \"orderType\": 2,\n    \"channel\": 2,\n    \"table\": \"table 3\",\n    \"pickupTime\": \"2019-02-20T16:40:42.000000Z\",\n    \"deliveryIsAsap\": false,\n    \"courier\": {\n        \"firstName\": \"Delivery\",\n        \"lastName\": \"Rider\",\n        \"phoneNumber\": \"0032494112233\",\n        \"deliveryBy\": \"UberEats\"\n    },\n    \"customer\": {\n        \"name\": \"James Bond\",\n        \"companyName\": \"MI6\",\n        \"phoneNumber\": \"0032494000007\",\n        \"email\": \"james.bond@mi6.uk.gov\"\n    },\n    \"deliveryAddress\": {\n        \"street\": \"Albert Embankment\",\n        \"streetNumber\": \"85\",\n        \"postalCode\": \"SE, SW\",\n        \"city\": \"Vauxhall, Lambeth\",\n        \"extraAddressInfo\": \"\"\n    },\n    \"orderIsAlreadyPaid\": true,\n    \"payment\": {\n        \"amount\": 400,\n        \"type\": 0\n    },\n    \"note\": \"\",\n    \"items\": [\n        {\n            \"plu\": \"P1\",\n            \"name\": \"Product 1\",\n            \"price\": 200,\n            \"quantity\": 1,\n            \"productType\": 1,\n            \"subItems\": [\n                {\n                    \"plu\": \"O1\",\n                    \"name\": \"Modifier 1/ Option 1\",\n                    \"price\": 0,\n                    \"quantity\": 1,\n                    \"productType\": 2,\n                    \"isInternal\": false,\n                    \"subItems\": []\n                },\n                {\n                    \"plu\": \"O2\",\n                    \"name\": \"Modifier 2/ Option 2\",\n                    \"price\": 200,\n                    \"quantity\": 1,\n                    \"productType\": 2,\n                    \"isInternal\": false,\n                    \"subItems\": []\n                }\n            ]\n        },\n        {\n            \"plu\": \"P2\",\n            \"name\": \"Product 2\",\n            \"price\": 200,\n            \"quantity\": 1,\n            \"productType\": 1,\n            \"subItems\": [\n                {\n                    \"plu\": \"O1\",\n                    \"name\": \"Modifier 1/ Option 1\",\n                    \"price\": 0,\n                    \"quantity\": 1,\n                    \"productType\": 2,\n                    \"isInternal\": false,\n                    \"subItems\": []\n                }\n            ]\n        }\n    ],\n    \"decimalDigits\": 2,\n    \"numberOfCustomers\": 1,\n    \"deliveryCost\": 0,\n    \"serviceCharge\": 0,\n    \"discountTotal\": 0,\n    \"posCustomerId\": \"256706\",\n    \"account\": \"5be9c971c6489f0029******\",\n    \"posReceiptId\": \"\",\n    \"tags\": [\n        \"Brand X\",\n        \"Brand Y\"\n    ]\n}","options":{"raw":{"language":"json"}}},"url":"{{webhookUrl}}orders"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json","description":"","type":"text"}],"cookie":[],"responseTime":null,"body":"{\n    \"posOrderId\": \"302105\",\n    \"posReceiptId\": \"41253185\"\n}"},{"id":"dd0d2259-70ca-4017-895d-7b133192deb5","name":"Meal deal example 1: Kid Fun Meal Box - drink included","originalRequest":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json","type":"text"}],"body":{"mode":"raw","raw":"{\n    \"_id\": \"5f****ea3458774497****41\",\n    \"_created\": \"2020-08-20T09:44:10.792000Z\",\n    \"_updated\": \"2020-08-20T09:44:10.863000Z\",\n    \"_etag\": \"\",\n    \"account\": \"5f****1e953d3a40ec****4f\",\n    \"channelOrderId\": \"TEST1597916650\",\n    \"channelOrderDisplayId\": \"TEST1597916650\",\n    \"posId\": \"\",\n    \"posReceiptId\": \"\",\n    \"posLocationId\": \"TEST-0001\",\n    \"location\": \"5f****59953d3a40ec****53\",\n    \"channelLink\": \"5f****92953d3a40ec****56\",\n    \"status\": 1,\n    \"statusHistory\": [\n        {\n            \"timeStamp\": \"2020-08-20T09:44:10.887000Z\",\n            \"status\": 4,\n            \"response\": \"\",\n            \"source\": 5\n        },\n        {\n            \"timeStamp\": \"2020-08-20T09:44:10.899000Z\",\n            \"status\": 1,\n            \"response\": \"\",\n            \"source\": 2\n        }\n    ],\n    \"channelStatusHistory\": [],\n    \"by\": \"Foodstack\",\n    \"orderType\": 2,\n    \"channel\": 1,\n    \"pos\": 10000,\n    \"pickupTime\": \"2020-08-20T09:44:10.000000Z\",\n    \"deliveryTime\": \"2020-08-20T09:44:10.000000Z\",\n    \"deliveryIsAsap\": true,\n    \"courier\": {\n        \"deliveryBy\": \"restaurant\"\n    },\n    \"customer\": {\n        \"name\": \"\",\n        \"companyName\": \"\",\n        \"phoneNumber\": \"\",\n        \"email\": \"\"\n    },\n    \"deliveryAddress\": {\n        \"street\": \"The Krook\",\n        \"streetNumber\": \"4\",\n        \"postalCode\": \"8888KL\",\n        \"city\": \"Gent\",\n        \"extraAddressInfo\": \"\"\n    },\n    \"orderIsAlreadyPaid\": true,\n    \"payment\": {\n        \"amount\": 850,\n        \"type\": 0\n    },\n    \"note\": \"This is a test order\",\n    \"items\": [\n        {\n            \"plu\": \"CMB-01\",\n            \"name\": \"Kid Fun Meal Box\",\n            \"sortOrder\": 0,\n            \"price\": 800,\n            \"quantity\": 1,\n            \"productType\": 1,\n            \"isInternal\": false,\n            \"isCombo\": true,\n            \"subItems\": [\n                {\n                    \"plu\": \"BRGR-02\",\n                    \"name\": \"Cheese Burger\",\n                    \"sortOrder\": 0,\n                    \"price\": 0,\n                    \"quantity\": 1,\n                    \"productType\": 1,\n                    \"isInternal\": false,\n                    \"subItems\": []\n                },\n                {\n                    \"plu\": \"FRS-02\",\n                    \"name\": \"Medium Fries\",\n                    \"sortOrder\": 0,\n                    \"price\": 0,\n                    \"quantity\": 1,\n                    \"productType\": 1,\n                    \"isInternal\": false,\n                    \"subItems\": [\n                        {\n                            \"plu\": \"SC-02\",\n                            \"name\": \"Ketchup\",\n                            \"sortOrder\": 0,\n                            \"price\": 50,\n                            \"quantity\": 1,\n                            \"productType\": 2,\n                            \"isInternal\": false,\n                            \"subItems\": []\n                        }\n                    ]\n                },\n                {\n                    \"plu\": \"DRNK-02\",\n                    \"name\": \"Iced Tea\",\n                    \"sortOrder\": 0,\n                    \"price\": 0,\n                    \"quantity\": 1,\n                    \"productType\": 1,\n                    \"isInternal\": false,\n                    \"subItems\": []\n                }\n            ]\n        }\n    ],\n    \"decimalDigits\": 2,\n    \"numberOfCustomers\": 1,\n    \"channelOrderRawId\": \"5f****ea90efcf106b****1a\",\n    \"serviceCharge\": 0,\n    \"deliveryCost\": 0,\n    \"discountTotal\": 0,\n    \"historyDriverUpdates\": [],\n    \"capacityUsages\": []\n}","options":{"raw":{"language":"json"}}},"url":"{{webhookUrl}}orders"},"_postman_previewlanguage":"Text","header":[],"cookie":[],"responseTime":null,"body":""},{"id":"f30943a0-e96f-4c16-b38c-5912ecb26a81","name":"Meal deal example 6: Hamburger combo","originalRequest":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json","type":"text"}],"body":{"mode":"raw","raw":"{\n    \"_id\": \"5f****f1fe54f0048****0f\",\n    \"_created\": \"2020-10-06T14:41:19.402000Z\",\n    \"_updated\": \"2020-10-06T14:41:19.423000Z\",\n    \"_etag\": \"\",\n    \"account\": \"5f****e60f73e82f26****22\",\n    \"channelOrderId\": \"TEST1601995279\",\n    \"channelOrderDisplayId\": \"TEST1601995279\",\n    \"posId\": \"\",\n    \"posReceiptId\": \"\",\n    \"posLocationId\": \"GP-0002\",\n    \"location\": \"5f****150f73e82f26****27\",\n    \"channelLink\": \"5f****290f73e82f26****2b\",\n    \"status\": 1,\n    \"statusHistory\": [\n        {\n            \"timeStamp\": \"2020-10-06T14:41:19.428000Z\",\n            \"status\": 4,\n            \"response\": \"\",\n            \"source\": 5\n        },\n        {\n            \"timeStamp\": \"2020-10-06T14:41:19.435000Z\",\n            \"status\": 1,\n            \"response\": \"\",\n            \"source\": 2\n        }\n    ],\n    \"channelStatusHistory\": [],\n    \"by\": \"Foodstack\",\n    \"orderType\": 2,\n    \"channel\": 1,\n    \"pos\": 10000,\n    \"pickupTime\": \"2020-10-06T14:41:19.000000Z\",\n    \"deliveryTime\": \"2020-10-06T14:41:19.000000Z\",\n    \"deliveryIsAsap\": true,\n    \"courier\": {\n        \"deliveryBy\": \"restaurant\"\n    },\n    \"customer\": {\n        \"name\": \"\",\n        \"companyName\": \"\",\n        \"phoneNumber\": \"\",\n        \"email\": \"\"\n    },\n    \"deliveryAddress\": {\n        \"street\": \"The Krook\",\n        \"streetNumber\": \"4\",\n        \"postalCode\": \"8888KL\",\n        \"city\": \"Gent\",\n        \"extraAddressInfo\": \"\"\n    },\n    \"orderIsAlreadyPaid\": true,\n    \"payment\": {\n        \"amount\": 200,\n        \"type\": 0\n    },\n    \"note\": \"This is a test order\",\n    \"items\": [\n        {\n            \"plu\": \"P-BRGR\",\n            \"name\": \"Hamburger\",\n            \"sortOrder\": 0,\n            \"price\": 0,\n            \"quantity\": 1,\n            \"productType\": 1,\n            \"isInternal\": false,\n            \"isCombo\": true,\n            \"subItems\": [\n                {\n                    \"plu\": \"M-FRS-M\",\n                    \"name\": \"Medium Fries\",\n                    \"sortOrder\": 0,\n                    \"price\": 150,\n                    \"quantity\": 1,\n                    \"productType\": 1,\n                    \"isInternal\": false,\n                    \"subItems\": [\n                        {\n                            \"plu\": \"M-SC-KE\",\n                            \"name\": \"Ketchup\",\n                            \"sortOrder\": 0,\n                            \"price\": 50,\n                            \"quantity\": 1,\n                            \"productType\": 2,\n                            \"isInternal\": false,\n                            \"subItems\": []\n                        }\n                    ]\n                }\n            ]\n        }\n    ],\n    \"decimalDigits\": 2,\n    \"numberOfCustomers\": 1,\n    \"channelOrderRawId\": \"5f****0f700242957f****ba\",\n    \"serviceCharge\": 0,\n    \"deliveryCost\": 0,\n    \"discountTotal\": 0,\n    \"historyDriverUpdates\": [],\n    \"capacityUsages\": []\n}","options":{"raw":{"language":"json"}}},"url":"{{webhookUrl}}orders"},"_postman_previewlanguage":"Text","header":[],"cookie":[],"responseTime":null,"body":""}],"_postman_id":"baf6ba63-5ec6-4ad1-b725-36757e9f5a7d"}],"id":"abc2294e-7872-4ab2-b32b-6fabbf03d958","description":"<p>Webhooks are endpoints Foodstack will call. It's up to the integrator to make sure these are hosted on their domain. This URL can be configured per location in Foodstack.</p>\n<p>We also send an HMAC header so that you can verify that orders are indeed coming form Foodstack.\nThe HMAC secret is configured for every integration partner and will be communicated to you in a secure way. Before an HMAC secret is assigned to you, the request is signed using the channelLinkId as HMAC secret. Before certifying the integration, a secure HMAC secret should be set.</p>\n<p>More than one reporting endpoint can be configured. This way the data can be sent to multiple systems, so for instance the POS, but also the accounting system. Atm we only support one secret key per customer, not per reporting endpoint.</p>\n","event":[{"listen":"prerequest","script":{"id":"290710e4-2585-466c-a7fd-3ef0d465ad48","type":"text/javascript","exec":[""]}},{"listen":"test","script":{"id":"e3a3ac3b-bca3-4dff-bd29-aa2fb7c24493","type":"text/javascript","exec":[""]}}],"_postman_id":"abc2294e-7872-4ab2-b32b-6fabbf03d958","auth":{"type":"oauth2","oauth2":{"basicConfig":[{"key":"accessToken","value":"{{integratorToken}}"}],"advancedConfig":[{"key":"useBrowser","value":"<use-browser>"}]},"isInherited":true,"source":{"_postman_id":"ec7259bd-82f3-4a09-a170-39a4e647fd84","id":"ec7259bd-82f3-4a09-a170-39a4e647fd84","name":"Foodstack Public API","type":"collection"}}}],"id":"092d6392-91fb-4bbe-be81-e71988c302d1","description":"<p>As a POS you can find all the methods to integrate with us here. They all require a token in order to work.</p>\n<p>You can login to our <a href=\"https://backoffice.foodstack.brain.io\">backoffice</a> to see your orders, and go to the test orders page to create orders using your current menu. This allows you to test all components of the integration.</p>\n<p>The webhook part of this API can also be used for simple integrations that only require the orders. To receive these webhooks it's enough to add a Reporting endpoint to the channelLink. </p>\n<p>The polling of orders should only be used when your system goes offline and you want to get the missed orders for a short time frame. This should not be used for the constant polling of orders. To receive orders you should have an endpoint publicly available that can be used.</p>\n","event":[{"listen":"prerequest","script":{"id":"ca0443d3-2e85-4837-90fd-49de7f0b5b11","type":"text/javascript","exec":[""]}},{"listen":"test","script":{"id":"4ce8ca22-db25-44ee-9e1a-0a5bc9925003","type":"text/javascript","exec":[""]}}],"_postman_id":"092d6392-91fb-4bbe-be81-e71988c302d1","auth":{"type":"oauth2","oauth2":{"basicConfig":[{"key":"accessToken","value":"{{integratorToken}}"}],"advancedConfig":[{"key":"useBrowser","value":"<use-browser>"}]},"isInherited":true,"source":{"_postman_id":"ec7259bd-82f3-4a09-a170-39a4e647fd84","id":"ec7259bd-82f3-4a09-a170-39a4e647fd84","name":"Foodstack Public API","type":"collection"}}},{"name":"Channel API","item":[{"name":"Webhooks","item":[{"name":"Channel status","id":"a0b62eb0-83e9-4544-a425-dc618d4a4869","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json","type":"text"}],"body":{"mode":"raw","raw":"{\n    \"status\": \"active\",\n    \"channelLocationId\": \"{{externalChannelLocationId}}\",\n    \"channelLinkId\": \"{{channelLinkId}}\"\n}"},"url":"{{YourSetwebhookUrl}}","description":"<p>Gets called when the status of a channel changes.\nFor instance when a new customer adds a channel you will receive the \"register\" event. After this event it should be possible to push the menu to the channel.</p>\n<p>This endpoint gets called when :</p>\n<ul>\n<li>a customer registers a location for this channel (register)</li>\n<li>a customer wants to start receiving orders for this location (active)</li>\n<li>a customer wants to stop receiving orders for this location (inactive)</li>\n</ul>\n<p>We always expect a JSON result which contains the endpoints to:</p>\n<ul>\n<li>receive status updates (statusUpdateURL)</li>\n<li>receive menus (menuUpdateURL)</li>\n<li>receive disabled products (disabledProductsURL)</li>\n<li>stop sending orders to foodstack.brain.io (disableURL)</li>\n<li>snooze or unsnooze (snoozeUnsnoozeURL)</li>\n<li>enable or disable busy mode (busyModeURL)</li>\n</ul>\n<p>If an endpoint is empty or not included in this response we will not use it.\nFor instance if you choose not to set the receive status update endpoint we will not try to send status updates to you.</p>\n","auth":{"type":"oauth2","oauth2":{"basicConfig":[{"key":"accessToken","value":"{{integratorToken}}"}],"advancedConfig":[{"key":"useBrowser","value":"<use-browser>"}]},"isInherited":true,"source":{"_postman_id":"ec7259bd-82f3-4a09-a170-39a4e647fd84","id":"ec7259bd-82f3-4a09-a170-39a4e647fd84","name":"Foodstack Public API","type":"collection"}},"urlObject":{"host":["{{YourSetwebhookUrl}}"],"query":[],"variable":[]}},"response":[{"id":"9073ebb6-ee7c-4ea2-9652-7744da935bd4","name":"Enable channel","originalRequest":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json","type":"text"}],"body":{"mode":"raw","raw":"{\n    \"status\": \"active\",\n    \"channelLocationId\": \"{{externalChannelLocationId}}\",\n    \"channelLinkId\": \"{{channelLinkId}}\"\n}","options":{"raw":{"language":"json"}}},"url":"{{YourSetwebhookUrl}}"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Access-Control-Allow-Credentials","value":""},{"key":"Access-Control-Allow-Headers","value":""},{"key":"Access-Control-Allow-Methods","value":""},{"key":"Access-Control-Allow-Origin","value":"*"},{"key":"Access-Control-Expose-Headers","value":""},{"key":"Content-Encoding","value":"gzip"},{"key":"Content-Type","value":"application/json; charset=utf-8"},{"key":"Date","value":"Wed, 10 Apr 2019 07:36:16 GMT"},{"key":"ETag","value":"W/\"a8-eH6f7zXW/epV8Ovh5IJkkw\""},{"key":"Server","value":"nginx"},{"key":"Vary","value":"Accept-Encoding"},{"key":"Content-Length","value":"145"},{"key":"Connection","value":"keep-alive"}],"cookie":[],"responseTime":null,"body":"{\n    \"statusUpdateURL\": \"https://integrator.com/statusUpdate\",\n    \"menuUpdateURL\": \"https://integrator.com/menuUpdate\",\n    \"disabledProductsURL\": \"https://integrator.com/disableProducts\",\n    \"snoozeUnsnoozeURL\": \"https://integrator.com/snoozeUnsnooze\",\n    \"busyModeURL\": \"https://integrator.com/busyMode\"\n}"}],"_postman_id":"a0b62eb0-83e9-4544-a425-dc618d4a4869"},{"name":"Menu push","id":"51853b24-a92c-4b66-89bd-9daf68a2eef8","protocolProfileBehavior":{"disableBodyPruning":true,"disabledSystemHeaders":{"content-type":true}},"request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","type":"text","value":"application/json"}],"body":{"mode":"raw","raw":"[\n    {\n        \"menu\": \"Foodstack Special menu\",\n        \"availabilities\": [\n            {\n                \"dayOfWeek\": \"1\",\n                \"startTime\": \"13:00\",\n                \"endTime\": \"21:30\"\n            },\n            {\n                \"dayOfWeek\": \"3\",\n                \"startTime\": \"09:30\",\n                \"endTime\": \"21:30\"\n            },\n            {\n                \"dayOfWeek\": \"4\",\n                \"startTime\": \"09:30\",\n                \"endTime\": \"21:30\"\n            },\n            {\n                \"dayOfWeek\": \"5\",\n                \"startTime\": \"09:30\",\n                \"endTime\": \"21:30\"\n            },\n            {\n                \"dayOfWeek\": \"6\",\n                \"startTime\": \"09:30\",\n                \"endTime\": \"21:30\"\n            }\n        ],\n        \"categories\": [\n            {\n                \"_id\": \"5c7d12a4c6489f0001af499a\",\n                \"account\": \"5bf689b0c6489f002f1276dc\",\n                \"name\": \"Burgers\",\n                \"nameTranslations\": {},\n                \"description\": \"\",\n                \"descriptionTranslations\": {}, \n                \"availabilities\": [],\n                \"imageUrl\": \"http://bookmarkurl.info/images/product-unknown/product-unknown-8.jpg\",\n                \"products\": [\n                    \"5c4efd43c6489f0001498a53\",\n                    \"5c4efd43c6489f0001498a54\",\n                    \"5c4efd43c6489f0001498a5d\"\n                ],\n                \"menu\": \"5c7d1287c6489f0001af4999\"\n            },\n            {\n                \"_id\": \"5cade196c6489f00019c80ad\",\n                \"account\": \"5bf689b0c6489f002f1276dc\",\n                \"name\": \"Salads\",\n                \"nameTranslations\": {},\n                \"description\": \"\",\n                \"descriptionTranslations\": {},\n                \"availabilities\": [],\n                \"imageUrl\": \"http://bookmarkurl.info/images/product-unknown/product-unknown-8.jpg\",\n                \"products\": [\n                    \"5c4efd43c6489f0001498a63\",\n                    \"5c4efd43c6489f0001498a64\"\n                ],\n                \"menu\": \"5c7d1287c6489f0001af4999\"\n            },\n            {\n                \"_id\": \"5cade247c6489f00019c80b4\",\n                \"account\": \"5bf689b0c6489f002f1276dc\",\n                \"name\": \"Deserts\",\n                \"nameTranslations\": {},\n                \"description\": \"\",\n                \"descriptionTranslations\": {},\n                \"availabilities\": [],\n                \"imageUrl\": \"http://bookmarkurl.info/images/product-unknown/product-unknown-8.jpg\",\n                \"products\": [\n                    \"5c4efd43c6489f0001498a65\"\n                ],\n                \"menu\": \"5c7d1287c6489f0001af4999\"\n            },\n            {\n                \"_id\": \"5cade261c6489f00019c80b6\",\n                \"account\": \"5bf689b0c6489f002f1276dc\",\n                \"name\": \"Drinks\",\n                \"nameTranslations\": {},\n                \"description\": \"\",\n                \"descriptionTranslations\": {},\n                \"availabilities\": [],\n                \"imageUrl\": \"http://bookmarkurl.info/images/product-unknown/product-unknown-8.jpg\",\n                \"products\": [\n                    \"5c4efd43c6489f0001498ab2\",\n                    \"5c4efd43c6489f0001498ab3\"\n                ],\n                \"menu\": \"5c7d1287c6489f0001af4999\",\n                \"level\": 1\n            }\n        ],\n        \"products\": {\n            \"5c4efd43c6489f0001498a53\": {\n                \"_id\": \"5c4efd43c6489f0001498a53\",\n                \"account\": \"5bf689b0c6489f002f1276dc\",\n                \"location\": \"5bf689d0c6489f002f1276dd\",\n                \"productType\": 1,\n                \"plu\": \"AAB12\",\n                \"price\": 1250,\n                \"name\": \"Cheese bacon\",\n                \"deliveryTax\": 15,\n                \"subProducts\": [\n                    \"5c4efd43c6489f0001498a3f\"\n                ],\n                \"productTags\": [\n                    106\n                ],\n                \"imageUrl\": \"https://www.rachaelraymag.com/.image/t_share/MTQ3MTUxMjMxNzM3OTMxNTAz/two-cheese-bacon-burger-creamy-caramelized-onion-sauce-0617-103010848.jpg\",\n                \"description\": \"\",\n                \"max\": \"0\",\n                \"min\": \"0\",\n                \"channel\": -1\n            },\n            \"5c4efd43c6489f0001498a54\": {\n                \"_id\": \"5c4efd43c6489f0001498a54\",\n                \"account\": \"5bf689b0c6489f002f1276dc\",\n                \"location\": \"5bf689d0c6489f002f1276dd\",\n                \"productType\": 1,\n                \"plu\": \"AAB13\",\n                \"price\": 1150,\n                \"name\": \"Crispy Chicken\",\n                \"deliveryTax\": 15,\n                \"subProducts\": [],\n                \"imageUrl\": \"https://thecozyapron.com/wp-content/uploads/2014/03/spicy-caesar-chix-sand_02-23-14_1_ca.jpg\",\n                \"description\": \"\",\n                \"max\": \"0\",\n                \"min\": \"0\",\n                \"channel\": -1\n            },\n            \"5c4efd43c6489f0001498a5d\": {\n                \"_id\": \"5c4efd43c6489f0001498a5d\",\n                \"account\": \"5bf689b0c6489f002f1276dc\",\n                \"location\": \"5bf689d0c6489f002f1276dd\",\n                \"productType\": 1,\n                \"plu\": \"BUR002\",\n                \"price\": 2000,\n                \"name\": \"Cheese Burger\",\n                \"deliveryTax\": 15,\n                \"subProducts\": [],\n                \"imageUrl\": \"https://www.sbs.com.au/food/sites/sbs.com.au.food/files/lotus-burger-lead.jpg\",\n                \"description\": \"\",\n                \"max\": \"0\",\n                \"min\": \"0\",\n                \"channel\": -1\n            },\n            \"5c4efd43c6489f0001498a63\": {\n                \"_id\": \"5c4efd43c6489f0001498a63\",\n                \"account\": \"5bf689b0c6489f002f1276dc\",\n                \"location\": \"5bf689d0c6489f002f1276dd\",\n                \"productType\": 1,\n                \"plu\": \"ABFs1\",\n                \"price\": 1250,\n                \"name\": \"Caesar\",\n                \"deliveryTax\": 15,\n                \"subProducts\": [],\n                \"imageUrl\": \"\",\n                \"description\": \"\",\n                \"max\": \"0\",\n                \"min\": \"0\",\n                \"channel\": -1\n            },\n            \"5c4efd43c6489f0001498a64\": {\n                \"_id\": \"5c4efd43c6489f0001498a64\",\n                \"account\": \"5bf689b0c6489f002f1276dc\",\n                \"location\": \"5bf689d0c6489f002f1276dd\",\n                \"productType\": 1,\n                \"plu\": \"ABFs2\",\n                \"price\": 950,\n                \"name\": \"Quinoa & lgumes croquants\",\n                \"deliveryTax\": 15,\n                \"subProducts\": [],\n                \"imageUrl\": \"\",\n                \"description\": \"\",\n                \"max\": \"0\",\n                \"min\": \"0\",\n                \"channel\": -1\n            },\n            \"5c4efd43c6489f0001498a65\": {\n                \"_id\": \"5c4efd43c6489f0001498a65\",\n                \"account\": \"5bf689b0c6489f002f1276dc\",\n                \"location\": \"5bf689d0c6489f002f1276dd\",\n                \"productType\": 1,\n                \"plu\": \"PIE1\",\n                \"price\": 800,\n                \"name\": \"Cherry Pie\",\n                \"deliveryTax\": 15,\n                \"subProducts\": [],\n                \"imageUrl\": \"\",\n                \"description\": \"\",\n                \"max\": \"0\",\n                \"min\": \"0\",\n                \"channel\": -1\n            },\n            \"5c4efd43c6489f0001498ab2\": {\n                \"_id\": \"5c4efd43c6489f0001498ab2\",\n                \"account\": \"5bf689b0c6489f002f1276dc\",\n                \"location\": \"5bf689d0c6489f002f1276dd\",\n                \"productType\": 1,\n                \"plu\": \"MSB1\",\n                \"price\": 580,\n                \"name\": \"Milkshake\",\n                \"deliveryTax\": 15,\n                \"subProducts\": [],\n                \"imageUrl\": \"\",\n                \"description\": \"\",\n                \"max\": \"0\",\n                \"min\": \"0\",\n                \"channel\": -1\n            },\n            \"5c4efd43c6489f0001498ab3\": {\n                \"_id\": \"5c4efd43c6489f0001498ab3\",\n                \"account\": \"5bf689b0c6489f002f1276dc\",\n                \"location\": \"5bf689d0c6489f002f1276dd\",\n                \"productType\": 1,\n                \"plu\": \"YGB1\",\n                \"price\": 430,\n                \"name\": \"Yoghurt\",\n                \"deliveryTax\": 15,\n                \"subProducts\": [],\n                \"imageUrl\": \"\",\n                \"uniqueKey\": \"139442\",\n                \"description\": \"\",\n                \"max\": \"0\",\n                \"min\": \"0\",\n                \"channel\": -1\n            }\n        },\n        \"modifierGroups\": {\n            \"5c4efd43c6489f0001498a3f\": {\n                \"_id\": \"5c4efd43c6489f0001498a3f\",\n                \"account\": \"5bf689b0c6489f002f1276dc\",\n                \"location\": \"5bf689d0c6489f002f1276dd\",\n                \"productType\": 3,\n                \"plu\": \"2744\",\n                \"price\": 0,\n                \"name\": \"Curry\",\n                \"deliveryTax\": 15,\n                \"subProducts\": [\n                    \"5c5480b9c6489f0001950c8b\",\n                    \"5c5480b9c6489f0001950c8c\"\n                ],\n                \"imageUrl\": \"http://bookmarkurl.info/images/product-unknown/product-unknown-8.jpg\",\n                \"description\": \"\",\n                \"max\": 2,\n                \"min\": 0,\n                \"multiMax\": 2,\n                \"channel\": -1\n            }\n        },\n        \"modifiers\": {\n            \"5c5480b9c6489f0001950c8b\": {\n                \"_id\": \"5c5480b9c6489f0001950c8b\",\n                \"account\": \"5bf689b0c6489f002f1276dc\",\n                \"location\": \"5bf689d0c6489f002f1276dd\",\n                \"productType\": 2,\n                \"plu\": \"S2\",\n                \"price\": 100,\n                \"name\": \"Thai\",\n                \"deliveryTax\": 15,\n                \"subProducts\": [],\n                \"imageUrl\": \"http://bookmarkurl.info/images/product-unknown/product-unknown-8.jpg\",\n                \"description\": \"\",\n                \"max\": \"0\",\n                \"min\": \"0\",\n                \"channel\": -1\n            },\n            \"5c5480b9c6489f0001950c8c\": {\n                \"_id\": \"5c5480b9c6489f0001950c8c\",\n                \"account\": \"5bf689b0c6489f002f1276dc\",\n                \"location\": \"5bf689d0c6489f002f1276dd\",\n                \"productType\": 2,\n                \"plu\": \"S1\",\n                \"price\": 430,\n                \"name\": \"Curry\",\n                \"deliveryTax\": 15,\n                \"subProducts\": [],\n                \"imageUrl\": \"http://bookmarkurl.info/images/product-unknown/product-unknown-8.jpg\",\n                \"description\": \"Chicken Curry\",\n                \"max\": \"0\",\n                \"min\": \"0\",\n                \"channel\": -1\n            }\n        },\n        \"snoozedProducts\": {\n            \"5c4efd43c6489f0001498a54\": {\n                \"location\": \"5bf689d0c6489f002f1276dd\",\n                \"plu\": \"AAB13\",\n                \"name\": \"Crispy Chicken\",\n                \"snoozeStart\": \"2020-05-07 07:51:01.195000+00:00\",\n                \"snoozeEnd\": \"2020-05-07 13:51:01.195000+00:00\"\n            }\n        },\n        \"channelLinkId\": \"5bfd9c52c11dec000122474d\"\n    }\n]"},"url":"{{YourSetwebhookUrl}}","description":"<p>Your channel will receive this type of request every time a user pushes a menu from within Foodstack.</p>\n<h2 id=\"modifiers-and-modifier-groups\">Modifiers and modifier groups</h2>\n<p>To explain what modifiers and modifier groups are, consider the following example.</p>\n<p>Say that a restaurant sells a range of delicious pizzas. For the sake of simplicity, suppose they only sell them in a single size, \"Normal\". Despite the variety of pizzas, the restaurant wants to offer customers the ability to add extra toppings of their choosing to the pizza they order.</p>\n<p>In Foodstack, this will be modeled using modifiers and modifier groups. Each topping is a <strong>modifier</strong>, which will end up looking like this in the JSON that will be sent in the menu push request:</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">...\n\"modifiers\" : {\n    \"ef4480b9c6489f0001722567\" : {\n        \"_id\" : \"ef4480b9c6489f0001722567\",\n        ...\n        \"name\" : \"Pepperoni\",\n        \"price\" : 300,\n        ...\n    },\n    \"ef4480b9c6489f0001722568\" : {\n        \"_id\" : \"ef4480b9c6489f0001722568\",\n        ...\n        \"name\" : \"Cheese\",\n        \"price\" : 200,\n        ...\n    },\n    \"ef4480b9c6489f0001722569\" : {\n        \"_id\" : \"ef4480b9c6489f0001722569\",\n        ...\n        \"name\" : \"Olives\",\n        \"price\" : 300,\n        ...\n    },\n    ...\n},\n...\n</code></pre>\n<p>To group the different choices (modifiers) together, we create a modifier group. The group should have a customer facing name (e.g. \"Choose Toppings\") and minimum and maximum quantity constraints.\nAgain, this is what the JSON for this would look like:</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">...\n\"modifierGroups\": {\n    \"ef4480b9c6489014aa26183f\" : {\n        \"_id\" : \"ef4480b9c6489014aa26183f\",\n        ...\n        \"name\" : \"Choose Toppings\"\n        \"subProducts\" : [\n            \"ef4480b9c6489f0001722567\",\n            \"ef4480b9c6489f0001722568\",\n            \"ef4480b9c6489f0001722569\",\n            ...\n        ],\n        ...\n        \"max\" : 5,\n        \"min\" : 0,\n        ...\n    }\n},\n...\n</code></pre>\n<p>First off, notice that the IDs of the modifiers corresponding to each topping are in the <code>subProducts</code> in the dictionary describing the modifier group.</p>\n<p>Also have a look at <code>max</code> and <code>min</code> in the JSON above. They're used to indicate the maximum and minimum amount of modifiers customers can select from this modifier group.</p>\n<p>In our example case, we use the modifiers to have a customer select extra toppings to put on top of their pizza. If we say that someone ordering pizza shouldn't <strong>have to</strong> select even a single extra topping, then we have <code>\"min\" : 0</code>. If, say, for practical reasons, we also want to limit the amount of extra toppings to five, we get <code>\"max\" : 5</code>. Those values correspond with what's in the JSON above.</p>\n<p>Modifiers could also be used for a different purpose. Suppose the restaurant in our example wants to add a new pizza size, \"Large\". In that case, each size would be a modifier. The default size, \"Normal\", could be modeled as a modifier with price zero. The new \"Large\" size could then have a price that reflects the corresponding supplement.\nIf we use the modifiers to have a customer choose the size of their pizza, it makes sense that we only allow selecting exactly one modifier. In that case, the values for <code>max</code> and <code>min</code> would be:</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">...\n\"max\": 1,\n\"min\": 1,\n...\n</code></pre>\n<p>Lastly, have a look at the request to the right, as this also gives an example of how modifiers and modifier groups are used, and what they look like in a complete menu push request.</p>\n<h3 id=\"multi-select-modifiers\">Multi-select modifiers</h3>\n<p>In some cases, it must be possible for modifiers in a certain modifier group to be selected more than once.</p>\n<p>Have a look at the JSON menu push example. Look for the modifier group with PLU <code>2744</code>, more specifically how <code>max</code> and <code>multiMax</code> are used.</p>\n<ol>\n<li><p>The <code>max</code> field gets a value of two. This indicates the maximal number of modifiers that can be selected should be limited to two. As there are only two modifiers in the group, this in itself wouldn't make much of a difference when modifiers can only be selected once.</p>\n</li>\n<li><p>Adding <code>multiMax</code> indicates that modifiers in this modifier group should be selectable more than once. Because it has a value of two, each modifier should be selectable at most two times.</p>\n</li>\n</ol>\n<h2 id=\"product-tags-consumable-types\">Product tags: consumable types</h2>\n<p>A product can have one or more product tags. For each product in <code>products</code>, those tags are contained in a list with key <code>productTags</code>. Product tags can be used to indicate consumable types, which your channel should indicate to end users on menus.</p>\n<h2 id=\"availabilities\">Availabilities</h2>\n<p>With every menu that is pushed, there will be a list of availabilities, which indicate when customers ordering food should be able to order from that menu online. Ideally, your channel API makes it so this doesn't close the store outside of those hours, but limits when food can be picked up/delivered (see also the note near the end of this subsection).</p>\n<p>A single entry in this list of availabilities looks like the code snippet below.</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n    \"dayOfWeek\": \"1\",\n    \"startTime\": \"13:00\",\n    \"endTime\": \"21:30\"\n}\n</code></pre>\n<p>For a single entry, its fields are <code>dayOfWeek</code>, <code>startTime</code>, and <code>endTime</code>. Please find a brief explanation of their use in the table below.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Field</th>\n<th>Use</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>dayOfWeek</code></td>\n<td>an integer value that indicates the day of the week for this availability (starting at 1 for Sunday)</td>\n</tr>\n<tr>\n<td><code>startTime</code></td>\n<td>a 24-hour HH:MM format notation of the start time of an availability</td>\n</tr>\n<tr>\n<td><code>endTime</code></td>\n<td>a 24-hour HH:MM format notation of the end time of an availability</td>\n</tr>\n</tbody>\n</table>\n</div><p>Note that the availabilities of a menu are not indicative of whether a store is open or closed. Ordering from a menu should only be possible when the store is open <strong>and</strong> the current time corresponds with an availability of the menu. Likewise, it should be clear to a customer ordering food whether they are unable to do so because the menu is not currently available to them, or because the store is closed.</p>\n<p>Have a look at the example request on the right, which shows what a list of availabilities tied to a menu looks like in a complete menu push request.</p>\n<h2 id=\"snoozed-products\">Snoozed products</h2>\n<p>Each menu can have a list of snoozed products (called <code>snoozedProducts</code>). These contain the PLUs of products and modifiers that are currently snoozed and should be unavailable on the menu. The end date of each product snooze is contained within this list in the <code>snoozeEnd</code> field.</p>\n","auth":{"type":"oauth2","oauth2":{"basicConfig":[{"key":"accessToken","value":"{{integratorToken}}"}],"advancedConfig":[{"key":"useBrowser","value":"<use-browser>"}]},"isInherited":true,"source":{"_postman_id":"ec7259bd-82f3-4a09-a170-39a4e647fd84","id":"ec7259bd-82f3-4a09-a170-39a4e647fd84","name":"Foodstack Public API","type":"collection"}},"urlObject":{"host":["{{YourSetwebhookUrl}}"],"query":[],"variable":[]}},"response":[],"_postman_id":"51853b24-a92c-4b66-89bd-9daf68a2eef8"},{"name":"Order status update","id":"1fa463ea-3ee4-4185-878d-c42ddded0244","protocolProfileBehavior":{"disableBodyPruning":true,"disabledSystemHeaders":{"content-type":true}},"request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","type":"text","value":"application/json"}],"body":{"mode":"raw","raw":"{\n    \"channelOrderId\": \"X7CESD\",\n    \"orderId\": \"<<foodstack.brain.ioOrderId>>\",\n    \"location\": \"<<foodstack.brain.ioLocationId>>\",\n    \"status\": 2,\n    \"timeStamp\": \"2019-05-15 11:45:36.332906\"\n}"},"url":"{{YourSetwebhookUrl}}","description":"<p>A status update for an order happens when a POS performs an action on that order.</p>\n<p>Each incoming status update should be confirmed with at HTTP status 200.</p>\n<p>The table below lists statuses and their corresponding integer value.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Foodstack status tag</th>\n<th>Description</th>\n<th>Integer value</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>PARSED</code></td>\n<td>received and parsed by Foodstack</td>\n<td>1</td>\n</tr>\n<tr>\n<td><code>RECEIVED</code></td>\n<td>received by POS</td>\n<td>2</td>\n</tr>\n<tr>\n<td><code>NEW</code></td>\n<td>received by POS and receipt is created</td>\n<td>10</td>\n</tr>\n<tr>\n<td><code>ACCEPTED</code></td>\n<td>accepted/confirmed</td>\n<td>20</td>\n</tr>\n<tr>\n<td><code>REJECTED</code></td>\n<td>rejected</td>\n<td>30</td>\n</tr>\n<tr>\n<td><code>PRINTED</code></td>\n<td>printed</td>\n<td>40</td>\n</tr>\n<tr>\n<td><code>PREPARING</code></td>\n<td>in preparation</td>\n<td>50</td>\n</tr>\n<tr>\n<td><code>PREPARED</code></td>\n<td>is prepared</td>\n<td>60</td>\n</tr>\n<tr>\n<td><code>READY FOR PICKUP</code></td>\n<td>ready for pickup</td>\n<td>70</td>\n</tr>\n<tr>\n<td><code>IN DELIVERY</code></td>\n<td>en route to customer</td>\n<td>80</td>\n</tr>\n<tr>\n<td><code>FINALIZED</code></td>\n<td>finalized, order has been fully completed</td>\n<td>90</td>\n</tr>\n<tr>\n<td><code>CANCEL</code></td>\n<td>should be voided</td>\n<td>100</td>\n</tr>\n<tr>\n<td><code>CANCELED</code></td>\n<td>has been voided on POS</td>\n<td>110</td>\n</tr>\n<tr>\n<td><code>FAILED</code></td>\n<td>failed</td>\n<td>120</td>\n</tr>\n<tr>\n<td><code>POS RECEIVED FAILED</code></td>\n<td>not received by POS</td>\n<td>121</td>\n</tr>\n<tr>\n<td><code>PARSE FAILED</code></td>\n<td>parsing failed</td>\n<td>124</td>\n</tr>\n</tbody>\n</table>\n</div><p><code>REJECTED</code> should only be used if the order is already in the POS and was (accidentally) submitted a second time.</p>\n<p><code>FINALIZED</code> means that the order is finalised in the POS. Note that this doesn't necessarily mean that the food has also already been delivered to the end customer!</p>\n<hr />\n<h3 id=\"cancel-vs-canceled\"><code>CANCEL</code> vs <code>CANCELED</code></h3>\n<h4 id=\"cancel\"><code>CANCEL</code></h4>\n<p>This is a status your channel should send for an order you want to be canceled by the POS (for example when an end customer places an order, but then immediately changes their mind and cancels the order).</p>\n<h4 id=\"canceled\"><code>CANCELED</code></h4>\n<p>Means the order was canceled by the POS. When you receive this status, you can confirm that the order was canceled by the restaurant. As long as you did not receive this status, your channel should not yet assume the cancellation was successful.</p>\n<p>In this case, Foodstack will resend the order to the POS, with the same <code>channelOrderId</code> and <code>channelOrderDisplayId</code>.</p>\n<p>An example of a status update for a <code>CANCELED</code> order can be selected from the drop-down on the right.</p>\n<p><strong>Note:</strong> Your channel is not yet required to support order cancellation in order to become or remain certified.</p>\n<hr />\n<p><code>FAILED</code> is a status that should be used when the POS could not be reached, or when an order could not be processed correctly, for example when a product is available on the merchant's online store, but deleted in his POS account.</p>\n<h5 id=\"note\">Note</h5>\n<p>If you receive a status that is not documented above, these can safely be ignored in most cases. Contact Foodstack to get the meaning of this status.</p>\n<p>In no case should an unknown status hinder your flow of processing orders.</p>\n<p>When sending a status update for an order, make sure to include the <code>channelOrderId</code>. The value for this corresponds to the <code>_id</code> field from the order that was originally sent.</p>\n","auth":{"type":"oauth2","oauth2":{"basicConfig":[{"key":"accessToken","value":"{{integratorToken}}"}],"advancedConfig":[{"key":"useBrowser","value":"<use-browser>"}]},"isInherited":true,"source":{"_postman_id":"ec7259bd-82f3-4a09-a170-39a4e647fd84","id":"ec7259bd-82f3-4a09-a170-39a4e647fd84","name":"Foodstack Public API","type":"collection"}},"urlObject":{"host":["{{YourSetwebhookUrl}}"],"query":[],"variable":[]}},"response":[{"id":"880b00c6-1045-4af6-86cc-e0a8a5239e5e","name":"Order CANCELED","originalRequest":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json","type":"text"}],"body":{"mode":"raw","raw":"{\n    \"channelOrderId\": \"X7CESD\",\n    \"orderId\": \"<<foodstack.brain.ioOrderId>>\",\n    \"location\": \"<<foodstack.brain.ioLocationId>>\",\n    \"status\": 110,\n    \"timeStamp\": \"2019-05-15 11:45:36.332906\"\n}","options":{"raw":{"language":"json"}}},"url":"{{YourSetwebhookUrl}}"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[],"cookie":[],"responseTime":null,"body":"{\n    \"channelOrderId\": \"X7CESD\",\n    \"orderId\": \"<<foodstack.brain.ioOrderId>>\",\n    \"location\": \"<<foodstack.brain.ioLocationId>>\",\n    \"status\": 110,\n    \"timeStamp\": \"2019-05-15 11:45:37.790214\"\n}"},{"id":"9145a6f6-766f-45ab-938f-58b0810abfd1","name":"Update status to RECEIVED","originalRequest":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json","type":"text"}],"body":{"mode":"raw","raw":"{\n    \"channelOrderId\": \"X7CESD\",\n    \"orderId\": \"<<foodstack.brain.ioOrderId>>\",\n    \"location\": \"<<foodstack.brain.ioLocationId>>\",\n    \"status\": 2,\n    \"timeStamp\": \"2019-05-15 11:45:36.332906\"\n}","options":{"raw":{"language":"json"}}},"url":"{{YourSetwebhookUrl}}"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[],"cookie":[],"responseTime":null,"body":"{\n    \"channelOrderId\": \"X7CESD\",\n    \"orderId\": \"<<foodstack.brain.ioOrderId>>\",\n    \"location\": \"<<foodstack.brain.ioLocationId>>\",\n    \"status\": 2,\n    \"timeStamp\": \"2019-05-15 11:45:37.790214\"\n}"}],"_postman_id":"1fa463ea-3ee4-4185-878d-c42ddded0244"},{"name":"Snooze products","id":"089b98aa-631a-4b53-bee5-bfd48b5adc69","protocolProfileBehavior":{"disableBodyPruning":true,"disabledSystemHeaders":{"content-type":true}},"request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","type":"text","value":"application/json"}],"body":{"mode":"raw","raw":"{\n    \"accountId\": \"5b****71c6489f0029****d4\",\n    \"locationId\": \"5c****ecc6489f0001****b8\",\n    \"channelLinkId\": \"5e****abc11dec0001****9b\",\n    \"operations\": [\n        {\n            \"action\": \"snooze\",\n            \"data\": {\n                \"items\": [\n                    {\n                        \"_id\": \"5c****43c6489f0001****65\",\n                        \"plu\": \"PIE1\",\n                        \"snoozeStart\": \"2020-03-24T16:21:54.955000Z\",\n                        \"snoozeEnd\": \"2020-03-24T22:21:54.955000Z\"\n                    },\n                    {\n                        \"_id\": \"5c****43c6489f0001****3b\",\n                        \"plu\": \"MSB1\",\n                        \"snoozeStart\": \"2020-03-24T16:21:54.955000Z\",\n                        \"snoozeEnd\": \"2020-03-24T22:21:54.955000Z\"\n                    }\n                ]\n            }\n        }\n    ]\n}"},"url":"{{YourSetwebhookUrl}}","description":"<p>Temporarily marking one or more products as unavailable (e.g. because they are out of stock, or some of the ingredients to make them are), is called snoozing.</p>\n<hr />\n<h3 id=\"what-should-a-snoozed-product-look-like-on-my-channel\">What should a snoozed product look like on my channel?</h3>\n<p>The desired effect of a product being snoozed is that the product remains visible in the target store, but that it is visually clear that the product is currently unavailable. This can be done by e.g. greying out a product's entry, and making it so it cannot be selected in the store. As a snooze request also contains the amount of time for which each product is snoozed, it is possible to show an estimate of when a snoozed product will become available again.\nIf your channel cannot support this way of handling snoozed products, the next best thing is to temporarily not display snoozed products on the target store. However, note that this is less clear to customers ordering food online: if they cannot see the snoozed product, they may not understand when, if ever, it will become available again. And that is only if they were even aware of the product's existence in the first place.</p>\n<hr />\n<h3 id=\"request-format\">Request format</h3>\n<p>To snooze one or more products, your channel API will receive requests in the format shown in the request on the right. For a combination of <code>accountId</code>, <code>locationId</code> and <code>channelLinkId</code>, the request will contain a list of actions. In this case, the action is <code>snooze</code>.</p>\n<p>In general, an action also has a <code>data</code> field. For the <code>snooze</code> action, the <code>data</code> contains <code>items</code>, which is a list of items that have to be snoozed.\nNote that, for each item in <code>items</code>, you can see the period during which it should be snoozed, with start and end times stored as <code>snoozeStart</code> and <code>snoozeEnd</code>, respectively. The example on the right shows what timestamp format is used for these values.</p>\n<p>By default, the list of items you will receive in a snooze request from Foodstack will contain only additional items to snooze. If your channel cannot support this, you can change this setting for the channel link for your channel within Foodstack, so that every time you receive a snooze request for your channel, you will <strong>also</strong> receive a full list <code>allSnoozedItems</code> of all items that should be snoozed (including items that should already have been snoozed).</p>\n<h3 id=\"response-format\">Response format</h3>\n<p>The response should indicate snoozing was successful with a <code>200 OK</code> status code, and the (JSON) body should consist of a list of results that correspond to the required actions in the request. Each result should repeat the <code>snooze</code> action, for confirmation. Like an action, a result also has a <code>data</code> field. For the <code>snooze</code> action, the <code>data</code> should contain the ID of the location for which items were snoozed, as well as a list with the PLUs of <strong>all</strong> items that are currently snoozed (including products that were already snoozed). This is also for confirmation.\nOnly use a <code>200 OK</code> response to indicate that <strong>all</strong> items listed in the request were successfully snoozed. Also make sure to only send this response <strong>after</strong> having snoozed all items; the moment your channel sends this response, items must already be snoozed in the targeted store.</p>\n<p>If the desired snooze action cannot be performed, send back an appropriate response and corresponding status. If any of the issues below manifest themselves, make sure to indicate each of them in an array in your response.</p>\n<hr />\n<h4 id=\"notice-work-in-progress\">Notice: Work in progress</h4>\n<p>Before this functionality goes live, we will rework the format of how you should report issues to us. However, in any case we will still require you to send back a list of all products that are currently snoozed.</p>\n<hr />\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Issue</th>\n<th>What to do</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>One or more product(s) used in the request do(es) not exist on your end</td>\n<td>Snooze all products that can be snoozed, but send back a failure status (as not all products could be snoozed)</td>\n</tr>\n<tr>\n<td>One or more product(s) used in the request do(es) not exist on your end</td>\n<td>Nothing needs to be done, as the desired effect is already achieved. If this is the only type of issue, you can still send back a success status.</td>\n</tr>\n</tbody>\n</table>\n</div><p>For each product that causes one of these issue, send back its ID and its PLU.</p>\n<p>Have a look at the example responses on the right to see what format you should use to communicate issues back.</p>\n","auth":{"type":"oauth2","oauth2":{"basicConfig":[{"key":"accessToken","value":"{{integratorToken}}"}],"advancedConfig":[{"key":"useBrowser","value":"<use-browser>"}]},"isInherited":true,"source":{"_postman_id":"ec7259bd-82f3-4a09-a170-39a4e647fd84","id":"ec7259bd-82f3-4a09-a170-39a4e647fd84","name":"Foodstack Public API","type":"collection"}},"urlObject":{"host":["{{YourSetwebhookUrl}}"],"query":[],"variable":[]}},"response":[{"id":"8d6f5327-ab5d-465f-b64f-d109a09c7e4e","name":"Product already snoozed","originalRequest":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json","type":"text"}],"body":{"mode":"raw","raw":"{\n    \"accountId\": \"5b****71c6489f0029****d4\",\n    \"locationId\": \"5c****ecc6489f0001****b8\",\n    \"channelLinkId\": \"5e****abc11dec0001****9b\",\n    \"operations\": [\n        {\n            \"action\": \"snooze\",\n            \"data\": {\n                \"items\": [\n                    {\n                        \"_id\": \"5c****43c6489f0001****65\",\n                        \"plu\": \"PIE1\",\n                        \"snoozeStart\": \"2020-03-24T16:21:54.955000Z\",\n                        \"snoozeEnd\": \"2020-03-24T22:21:54.955000Z\"\n                    },\n                    {\n                        \"_id\": \"5c****43c6489f0001****3b\",\n                        \"plu\": \"MSB1\",\n                        \"snoozeStart\": \"2020-03-24T16:21:54.955000Z\",\n                        \"snoozeEnd\": \"2020-03-24T22:21:54.955000Z\"\n                    }\n                ]\n            }\n        }\n    ]\n}","options":{"raw":{"language":"json"}}},"url":"{{YourSetwebhookUrl}}"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json","description":"","type":"text"}],"cookie":[],"responseTime":null,"body":"{\n    \"results\": [\n        {\n            \"action\": \"snooze\",\n            \"data\": {\n                \"locationId\": \"5c****ecc6489f0001****b8\",\n                \"allSnoozedItems\": [\n                    \"PIE1\",\n                    \"MSB1\"\n                ]\n            },\n            \"issues\": [\n                {\n                    \"description\": \"Product already snoozed\",\n                    \"data\": {\n                        \"_id\": \"5c****43c6489f0001****65\",\n                        \"plu\": \"PIE1\"\n                    }\n                }\n            ]\n        }\n    ]\n}"},{"id":"96c14596-3c74-4234-900e-c76422015bcd","name":"Everything okay","originalRequest":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json","type":"text"}],"body":{"mode":"raw","raw":"{\n    \"accountId\": \"5b****71c6489f0029****d4\",\n    \"locationId\": \"5c****ecc6489f0001****b8\",\n    \"channelLinkId\": \"5e****abc11dec0001****9b\",\n    \"operations\": [\n        {\n            \"action\": \"snooze\",\n            \"data\": {\n                \"items\": [\n                    {\n                        \"_id\": \"5c****43c6489f0001****65\",\n                        \"plu\": \"PIE1\",\n                        \"snoozeStart\": \"2020-03-24T16:21:54.955000Z\",\n                        \"snoozeEnd\": \"2020-03-24T22:21:54.955000Z\"\n                    },\n                    {\n                        \"_id\": \"5c****43c6489f0001****3b\",\n                        \"plu\": \"MSB1\",\n                        \"snoozeStart\": \"2020-03-24T16:21:54.955000Z\",\n                        \"snoozeEnd\": \"2020-03-24T22:21:54.955000Z\"\n                    }\n                ]\n            }\n        }\n    ]\n}","options":{"raw":{"language":"json"}}},"url":"{{YourSetwebhookUrl}}"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json","description":"","type":"text"}],"cookie":[],"responseTime":null,"body":"{\n    \"results\": [\n        {\n            \"action\": \"snooze\",\n            \"data\": {\n                \"locationId\": \"5c****ecc6489f0001****b8\",\n                \"allSnoozedItems\": [\n                    \"PIE1\",\n                    \"MSB1\"\n                ]\n            }\n        }\n    ]\n}"},{"id":"e3f30e66-61eb-4311-86fc-0b9d3803030f","name":"All snoozed products required","originalRequest":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json","type":"text"}],"body":{"mode":"raw","raw":"{\n    \"accountId\": \"5b****71c6489f0029****d4\",\n    \"locationId\": \"5c****ecc6489f0001****b8\",\n    \"channelLinkId\": \"5e****abc11dec0001****9b\",\n    \"operations\": [\n        {\n            \"action\": \"snooze\",\n            \"data\": {\n                \"items\": [\n                    {\n                        \"_id\": \"5c****43c6489f0001****65\",\n                        \"plu\": \"PIE1\",\n                        \"snoozeStart\": \"2020-03-24T16:21:54.955000Z\",\n                        \"snoozeEnd\": \"2020-03-24T22:21:54.955000Z\"\n                    }\n                ],\n                \"allSnoozedItems\": [\n                    {\n                        \"_id\": \"5c****43c6489f0001****65\",\n                        \"plu\": \"PIE1\",\n                        \"snoozeStart\": \"2020-03-24T16:21:54.955000Z\",\n                        \"snoozeEnd\": \"2020-03-24T22:21:54.955000Z\"\n                    },\n                    {\n                        \"_id\": \"5c****43c6489f0001****3b\",\n                        \"plu\": \"MSB1\",\n                        \"snoozeStart\": \"2020-03-24T16:21:54.955000Z\",\n                        \"snoozeEnd\": \"2020-03-24T22:21:54.955000Z\"\n                    }\n                ]\n            }\n        }\n    ]\n}","options":{"raw":{"language":"json"}}},"url":"{{YourSetwebhookUrl}}"},"_postman_previewlanguage":"Text","header":[],"cookie":[],"responseTime":null,"body":""},{"id":"fa97a56c-714f-492a-95c0-2b9233fa6b8e","name":"Unknown product","originalRequest":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json","type":"text"}],"body":{"mode":"raw","raw":"{\n    \"accountId\": \"5b****71c6489f0029****d4\",\n    \"locationId\": \"5c****ecc6489f0001****b8\",\n    \"channelLinkId\": \"5e****abc11dec0001****9b\",\n    \"operations\": [\n        {\n            \"action\": \"snooze\",\n            \"data\": {\n                \"items\": [\n                    {\n                        \"_id\": \"5c****43c6489f0001****65\",\n                        \"plu\": \"PIE1\",\n                        \"snoozeStart\": \"2020-03-24T16:21:54.955000Z\",\n                        \"snoozeEnd\": \"2020-03-24T22:21:54.955000Z\"\n                    },\n                    {\n                        \"_id\": \"5c****43c6489f0001****3b\",\n                        \"plu\": \"MSB1\",\n                        \"snoozeStart\": \"2020-03-24T16:21:54.955000Z\",\n                        \"snoozeEnd\": \"2020-03-24T22:21:54.955000Z\"\n                    }\n                ]\n            }\n        }\n    ]\n}","options":{"raw":{"language":"json"}}},"url":"{{YourSetwebhookUrl}}"},"status":"Not Found","code":404,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json","description":"","type":"text"}],"cookie":[],"responseTime":null,"body":"{\n    \"results\": [\n        {\n            \"action\": \"snooze\",\n            \"data\": {\n                \"locationId\": \"5c****ecc6489f0001****b8\",\n                \"allSnoozedItems\": [\n                    \"PIE1\",\n                    \"MSB1\"\n                ]\n            },\n            \"issues\": [\n                {\n                    \"description\": \"Unknown product\",\n                    \"data\": {\n                        \"_id\": \"5c****43c6489f0001****3b\",\n                        \"plu\": \"MSB1\"\n                    }\n                }\n            ]\n        }\n    ]\n}"}],"_postman_id":"089b98aa-631a-4b53-bee5-bfd48b5adc69"},{"name":"Unsnooze products","id":"2c39dc2f-1354-4bef-be1e-21718de51484","protocolProfileBehavior":{"disableBodyPruning":true,"disabledSystemHeaders":{"content-type":true}},"request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","type":"text","value":"application/json"}],"body":{"mode":"raw","raw":"{\n    \"accountId\": \"5b****71c6489f0029****d4\",\n    \"locationId\": \"5c****ecc6489f0001****b8\",\n    \"channelLinkId\": \"5e****abc11dec0001****9b\",\n    \"operations\": [\n        {\n            \"action\": \"unsnooze\",\n            \"data\": {\n                \"items\": [\n                    {\n                        \"_id\": \"5c****43c6489f0001****65\",\n                        \"plu\": \"PIE1\",\n                        \"snoozeStart\": \"2020-03-24T16:21:54.955000Z\",\n                        \"snoozeEnd\": \"2020-03-24T22:21:54.955000Z\"\n                    },\n                    {\n                        \"_id\": \"5c****43c6489f0001****3b\",\n                        \"plu\": \"MSB1\",\n                        \"snoozeStart\": \"2020-03-24T16:21:54.955000Z\",\n                        \"snoozeEnd\": \"2020-03-24T22:21:54.955000Z\"\n                    }\n                ]\n            }\n        }\n    ]\n}"},"url":"{{YourSetwebhookUrl}}","description":"<p>When a product or one of its ingredients becomes available once more, the product that was snoozed before should now be unsnoozed.</p>\n<hr />\n<h3 id=\"who-keeps-track-of-when-to-unsnooze\">Who keeps track of when to unsnooze?</h3>\n<p>By default, even though you will receive the time when a product should be unsnoozed in a snooze request, Foodstack will send you an unsnooze request when that time expires. If your channel can take care of keeping track of when products should be unsnoozed, you can change this setting for the channel link for your channel within Foodstack, so that Foodstack will no longer send unsnooze requests for products for which the snooze period has expired. It is important to note, however, that, even if your channel keeps track of this information, it must still support unsnoozing on-demand, before the intended snooze period expires.</p>\n<hr />\n<h3 id=\"request-format\">Request format</h3>\n<p>The request that will be sent to your channel API when one or more products should be unsnoozed, is quite similar in format to the request you will receive when products should be snoozed. The most important difference is that the <code>action</code> should be <code>unsnooze</code> instead of <code>snooze</code>.</p>\n<p>To unsnooze one or more products, your channel API will receive requests in the format shown in the request on the right. For a combination of <code>accountId</code>, <code>locationId</code> and <code>channelLinkId</code>, the request will contain a list of actions. In this case, the action is <code>unsnooze</code>.</p>\n<p>For the <code>unsnooze</code> action, the <code>data</code> contains <code>items</code>, which is a list of items that have to be unsnoozed.</p>\n<p>By default, the list of items you will receive in an unsnooze request from Foodstack will contain only additional items to unsnooze. If your channel cannot support this, you can change this setting for the channel link for your channel within Foodstack, so that every time you receive an unsnooze request for your channel, you will <strong>also</strong> receive a full list <code>allSnoozedItems</code> of all items that should be unsnoozed (including items that should already have been unsnoozed).</p>\n<h3 id=\"response-format\">Response format</h3>\n<p>The response should indicate unsnoozing was successful with a <code>200 OK</code> status code, and the (JSON) body should consist of a list of results that correspond to the required actions in the request. Each result should repeat the <code>unsnooze</code> action, for confirmation. Like an action, a result also has a <code>data</code> field. For the <code>unsnooze</code> action, the <code>data</code> should contain the ID of the location for which items were unsnoozed, as well as a list with the PLUs of <strong>all</strong> items that are currently <strong>snoozed</strong>. This is also for confirmation.\nOnly use a <code>200 OK</code> response to indicate that <strong>all</strong> items listed in the request were successfully unsnoozed.  Also make sure to only send this response <strong>after</strong> having unsnoozed all items; the moment your channel sends this response, items must already be unsnoozed in the targeted store.</p>\n<p>If the desired unsnooze action cannot be performed, send back an appropriate response and corresponding status. If any of the issues below manifest themselves, make sure to indicate each of them in an array in your response.</p>\n<hr />\n<h4 id=\"notice-work-in-progress\">Notice: Work in progress</h4>\n<p>Before this functionality goes live, we will rework the format of how you should report issues to us. However, in any case we will still require you to send back a list of all products that are currently snoozed.</p>\n<hr />\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Issue</th>\n<th>What to do</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>One or more product(s) used in the request do(es) not exist on your end</td>\n<td>Unsnooze all products that can be unsnoozed, but send back a failure status (as not all products could be unsnoozed)</td>\n</tr>\n<tr>\n<td>One or more product(s) used in the request do(es) not exist on your end</td>\n<td>Nothing needs to be done, as the desired effect is already achieved. If this is the only type of issue, you can still send back a success status.</td>\n</tr>\n</tbody>\n</table>\n</div><p>For each product that causes one of these issue, send back its ID and its PLU.</p>\n<p>Have a look at the example responses on the right to see what format you should use to communicate issues back.</p>\n","auth":{"type":"oauth2","oauth2":{"basicConfig":[{"key":"accessToken","value":"{{integratorToken}}"}],"advancedConfig":[{"key":"useBrowser","value":"<use-browser>"}]},"isInherited":true,"source":{"_postman_id":"ec7259bd-82f3-4a09-a170-39a4e647fd84","id":"ec7259bd-82f3-4a09-a170-39a4e647fd84","name":"Foodstack Public API","type":"collection"}},"urlObject":{"host":["{{YourSetwebhookUrl}}"],"query":[],"variable":[]}},"response":[{"id":"695d13ff-1d4a-4c47-b73e-3224332711f6","name":"Unknown product","originalRequest":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json","type":"text"}],"body":{"mode":"raw","raw":"{\n    \"accountId\": \"5b****71c6489f0029****d4\",\n    \"locationId\": \"5c****ecc6489f0001****b8\",\n    \"channelLinkId\": \"5e****abc11dec0001****9b\",\n    \"operations\": [\n        {\n            \"action\": \"unsnooze\",\n            \"data\": {\n                \"items\": [\n                    {\n                        \"_id\": \"5c****43c6489f0001****65\",\n                        \"plu\": \"PIE1\",\n                        \"snoozeStart\": \"2020-03-24T16:21:54.955000Z\",\n                        \"snoozeEnd\": \"2020-03-24T22:21:54.955000Z\"\n                    },\n                    {\n                        \"_id\": \"5c****43c6489f0001****3b\",\n                        \"plu\": \"MSB1\",\n                        \"snoozeStart\": \"2020-03-24T16:21:54.955000Z\",\n                        \"snoozeEnd\": \"2020-03-24T22:21:54.955000Z\"\n                    }\n                ]\n            }\n        }\n    ]\n}","options":{"raw":{"language":"json"}}},"url":"{{YourSetwebhookUrl}}"},"status":"Not Found","code":404,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json","description":"","type":"text"}],"cookie":[],"responseTime":null,"body":"{\n    \"results\": [\n        {\n            \"action\": \"unsnooze\",\n            \"data\": {\n                \"locationId\": \"5c****ecc6489f0001****b8\",\n                \"allSnoozedItems\": [\n                    \"PIE1\",\n                    \"MSB1\"\n                ]\n            },\n            \"issues\": [\n                {\n                    \"description\": \"Unknown product\",\n                    \"data\": {\n                        \"_id\": \"5c****43c6489f0001****3b\",\n                        \"plu\": \"MSB1\"\n                    }\n                }\n            ]\n        }\n    ]\n}"},{"id":"9fd422ee-8cf2-412f-a09e-0521759ce452","name":"All snoozed products required","originalRequest":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json","type":"text"}],"body":{"mode":"raw","raw":"{\n    \"accountId\": \"5b****71c6489f0029****d4\",\n    \"locationId\": \"5c****ecc6489f0001****b8\",\n    \"channelLinkId\": \"5e****abc11dec0001****9b\",\n    \"operations\": [\n        {\n            \"action\": \"unsnooze\",\n            \"data\": {\n                \"items\": [\n                    {\n                        \"_id\": \"5c****43c6489f0001****65\",\n                        \"plu\": \"PIE1\",\n                        \"snoozeStart\": \"2020-03-24T16:21:54.955000Z\",\n                        \"snoozeEnd\": \"2020-03-24T22:21:54.955000Z\"\n                    },\n                    {\n                        \"_id\": \"5c****43c6489f0001****3b\",\n                        \"plu\": \"MSB1\",\n                        \"snoozeStart\": \"2020-03-24T16:21:54.955000Z\",\n                        \"snoozeEnd\": \"2020-03-24T22:21:54.955000Z\"\n                    }\n                ],\n                \"allSnoozedItems\": []\n            }\n        }\n    ]\n}","options":{"raw":{"language":"json"}}},"url":"{{YourSetwebhookUrl}}"},"_postman_previewlanguage":"Text","header":[],"cookie":[],"responseTime":null,"body":""},{"id":"ad5ffa9c-729e-4d9e-a389-3a6654f35abc","name":"Product already unsnoozed","originalRequest":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json","type":"text"}],"body":{"mode":"raw","raw":"{\n    \"accountId\": \"5b****71c6489f0029****d4\",\n    \"locationId\": \"5c****ecc6489f0001****b8\",\n    \"channelLinkId\": \"5e****abc11dec0001****9b\",\n    \"operations\": [\n        {\n            \"action\": \"unsnooze\",\n            \"data\": {\n                \"items\": [\n                    {\n                        \"_id\": \"5c****43c6489f0001****65\",\n                        \"plu\": \"PIE1\",\n                        \"snoozeStart\": \"2020-03-24T16:21:54.955000Z\",\n                        \"snoozeEnd\": \"2020-03-24T22:21:54.955000Z\"\n                    },\n                    {\n                        \"_id\": \"5c****43c6489f0001****3b\",\n                        \"plu\": \"MSB1\",\n                        \"snoozeStart\": \"2020-03-24T16:21:54.955000Z\",\n                        \"snoozeEnd\": \"2020-03-24T22:21:54.955000Z\"\n                    }\n                ]\n            }\n        }\n    ]\n}","options":{"raw":{"language":"json"}}},"url":"{{YourSetwebhookUrl}}"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json","description":"","type":"text"}],"cookie":[],"responseTime":null,"body":"{\n    \"results\": [\n        {\n            \"action\": \"unsnooze\",\n            \"data\": {\n                \"locationId\": \"5c****ecc6489f0001****b8\",\n                \"allSnoozedItems\": [\n                    \"PIE1\",\n                    \"MSB1\"\n                ]\n            },\n            \"issues\": [\n                {\n                    \"description\": \"Product not snoozed to begin with\",\n                    \"data\": {\n                        \"_id\": \"5c****43c6489f0001****65\",\n                        \"plu\": \"PIE1\"\n                    }\n                }\n            ]\n        }\n    ]\n}"},{"id":"c6f7d3bc-8a63-4cec-8575-ec7dbea7415c","name":"Everything okay","originalRequest":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json","type":"text"}],"body":{"mode":"raw","raw":"{\n    \"accountId\": \"5b****71c6489f0029****d4\",\n    \"locationId\": \"5c****ecc6489f0001****b8\",\n    \"channelLinkId\": \"5e****abc11dec0001****9b\",\n    \"operations\": [\n        {\n            \"action\": \"unsnooze\",\n            \"data\": {\n                \"items\": [\n                    {\n                        \"_id\": \"5c****43c6489f0001****65\",\n                        \"plu\": \"PIE1\",\n                        \"snoozeStart\": \"2020-03-24T16:21:54.955000Z\",\n                        \"snoozeEnd\": \"2020-03-24T22:21:54.955000Z\"\n                    },\n                    {\n                        \"_id\": \"5c****43c6489f0001****3b\",\n                        \"plu\": \"MSB1\",\n                        \"snoozeStart\": \"2020-03-24T16:21:54.955000Z\",\n                        \"snoozeEnd\": \"2020-03-24T22:21:54.955000Z\"\n                    }\n                ]\n            }\n        }\n    ]\n}","options":{"raw":{"language":"json"}}},"url":"{{YourSetwebhookUrl}}"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json","description":"","type":"text"}],"cookie":[],"responseTime":null,"body":"{\n    \"results\": [\n        {\n            \"action\": \"unsnooze\",\n            \"data\": {\n                \"locationId\": \"5c****ecc6489f0001****b8\",\n                \"allSnoozedItems\": [\n                    \"PIE1\",\n                    \"MSB1\"\n                ]\n            }\n        }\n    ]\n}"}],"_postman_id":"2c39dc2f-1354-4bef-be1e-21718de51484"},{"name":"Busy mode","id":"57e0cd78-ed99-4b9e-b0b9-ad93bc42d855","protocolProfileBehavior":{"disableBodyPruning":true,"disabledSystemHeaders":{"content-type":true}},"request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","type":"text","value":"application/json"}],"body":{"mode":"raw","raw":"{\n    \"accountId\": \"5b****71c6489f0029****d4\",\n    \"locationId\": \"5c****ecc6489f0001****b8\",\n    \"channelLinkId\": \"5e****abc11dec0001****9b\",\n    \"status\": \"PAUSED\"\n}"},"url":"{{YourSetwebhookUrl}}","description":"<p>When a restaurant is very busy, it may have to temporarily halt accepting orders. When this happens, your channel will receive so-called 'busy mode' requests from Foodstack.</p>\n<h3 id=\"request-format\">Request format</h3>\n<p>Have a look at an example request on the right. Busy mode requests contain <code>accountId</code>, <code>locationId</code>, and <code>channelLinkId</code> to point out the target store. There's also a <code>status</code> entry, which can take two (string) values, outlined in the table below.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Status</th>\n<th>Meaning</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>PAUSED</td>\n<td>This is a request to enable busy mode. The store should be 'paused', or closed temporarily, indicating this is because the restaurant is busy.</td>\n</tr>\n<tr>\n<td>ONLINE</td>\n<td>This is a request to disable busy mode. The store should be open as normal.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"response-format\">Response format</h3>\n<p>The response should indicate pausing or unpausing the store was successful with a <code>200 OK</code> status code. The body of the response should echo the current status of the store, after having made the change. (so \"PAUSED\" or \"ONLINE\"). This is shown in the example responses on the right.</p>\n","auth":{"type":"oauth2","oauth2":{"basicConfig":[{"key":"accessToken","value":"{{integratorToken}}"}],"advancedConfig":[{"key":"useBrowser","value":"<use-browser>"}]},"isInherited":true,"source":{"_postman_id":"ec7259bd-82f3-4a09-a170-39a4e647fd84","id":"ec7259bd-82f3-4a09-a170-39a4e647fd84","name":"Foodstack Public API","type":"collection"}},"urlObject":{"host":["{{YourSetwebhookUrl}}"],"query":[],"variable":[]}},"response":[{"id":"367239bb-827a-4360-b446-cf45766d7d16","name":"Enable busy mode","originalRequest":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json","type":"text"}],"body":{"mode":"raw","raw":"{\n    \"accountId\": \"5b****71c6489f0029****d4\",\n    \"locationId\": \"5c****ecc6489f0001****b8\",\n    \"channelLinkId\": \"5e****abc11dec0001****9b\",\n    \"status\": \"PAUSED\"\n}","options":{"raw":{"language":"json"}}},"url":"{{YourSetwebhookUrl}}"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[],"cookie":[],"responseTime":null,"body":"{\n    \"status\": \"PAUSED\"\n}"},{"id":"387e9f98-5854-450a-b950-3b95b6b8ffbf","name":"Disable busy mode","originalRequest":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json","type":"text"}],"body":{"mode":"raw","raw":"{\n    \"accountId\": \"5b****71c6489f0029****d4\",\n    \"locationId\": \"5c****ecc6489f0001****b8\",\n    \"channelLinkId\": \"5e****abc11dec0001****9b\",\n    \"status\": \"ONLINE\"\n}","options":{"raw":{"language":"json"}}},"url":"{{YourSetwebhookUrl}}"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[],"cookie":[],"responseTime":null,"body":"{\n    \"status\": \"ONLINE\"\n}"}],"_postman_id":"57e0cd78-ed99-4b9e-b0b9-ad93bc42d855"}],"id":"28f44275-b439-4aa7-bfa4-f70d90e39f08","description":"<p>Before orders can be sent to Foodstack, the right PLU's and menu's should be available on the Channel.\nThis could of course be done maually, but this is prone to mistakes and menu's often change. (additional products, new prices, etc.)</p>\n<p>Therefore the better way is to implement the menu push webhook so that the online menu can be updated with new information from the POS and/or Foodstack</p>\n<p>Besides the menu, there's also an endpoint where you can receive status updates on orders that were pushed to Foodstack. This info can be used to optimize when drivers are sent to pick up the food.</p>\n","event":[{"listen":"prerequest","script":{"id":"89a61696-72fb-4310-b585-afa8ee5f4d2e","type":"text/javascript","exec":[""]}},{"listen":"test","script":{"id":"b86137fe-574a-4c6a-b32e-95e436030779","type":"text/javascript","exec":[""]}}],"_postman_id":"28f44275-b439-4aa7-bfa4-f70d90e39f08","auth":{"type":"oauth2","oauth2":{"basicConfig":[{"key":"accessToken","value":"{{integratorToken}}"}],"advancedConfig":[{"key":"useBrowser","value":"<use-browser>"}]},"isInherited":true,"source":{"_postman_id":"ec7259bd-82f3-4a09-a170-39a4e647fd84","id":"ec7259bd-82f3-4a09-a170-39a4e647fd84","name":"Foodstack Public API","type":"collection"}}}],"id":"c79906f6-88ee-47dc-b56b-2aeb69b2473a","description":"<p>If you're a channel and you want to integrate with us, this is the API you can use.</p>\n<p>There are 2 parts, everything under Foodstack are methods that need to be called on our servers.\nEverything under Webhooks are methods that need to be available on your server and that Foodstack will call.</p>\n<p><em>WARNING</em> This API hasn't been finalised but the info here can already be used to start integrating</p>\n","event":[{"listen":"prerequest","script":{"id":"5592752f-0bf3-45fd-aa2f-f073a61d613a","type":"text/javascript","exec":[""]}},{"listen":"test","script":{"id":"f7f31740-3e88-4b8c-b601-ff7d0df323c0","type":"text/javascript","exec":[""]}}],"_postman_id":"c79906f6-88ee-47dc-b56b-2aeb69b2473a","auth":{"type":"oauth2","oauth2":{"basicConfig":[{"key":"accessToken","value":"{{integratorToken}}"}],"advancedConfig":[{"key":"useBrowser","value":"<use-browser>"}]},"isInherited":true,"source":{"_postman_id":"ec7259bd-82f3-4a09-a170-39a4e647fd84","id":"ec7259bd-82f3-4a09-a170-39a4e647fd84","name":"Foodstack Public API","type":"collection"}}}],"auth":{"type":"oauth2","oauth2":{"basicConfig":[{"key":"accessToken","value":"{{integratorToken}}"}],"advancedConfig":[{"key":"useBrowser","value":"<use-browser>"}]}},"event":[{"listen":"prerequest","script":{"id":"5ec41c34-7aaf-4d68-a5b7-64c990532b49","type":"text/javascript","exec":["postman.setGlobalVariable(\"now\", new Date().toISOString().split('.')[0] + \"Z\");","","var foodstackOrderCounter = Number(postman.getGlobalVariable(\"foodstackOrderCounter\"));","if (!foodstackOrderCounter)","    foodstackOrderCounter = 1000;","foodstackOrderCounter += 1;","","postman.setGlobalVariable(\"foodstackOrderCounter\", foodstackOrderCounter);"]}},{"listen":"test","script":{"id":"1acaf1e2-9151-4b74-80e6-3df4eef2fa3a","type":"text/javascript","exec":[""]}}],"variable":[{"key":"restUrl","value":"api.brain.io"}]}