Skip to main content

Create a Menu Using Data Management Menu Features

Menu creation is the process of retrieving a list of products, combos, modifiers, and discounts from our system's backend, and formatting the data to present to customers. These topics cover the methods used to retrieve menu data and define the data objects our system uses for menu elements.

The high level process for menu creation follows the steps below:

Menu creation uses the following Data Management resources:

Each Data Management resource includes multiple endpoints, filters, and pagination options, which make it easier to parse the data. More information on these resources can be found in the Data Management API topics.

Menu Creation

The following topics describe how to use the Data Management API to create an online menu for a restaurant. The Data Management API is flexible and can support different formats and workflows for creating menus. The methods presented below are provided as an example to help users get started building their own menu.

Organization

The organization of an online menu determines how customers find the items that they want to order. Use the Portal API to define the organizational structure of a menu by creating categories and groups and adding items to them.

Use the /menu, /menu-category, and /menu-item-group endpoints to access the menu structure. Then use the data to build a web page.

The steps below show how to request the categories and the items they contain using the Data Management API:

  1. Send a GET request to the /menu resource, and capture the correct set of menu_category_entity_ids based on the available_days property. The example below shows a response from the /menu request:

       {
            "items": [
            {
                "_id": "9999999999999999",
                "name": "Food",
                "menu_category_entity_ids": [
                    "9999999999999999",
                    "9999999999999999",
                    "9999999999999999",
                    "9999999999999999",
                    "9999999999999999"
                ],
                "date_range_entity_ids": [],
                "day_part_entity_ids": [],
                "entity_id": "9999999999999999",
                "available_days": [
                    "sun",
                    "mon",
                    "tue",
                    "wed",
                    "thu",
                    "fri",
                    "sat"
                ]
            },
            {
                "_id": "9999999999999999",
                "name": "Food",
                "menu_category_entity_ids": [
                    "9999999999999999",
                    "9999999999999999",
                    "9999999999999999",
                    "9999999999999999",
                    "9999999999999999",
                    "9999999999999999"
                ],
                "entity_id": "9999999999999999",
                "date_range_entity_ids": [],
                "day_part_entity_ids": []
            }
        ],
        "total": 2,
        "page_count": 1,
        "current_page": 1,
        "page_size": 100
    }
  2. Send a GET request to the /menu-category resource. Capture the name and the menu_group_entity_ids associated with the menu_category_ids captured in step 1. The example below shows a response from the /menu-category request:

    {
        "items": [
            {
                "_id": "9999999999999999",
                "entity_id": "9999999999999999",
                "menu_group_entity_ids": [
                    "9999999999999999"
                ],
                "name": "Beverage"
            },
            {
                "_id": "9999999999999999",
                "entity_id": "9999999999999999",
                "menu_group_entity_ids": [
                    "9999999999999999"
                ],
                "name": "Retail"
            },
            {
                "_id": "9999999999999999",
                "name": "Burgers",
                "menu_group_entity_ids": [
                    "9999999999999999"
                ],
                "entity_id": "9999999999999999"
            },
            {
                "_id": "9999999999999999",
                "name": "Sandwiches and More",
                "menu_group_entity_ids": [
                    "9999999999999999"
                ],
                "entity_id": "9999999999999999"
            },
            {
                "_id": "9999999999999999",
                "name": "Apps",
                "menu_group_entity_ids": [
                    "9999999999999999"
                ],
                "entity_id": "9999999999999999"
            },
            {
                "_id": "9999999999999999",
                "name": "Dessert",
                "menu_group_entity_ids": [
                    "9999999999999999"
                ],
                "entity_id": "9999999999999999"
            },
            {
                "_id": "9999999999999999",
                "name": "Sides",
                "menu_group_entity_ids": [
                    "9999999999999999"
                ],
                "entity_id": "9999999999999999"
            }
        ],
        "total": 7,
        "page_count": 1,
        "current_page": 1,
        "page_size": 100
    }
  3. Send a GET request to the /menu-item-group. Capture the name and product_entity_id for each item in the "items" array of each of the menu_group_entity_ids captured in step 2. The example below shows a response from the /menu_item_group resource :

    {
        "items": [
            {
                "_id": "9999999999999999",
                "entity_id": "9999999999999999",
                "menu_group_entity_ids": [
                    "9999999999999999"
                ],
                "name": "Beverage"
            },
            {
                "_id": "9999999999999999",
                "entity_id": "9999999999999999",
                "menu_group_entity_ids": [
                    "9999999999999999"
                ],
                "name": "Retail"
            },
            {
                "_id": "9999999999999999",
                "name": "Burgers",
                "menu_group_entity_ids": [
                    "9999999999999999"
                ],
                "entity_id": "9999999999999999"
            },
            {
                "_id": "9999999999999999",
                "name": "Sandwiches and More",
                "menu_group_entity_ids": [
                    "9999999999999999"
                ],
                "entity_id": "9999999999999999"
            },
            {
                "_id": "9999999999999999",
                "name": "Apps",
                "menu_group_entity_ids": [
                    "9999999999999999"
                ],
                "entity_id": "9999999999999999"
            },
            {
                "_id": "9999999999999999",
                "name": "Dessert",
                "menu_group_entity_ids": [
                    "9999999999999999"
                ],
                "entity_id": "9999999999999999"
            },
            {
                "_id": "9999999999999999",
                "name": "Sides",
                "menu_group_entity_ids": [
                    "9999999999999999"
                ],
                "entity_id": "9999999999999999"
            }
        ],
        "total": 7,
        "page_count": 1,
        "current_page": 1,
        "page_size": 100
    }
    

This process creates a set of categories and products. Use these elements to build a webpage that displays the categories and requests the correct set of products when a customer makes a selection.

Note: It is possible to obtain the same information using a single call:

https://{{dm-url}}/menu/current?$select=name,categories.name,categories.groups.name,categories.groups.items.product_entity_id,categories.groups.color1,categories.groups.color2&include_entities=[%22menu-category%22,%22menu-item-group%22]&effective_date=20YY-07-16T22:31:00.573Z

The request above returns the following response:

{
    "items": [
        {
            "_id": "9999999999999999",
            "name": "Food",
            "menu_category_entity_ids": [
                "9999999999999999",
                "9999999999999999",
                "9999999999999999",
                "9999999999999999",
                "9999999999999999"
            ],
            "date_range_entity_ids": [],
            "day_part_entity_ids": [],
            "entity_id": "9999999999999999",
            "available_days": [
                "sun",
                "mon",
                "tue",
                "wed",
                "thu",
                "fri",
                "sat"
            ],
            "categories": [
                {
                    "_id": "9999999999999999",
                    "name": "Apps",
                    "menu_group_entity_ids": [
                        "9999999999999999"
                    ],
                    "entity_id": "9999999999999999",
                    "groups": [
                        {
                            "_id": "9999999999999999",
                            "name": "Appetizers",
                            "items": [
                                {
                                    "product_entity_id": "9999999999999999",
                                    "name": "Pretty Gouda Mac n' Cheese"
                                },
                                {
                                    "product_entity_id": "9999999999999999",
                                    "name": "Cheesy Fries"
                                }
                            ],
                            "color1": "#8080ff",
                            "color2": "#54fdff",
                            "entity_id": "9999999999999999"
                        }
                    ]
                },
                {
                    "_id": "9999999999999999",
                    "name": "Burgers",
                    "menu_group_entity_ids": [
                        "9999999999999999"
                    ],
                    "entity_id": "9999999999999999",
                    "groups": [
                        {
                            "_id": "9999999999999999",
                            "name": "Burgers",
                            "items": [
                                {
                                    "product_entity_id": "9999999999999999",
                                    "name": "Kobe Burger"
                                },
                                {
                                    "product_entity_id": "9999999999999999",
                                    "name": "The Bacon Jam"
                                },
                                {
                                    "product_entity_id": "9999999999999999",
                                    "name": "Double Stack"
                                },
                                {
                                    "product_entity_id": "9999999999999999",
                                    "name": "The Kalua King"
                                },
                                {
                                    "product_entity_id": "9999999999999999",
                                    "name": "The Mini Cooper"
                                },
                                {
                                    "product_entity_id": "9999999999999999",
                                    "name": "The Tower"
                                }
                            ],
                            "color1": "#8080ff",
                            "color2": "#54fdff",
                            "entity_id": "9999999999999999"
                        }
                    ]
                },
                {
                    "_id": "9999999999999999",
                    "name": "Sandwiches and More",
                    "menu_group_entity_ids": [
                        "9999999999999999"
                    ],
                    "entity_id": "9999999999999999",
                    "groups": [
                        {
                            "_id": "9999999999999999",
                            "name": "Sandwiches",
                            "items": [
                                {
                                    "product_entity_id": "9999999999999999",
                                    "name": "Flavortown Special"
                                },
                                {
                                    "product_entity_id": "9999999999999999",
                                    "name": "Flamethrower Fish Sandwich"
                                },
                                {
                                    "product_entity_id": "9999999999999999",
                                    "name": "'Merica Dog"
                                },
                                {
                                    "product_entity_id": "9999999999999999",
                                    "name": "The Classic Chicken Sandwich"
                                },
                                {
                                    "product_entity_id": "9999999999999999",
                                    "name": "Popcorn Chicken Bites"
                                },
                                {
                                    "product_entity_id": "9999999999999999",
                                    "name": "Coke"
                                }
                            ],
                            "color1": "#8080ff",
                            "color2": "#54fdff",
                            "entity_id": "9999999999999999"
                        }
                    ]
                },
                {
                    "_id": "9999999999999999",
                    "entity_id": "9999999999999999",
                    "menu_group_entity_ids": [
                        "9999999999999999"
                    ],
                    "name": "Beverage",
                    "groups": [
                        {
                            "_id": "9999999999999999",
                            "name": "Beverage",
                            "items": [
                                {
                                    "product_entity_id": "9999999999999999",
                                    "name": "Diet Coke"
                                },
                                {
                                    "product_entity_id": "9999999999999999",
                                    "name": "Dr Pepper"
                                },
                                {
                                    "product_entity_id": "9999999999999999",
                                    "name": "Iced Tea"
                                },
                                {
                                    "product_entity_id": "9999999999999999",
                                    "name": "Sprite"
                                }
                            ],
                            "color1": "#8080ff",
                            "color2": "#54fdff",
                            "entity_id": "9999999999999999"
                        }
                    ]
                },
                {
                    "_id": "9999999999999999",
                    "name": "Dessert",
                    "menu_group_entity_ids": [
                        "9999999999999999"
                    ],
                    "entity_id": "9999999999999999",
                    "groups": [
                        {
                            "_id": "9999999999999999",
                            "name": "Desserts",
                            "items": [
                                {
                                    "product_entity_id": "9999999999999999",
                                    "name": "Chocolate Shake"
                                },
                                {
                                    "product_entity_id": "9999999999999999",
                                    "name": "Oreo Shake"
                                },
                                {
                                    "product_entity_id": "9999999999999999",
                                    "name": "Vanilla Shake"
                                },
                                {
                                    "product_entity_id": "9999999999999999",
                                    "name": "Strawberry Shake"
                                }
                            ],
                            "color1": "#8080ff",
                            "color2": "#54fdff",
                            "entity_id": "9999999999999999"
                        }
                    ]
                }
            ]
        },
        {
            "_id": "9999999999999999",
            "name": "Food",
            "menu_category_entity_ids": [
                "9999999999999999",
                "9999999999999999",
                "9999999999999999",
                "9999999999999999",
                "9999999999999999",
                "9999999999999999"
            ],
            "entity_id": "9999999999999999",
            "date_range_entity_ids": [],
            "day_part_entity_ids": [],
            "categories": [
                {
                    "_id": "9999999999999999",
                    "name": "Apps",
                    "menu_group_entity_ids": [
                        "9999999999999999"
                    ],
                    "entity_id": "9999999999999999",
                    "groups": [
                        {
                            "_id": "9999999999999999",
                            "name": "Appetizers",
                            "items": [
                                {
                                    "product_entity_id": "9999999999999999",
                                    "name": "Pretty Gouda Mac n' Cheese"
                                },
                                {
                                    "product_entity_id": "9999999999999999",
                                    "name": "Cheesy Fries"
                                }
                            ],
                            "color1": "#8080ff",
                            "color2": "#54fdff",
                            "entity_id": "9999999999999999"
                        }
                    ]
                },
                {
                    "_id": "9999999999999999",
                    "name": "Burgers",
                    "menu_group_entity_ids": [
                        "9999999999999999"
                    ],
                    "entity_id": "9999999999999999",
                    "groups": [
                        {
                            "_id": "9999999999999999",
                            "name": "Burgers",
                            "items": [
                                {
                                    "product_entity_id": "9999999999999999",
                                    "name": "Kobe Burger"
                                },
                                {
                                    "product_entity_id": "9999999999999999",
                                    "name": "The Bacon Jam"
                                },
                                {
                                    "product_entity_id": "9999999999999999",
                                    "name": "Double Stack"
                                },
                                {
                                    "product_entity_id": "9999999999999999",
                                    "name": "The Kalua King"
                                },
                                {
                                    "product_entity_id": "9999999999999999",
                                    "name": "The Mini Cooper"
                                },
                                {
                                    "product_entity_id": "9999999999999999",
                                    "name": "The Tower"
                                }
                            ],
                            "color1": "#8080ff",
                            "color2": "#54fdff",
                            "entity_id": "9999999999999999"
                        }
                    ]
                },
                {
                    "_id": "9999999999999999",
                    "name": "Sandwiches and More",
                    "menu_group_entity_ids": [
                        "9999999999999999"
                    ],
                    "entity_id": "9999999999999999",
                    "groups": [
                        {
                            "_id": "9999999999999999",
                            "name": "Sandwiches",
                            "items": [
                                {
                                    "product_entity_id": "9999999999999999",
                                    "name": "Flavortown Special"
                                },
                                {
                                    "product_entity_id": "9999999999999999",
                                    "name": "Flamethrower Fish Sandwich"
                                },
                                {
                                    "product_entity_id": "9999999999999999",
                                    "name": "'Merica Dog"
                                },
                                {
                                    "product_entity_id": "9999999999999999",
                                    "name": "The Classic Chicken Sandwich"
                                },
                                {
                                    "product_entity_id": "9999999999999999",
                                    "name": "Popcorn Chicken Bites"
                                },
                                {
                                    "product_entity_id": "9999999999999999",
                                    "name": "Coke"
                                }
                            ],
                            "color1": "#8080ff",
                            "color2": "#54fdff",
                            "entity_id": "9999999999999999"
                        }
                    ]
                },
                {
                    "_id": "9999999999999999",
                    "name": "Sides",
                    "menu_group_entity_ids": [
                        "9999999999999999"
                    ],
                    "entity_id": "9999999999999999",
                    "groups": [
                        {
                            "_id": "9999999999999999",
                            "name": "Sides",
                            "items": [
                                {
                                    "product_entity_id": "9999999999999999",
                                    "name": "Truffle Fries"
                                },
                                {
                                    "product_entity_id": "9999999999999999",
                                    "name": "Crinkle Cut Chips"
                                }
                            ],
                            "color1": "#8080ff",
                            "color2": "#54fdff",
                            "entity_id": "9999999999999999"
                        }
                    ]
                },
                {
                    "_id": "9999999999999999",
                    "entity_id": "9999999999999999",
                    "menu_group_entity_ids": [
                        "9999999999999999"
                    ],
                    "name": "Beverage",
                    "groups": [
                        {
                            "_id": "9999999999999999",
                            "name": "Beverage",
                            "items": [
                                {
                                    "product_entity_id": "9999999999999999",
                                    "name": "Diet Coke"
                                },
                                {
                                    "product_entity_id": "9999999999999999",
                                    "name": "Dr Pepper"
                                },
                                {
                                    "product_entity_id": "9999999999999999",
                                    "name": "Iced Tea"
                                },
                                {
                                    "product_entity_id": "9999999999999999",
                                    "name": "Sprite"
                                }
                            ],
                            "color1": "#8080ff",
                            "color2": "#54fdff",
                            "entity_id": "9999999999999999"
                        }
                    ]
                },
                {
                    "_id": "9999999999999999",
                    "name": "Dessert",
                    "menu_group_entity_ids": [
                        "9999999999999999"
                    ],
                    "entity_id": "9999999999999999",
                    "groups": [
                        {
                            "_id": "9999999999999999",
                            "name": "Desserts",
                            "items": [
                                {
                                    "product_entity_id": "9999999999999999",
                                    "name": "Chocolate Shake"
                                },
                                {
                                    "product_entity_id": "9999999999999999",
                                    "name": "Oreo Shake"
                                },
                                {
                                    "product_entity_id": "9999999999999999",
                                    "name": "Vanilla Shake"
                                },
                                {
                                    "product_entity_id": "9999999999999999",
                                    "name": "Strawberry Shake"
                                }
                            ],
                            "color1": "#8080ff",
                            "color2": "#54fdff",
                            "entity_id": "9999999999999999"
                        }
                    ]
                }
            ]
        }
    ],
    "total": 2,
    "page_count": 1,
    "current_page": 1,
    "page_size": 100
}

