Represents a menu as seen by a third party remote order provider. It contains all the items that can be ordered by the remote order provider along with language / active times.
The rough hierarchy goes:
Menu -> MenuItemGroup[] -> MenuItem[] -> ChildAttributeGroup[] -> MenuItem[]
Required
outletID :
string (GUID)
ID of the outlet that this menu is applicable to
Required
providerID :
number (int)
Unique ID for identifying the third party provider that this menu is for (from the Registered Integration Provider's list)
Required
MaxLength(64)
providerName :
string
Name for identifying the third party provider that this menu is for (from the Registered Integration Provider's list)
Required
MaxLength(64)
menuID :
string
Unique identifier for this menu, provided by the outlet. Must be unique across all the outlet menus.
Required
MaxLength(64)
trackingID :
string
NON Unique identifier for this menu, provided by the outlet.
This will be used for identifying individual menus in the PowerEPOS configuration. Depending on configuration, PowerEPOS can serve a single menu multiple times with unique
tax/price/servicemode/availability information. This identifier will can be used to identify unique individual menus for the purposes of reporting on usage of those menus.
It's to be expected that there will be duplicates of this value for an individual outlet's set of Menus.
This value will remain stable across changes to the menu/prices/tax/availability information
Required
MaxLength(4)
languageCode :
string
An ISO 639‑1 language code (two letters) that this menu's text will be providing (eg: English: en, Spanish: es)
To be combined with CountryCode for an exact regional language representation of the menu
Providers should endeavour to supply the menu best matching a consumer's locale preferences
Required
MaxLength(4)
countryCode :
string
An ISO 3166-1 alpha-2 country code (two letters) that this menu's text will be providing (eg: Australia: au, France: fr)
To be combined with LanguageCode for an exact regional language representation of the menu
Providers should endeavour to supply the menu best matching a consumer's locale preferences
Required
MaxLength(8)
currencyCode :
string
ISO 4217 currency code for all amounts in this menu
Required
MaxLength(64)
Truncates
title :
string
Name of the menu to be displayed to a consumer
Nullable
revisionID :
number (int)
An identifier for the configuration revision of this menu. This value will change whenever any referenced menu items/information change.
There is no relationship between the values and how "current" the revision is (treat it as you would a hash code)
This can be used by providers to compare menus (with the same MenuID) across multiple requests.
Nullable
MaxLength(64)
Truncates
subtitle :
string
Optional subtitle of the menu that can be displayed to the consumer (provider support will vary)
Nullable
restrictedToTypes :
RemoteOrderType
[]
The (optional) set of RemoteOrderTypes that this menu should be used with. This is for outlets to be able to define a menu as a "takeaway only" menu
and another menu as a "eat in only" menu
Can be null / empty - in this case, there are no restrictions on the use of this menu
if this is specified, ensure all RemoteOrder's generated from this menu specify the RemoteOrder.RemoteOrderType to match one these values.
Nullable
menuAvailabilityRestrictions :
AvailabilityRestriction
[]
The set of days/times in which this particular menu can be shown to a consumer.
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.
Nullable
menuItems :
MenuItem
[]
All menu items for this menu (i.e. anything referenced by a category or attribute group will be found here)
Nullable
childAttributeGroups :
ChildAttributeGroup
[]
All ChildAttributeGroup for this menu (i.e. any ChildAttributeGroup referenced by a MenuItem will be found here)
Nullable
menuItemGroups :
MenuItemGroup
[]
All MenuItemGroups that form the top level organisation for MenuItems in this menu
Nullable
tax :
RemoteOrderTax
[]
The named taxes that menu items may reference
Nullable
collectionPoints :
EatInCollectionPoint
[]
The list of possible collection points that the consumer can select when making an order. A collection point is a location where the consumer will
physically travel to when collecting their order before they return to their location (in the outlet) to eat their order. It is in contrast to a table
service flow where a staff member would bring out a consumer's order to their table/seat.
Only relevant for EatIn flows.
The consumer should be prompted to use these in conjunction with ServiceMode (eg - Are you sitting at table X or would you like to pick up your order from location A/B/C).
Can be null / empty indicating that there are no collection points.
Nullable
serviceMode :
EatInServiceMode
The service mode associated with this outlet for remote ordering. Only relevant for EatIn flows where outlet staff will physically deliver the order to the consumer
while they are seated in the outlet. This is in contrast to a collection point where the consumer will be prompted to pickup their order from a location before
taking it back to wherever they are seated to eat.
The consumer should be prompted to use these in conjunction with CollectionPoints (eg - Are you sitting at table X or would you like to pick up your order from location A/B/C).
Can be null indicating that there is no service mode
Nullable
consumerPickupServiceMode :
RemoteOrderServiceMode
The service mode associated with this outlet for remoteordering. Only relevant for ConsumerPickup flows.
When creating RemoteOrderType.ConsumerPickup RemoteOrder instances from this Menu the provider should assign the specified RemoteOrderServiceMode.ServiceModeID
to the RemoteOrder.ServiceModeID and leave the RemoteOrder.ServiceModeEntityID null.
Can be null indicating that the RemoteOrder.ServiceMode can be left null for ConsumerPickup orders.
Nullable
courierPickupServiceMode :
RemoteOrderServiceMode
The service mode associated with this outlet for remoteordering. Only relevant for CourierPickup flows.
When creating RemoteOrderType.CourierPickup RemoteOrder instances from this Menu the provider should assign the specified RemoteOrderServiceMode.ServiceModeID
to the RemoteOrder.ServiceModeID and leave the RemoteOrder.ServiceModeEntityID null.
Can be null indicating that the RemoteOrder.ServiceMode can be left null for CourierPickup orders.
Nullable
siteDeliveryServiceMode :
EatInServiceMode
The service mode associated with this outlet for remoteordering. Only relevant for SiteDelivery flows.
When creating RemoteOrderType.SiteDelivery RemoteOrder instances from this Menu the provider should assign the specified RemoteOrderServiceMode.ServiceModeID
to the RemoteOrder.ServiceModeID and leave the RemoteOrder.ServiceModeEntityID null.
This may contain table/seat ranges for outlets that handle delivery to non address based locations (eg numbered beach shacks).
Can be null indicating that the RemoteOrder.ServiceMode can be left null for SiteDelivery orders.
Example
{
"outletID": "3f49efe7-ea42-4f21-8718-7e6ce9a33512",
"providerID": 321,
"providerName": "string value",
"menuID": "string value",
"trackingID": "string value",
"languageCode": "string value",
"countryCode": "string value",
"currencyCode": "string value",
"title": "string value",
"revisionID": 321,
"subtitle": "string value",
"restrictedToTypes": [1],
"menuAvailabilityRestrictions": [],
"menuItems": [],
"childAttributeGroups": [],
"menuItemGroups": [],
"tax": [],
"collectionPoints": [],
"serviceMode": {},
"consumerPickupServiceMode": {},
"courierPickupServiceMode": {},
"siteDeliveryServiceMode": {}
}