Skip to main content

Menu Schema Reference

Menu Schema Reference

Objects

MenuCreatePayload

Return type of MenuCreate.

Field Name

Description

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.

Field Name

Description

details: JSON

A list of more details related to an error or warning.

message: String

A warning or error message.

Example

{
"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

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

The collection of warnings generated by this MenuCreationRequest.

Example

{
"errors": [MenuCreationException!],
"menuUuid": "ezcater-menu-id",
"outcome": "success",
"status": "complete",
"warnings": [MenuCreationException!]
}

Inputs

Intercom callout — info

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.

Example

{
"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

A collection of price selections to customize this item.

sortOrder: Int

An integer to describe where in the option this choice should be displayed.

Example

{
"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.

Field Name

Description

posId: String!

A client supplied selection id to easily match between systems.

price: Float

A price for this selection.

sortOrder: Int!

An integer to describe where in the option this choice should be displayed.

Example

{
"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:
* >N will generate a list of numbers from N to 50, then 55-95 in multiples of 5.

* xN will generate a list of numbers from 1 to 50 in multiples of N.

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.

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.

Example

{
"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.

Example

{
"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[relink] 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.

An ItemInput type consisting of a collection of items available within categories.

An OptionInput type consisting of a collection of options available within items.

A ChoiceInput type consisting of a collection of choices available within options.

Example

{
"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.

Example

{
"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

Did this answer your question?