The response above shows menu categories and the products they include.

Product Display

This topic shows how to use the /product resource to obtain the following details about products:

  • Product Name

  • Images

  • Product Description

  • Nutrition Information

  • Prices

  • Add-on Items

  • Modifiers

  • Combo Options

Use this data to build pages that display products.

Call the product/current resource to obtain details about the products intended for display. The following sample GET request returns product details for two products:

{{dm_url}}/product/current?&effective_date=20YY-07-23T15:12:29.603Z&include_entities=['product-price','time-period']&entity_ids=['9999999999999999','9999999999999999']

The include_entities operation requests additional entities for the products, and the entity_ids operation specifies the entity_ids of the products.

The request above returns the following response:

{
    "items": [
        {
            "_id": 9999999999999999,
            "name": "Truffle Fries",
            "product_id": "TruffleFries",
            "product_type": "standard",
            "revenue_class": "default",
            "reporting_category": {
                "minor_reporting_category_entity_id": 9999999999999999,
                "major_reporting_category_entity_id": 9999999999999999
            },
            "alt_item_name": "",
            "images": [
                {
                    "image_set_entity_id": 9999999999999999,
                    "tag": "Truffle+Fries.jpg",
                    "source_url": "https://xoo-images.xenial.com/9999999999999999.jpg"
                },
                {
                    "image_set_entity_id": 9999999999999999,
                    "tag": "Truffle+Fries.jpg",
                    "source_url": "https://xoo-images.xenial.com/9999999999999999.jpg"
                },
                {
                    "image_set_entity_id": 9999999999999999,
                    "tag": "Truffle+Fries.jpg",
                    "source_url": "https://xoo-images.xenial.com/9999999999999999.jpg"
                }
            ],
            "item_description": "Our double fried french fries tossed in
				truffle oil and parmesan cheese. Ooo la la.",
            "is_open_price": false,
            "is_bundle": false,
            "builds": [],
            "kitchen_routing_category_entity_ids": [
                9999999999999999,
                9999999999999999
            ],
            "tax_group_entity_id": 9999999999999999,
            "prompt_for_quantity": false,
            "default_cost": 3,
            "kitchen_routing_type": "by_category",
            "product_tag_entity_ids": [],
            "product_category_entity_ids": [],
            "prompt_item_conversio_on_change": false,
            "entity_id": 9999999999999999,
            "item_type": "product",
            "nutritional_data": [
                {
                    "name": "Calories",
                    "value": 350,
                    "unit": "Count"
                }
            ],
            "include_on_item_count": true,
            "include_on_item_count_value": 1,
            "unit_type": "none",
            "restricted_order_source_entity_ids": [],
            "restrict_availability_order_source": false,
            "prices": [
                {
                    "_id": 9999999999999999,
                    "type": "standard",
                    "unit_price": 2.99,
                    "time_period_entity_ids": [],
                    "product_entity_id": 9999999999999999,
                    "product_id": "TruffleFries",
                    "external_id": "",
                    "entity_id": 9999999999999999,
                    "time_periods": []
                }
            ],
            "child_prices": []
        },
        {
            "_id": 9999999999999999,
            "name": "Crinkle Cut Chips",
            "product_id": "CrinkleChips",
            "product_type": "standard",
            "revenue_class": "default",
            "reporting_category": {
                "minor_reporting_category_entity_id": 9999999999999999,
                "major_reporting_category_entity_id": 9999999999999999
            },
            "alt_item_name": "",
            "images": [
                {
                    "image_set_entity_id": 9999999999999999,
                    "tag": "Crinkle+Cut+Chips.jpg",
                    "source_url": "https://xoo-images.xenial.com/9999999999999999.jpg"
                },
                {
                    "image_set_entity_id": 9999999999999999,
                    "tag": "Crinkle+Cut+Chips.jpg",
                    "source_url": "https://xoo-images.xenial.com/9999999999999999.jpg"
                },
                {
                    "image_set_entity_id": 9999999999999999,
                    "tag": "Crinkle+Cut+Chips.jpg",
                    "source_url": "https://xoo-images.xenial.com/9999999999999999.jpg"
                }
            ],
            "item_description": "House-fried crinkle cut potato chips
				dusted with sea salt.",
            "is_open_price": false,
            "is_bundle": false,
            "builds": [],
            "kitchen_routing_category_entity_ids": [
                9999999999999999,
                9999999999999999
            ],
            "tax_group_entity_id": 9999999999999999,
            "prompt_for_quantity": false,
            "default_cost": 2,
            "kitchen_routing_type": "by_category",
            "product_tag_entity_ids": [],
            "product_category_entity_ids": [],
            "prompt_item_conversio_on_change": false,
            "entity_id": 9999999999999999,
            "item_type": "product",
            "nutritional_data": [
                {
                    "name": "Calories",
                    "value": 209.8,
                    "unit": "Count"
                }
            ],
            "include_on_item_count": true,
            "include_on_item_count_value": 1,
            "unit_type": "none",
            "restricted_order_source_entity_ids": [],
            "restrict_availability_order_source": false,
            "prices": [
                {
                    "_id": 9999999999999999,
                    "type": "standard",
                    "unit_price": 1.99,
                    "time_period_entity_ids": [],
                    "product_entity_id": 9999999999999999,
                    "product_id": "CrinkleChips",
                    "external_id": "",
                    "entity_id": 9999999999999999,
                    "time_periods": []
                }
            ],
            "child_prices": []
        }
    ],
    "total": 2,
    "page_count": 1,
    "current_page": 1,
    "page_size": 100
}

The response is an array of items. Each item in the array includes the following properties:

  • name - The name of the product. Use this as the display name for the menu.

  • images - The images property is an array of images. Each image includes a image_set_entity_id, tag, and source_url. Use this data to display the appropriate image of the product on the menu.

  • item_description - A short text description of the product. Use this as the description of the product on the menu.

  • entity_id - The entity_id of the product sent in the request. Use this value to verify that the menu displays the correct product details.

  • nutritional_data - An array of name-value pair representation of the contents of the product. Use this data to display nutrition information on the menu.

  • prices - An array of price information about the product. Use the unit_price property and the time_periods property to display the correct price on the menu.

  • is_bundle - A boolean that identifies whether an item is part of a bundle. Use the is_bundle property when creating menu displays to display only bundles by filtering out single items that are not available as bundles, or display bundles as up-sell items.

Modifiers

Modifiers give customers the option to add or remove elements from their meals. For example, a "no tomato" modifier could tell the kitchen to make a sandwich without a slice of tomato. When displaying a product, give customers the option to select appropriate modifiers. Use the call to the /product/current endpoint below to retrieve a list of modifiers for a particular product:

{{dm_url}}/product/current?entity_ids=["9999999999999999"]&include_entities=["modifier-collection","modifier-group","product"]&effective_date={{date}}T14:41:37.452Z

Include the entity_id of the product intended for display in the entity_ids array. Request the "modifier-collection" and the "modifier-group" data using the include_entities resource.

The sample response below shows the modifier details in the "modifier-collection" property:

