{{YourSetwebhookUrl}}

Your channel will receive this type of request every time a user pushes a menu from within Deliverect.

You can create and push a test menu to your channel from your Deliverect test account, which will simulate a real scenario where customers decide to change/update their menu.

Modifiers and modifier groups

To explain what modifiers and modifier groups are, consider the following example.

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.

In Deliverect, this will be modeled using modifiers and modifier groups. Each topping is a modifier, which will end up looking like this in the JSON that will be sent in the menu push request:

"modifiers" : {
    "ef4480b9c6489f0001722567" : {
        "_id" : "ef4480b9c6489f0001722567",
        ...
        "name" : "Pepperoni",
        "price" : 300,
        ...
    },
    "ef4480b9c6489f0001722568" : {
        "_id" : "ef4480b9c6489f0001722568",
        ...
        "name" : "Cheese",
        "price" : 200,
        ...
    },
    "ef4480b9c6489f0001722569" : {
        "_id" : "ef4480b9c6489f0001722569",
        ...
        "name" : "Olives",
        "price" : 300,
        ...
    },

To group the different choices (modifiers), we create a modifier group. The group should have a customer-facing name (e.g., "Choose Toppings") and minimum and maximum quantity constraints. Again, this is what the JSON for this would look like:

"modifierGroups": {
    "ef4480b9c6489014aa26183f" : {
        "_id" : "ef4480b9c6489014aa26183f",
        ...
        "name" : "Choose Toppings"
        "subProducts" : [
            "ef4480b9c6489f0001722567",
            "ef4480b9c6489f0001722568",
            "ef4480b9c6489f0001722569",
            ...
        ],
        ...
        "max" : 5,
        "min" : 0,
        ...
    }
}

First off, notice that the IDs of the modifiers corresponding to each topping are in the subProducts in the dictionary describing the modifier group.

Also, take a look at max and min in the JSON above. They're used to indicate the maximum and minimum amount of modifiers customers can select from this modifier group.

In our example case, we use modifiers to allow a customer to select extra toppings to put on top of their pizza. If we say that someone ordering pizza shouldn't have to select even a single extra topping, then we have "min": 0. If, say, for practical reasons, we also want to limit the number of extra toppings to five, we get "max": 5. Those values correspond with what's in the JSON above.

Alternatively, modifiers can have 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. If 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 max and min would be:

...
"max": 1,
"min": 1,
...

Bundles

A bundle groups different products. The same way as a modifier group, groups together modifiers, bundles group products.

To explain better what bundles are, consider the following example. Imagine a restaurant that sells burgers, side dishes, and drinks as one deal product. This deal product will have three bundles: "Select your burger," "Select your side dish," and "select your drink." Each bundle will consist of a variety of products. There will be one price on the deal product and the products that are part of the bundle will have a price of zero. The JSON will look like the following:

"6046072b2ea4a57f49329b58-B": {
    "name": "Beef Rendang",
    "productType": 1,
...
    "plu": "BEEF-01",
    "price": 0, 
...
    "max": 0,
    "min": 0,
...
}

The bundle should have a customer-facing name (e.g., "Choose your Meats") and minimum and maximum quantity constraints. Again, this is what the JSON for this will look like:

"bundles": {
    "6046072b2ea4a57f49329b58-B": {
        "name": "Beef Rendang",
        "productType": 1,
        ...
        "plu": "BEEF-01",
        "price": 0, 
        ...
        "max": 0,
        "min": 0,
        ...
    },
    "6046072b2ea4a57f49329b57": {
        "name": "Choose Your Meats",
        ...
        "productType": 4,
        "plu": "BNDL-01",
        "price": 0,
        …                    ],
        "subProducts": [
            "6046072b2ea4a57f49329b58-B",
            "6046072b2ea4a57f49329b59-B",
            "6046072b2ea4a57f49329b5a-B",
        ],
        ...
        "max": 2,
        "min": 2,

Multi-select modifiers

In some cases, it must be possible for modifiers in a modifier group to be selected more than once.

Have a look at the JSON menu push example. Look for the modifier group with PLU 2744, more specifically, how max and `multiMax are used.

The max field gets a value of two, which indicates the maximum number of modifiers. As there are only two modifiers in the group, this in itself wouldn't make much of a difference when the modifiers are only selectable once.

Adding multiMax 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.

Product tags: consumable types and allergens

A product can have one or more product tags. For each product in products, the tags exist in a list with key productTags. Product tags are used to indicate consumable types and or allergens, which your channel should show in menus to customers.

Below is a list of consumable types and their corresponding product tag value:

ConsumableInteger Value
alcohol1
halal2
kosher3
vegan4
vegetarian5

This list gives an overview of allergens and their corresponding product tag value:

AllergenInteger value
celery100
gluten101
crustaceans102
fish103
eggs104
lupin105
milk106
molluscs107
mustard108
nuts109
peanuts110
sesame111
soya112
sulphites113
almonds114
barley115
brazil nuts116
cashew117
hazelnuts118
kamut119
macadamia120
oats121
pecan122
pistachios123
rye124
spelt125
walnuts126
wheat127
Allergen ExclusionsInteger value
No allergens1000
Gluten free1101

Check out the menu push request example at the bottom of this page, which indicates the "Cheese bacon" product contains dairy.

Menu types

There are five different types of menus, with each representing the intended ordering type for which the menu is suitable.

NameInteger Value
Delivery and pickup0
Delivery1
Pickup2
Eat-in3
Curbside pickup4

Availabilities

With every menu pushed, there will be a list of availabilities that indicate when customers can order from the 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).

A single entry in this list of availabilities looks like the code snippet below.

{
    "dayOfWeek": "1",
    "startTime": "13:00",
    "endTime": "21:30"
}

For a single entry, the fields are dayOfWeek, startTime, and endTime. An explanation of their use is in the table below.

FieldUse
dayOfWeekAn integer value that indicates the day of the week for this availability (starting at 1 for Monday).
startTimeA 24-hour HH:MM format notation of the start time of an availability.
endTimeA 24-hour HH:MM format notation of the end time of an availability.

📘

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 and the current time corresponds with the availability of the menu. Likewise, it should be clear to a customer why they can't order food (because the menu is not currently available to them or because the store is closed).

Have a look at the example request below, which shows what a list of availabilities tied to a menu looks like in a complete menu push request.

📘

Future development for availabilities

Currently, the only way a user can update availabilities for a menu is by doing a menu push. In the future, it will become possible to send a menu patch request from Deliverect, which can be used to update availabilities without having to push an entire menu again.

Snoozed products

Each menu can have a list of snoozed products (called snoozedProducts). 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 exists within this list in the snoozeEnd field. If you use multiple menus in one location (for different channels etc.) It's possible that a product snoozed on one menu is available on another menu in the same location.

[
    {
        "menu": "Deliverect Special menu",
        "availabilities": [
            {
                "dayOfWeek": "1",
                "startTime": "13:00",
                "endTime": "21:30"
            },
            {
                "dayOfWeek": "3",
                "startTime": "09:30",
                "endTime": "21:30"
            },
            {
                "dayOfWeek": "4",
                "startTime": "09:30",
                "endTime": "21:30"
            },
            {
                "dayOfWeek": "5",
                "startTime": "09:30",
                "endTime": "21:30"
            },
            {
                "dayOfWeek": "6",
                "startTime": "09:30",
                "endTime": "21:30"
            }
        ],
        "categories": [
            {
                "_id": "5c7d12a4c6489f0001af499a",
                "account": "5bf689b0c6489f002f1276dc",
                "name": "Burgers",
                "nameTranslations": {},
                "description": "",
                "descriptionTranslations": {}, 
                "availabilities": [],
                "imageUrl": "http://bookmarkurl.info/images/product-unknown/product-unknown-8.jpg",
                "products": [
                    "5c4efd43c6489f0001498a53",
                    "5c4efd43c6489f0001498a54",
                    "5c4efd43c6489f0001498a5d"
                ],
                "menu": "5c7d1287c6489f0001af4999"
            },
            {
                "_id": "5cade196c6489f00019c80ad",
                "account": "5bf689b0c6489f002f1276dc",
                "name": "Salads",
                "nameTranslations": {},
                "description": "",
                "descriptionTranslations": {},
                "availabilities": [],
                "imageUrl": "http://bookmarkurl.info/images/product-unknown/product-unknown-8.jpg",
                "products": [
                    "5c4efd43c6489f0001498a63",
                    "5c4efd43c6489f0001498a64"
                ],
                "menu": "5c7d1287c6489f0001af4999"
            },
            {
                "_id": "5cade247c6489f00019c80b4",
                "account": "5bf689b0c6489f002f1276dc",
                "name": "Deserts",
                "nameTranslations": {},
                "description": "",
                "descriptionTranslations": {},
                "availabilities": [],
                "imageUrl": "http://bookmarkurl.info/images/product-unknown/product-unknown-8.jpg",
                "products": [
                    "5c4efd43c6489f0001498a65"
                ],
                "menu": "5c7d1287c6489f0001af4999"
            },
            {
                "_id": "5cade261c6489f00019c80b6",
                "account": "5bf689b0c6489f002f1276dc",
                "name": "Drinks",
                "nameTranslations": {},
                "description": "",
                "descriptionTranslations": {},
                "availabilities": [],
                "imageUrl": "http://bookmarkurl.info/images/product-unknown/product-unknown-8.jpg",
                "products": [
                    "5c4efd43c6489f0001498ab2",
                    "5c4efd43c6489f0001498ab3"
                ],
                "menu": "5c7d1287c6489f0001af4999",
                "level": 1
            }
        ],
        "products": {
            "5c4efd43c6489f0001498a53": {
                "_id": "5c4efd43c6489f0001498a53",
                "account": "5bf689b0c6489f002f1276dc",
                "location": "5bf689d0c6489f002f1276dd",
                "productType": 1,
                "plu": "AAB12",
                "price": 1250,
                "name": "Cheese bacon",
                "deliveryTax": 15,
                "subProducts": [
                    "5c4efd43c6489f0001498a3f"
                ],
                "productTags": [
                    106
                ],
                "imageUrl": "https://www.rachaelraymag.com/.image/t_share/MTQ3MTUxMjMxNzM3OTMxNTAz/two-cheese-bacon-burger-creamy-caramelized-onion-sauce-0617-103010848.jpg",
                "description": "",
                "max": "0",
                "min": "0",
                "channel": -1
            },
            "5c4efd43c6489f0001498a54": {
                "_id": "5c4efd43c6489f0001498a54",
                "account": "5bf689b0c6489f002f1276dc",
                "location": "5bf689d0c6489f002f1276dd",
                "productType": 1,
                "plu": "AAB13",
                "price": 1150,
                "name": "Crispy Chicken",
                "deliveryTax": 15,
                "subProducts": [],
                "imageUrl": "https://thecozyapron.com/wp-content/uploads/2014/03/spicy-caesar-chix-sand_02-23-14_1_ca.jpg",
                "description": "",
                "max": "0",
                "min": "0",
                "channel": -1
            },
            "5c4efd43c6489f0001498a5d": {
                "_id": "5c4efd43c6489f0001498a5d",
                "account": "5bf689b0c6489f002f1276dc",
                "location": "5bf689d0c6489f002f1276dd",
                "productType": 1,
                "plu": "BUR002",
                "price": 2000,
                "name": "Cheese Burger",
                "deliveryTax": 15,
                "subProducts": [],
                "imageUrl": "https://www.sbs.com.au/food/sites/sbs.com.au.food/files/lotus-burger-lead.jpg",
                "description": "",
                "max": "0",
                "min": "0",
                "channel": -1
            },
            "5c4efd43c6489f0001498a63": {
                "_id": "5c4efd43c6489f0001498a63",
                "account": "5bf689b0c6489f002f1276dc",
                "location": "5bf689d0c6489f002f1276dd",
                "productType": 1,
                "plu": "ABFs1",
                "price": 1250,
                "name": "Caesar",
                "deliveryTax": 15,
                "subProducts": [],
                "imageUrl": "",
                "description": "",
                "max": "0",
                "min": "0",
                "channel": -1
            },
            "5c4efd43c6489f0001498a64": {
                "_id": "5c4efd43c6489f0001498a64",
                "account": "5bf689b0c6489f002f1276dc",
                "location": "5bf689d0c6489f002f1276dd",
                "productType": 1,
                "plu": "ABFs2",
                "price": 950,
                "name": "Quinoa & lŽgumes croquants",
                "deliveryTax": 15,
                "subProducts": [],
                "imageUrl": "",
                "description": "",
                "max": "0",
                "min": "0",
                "channel": -1
            },
            "5c4efd43c6489f0001498a65": {
                "_id": "5c4efd43c6489f0001498a65",
                "account": "5bf689b0c6489f002f1276dc",
                "location": "5bf689d0c6489f002f1276dd",
                "productType": 1,
                "plu": "PIE1",
                "price": 800,
                "name": "Cherry Pie",
                "deliveryTax": 15,
                "subProducts": [],
                "imageUrl": "",
                "description": "",
                "max": "0",
                "min": "0",
                "channel": -1
            },
            "5c4efd43c6489f0001498ab2": {
                "_id": "5c4efd43c6489f0001498ab2",
                "account": "5bf689b0c6489f002f1276dc",
                "location": "5bf689d0c6489f002f1276dd",
                "productType": 1,
                "plu": "MSB1",
                "price": 580,
                "name": "Milkshake",
                "deliveryTax": 15,
                "subProducts": [],
                "imageUrl": "",
                "description": "",
                "max": "0",
                "min": "0",
                "channel": -1
            },
            "5c4efd43c6489f0001498ab3": {
                "_id": "5c4efd43c6489f0001498ab3",
                "account": "5bf689b0c6489f002f1276dc",
                "location": "5bf689d0c6489f002f1276dd",
                "productType": 1,
                "plu": "YGB1",
                "price": 430,
                "name": "Yoghurt",
                "deliveryTax": 15,
                "subProducts": [],
                "imageUrl": "",
                "uniqueKey": "139442",
                "description": "",
                "max": "0",
                "min": "0",
                "channel": -1
            }
        },
        "modifierGroups": {
            "5c4efd43c6489f0001498a3f": {
                "_id": "5c4efd43c6489f0001498a3f",
                "account": "5bf689b0c6489f002f1276dc",
                "location": "5bf689d0c6489f002f1276dd",
                "productType": 3,
                "plu": "2744",
                "price": 0,
                "name": "Curry",
                "deliveryTax": 15,
                "subProducts": [
                    "5c5480b9c6489f0001950c8b",
                    "5c5480b9c6489f0001950c8c"
                ],
                "imageUrl": "http://bookmarkurl.info/images/product-unknown/product-unknown-8.jpg",
                "description": "",
                "max": 2,
                "min": 0,
                "multiMax": 2,
                "channel": -1
            }
        },
        "modifiers": {
            "5c5480b9c6489f0001950c8b": {
                "_id": "5c5480b9c6489f0001950c8b",
                "account": "5bf689b0c6489f002f1276dc",
                "location": "5bf689d0c6489f002f1276dd",
                "productType": 2,
                "plu": "S2",
                "price": 100,
                "name": "Thai",
                "deliveryTax": 15,
                "subProducts": [],
                "imageUrl": "http://bookmarkurl.info/images/product-unknown/product-unknown-8.jpg",
                "description": "",
                "max": "0",
                "min": "0",
                "channel": -1
            },
            "5c5480b9c6489f0001950c8c": {
                "_id": "5c5480b9c6489f0001950c8c",
                "account": "5bf689b0c6489f002f1276dc",
                "location": "5bf689d0c6489f002f1276dd",
                "productType": 2,
                "plu": "S1",
                "price": 430,
                "name": "Curry",
                "deliveryTax": 15,
                "subProducts": [],
                "imageUrl": "http://bookmarkurl.info/images/product-unknown/product-unknown-8.jpg",
                "description": "Chicken Curry",
                "max": "0",
                "min": "0",
                "channel": -1
            }
        },
        "snoozedProducts": {
            "5c4efd43c6489f0001498a54": {
                "location": "5bf689d0c6489f002f1276dd",
                "plu": "AAB13",
                "name": "Crispy Chicken",
                "snoozeStart": "2020-05-07 07:51:01.195000+00:00",
                "snoozeEnd": "2020-05-07 13:51:01.195000+00:00"
            }
        },
        "channelLinkId": "5bfd9c52c11dec000122474d"
    }
]
[
  {
    "menu": "generic menu",
    "menuId": "60e42f59d24363dcbce18fa6",
    "description": "",
    "menuImageURL": null,
    "menuType": 0,
    "availabilities": [],
    "categories": [
      {
        "name": "drinks",
        "description": "",
        "nameTranslations": {},
        "descriptionTranslations": {},
        "_id": "60e43035d24363dcbce18fe9",
        "account": "60e4210705af4f238807f945",
        "posLocationId": "",
        "posCategoryType": "",
        "subCategories": [],
        "posCategoryId": "",
        "imageUrl": "",
        "products": [
          "60e4301bd24363dcbce18fd6"
        ],
        "menu": "60e42f59d24363dcbce18fa6",
        "sortedChannelProductIds": [],
        "subProductSortOrder": [],
        "subProducts": [
          "60e4301bd24363dcbce18fd6"
        ],
        "level": 1,
        "availabilities": []
      }
    ],
    "products": {
      "60e4301bd24363dcbce18fd6": {
        "name": "Awesome Drink",
        "description": "Fantastic drink",
        "nameTranslations": {},
        "descriptionTranslations": {},
        "_id": "60e4301bd24363dcbce18fd6",
        "account": "60e4210705af4f238807f945",
        "location": "60e4223f05af4f238807f96a",
        "productType": 1,
        "plu": "PR05",
        "price": 350,
        "bottleDepositPrice": 100,
        "priceLevels": {},
        "sortOrder": 0,
        "deliveryTax": 9000,
        "takeawayTax": 9000,
        "multiply": 1,
        "posProductId": "DV-POS-9",
        "posProductCategoryId": "",
        "subProducts": [],
        "productTags": [
          7
        ],
        "posCategoryIds": [
          "DV-CAT-3"
        ],
        "imageUrl": "",
        "max": 0,
        "min": 0,
        "capacityUsages": [],
        "parentId": "60e43035d24363dcbce18fe9",
        "visible": true,
        "snoozed": false,
        "subProductSortOrder": []
      }
    },
    "modifierGroups": {},
    "modifiers": {},
    "bundles": {},
    "snoozedProducts": {},
    "productTags": [],
    "currency": 1,
    "validations": [],
    "nestedModifiers": false,
    "channelLinkId": "60e6ff7fdf88f64a255e9a37"
  }
]'
[
    {
        "menu": "Variants",
        "menuId": "61013b55c30235edf4c77de2",
        "description": "Variants menu",
        "menuImageURL": null,
        "menuType": 0,
        "availabilities": [],
        "categories": [
            {
                "name": "Pizza",
                "description": "",
                "nameTranslations": {},
                "descriptionTranslations": {},
                "_id": "61013b5ac30235edf4c77dea",
                "account": "60e4210705af4f238807f945",
                "posLocationId": "",
                "posCategoryType": "",
                "subCategories": [],
                "posCategoryId": "",
                "imageUrl": "",
                "products": [
                    "61013317c30235edf4c77b73"
                ],
                "menu": "61013b55c30235edf4c77de2",
                "sortedChannelProductIds": [],
                "subProductSortOrder": [],
                "subProducts": [
                    "61013317c30235edf4c77b73"
                ],
                "level": 1,
                "availabilities": []
            }
        ],
        "products": {
            "61013317c30235edf4c77b75": {
                "name": "Small",
                "description": "",
                "nameTranslations": {},
                "descriptionTranslations": {},
                "_id": "61013317c30235edf4c77b75",
                "account": "60e4210705af4f238807f945",
                "pluProps": {
                    "V": true
                },
                "location": "60e4223f05af4f238807f96a",
                "productType": 1,
                "plu": "VAR-1-#V#-",
                "price": 0,
                "priceLevels": {},
                "sortOrder": 0,
                "deliveryTax": 9000,
                "takeawayTax": 9000,
                "multiply": 1,
                "posProductId": "DV-VAR-1",
                "posProductCategoryId": "",
                "subProducts": [],
                "productTags": [],
                "posCategoryIds": [
                    "DV-CAT-2"
                ],
                "imageUrl": "",
                "max": 0,
                "min": 0,
                "capacityUsages": [],
                "parentId": "61013317c30235edf4c77b74",
                "snoozed": false,
                "subProductSortOrder": []
            },
            "61013317c30235edf4c77b76": {
                "name": "Medium",
                "description": "",
                "nameTranslations": {},
                "descriptionTranslations": {},
                "_id": "61013317c30235edf4c77b76",
                "account": "60e4210705af4f238807f945",
                "pluProps": {
                    "V": true
                },
                "location": "60e4223f05af4f238807f96a",
                "productType": 1,
                "plu": "VAR-2-#V#-",
                "price": 300,
                "priceLevels": {},
                "sortOrder": 0,
                "deliveryTax": 9000,
                "takeawayTax": 9000,
                "multiply": 1,
                "posProductId": "DV-VAR-2",
                "posProductCategoryId": "",
                "subProducts": [],
                "productTags": [],
                "posCategoryIds": [
                    "DV-CAT-2"
                ],
                "imageUrl": "",
                "max": 0,
                "min": 0,
                "capacityUsages": [],
                "parentId": "61013317c30235edf4c77b74",
                "snoozed": false,
                "subProductSortOrder": []
            },
            "61013317c30235edf4c77b77": {
                "name": "Large",
                "description": "",
                "nameTranslations": {},
                "descriptionTranslations": {},
                "_id": "61013317c30235edf4c77b77",
                "account": "60e4210705af4f238807f945",
                "pluProps": {
                    "V": true
                },
                "location": "60e4223f05af4f238807f96a",
                "productType": 1,
                "plu": "VAR-3-#V#-",
                "price": 550,
                "priceLevels": {},
                "sortOrder": 0,
                "deliveryTax": 9000,
                "takeawayTax": 9000,
                "multiply": 1,
                "posProductId": "DV-VAR-3",
                "posProductCategoryId": "",
                "subProducts": [],
                "productTags": [],
                "posCategoryIds": [
                    "DV-CAT-2"
                ],
                "imageUrl": "",
                "max": 0,
                "min": 0,
                "capacityUsages": [],
                "parentId": "61013317c30235edf4c77b74",
                "snoozed": false,
                "subProductSortOrder": []
            },
            "61013317c30235edf4c77b73": {
                "name": "Pinapple pizza",
                "description": "I know you don't like me, but I don't like you either.",
                "nameTranslations": {},
                "descriptionTranslations": {},
                "_id": "61013317c30235edf4c77b73",
                "account": "60e4210705af4f238807f945",
                "location": "60e4223f05af4f238807f96a",
                "productType": 1,
                "plu": "VAR-PROD-1",
                "price": 800,
                "priceLevels": {},
                "sortOrder": 0,
                "deliveryTax": 9000,
                "takeawayTax": 9000,
                "multiply": 1,
                "posProductId": "DV-VAR-PROD-1",
                "posProductCategoryId": "",
                "subProducts": [
                    "61013317c30235edf4c77b74"
                ],
                "productTags": [
                    1000
                ],
                "posCategoryIds": [
                    "DV-CAT-2"
                ],
                "imageUrl": "",
                "isVariant": true,
                "max": 0,
                "min": 0,
                "capacityUsages": [],
                "parentId": "61013b5ac30235edf4c77dea",
                "snoozed": false,
                "subProductSortOrder": []
            }
        },
        "modifierGroups": {
            "61013317c30235edf4c77b74": {
                "name": "Choose your size",
                "description": "",
                "nameTranslations": {},
                "descriptionTranslations": {},
                "_id": "61013317c30235edf4c77b74",
                "account": "60e4210705af4f238807f945",
                "location": "60e4223f05af4f238807f96a",
                "productType": 3,
                "plu": "MG-VAR-1",
                "price": 0,
                "priceLevels": {},
                "sortOrder": 0,
                "deliveryTax": 9000,
                "takeawayTax": 9000,
                "multiply": 1,
                "posProductId": "DV-POS-5",
                "posProductCategoryId": "",
                "subProducts": [
                    "61013317c30235edf4c77b75",
                    "61013317c30235edf4c77b76",
                    "61013317c30235edf4c77b77"
                ],
                "productTags": [],
                "posCategoryIds": [
                    "DV-CAT-2"
                ],
                "imageUrl": "",
                "isVariantGroup": true,
                "max": 1,
                "min": 1,
                "capacityUsages": [],
                "parentId": "61013317c30235edf4c77b73",
                "snoozed": false,
                "subProductSortOrder": []
            }
        },
        "modifiers": {
            "61013317c30235edf4c77b75": {
                "name": "Small",
                "description": "",
                "nameTranslations": {},
                "descriptionTranslations": {},
                "_id": "61013317c30235edf4c77b75",
                "account": "60e4210705af4f238807f945",
                "pluProps": {
                    "V": true
                },
                "location": "60e4223f05af4f238807f96a",
                "productType": 1,
                "plu": "VAR-1-#V#-",
                "price": 0,
                "priceLevels": {},
                "sortOrder": 0,
                "deliveryTax": 9000,
                "takeawayTax": 9000,
                "multiply": 1,
                "posProductId": "DV-VAR-1",
                "posProductCategoryId": "",
                "subProducts": [],
                "productTags": [],
                "posCategoryIds": [
                    "DV-CAT-2"
                ],
                "imageUrl": "",
                "max": 0,
                "min": 0,
                "capacityUsages": [],
                "parentId": "61013317c30235edf4c77b74",
                "snoozed": false,
                "subProductSortOrder": []
            },
            "61013317c30235edf4c77b76": {
                "name": "Medium",
                "description": "",
                "nameTranslations": {},
                "descriptionTranslations": {},
                "_id": "61013317c30235edf4c77b76",
                "account": "60e4210705af4f238807f945",
                "pluProps": {
                    "V": true
                },
                "location": "60e4223f05af4f238807f96a",
                "productType": 1,
                "plu": "VAR-2-#V#-",
                "price": 300,
                "priceLevels": {},
                "sortOrder": 0,
                "deliveryTax": 9000,
                "takeawayTax": 9000,
                "multiply": 1,
                "posProductId": "DV-VAR-2",
                "posProductCategoryId": "",
                "subProducts": [],
                "productTags": [],
                "posCategoryIds": [
                    "DV-CAT-2"
                ],
                "imageUrl": "",
                "max": 0,
                "min": 0,
                "capacityUsages": [],
                "parentId": "61013317c30235edf4c77b74",
                "snoozed": false,
                "subProductSortOrder": []
            },
            "61013317c30235edf4c77b77": {
                "name": "Large",
                "description": "",
                "nameTranslations": {},
                "descriptionTranslations": {},
                "_id": "61013317c30235edf4c77b77",
                "account": "60e4210705af4f238807f945",
                "pluProps": {
                    "V": true
                },
                "location": "60e4223f05af4f238807f96a",
                "productType": 1,
                "plu": "VAR-3-#V#-",
                "price": 550,
                "priceLevels": {},
                "sortOrder": 0,
                "deliveryTax": 9000,
                "takeawayTax": 9000,
                "multiply": 1,
                "posProductId": "DV-VAR-3",
                "posProductCategoryId": "",
                "subProducts": [],
                "productTags": [],
                "posCategoryIds": [
                    "DV-CAT-2"
                ],
                "imageUrl": "",
                "max": 0,
                "min": 0,
                "capacityUsages": [],
                "parentId": "61013317c30235edf4c77b74",
                "snoozed": false,
                "subProductSortOrder": []
            }
        },
        "bundles": {},
        "snoozedProducts": {},
        "productTags": [
            1000
        ],
        "currency": 1,
        "validations": [],
        "nestedModifiers": false,
        "channelLinkId": "60e6ff7fdf88f64a255e9a37"
    }
]
{
  "success": true
}