├── .gitignore ├── accepted_orders ├── ORDER.md ├── version_1 │ ├── README.md │ ├── MENU.md │ ├── payload │ │ ├── menu.xml │ │ ├── menu.json │ │ ├── orders.xml │ │ └── orders.json │ └── ORDER.md └── payload │ ├── json │ ├── EU_tax_model_order.json │ └── US_tax_model_order.json │ └── xml │ ├── EU_tax_model_order.xml │ └── US_tax_model_order.xml ├── client_payments └── README.md ├── README.md └── fetch_menu ├── README.md └── payload ├── menu.xml └── menu.json /.gitignore: -------------------------------------------------------------------------------- 1 | .idea/ 2 | -------------------------------------------------------------------------------- /accepted_orders/ORDER.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /client_payments/README.md: -------------------------------------------------------------------------------- 1 | GlobalFood Client Payments API 2 | ===================================== 3 | 4 | Work in progress. -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | GlobalFood Integration APIs 2 | ===================================== 3 | 4 | Supported integration APIs: 5 | 6 | - Accept Orders API. For documentation go [here](./accepted_orders/README.md). 7 | 8 | - Fetch Menu API. For documentation go [here](./fetch_menu/README.md). 9 | 10 | - Client Payments API. For documentation go [here](./client_payments/README.md). -------------------------------------------------------------------------------- /accepted_orders/version_1/README.md: -------------------------------------------------------------------------------- 1 | [DEPRECATED] GlobalFood Accepted Orders API (Version 1) 2 | ===================================== 3 | 4 | We offer two main APIs: 5 | 6 | 1. [Getting an order right after it was accepted by the order taking app](./ORDER.md) 7 | 8 | 2. [Fetching the restaurants menu](./MENU.md) 9 | 10 | NOTE: We no longer update the version 1 documentation. To make use of newer features please upgrade to Version 2. -------------------------------------------------------------------------------- /accepted_orders/version_1/MENU.md: -------------------------------------------------------------------------------- 1 | Fetching the restaurant's menu 2 | ============================= 3 | 4 | We need to provide you a secret key to allow you to poll our system. This key must be sent in the "Authorization" header of the request. This key is unique for every restaurant location. (Example: 8yCPCvb3dDo1k). We will provide you this key manually via email once you have created that restaurant in our system. Simply tell us the email address that you used to create the account with in our system. 5 | 6 | Making the request 7 | ------------------ 8 | 9 | 1. The endpoint for fetching the menu is: https://pos.globalfoodsoft.com/pos/menu 10 | 2. Method is GET 11 | 3. API version must be set to: 1 12 | 4. You can select the format (xml or json) by setting the "Accept" header to either "application/xml" or "application/json". Default is JSON. 13 | 14 | 15 | ### Example using JSON 16 | ``` 17 | curl "https://pos.globalfoodsoft.com/pos/menu" \ 18 | -X GET \ 19 | -H "Authorization: 8yCPCvb3dDo1k" \ 20 | -H "Accept: application/json" \ 21 | -H "Glf-Api-Version: 1" 22 | ``` 23 | 24 | See [menu.json](./payload/menu.json) for response payload 25 | 26 | ### Example using XML 27 | ``` 28 | curl "https://pos.globalfoodsoft.com/pos/menu" \ 29 | -X GET \ 30 | -H "Authorization: 8yCPCvb3dDo1k" \ 31 | -H "Accept: application/xml" \ 32 | -H "Glf-Api-Version: 1" 33 | ``` 34 | 35 | See [menu.xml](./payload/menu.xml) for response payload 36 | 37 | 38 | 39 | Menu fields 40 | ----------- 41 | 42 | **DISCLAIMER:** 43 | Results may contain some fields which are not documented here. This means that they are deprecated or only used internally. They are in the process of being removed from the Accepted Orders API. The last section includes a list of relevant fields so please expect and store only those. 44 | 45 | ### Menus 46 | 47 | The fields of a menu are: 48 | 49 | |Field|Type|Description| 50 | |---|---|---| 51 | |id |integer| id of the menu| 52 | |restaurant_id |integer| id of the restaurant| 53 | |currency |string| 3 letter currency code
e.g. USD| 54 | |categories |array of menu categories| list of the menu categories| 55 | 56 | 57 | ### Categories 58 | 59 | The fields of a category are: 60 | 61 | |Field|Type|Description| 62 | |---|---|---| 63 | |id |integer| id of the menu| 64 | |name |string| name of the category| 65 | |sort |integer| sorting order of the category; default is 0| 66 | |items |array of menu items| list of the menu items linked with the category; can be empty| 67 | |groups |array of option groups| list of the option groups linked with the category; can be empty| 68 | 69 | 70 | ### Items 71 | 72 | The fields of an item are: 73 | 74 | |Field|Type|Description| 75 | |---|---|---| 76 | |id |integer| id of the item| 77 | |name |string| name of the item| 78 | |description |string| description of the item | 79 | |price |float| price of the item| 80 | |sort |integer| sorting order of the item; default is 0| 81 | |sizes |array of sizes| list of the sizes that the item comes in; can be empty| 82 | |groups |array of option groups| list of the option groups linked with the item; can be empty| 83 | 84 | 85 | ### Sizes 86 | 87 | 88 | The fields of a size are: 89 | 90 | |Field|Type|Description| 91 | |---|---|---| 92 | |id |integer| id of the size| 93 | |name |string| name of the size| 94 | |price |float| price of the item| 95 | |default |boolean| if this size is the default size| 96 | |groups |array of option groups| list of the option groups linked with the size; can be empty| 97 | 98 | 99 | ### Option Groups 100 | 101 | The fields of an option group are: 102 | 103 | |Field|Type|Description| 104 | |---|---|---| 105 | |id |integer| id of the group| 106 | |name |string| name of the group| 107 | |required |boolean| if selecting an item in the group is required| 108 | |allow_quantity |boolean| if the group allows options to have quantity bigger than 1| 109 | |force_max |integer| maximum number of selected options| 110 | |force_min |integer| minimum number of selected options| 111 | 112 | 113 | ### Options 114 | 115 | The fields of an option are: 116 | 117 | |Field|Type|Description| 118 | |---|---|---| 119 | |id |integer| id of the option| 120 | |name |string| name of the option| 121 | |price |float| price of the option| 122 | |default |boolean| if this option is the default option inside the group| -------------------------------------------------------------------------------- /fetch_menu/README.md: -------------------------------------------------------------------------------- 1 | Fetching the restaurant's menu API (Version 2) 2 | ============================= 3 | 4 | We need to provide you a secret key to allow you to poll our system. This key must be sent in the "Authorization" header of the request. This key is unique for every restaurant location. (Example: 8yCPCvb3dDo1k). 5 | 6 | You may create this key from the Restaurant Admin Panel -> Others (Search for the ... icon) -> 3rd party integrations -> Enabled integrations menu. 7 | 8 | Select the template "Fetch Menu" and generate the key. 9 | 10 | 11 | 12 | Making the request 13 | ------------------ 14 | 15 | 1. The endpoint for fetching the menu is: https://pos.globalfoodsoft.com/pos/menu 16 | 2. Method is GET 17 | 3. API version must be set to: 2 18 | 4. You can select the format (xml or json) by setting the "Accept" header to either "application/xml" or "application/json". Default is JSON. 19 | 20 | 21 | ### Example using JSON 22 | ``` 23 | curl "https://pos.globalfoodsoft.com/pos/menu" \ 24 | -X GET \ 25 | -H "Authorization: 8yCPCvb3dDo1k" \ 26 | -H "Accept: application/json" \ 27 | -H "Glf-Api-Version: 2" 28 | ``` 29 | 30 | See [menu.json](./payload/menu.json) for response payload 31 | 32 | ### Example using XML 33 | ``` 34 | curl "https://pos.globalfoodsoft.com/pos/menu" \ 35 | -X GET \ 36 | -H "Authorization: 8yCPCvb3dDo1k" \ 37 | -H "Accept: application/xml" \ 38 | -H "Glf-Api-Version: 2" 39 | ``` 40 | 41 | See [menu.xml](./payload/menu.xml) for response payload 42 | 43 | 44 | 45 | Menu fields 46 | ----------- 47 | 48 | **DISCLAIMER:** 49 | Results may contain some fields which are not documented here. This means that they are deprecated or only used internally. They are in the process of being removed from the Fetch Menu API. The last section includes a list of relevant fields so please expect and store only those. 50 | 51 | ### Menus 52 | 53 | The fields of a menu are: 54 | 55 | |Field|Type|Description| 56 | |---|---|---| 57 | |id |integer| id of the menu| 58 | |restaurant_id |integer| id of the restaurant| 59 | |currency |string| 3 letter currency code
e.g. USD| 60 | |categories |array of menu categories| list of the menu categories| 61 | 62 | 63 | ### Categories 64 | 65 | The fields of a category are: 66 | 67 | |Field|Type|Description| 68 | |---|---|---| 69 | |id |integer| id of the menu| 70 | |name |string| name of the category| 71 | |items |array of menu items| list of the menu items linked with the category; can be empty| 72 | |groups |array of option groups| list of the option groups linked with the category; can be empty| 73 | 74 | 75 | ### Items 76 | 77 | The fields of an item are: 78 | 79 | |Field| Type |Description| 80 | |---|---------------------------|---| 81 | |id | integer | id of the item| 82 | |name | string | name of the item| 83 | |description | string | description of the item | 84 | |price | float | price of the item| 85 | |sizes | array of sizes | list of the sizes that the item comes in; can be empty| 86 | |groups | array of option groups | list of the option groups linked with the item; can be empty| 87 | |tags | array of strings or `null` | the list of possible string values inside the list are "HOT", "VEGETARIAN", "VEGAN", "GLUTEN_FREE", "HALAL", "NUT_FREE", "DAIRY_FREE", "RAW"; the `null` value will appear if the item has never had any tags set, otherwise it's always an array 88 | |extras | object | See description bellow| 89 | 90 | #### Extras 91 | 92 | The extras object contains information for [Allergens](#allergens), [Nutritional values](#nutritional-values), [Order Types](#order-types) and [Kitchen Internal Name](#kitchen-internal-name). 93 | 94 | ##### Allergens 95 | 96 | The Allergens will have two implementations right now. 97 | - menu_item_allergens_ids: The first one is an array of internal IDs for the allergens that has been deprecated and will be eliminated next year. 98 | - menu_item_allergens_values: The seconds one is an array of objects that contain the internal id and the name of the allergen. 99 | 100 | ##### Nutritional Values 101 | 102 | - menu_item_nutritional_values: This is an array of objects that contain the internal id of the nutritional value and the name of the nutritional value. 103 | 104 | ##### Order Types 105 | 106 | - menu_item_order_types: An array of strings with the order types in which the item is available. If this field does not exist or is null, the item is available for all order types. 107 | 108 | ##### Kitchen Internal Name 109 | 110 | - menu_item_kitchen_internal_name: A string with the internal name to be used on kitchen tickets, if available. 111 | 112 | 113 | ### Sizes 114 | 115 | 116 | The fields of a size are: 117 | 118 | |Field|Type|Description| 119 | |---|---|---| 120 | |id |integer| id of the size| 121 | |name |string| name of the size| 122 | |price |float| price of the item| 123 | |default |boolean| if this size is the default size| 124 | |groups |array of option groups| list of the option groups linked with the size; can be empty| 125 | |extras | object | See description bellow| 126 | 127 | #### Extras 128 | 129 | The extras object contains information on [Nutritional values](#nutritional-values). 130 | Details on Nutritional values can be found in [Items / Extras / Nutritional Values](#nutritional-values) 131 | 132 | ### Option Groups 133 | 134 | The fields of an option group are: 135 | 136 | |Field|Type|Description| 137 | |---|---|---| 138 | |id |integer| id of the group| 139 | |name |string| name of the group| 140 | |required |boolean| if selecting an item in the group is required| 141 | |allow_quantity |boolean| if the group allows options to have quantity bigger than 1| 142 | |force_max |integer| maximum number of selected options| 143 | |force_min |integer| minimum number of selected options| 144 | 145 | 146 | ### Options 147 | 148 | The fields of an option are: 149 | 150 | |Field|Type|Description| 151 | |---|---|---| 152 | |id |integer| id of the option| 153 | |name |string| name of the option| 154 | |price |float| price of the option| 155 | |default |boolean| if this option is the default option inside the group| 156 | |extras | object | See description bellow| 157 | 158 | #### Extras 159 | 160 | The extras object contains information on [Kitchen Internal Name](#kitchen-internal-name). 161 | Details on Kitchen Internal Name can be found in [Items / Extras / Kitchen Internal Name](#kitchen-internal-name). 162 | Inside options, it uses the key "menu_option_kitchen_internal_name". 163 | 164 | NOTES: 165 | * The key generated using the "Fetch Menu" template doesn't grant you access to the Accepted Orders API. More details of how to get an order once it was accepted [here](../accepted_orders/README.md). 166 | -------------------------------------------------------------------------------- /accepted_orders/version_1/payload/menu.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4108 4 | 4172 5 | true 6 | USD 7 | 8 | 14937 9 | 4108 10 | Pizza 11 | true 12 | 13 | 14 | 127 15 | 0 16 | 2939 17 | 18 | 58424 19 | 14937 20 | Pizza Margherita 21 | (tomato sauce, cheese) 22 | 7 23 | true 24 | 25 | 26 | 127 27 | 0 28 | 29 | 37086 30 | 58424 31 | Small 32 | 0 33 | true 34 | 35 | 16978 36 | 4108 37 | Extra Toppings (Small) 38 | 0 39 | false 40 | 1 41 | 1 42 | false 43 | 50 | 57 | 58 | 59 | 60 | 37087 61 | 58424 62 | Large 63 | 2 64 | false 65 | 66 | 16979 67 | 4108 68 | Extra Toppings (Large) 69 | 0 70 | false 71 | 1 72 | 1 73 | false 74 | 81 | 88 | 89 | 90 | 91 | 92 | 58425 93 | 14937 94 | Pizza Prosciutto 95 | (tomato sauce, cheese, ham) 96 | 8 97 | true 98 | 99 | 100 | 127 101 | 0 102 | 103 | 37088 104 | 58425 105 | Small 106 | 0 107 | true 108 | 109 | 16978 110 | 4108 111 | Extra Toppings (Small) 112 | 0 113 | false 114 | 1 115 | 1 116 | false 117 | 124 | 131 | 132 | 133 | 134 | 37089 135 | 58425 136 | Large 137 | 2 138 | false 139 | 140 | 16979 141 | 4108 142 | Extra Toppings (Large) 143 | 0 144 | false 145 | 1 146 | 1 147 | false 148 | 155 | 162 | 163 | 164 | 165 | 166 | 16977 167 | 4108 168 | Crust 169 | 0 170 | true 171 | 1 172 | 1 173 | false 174 | 181 | 188 | 189 | 190 | 191 | 14938 192 | 4108 193 | Pasta 194 | true 195 | 196 | 197 | 127 198 | 0 199 | 2967 200 | 201 | 58426 202 | 14938 203 | Spaghetti Bolognese 204 | 205 | 9 206 | true 207 | 208 | 209 | 127 210 | 0 211 | 212 | 213 | 58427 214 | 14938 215 | Spaghetti Frutti di Mare 216 | (with sea food) 217 | 12 218 | true 219 | 220 | 221 | 127 222 | 0 223 | 224 | 225 | -------------------------------------------------------------------------------- /accepted_orders/version_1/payload/menu.json: -------------------------------------------------------------------------------- 1 | { 2 | "id": 4108, 3 | "restaurant_id": 4172, 4 | "active": true, 5 | "currency": "USD", 6 | "categories": [ 7 | { 8 | "id": 14937, 9 | "menu_id": 4108, 10 | "name": "Pizza", 11 | "active": true, 12 | "active_begin": null, 13 | "active_end": null, 14 | "active_days": 127, 15 | "sort": 0, 16 | "picture_id": 2939, 17 | "items": [ 18 | { 19 | "id": 58424, 20 | "menu_category_id": 14937, 21 | "name": "Pizza Margherita", 22 | "description": "(tomato sauce, cheese)", 23 | "price": 7, 24 | "active": true, 25 | "active_begin": null, 26 | "active_end": null, 27 | "active_days": 127, 28 | "sort": 0, 29 | "sizes": [ 30 | { 31 | "id": 37086, 32 | "menu_item_id": 58424, 33 | "name": "Small", 34 | "price": 0, 35 | "default": true, 36 | "groups": [ 37 | { 38 | "id": 16978, 39 | "menu_id": 4108, 40 | "name": "Extra Toppings (Small)", 41 | "sort": 0, 42 | "required": false, 43 | "force_min": 1, 44 | "force_max": 1, 45 | "allow_quantity": false, 46 | "options": [ 47 | { 48 | "id": 51188, 49 | "option_group_id": 16978, 50 | "name": "Corn", 51 | "price": 0.7, 52 | "default": false 53 | }, 54 | { 55 | "id": 51189, 56 | "option_group_id": 16978, 57 | "name": "Extra mozzarella", 58 | "price": 1.2, 59 | "default": false 60 | } 61 | ] 62 | } 63 | ] 64 | }, 65 | { 66 | "id": 37087, 67 | "menu_item_id": 58424, 68 | "name": "Large", 69 | "price": 2, 70 | "default": false, 71 | "groups": [ 72 | { 73 | "id": 16979, 74 | "menu_id": 4108, 75 | "name": "Extra Toppings (Large)", 76 | "sort": 0, 77 | "required": false, 78 | "force_min": 1, 79 | "force_max": 1, 80 | "allow_quantity": false, 81 | "options": [ 82 | { 83 | "id": 51190, 84 | "option_group_id": 16979, 85 | "name": "Corn", 86 | "price": 1.2, 87 | "default": false 88 | }, 89 | { 90 | "id": 51191, 91 | "option_group_id": 16979, 92 | "name": "Extra mozzarella", 93 | "price": 1.7, 94 | "default": false 95 | } 96 | ] 97 | } 98 | ] 99 | } 100 | ], 101 | "groups": [] 102 | }, 103 | { 104 | "id": 58425, 105 | "menu_category_id": 14937, 106 | "name": "Pizza Prosciutto", 107 | "description": "(tomato sauce, cheese, ham)", 108 | "price": 8, 109 | "active": true, 110 | "active_begin": null, 111 | "active_end": null, 112 | "active_days": 127, 113 | "sort": 0, 114 | "sizes": [ 115 | { 116 | "id": 37088, 117 | "menu_item_id": 58425, 118 | "name": "Small", 119 | "price": 0, 120 | "default": true, 121 | "groups": [ 122 | { 123 | "id": 16978, 124 | "menu_id": 4108, 125 | "name": "Extra Toppings (Small)", 126 | "sort": 0, 127 | "required": false, 128 | "force_min": 1, 129 | "force_max": 1, 130 | "allow_quantity": false, 131 | "options": [ 132 | { 133 | "id": 51188, 134 | "option_group_id": 16978, 135 | "name": "Corn", 136 | "price": 0.7, 137 | "default": false 138 | }, 139 | { 140 | "id": 51189, 141 | "option_group_id": 16978, 142 | "name": "Extra mozzarella", 143 | "price": 1.2, 144 | "default": false 145 | } 146 | ] 147 | } 148 | ] 149 | }, 150 | { 151 | "id": 37089, 152 | "menu_item_id": 58425, 153 | "name": "Large", 154 | "price": 2, 155 | "default": false, 156 | "groups": [ 157 | { 158 | "id": 16979, 159 | "menu_id": 4108, 160 | "name": "Extra Toppings (Large)", 161 | "sort": 0, 162 | "required": false, 163 | "force_min": 1, 164 | "force_max": 1, 165 | "allow_quantity": false, 166 | "options": [ 167 | { 168 | "id": 51190, 169 | "option_group_id": 16979, 170 | "name": "Corn", 171 | "price": 1.2, 172 | "default": false 173 | }, 174 | { 175 | "id": 51191, 176 | "option_group_id": 16979, 177 | "name": "Extra mozzarella", 178 | "price": 1.7, 179 | "default": false 180 | } 181 | ] 182 | } 183 | ] 184 | } 185 | ], 186 | "groups": [] 187 | } 188 | ], 189 | "groups": [ 190 | { 191 | "id": 16977, 192 | "menu_id": 4108, 193 | "name": "Crust", 194 | "sort": 0, 195 | "required": true, 196 | "force_min": 1, 197 | "force_max": 1, 198 | "allow_quantity": false, 199 | "options": [ 200 | { 201 | "id": 51186, 202 | "option_group_id": 16977, 203 | "name": "Fluffy", 204 | "price": 0, 205 | "default": true 206 | }, 207 | { 208 | "id": 51187, 209 | "option_group_id": 16977, 210 | "name": "Crispy", 211 | "price": 0, 212 | "default": false 213 | } 214 | ] 215 | } 216 | ] 217 | }, 218 | { 219 | "id": 14938, 220 | "menu_id": 4108, 221 | "name": "Pasta", 222 | "active": true, 223 | "active_begin": null, 224 | "active_end": null, 225 | "active_days": 127, 226 | "sort": 0, 227 | "picture_id": 2967, 228 | "items": [ 229 | { 230 | "id": 58426, 231 | "menu_category_id": 14938, 232 | "name": "Spaghetti Bolognese", 233 | "description": "", 234 | "price": 9, 235 | "active": true, 236 | "active_begin": null, 237 | "active_end": null, 238 | "active_days": 127, 239 | "sort": 0, 240 | "sizes": [], 241 | "groups": [] 242 | }, 243 | { 244 | "id": 58427, 245 | "menu_category_id": 14938, 246 | "name": "Spaghetti Frutti di Mare", 247 | "description": "(with sea food)", 248 | "price": 12, 249 | "active": true, 250 | "active_begin": null, 251 | "active_end": null, 252 | "active_days": 127, 253 | "sort": 0, 254 | "sizes": [], 255 | "groups": [] 256 | } 257 | ], 258 | "groups": [] 259 | } 260 | ] 261 | } -------------------------------------------------------------------------------- /accepted_orders/payload/json/EU_tax_model_order.json: -------------------------------------------------------------------------------- 1 | { 2 | "count": 1, 3 | "orders": [ 4 | { 5 | "coupons": [], 6 | "tax_list": [ 7 | { 8 | "type": "delivery_fee", 9 | "value": 1.6, 10 | "rate": 0.19 11 | }, 12 | { 13 | "type": "tip", 14 | "value": 0.6, 15 | "rate": 0.19 16 | }, 17 | { 18 | "type": "item", 19 | "value": 4.37, 20 | "rate": 0.19 21 | }, 22 | { 23 | "type": "fees_discounts_subtotal", 24 | "value": 1.60, 25 | "rate": 0.19 26 | }, 27 | { 28 | "type": "service_fee_total", 29 | "value": 3.20, 30 | "rate": 0.19 31 | } 32 | ], 33 | "id": 6819, 34 | "total_price": 41.14, 35 | "sub_total_price": 27.4, 36 | "tax_value": 6.57, 37 | "persons": 0, 38 | "latitude": "53.32016595583847", 39 | "longitude": "-6.394491487835694", 40 | "client_first_name": "John", 41 | "client_last_name": "Doe", 42 | "client_email": "john.doe@gmail.com", 43 | "client_phone": "+12126871225", 44 | "client_order_count": 3, 45 | "restaurant_name": "Pronto", 46 | "instructions": null, 47 | "currency": "EUR", 48 | "type": "delivery", 49 | "status": "accepted", 50 | "missed_reason": null, 51 | "source": "admin", 52 | "pin_skipped": false, 53 | "accepted_at": "2019-05-29T14:51:52.000Z", 54 | "tax_type": "GROSS", 55 | "tax_name": "VAT", 56 | "fulfill_at": "2019-05-29T15:46:52.000Z", 57 | "updated_at": "2019-05-29T15:46:52.000Z", 58 | "reference": null, 59 | "restaurant_id": 195, 60 | "client_id": 756, 61 | "restaurant_phone": "+3532983027", 62 | "restaurant_timezone": "Europe/Dublin", 63 | "delivery_zone_name": "Zone 1", 64 | "outside_delivery_area": null, 65 | "company_account_id": 100195, 66 | "pos_system_id": 28, 67 | "restaurant_key": "bvvZ3913t1cJRf8HA5OxvO2FjiSmExSly", 68 | "restaurant_country": "Ireland", 69 | "restaurant_city": "Dublin", 70 | "restaurant_state": "Dublin", 71 | "restaurant_zipcode": "031534", 72 | "restaurant_street": "main street 1", 73 | "restaurant_latitude": "53.28782521356338", 74 | "restaurant_longitude": "-6.359779471163961", 75 | "restaurant_token": "TOKEN", 76 | "api_version": 2, 77 | "payment": "ONLINE", 78 | "for_later": false, 79 | "fulfillment_option": null, 80 | "client_marketing_consent": true, 81 | "client_ip_address": "127.0.0.1", 82 | "client_address": "Main street 5, Dublin", 83 | "client_address_parts": { 84 | "street": "Main street 5", 85 | "city": "Dublin" 86 | }, 87 | "delivery_by_distance": { 88 | "distance": 5, 89 | "unit": "km", 90 | "delivery_fee": 2 91 | }, 92 | "items": [ 93 | { 94 | "id": 27187, 95 | "name": "DELIVERY_FEE", 96 | "total_item_price": 10, 97 | "price": 10, 98 | "quantity": 1, 99 | "instructions": null, 100 | "type": "delivery_fee", 101 | "type_id": 514, 102 | "tax_rate": 0.19, 103 | "tax_value": 1.5966, 104 | "parent_id": null, 105 | "item_discount": 0, 106 | "cart_discount_rate": 0, 107 | "cart_discount": 0, 108 | "tax_type": "GROSS", 109 | "kitchen_internal_name": null, 110 | "options": [] 111 | }, 112 | { 113 | "id": 27188, 114 | "name": "TIP", 115 | "total_item_price": 3.74, 116 | "price": 3.74, 117 | "quantity": 1, 118 | "instructions": null, 119 | "type": "tip", 120 | "type_id": null, 121 | "tax_rate": 0.19, 122 | "tax_value": 0.5971, 123 | "parent_id": null, 124 | "item_discount": 0, 125 | "cart_discount_rate": 0, 126 | "cart_discount": 0, 127 | "tax_type": "GROSS", 128 | "kitchen_internal_name": null, 129 | "options": [] 130 | }, 131 | { 132 | "id": 27189, 133 | "name": "Pizza Margherita", 134 | "total_item_price": 20.4, 135 | "price": 7, 136 | "quantity": 2, 137 | "instructions": "No pepper please", 138 | "type": "item", 139 | "type_id": 841, 140 | "tax_rate": 0.19, 141 | "tax_value": 2.4304, 142 | "parent_id": null, 143 | "item_discount": 0, 144 | "cart_discount_rate": 0.15432, 145 | "cart_discount": 3.15, 146 | "tax_type": "GROSS", 147 | "kitchen_internal_name": "Pizza Margherita Internal Name", 148 | "options": [ 149 | { 150 | "id": 20094, 151 | "name": "Large", 152 | "price": 2, 153 | "group_name": "Size", 154 | "quantity": 1, 155 | "type": "size", 156 | "type_id": 798, 157 | "kitchen_internal_name": null 158 | }, 159 | { 160 | "id": 20095, 161 | "name": "Extra mozzarella", 162 | "price": 1.2, 163 | "group_name": "Extra Toppings (Small)", 164 | "quantity": 1, 165 | "type": "option", 166 | "type_id": 1187, 167 | "kitchen_internal_name": "Extra mozzarella Internal Name" 168 | } 169 | ] 170 | }, 171 | { 172 | "id": 27190, 173 | "name": "5$ off total for first time clients", 174 | "total_item_price": 0, 175 | "price": 0, 176 | "quantity": 1, 177 | "instructions": null, 178 | "type": "promo_cart", 179 | "type_id": 226, 180 | "tax_rate": 0, 181 | "tax_value": 0, 182 | "parent_id": null, 183 | "item_discount": 5, 184 | "cart_discount_rate": 0.15432, 185 | "cart_discount": -5, 186 | "tax_type": "GROSS", 187 | "coupon": "MQGTLWWLGQRE", 188 | "kitchen_internal_name": null, 189 | "options": [] 190 | }, 191 | { 192 | "id": 27191, 193 | "name": "Spaghetti Frutti di Mare", 194 | "total_item_price": 12, 195 | "price": 12, 196 | "quantity": 1, 197 | "instructions": "", 198 | "type": "item", 199 | "type_id": 844, 200 | "tax_rate": 0.19, 201 | "tax_value": 0, 202 | "parent_id": 27192, 203 | "item_discount": 12, 204 | "cart_discount_rate": 0.15432, 205 | "cart_discount": 0, 206 | "tax_type": "GROSS", 207 | "kitchen_internal_name": null, 208 | "options": [] 209 | }, 210 | { 211 | "id": 27192, 212 | "name": "Buy one get other free", 213 | "total_item_price": 24, 214 | "price": 0, 215 | "quantity": 1, 216 | "instructions": null, 217 | "type": "promo_item", 218 | "type_id": 225, 219 | "tax_rate": 0, 220 | "tax_value": 0, 221 | "parent_id": null, 222 | "item_discount": 12, 223 | "cart_discount_rate": 0.15432, 224 | "cart_discount": 1.85, 225 | "tax_type": "GROSS", 226 | "coupon": "9VKHM77MZ434", 227 | "kitchen_internal_name": null, 228 | "options": [] 229 | }, 230 | { 231 | "id": 27193, 232 | "name": "Spaghetti Frutti di Mare", 233 | "total_item_price": 12, 234 | "price": 12, 235 | "quantity": 1, 236 | "instructions": "", 237 | "type": "item", 238 | "type_id": 844, 239 | "tax_rate": 0.19, 240 | "tax_value": 1.6203, 241 | "parent_id": 27192, 242 | "item_discount": 0, 243 | "cart_discount_rate": 0.15432, 244 | "cart_discount": 1.85, 245 | "tax_type": "GROSS", 246 | "kitchen_internal_name": null, 247 | "options": [] 248 | }, 249 | { 250 | "id": 27194, 251 | "name": "Free drink on any order $30+", 252 | "total_item_price": 5, 253 | "price": 0, 254 | "quantity": 1, 255 | "instructions": null, 256 | "type": "promo_cart_item", 257 | "type_id": 228, 258 | "tax_rate": 0, 259 | "tax_value": 0, 260 | "parent_id": null, 261 | "item_discount": 5, 262 | "cart_discount_rate": 0.15432, 263 | "cart_discount": 0, 264 | "tax_type": "GROSS", 265 | "kitchen_internal_name": null, 266 | "options": [] 267 | }, 268 | { 269 | "id": 27195, 270 | "name": "Cola", 271 | "total_item_price": 5, 272 | "price": 5, 273 | "quantity": 1, 274 | "instructions": "", 275 | "type": "item", 276 | "type_id": 2716, 277 | "tax_rate": 0.19, 278 | "tax_value": 0, 279 | "parent_id": 27194, 280 | "item_discount": 5, 281 | "cart_discount_rate": 0.15432, 282 | "cart_discount": 0, 283 | "tax_type": "GROSS", 284 | "kitchen_internal_name": null, 285 | "options": [ 286 | { 287 | "id": 20096, 288 | "name": "Cola light", 289 | "price": 0, 290 | "group_name": "Which cola", 291 | "quantity": 1, 292 | "type": "option", 293 | "type_id": 3873, 294 | "kitchen_internal_name": null 295 | } 296 | ] 297 | }, 298 | { 299 | "id": 27196, 300 | "name": "Service fee subtotal 1", 301 | "total_item_price": 5, 302 | "price": 5, 303 | "quantity": 1, 304 | "instructions": null, 305 | "type": "service_fee_subtotal", 306 | "type_id": 123, 307 | "tax_rate": 0.19, 308 | "tax_value": 1.5966, 309 | "parent_id": null, 310 | "item_discount": 0, 311 | "cart_discount_rate": 0, 312 | "cart_discount": 0, 313 | "tax_type": "GROSS", 314 | "kitchen_internal_name": null, 315 | "options": [] 316 | }, 317 | { 318 | "id": 27197, 319 | "name": "Service fee subtotal 2", 320 | "total_item_price": 5, 321 | "price": 5, 322 | "quantity": 1, 323 | "instructions": null, 324 | "type": "service_fee_subtotal", 325 | "type_id": 125, 326 | "tax_rate": 0.19, 327 | "tax_value": 0.7983, 328 | "parent_id": null, 329 | "item_discount": 0, 330 | "cart_discount_rate": 0, 331 | "cart_discount": 0, 332 | "tax_type": "GROSS", 333 | "kitchen_internal_name": null, 334 | "options": [] 335 | }, 336 | { 337 | "id": 27198, 338 | "name": "Cash discount", 339 | "total_item_price": -5, 340 | "price": -5, 341 | "quantity": 1, 342 | "instructions": null, 343 | "type": "cash_discount", 344 | "type_id": 125, 345 | "tax_rate": 0.19, 346 | "tax_value": 0.7983, 347 | "parent_id": null, 348 | "item_discount": 0, 349 | "cart_discount_rate": 0, 350 | "cart_discount": 0, 351 | "tax_type": "GROSS", 352 | "kitchen_internal_name": null, 353 | "options": [] 354 | }, 355 | { 356 | "id": 27199, 357 | "name": "Service fee total", 358 | "total_item_price": 20, 359 | "price": 20, 360 | "quantity": 1, 361 | "instructions": null, 362 | "type": "service_fee_total", 363 | "type_id": 514, 364 | "tax_rate": 0.19, 365 | "tax_value": 3.1932, 366 | "parent_id": null, 367 | "item_discount": 0, 368 | "cart_discount_rate": 0, 369 | "cart_discount": 0, 370 | "tax_type": "GROSS", 371 | "kitchen_internal_name": null, 372 | "options": [] 373 | } 374 | ] 375 | } 376 | ] 377 | } 378 | -------------------------------------------------------------------------------- /accepted_orders/payload/json/US_tax_model_order.json: -------------------------------------------------------------------------------- 1 | { 2 | "count": 1, 3 | "orders": [ 4 | { 5 | "coupons": [], 6 | "tax_list": [ 7 | { 8 | "type": "delivery_fee", 9 | "value": 1.9, 10 | "rate": 0.19 11 | }, 12 | { 13 | "type": "tip", 14 | "value": 1.1, 15 | "rate": 0.19 16 | }, 17 | { 18 | "type": "item", 19 | "value": 9.08, 20 | "rate": 0.19 21 | }, 22 | { 23 | "type": "fees_discounts_subtotal", 24 | "value": 1.90, 25 | "rate": 0.19 26 | }, 27 | { 28 | "type": "service_fee_total", 29 | "value": 3.80, 30 | "rate": 0.19 31 | } 32 | ], 33 | "id": 6816, 34 | "total_price": 75.66, 35 | "sub_total_price": 47.8, 36 | "tax_value": 12.08, 37 | "persons": 0, 38 | "latitude": "40.802554599183225", 39 | "longitude": "-73.9407224846558", 40 | "client_first_name": "John", 41 | "client_last_name": "Doe", 42 | "client_email": "john.doe@gmail.com", 43 | "client_phone": "+12126871225", 44 | "client_order_count": 3, 45 | "restaurant_name": "Pronto", 46 | "instructions": "Please call when you arrive at the gate", 47 | "currency": "USD", 48 | "type": "delivery", 49 | "status": "accepted", 50 | "missed_reason": null, 51 | "source": "admin", 52 | "pin_skipped": false, 53 | "accepted_at": "2019-05-29T14:45:19.000Z", 54 | "tax_type": "NET", 55 | "tax_name": "Sales tax", 56 | "fulfill_at": "2019-05-29T15:40:19.000Z", 57 | "updated_at": "2019-05-29T15:40:19.000Z", 58 | "reference": null, 59 | "restaurant_id": 195, 60 | "client_id": 756, 61 | "restaurant_phone": "+12126871145", 62 | "restaurant_timezone": "America/New_York", 63 | "delivery_zone_name": "Zone 1", 64 | "outside_delivery_area": null, 65 | "company_account_id": 100195, 66 | "pos_system_id": 28, 67 | "restaurant_key": "bvvZ3913t1cJRf8HA5OxvO2FjiSmExSly", 68 | "restaurant_country": "United States", 69 | "restaurant_city": "Manhattan", 70 | "restaurant_state": "New York", 71 | "restaurant_zipcode": "031534", 72 | "restaurant_street": "Park avenue 78", 73 | "restaurant_latitude": "40.75009928615015", 74 | "restaurant_longitude": "-73.97940823862302", 75 | "restaurant_token": "TOKEN", 76 | "api_version": 2, 77 | "payment": "ONLINE", 78 | "for_later": false, 79 | "fulfillment_option": null, 80 | "client_marketing_consent": true, 81 | "client_ip_address": "127.0.0.1", 82 | "client_address": "Park avenue 121, Manhattan", 83 | "client_address_parts": { 84 | "street": "Park avenue 121", 85 | "city": "Manhattan" 86 | }, 87 | "delivery_by_distance": { 88 | "distance": 5, 89 | "unit": "mile", 90 | "delivery_fee": 2 91 | }, 92 | "items": [ 93 | { 94 | "id": 27160, 95 | "name": "DELIVERY_FEE", 96 | "total_item_price": 10, 97 | "price": 10, 98 | "quantity": 1, 99 | "instructions": null, 100 | "type": "delivery_fee", 101 | "type_id": null, 102 | "tax_rate": 0.19, 103 | "tax_value": 1.9, 104 | "parent_id": null, 105 | "item_discount": 0, 106 | "cart_discount_rate": 0, 107 | "cart_discount": 0, 108 | "tax_type": "NET", 109 | "kitchen_internal_name": null, 110 | "options": [] 111 | }, 112 | { 113 | "id": 27161, 114 | "name": "TIP", 115 | "total_item_price": 6.88, 116 | "price": 6.88, 117 | "quantity": 1, 118 | "instructions": null, 119 | "type": "tip", 120 | "type_id": null, 121 | "tax_rate": 0.19, 122 | "tax_value": 1.0985, 123 | "parent_id": null, 124 | "item_discount": 0, 125 | "cart_discount_rate": 0, 126 | "cart_discount": 0, 127 | "tax_type": "GROSS", 128 | "kitchen_internal_name": null, 129 | "options": [] 130 | }, 131 | { 132 | "id": 27162, 133 | "name": "Pizza Margherita", 134 | "total_item_price": 40.8, 135 | "price": 7, 136 | "quantity": 4, 137 | "instructions": "No pepper please", 138 | "type": "item", 139 | "type_id": 841, 140 | "tax_rate": 0.19, 141 | "tax_value": 6.1923, 142 | "parent_id": null, 143 | "item_discount": 0, 144 | "cart_discount_rate": 0.0947, 145 | "cart_discount": 3.86, 146 | "tax_type": "NET", 147 | "kitchen_internal_name": "Pizza Margherita Internal Name", 148 | "options": [ 149 | { 150 | "id": 20085, 151 | "name": "Large", 152 | "price": 2, 153 | "group_name": "Size", 154 | "quantity": 1, 155 | "type": "size", 156 | "type_id": 798, 157 | "kitchen_internal_name": null 158 | }, 159 | { 160 | "id": 20086, 161 | "name": "Extra mozzarella", 162 | "price": 1.2, 163 | "group_name": "Extra Toppings (Small)", 164 | "quantity": 1, 165 | "type": "option", 166 | "type_id": 1187, 167 | "kitchen_internal_name": "Extra mozzarella Internal Name" 168 | } 169 | ] 170 | }, 171 | { 172 | "id": 27163, 173 | "name": "5$ off total for first time clients", 174 | "total_item_price": 0, 175 | "price": 0, 176 | "quantity": 1, 177 | "instructions": null, 178 | "type": "promo_cart", 179 | "type_id": 226, 180 | "tax_rate": 0, 181 | "tax_value": 0, 182 | "parent_id": null, 183 | "item_discount": 5, 184 | "cart_discount_rate": 0.0947, 185 | "cart_discount": -5, 186 | "tax_type": "NET", 187 | "coupon": "MQGTLWWLGQRE", 188 | "kitchen_internal_name": null, 189 | "options": [] 190 | }, 191 | { 192 | "id": 27164, 193 | "name": "Free drink on any order $30+", 194 | "total_item_price": 5, 195 | "price": 0, 196 | "quantity": 1, 197 | "instructions": null, 198 | "type": "promo_cart_item", 199 | "type_id": 228, 200 | "tax_rate": 0, 201 | "tax_value": 0, 202 | "parent_id": null, 203 | "item_discount": 5, 204 | "cart_discount_rate": 0.0947, 205 | "cart_discount": 0, 206 | "tax_type": "NET", 207 | "kitchen_internal_name": null, 208 | "options": [] 209 | }, 210 | { 211 | "id": 27165, 212 | "name": "Spaghetti Frutti di Mare", 213 | "total_item_price": 12, 214 | "price": 12, 215 | "quantity": 1, 216 | "instructions": "", 217 | "type": "item", 218 | "type_id": 844, 219 | "tax_rate": 0.19, 220 | "tax_value": 0, 221 | "parent_id": 27166, 222 | "item_discount": 12, 223 | "cart_discount_rate": 0.0947, 224 | "cart_discount": 0, 225 | "tax_type": "NET", 226 | "kitchen_internal_name": null, 227 | "options": [] 228 | }, 229 | { 230 | "id": 27166, 231 | "name": "Buy one get other free", 232 | "total_item_price": 24, 233 | "price": 0, 234 | "quantity": 1, 235 | "instructions": null, 236 | "type": "promo_item", 237 | "type_id": 225, 238 | "tax_rate": 0, 239 | "tax_value": 0, 240 | "parent_id": null, 241 | "item_discount": 12, 242 | "cart_discount_rate": 0.0947, 243 | "cart_discount": 1.14, 244 | "tax_type": "NET", 245 | "coupon": "9VKHM77MZ434", 246 | "kitchen_internal_name": null, 247 | "options": [] 248 | }, 249 | { 250 | "id": 27167, 251 | "name": "Spaghetti Frutti di Mare", 252 | "total_item_price": 12, 253 | "price": 12, 254 | "quantity": 1, 255 | "instructions": "", 256 | "type": "item", 257 | "type_id": 844, 258 | "tax_rate": 0.19, 259 | "tax_value": 2.0641, 260 | "parent_id": 27166, 261 | "item_discount": 0, 262 | "cart_discount_rate": 0.0947, 263 | "cart_discount": 1.14, 264 | "tax_type": "NET", 265 | "kitchen_internal_name": null, 266 | "options": [] 267 | }, 268 | { 269 | "id": 27168, 270 | "name": "Cola", 271 | "total_item_price": 5, 272 | "price": 5, 273 | "quantity": 1, 274 | "instructions": "", 275 | "type": "item", 276 | "type_id": 2716, 277 | "tax_rate": 0.19, 278 | "tax_value": 0, 279 | "parent_id": 27164, 280 | "item_discount": 5, 281 | "cart_discount_rate": 0.0947, 282 | "cart_discount": 0, 283 | "tax_type": "NET", 284 | "kitchen_internal_name": null, 285 | "options": [ 286 | { 287 | "id": 20087, 288 | "name": "Cola light", 289 | "price": 0, 290 | "group_name": "Which cola", 291 | "quantity": 1, 292 | "type": "option", 293 | "type_id": 3873, 294 | "kitchen_internal_name": null 295 | } 296 | ] 297 | }, 298 | { 299 | "id": 27196, 300 | "name": "Service fee subtotal 1", 301 | "total_item_price": 5, 302 | "price": 5, 303 | "quantity": 1, 304 | "instructions": null, 305 | "type": "service_fee_subtotal", 306 | "type_id": 123, 307 | "tax_rate": 0.19, 308 | "tax_value": 1.900, 309 | "parent_id": null, 310 | "item_discount": 0, 311 | "cart_discount_rate": 0, 312 | "cart_discount": 0, 313 | "tax_type": "NET", 314 | "kitchen_internal_name": null, 315 | "options": [] 316 | }, 317 | { 318 | "id": 27197, 319 | "name": "Service fee subtotal 2", 320 | "total_item_price": 5, 321 | "price": 5, 322 | "quantity": 1, 323 | "instructions": null, 324 | "type": "service_fee_subtotal", 325 | "type_id": 125, 326 | "tax_rate": 0.19, 327 | "tax_value": 0.9500, 328 | "parent_id": null, 329 | "item_discount": 0, 330 | "cart_discount_rate": 0, 331 | "cart_discount": 0, 332 | "tax_type": "NET", 333 | "kitchen_internal_name": null, 334 | "options": [] 335 | }, 336 | { 337 | "id": 27198, 338 | "name": "Cash discount", 339 | "total_item_price": -5, 340 | "price": -5, 341 | "quantity": 1, 342 | "instructions": null, 343 | "type": "cash_discount", 344 | "type_id": 125, 345 | "tax_rate": 0.19, 346 | "tax_value": 0.9500, 347 | "parent_id": null, 348 | "item_discount": 0, 349 | "cart_discount_rate": 0, 350 | "cart_discount": 0, 351 | "tax_type": "NET", 352 | "kitchen_internal_name": null, 353 | "options": [] 354 | }, 355 | { 356 | "id": 27199, 357 | "name": "Service fee total", 358 | "total_item_price": 20, 359 | "price": 20, 360 | "quantity": 1, 361 | "instructions": null, 362 | "type": "service_fee_total", 363 | "type_id": 514, 364 | "tax_rate": 0.19, 365 | "tax_value": 3.800, 366 | "parent_id": null, 367 | "item_discount": 0, 368 | "cart_discount_rate": 0, 369 | "cart_discount": 0, 370 | "tax_type": "NET", 371 | "kitchen_internal_name": null, 372 | "options": [] 373 | } 374 | ] 375 | } 376 | ] 377 | } 378 | -------------------------------------------------------------------------------- /accepted_orders/version_1/ORDER.md: -------------------------------------------------------------------------------- 1 | Getting an order 2 | ================ 3 | 4 | GlobalFood offers two integration methods for getting new orders: 5 | 6 | - Push (Cloud system) 7 | - Poll (Local system) 8 | 9 | 10 | Push (Cloud system) 11 | ---------------------- 12 | 13 | This type of integration is recommended for systems with a centralized architecture. In this scenario an endpoint is notified via webhook that one or more orders have been accepted for one or more of the system's client restaurants. 14 | 15 | 16 | **You need to provide us with:** 17 | 18 | 1. A public HTTPS endpoint that interprets our calls over the POST method 19 | eg: https://www.your-domain.com/integration/orderingsystem 20 | 21 | 2. Tell us which format you like (XML or JSON) 22 | 23 | 24 | 25 | **Map orders to correct restaurants:** 26 | 27 | You need to identify which restaurant you need to assign an order to. Every order that we push to you contains the parameter which is unique to each restaurant location. We will provide you this key manually via email once you have created that restaurant in our system. Simply tell us the email address that you used to create the account within our system. You can see in the XML & JSON example below that the example key is 8yCPCvb3dDo1k. 28 | 29 | 30 | 31 | **Add optional security:** 32 | 33 | By default we send a master key alongside each request in the "Authorization" (example: e6fIguVkyG5xtT3BYGMI4rfm9iVt24YJ) header of the request. This key can be used by you to verify that the sender is us. Otherwise any third party that knows your URL https://www.your-domain.com/integration/orderingsystem could try to push a "fake" order. 34 | 35 | 36 | ### Example using JSON 37 | 38 | We will call 39 | ``` 40 | POST https://www.your-domain.com/integration/orderingsystem 41 | ``` 42 | with the payload found in [examples](./payload/orders.json) 43 | 44 | 45 | 46 | ### Example using XML 47 | 48 | We will call 49 | ``` 50 | POST https://www.your-domain.com/integration/orderingsystem 51 | ``` 52 | with the payload found in [examples](./payload/orders.xml) 53 | 54 | 55 | Poll (Local system) 56 | ---------------------- 57 | 58 | This type of integration is recommended for systems with a decentralized architecture. In this scenario the restaurant device does not communicate with a central endpoint for notifications. The devices poll our server every minute to check for new confirmed order notifications. An example for "Polling" is when the device is behind a firewall inside the restaurant location and does not have a connection with a server in the cloud. When using polling, the orders will be available for an unlimited amount of time until being requested by the device. 59 | 60 | 61 | **We need to provide you:** 62 | 63 | A secret key to allow you to poll our system. This key must be sent in the "Authorization" header of the request. This key is unique for every restaurant location. (Example: 8yCPCvb3dDo1k). We will provide you this key manually via email once you have created that restaurant in our system. Simply tell us the email address that you used to create the account with in our system. 64 | 65 | 66 | **Polling:** 67 | 68 | 1. The endpoint for polling is: https://pos.globalfoodsoft.com/pos/order/pop 69 | 2. Method is POST 70 | 3. API version must be set to: 1 71 | 4. You can select the format (xml or json) by setting the "Accept" header to either "application/xml" or "application/json". Default is JSON. 72 | 73 | 74 | ### Example using JSON 75 | ``` 76 | curl "https://pos.globalfoodsoft.com/pos/order/pop" \ 77 | -X POST \ 78 | -H "Authorization: 8yCPCvb3dDo1k" \ 79 | -H "Accept: application/json" \ 80 | -H "Glf-Api-Version: 1" 81 | ``` 82 | 83 | See [examples](./payload/orders.json) for response payload 84 | 85 | 86 | ### Example using XML 87 | ``` 88 | curl "https://pos.globalfoodsoft.com/pos/order/pop" \ 89 | -X POST \ 90 | -H "Authorization: 8yCPCvb3dDo1k" \ 91 | -H "Accept: application/xml" \ 92 | -H "Glf-Api-Version: 1" 93 | ``` 94 | 95 | See [examples](./payload/orders.xml) for response payload 96 | 97 | 98 | Order fields 99 | ------------ 100 | 101 | **DISCLAIMER:** 102 | Results may contain some fields which are not documented here. This means that they are deprecated or only used internally. They are in the process of being removed from the Accepted Orders API. The last section includes a list of relevant fields so please expect and store only those. 103 | 104 | 105 | **NOTES:** 106 | - all rates are decimals, meaning that 20% will be stored as 0.2 and 0.725% will be stored as 0.00725 107 | - some fields can contain null; in JSON null is treated as a separate type, in XML it's a self-closing element; the meaning of null is "field has not been used" 108 | 109 | 110 | ### Order Collections 111 | 112 | The fields of an order collection are: 113 | 114 | |Field|Type|Description| 115 | |---|---|---| 116 | |count |integer | number of orders to be fetched by the system| 117 | |orders |array of orders | list of the orders| 118 | 119 | 120 | ### Orders 121 | 122 | The fields of an order are: 123 | 124 | |Field|Type|Description| 125 | |---|---|---| 126 | |id |integer| order id| 127 | |api_version |integer| version of the accepted orders api| 128 | |type |string| 'pickup' or 'delivery'| 129 | |pickup_payment |string or null| payment method used when type is 'pickup', null otherwise; can be:
'CASH' - cash at the register
'ONLINE' - card using online payment
'CARD' - card at the register
'CARD_PHONE' - card details by phone| 130 | |delivery_payment |string or null| payment method used when type is 'delivery', null otherwise; can be:
'CASH' - cash at the register
'ONLINE' - card using online payment
'CARD' - card at the register
'CARD_PHONE' - card details by phone| 131 | |fulfill_time |string| UTC date string of when the order will be delivered or picked up| 132 | |instructions |string or null| order instructions| 133 | |restaurant_id |integer| restaurant id| 134 | |restaurant_name |string| name of the restaurant| 135 | |restaurant_key |string| authorization key of the restaurant| 136 | |restaurant_token |string| token or id of the corresponding restaurant in your system; this is set by adding it to the integration in the Admin panel| 137 | |currency |string| three letter currency code
e.g. 'USD'| 138 | |user_id |integer| client id| 139 | |client_first_name |string| client first name| 140 | |client_last_name |string| client last name| 141 | |client_email |string| client email| 142 | |client_phone |string| client phone| 143 | |client_address |string| client delivery address; it's an empty string when order is pickup 144 | |client_address_parts |object| client delivery address components; can contain the following components:
- street
- bloc
- floor
- apartment
- intercom
- more_address (in case extended address is not enabled)
- zipcode
- city
- full_address (legacy orders or order is pickup) 145 | |billing_details |object| 'person_name' - First and last name (Person)
'person_doc_number' - Document number (Person)
'company_name' - Company name (Company)
'company_doc_number' - Document number (Company)
'fiscal_address' - Address (Person or company)