{
    "items": [
        {
            "_id": "9999999999999999",
            "name": "Sm 1/4 CB Burger",
            "product_id": "Sm CB Burger",
            "product_type": "standard",
            "include_on_item_count": true,
            "include_on_item_count_value": 1,
            "item_type": "product",
            "unit_type": "none",
            "revenue_class": "default",
            "reporting_category": {
                "minor_reporting_category_entity_id": "9999999999999999",
                "major_reporting_category_entity_id": "9999999999999999"
            },
            "alt_item_name": "",
            "images": [],
            "item_description": "",
            "is_open_price": false,
            "is_bundle": true,
            "builds": [],
            "kitchen_routing_category_entity_ids": [],
            "tax_group_entity_id": "9999999999999999",
            "prompt_for_quantity": false,
            "default_cost": 0,
            "modifier_collection_entity_id": "9999999999999999",
            "kitchen_routing_type": "by_category",
            "variation_info": {
                "variations": [
                    {
                        "product_entity_id": "9999999999999999",
                        "variant_entity_id": "9999999999999999",
                        "product": {
                            "_id": "9999999999999999",
                            "name": "1/4 CB Burger",
                            "product_id": "CB Burger",
                            "entity_id": "9999999999999999"
                        }
                    },
                    {
                        "product_entity_id": "9999999999999999",
                        "variant_entity_id": "9999999999999999",
                        "product": {
                            "_id": "9999999999999999",
                            "name": "Sm 1/4 CB Burger",
                            "product_id": "Sm CB Burger",
                            "entity_id": "9999999999999999"
                        }
                    }
                ]
            },
            "product_tag_entity_ids": [
                "9999999999999999"
            ],
            "nutritional_data": [],
            "restricted_order_source_entity_ids": [],
            "restrict_availability_order_source": false,
            "bundle_components_entity_ids": [
                "9999999999999999",
                "9999999999999999",
                "9999999999999999"
            ],
            "product_category_entity_ids": [
                "9999999999999999"
            ],
            "prompt_item_conversio_on_change": false,
            "entity_id": "9999999999999999",
            "modifier_collection": {
                "_id": "9999999999999999",
                "name": "Sandwich Modifiers",
                "9999999999999999": false,
                "modifier_entity_ids": [
                    "9999999999999999",
                    "9999999999999999"
                ],
                "modifier_group_entity_ids": [
                    "9999999999999999",
                    "9999999999999999"
                ],
                "modifier_build_entity_ids": [],
                "entity_id": "9999999999999999",
                "modifier_groups": [
                    {
                        "_id": "9999999999999999",
                        "modifier_group_id": "CheeseOptions",
                        "name": "Cheese Options",
                        "minimum_to_select": 0,
                        "maximum_to_select": 2,
                        "required": false,
                        "print_modifiers_in_red": true,
                        "modifier_entity_ids": [
                            "9999999999999999",
                            "9999999999999999",
                            "9999999999999999",
                            "9999999999999999",
                            "9999999999999999",
                            "9999999999999999",
                            "9999999999999999"
                        ],
                        "entity_id": "9999999999999999",
                        "allow_bypass_modifier_group": false,
                        "modifiers": [
                            {
                                "_id": "9999999999999999",
                                "allow_quantity": false,
                                "always_print_in_red": true,
                                "caption": "",
                                "default_cost": 0,
                                "include_in_plain_builds": true,
                                "is_open_price": false,
                                "kitchen_routing_category_entity_ids": [
                                    "9999999999999999",
                                    "9999999999999999"
                                ],
                                "name": "Cheddar Cheese",
                                "product_id": "CheddarCheese",
                                "product_type": "modifier",
                                "prompt_for_quantity": false,
                                "reporting_category": {
                                    "minor_reporting_category_entity_id": "9999999999999999",
                                    "major_reporting_category_entity_id": "9999999999999999"
                                },
                                "tax_group_entity_id": "9999999999999999",
                                "revenue_class": "default",
                                "show_confirmaion_prompt": false,
                                "prompt_item_conversio_on_change": false,
                                "allow_plain_builds": false,
                                "kitchen_routing_type": "by_category",
                                "item_type": "product",
                                "entity_id": "9999999999999999",
                                "product_tag_entity_ids": [],
                                "tag_entity_ids": [],
                                "variation_info": {
                                    "variations": [
                                        {
                                            "variant_entity_id": "9999999999999999",
                                            "product_entity_id": "9999999999999999",
                                            "product": {
                                                "_id": "9999999999999999",
                                                "name": "Add Cheddar Cheese",
                                                "product_id": "CheddarCheese_add",
                                                "entity_id": "9999999999999999"
                                            }
                                        },
                                        {
                                            "variant_entity_id": "9999999999999999",
                                            "product_entity_id": "9999999999999999",
                                            "product": {
                                                "_id": "9999999999999999",
                                                "name": "No Cheddar Cheese",
                                                "product_id": "CheddarCheese_no",
                                                "entity_id": "9999999999999999"
                                            }
                                        },
                                        {
                                            "variant_entity_id": "9999999999999999",
                                            "product_entity_id": "9999999999999999",
                                            "product": {
                                                "_id": "9999999999999999",
                                                "name": "Double Cheddar Cheese",
                                                "product_id": "CheddarCheese_double",
                                                "entity_id": "9999999999999999"
                                            }
                                        },
                                        {
                                            "variant_entity_id": "9999999999999999",
                                            "product_entity_id": "9999999999999999",
                                            "product": {
                                                "_id": "9999999999999999",
                                                "name": "Lite Cheddar Cheese",
                                                "product_id": "CheddarCheese_lite",
                                                "entity_id": "9999999999999999"
                                            }
                                        },
                                        {
                                            "variant_entity_id": "9999999999999999",
                                            "product_entity_id": "9999999999999999",
                                            "product": {
                                                "_id": "9999999999999999",
                                                "name": "Extra Cheddar Cheese",
                                                "product_id": "CheddarCheese_extra",
                                                "entity_id": "9999999999999999"
                                            }
                                        },
                                        {
                                            "variant_entity_id": "9999999999999999",
                                            "product_entity_id": "9999999999999999",
                                            "product": {
                                                "_id": "9999999999999999",
                                                "name": "Sub Cheddar Cheese",
                                                "product_id": "CheddarCheese_sub",
                                                "entity_id": "9999999999999999"
                                            }
                                        },
                                        {
                                            "variant_entity_id": "9999999999999999",
                                            "product_entity_id": "9999999999999999",
                                            "product": {
                                                "_id": "9999999999999999",
                                                "name": "Small Cheddar Cheese",
                                                "product_id": "CheddarCheese_small",
                                                "entity_id": "9999999999999999"
                                            }
                                        },
                                        {
                                            "variant_entity_id": "9999999999999999",
                                            "product_entity_id": "9999999999999999",
                                            "product": {
                                                "_id": "9999999999999999",
                                                "name": "Medium Cheddar Cheese",
                                                "product_id": "CheddarCheese_medium",
                                                "entity_id": "9999999999999999"
                                            }
                                        },
                                        {
                                            "variant_entity_id": "9999999999999999",
                                            "product_entity_id": "9999999999999999",
                                            "product": {
                                                "_id": "9999999999999999",
                                                "name": "Large Cheddar Cheese",
                                                "product_id": "CheddarCheese_large",
                                                "entity_id": "9999999999999999"
                                            }
                                        }
                                    ]
                                }
                            }
                        ]                               
                    },
                    {
                        "_id": "9999999999999999",
                        "modifier_group_id": "ToppingsOptions",
                        "name": "Toppings",
                        "minimum_to_select": 0,
                        "maximum_to_select": 9999,
                        "required": false,
                        "print_modifiers_in_red": true,
                        "modifier_entity_ids": [
                            "9999999999999999",
                            "9999999999999999",
                            "9999999999999999",
                            "9999999999999999",
                            "9999999999999999",
                            "9999999999999999",
                            "9999999999999999",
                            "9999999999999999",
                            "9999999999999999",
                            "9999999999999999",
                            "9999999999999999",
                            "9999999999999999",
                            "9999999999999999",
                            "9999999999999999",
                            "9999999999999999"
                        ],
                        "entity_id": "9999999999999999",
                        "allow_bypass_modifier_group": false,
                        "modifiers": [
                            {
                                "_id": "9999999999999999",
                                "allow_quantity": false,
                                "always_print_in_red": true,
                                "caption": "",
                                "default_cost": 1,
                                "include_in_plain_builds": true,
                                "is_open_price": false,
                                "kitchen_routing_category_entity_ids": [
                                    "9999999999999999",
                                    "9999999999999999"
                                ],
                                "name": "Bacon",
                                "product_id": "Bacon",
                                "product_type": "modifier",
                                "prompt_for_quantity": false,
                                "reporting_category": {
                                    "minor_reporting_category_entity_id": "9999999999999999",
                                    "major_reporting_category_entity_id": "9999999999999999"
                                },
                                "tax_group_entity_id": "9999999999999999",
                                "revenue_class": "default",
                                "show_confirmaion_prompt": false,
                                "prompt_item_conversio_on_change": false,
                                "allow_plain_builds": false,
                                "kitchen_routing_type": "by_category",
                                "item_type": "product",
                                "entity_id": "9999999999999999",
                                "product_tag_entity_ids": [],
                                "tag_entity_ids": [],
                                "variation_info": {
                                    "variations": [
                                        {
                                            "variant_entity_id": "9999999999999999",
                                            "product_entity_id": "9999999999999999",
                                            "product": {
                                                "_id": "9999999999999999",
                                                "name": "Add Bacon",
                                                "product_id": "Bacon_add",
                                                "entity_id": "9999999999999999"
                                            }
                                        },
                                        {
                                            "variant_entity_id": "9999999999999999",
                                            "product_entity_id": "9999999999999999",
                                            "product": {
                                                "_id": "9999999999999999",
                                                "name": "No Bacon",
                                                "product_id": "Bacon_no",
                                                "entity_id": "9999999999999999"
                                            }
                                        },
                                        {
                                            "variant_entity_id": "9999999999999999",
                                            "product_entity_id": "9999999999999999",
                                            "product": {
                                                "_id": "9999999999999999",
                                                "name": "Extra Bacon",
                                                "product_id": "Bacon_extra",
                                                "entity_id": "9999999999999999"
                                            }
                                        },
                                        {
                                            "variant_entity_id": "9999999999999999",
                                            "product_entity_id": "9999999999999999",
                                            "product": {
                                                "_id": "9999999999999999",
                                                "name": "Sub Bacon",
                                                "product_id": "Bacon_sub",
                                                "entity_id": "9999999999999999"
                                            }
                                        },
                                        {
                                            "variant_entity_id": "9999999999999999",
                                            "product_entity_id": "9999999999999999",
                                            "product": {
                                                "_id": "9999999999999999",
                                                "name": "Double Bacon",
                                                "product_id": "Bacon_double",
                                                "entity_id": "9999999999999999"
                                            }
                                        },
                                        {
                                            "variant_entity_id": "9999999999999999",
                                            "product_entity_id": "9999999999999999",
                                            "product": {
                                                "_id": "9999999999999999",
                                                "name": "Small Bacon",
                                                "product_id": "Bacon_small",
                                                "entity_id": "9999999999999999"
                                            }
                                        }
                                    ]
                                }
                            },
                             
                        ]
                    }
                ],
                "modifiers": [
                    {
                        "_id": "9999999999999999",
                        "allow_quantity": false,
                        "always_print_in_red": true,
                        "caption": "",
                        "default_cost": 0,
                        "include_in_plain_builds": true,
                        "is_open_price": false,
                        "kitchen_routing_category_entity_ids": [
                            "9999999999999999",
                            "9999999999999999"
                        ],
                        "name": "Biscuit",
                        "product_id": "Biscuit",
                        "product_type": "modifier",
                        "prompt_for_quantity": false,
                        "reporting_category": {
                            "minor_reporting_category_entity_id": "9999999999999999",
                            "major_reporting_category_entity_id": "9999999999999999"
                        },
                        "tag_entity_ids": [],
                        "tax_group_entity_id": "9999999999999999",
                        "revenue_class": "default",
                        "show_confirmaion_prompt": false,
                        "prompt_item_conversio_on_change": false,
                        "allow_plain_builds": false,
                        "kitchen_routing_type": "by_category",
                        "item_type": "product",
                        "entity_id": "9999999999999999"
                    }
                ]
            }
        }
    ],
    "total": 1,
    "page_count": 1,
    "current_page": 1,
    "page_size": 100
}

The example above includes two modifier groups and one stand alone modifier: CheeseOptions, ToppingsOptions, and Biscuit. Each modifier group includes one or more modifier entities. A modifier entity describes the modifier, for example, "Cheddar Cheese", and includes the different variations that apply to that modifier. The "Add" variant applied to the "Cheddar Cheese" modifier, creates an "Add Cheddar Cheese" variation.

Bundles

Bundles link multiple items to create combos or specials. When a user displays a product, they can offer the combo as an option by displaying a "Make it a meal" button on the product page. If a customer clicks the button, display the bundle item options that the customer can select. For example, a user can give their customer the option to choose a beverage and a side. The product price updates automatically before the customer adds the combo meal to the cart.

When a user sends the request to /product/current they can request information about the available bundles by sending "bundle-component" and "product" in the include_entities array, as shown in the example below:

{{dm_url}}/product/current?entity_ids=["9999999999999999"]&include_entities=["bundle-component", "product"]&effective_date={{date}}T14:41:37.452Z

The resource returns an items array as a response. The array includes a bundle_components array, which lists the product types and entity IDs of the products that make up the bundle. The sample response message below includes the bundle_components array:

{
    "items": [
        {
            "_id": "9999999999999999",
            "name": "Sm 1/4 CB Burger",
            "product_id": "Sm CB Burger",
            "product_type": "standard",
            "include_on_item_count": true,
            "include_on_item_count_value": 1,
            "item_type": "product",
            "unit_type": "none",
            "revenue_class": "default",
            "reporting_category": {
                "minor_reporting_category_entity_id": "9999999999999999",
                "major_reporting_category_entity_id": "9999999999999999"
            },
            "alt_item_name": "",
            "images": [],
            "item_description": "",
            "is_open_price": false,
            "is_bundle": true,
            "builds": [],
            "kitchen_routing_category_entity_ids": [],
            "tax_group_entity_id": "9999999999999999",
            "prompt_for_quantity": false,
            "default_cost": 0,
            "modifier_collection_entity_id": "9999999999999999",
            "kitchen_routing_type": "by_category",
            "variation_info": {
                "variations": [
                    {
                        "product_entity_id": "9999999999999999",
                        "variant_entity_id": "9999999999999999",
                        "product": {
                            "_id": "9999999999999999",
                            "name": "1/4 CB Burger",
                            "product_id": "CB Burger",
                            "entity_id": "9999999999999999"
                        }
                    },
                    {
                        "product_entity_id": "9999999999999999",
                        "variant_entity_id": "9999999999999999",
                        "product": {
                            "_id": "9999999999999999",
                            "name": "Sm 1/4 CB Burger",
                            "product_id": "Sm CB Burger",
                            "entity_id": "9999999999999999"
                        }
                    }
                ]
            },
            "product_tag_entity_ids": [
                "9999999999999999"
            ],
            "nutritional_data": [],
            "restricted_order_source_entity_ids": [],
            "restrict_availability_order_source": false,
            "bundle_components_entity_ids": [
                "9999999999999999",
                "9999999999999999",
                "9999999999999999"
            ],
            "product_category_entity_ids": [
                "9999999999999999"
            ],
            "prompt_item_conversio_on_change": false,
            "entity_id": "9999999999999999",
            "bundle_components": [
                {
                    "_id": "9999999999999999",
                    "sort_order": 0,
                    "name": "Burger",
                    "is_enabled": true,
                    "component_type": "group",
                    "product_choices_entity_ids": [
                        "9999999999999999"
                    ],
                    "allowed_destination_entity_ids": [
                        "9999999999999999",
                        "9999999999999999",
                        "9999999999999999",
                        "9999999999999999"
                    ],
                    "default_products": [
                        {
                            "default_quantity": 1,
                            "product_entity_id": "9999999999999999"
                        }
                    ],
                    "minimum_quantity": 1,
                    "maximum_quantity": 1,
                    "default_quantity": 1,
                    "choice_label": "",
                    "pricing_change_action": "replace",
                    "entity_id": "9999999999999999"
                },
                {
                    "_id": "9999999999999999",
                    "sort_order": 1,
                    "name": "Sides",
                    "is_enabled": true,
                    "component_type": "group",
                    "product_choices_entity_ids": [
                        "9999999999999999",
                        "9999999999999999",
                        "9999999999999999"
                    ],
                    "allowed_destination_entity_ids": [
                        "9999999999999999",
                        "9999999999999999",
                        "9999999999999999",
                        "9999999999999999"
                    ],
                    "default_products": [
                        {
                            "product_entity_id": "9999999999999999",
                            "default_quantity": 1
                        }
                    ],
                    "minimum_quantity": 1,
                    "maximum_quantity": 1,
                    "default_quantity": 1,
                    "choice_label": "",
                    "pricing_change_action": "replace",
                    "entity_id": "9999999999999999"
                },
                {
                    "_id": "9999999999999999",
                    "sort_order": 2,
                    "name": "Drinks",
                    "is_enabled": true,
                    "component_type": "group",
                    "product_choices_entity_ids": [
                        "9999999999999999",
                        "9999999999999999",
                        "9999999999999999",
                        "9999999999999999",
                        "9999999999999999",
                        "9999999999999999",
                        "9999999999999999",
                        "9999999999999999",
                        "9999999999999999",
                        "9999999999999999"
                    ],
                    "allowed_destination_entity_ids": [
                        "9999999999999999",
                        "9999999999999999",
                        "9999999999999999",
                        "9999999999999999"
                    ],
                    "default_products": [],
                    "minimum_quantity": 1,
                    "maximum_quantity": 1,
                    "default_quantity": 1,
                    "choice_label": "",
                    "pricing_change_action": "replace",
                    "entity_id": "9999999999999999"
                }
            ]
        }
    ],
    "total": 1,
    "page_count": 1,
    "current_page": 1,
    "page_size": 100
}

