Menu Schema Reference
Menu Schema Reference
Objects
MenuCreatePayload
Return type of MenuCreate.
Field Name | Description |
|---|---|
errors: [MenuCreationException!]! | A collection of errors generated when trying to create a menu. |
menuCreationRequestId : UUID | A unique identifier for the specific menu creation request. |
success: Boolean! | A boolean indicating whether the menu creation request was received successfully. |
MenuCreationException
An exception that occurred when trying to create a menu.
{
"details": {
"source": "categories",
"source_name": "Pizzas",
"source_pos_id": "pizzas-category-id",
"reference_type": "items",
"referenced_pos_id": "margherita-pizza-item-id"
},
"message": "Referenced entity is not defined"
}MenuCreationRequest
An object to describe the status of a MenuCreationRequest.
Field Name | Description |
|---|---|
errors: [MenuCreationException!] | The collection of errors generated by this MenuCreationRequest. |
menuUuid: ID | The uuid of the created menu |
outcome: String | An evaluation of the aggregate outcomes of all the steps |
status: String | The present status of the MCR |
warnings: [MenuCreationException!] | The collection of warnings generated by this MenuCreationRequest. |
{
"errors": [MenuCreationException!],
"menuUuid": "ezcater-menu-id",
"outcome": "success",
"status": "complete",
"warnings": [MenuCreationException!]
}Inputs
When creating a menu, each instance of a menu entity - category, item, option and choice - must have a different external posId if they have different names, prices, option groups etc.
CategoryInput
A section of the menu
Field Name | Description |
|---|---|
description: String | A description providing more info about this category for users. |
itemPosIds: [String!]! | A list of item.posId's to be included within this Category. |
name: String! | A human friendly name to be displayed for this category. |
posId: String! | A client supplied category id to easily match between systems. |
sortOrder: Int! | A number to determine where in the menu the category will be displayed. |
{
"name": "Pizzas",
"posId": "margherita-pizza-item-id",
"sortOrder": 2,
"description": "A selection of our famous pizzas",
"itemPosIds": [
"margherita-pizza-item-selection-id"
]
}ChoiceInput
The choices available for a given option.
Field Name | Description |
|---|---|
catererNote: String | A label supplied by the caterer for internal use. |
choiceTypeTags: [EntityTypeTag!] | A list of EntityTypeTag enums that apply to this choice. |
defaultChoice: Boolean | Whether this choice should be selected if the customer makes no selections. |
description: String | A description providing information about this choice for users. |
enableSubQuantities: Boolean = false | Enable the selection of what percentage of the order for which this choice applies. |
foodLabelingTags: [FoodLabelingTag!] | A list of FoodLabelingTag enums that apply to this choice. |
name: String! | A human friendly name to be displayed for this choice |
posId: String! | A client supplied id to easily match between systems |
selections: [ChoiceSelectionInput!]! | A collection of price selections to customize this item. |
sortOrder: Int | An integer to describe where in the option this choice should be displayed. |
{
"name": "Parmigiano Reggiano",
"posId": "parmigiano-reggiano-choice",
"selections": [ChoiceSelectionInput!]!,
"description": "Parmigiano Reggiano cheese",
"choiceTypeTags": [],
"foodLabelingTags": ["VEGETARIAN"],
"enableSubQuantities": false
}ChoiceSelectionInput
An object to describe the price increase for a choice depending on the Item selection modifier.
{
"price": 1.75,
"posId": "parmigiano-reggiano-choice-12-inch-selection-id",
"sortOrder": 1
},
{
"price": 3.75,
"posId": "parmigiano-reggiano-choice-16-inch-selection-id",
"sortOrder": 2
},
{
"price": 5.75,
"posId": "parmigiano-reggiano-choice-20-inch-selection-id",
"sortOrder": 3
}ItemInput
An item on the menu
Field Name | Description |
|---|---|
catererNote: String | An internal note providing additional information from the caterer about this item. |
channels: [Channel!]! | A list of ezCater ordering Channel enums for which this item is available. |
dayBeforeCutoffTime: Hour | A Hour enum indicating the day before cutoff time after which this item cannot be added to a next day order. Provide either leadTime or dayBeforeCutoffTime. |
description: String | A description providing information about this item for users. |
description2: String | An additional description providing more information about this item for users. |
foodLabelingTags: [FoodLabelingTag!] | A list of FoodLabelingTag enums that apply to this item. |
imageUrl: String | A link to an image to display for the item. Please make sure that the referenced file has one of the following extensions: gif, jpg, jpeg, png |
individualWrapStatus: IndividualWrapStatus | An IndividualWrapStatus enum indicating whether this item is individually. |
itemTypeTags: [EntityTypeTag!] | A list of EntityTypeTag enums that apply to this item. |
leadTime: Int | A number in minutes indicating the minimum amount of time required to prepare this item. Provide either leadTime or dayBeforeCutoffTime not both. |
name: String! | A human friendly name to be displayed for this item. |
optionPosIds: [String!] | A list of option.posId's to be included within this item. |
posId: String! | A client supplied item id to easily match between systems |
quantityOptions: String | A comma separated list of integers describing the quantities a customer can order. Some special codes are available:
|
quantityUnit: QuantityUnit | A QuantityUnit enum for a singular quantity of this item. |
selectionPrompt: String | An ItemSelectionInput type consisting of a collection of size and price selections to customize this item. |
selections: [ItemSelectionInput!]! | An list of choices to customize an item. Usually used for size/price selection |
sizeLabel: String | A size label for this item. |
sortOrder: Int | A number to determine where in the category the item will be displayed. |
taxCategory: TaxCategory! | A TaxCategory enum that applies to this item. |
vegetarianOption: Boolean | An indicator to customers that they can expect some of the item selections will be vegetarian. |
{
"name": "Margherita Pizza",
"posId": "margherita-pizza-item-id",
"channels": ["MARKETPLACE"],
"imageUrl": "https://your-domain.com/menu-item-images/margherita-pizza.jpg",
"selections": [ItemSelectionInput!],
"description": "Thin crust margherita pizza",
"taxCategory": "PREPARED_FOOD",
"quantityUnit": "PIZZA",
"itemTypeTags": [],
"optionPosIds": [
"cheese-addon-options-id"
],
"foodLabelingTags": ["POPULAR","VEGETARIAN"],
"individualWrapStatus": "NEVER"
}ItemSelectionInput
An object to describe options for modifying an item selection
Field Name | Description |
|---|---|
maxCalories: Int | The maximum of a range to describe how many calories are in this selection. |
minCalories: Int | The minimum of a range to describe how many calories are in this selection. |
posId: String! | A client supplied selection id to easily match between systems. |
price: Float! | A price for this selection. |
serves: Int | An integer to describe how many people the selection serves. |
size: String | A human friendly string to describe the size of this selection. |
sortOrder: Int! | An integer to describe where in the list this selection should be displayed. |
{
"price": 16.75,
"posId": "12-inch-pizza-item-selection-id",
"size": "12\" Pizza",
"serves": 2,
"minCalories": 512,
"maxCalories": 1024,
"sortOrder": 1
},
{
"price": 24.75,
"posId": "16-inch-pizza-item-selection-id",
"size": "16\" Pizza",
"serves": 4,
"minCalories": 512,
"maxCalories": 1024,
"sortOrder": 1
},
{
"price": 32.75,
"posId": "20-inch-pizza-item-selection-id",
"size": "20\" Pizza",
"serves": 8,
"minCalories": 512,
"maxCalories": 1024,
"sortOrder": 1
}MenuInput
Input object for creating a new menu
Field Name | Description |
|---|---|
locationId: UUID! | The ezCater caterer location UUID that this menu will be attached to. Caterer location UUID's can be retrieved using the Caterer List API. |
name: String! | A human friendly name for the menu. |
posId: String! | A client supplied menu id to easily match between systems. |
startDate: Date! | A date when the menu will become active. |
endDate: Date | A date when the menu will stop being active. |
categories: [CategoryInput!]! | A CategoryInput type consisting of a collection of categories for the menu. |
items: [ItemInput!]! | An ItemInput type consisting of a collection of items available within categories. |
options: [OptionInput!] | An OptionInput type consisting of a collection of options available within items. |
choices: [ChoiceInput!] | A ChoiceInput type consisting of a collection of choices available within options. |
{
"name": "Your Menu Name",
"locationId": "ezcater-caterer-id",
"posId": "your-menu-version-id",
"startDate": "2024-01-01",
"endDate": "2024-04-01",
"categories": [CategoryInput!]!,
"items": [ItemInput!]!,
"options": [OptionInput!],
"choices": [ChoiceInput!]
}OptionInput
A choice to customize a menu item
Field Name | Description |
|---|---|
catererLabel: String | A label supplied by the caterer for internal use. |
choicePosIds: [String!]! | A list of choice.posId's to be included within this option. |
customerPrompt: String | An alternative text to display to the customer. |
maxChoiceSelections: Int | The maximum number of selections a customer may choose. Leave nil for unlimited. |
minChoiceSelections: Int! | The minimum number of selections a customer must choose. |
name: String! | A human friendly name to be displayed for this option. |
posId: String! | A client supplied option id to easily match between systems. |
{
"name": "Cheese Addon",
"posId": "cheese-addon-options-id",
"catererLabel": "Cheese",
"choicePosIds": [
"feta-choice-id",
"parmigiano-reggiano-choice-id",
"parmesan-choice-id"
],
"customerPrompt": "Add Additional Cheese?",
"maxChoiceSelections": 1,
"minChoiceSelections": 1
}Enums
Channel
Ordering Channels in which certain menu items are available ezCater provides multiple channels to present menu data. The standard entry is MARKETPLACE however restaurant partners participating in the Meal Program it may be appropriate to use RELISH. Applied to the channels type as the field's return type.
Enum Name | Description |
|---|---|
MARKETPLACE | Determines whether a menu item is available on the Marketplace. |
RELISH | Determines whether a menu item is available on the Meal Program. |
EntityTypeTag
Tags applied to either an item or a choice to further describe the menu entity. Applied to the itemTypeTags and choiceTypeTags types as the field's return type. Please ensure all beverage and dessert items are tagged accordingly, including items that include a drink or dessert.
Enum Name | Description |
|---|---|
DESSERT | Identifies a menu entity as a dessert. |
DRINKS | Identifies a menu entity as a drink. |
ICE | Identifies a menu entity as ice. |
INDIVIDUALLY_PACKAGED_RELISH_SIDE | Identifies a menu entity as a individually packaged side when participating in the Meal Program channel. This tag is only relevant for choiceTypeTags. |
UTENSILS | Identifies a menu entity as a utensil. |
FoodLabelingTag
Tags applied to either an item or a choice to classifying the menu entity. Applied to the foodLableingTags type as the field's return type.
Enum Name | Description |
|---|---|
AWARD | This identifies that the food item has received some form of recognition or award for its quality or taste. |
GLUTEN_FREE | This identifies food items that do not contain gluten, making them suitable for individuals with gluten intolerance or celiac disease. |
HALAL | This identifies that the food item is prepared following Islamic dietary laws, making it permissible for consumption by individuals who follow halal dietary restrictions. |
HEALTHY | This identifies that the food item is recognized for its health benefits, which could include being low in fat, sugar, or sodium, and rich in essential nutrients. |
KOSHER | This identifies that the food item conforms to the dietary laws of kashrut, which are applicable to individuals who follow Jewish dietary guidelines. |
POPULAR | This identifies that the food items that are frequently ordered and favored by customers, indicating their popularity. |
SPICY | This identifies food items that are hot and spicy, catering to customers who prefer a bit of heat in their meals. |
STAR | This identifies food items that are highly recommended or signature dishes, often highlighted for their exceptional taste or quality. |
VEGAN | This identifies that the food item contains no animal products, making it suitable for vegan diets. |
VEGETARIAN | This identifies that the food items that contain no meat, making them suitable for vegetarian diets, although they may still include animal products like dairy or eggs. |
Hour
Hours of the day. Applied to the dayBeforeCutoffTime type as the field's return type.
Enum Name | Description |
|---|---|
EIGHT_AM | |
EIGHT_PM | |
ELEVEN_AM | |
ELEVEN_PM | |
FIVE_AM | |
FIVE_PM | |
FOUR_AM | |
FOUR_PM | |
NINE_AM | |
NINE_PM | |
ONE_AM | |
ONE_PM | |
SEVEN_AM | |
SEVEN_PM | |
SIX_AM | |
SIX_PM | |
TEN_AM | |
TEN_PM | |
THREE_AM | |
THREE_PM | |
TWELVE_AM | |
TWELVE_PM | |
TWO_AM | |
TWO_PM | |
IndividualWrapStatus
Describes whether food items are or could be individually wrapped. Applied to the individualWrapStatus type as the field's return type.
Enum Name | Description |
|---|---|
NEVER | This status indicates that the individual wrap option is never be available for the food item. |
POSSIBLE | This status indicates that the individual wrap option is available for the food item but is optional. |
WRAP | This status indicates that the individual wrap option will be used for the food item. |
QuantityUnit
Describes the unit for a singular quantity of an item. Applied to the quantityUnit type as the field's return type.
Enum Name | Description |
|---|---|
BAR | |
BOTTLE | |
BOWL | |
BOX | |
BUFFET | |
CAKE | |
CAN | |
CARAFE | |
DOZEN | |
FOOT | |
FULL_PAN | |
GALLON | |
HALF_GALLON | |
HALF_PAN | |
ITEM | |
KIT | |
LITER | |
PACKAGE | |
PAN | |
PERSON | |
PIE | |
PIECE | |
PINT | |
PIZZA | |
PLATTER | |
POUND | |
QUART | |
ROLL | |
SIX_PACK | |
SKEWER | |
SLIDER | |
TACO | |
TRAY | |
TWELVE_PACK | |
TWO_LITER | |
TaxCategory
Categories used to determine how items should be taxed. Applied to the taxCategory type as the field's return type.
Enum Name | Description |
|---|---|
BAKERY_ITEMS | Items that primarily include baked goods such as bread, pastries, and other bakery products. |
CAKES_AND_PIES | Desserts specifically categorized as cakes and pies. |
CANDY | Items that include various types of confectionery and candy. |
CHIPS_AND_SNACKS | Snack foods that primarily include chips and other similar snack items. |
COFFEE_TEA_MILK | Beverages classified under coffee, tea, and milk. |
DRESSINGS_AND_CONDIMENTS | Various types of dressings and condiments used to accompany meals. |
EXEMPT | Items that are exempt from sales tax under the given regulations. |
ICE_CREAM | Frozen desserts categorized specifically as ice cream. |
MISCELLANEOUS | Items that do not fit into other specific categories and are grouped as miscellaneous. |
NON_SODA_DRINKS | Beverages that are not classified as soda, including juices, water, and other non-carbonated drinks. |
PREPARED_FOOD | Food items that are prepared and ready for consumption, often part of catering and meal services. |
SANDWICHES | Items specifically identified as sandwiches. |
SODA | Carbonated soft drinks. |
WATER | Bottled or packaged water. |
Scalars
Boolean
The Boolean scalar type represents true or false.
Date
ISO-8601 Date-only string, e.g. 2017-12-14
Float
The Float scalar type represents signed double-precision fractional values as specified by IEEE 754.
ID
The ID scalar type represents a unique identifier, often used to refetch an object or as key for a cache. The ID type appears in a JSON response as a String; however, it is not intended to be human-readable. When expected as an input type, any string (such as "4") or integer (such as 4) input value will be accepted as an ID.
Int
The Int scalar type represents non-fractional signed whole numeric values. Int can represent values between -(2^31) and 2^31 - 1.
JSON
Represents untyped JSON
String
The String scalar type represents textual data, represented as UTF-8 character sequences. The String type is most often used by GraphQL to represent free-form human-readable text.
UUID
Universally unique identifier as defined by RFC 4122