'type' = 'doctype_person_cc' - Citizenship card (Person)
'type' = 'doctype_person_ce' - Foreign citizenship card (Person)
'type' = 'doctype_person_ti' - Identity Card (Person)
'type' = 'doctype_person_pp' - Passport (Person)
'type' = 'doctype_company_nit' - Tax identification number (Company)

'type_prefix' - Depends on the country

ARGENTINA: Ticket / DNI (Person) / CUIT (Company)
BOLIVIA: Ticket / CI (Person) / NIT (Company)
BRAZIL: Boleta / CI (Person) / CNPJ (Company)
CHILE: Boleta / CI (Person) / RUT (Company)
COLOMBIA: Boleta / CC (Person) / CE (Person) / NIT (Company)
COSTA RICA: Boleta / CI (Person) / NITE (Company)
DOMINICA: Receipt / CI (Person) / RNC (Company)
DOMINICAN REPUBLIC: Factura de Consumo / CIE (Person) / RNC (Company)
ECUADOR: Nota de venta / CI (Person) / RUC (Company)
EL SALVADOR: Boleta / DUI (Person) / NIT (Company)
GUATEMALA: Ticket / DPI (Person) / RTU (Company)
HONDURAS: Ticket / TI (Person) / RTN (Company)
MEXICO: Ticket / CURP (Person) / RFC (Company)
NICARAGUA: Ticket / CI (Person) / RUC (Company)
PANAMA: Boleta / CIP (Person) / NIT (Company)
PARAGUAY: Ticket / CI (Person) / RUC (Company)
PERU: Boleta / CEXT (Person) / DNI (Person) / PASS (Person) / RUC (Company)
URUGUAY: Boleta / CI (Person) / RUT (Company)
VENEZUELA: Boleta / CI (Person) / RIF (Company) 146 | |latitude |string or null| latitude of the client delivery address; null when order type is pickup| 147 | |longitude |string or null| longitude of the client delivery address; null when order type is pickup| 148 | |total_price |float| total including taxes| 149 | |sub_total_price |float| sub-total, not including tip, delivery fee and, only in 'NET' tax calculations, taxes on items| 150 | |sales_tax_type |string| how the default taxation is applied, can be either 'NET' or 'GROSS'| 151 | |taxes |float| total value of all the taxes| 152 | |sales_tax_label |string| name of default tax
e.g. 'VAT', 'Sales Tax'| 153 | |coupons |array of integers| list of promotion ids corresponding to coupon codes used during the ordering process (including those which were not applied in the end)| 154 | |items |array of order items| list of order items| 155 | 156 | 157 | ### Order Items 158 | 159 | The fields of an order item are: 160 | 161 | |Field|Type|Description| 162 | |---|---|---| 163 | |id |integer| order item id| 164 | |name |string| order item name | 165 | |instructions |string or null| order item instructions| 166 | |type |string| type of order item; can be:
- 'item' - item on the menu
- 'delivery_fee' - the delivery fee
- 'tip' - the tip
- 'promo_cart' - cart promotion (which applies to the entire cart, like discount on the cart total)
- 'promo_item' - item promotion (which applies to child items, that have parent_id equal to the id of this item)| 167 | |type_id |integer or null| id of the original menu item or promotion used to create the order item; it's null for 'delivery_fee' and 'tip'| 168 | |parent_id |integer or null| usually null except if the id of the parent order item has the following two conditions: item is of type 'item' and it belongs to another item of type 'promo_item'| 169 | |total_item_price |float| total price of the item taking into account quantity and options. In case type is 'promo_item' then it uses the child order items. In any case it does not include discounts| 170 | |tax_type |string| how taxation is applied, can be either 'NET' or 'GROSS'| 171 | |tax_value |float| value of the taxes; not calculated on items of type 'item' if they are children of type 'promo_item'; it's not calculated if type is 'promo_cart'| 172 | |tax_rate |float| rate used to calculate taxes; can be different for any item| 173 | |price |float| base price of the item, no quantity and no options; if tax_type is 'GROSS' then it also includes the tax_value| 174 | |quantity |integer| quantity of the item| 175 | |discount |float| discount applied to the item as a result of item promotions OR the total discount of an item of type 'promo_cart'| 176 | |total_discount_value |float| discount applied to the item as a result of cart promotions| 177 | |total_discount_rate |float| rate used to apply all of the cart promotions; if you have multiple cart promotions (type is 'promo_cart) then their rates are added up here| 178 | |options |array of item options| list of item options like sizes, toppings or addons| 179 | 180 | 181 | 182 | ### Item Options 183 | 184 | The fields of an item option are: 185 | 186 | |Field|Type|Description| 187 | |---|---|---| 188 | |id |integer| item option id| 189 | |name |string| item option name| 190 | |group_name |string| name of the option group
e.g. name of option is Ketchup, group_name is Sauces| 191 | |type |string| item option type; can be either 'option' or 'size'| 192 | |quantity |integer| quantity of the item option| 193 | |price |float| base price of the item option, does not use quantity| 194 | -------------------------------------------------------------------------------- /accepted_orders/payload/xml/EU_tax_model_order.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 1 4 | 5 | 6 | delivery_fee 7 | 1.6 8 | 0.19 9 | 10 | 11 | tip 12 | 0.6 13 | 0.19 14 | 15 | 16 | item 17 | 4.37 18 | 0.19 19 | 20 | 21 | fees_discounts_subtotal 22 | 1.60 23 | 0.19 24 | 25 | 26 | service_fee_total 27 | 3.20 28 | 0.19 29 | 30 | 6819 31 | 41.14 32 | 27.4 33 | 6.57 34 | 0 35 | 53.32016595583847 36 | -6.394491487835694 37 | John 38 | Doe 39 | john.doe@gmail.com 40 | +12126871225 41 | 3 42 | Pronto 43 | 44 | EUR 45 | delivery 46 | accepted 47 | 48 | admin 49 | false 50 | 2019-05-29T14:51:52.000Z 51 | GROSS 52 | VAT 53 | 2019-05-29T15:46:52.000Z 54 | 2019-05-29T15:46:52.000Z 55 | 56 | 195 57 | 756 58 | +3532983027 59 | Europe/Dublin 60 | Zone 1 61 | null 62 | 100195 63 | 29 64 | LnCRs1RB9h91E27r5l4vvybBTkXIh7evG 65 | Ireland 66 | Dublin 67 | Dublin 68 | 031534 69 | main street 1 70 | 53.28782521356338 71 | -6.359779471163961 72 | TOKEN 73 | 2 74 | ONLINE 75 | false 76 | null 77 | true 78 | 127.0.0.1 79 | Main street 5, Dublin 80 | 81 | Main street 5 82 | Dublin 83 | 84 | 85 | 5 86 | km 87 | 2 88 | 89 | 90 | 27187 91 | DELIVERY_FEE 92 | 10 93 | 10 94 | 1 95 | 96 | delivery_fee 97 | 514 98 | 0.19 99 | 1.5966 100 | 101 | 0 102 | 0 103 | 0 104 | GROSS 105 | 106 | 107 | 108 | 27188 109 | TIP 110 | 3.74 111 | 3.74 112 | 1 113 | 114 | tip 115 | 116 | 0.19 117 | 0.5971 118 | 119 | 0 120 | 0 121 | 0 122 | GROSS 123 | 124 | 125 | 126 | 27189 127 | Pizza Margherita 128 | 20.4 129 | 7 130 | 2 131 | No pepper please 132 | item 133 | 841 134 | 0.19 135 | 2.4304 136 | 137 | 0 138 | 0.15432 139 | 3.15 140 | GROSS 141 | Pizza Margherita Internal Name 142 | 152 | 162 | 163 | 164 | 27190 165 | 5$ off total for first time clients 166 | 0 167 | 0 168 | 1 169 | 170 | promo_cart 171 | 226 172 | 0 173 | 0 174 | 175 | 5 176 | 0.15432 177 | -5 178 | GROSS 179 | MQGTLWWLGQRE 180 | 181 | 182 | 183 | 27191 184 | Spaghetti Frutti di Mare 185 | 12 186 | 12 187 | 1 188 | 189 | item 190 | 844 191 | 0.19 192 | 0 193 | 27192 194 | 12 195 | 0.15432 196 | 0 197 | GROSS 198 | 199 | 200 | 201 | 27192 202 | Buy one get other free 203 | 24 204 | 0 205 | 1 206 | 207 | promo_item 208 | 225 209 | 0 210 | 0 211 | 212 | 12 213 | 0.15432 214 | 1.85 215 | GROSS 216 | 9VKHM77MZ434 217 | 218 | 219 | 220 | 27193 221 | Spaghetti Frutti di Mare 222 | 12 223 | 12 224 | 1 225 | 226 | item 227 | 844 228 | 0.19 229 | 1.6203 230 | 27192 231 | 0 232 | 0.15432 233 | 1.85 234 | GROSS 235 | 236 | 237 | 238 | 27194 239 | Free drink on any order $30+ 240 | 5 241 | 0 242 | 1 243 | 244 | promo_cart_item 245 | 228 246 | 0 247 | 0 248 | 249 | 5 250 | 0.15432 251 | 0 252 | GROSS 253 | 254 | 255 | 256 | 27195 257 | Cola 258 | 5 259 | 5 260 | 1 261 | 262 | item 263 | 2716 264 | 0.19 265 | 0 266 | 27194 267 | 5 268 | 0.15432 269 | 0 270 | GROSS 271 | 272 | 282 | 283 | 284 | 27196 285 | Service fee subtotal 1 286 | 10 287 | 10 288 | 1 289 | 290 | service_fee_subtotal 291 | 123 292 | 0.19 293 | 1.5966 294 | 295 | 0 296 | 0 297 | 0 298 | GROSS 299 | 300 | 301 | 302 | 27197 303 | Service fee subtotal 2 304 | 5 305 | 5 306 | 1 307 | 308 | service_fee_subtotal 309 | 125 310 | 0.19 311 | 0.7983 312 | 313 | 0 314 | 0 315 | 0 316 | GROSS 317 | 318 | 319 | 320 | 27198 321 | Cash discount 322 | 5 323 | -5 324 | 1 325 | 326 | cash_discount 327 | 125 328 | 0.19 329 | -0.7983 330 | 331 | 0 332 | 0 333 | 0 334 | GROSS 335 | 336 | 337 | 338 | 27199 339 | Service fee total 340 | 20 341 | 20 342 | 1 343 | 344 | service_fee_total 345 | 124 346 | 0.19 347 | 3.1932 348 | 349 | 0 350 | 0 351 | 0 352 | GROSS 353 | 354 | 355 | 356 | 357 | -------------------------------------------------------------------------------- /accepted_orders/payload/xml/US_tax_model_order.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 1 4 | 5 | 6 | delivery_fee 7 | 1.9 8 | 0.19 9 | 10 | 11 | tip 12 | 1.1 13 | 0.19 14 | 15 | 16 | item 17 | 9.08 18 | 0.19 19 | 20 | 21 | fees_discounts_subtotal 22 | 1.90 23 | 0.19 24 | 25 | 26 | service_fee_total 27 | 3.80 28 | 0.19 29 | 30 | 6816 31 | 75.66 32 | 47.8 33 | 12.08 34 | 0 35 | 40.802554599183225 36 | -73.9407224846558 37 | John 38 | Doe 39 | john.doe@gmail.com 40 | +12126871225 41 | 3 42 | Pronto 43 | Please call when you arrive at the gate 44 | USD 45 | delivery 46 | accepted 47 | 48 | admin 49 | false 50 | 2019-05-29T14:45:19.000Z 51 | NET 52 | Sales tax 53 | 2019-05-29T15:40:19.000Z 54 | 2019-05-29T15:40:19.000Z 55 | 56 | 195 57 | 756 58 | +12126871145 59 | America/New_York 60 | Zone 1 61 | null 62 | 100195 63 | 29 64 | LnCRs1RB9h91E27r5l4vvybBTkXIh7evG 65 | United States 66 | Manhattan 67 | New York 68 | 031534 69 | Park avenue 78 70 | 40.75009928615015 71 | -73.97940823862302 72 | TOKEN 73 | 2 74 | ONLINE 75 | false 76 | null 77 | true 78 | 127.0.0.1 79 | Park avenue 121, Manhattan 80 | 81 | Park avenue 121 82 | Manhattan 83 | 84 | 85 | 5 86 | mile 87 | 2 88 | 89 | 90 | 27160 91 | DELIVERY_FEE 92 | 10 93 | 10 94 | 1 95 | 96 | delivery_fee 97 | 98 | 0.19 99 | 1.9 100 | 101 | 0 102 | 0 103 | 0 104 | NET 105 | 106 | 107 | 108 | 27161 109 | TIP 110 | 6.88 111 | 6.88 112 | 1 113 | 114 | tip 115 | 116 | 0.19 117 | 1.0985 118 | 119 | 0 120 | 0 121 | 0 122 | GROSS 123 | 124 | 125 | 126 | 27162 127 | Pizza Margherita 128 | 40.8 129 | 7 130 | 4 131 | No pepper please 132 | item 133 | 841 134 | 0.19 135 | 6.1923 136 | 137 | 0 138 | 0.0947 139 | 3.86 140 | NET 141 | Pizza Margherita Internal Name 142 | 152 | 162 | 163 | 164 | 27163 165 | 5$ off total for first time clients 166 | 0 167 | 0 168 | 1 169 | 170 | promo_cart 171 | 226 172 | 0 173 | 0 174 | 175 | 5 176 | 0.0947 177 | -5 178 | NET 179 | MQGTLWWLGQRE 180 | 181 | 182 | 183 | 27164 184 | Free drink on any order $30+ 185 | 5 186 | 0 187 | 1 188 | 189 | promo_cart_item 190 | 228 191 | 0 192 | 0 193 | 194 | 5 195 | 0.0947 196 | 0 197 | NET 198 | 199 | 200 | 201 | 27165 202 | Spaghetti Frutti di Mare 203 | 12 204 | 12 205 | 1 206 | 207 | item 208 | 844 209 | 0.19 210 | 0 211 | 27166 212 | 12 213 | 0.0947 214 | 0 215 | NET 216 | 217 | 218 | 219 | 27166 220 | Buy one get other free 221 | 24 222 | 0 223 | 1 224 | 225 | promo_item 226 | 225 227 | 0 228 | 0 229 | 230 | 12 231 | 0.0947 232 | 1.14 233 | NET 234 | 9VKHM77MZ434 235 | 236 | 237 | 238 | 27167 239 | Spaghetti Frutti di Mare 240 | 12 241 | 12 242 | 1 243 | 244 | item 245 | 844 246 | 0.19 247 | 2.0641 248 | 27166 249 | 0 250 | 0.0947 251 | 1.14 252 | NET 253 | 254 | 255 | 256 | 27168 257 | Cola 258 | 5 259 | 5 260 | 1 261 | 262 | item 263 | 2716 264 | 0.19 265 | 0 266 | 27164 267 | 5 268 | 0.0947 269 | 0 270 | NET 271 | 272 | 282 | 283 | 284 | 27196 285 | Service fee subtotal 1 286 | 10 287 | 10 288 | 1 289 | 290 | service_fee_subtotal 291 | 123 292 | 0.19 293 | 1.9000 294 | 295 | 0 296 | 0 297 | 0 298 | NET 299 | 300 | 301 | 302 | 27197 303 | Service fee subtotal 2 304 | 5 305 | 5 306 | 1 307 | 308 | service_fee_subtotal 309 | 125 310 | 0.19 311 | 0.9500 312 | 313 | 0 314 | 0 315 | 0 316 | NET 317 | 318 | 319 | 320 | 27198 321 | Cash discount 322 | 5 323 | -5 324 | 1 325 | 326 | cash_discount 327 | 125 328 | 0.19 329 | -0.9500 330 | 331 | 0 332 | 0 333 | 0 334 | NET 335 | 336 | 337 | 338 | 27199 339 | Service fee total 340 | 20 341 | 20 342 | 1 343 | 344 | service_fee_total 345 | 124 346 | 0.19 347 | 3.8000 348 | 349 | 0 350 | 0 351 | 0 352 | NET 353 | 354 | 355 | 356 | 357 | -------------------------------------------------------------------------------- /fetch_menu/payload/menu.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4108 4 | 4172 5 | true 6 | USD 7 | 8 | 14937 9 | 4108 10 | Pizza 11 | true 12 | 13 | 14 | 127 15 | 2939 16 | 17 | 58424 18 | 14937 19 | Pizza Margherita 20 | (tomato sauce, cheese) 21 | 7 22 | true 23 | 24 | 25 | 127 26 | 27 | pickup 28 | delivery 29 | Pizza Margherita Internal Name 30 | 31 | 32 | 37086 33 | 58424 34 | Small 35 | 0 36 | true 37 | 38 | 16978 39 | 4108 40 | Extra Toppings (Small) 41 | false 42 | 1 43 | 1 44 | false 45 | 53 | 63 | 64 | 65 | 66 | 9 67 | 123 68 | 69 | 70 | 10 71 | 12 72 | 73 | 74 | 11 75 | 12 76 | 77 | 78 | 12 79 | 12 80 | 81 | 82 | 13 83 | 12 84 | 85 | 86 | 14 87 | 12 88 | 89 | per_100g 90 | 91 | 92 | 93 | 37087 94 | 58424 95 | Large 96 | 2 97 | false 98 | 99 | 16979 100 | 4108 101 | Extra Toppings (Large) 102 | false 103 | 1 104 | 1 105 | false 106 | 114 | 122 | 123 | 124 | 125 | 9 126 | 323 127 | 128 | 129 | 10 130 | 32 131 | 132 | 133 | 11 134 | 32 135 | 136 | 137 | 12 138 | 32 139 | 140 | 141 | 13 142 | 32 143 | 144 | 145 | 14 146 | 32 147 | 148 | per_100g 149 | 150 | 151 | 152 | 153 | 58425 154 | 14937 155 | Pizza Prosciutto 156 | (tomato sauce, cheese, ham) 157 | 8 158 | true 159 | 160 | 161 | 127 162 | 0 163 | 164 | 165 | 37088 166 | 58425 167 | Small 168 | 0 169 | true 170 | 171 | 16978 172 | 4108 173 | Extra Toppings (Small) 174 | false 175 | 1 176 | 1 177 | false 178 | 186 | 194 | 195 | 196 | 197 | 37089 198 | 58425 199 | Large 200 | 2 201 | false 202 | 203 | 16979 204 | 4108 205 | Extra Toppings (Large) 206 | false 207 | 1 208 | 1 209 | false 210 | 218 | 226 | 227 | 228 | 229 | 230 | 16977 231 | 4108 232 | Crust 233 | 0 234 | true 235 | 1 236 | 1 237 | false 238 | 246 | 254 | 255 | 256 | 257 | 14938 258 | 4108 259 | Pasta 260 | true 261 | 262 | 263 | 127 264 | 0 265 | 2967 266 | 267 | 58426 268 | 14938 269 | Spaghetti Bolognese 270 | 271 | 9 272 | true 273 | 274 | 275 | 127 276 | 0 277 | 278 | 279 | 1 280 | 3 281 | 7 282 | 8 283 | 4 284 | 285 | 1 286 | Milk 287 | 288 | 289 | 3 290 | Eggs 291 | 292 | 293 | 7 294 | Shellfish 295 | 296 | 297 | 8 298 | Soybeans 299 | 300 | 301 | 4 302 | Peanuts 303 | 304 | 305 | 306 | 307 | 58427 308 | 14938 309 | Spaghetti Frutti di Mare 310 | (with sea food) 311 | 12 312 | true 313 | 314 | 315 | 127 316 | 0 317 | 318 | 319 | 320 | 321 | -------------------------------------------------------------------------------- /fetch_menu/payload/menu.json: -------------------------------------------------------------------------------- 1 | { 2 | "id": 4108, 3 | "restaurant_id": 4172, 4 | "active": true, 5 | "currency": "USD", 6 | "categories": [ 7 | { 8 | "id": 14937, 9 | "menu_id": 4108, 10 | "name": "Pizza", 11 | "active": true, 12 | "active_begin": null, 13 | "active_end": null, 14 | "active_days": 127, 15 | "picture_id": 2939, 16 | "items": [ 17 | { 18 | "id": 58424, 19 | "menu_category_id": 14937, 20 | "name": "Pizza Margherita", 21 | "description": "(tomato sauce, cheese)", 22 | "price": 7, 23 | "active": true, 24 | "active_begin": null, 25 | "active_end": null, 26 | "active_days": 127, 27 | "extras": { 28 | "menu_item_order_types": ["pickup", "delivery"], 29 | "menu_item_kitchen_internal_name": "Pizza Margherita Internal Name" 30 | }, 31 | "sizes": [ 32 | { 33 | "id": 37086, 34 | "menu_item_id": 58424, 35 | "name": "Small", 36 | "price": 0, 37 | "default": true, 38 | "groups": [ 39 | { 40 | "id": 16978, 41 | "menu_id": 4108, 42 | "name": "Extra Toppings (Small)", 43 | "required": false, 44 | "force_min": 1, 45 | "force_max": 1, 46 | "allow_quantity": false, 47 | "options": [ 48 | { 49 | "id": 51188, 50 | "option_group_id": 16978, 51 | "name": "Corn", 52 | "price": 0.7, 53 | "default": false, 54 | "extras": null 55 | }, 56 | { 57 | "id": 51189, 58 | "option_group_id": 16978, 59 | "name": "Extra mozzarella", 60 | "price": 1.2, 61 | "default": false, 62 | "extras": { 63 | "menu_option_kitchen_internal_name": "Extra Mozzarella Internal Name" 64 | } 65 | } 66 | ] 67 | } 68 | ] 69 | }, 70 | { 71 | "id": 37087, 72 | "menu_item_id": 58424, 73 | "name": "Large", 74 | "price": 2, 75 | "default": false, 76 | "groups": [ 77 | { 78 | "id": 16979, 79 | "menu_id": 4108, 80 | "name": "Extra Toppings (Large)", 81 | "required": false, 82 | "force_min": 1, 83 | "force_max": 1, 84 | "allow_quantity": false, 85 | "options": [ 86 | { 87 | "id": 51190, 88 | "option_group_id": 16979, 89 | "name": "Corn", 90 | "price": 1.2, 91 | "default": false, 92 | "extras": null 93 | }, 94 | { 95 | "id": 51191, 96 | "option_group_id": 16979, 97 | "name": "Extra mozzarella", 98 | "price": 1.7, 99 | "default": false, 100 | "extras": null 101 | } 102 | ] 103 | } 104 | ] 105 | } 106 | ], 107 | "groups": [] 108 | }, 109 | { 110 | "id": 58425, 111 | "menu_category_id": 14937, 112 | "name": "Pizza Prosciutto", 113 | "description": "(tomato sauce, cheese, ham)", 114 | "price": 8, 115 | "active": true, 116 | "active_begin": null, 117 | "active_end": null, 118 | "active_days": 127, 119 | "extras": null, 120 | "sizes": [ 121 | { 122 | "id": 37088, 123 | "menu_item_id": 58425, 124 | "name": "Small", 125 | "price": 0, 126 | "default": true, 127 | "groups": [ 128 | { 129 | "id": 16978, 130 | "menu_id": 4108, 131 | "name": "Extra Toppings (Small)", 132 | "required": false, 133 | "force_min": 1, 134 | "force_max": 1, 135 | "allow_quantity": false, 136 | "options": [ 137 | { 138 | "id": 51188, 139 | "option_group_id": 16978, 140 | "name": "Corn", 141 | "price": 0.7, 142 | "default": false, 143 | "extras": null 144 | }, 145 | { 146 | "id": 51189, 147 | "option_group_id": 16978, 148 | "name": "Extra mozzarella", 149 | "price": 1.2, 150 | "default": false, 151 | "extras": null 152 | } 153 | ] 154 | } 155 | ], 156 | "extras": { 157 | "menu_item_nutritional_values": [ 158 | { 159 | "id": 9, 160 | "value": "123" 161 | }, 162 | { 163 | "id": 10, 164 | "value": "12" 165 | }, 166 | { 167 | "id": 11, 168 | "value": "12" 169 | }, 170 | { 171 | "id": 12, 172 | "value": "12" 173 | }, 174 | { 175 | "id": 13, 176 | "value": "12" 177 | }, 178 | { 179 | "id": 14, 180 | "value": "12" 181 | } 182 | ], 183 | "menu_item_nutritional_values_size": "per_100g" 184 | } 185 | }, 186 | { 187 | "id": 37089, 188 | "menu_item_id": 58425, 189 | "name": "Large", 190 | "price": 2, 191 | "default": false, 192 | "groups": [ 193 | { 194 | "id": 16979, 195 | "menu_id": 4108, 196 | "name": "Extra Toppings (Large)", 197 | "required": false, 198 | "force_min": 1, 199 | "force_max": 1, 200 | "allow_quantity": false, 201 | "options": [ 202 | { 203 | "id": 51190, 204 | "option_group_id": 16979, 205 | "name": "Corn", 206 | "price": 1.2, 207 | "default": false, 208 | "extras": null 209 | }, 210 | { 211 | "id": 51191, 212 | "option_group_id": 16979, 213 | "name": "Extra mozzarella", 214 | "price": 1.7, 215 | "default": false, 216 | "extras": null 217 | } 218 | ] 219 | } 220 | ], 221 | "extras": { 222 | "menu_item_nutritional_values": [ 223 | { 224 | "id": 9, 225 | "value": "323" 226 | }, 227 | { 228 | "id": 10, 229 | "value": "32" 230 | }, 231 | { 232 | "id": 11, 233 | "value": "32" 234 | }, 235 | { 236 | "id": 12, 237 | "value": "32" 238 | }, 239 | { 240 | "id": 13, 241 | "value": "32" 242 | }, 243 | { 244 | "id": 14, 245 | "value": "32" 246 | } 247 | ], 248 | "menu_item_nutritional_values_size": "per_100g" 249 | } 250 | } 251 | ], 252 | "groups": [] 253 | } 254 | ], 255 | "groups": [ 256 | { 257 | "id": 16977, 258 | "menu_id": 4108, 259 | "name": "Crust", 260 | "required": true, 261 | "force_min": 1, 262 | "force_max": 1, 263 | "allow_quantity": false, 264 | "options": [ 265 | { 266 | "id": 51186, 267 | "option_group_id": 16977, 268 | "name": "Fluffy", 269 | "price": 0, 270 | "default": true, 271 | "extras": null 272 | }, 273 | { 274 | "id": 51187, 275 | "option_group_id": 16977, 276 | "name": "Crispy", 277 | "price": 0, 278 | "default": false, 279 | "extras": null 280 | } 281 | ] 282 | } 283 | ] 284 | }, 285 | { 286 | "id": 14938, 287 | "menu_id": 4108, 288 | "name": "Pasta", 289 | "active": true, 290 | "active_begin": null, 291 | "active_end": null, 292 | "active_days": 127, 293 | "picture_id": 2967, 294 | "items": [ 295 | { 296 | "id": 58426, 297 | "menu_category_id": 14938, 298 | "name": "Spaghetti Bolognese", 299 | "description": "", 300 | "price": 9, 301 | "active": true, 302 | "active_begin": null, 303 | "active_end": null, 304 | "active_days": 127, 305 | "sizes": [], 306 | "groups": [], 307 | "extras": { 308 | "sku": "", 309 | "menu_item_allergens_ids": [ 310 | 1, 311 | 3, 312 | 7, 313 | 8, 314 | 4 315 | ], 316 | "menu_item_allergens_values": [ 317 | { 318 | "id": 1, 319 | "name": "Milk" 320 | }, 321 | { 322 | "id": 3, 323 | "name": "Eggs" 324 | }, 325 | { 326 | "id": 7, 327 | "name": "Shellfish" 328 | }, 329 | { 330 | "id": 8, 331 | "name": "Soybeans" 332 | }, 333 | { 334 | "id": 4, 335 | "name": "Peanuts" 336 | } 337 | ] 338 | } 339 | }, 340 | { 341 | "id": 58427, 342 | "menu_category_id": 14938, 343 | "name": "Spaghetti Frutti di Mare", 344 | "description": "(with sea food)", 345 | "price": 12, 346 | "active": true, 347 | "active_begin": null, 348 | "active_end": null, 349 | "active_days": 127, 350 | "extras": null, 351 | "sizes": [], 352 | "groups": [] 353 | } 354 | ], 355 | "groups": [] 356 | } 357 | ] 358 | } 359 | -------------------------------------------------------------------------------- /accepted_orders/version_1/payload/orders.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 1 4 | 5 | 776043 6 | 4172 7 | 104174 8 | 188995 9 | 10 | website 11 | delivery 12 | accepted 13 | 2016-02-03T16:44:00.000Z 14 | undefined 15 | true 16 | 2016-02-03T16:43:51.000Z 17 | 47.88 18 | 4.13 19 | 62.41 20 | 5 21 | 30 22 | Donald 23 | Draper 24 | don.draper@globalfoodsoft.com 25 | +15551234567 26 | 21st Market Street, San Francisco 27 | 28 | 21st Market Street 29 | San Francisco 30 | 31 | John's Excellent Pizza 32 | 33 | 0 34 | USD 35 | 2016-02-03T16:42:33.000Z 36 | 2016-02-03T16:44:00.000Z 37 | 37.79448725889753 38 | -122.395311680426 39 | true 40 | 41 | ONLINE 42 | 0.07 43 | NET 44 | Sales Tax 45 | 0.1 46 | 2016-02-03T17:14:00.000Z 47 | 2016-02-03T16:47:49.000Z 48 | 49 | 30 50 | false 51 | 0.1 52 | 53 | 54 | 0 55 | 56 | en 57 | 3.35 58 | 0.5 59 | 1 60 | 8yCPCvb3dDo1k 61 | id-9389 62 | 1 63 | 64 | 1678236 65 | 776043 66 | 67 | DELIVERY_FEE 68 | 5 69 | 5 70 | 1 71 | 72 | 2016-02-03T16:42:33.000Z 73 | 2016-02-03T16:42:34.000Z 74 | 75 | delivery_fee 76 | 0.1 77 | 0.5 78 | 79 | false 80 | 0 81 | 0 82 | NET 83 | 0 84 | 0 85 | 86 | 87 | 88 | 89 | 90 | 1678237 91 | 776043 92 | 93 | TIP 94 | 5.67 95 | 5.67 96 | 1 97 | 98 | 2016-02-03T16:42:33.000Z 99 | 2016-02-03T16:43:48.000Z 100 | 101 | tip 102 | 0.05 103 | 0.2702 104 | 105 | false 106 | 0 107 | 0 108 | GROSS 109 | 0 110 | 0 111 | 112 | 113 | 114 | 115 | 116 | 1678240 117 | 776043 118 | 58424 119 | Pizza Margherita 120 | 8.2 121 | 7 122 | 1 123 | 124 | 2016-02-03T16:42:44.000Z 125 | 2016-02-03T16:42:57.000Z 126 | 58424 127 | item 128 | 0.07 129 | 0 130 | 1678245 131 | false 132 | 0 133 | 0 134 | NET 135 | 0 136 | 8.2 137 | 14937 138 | 139 | 140 | 152 | 164 | 176 | 177 | 178 | 1678242 179 | 776043 180 | 58425 181 | Pizza Prosciutto 182 | 11.7 183 | 8 184 | 1 185 | 186 | 2016-02-03T16:42:49.000Z 187 | 2016-02-03T16:42:57.000Z 188 | 58425 189 | item 190 | 0.07 191 | 0.819 192 | 1678245 193 | false 194 | 0 195 | 0 196 | NET 197 | 0 198 | 0 199 | 14937 200 | 201 | 202 | 214 | 226 | 238 | 239 | 240 | 1678243 241 | 776043 242 | 58425 243 | Pizza Prosciutto 244 | 8.7 245 | 8 246 | 1 247 | 248 | 2016-02-03T16:42:56.000Z 249 | 2016-02-03T16:42:57.000Z 250 | 58425 251 | item 252 | 0.07 253 | 0.609 254 | 1678245 255 | false 256 | 0 257 | 0 258 | NET 259 | 0 260 | 0 261 | 14937 262 | 263 | 264 | 276 | 288 | 300 | 301 | 302 | 1678245 303 | 776043 304 | 305 | 2 + 1 Pizza Special 306 | 28.6 307 | 0 308 | 1 309 | 310 | 2016-02-03T16:42:57.000Z 311 | 2016-02-03T16:43:02.000Z 312 | 251 313 | promo_item 314 | 0.07 315 | 1.3566 316 | 317 | true 318 | 0.05 319 | 1.02 320 | NET 321 | 0 322 | 8.2 323 | 25 324 | 325 | 326 | 327 | 328 | 1678246 329 | 776043 330 | 58426 331 | Spaghetti Bolognese 332 | 18 333 | 9 334 | 2 335 | 336 | 2016-02-03T16:43:00.000Z 337 | 2016-02-03T16:43:02.000Z 338 | 58426 339 | item 340 | 0.07 341 | 1.197 342 | 343 | false 344 | 0.05 345 | 0.9 346 | NET 347 | 0 348 | 0 349 | 14938 350 | 351 | 352 | 353 | 354 | 1678247 355 | 776043 356 | 58427 357 | Spaghetti Frutti di Mare 358 | 12 359 | 12 360 | 1 361 | 362 | 2016-02-03T16:43:02.000Z 363 | 2016-02-03T16:43:02.000Z 364 | 58427 365 | item 366 | 0.07 367 | 0.798 368 | 369 | false 370 | 0.05 371 | 0.6 372 | NET 373 | 0 374 | 0 375 | 14938 376 | 377 | 378 | 379 | 380 | 1678248 381 | 776043 382 | 383 | 5% off total larger than 40$ 384 | 0 385 | 0 386 | 1 387 | 388 | 2016-02-03T16:43:02.000Z 389 | 2016-02-03T16:43:48.000Z 390 | 250 391 | promo_cart 392 | 0.07 393 | 0 394 | 395 | true 396 | 0.05 397 | -2.52 398 | NET 399 | 0 400 | 2.52 401 | 9 402 | 0.05 403 | 404 | 405 | 406 | 407 | -------------------------------------------------------------------------------- /accepted_orders/version_1/payload/orders.json: -------------------------------------------------------------------------------- 1 | { 2 | "count": 1, 3 | "orders": [ 4 | { 5 | "coupons": [], 6 | "id": 776079, 7 | "restaurant_id": 4172, 8 | "company_account_id": 104174, 9 | "user_id": 188995, 10 | "app_instance_id": null, 11 | "source": "website", 12 | "type": "delivery", 13 | "status": "accepted", 14 | "confirmed_at": "2016-02-03T16:46:26.000Z", 15 | "finished": "undefined", 16 | "retrieved": true, 17 | "retrieved_at": "2016-02-03T16:46:18.000Z", 18 | "sub_total_price": 47.88, 19 | "taxes": 4.13, 20 | "total_price": 62.41, 21 | "delivery_fee": 5, 22 | "delivery_time": 30, 23 | "client_first_name": "Donald", 24 | "client_last_name": "Draper", 25 | "client_email": "don.draper@globalfoodsoft.com", 26 | "client_phone": "+15551234567", 27 | "client_address": "21st Market Street, San Francisco", 28 | "client_address_parts": { 29 | "street": "21st Market Street", 30 | "city": "San Francisco" 31 | }, 32 | "restaurant_name": "John's Excellent Pizza", 33 | "instructions": null, 34 | "postpone": 0, 35 | "currency": "USD", 36 | "created_at": "2016-02-03T16:45:37.000Z", 37 | "updated_at": "2016-02-03T16:46:26.000Z", 38 | "latitude": "37.79448725889753", 39 | "longitude": "-122.395311680426", 40 | "outside_delivery": true, 41 | "pickup_payment": null, 42 | "delivery_payment": "ONLINE", 43 | "sales_tax": 0.07, 44 | "sales_tax_type": "NET", 45 | "sales_tax_label": "Sales Tax", 46 | "sales_tax_delivery": 0.1, 47 | "fulfill_time": "2016-02-03T17:16:26.000Z", 48 | "timeout_time": "2016-02-03T16:50:16.000Z", 49 | "payment_method_id": null, 50 | "minimum_order": 30, 51 | "pin_skipped": false, 52 | "tip": 0.1, 53 | "referrer_order_id": null, 54 | "share_text": null, 55 | "aggregated": 0, 56 | "delivery_zone_id": null, 57 | "language_code": "en", 58 | "items": [ 59 | { 60 | "id": 1678273, 61 | "order_id": 776079, 62 | "menu_item_id": null, 63 | "name": "DELIVERY_FEE", 64 | "total_item_price": 5, 65 | "price": 5, 66 | "quantity": 1, 67 | "instructions": null, 68 | "created_at": "2016-02-03T16:45:37.000Z", 69 | "updated_at": "2016-02-03T16:45:37.000Z", 70 | "type_id": null, 71 | "type": "delivery_fee", 72 | "tax_rate": 0.1, 73 | "tax_value": 0.5, 74 | "parent_id": null, 75 | "promotion_complete": false, 76 | "total_discount_rate": 0, 77 | "total_discount_value": 0, 78 | "tax_type": "NET", 79 | "aggregated": 0, 80 | "discount": 0, 81 | "type_category_id": null, 82 | "promo_cart_percent": null, 83 | "promo_cart_fix": null, 84 | "options": [] 85 | }, 86 | { 87 | "id": 1678274, 88 | "order_id": 776079, 89 | "menu_item_id": null, 90 | "name": "TIP", 91 | "total_item_price": 5.67, 92 | "price": 5.67, 93 | "quantity": 1, 94 | "instructions": null, 95 | "created_at": "2016-02-03T16:45:37.000Z", 96 | "updated_at": "2016-02-03T16:46:15.000Z", 97 | "type_id": null, 98 | "type": "tip", 99 | "tax_rate": 0.05, 100 | "tax_value": 0.2702, 101 | "parent_id": null, 102 | "promotion_complete": false, 103 | "total_discount_rate": 0, 104 | "total_discount_value": 0, 105 | "tax_type": "GROSS", 106 | "aggregated": 0, 107 | "discount": 0, 108 | "type_category_id": null, 109 | "promo_cart_percent": null, 110 | "promo_cart_fix": null, 111 | "options": [] 112 | }, 113 | { 114 | "id": 1678275, 115 | "order_id": 776079, 116 | "menu_item_id": 58424, 117 | "name": "Pizza Margherita", 118 | "total_item_price": 8.2, 119 | "price": 7, 120 | "quantity": 1, 121 | "instructions": "", 122 | "created_at": "2016-02-03T16:45:43.000Z", 123 | "updated_at": "2016-02-03T16:45:52.000Z", 124 | "type_id": 58424, 125 | "type": "item", 126 | "tax_rate": 0.07, 127 | "tax_value": 0, 128 | "parent_id": 1678282, 129 | "promotion_complete": false, 130 | "total_discount_rate": 0, 131 | "total_discount_value": 0, 132 | "tax_type": "NET", 133 | "aggregated": 0, 134 | "discount": 8.2, 135 | "type_category_id": 14937, 136 | "promo_cart_percent": null, 137 | "promo_cart_fix": null, 138 | "options": [ 139 | { 140 | "id": 1771286, 141 | "order_item_id": 1678275, 142 | "option_id": 37086, 143 | "name": "Small", 144 | "price": 0, 145 | "group_name": "Size", 146 | "created_at": "2016-02-03T16:45:43.000Z", 147 | "updated_at": "2016-02-03T16:45:43.000Z", 148 | "quantity": 1, 149 | "type": "size" 150 | }, 151 | { 152 | "id": 1771287, 153 | "order_item_id": 1678275, 154 | "option_id": 51187, 155 | "name": "Crispy", 156 | "price": 0, 157 | "group_name": "Crust", 158 | "created_at": "2016-02-03T16:45:43.000Z", 159 | "updated_at": "2016-02-03T16:45:43.000Z", 160 | "quantity": 1, 161 | "type": "option" 162 | }, 163 | { 164 | "id": 1771288, 165 | "order_item_id": 1678275, 166 | "option_id": 51189, 167 | "name": "Extra mozzarella", 168 | "price": 1.2, 169 | "group_name": "Extra Toppings (Small)", 170 | "created_at": "2016-02-03T16:45:43.000Z", 171 | "updated_at": "2016-02-03T16:45:43.000Z", 172 | "quantity": 1, 173 | "type": "option" 174 | } 175 | ] 176 | }, 177 | { 178 | "id": 1678277, 179 | "order_id": 776079, 180 | "menu_item_id": 58425, 181 | "name": "Pizza Prosciutto", 182 | "total_item_price": 11.7, 183 | "price": 8, 184 | "quantity": 1, 185 | "instructions": "", 186 | "created_at": "2016-02-03T16:45:46.000Z", 187 | "updated_at": "2016-02-03T16:45:52.000Z", 188 | "type_id": 58425, 189 | "type": "item", 190 | "tax_rate": 0.07, 191 | "tax_value": 0.819, 192 | "parent_id": 1678282, 193 | "promotion_complete": false, 194 | "total_discount_rate": 0, 195 | "total_discount_value": 0, 196 | "tax_type": "NET", 197 | "aggregated": 0, 198 | "discount": 0, 199 | "type_category_id": 14937, 200 | "promo_cart_percent": null, 201 | "promo_cart_fix": null, 202 | "options": [ 203 | { 204 | "id": 1771289, 205 | "order_item_id": 1678277, 206 | "option_id": 37089, 207 | "name": "Large", 208 | "price": 2, 209 | "group_name": "Size", 210 | "created_at": "2016-02-03T16:45:46.000Z", 211 | "updated_at": "2016-02-03T16:45:46.000Z", 212 | "quantity": 1, 213 | "type": "size" 214 | }, 215 | { 216 | "id": 1771290, 217 | "order_item_id": 1678277, 218 | "option_id": 51187, 219 | "name": "Crispy", 220 | "price": 0, 221 | "group_name": "Crust", 222 | "created_at": "2016-02-03T16:45:46.000Z", 223 | "updated_at": "2016-02-03T16:45:46.000Z", 224 | "quantity": 1, 225 | "type": "option" 226 | }, 227 | { 228 | "id": 1771291, 229 | "order_item_id": 1678277, 230 | "option_id": 51191, 231 | "name": "Extra mozzarella", 232 | "price": 1.7, 233 | "group_name": "Extra Toppings (Large)", 234 | "created_at": "2016-02-03T16:45:46.000Z", 235 | "updated_at": "2016-02-03T16:45:46.000Z", 236 | "quantity": 1, 237 | "type": "option" 238 | } 239 | ] 240 | }, 241 | { 242 | "id": 1678281, 243 | "order_id": 776079, 244 | "menu_item_id": 58425, 245 | "name": "Pizza Prosciutto", 246 | "total_item_price": 8.7, 247 | "price": 8, 248 | "quantity": 1, 249 | "instructions": "", 250 | "created_at": "2016-02-03T16:45:51.000Z", 251 | "updated_at": "2016-02-03T16:45:52.000Z", 252 | "type_id": 58425, 253 | "type": "item", 254 | "tax_rate": 0.07, 255 | "tax_value": 0.609, 256 | "parent_id": 1678282, 257 | "promotion_complete": false, 258 | "total_discount_rate": 0, 259 | "total_discount_value": 0, 260 | "tax_type": "NET", 261 | "aggregated": 0, 262 | "discount": 0, 263 | "type_category_id": 14937, 264 | "promo_cart_percent": null, 265 | "promo_cart_fix": null, 266 | "options": [ 267 | { 268 | "id": 1771294, 269 | "order_item_id": 1678281, 270 | "option_id": 37088, 271 | "name": "Small", 272 | "price": 0, 273 | "group_name": "Size", 274 | "created_at": "2016-02-03T16:45:51.000Z", 275 | "updated_at": "2016-02-03T16:45:51.000Z", 276 | "quantity": 1, 277 | "type": "size" 278 | }, 279 | { 280 | "id": 1771295, 281 | "order_item_id": 1678281, 282 | "option_id": 51186, 283 | "name": "Fluffy", 284 | "price": 0, 285 | "group_name": "Crust", 286 | "created_at": "2016-02-03T16:45:51.000Z", 287 | "updated_at": "2016-02-03T16:45:51.000Z", 288 | "quantity": 1, 289 | "type": "option" 290 | }, 291 | { 292 | "id": 1771296, 293 | "order_item_id": 1678281, 294 | "option_id": 51188, 295 | "name": "Corn", 296 | "price": 0.7, 297 | "group_name": "Extra Toppings (Small)", 298 | "created_at": "2016-02-03T16:45:51.000Z", 299 | "updated_at": "2016-02-03T16:45:51.000Z", 300 | "quantity": 1, 301 | "type": "option" 302 | } 303 | ] 304 | }, 305 | { 306 | "id": 1678282, 307 | "order_id": 776079, 308 | "menu_item_id": null, 309 | "name": "2 + 1 Pizza Special", 310 | "total_item_price": 28.6, 311 | "price": 0, 312 | "quantity": 1, 313 | "instructions": null, 314 | "created_at": "2016-02-03T16:45:51.000Z", 315 | "updated_at": "2016-02-03T16:45:56.000Z", 316 | "type_id": 251, 317 | "type": "promo_item", 318 | "tax_rate": 0.07, 319 | "tax_value": 1.3566, 320 | "parent_id": null, 321 | "promotion_complete": true, 322 | "total_discount_rate": 0.05, 323 | "total_discount_value": 1.02, 324 | "tax_type": "NET", 325 | "aggregated": 0, 326 | "discount": 8.2, 327 | "type_category_id": 25, 328 | "promo_cart_percent": null, 329 | "promo_cart_fix": null, 330 | "options": [] 331 | }, 332 | { 333 | "id": 1678284, 334 | "order_id": 776079, 335 | "menu_item_id": 58426, 336 | "name": "Spaghetti Bolognese", 337 | "total_item_price": 18, 338 | "price": 9, 339 | "quantity": 2, 340 | "instructions": "", 341 | "created_at": "2016-02-03T16:45:54.000Z", 342 | "updated_at": "2016-02-03T16:45:56.000Z", 343 | "type_id": 58426, 344 | "type": "item", 345 | "tax_rate": 0.07, 346 | "tax_value": 1.197, 347 | "parent_id": null, 348 | "promotion_complete": false, 349 | "total_discount_rate": 0.05, 350 | "total_discount_value": 0.9, 351 | "tax_type": "NET", 352 | "aggregated": 0, 353 | "discount": 0, 354 | "type_category_id": 14938, 355 | "promo_cart_percent": null, 356 | "promo_cart_fix": null, 357 | "options": [] 358 | }, 359 | { 360 | "id": 1678286, 361 | "order_id": 776079, 362 | "menu_item_id": 58427, 363 | "name": "Spaghetti Frutti di Mare", 364 | "total_item_price": 12, 365 | "price": 12, 366 | "quantity": 1, 367 | "instructions": "", 368 | "created_at": "2016-02-03T16:45:56.000Z", 369 | "updated_at": "2016-02-03T16:45:56.000Z", 370 | "type_id": 58427, 371 | "type": "item", 372 | "tax_rate": 0.07, 373 | "tax_value": 0.798, 374 | "parent_id": null, 375 | "promotion_complete": false, 376 | "total_discount_rate": 0.05, 377 | "total_discount_value": 0.6, 378 | "tax_type": "NET", 379 | "aggregated": 0, 380 | "discount": 0, 381 | "type_category_id": 14938, 382 | "promo_cart_percent": null, 383 | "promo_cart_fix": null, 384 | "options": [] 385 | }, 386 | { 387 | "id": 1678287, 388 | "order_id": 776079, 389 | "menu_item_id": null, 390 | "name": "5% off total larger than 40$", 391 | "total_item_price": 0, 392 | "price": 0, 393 | "quantity": 1, 394 | "instructions": null, 395 | "created_at": "2016-02-03T16:45:56.000Z", 396 | "updated_at": "2016-02-03T16:46:15.000Z", 397 | "type_id": 250, 398 | "type": "promo_cart", 399 | "tax_rate": 0.07, 400 | "tax_value": 0, 401 | "parent_id": null, 402 | "promotion_complete": true, 403 | "total_discount_rate": 0.05, 404 | "total_discount_value": -2.52, 405 | "tax_type": "NET", 406 | "aggregated": 0, 407 | "discount": 2.52, 408 | "type_category_id": 9, 409 | "promo_cart_percent": 0.05, 410 | "promo_cart_fix": null, 411 | "options": [] 412 | } 413 | ], 414 | "items_taxes": 3.35, 415 | "delivery_taxes": 0.5, 416 | "pos_system_id": 1, 417 | "restaurant_key": "8yCPCvb3dDo1k", 418 | "restaurant_token": "id-9389", 419 | "api_version": 1 420 | } 421 | ] 422 | } 423 | --------------------------------------------------------------------------------