The response above describes a bundle that consists of three elements: Burger, Drinks, and Sides. Each bundle component includes a "name" property, which users can use to describe the combo on their menu. Each bundle_component includes an array of "product_choice_entity_ids" that lists each product that can be added to the combo. The example above lists 10 entity IDs for drink choices. Use these entity IDs to display the options for drinks or sides to customers.

Order Creation

Use the Online Ordering API to create and manage orders. See the Creating, Submitting, and Modifying Online Orders using Online Ordering API page for details about creating orders. The Online Ordering API backend calculates prices and taxes, and sends the order to the correct store for preparation.

Resource Definitions

The following topics define a set of Data Management resources that are useful for building menus:

More information on these resources can be found in the Data Management API topics.

Bundle Component

The Bundle Component resource returns an items array that contains one or more bundle definitions. Each bundle definition includes the bundle component group name (e.g. "Drinks"), the product_entity_ids of the products in that group (e.g. Pepsi), and the entity_ids of the bundles that group is part of (e.g., Sandwich Combos).

The example below shows a sample GET request to the /bundle-component endpoint:

{{dm_url}}/bundle-component/current/?effective_date={{date}}T00:00:00.000Z

The example below shows a sample response from the Bundle Component resource:

{
    "items": [
        {
            "_id": "9999999999999999",
            "sort_order": 0,
            "name": "Drinks",
            "is_enabled": true,
            "component_type": "group",
            "product_choices_entity_ids": [
                "9999999999999999",
                "9999999999999999",
                "9999999999999999",
                "9999999999999999",
                "9999999999999999"
            ],
            "allowed_destination_entity_ids": [
                "9999999999999999",
                "9999999999999999",
                "9999999999999999",
                "9999999999999999"
            ],
            "default_products": [
                {
                    "product_entity_id": "9999999999999999",
                    "default_quantity": 1
                },
                {
                    "product_entity_id": "9999999999999999",
                    "default_quantity": 1
                },
                {
                    "product_entity_id": "9999999999999999",
                    "default_quantity": 1
                },
                {
                    "product_entity_id": "9999999999999999",
                    "default_quantity": 1
                },
                {
                    "product_entity_id": "9999999999999999",
                    "default_quantity": 1
                }
            ],
            "minimum_quantity": 0,
            "maximum_quantity": 1,
            "default_quantity": 1,
            "choice_label": "",
            "pricing_change_action": "replace",
            "entity_id": "9999999999999999"
        }
    ],
    "total": 1,
    "page_count": 1,
    "current_page": 1,
    "page_size": 100
}

To use the Bundle Component resource, send a GET request to the /bundle-component/current endpoint, defined in detail here.

GET /bundle-component/current

Request Parameters

In

Field Name

Type

Required

Description

header

X-COMPANY-ID

string

Yes

The identifier of the company to manage data for

header

X-SITE-IDs

[ csv of string ]

No

The unique identifiers (UIDs) of the site to manage data for

query

$filter

string

no

A filter expression in OData v4 format

query

$top

int32

No

The maximum documents to return

query

$skip

int32

No

The documents to skip before returning

query

$orderby

string

No

An order by expression in OData v4 format

query

effective_date

string

Yes

The date and time to query against

query

entity_ids

[ string ]

No

An array of entity identifiers

query

include_nested

boolean

No

Hydrates-related nested objects when returning a result (For example, populate a menu with menu categories and menu groups)

query

include_mappings

boolean

No

Include the mappings for the document

query

include_mappings_for_entities

[ csv of string ]

No

Specifies entity types for which to add mappings (For example, include_mappings_for_entities_param='menu-category' for menu call - add mappings to menu categories)

query

include_entities

[ csv of string ]

No

Specifies entity_types to be populated by nesting mechanism (For example, include_entities=['menu-category'] for menu call - populate a menu with menu categories)

query

include_audit

boolean

No

Adds audit fields to each document when returning a result (is_active, is_master, created_at, created_by, updated_at, updated_by)

query

include_inactive

boolean

No

Includes the documents that are inactive for the current sites

Success Schema

Field Name

Type

Description

total

integer

items

[ array, object ]

Stores the definition of a bundle component

name

string

The name of the bundle component

is_enabled

boolean

Decide if the component is available for this bundle

component_type

string

The type of Bundle Component. The possible values are "group" (default) or "item."

sort_order

integer

The order this component appears in

minimum_quantity

integer

The minimum quantity of this component. The default is 0.

default_quantity

integer

The default quantity of this component. The default is 1.

maximum_quantity

integer

The maximum quantity of this component. The default is 0.

choice_label

string

An optional label for the on-screen product choices

product_choices_entity_ids

[ string, object ]

The available choices for this component

default_products

[ array, object ]

The products to be used as defaults

default_quantity

integer

The default quantity of this component

product_entity_id

string, object

The object identifier of one of the member products to use as a default

pricing_change_action

string

The type of price change to apply. The possible values are "off" (default), "replace," or "adjust."

allowed_destination_entity_ids

[ string, object ]

Choose the destinations where this component is available

_id

string

The auto-assigned system document identifier

company_id

string

The identifier of the company that owns the document

entity_id

string

The auto-assigned UID of the entity, set on creation. All future versions of the entity share the same entity_id.

is_master

boolean

is_active

boolean

Marking property is the essence of active documents. Sets in true by default.

external_id

string

created_by

string

The identifier of the OPRA user or site that created the document

updated_by

string

The identifier of the OPRA user or site that last updated the document

created_at

string

The date and time (date-time) the document was created

updated_at

string

The last date and time the document was updated

Response Codes

Response

Description

200 OK

Success

400 Bad Request

Bad request, for more information look at body error

403 Forbidden

Invalid token

404 Not Found

Not found

422 Unprocessable Entity

Unprocessable error

Default

Unexpected error

Discount Definition

The Discount Definition resource returns a items array that contains one or more discount definitions.

The example below shows a sample request to the /discount-definition endpoint:

{{dm_url}}/discount-definition/current/?effective_date={{date}}T00:00:00.000Z&entity_ids=['9999999999999999']

The example below shows a sample response from the Discount Definition resource:

{
    "items": [
        {
            "_id": "9999999999999999",
            "name": "Hero Discount",
            "code": "Hero Discount",
            "type": "discount",
            "calc": {
                "type": "fixed_rate",
                "value": 10,
                "max_value": 0
            },
            "apply_type": "manual",
            "use_loyalty": false,
            "where_available": [
                "order",
                "tender"
            ],
            "exclusive": [],
            "exclude_modifiers": true,
            "exclude_children": true,
            "customer_info_prompts": [],
            "permissions": {
                "restrict_by_roles": false
            },
            "entity_id": "9999999999999999"
        }
    ],
    "total": 1,
    "page_count": 1,
    "current_page": 1,
    "page_size": 100
}

The Discount Definition resource is defined in detail here.

GET /discount-definition/current

Request Parameters

In

Field Name

Type

Required

Description

header

X-COMPANY-ID

string

Yes

The identifier of the company to manage data for

header

X-SITE-IDs

[ csv of string ]

No

The unique identifiers (UIDs) of the site to manage data for

query

$filter

string

no

A filter expression in OData v4 format

query

$top

int32

No

The maximum documents to return

query

$skip

int32

No

The documents to skip before returning

query

$orderby

string

No

An order by expression in OData v4 format

query

effective_date

string

Yes

The date and time to query against

query

entity_ids

[ string ]

No

An array of entity identifiers

query

include_nested

boolean

No

Hydrates-related nested objects when returning a result (For example, populate a menu with menu categories and menu groups)

query

include_mappings

boolean

No

Include the mappings for the document

query

include_mappings_for_entities

[ csv of string ]

No

Specifies entity types for which to add mappings (For example, include_mappings_for_entities_param='menu-category' for menu call - add mappings to menu categories)

query

include_entities

[ csv of string ]

No

Specifies entity_types to be populated by nesting mechanism (For example, include_entities=['menu-category'] for menu call - populate a menu with menu categories)

query

include_audit

boolean

No

Adds audit fields to each document when returning a result (is_active, is_master, created_at, created_by, updated_at, updated_by)

query

include_inactive

boolean

No

Includes the documents that are inactive for the current sites

Success Schema

Field Name

Type

Description

total

integer

items

[ array, object ]

name

string

The name of the discount

active

boolean

The flag that indicates if the discount is active or not

type

string

The type of the discount. The possible values are "discount," "comp," "promo," "coupon," or "loyalty."

code

string

User friendly and memorable discount code

use_loyalty

boolean

This flag is used by the Mobile API and other integrating systems to indicate that this specific discount needs to be processed through the loyalty engine

calc

string, object

The discount calculation type.

The possible values are "percentage," "fixed_amt," "variable_percentage," "variable_amt," or "fixed_price."

fixed_amt = the value in the value field is a fixed discount amount

variable_amt = the value in value field is variable amount.

fixed_rate = the value in the value field is fixed percentage

variable_rate = the value in the value field is variable percentage

alter_price = the value in the value field is alter price (alter price calculation will discount the qualifying items in such a manner that the net price of the item will match the alter_price value. For example, get two sandwiches for $2.00 (alter_price). If the original price of each sandwich is $1.50, $.50 is applied to each sandwich so that the net price of the two items will be $2.00).

value

number

The examples are fixed amount, variable amount, fixed percentage, variable percentage, and alter price value. See the calc description for more details.

max_value

number

The calc_value cap. The calc value (variable_amt, variable_rate) cannot exceed the max_value.

apply_type

string

The type of the discount. The possible values are "manual" or "automatic."

apply_to_liability_items

boolean

The flag that indicates whether to apply to liability items or not

where_available

[ string ]

Where the discount is available to apply. For example, at the order entry screen only, at the tender screen only, or available both at the order entry screen and tender screen. The possible values are "order_entry" or "tender."

exclusive

[ string, array ]

Indicates if the discount is exclusive to other discounts. The possible values are "after" or "before."

"after" = no discount is allowed after this discount

"before" = discount is not allowed if the item or order has discount(s)

max_discount_amount

number

The maximum discount amount limit for the discount

sort_price

string

The possible values are "lowest," "highest," or "median."

"lowest" = discount lowest priced item if more than one item qualifies for the discount

"highest" = discount highest priced item if more than one item qualifies for the discount

"median" = discount median priced item if more than one item qualifies for the discount

customer_info_prompts

[ array, string ]

The customer information prompts for specific discount types, such as the student's or firefighter's badge (object) name (string)

name

object, string

The name of the customer information prompt

prompt

string

available

object

Defines the availability of the discount

start_date

string

The discount start date and time (date-time)

end_date

string

The expiry date and time (date-time) of the discount

available_days

[ array, string ]

The days and times when the discount is available in a week.

(object) days (array) (optional)

(string: sun, mon, tue, wed, thu, fri, sat) array of week days, e.g., sun, mon, tue, wed, thu, fri, sat.

days

[ array, string ]

The array of the week days. For example, sun, mon, tue, wed, thu, fri, or sat.

start_time

string

The start time of the discount for a given week day(s)

end_time

string

The expiry time of the discount for a given week day(s)

priority

integer

The priority of the discount rule

exclude_children

boolean

The flag that indicates whether or not to exclude child item prices in the discount calculation if the parent item qualifies for the discounts

apply_post_tax

boolean

This discount should be applied after all applicable taxes have been applied to the subtotal

exclude_modifiers

boolean

The flag that indicates whether or not to exclude modifier prices in the discount calculation if the parent item qualifies for the discount

eval_criteria

object

The discount evaluation criteria.

[ rules ] (object) rule_id (integer) rule identifier

rules

[ array, object ]

rule_id

integer

The rule identifier

product_ids

[ string ]

The array of the item descriptions

destinations

unspecified

total_on

string

The quantity.

Which property of the parent items to total. The possible values are "qty," "weight," or "price."

operator

string

The conditional sign ( =, <, >, <=, >= )

target_value

number

The target value to compare after totaling the item quantity, weight, or price

expression

string

The possible values are "AND" or "OR."

The expression formed between the rules (For example, 1 AND 2 OR 3 , where 1,2,3 are rule IDs).

apply_criteria

object

Apply criteria for the discount when the discount evaluation criteria is met

product_ids

[ string, object ]

The array of the item descriptions

repeat_mode

string

The possible values are "none," "item," "unit," or "unit_per_item"

quantity

integer

The quantity

repeat

unspecified

print_options

object

The discount print options

receipt_text

string

The discount text to print on the receipt

item_line

boolean

The print discount details under each qualifying item, if enabled

order_line

boolean

The print discount details at the bottom of the receipt below subtotal, if enabled

customer_copies

integer

The number of discount copies to print

store_copies

integer

The number of discount store copies to print

signature_line

boolean

The print signature line on the store copy

permissions

object

This property contains access control definitions

restrict_by_roles

boolean

Restrict discounts by specific roles

_id

string

The auto-assigned system document identifier

company_id

string

The identifier of the company that owns the document

entity_id

string

The auto-assigned UID of the entity, set on creation. All future versions of the entity share the same entity_id.

is_master

boolean

is_active

boolean

Marking property is the essence of active documents. Sets in true by default.

