MenuItem Model

Represents a link between a menu and POS PLU. These items will directly translate to a RemoteOrderProduct when ordered by a provider

Required
menuItemID : string (GUID)

Unique identifier for this menu item. Must be unique across this menu.

Required MaxLength(64)
productID : string

Unique identifier for product being ordered by this menu item. Must translate directly into RemoteOrderProduct.ProductID

Required MaxLength(50) Truncates
name : string

Product name (for display to the consumer)

Required decimal(18, 2)
price : number (decimal)

Total amount of this menu item in the currency defined by the parent Menu. It will already include any inclusive tax amounts but will NOT include any exclusive tax values.

Nullable MaxLength(1024) Truncates
description : string

Product description (for display to the consumer). Designed for elaborating on the actual product.

Nullable
menuItemTaxes : MenuItemTax []

The amount of tax that this particular menu item is liable to generate. If a parent Menu's RemoteOrderTax is NOT referenced here then it can be assumed to be 0 or N/A

Nullable
modifierOptions : ModifierOption []

If set, this represents a MANDATORY selection that the consumer must be prompted for when
ordering this item. The consumer MUST make a selection of one of these values in order to
order this menu item.

Top level items can have this set with multiple modifier options indicating that the consumer should be prompted.

Child level items can have this set with a SINGLE modifier option which can be treated as an "just apply the effects of the single modifier option".
Multiple modifier options cannot appear for a child level item.

Can be null which will indicate that no special action is required.

Nullable
nutritionalInformation : NutritionalInfo

Additional nutritional information about this menu item. Can be null.

Nullable
image : MenuImage

Optional image for this menu item. Can be null

Nullable
serviceRestriction : ServiceRestriction

Additional restrictions on the serving/ordering of this menu item. Can be null.

Nullable
quantityConstraint : MenuItemQuantityConstraint

The quantity constraints (if any) that apply to ordering this menu item.

If this is a menu item for a child attribute there may be a parent ChildAttributeGroupQuantityConstraint. In this case the values specified here will be used
in conjunction with any restrictions set at the child attribute group with the constraints in the ChildAttributeGroupQuantityConstraint taking precedence.

can be null.

Nullable
childAttributeGroupIDs : string (GUID) []

The set of ChildAttributeGroup.ChildAttributeGroupID values that form the child attribute groups for this menu item.

This will only be referenced for top level items (i.e. items directly referenced by a category). There are no nested attributes of attributes

Can be null.

Nullable
itemAvailabilityRestrictions : AvailabilityRestriction []

The set of days/times in which this particular item should can be ordered by a consumer. It is recommended that an "unavailable" appear "disabled" in the
displayed menu but removing it entirely is also possible. The intention for this is so that a single menu can be served by an Outlet where food items can still be browsed
if a kitchen is currently closed but the outlet is open.

This is purely a display directive for third party providers. ROS will make no restrictions based on this value.

Items in this list will be treated as a restriction. A null/empty list can be interepreted as having NO restrictions (i.e. available all the time)

Multiple items should be evaluated using an OR clause. (i.e. if any of the specified MenuAvailabilities match a time, then the menu is valid for that time)

All date/times will be local to the outlet that this menu applies to.

Example
{
  "menuItemID": "3f49efe7-ea42-4f21-8718-7e6ce9a33512",
  "productID": "string value",
  "name": "string value",
  "price": 1.23,
  "description": "string value",
  "menuItemTaxes": [],
  "modifierOptions": [],
  "nutritionalInformation": {},
  "image": {},
  "serviceRestriction": {},
  "quantityConstraint": {},
  "childAttributeGroupIDs": ["3f49efe7-ea42-4f21-8718-7e6ce9a33512"],
  "itemAvailabilityRestrictions": []
}