external_id

string

created_by

string

The identifier of the OPRA user or site that created the document

updated_by

string

The identifier of the OPRA user or site that last updated the document

created_at

string

The date and time the document was created

updated_at

string

The last date and time the document was updated

Response Codes

Response

Description

200 OK

Success

400 Bad Request

Bad request, for more information look at body error

403 Forbidden

Invalid token

404 Not Found

Not found

422 Unprocessable Entity

Unprocessable error

Default

Unexpected error

Modifier Collection

The Modifier Collection resource returns an items array that contains definitions for one or more modifier collections. Each modifier collection includes the name of the collection (e.g., "Sandwich Modifiers"), and a list of the product_entity_ids of the specific modifiers that are part of the collection.

The example below shows a sample GET request to the /modifier-collection endpoint:

{{dm_url}}/modifier-collection/current/?effective_date={{date}}T00:00:00.000Z

The example below shows a sample response from the Modifier Collection resource:

{
    "items": [
        {
            "_id": "9999999999999999",
            "name": "Sandwich Modifiers",
            "9999999999999999": false,
            "modifier_entity_ids": [
                "9999999999999999",
                "9999999999999999"
            ],
            "modifier_group_entity_ids": [
                "9999999999999999",
                "9999999999999999"
            ],
            "modifier_build_entity_ids": [],
            "entity_id": "9999999999999999"
        },
        {
            "_id": "9999999999999999",
            "name": "Drink Modifiers",
            "9999999999999999": false,
            "modifier_entity_ids": [],
            "modifier_group_entity_ids": [
                "9999999999999999"
            ],
            "modifier_build_entity_ids": [],
            "entity_id": "9999999999999999"
        }
    ],
    "total": 2,
    "page_count": 1,
    "current_page": 1,
    "page_size": 100
}

To use the Modifier Collection resource, send a GET request to the /modifier-collection/current endpoint, defined in detail here.

GET /modifier-collection/current

Request Parameters

In

Field Name

Type

Required

Description

header

X-COMPANY-ID

string

Yes

The identifier of the company to manage data for

header

X-SITE-IDs

[ csv of string ]

No

The unique identifiers (UIDs) of the site to manage data for

query

$filter

string

no

A filter expression in OData v4 format

query

$top

int32

No

The maximum documents to return

query

$skip

int32

No

The documents to skip before returning

query

$orderby

string

No

An order by expression in OData v4 format

query

effective_date

string

Yes

The date and time to query against

query

entity_ids

[ string ]

No

An array of entity identifiers

query

include_nested

boolean

No

Hydrates-related nested objects when returning a result (For example, populate a menu with menu categories and menu groups)

query

include_mappings

boolean

No

Include the mappings for the document

query

include_mappings_for_entities

[ csv of string ]

No

Specifies entity types for which to add mappings (For example, include_mappings_for_entities_param='menu-category' for menu call - add mappings to menu categories)

query

include_entities

[ csv of string ]

No

Specifies entity_types to be populated by nesting mechanism (For example, include_entities=['menu-category'] for menu call - populate a menu with menu categories)

query

include_audit

boolean

No

Adds audit fields to each document when returning a result (is_active, is_master, created_at, created_by, updated_at, updated_by)

query

include_inactive

boolean

No

Includes the documents that are inactive for the current sites

Success Schema

Field Name

Type

Description

total

integer

items

[ array, object ]

Stores the definition of a Modifier Collection

name

string

The name of the Modifier Collection

prompt_on_order_item_add

boolean

The flag that indicates whether or not the collection is prompted for after the parent product was added to an order

modifier_entity_ids

[ array ]

The array of product entity identifiers (string, object)

modifier_group_entity_ids

[ array]

The array of modifier group entity identifiers which belong to this collection (string, object)

modifier_build_entity_ids

[ string, object ]

The array of modifier build entity identifiers which belong to this collection

_id

string

The auto-assigned system document identifier

company_id

string

The identifier of the company that owns the document

entity_id

string

The auto-assigned UID of the entity, set on creation. All future versions of the entity share the same entity_id.

is_master

boolean

is_active

boolean

Marking property is the essence of active documents. Sets in true by default.

external_id

string

created_by

string

The identifier of the OPRA user or site that created the document

updated_by

string

The identifier of the OPRA user or site that last updated the document

created_at

string

The date and time the document was created

updated_at

string

The last date and time the document was updated

Response Codes

Response

Description

200 OK

Success

404 Not Found

Not found

Default

Unexpected error

Modifier Group

Modifier Groups define the ways that orders can be customized. The Modifier Group resource returns an items array that contains definitions for one or more modifier groups. Each modifier group includes the name of the group (e.g. "Toppings") and a list of the modifier_entity_ids of the specific modifiers that are part of the group.

The example below shows a sample GET request to the /modifier-group endpoint:

{{dm_url}}/modifier-group/current/?effective_date={{date}}T00:00:00.000Z

The example below shows a sample response from the Modifier Group resource:

{
    "items": [
        {
            "_id": "9999999999999999",
            "modifier_group_id": "ToppingsOptions",
            "name": "Toppings",
            "minimum_to_select": 0,
            "maximum_to_select": 9999,
            "required": false,
            "print_modifiers_in_red": true,
            "modifier_entity_ids": [
                "9999999999999999",
                "9999999999999999",
                "9999999999999999",
                "9999999999999999",
                "9999999999999999",
                "9999999999999999",
                "9999999999999999",
                "9999999999999999",
                "9999999999999999",
                "9999999999999999",
                "9999999999999999",
                "9999999999999999",
                "9999999999999999",
                "9999999999999999",
                "9999999999999999"
            ],
            "entity_id": "9999999999999999",
            "allow_bypass_modifier_group": false
        }
    ],
    "total": 1,
    "page_count": 1,
    "current_page": 1,
    "page_size": 100
}

To use the Modifier Group resource, send a GET request to the /modifier-group/current endpoint, defined in detail here.

GET /modifier-group/current

Request Parameters

In

Field Name

Type

Required

Description

header

X-COMPANY-ID

string

Yes

The identifier of the company to manage data for

header

X-SITE-IDs

[ csv of string ]

No

The unique identifiers (UIDs) of the site to manage data for

query

$filter

string

no

A filter expression in OData v4 format

query

$top

int32

No

The maximum documents to return

query

$skip

int32

No

The documents to skip before returning

query

$orderby

string

No

An order by expression in OData v4 format

query

effective_date

string

Yes

The date and time to query against

query

entity_ids

[ string ]

No

An array of entity identifiers

query

include_nested

boolean

No

Hydrates-related nested objects when returning a result (For example, populate a menu with menu categories and menu groups)

query

include_mappings

boolean

No

Include the mappings for the document

query

include_mappings_for_entities

[ csv of string ]

No

Specifies entity types for which to add mappings (For example, include_mappings_for_entities_param='menu-category' for menu call - add mappings to menu categories)

query

include_entities

[ csv of string ]

No

Specifies entity_types to be populated by nesting mechanism (For example, include_entities=['menu-category'] for menu call - populate a menu with menu categories)

query

include_audit

boolean

No

Adds audit fields to each document when returning a result (is_active, is_master, created_at, created_by, updated_at, updated_by)

query

include_inactive

boolean

No

Includes the documents that are inactive for the current sites

Success Schema

Field Name

Type

Description

total

integer

items

[ array, object ]

Stores the definition of a Modifier Group

modifier_group_id

string

The user defined identifier for this Modifier Group

name

string

The name of the Modifier Group

minimum_to_select

number

The minimum number of modifiers that must be selected from this group

maximum_to_select

number

The maximum number of modifiers that can be selected from this group

allow_bypass_modifier_group

boolean

When checked, this allows users with the Order.Modifier.BypassForced permission enabled to bypass this modifier group

required

boolean

Whether or not this modifier group is required to have a selection made

print_modifiers_in_red

boolean

Whether or not modifiers from this group should be displayed in red

modifier_entity_ids

[ array ]

The array of product entity identifiers (string, object)

_id

string

The auto-assigned system document identifier

company_id

string

The identifier of the company that owns the document

entity_id

string

The auto-assigned UID of the entity, set on creation. All future versions of the entity share the same entity_id.

is_master

boolean

is_active

boolean

Marking property is the essence of active documents. Sets in true by default.

external_id

string

created_by

string

The identifier of the OPRA user or site that created the document

updated_by

string

The identifier of the OPRA user or site that last updated the document

created_at

string

The date and time the document was created

updated_at

string

The last date and time the document was updated

Response Codes

Response

Description

200 OK

Success

404 Not Found

Not found

Default

Unexpected error

Modifier Build

A Modifier Build is a group of modifiers that are frequently added to an item together. For example, "The Works" could be a modifier build that adds all the available toppings to a sandwich. The Modifier Build resource returns an items array that contains definitions for one or more modifier builds. Each modifier build includes the name of the build (e.g., "Sandwich Modifiers"), and a list of the entity_ids of the specific modifiers that are part of the build.

The example below shows a sample GET request to the /modifier-collection endpoint:

{{dm_url}}/modifier-build/current/?effective_date={{date}}T00:00:00.000Z

To use the Modifier Build resource, send a GET request to the /modifier-build/current endpoint, defined in detail here.

GET /modifier-build/current

Request Parameters

In

Field Name

Type

Required

Description

header

X-COMPANY-ID

string

Yes

The identifier of the company to manage data for

header

X-SITE-IDs

[ csv of string ]

No

The unique identifiers (UIDs) of the site to manage data for

query

$filter

string

no

A filter expression in OData v4 format

query

$top

int32

No

The maximum documents to return

query

$skip

int32

No

The documents to skip before returning

query

$orderby

string

No

An order by expression in OData v4 format

query

effective_date

string

Yes

The date and time to query against

query

entity_ids

[ string ]

No

An array of entity identifiers

query

include_nested

boolean

No

Hydrates-related nested objects when returning a result (For example, populate a menu with menu categories and menu groups)

query

include_mappings

boolean

No

Include the mappings for the document

query

include_mappings_for_entities

[ csv of string ]

No

Specifies entity types for which to add mappings (For example, include_mappings_for_entities_param='menu-category' for menu call - add mappings to menu categories)

query

include_entities

[ csv of string ]

No

Specifies entity_types to be populated by nesting mechanism (For example, include_entities=['menu-category'] for menu call - populate a menu with menu categories)

query

include_audit

boolean

No

Adds audit fields to each document when returning a result (is_active, is_master, created_at, created_by, updated_at, updated_by)

query

include_inactive

boolean

No

Includes the documents that are inactive for the current sites

Success Schema

Field Name

Type

Description

total

integer

items

[ array, object ]

Stores the definition of a Modifier Build

name

string

The name of the build. For example, "Default" or "The Works."

is_default

boolean

product_entity_ids

[ array ]

The array of product entity identifiers (string, object)

_id

string

The auto-assigned system document identifier

company_id

string

The identifier of the company that owns the document

entity_id

string

The auto-assigned UID of the entity, set on creation. All future versions of the entity share the same entity_id.

is_master

boolean

is_active

boolean

Marking property is the essence of active documents. Sets in true by default.

external_id

string

created_by

string

The identifier of the OPRA user or site that created the document

updated_by

string

The identifier of the OPRA user or site that last updated the document

created_at

string

The date and time the document was created

updated_at

string

The last date and time the document was updated

Response Codes

Response

Description

200 OK

Success

404 Not Found

Not found

Default

Unexpected error

Order Destination

Order destinations define the ways that restaurants can deliver orders to the customers: for example,  "Dine In" or "Carry Out". The Order Destination resource returns an items array that contains definitions for one or more order destinations. Each order destination definition includes the name of the order destination (e.g., "Drive Through") and a set of relevant attributes, including receipt printing colors.

The example below shows a sample GET request to the /order-destination endpoint:

{{dm_url}}/order-destination/current/?effective_date={{date}}T00:00:00.000Z

The example below shows a sample response from the Order Destination resource:

{
    "items": [
        {
            "_id": "9999999999999999",
            "entity_id": "9999999999999999",
            "name": "Carry Out",
            "short_name": "OUT",
            "id": "carry-out",
            "text_color": "#fff",
            "background_color": "#098100",
            "required_customer_info": [],
            "optional_customer_info": [],
            "segment_name": "tray"
        },
        {
            "_id": "9999999999999999",
            "entity_id": "9999999999999999",
            "name": "Dine In",
            "short_name": "IN",
            "id": "dine-in",
            "text_color": "#fff",
            "background_color": "#000093",
            "required_customer_info": [],
            "optional_customer_info": [],
            "segment_name": "tray"
        },
        {
            "_id": "9999999999999999",
            "entity_id": "9999999999999999",
            "name": "Drive Thru",
            "short_name": "DT",
            "id": "drive thru",
            "text_color": "#fff",
            "background_color": "#440087",
            "required_customer_info": [],
            "optional_customer_info": [],
            "segment_name": "tray"
        },
        {
            "_id": "9999999999999999",
            "entity_id": "9999999999999999",
            "name": "Delivery",
            "short_name": "DLV",
            "id": "delivery",
            "text_color": "#fff",
            "background_color": "#a16100",
            "required_customer_info": [
                "address1",
                "last_name",
                "phone_cell",
                "city",
                "state",
                "zip_code",
                "delivery_date_time"
            ],
            "optional_customer_info": [
                "address2",
                "first_name",
                "email"
            ],
            "segment_name": "tray"
        }
    ],
    "total": 4,
    "page_count": 1,
    "current_page": 1,
    "page_size": 100
}

To use the Order Destination resource, send a GET request to the /order-destination/current endpoint, defined in detail here.

GET /order-destination/current

Request Parameters

In

Field Name

Type

Required

Description

header

X-COMPANY-ID

string

Yes

The identifier of the company to manage data for

header

X-SITE-IDs

[ csv of string ]

No

The unique identifiers (UIDs) of the site to manage data for

query

$filter

string

no

A filter expression in OData v4 format

query

$top

int32

No

The maximum documents to return

query

$skip

int32

No

The documents to skip before returning

query

$orderby

string

No

An order by expression in OData v4 format

query

effective_date

string

Yes

The date and time to query against

query

entity_ids

[ string ]

No

An array of entity identifiers

query

include_nested

boolean

No

Hydrates-related nested objects when returning a result (For example, populate a menu with menu categories and menu groups)

query

include_mappings

boolean

No

Include the mappings for the document

query

include_mappings_for_entities

[ csv of string ]

No

Specifies entity types for which to add mappings (For example, include_mappings_for_entities_param='menu-category' for menu call - add mappings to menu categories)

query

include_entities

[ csv of string ]

No

Specifies entity_types to be populated by nesting mechanism (For example, include_entities=['menu-category'] for menu call - populate a menu with menu categories)

query

include_audit

boolean

No

Adds audit fields to each document when returning a result (is_active, is_master, created_at, created_by, updated_at, updated_by)

query

include_inactive

boolean

No

Includes the documents that are inactive for the current sites

Success Schema

Field Name

Type

Description

total

integer

items

[ array, object ]

Stores the definition of an Order Destination

name

string

The name of the destination (For example, "Carry Out")

short_name

string

The short name of the destination (For example, "CAOU")

id

string

The user-defined identifier of the destination (For example, "carry-out")

background_color

string, hex

The hexadecimal value of the color

text_color

string, hex

The hexadecimal value of the color

required_customer_info

[ array ]

The required customer fields to capture for this order destination:

(string: address1, address2, city, delivery_date_time, email, first_name, last_name, phone_cell, phone_home, phone_work, pickup_date_time, state, table_tent, zip_code, country)

optional_customer_info

[ array ]

The optional customer fields to capture for this order destination:

(string: address1, address2, city, delivery_date_time, email, first_name, last_name, phone_cell, phone_home, phone_work, pickup_date_time, state, table_tent, zip_code, country)

segment_name

string

The name of the order segment.

The possible values are "tray," "seat," or "bag."

consumption_type

string

The consumption type.

The possible values are "OnPremises" or "OffPremises."

default_taxable_destination

boolean

Configure the default taxable destination

_id

string

The auto-assigned system document identifier

company_id

string

The identifier of the company that owns the document

entity_id

string

The auto-assigned UID of the entity, set on creation. All future versions of the entity share the same entity_id.

is_master

boolean

is_active

boolean

Marking property is the essence of active documents. Sets in true by default.

external_id

string

created_by

string

The identifier of the OPRA user or site that created the document

updated_by

string

The identifier of the OPRA user or site that last updated the document

created_at

string

The date and time the document was created

updated_at

string

The last date and time the document was updated

Response Codes

Response

Description

200 OK

Success

404 Not Found

Not found

Default

Unexpected error

Order Source

Order sources define the ways that customers can place orders: for example,  "Web" or "Phone". The Order Source resource returns an items array that contains definitions for one or more order sources. Each order source definition includes the name of the order source (e.g. "Mobile") and a set of relevant attributes.

The example below shows a sample GET request to the /order-source endpoint:

{{dm_url}}/order-source/current/?effective_date={{date}}T00:00:00.000Z

The example below shows a sample response from the Order Source resource:

{
    "items": [
        {
            "_id": "9999999999999999",
            "name": "Web",
            "order_source_id": "Web",
            "restrict_re_tendering": false,
            "entity_id": "9999999999999999"
        },
        {
            "_id": "9999999999999999",
            "name": "Mobile",
            "order_source_id": "Mobile",
            "restrict_re_tendering": false,
            "entity_id": "9999999999999999"
        }
    ],
    "total": 2,
    "page_count": 1,
    "current_page": 1,
    "page_size": 100
}

To use the Order Source resource, send a GET request to the /order-source/current endpoint, defined in detail here.

GET /order-source/current

Request Parameters

In

Field Name

Type

Required

Description

header

X-COMPANY-ID

string

Yes

The identifier of the company to manage data for

header

X-SITE-IDs

[ csv of string ]

No

The unique identifiers (UIDs) of the site to manage data for

query

$filter

string

no

A filter expression in OData v4 format

query

$top

int32

No

The maximum documents to return

query

$skip

int32

No

The documents to skip before returning

query

$orderby

string

No

An order by expression in OData v4 format

query

effective_date

string

Yes

The date and time to query against

query

entity_ids

[ string ]

No

An array of entity identifiers

query

include_nested

boolean

No

Hydrates-related nested objects when returning a result (For example, populate a menu with menu categories and menu groups)

query

include_mappings

boolean

No

Include the mappings for the document

query

include_mappings_for_entities

[ csv of string ]

No

Specifies entity types for which to add mappings (For example, include_mappings_for_entities_param='menu-category' for menu call - add mappings to menu categories)

query

include_entities

[ csv of string ]

No

Specifies entity_types to be populated by nesting mechanism (For example, include_entities=['menu-category'] for menu call - populate a menu with menu categories)

query

include_audit

boolean

No

Adds audit fields to each document when returning a result (is_active, is_master, created_at, created_by, updated_at, updated_by)

query

include_inactive

boolean

No

Includes the documents that are inactive for the current sites

Success Schema

Field Name

Type

Description

total

integer

items

[ array, object ]

Stores the definition of the Order Source

name

string

The Order Source name

order_source_id

string

The Order Source identifier

restrict_re_tendering

boolean

The flag that indicates whether or not to restrict the re-tender operation for orders which come from sources

_id

string

The auto-assigned system document identifier

company_id

string

The identifier of the company that owns the document

entity_id

string

The auto-assigned UID of the entity, set on creation. All future versions of the entity share the same entity_id.

is_master

boolean

is_active

boolean

Marking property is the essence of active documents. Sets in true by default.

external_id

string

created_by

string

The identifier of the OPRA user or site that created the document

updated_by

string

The identifier of the OPRA user or site that last updated the document

created_at

string

The date and time the document was created

updated_at

string

The last date and time the document was updated

Response Codes

Response

Description

200 OK

Success

404 Not Found

Not found

Default

Unexpected error

Product

The Product resource returns an items array that contains definitions for one or more products. Each product definition includes the product name (e.g., "Flamethrower Fish Sandwich"), product images, a product description, price and tax information, and entity_ids for any groups or collections that the product belongs to.

The example below shows a sample GET request to the /product endpoint:

{{dm_url}}/product/current?effective_date={{date}}T00:00:01.590Z&entity_ids=['9999999999999999']

The example below shows a sample response from the Product resource:

{
    "items": [
        {
            "_id": "9999999999999999",
            "name": "Flamethrower Fish Sandwich",
            "product_id": "FlamethrowerFish",
            "product_type": "standard",
            "revenue_class": "default",
            "reporting_category": {
                "minor_reporting_category_entity_id": "9999999999999999",
                "major_reporting_category_entity_id": "9999999999999999"
            },
            "alt_item_name": "",
            "images": [
                {
                    "image_set_entity_id": "9999999999999999",
                    "tag": "Flamethrower+Fish+Sandwich.jpg",
                    "source_url": "https://xoo-images.xenial.com/Flamethrower+Fish+Sandwich.jpg"
                },
                {
                    "image_set_entity_id": "9999999999999999",
                    "tag": "Flamethrower+Fish+Sandwich.jpg",
                    "source_url": "https://xoo-images.xenial.com/Flamethrower+Fish+Sandwich.jpg"
                },
                {
                    "image_set_entity_id": "9999999999999999",
                    "tag": "Flamethrower+Fish+Sandwich.jpg",
                    "source_url": "https://xoo-images.xenial.com/Flamethrower+Fish+Sandwich.jpg"
                }
            ],
            "item_description": "This fish sandwich is straight fire. We take a fried filet of
				wild-caught Alaskan cod and top it with red onion, spring mix
				lettuce and a spicy house-made Sriracha sauce on a fresh baked
				bun.",
            "is_open_price": false,
            "is_bundle": false,
            "builds": [
                {
                    "is_default": true,
                    "name": "Default",
                    "products": [
                        {
                            "product_entity_id": "9999999999999999",
                            "9999999999999999": false
                        },
                        {
                            "product_entity_id": "9999999999999999",
                            "9999999999999999": false
                        },
                        {
                            "product_entity_id": "9999999999999999",
                            "9999999999999999": false
                        },
                        {
                            "product_entity_id": "9999999999999999",
                            "9999999999999999": false
                        }
                    ]
                }
            ],
            "kitchen_routing_category_entity_ids": [
                "9999999999999999",
                "9999999999999999"
            ],
            "tax_group_entity_id": "9999999999999999",
            "prompt_for_quantity": false,
            "default_cost": 10,
            "kitchen_routing_type": "by_category",
            "product_tag_entity_ids": [],
            "product_category_entity_ids": [],
            "prompt_item_conversio_on_change": false,
            "entity_id": "9999999999999999",
            "item_type": "product",
            "modifier_collection_entity_id": "9999999999999999",
            "nutritional_data": [
                {
                    "name": "Calories",
                    "value": 789.5,
                    "unit": "Count"
                }
            ],
            "include_on_item_count": true,
            "include_on_item_count_value": 1,
            "unit_type": "none",
            "restricted_order_source_entity_ids": [],
            "restrict_availability_order_source": false,
            "bundle_components_entity_ids": [],
            "bundle_components": []
        }
    ],
    "total": 1,
    "page_count": 1,
    "current_page": 1,
    "page_size": 100
}

To use the Product resource, send a GET request to the /product/current endpoint, defined in detail here.

GET /product/current

Request Parameters

In

Field Name

Type

Required

Description

header

X-COMPANY-ID

string

Yes

The identifier of the company to manage data for

header

X-SITE-IDs

[ csv of string ]

No

The unique identifiers (UIDs) of the site to manage data for

query

$filter

string

no

A filter expression in OData v4 format

query

$top

int32

No

The maximum documents to return

query

$skip

int32

No

The documents to skip before returning

query

$orderby

string

No

An order by expression in OData v4 format

query

effective_date

string

Yes

The date and time to query against

query

entity_ids

[ string ]

No

An array of entity identifiers

query

include_nested

boolean

No

Hydrates-related nested objects when returning a result (For example, populate a menu with menu categories and menu groups)

query

include_mappings

boolean

No

Include the mappings for the document

query

include_mappings_for_entities

[ csv of string ]

No

Specifies entity types for which to add mappings (For example, include_mappings_for_entities_param='menu-category' for menu call - add mappings to menu categories)

query

include_entities

[ csv of string ]

No

Specifies entity_types to be populated by nesting mechanism (For example, include_entities=['menu-category'] for menu call - populate a menu with menu categories)

query

include_audit

boolean

No

Adds audit fields to each document when returning a result (is_active, is_master, created_at, created_by, updated_at, updated_by)

query

include_inactive

boolean

No

Includes the documents that are inactive for the current sites

Success Schema

Field Name

Type

Description

total

integer

items

[ array, object ]

The product JSON-schema for validation create

name

string

product_id

string

The product identifier

caption

string

The product caption. The caption supports maximum five (5) lines and 255 characters.

product_type

string

The type of product.

The possible values are "standard," "modifier," "comment," "placeholder," "modifier_placeholder," "gift_card," "gift_certificate," "fee," or "retail_item."

revenue_class

string

include_on_item_count

boolean

The flag that indicates if this product needs to be added to the item count

include_on_item_count_value

integer

The field to determine how a product affects the count

reporting_category

object

minor_reporting_category_entity_id

string, object

major_reporting_category_entity_id

string, object

alt_item_name

string

item_description

string

is_open_price

boolean

is_bundle

boolean

The flag that indicates whether or not this product is a bundle

bundle_components_entity_ids

[ array ]

An array of bundle_component entity_ids (string,object)

kitchen_routing_category_entity_ids

[ array ]

An array of kitchen_routing_category entity_ids (string,object)

modifier_collection_entity_id

string, object

The entity_id of the associated modifier_collection

builds

[ array ]

The product build JSON-schema

id (string, object) (optional)

id

string, object

name

string

is_default

boolean

products

[ array, object ]

product_entity_id (string, object)

product_entity_id

string, object

include_into_plain_build

boolean

tax_group_entity_id

string, object

default_cost

number

The default cost of the product

unit_size

integer

Allows the user to set the size for each unit for the price that will be configured

unit_type

string

Allows the user to select the type of the unit that makes up the item.

The possible values are "none," "pack," "each," "case," "bottle," "can," "gallon," "quart," "milliliter," "liter," "pound," "ounce," "gram," or "kilograms."

always_print_in_red

boolean

The flag that indicates whether or not this modifier always prints in red (overrides modifier group setting)

include_in_plain_builds

boolean

The flag that indicates whether or not this modifier is included by default in a build

allow_quantity

boolean

The flag that indicates whether or not this modifier allows changing quantities

variation_info

object

variant_entity_id

variant_entity_id

string, object

The entity identifier of the variant that this modifier represents. For example the "EXTRA" or "NO" variant or an empty string if this is a parent modifier.

parent_entity_id

string, object

The parent modifier entity identifier that this product is a variant of. For example, the "Cheese" modifier, if this is the "EXTRA Cheese" modifier, or an empty string if this is a parent modifier.

variations

[ array ]

The variations that are associated to this parent product (object) variant_entity_id

variant_entity_id

string, object

The entity identifier of the modifier variant (For example, the "EXTRA" or "NO" variant)

product_entity_id

string, object

The product entity identifier that represents the modifier (For example, the "EXTRA Cheese" modifier)

show_confirmaion_prompt

boolean

prompt_item_conversion_change

boolean

allow_plain_builds

boolean

external_category_ids

[ array ]

The category identifiers provided by IRIS/EDM not exposed to the Data Management (DM) user interface (UI) (string)

external_tag_ids

[ array ]

The external tag identifiers (string)

images

[ array ]

An array of the product related images (object).

image_set_entity_id

image_set_entity_id

string, object

The image set entity identifier

tag

string

The product image string tag (image description)

source_url

string

The product image source URL

nutritional_data

[ array ]

An array of the nutritional data for the product (object) name

name

string

The nutritional information name.

For example, Calcium, Calories, Saturated Fat, Polyunsaturated Fat, Monounsaturated Fat, Cholesterol, Carbohydrates, Fiber, Iron, Magnesium, Potassium, Protein, Sodium, Sugar, Vitamin A, Vitamin B12, Vitamin C, Vitamin D.

min_value

number

The nutritional information minValue

value

number

The nutritional information value or maxValue in case of range

unit

string

The nutritional information unit.

For example Milligrams, Count, Grams, or IU.

product_category_entity_ids

[ array ]

An array of Product Category entity identifiers (string, object)

product_tag_entity_ids

[ array ]

An array of tag entity identifiers (string, object)

prompt_for_quantity

boolean

Configure the prompt for the quantity setting for products

kitchen_routing_type

string

The type of kitchen routing.

The possible values are "by_category" or "by_destination."

order_destination_entity_id

string, object

The order destination entity identifier

kitchen_routing_categories_by_destination

[ array ]

An array of objects with kitchen_routing_category_entity_ids by order_destination_entity_id (object) order_destination_entity_id (string, object) (optional)

kitchen_routing_category_entity_ids

[ array ]

An array of kitchen_routing_category entity_ids (string, object)

tag_entity_ids

[ array ]

An array of tag entity identifiers (string, object)

alternate_plu_codes

[ array ]

An array of alternate price look up (PLU) codes (string)

is_liability_item

boolean

The flag that indicates if this product is a liability item (For example, gift card)

item_type

string

The product type.

The possible values are "product," "gift_card," "gift_certificate," "retail_item," or "fee."

liability_info

object

An array of the pay type entity identifiers.

pay_type_entity_id (string, object) (optional)

restricted_order_source_entity_ids

[ array ]

An array of the restricted Order Source entity identifiers (string, object)

restrict_availability_order_source

boolean

The flag that indicates whether or not to restrict availability by the order source or not

voice_name

string

The primary product name for use with voice ordering

voice_synonyms

string

The typical pronunciations of the product name or alternate names for the product (comma separated)

enable_time_based_pricing

boolean

Enables time-based pricing logic

_id

string

The auto-assigned system document identifier

company_id

string

The identifier of the company that owns the document

entity_id

string

The auto-assigned UID of the entity, set on creation. All future versions of the entity share the same entity_id.

is_master

boolean

is_active

boolean

Marking property is the essence of active documents. Sets in true by default.

external_id

string

created_by

string

The identifier of the OPRA user or site that created the document

updated_by

string

The identifier of the OPRA user or site that last updated the document

created_at

string

The date and time the document was created

updated_at

string

The last date and time the document was updated

Response Codes

Response

Description

200 OK

Success

404 Not Found

Not found

Default

Unexpected error

Product Category

The Product Category resource returns an items array that contains definitions for one or more product categories. Each product category definition includes the name of the category (e.g., "Small Combo") and the entity_id of the category.

The example below shows a sample GET request to the /product-category endpoint:

{{dm_url}}/product-category/current?effective_date={{date}}T00:00:01.590Z

The example below shows a sample response from the Product Category resource:

{
    "items": [
        {
            "_id": "9999999999999999",
            "entity_id": "9999999999999999",
            "name": "Small Combo",
            "category_id": "9999999"
        },
        {
            "_id": "9999999999999999",
            "entity_id": "9999999999999999",
            "name": "Medium Combo",
            "category_id": "9999999"
        },
        {
            "_id": "9999999999999999",
            "entity_id": "9999999999999999",
            "name": "Large Combo",
            "category_id": "9999999"
        }
    ],
    "total": 3,
    "page_count": 1,
    "current_page": 1,
    "page_size": 100
}

To use the Product Category resource, send a GET request to the /product-category/current endpoint, defined in detail here.

GET /product-category/current

Request Parameters

In

Field Name

Type

Required

Description

header

X-COMPANY-ID

string

Yes

The identifier of the company to manage data for

header

X-SITE-IDs

[ csv of string ]

No

The unique identifiers (UIDs) of the site to manage data for

query

$filter

string

no

A filter expression in OData v4 format

query

$top

int32

No

The maximum documents to return

query

$skip

int32

No

The documents to skip before returning

query

$orderby

string

No

An order by expression in OData v4 format

query

effective_date

string

Yes

The date and time to query against

query

entity_ids

[ string ]

No

An array of entity identifiers

query

include_nested

boolean

No

Hydrates-related nested objects when returning a result (For example, populate a menu with menu categories and menu groups)

query

include_mappings

boolean

No

Include the mappings for the document

query

include_mappings_for_entities

[ csv of string ]

No

Specifies entity types for which to add mappings (For example, include_mappings_for_entities_param='menu-category' for menu call - add mappings to menu categories)

query

include_entities

[ csv of string ]

No

Specifies entity_types to be populated by nesting mechanism (For example, include_entities=['menu-category'] for menu call - populate a menu with menu categories)

query

include_audit

boolean

No

Adds audit fields to each document when returning a result (is_active, is_master, created_at, created_by, updated_at, updated_by)

query

include_inactive

boolean

No

Includes the documents that are inactive for the current sites

Success Schema

Field Name

Type

Description

total

integer

items

[ array, object ]

The product category request create validation JSON-schema

name

string

The name of the product category

category_id

string

_id

string

The auto-assigned system document identifier

company_id

string

The identifier of the company that owns the document

entity_id

string

The auto-assigned UID of the entity, set on creation. All future versions of the entity share the same entity_id.

is_master

boolean

is_active

boolean

Marking property is the essence of active documents. Sets in true by default.

external_id

string

created_by

string

The identifier of the OPRA user or site that created the document

updated_by

string

The identifier of the OPRA user or site that last updated the document

created_at

string

The date and time the document was created

updated_at

string

The last date and time the document was updated

Response Codes

Response

Description

200 OK

Success

404 Not Found

Not found

Default

Unexpected error

Product Price

The Product Price resource returns an items array that contains pricing details for one or more products. The products can be standard products or variations. Each product price definition includes the name of the product (e.g., "Small Coke"), the unit price of the product, and the way that product price type is applied to an order.

The example below shows a sample GET request to the /product-price endpoint:

{{dm_url}}/product-price/current?effective_date={{date}}T00:00:01.590Z&entity_ids=['9999999999999999', '9999999999999999']

The example below shows a sample response from the Product Price resource:

{
    "items": [
        {
            "_id": "9999999999999999",
            "type": "standard",
            "unit_price": 20,
            "time_period_entity_ids": [],
            "product_entity_id": "9999999999999999",
            "product_id": "Kobe Burger",
            "external_id": "",
            "entity_id": "9999999999999999"
        },
        {
            "_id": "9999999999999999",
            "unit_price": 10,
            "time_period_entity_ids": [],
            "name": "Cheese for Kobe Burger",
            "type": "child-product",
            "apply_type": "replace",
            "entity_id": "9999999999999999",
            "parent_product_entity_ids": [
                "9999999999999999"
            ],
            "product_entity_id": "9999999999999999",
            "product_id": "ProvoloneCheese",
            "external_id": ""
        }
    ],
    "total": 2,
    "page_count": 1,
    "current_page": 1,
    "page_size": 100
}

To use the Product Price resource, send a GET request to the /product-price/current endpoint, defined in detail here.

GET /product-price/current

Request Parameters

In

Field Name

Type

Required

Description

header

X-COMPANY-ID

string

Yes

The identifier of the company to manage data for

header

X-SITE-IDs

[ csv of string ]

No

The unique identifiers (UIDs) of the site to manage data for

query

$filter

string

no

A filter expression in OData v4 format

query

$top

int32

No

The maximum documents to return

query

$skip

int32

No

The documents to skip before returning

query

$orderby

string

No

An order by expression in OData v4 format

query

effective_date

string

Yes

The date and time to query against

query

entity_ids

[ string ]

No

An array of entity identifiers

query

include_nested

boolean

No

Hydrates-related nested objects when returning a result (For example, populate a menu with menu categories and menu groups)

query

include_mappings

boolean

No

Include the mappings for the document

query

include_mappings_for_entities

[ csv of string ]

No

Specifies entity types for which to add mappings (For example, include_mappings_for_entities_param='menu-category' for menu call - add mappings to menu categories)

query

include_entities

[ csv of string ]

No

Specifies entity_types to be populated by nesting mechanism (For example, include_entities=['menu-category'] for menu call - populate a menu with menu categories)

query

include_audit

boolean

No

Adds audit fields to each document when returning a result (is_active, is_master, created_at, created_by, updated_at, updated_by)

query

include_inactive

boolean

No

Includes the documents that are inactive for the current sites

Success Schema

Field Name

Type

Description

total

integer

items

[ array, object ]

The product price request create validation JSON-schema - name (string) (optional)

name

string

type

string

The possible values are "standard," "conditional," "child-tag," "child-product," or "child-both."

unit_price

number

product_id

string

time_period_entity_ids

[ string, object ]

product_entity_id

string, object

product_tag_entity_ids

[ string, object ]

parent_product_entity_ids

[ string, object ]

external_tag_ids

[ string ]

quantity_based

object

min

integer

max

integer

apply_type

string

The possible values are "replace" or "adjust"

external_category_ids

[ array ]

The category identifiers provided by IRIS/EDM not exposed to the Data Management (DM) user interface (UI) (string)

product_category_entity_ids

[ array ]

An array of the Product Category entity identifiers (string, object)

child_product_entity_id

string, object

_id

string

The auto-assigned system document identifier

company_id

string

The identifier of the company that owns the document

entity_id

string

The auto-assigned UID of the entity, set on creation. All future versions of the entity share the same entity_id.

is_master

boolean

is_active

boolean

Marking property is the essence of active documents. Sets in true by default.

external_id

string

created_by

string

The identifier of the OPRA user or site that created the document

updated_by

string

The identifier of the OPRA user or site that last updated the document

created_at

string

The date and time the document was created

updated_at

string

The last date and time the document was updated

Response Codes

Response

Description

200 OK

Success

404 Not Found

Not found

Default

Unexpected error

Tax Definition

Tax definitions define different taxes and rates that will be applied to orders. The Tax Definition resource returns an items array that contains one or more tax definitions. Each tax definition includes the name of the tax definition (e.g., "Sales Tax"), the tax rate, the type, and filters that determine how the tax is applied.

The example below shows a sample GET request to the /tax-definition endpoint:

{{dm_url}}/tax-definition/current?effective_date={{date}}T00:00:01.590Z

The example below shows a sample response from the Tax Definition resource:

{
    "items": [
        {
            "_id": "9999999999999999",
            "based_on": "price",
            "tax_inclusive": false,
            "entity_id": "9999999999999999",
            "name": "Sales Tax",
            "type": "fixed_rate",
            "value": 8.25
        },
        {
            "_id": "9999999999999999",
            "name": "South Charlotte",
            "type": "fixed_rate",
            "value": 7.32,
            "based_on": "price",
            "tax_inclusive": false,
            "filter": {
                "item_tax_groups": [
                    "9999999999999999"
                ],
                "modifier_tax_groups": [
                    "9999999999999999"
                ],
                "consumption_types": []
            },
            "tax_on_tax": false,
            "entity_id": "9999999999999999"
        }
    ],
    "total": 2,
    "page_count": 1,
    "current_page": 1,
    "page_size": 100
}

To use the Tax Definition resource, send a GET request to the /tax-definition/current endpoint, defined in detail here.

GET /tax-definition/current

Request Parameters

In

Field Name

Type

Required

Description

header

X-COMPANY-ID

string

Yes

The identifier of the company to manage data for

header

X-SITE-IDs

[ csv of string ]

No

The unique identifiers (UIDs) of the site to manage data for

query

$filter

string

no

A filter expression in OData v4 format

query

$top

int32

No

The maximum documents to return

query

$skip

int32

No

The documents to skip before returning

query

$orderby

string

No

An order by expression in OData v4 format

query

effective_date

string

Yes

The date and time to query against

query

entity_ids

[ string ]

No

An array of entity identifiers

query

include_nested

boolean

No

Hydrates-related nested objects when returning a result (For example, populate a menu with menu categories and menu groups)

query

include_mappings

boolean

No

Include the mappings for the document

query

include_mappings_for_entities

[ csv of string ]

No

Specifies entity types for which to add mappings (For example, include_mappings_for_entities_param='menu-category' for menu call - add mappings to menu categories)

query

include_entities

[ csv of string ]

No

Specifies entity_types to be populated by nesting mechanism (For example, include_entities=['menu-category'] for menu call - populate a menu with menu categories)

query

include_audit

boolean

No

Adds audit fields to each document when returning a result (is_active, is_master, created_at, created_by, updated_at, updated_by)

query

include_inactive

boolean

No

Includes the documents that are inactive for the current sites

Success Schema

Field Name

Type

Description

total

integer

items

[ array, object ]

name

name

string

The name of the tax (For example, NC sales tax)

type

string

Specifies the type of tax rate. The possible values are "fixed_amount" or "fixed_rate."

value

number

The value is either a percentage or a fixed amount based on the type value

based_on

string

The possible values are "price" or "quantity"

tax_inclusive

boolean

If active: Hide the tax amounts both in the guest check and within the order entry

filter

object

item_tax_groups

item_tax_groups

[ string, object ]

A list of item names or tax category names to filter on

destinations

[ string ]

The list of destinations

destination_entity_ids

[ string, object ]

The list of destination entity identifiers

modifier_tax_groups

[ string, object ]

The list of item names or tax category names to filter on

tender_tags

[ string ]

The list of tender type names to filter on

discount_tags

[ string ]

The list of discount names to filter on

condition

object

Specifies the condition around items that satisfy the filter tags.

scope

scope

string

The scope of the conditions.

The possible values are "order," "item," or "tender."

The scope of the condition is the whole order if the scope is "order," limited to the current item and child items if the scope is "item," and limited to the tender type if the scope is "tender."

total_on

string

The possible values are "price" or "count."

The total is the price of the items across the check if the scope is "order," the total is the price of the current item and child items if the scope is "item," or the total approved amount if the scope is "tender."

operator

string

The condition sign ( ==, >, <, >=, <= )

target_value

string

The target value for the condition

consumption_types

[ string ]

The consumption types.

The possible values are "OnPremises" or "OffPremises."

min_base_amount

number

max_base_amount

number

initial_break_points

[ array, object ]

id

id

string

range_start

number

range_end

number

amount

number

pattern_break_points

[ array, object ]

id

id

string

range_start

number

range_end

number

amount

number

active

boolean

The flag that indicates if the tax rule is active or not

tax_on_tax

boolean

The possible values are "Yes" or "No." The default value is "No."

If "Yes," the tax on tax is calculated after calculating all the regular taxes first, and then loop back and calculate the tax on tax on the total taxes. For example, on a single item $1.00 order where three 10% tax rates apply with the second two having tax on tax value "Yes," tax1 would be $0.10, and tax2 and tax3 would be $0.13, which is 10% of $1.00 + 10% of (0.10+0.10+0.10).

rounding

string

The possible values are "roundup," "rounddown," or "nearest." The default value is "nearest."

It is the rounding method to apply on each tax value.

collective_rounding

boolean

The tax buckets that have this value set as "True" are collectively rounded instead of individually rounded to produce total tax

_id

string

The auto-assigned system document identifier

company_id

string

The identifier of the company that owns the document

entity_id

string

The auto-assigned UID of the entity, set on creation. All future versions of the entity share the same entity_id.

is_master

boolean

is_active

boolean

Marking property is the essence of active documents. Sets in true by default.

external_id

string

created_by

string

The identifier of the OPRA user or site that created the document

updated_by

string

The identifier of the OPRA user or site that last updated the document

created_at

string

The date and time the document was created

updated_at

string

The last date and time the document was updated

Response Codes

Response

Description

200 OK

Success

404 Not Found

Not found

Default

Unexpected error

Tax Group

Tax groups define categories that indicate the different taxes that apply to a particular order. The Tax Group resource returns an items array that contains definitions for one or more tax groups. Each tax group definition includes the name of the tax group (e.g. "Non-taxable"), and the entity_id of the group.

The example below shows a sample GET request to the /tax-group endpoint:

{{dm_url}}/tax-group/current?effective_date={{date}}T00:00:01.590Z

The example below shows a sample response from the Tax Group resource:

{
    "items": [
        {
            "_id": "9999999999999999",
            "name": "Non-Taxable",
            "tax_code": "1",
            "entity_id": "9999999999999999"
        },
        {
            "_id": "9999999999999999",
            "name": "Prepared",
            "tax_code": "2",
            "entity_id": "9999999999999999"
        },
        {
            "_id": "9999999999999999",
            "name": "Pre-packaged",
            "tax_code": "3",
            "entity_id": "9999999999999999"
        },
        {
            "_id": "9999999999999999",
            "name": "TestTaxes",
            "tax_code": "TestTaxes",
            "entity_id": "9999999999999999"
        }
    ],
    "total": 4,
    "page_count": 1,
    "current_page": 1,
    "page_size": 100
}

To use the Tax Group resource, send a GET request to the /tax-group/current endpoint, defined in detail here.

GET /tax-group/current

Request Parameters

In

Field Name

Type

Required

Description

header

X-COMPANY-ID

string

Yes

The identifier of the company to manage data for

header

X-SITE-IDs

[ csv of string ]

No

The unique identifiers (UIDs) of the site to manage data for

query

$filter

string

no

A filter expression in OData v4 format

query

$top

int32

No

The maximum documents to return

query

$skip

int32

No

The documents to skip before returning

query

$orderby

string

No

An order by expression in OData v4 format

query

effective_date

string

Yes

The date and time to query against

query

entity_ids

[ string ]

No

An array of entity identifiers

query

include_nested

boolean

No

Hydrates-related nested objects when returning a result (For example, populate a menu with menu categories and menu groups)

query

include_mappings

boolean

No

Include the mappings for the document

query

include_mappings_for_entities

[ csv of string ]

No

Specifies entity types for which to add mappings (For example, include_mappings_for_entities_param='menu-category' for menu call - add mappings to menu categories)

query

include_entities

[ csv of string ]

No

Specifies entity_types to be populated by nesting mechanism (For example, include_entities=['menu-category'] for menu call - populate a menu with menu categories)

query

include_audit

boolean

No

Adds audit fields to each document when returning a result (is_active, is_master, created_at, created_by, updated_at, updated_by)

query

include_inactive

boolean

No

Includes the documents that are inactive for the current sites

Success Schema

Field Name

Type

Description

total

integer

items

[ array, object ]

Stores the definition of a tax group name (string). The name of the tax group.

name

string

The name of the tax group

tax_code

string

_id

string

The auto-assigned system document identifier

company_id

string

The identifier of the company that owns the document

entity_id

string

The auto-assigned UID of the entity, set on creation. All future versions of the entity share the same entity_id.

is_master

boolean

is_active

boolean

Marking property is the essence of active documents. Sets in true by default.

external_id

string

created_by

string

The identifier of the OPRA user or site that created the document

updated_by

string

The identifier of the OPRA user or site that last updated the document

created_at

string

The date and time the document was created

updated_at

string

The last date and time the document was updated

Response Codes

Response

Description

200 OK

Success

404 Not Found

Not found

Default

Unexpected error

Variant

Variants define the ways that modifiers can be applied to products: for example "Add" or "No". The Variant resource returns an items array that contains definitions for one or more variants. Each variant definition includes the name of the variant (e.g. "Extra"), details about price and quantity adjustments that the variant may require, and the entity_id of the variant.

The example below shows a sample GET request to the /variant endpoint:

{{dm_url}}/variant/current?effective_date={{date}}T00:00:01.590Z

The example below shows a sample response from the Variant resource:

{
    "items": [
        {
            "_id": "9999999999999999",
            "name": "Add",
            "product_type": "modifier",
            "price_adjustment_type": "none",
            "price_adjustment_value": 0,
            "9999999999999999": "none",
            "quantity_adjustment_value": 0,
            "action": "add",
            "sort_order": 1,
            "entity_id": "9999999999999999"
        },
        {
            "_id": "9999999999999999",
            "name": "No",
            "product_type": "modifier",
            "price_adjustment_type": "none",
            "price_adjustment_value": 0,
            "9999999999999999": "none",
            "quantity_adjustment_value": 0,
            "action": "no",
            "sort_order": 2,
            "entity_id": "9999999999999999"
        },
        {
            "_id": "9999999999999999",
            "name": "Lite",
            "product_type": "modifier",
            "price_adjustment_type": "none",
            "price_adjustment_value": 0,
            "9999999999999999": "none",
            "quantity_adjustment_value": 0,
            "action": "none",
            "sort_order": 3,
            "entity_id": "9999999999999999"
        },
        {
            "_id": "9999999999999999",
            "name": "Extra",
            "product_type": "modifier",
            "price_adjustment_type": "none",
            "price_adjustment_value": 0,
            "9999999999999999": "none",
            "quantity_adjustment_value": 0,
            "action": "none",
            "sort_order": 4,
            "entity_id": "9999999999999999"
        }
    ],
    "total": 15,
    "page_count": 1,
    "current_page": 1,
    "page_size": 100
}

To use the Variant resource, send a GET request to the /variant/current endpoint, defined in detail here.

GET /variant/current

Request Parameters

In

Field Name

Type

Required

Description

header

X-COMPANY-ID

string

Yes

The identifier of the company to manage data for

header

X-SITE-IDs

[ csv of string ]

No

The unique identifiers (UIDs) of the site to manage data for

query

$filter

string

no

A filter expression in OData v4 format

query

$top

int32

No

The maximum documents to return

query

$skip

int32

No

The documents to skip before returning

query

$orderby

string

No

An order by expression in OData v4 format

query

effective_date

string

Yes

The date and time to query against

query

entity_ids

[ string ]

No

An array of entity identifiers

query

include_nested

boolean

No

Hydrates-related nested objects when returning a result (For example, populate a menu with menu categories and menu groups)

query

include_mappings

boolean

No

Include the mappings for the document

query

include_mappings_for_entities

[ csv of string ]

No

Specifies entity types for which to add mappings (For example, include_mappings_for_entities_param='menu-category' for menu call - add mappings to menu categories)

query

include_entities

[ csv of string ]

No

Specifies entity_types to be populated by nesting mechanism (For example, include_entities=['menu-category'] for menu call - populate a menu with menu categories)

query

include_audit

boolean

No

Adds audit fields to each document when returning a result (is_active, is_master, created_at, created_by, updated_at, updated_by)

query

include_inactive

boolean

No

Includes the documents that are inactive for the current sites

Success Schema

Field Name

Type

Description

total

integer

items

[ array, object ]

Stores the definition of a variant. name (string)

name

string

The name of the variant

product_type

string

The type of product the variant can be applied to.

The possible values are "standard" or "modifier."

variant_type_entity_id

string, object

The entity_id of the associated variant-type

price_adjustment_type

string

How the variant affects the price, either by a fixed amount or a percentage.

The possible values are "none," "fixed_amount," or "fixed_rate."

price_adjustment_value

number

The value of the price multiplier, either a currency value such as 0.50 for $0.50 or 0.50 for 50%.

quantity_adjustment_type

string

How the variant affects the quantity, either by a fixed amount or a percentage.

The possible values are "none," "fixed_amount," or "fixed_rate."

quantity_adjustment_value

number

The value of the quantity multiplier, either a currency value such as 0.50 for $0.50 or 0.50 for 50%

action

string

Identifies whether or not the variation is the without or with.

sort_order

integer

The sort option for the variant positioning. For example, Small (1), Medium (2), Large (3).

_id

string

The auto-assigned system document identifier

company_id

string

The identifier of the company that owns the document

entity_id

string

The auto-assigned UID of the entity, set on creation. All future versions of the entity share the same entity_id.

is_master

boolean

is_active

boolean

Marking property is the essence of active documents. Sets in true by default.

external_id

string

created_by

string

The identifier of the OPRA user or site that created the document

updated_by

string

The identifier of the OPRA user or site that last updated the document

created_at

string

The date and time the document was created

updated_at

string

The last date and time the document was updated

Response Codes

Response

Description

200 OK

Success

404 Not Found

Not found

Default

Unexpected error

Variant Type

The Variant Type resource returns an items array that contains definitions for one or more variant types. Each variant type definition includes the name of the variant type (e.g., "Size") and a set of relevant attributes.

The example below shows a sample GET request to the /variant-type endpoint:

{{dm_url}}/variant-type/current?effective_date={{date}}T00:00:01.590Z

The example below shows a sample response from the Variant Type resource:

{
    "items": [
        {
            "_id": "9999999999999999",
            "name": "Size",
            "code": "size",
            "sync_product_variations": "sync_all",
            "entity_id": "9999999999999999"
        },
        {
            "_id": "9999999999999999",
            "name": "Meal",
            "code": "meal",
            "sync_product_variations": "sync_all",
            "entity_id": "9999999999999999"
        }
    ],
    "total": 2,
    "page_count": 1,
    "current_page": 1,
    "page_size": 100
}

To use the Variant Type resource, send a GET request to the /variant-type/current endpoint, defined in detail here.

GET /variant-type/current

Request Parameters

In

Field Name

Type

Required

Description

header

X-COMPANY-ID

string

Yes

The identifier of the company to manage data for

header

X-SITE-IDs

[ csv of string ]

No

The unique identifiers (UIDs) of the site to manage data for

query

$filter

string

no

A filter expression in OData v4 format

query

$top

int32

No

The maximum documents to return

query

$skip

int32

No

The documents to skip before returning

query

$orderby

string

No

An order by expression in OData v4 format

query

effective_date

string

Yes

The date and time to query against

query

entity_ids

[ string ]

No

An array of entity identifiers

query

include_nested

boolean

No

Hydrates-related nested objects when returning a result (For example, populate a menu with menu categories and menu groups)

query

include_mappings

boolean

No

Include the mappings for the document

query

include_mappings_for_entities

[ csv of string ]

No

Specifies entity types for which to add mappings (For example, include_mappings_for_entities_param='menu-category' for menu call - add mappings to menu categories)

query

include_entities

[ csv of string ]

No

Specifies entity_types to be populated by nesting mechanism (For example, include_entities=['menu-category'] for menu call - populate a menu with menu categories)

query

include_audit

boolean

No

Adds audit fields to each document when returning a result (is_active, is_master, created_at, created_by, updated_at, updated_by)

query

include_inactive

boolean

No

Includes the documents that are inactive for the current sites

Success Schema

Field Name

Type

Description

total

integer

items

[ array, object ]

Describes the variation type of the product name (string)

name

string

The name of the variation type

code

string

sync_product_variations

string

The product variations synchronization method applied at Data Management (DM).

The possible values are "sync_all" or "prompt."

_id

string

The auto-assigned system document identifier

company_id

string

The identifier of the company that owns the document

entity_id

string

The auto-assigned UID of the entity, set on creation. All future versions of the entity share the same entity_id.

is_master

boolean

is_active

boolean

Marking property is the essence of active documents. Sets in true by default.

external_id

string

created_by

string

The identifier of the OPRA user or site that created the document

updated_by

string

The identifier of the OPRA user or site that last updated the document

created_at

string

The date and time the document was created

updated_at

string

The last date and time the document was updated

Response Codes

Response

Description

200 OK

Success

404 Not Found

Not found

Default

Unexpected error