Skip to main content

Order Schema Reference

Order Schema Reference

Objects

Address

An address record. Can be for users, caterers, brands, etc

Field Name

Description

city: String!

The name of the city where the address is located.

deliveryInstructions: String

Specific instructions provided for the delivery, such as parking details or particular points of entry.

name: String

The name associated with the address, which could be a business name or a contact person.

state: String!

The two-letter abbreviation for the state in which the address is located (e.g., MA for Massachusetts).

stateName: String

The full name of the state corresponding to the address (e.g., Massachusetts).

street: String!

The primary street address or street line 1.

street2: String

The secondary street address or street line 2, used for additional address components such as apartment or suite numbers.

street3: String

An additional address field for further granularity, often used for large complexes or extended addresses.

zip: String

The postal code for the address location.

Example

{
"city": "Boston",
"deliveryInstructions": "Ask for Jane at front desk",
"name": "",
"state": "MA",
"stateName": "Massachusetts",
"street": "12345 Restaurant Avenue",
"street2": null,
"street3": null,
"zip": "54321"
}

AcceptOrderPayload

Return type of AcceptOrder.

Field Name

Description

order: Order!

A customer's order for catering.

Example

{
"order": Order!
}

Caterer

A caterer representing a specific location providing catering

Field Name

Description

address: Address

The physical location or mailing address of a store or entity, which can include various subfields such as street, city, state, and zip code

live: Boolean!

Indicates whether an the caterer location is currently active, or operational.

name: String!

The name associated with the caterer location.

storeNumber: String

A unique identifier assigned to each store. It is used to differentiate between different stores in a chain or franchise.

uuid: UUID!

Example

{
"address": Address,
"live": true,
"name": "My Caterer Name",
"storeNumber": "00001",
"uuid": "ezcater-caterer-id"
}

CatererCart

Information about items on an order, from the caterer's perspective.

Field Name

Description

feesAndDiscounts(types: [FeeOrDiscountType!]): [LineItem!]!

Enumeration of various fees and discounts provided to the caterer.

orderItems: [OrderItem!]!

The specific items ordered by a customer. Each order item typically includes details such as the item's name, price, quantity, special instructions, and any associated options or customizations.

tableware: Tableware

The collection of utensils and other tableware items included with the order, such as forks, knives, or plates

The summarized financial details of the order, including subtotals, total due, taxes, tips, and overall amounts payable by the customer.

Example

{
"feesAndDiscounts": [LineItem!]!,
"orderItems": [OrderItem!]!,
"tableware": Tableware,
"totals": CatererTotals
}

CatererTotals

Various order totals, from the caterer's perspective

Field Name

Description

catererTotalDue: Float

The sum of all order item prices, line items, and tip with commission and cc fee subtracted

Example

{
"catererTotalDue": 171.02
}

Event

Information about the event an order is associated with (e.g. time, date, location, etc.)

Field Name

Description

address(shouldUseSearchAddress: Boolean = false): Address

The location at which the order is expected to be delivered by the caterer. When shouldUseSearchAddress: Boolean = true then it includes the address the customer searched for (relevant for takeout orders)

catererHandoffFoodTime: UTCTimestamp

The UTC timestamp indicating when the caterer must be ready to give prepared food to the customer or delivery partner.

contact: EventContact

On-site contact who will receive order on day-of event

customerProvidedName: String

The name for the event that was provided by the customer

headcount: Int

The number of people that an order is intended to serve

orderType(perspective: OrderTypePerspective): OrderTypeEnum![relink]

The specific manner in which an order is processed or fulfilled.

thirdPartyDeliveryPartner: String

The third party delivery partner's name.

timeZoneIdentifier: String

The Time Zone identifier of the event in a format like 'America/New_York'. Full list of Time Zone Identifiers here: https://en.wikipedia.org/wiki/List_of_tz_database_time_zones

timeZoneOffset: String

The UTC offset for time zone identifier, for example -4:00

timestamp: UTCTimestamp

The UTC timestamp indicating when the customer expects to receive food.

Example

{
"address": Address,
"catererHandoffFoodTime": "2025-03-27T16:15:00Z",
"contact": EventContact,
"customerProvidedName": "Team building event",
"headcount": 10,
"orderType": "DELIVERY",
"thirdPartyDeliveryPartner": null,
"timeZoneIdentifier": "America/New_York",
"timeZoneOffset": "-04:00",
"timestamp": "2025-03-27T16:30:00Z"
}

EventContact

On-site contact who will receive order on day-of event

Field Name

Description

name: String

The name of the on-site contact who will receive the order.

phone: String

The phone number of the on-site contact who will receive the order.

Example

{
"name": "Jane Doe",
"phone": "5555555555"
}

Money

Monetary information on tip and totals for an order

Field Name

Description

currency: Currency!

Allowed currency values for money.

subunits: Int!

Monetary amount in currency sub-units (e.g. For US Dollars, this would be an amount in pennies); limited to 32-bit integer (2_147_483_647 == $21_474_836.47)

subunitsV2: BigInt!

Monetary amount in currency sub-units (e.g. For US Dollars, this would be an amount in pennies)

Example

{
"currency": "USD",
"subunits": 23864,
"subunitsV2": "23864"
}

LineItem

Order line items like taxes, fees, and discounts

Field Name

Description

cost: Money

Monetary information for the order line item.

name: String

Name of the order line item.

Example

{
"cost": Money,
"name": "Delivery Fee"
}

Order

A customer's catering order.

Field Name

Description

caterer: Caterer[relink]

A caterer representing a specific location or store providing catering.

catererCart: CatererCart[relink]

The information about items on the order, from the caterer's perspective.

deliveryId: ID[relink]

The globally-unique identifier of the delivery for the order.

event: Event[relink]

Information about the order's event (e.g. time, date, location, etc.).

isTaxExempt: Boolean![relink]

Whether or not this order is tax exempt.

lifecycle: OrderLifecycle[relink]

A description of where an Order is in it's lifecycle

orderCustomer: OrderCustomer[relink]

Customer's contact information. For privacy reasons, this may not always be provided.

orderNumber: String

Reference identifier to be used when interacting with support at ezCater

orderSourceType: OrderSource[relink]

The channel that an order comes in through

taxableAddress: Address!

The address used to calculate sales tax for an order. This will either be the origin (store) address or the destination (event) address.

totals: OrderTotals[relink]

Monetary information on order's tip and totals

uuid: UUID!

The ID of the specific order.

Example

{
"caterer": Caterer,
"catererCart": CatererCart,
"deliveryId": "3593ce70-7227-4fd4-8a78-9591083d0674",
"event": Event,
"isTaxExempt": false,
"lifecycle": OrderLifecycle,
"orderCustomer": OrderCustomer,
"orderNumber": "O1O1O1",
"orderSourceType": "MARKETPLACE",
"taxableAddress": Address!,
"totals": OrderTotals,
"uuid": "your-ezcater-order-id"
}

OrderCustomer

A copy of the customer's contact information associated with an order

Field Name

Description

firstName: String

Customers first name.

lastName: String

Customers last name.

fullName: String

Customers full name.

Example

{
"firstName": "Jane",
"lastName": "Doe",
"fullName": "Jane Doe"
}

OrderItem

Individual selections from the menu a customer has made for an order.

Field Name

Description

Selected customizations for the order item.

labelFor: String

The name of the person attached to the order item.

menuItemSizeId: UUID

The ID corresponding with a specifically sized item in the caterer's menu.

menuItemSizeName: String

Size selected by the customer in string format.

name: String

Name of the order item.

noteToCaterer: String

A note to describe what's included in the item. Only visible to the caterer.

posItemId: String

The the posId for the size specified by the order item. This id represents the id of this item in an external API.

quantity: Int!

Quantity of the specific order item.

specialInstructions: String

Specific instructions written by the customer for this item

totalInSubunits: Money

Total cost of item, including customizations, in currency sub-units

uuid: UUID!

The ID of the specific order item.

Example

{
"customizations": [OrderItemCustomization!]!,
"labelFor": null,
"menuItemSizeId": "ezcater-menu-version-size-12-inch-pizza-item-selection-id",
"menuItemSizeName": "12\" Pizza",
"name": "Margherita Pizza",
"noteToCaterer": "12\" thin crust Margherita Pizza",
"posItemId": "12-inch-pizza-item-selection-id",
"quantity": 10,
"specialInstructions": "Please be careful not to burn crust",
"totalInSubunits": Money,
"uuid": "83ec5c82-fa68-437c-90d7-ad861a2c151b"
}

OrderItemCustomization

Customizations for an order item

Field Name

Description

customizationId: ID!

ID corresponding with a specifically sized item customization in the caterer's menu.

customizationTypeId: ID!

ID corresponding with a specific customization label in the caterer's menu.

customizationTypeName: String!

Name corresponding with a specific customization label in the caterer's menu.

name: String!

Name of the order item customization.

posCustomizationId: String

POS ID corresponding with a specific customization in the caterer's menu.

quantity: Int

Count of items with this customization. Note that these items may also have other customizations.

Example

{
"customizationId": "ezcater-menu-version-customization-parmigiano-reggiano-choice-12-inch-selection-id",
"customizationTypeId": "ezcater-menu-version-customization-type-cheese-addon-options-id",
"customizationTypeName": "Cheese Addon",
"name": "Parmigiano Reggiano",
"posCustomizationId": "parmigiano-reggiano-choice-12-inch-selection-id",
"quantity": 10
}

OrderLifecycle

Describes where an Order is in it's lifecycle

Field Name

Description

orderIsCurrently: String

Where the Order is in its lifecycle

Example

{
"orderIsCurrently": "accepted"
}

OrderTotals

Monetary information on tip and totals for an order

Field Name

Description

customerTotalDue: Money!

The total amount that the customer owes for their order.

pointOfSaleIntegrationFee: Money!

Fee charged for using a specific pos system.

salesTax: Money!

The sales tax collected for the order.

salesTaxRemittance: Money!

The sales tax remitted by ezCater.

subTotal: Money!

Total cost of all food items in an order.

tip: Money

The gratuities added to the order for the delivery or kitchen personnel.

Example

{
"customerTotalDue": Money!,
"pointOfSaleIntegrationFee": Money!,
"salesTax": Money!,
"salesTaxRemittance": Money!,
"subTotal": Money!,
"tip": Money!
}

RejectOrderPayload

Return type of RejectOrder

Field Name

Description

order: Order!

A customer's order for catering

Example

{
"order": Order!
}

Tableware

A collection of tableware choices

Field Name

Description

specialInstructions: String

Instructions written by customer about tableware needs

tablewareChoices: [TablewareChoice!]

Tableware selections a customer has made for the order

Example

{
"specialInstructions": null,
"tablewareChoices": [TablewareChoice!]
}

TablewareChoice

Complimentary tableware items, such as plates, napkins, utensils

Field Name

Description

choiceUuid: UUID!

ID corresponding with the tableware item in the caterer's menu.

isIncluded: Boolean!

This boolean term indicates whether the tableware is included on the order.

itemCount: Int!

The number of pieces of tableware included on the order.

name: String!

The name or description of the tableware item on the order.

Example

{
"choiceUuid": "7acc72ed-2240-4b9f-a903-f7873b94ba60",
"isIncluded": true,
"itemCount": 10,
"name": "Napkins"
}

Input Objects

RejectOrderInput

Parameters for rejecting an order

Field Name

Description

explanation: String

Provides a reason for rejecting the order. Not all of the reasons are relevant to an API integration.

Example

{
"explanation": "This location can't accept any more orders for that delivery date",
"reason": "AT_DAILY_CAPACITY"
}

Enums

Currency

Allowed currency values for money

Enum Name

Description

USD

Currency is in US dollars (USD).

FeeOrDiscountType

A list of fee or discounts types that can be included on an order. Applied to the feesAndDiscounts as a filter on the field's return type.

Enum Name

Description

ADJUSTMENT

Adjustments can represent various alterations to the order total, such as refunds or corrections to previous charges.

DELIVERY_FEE

Delivery fees are charged to cover the cost associated with delivering the order from the caterer to the customer.

DISCOUNT

Discounts are applied to reduce the total amount due for the customer, often as a promotional offer or incentive.

MISC_FEE

Miscellaneous fees can include various charges that do not fall under standard categories, such as concierge or specific administrative fees.

OrderTypeEnum

Allowed values for order type

Enum Name

Description

DELIVERY

The customer selects delivery, and the caterer is responsible for delivering the order themselves using their own fleet.

TAKEOUT

The customers selects to pick up their order directly from the caterer's location, eliminating the need for delivery.

THIRD_PARTY_DELIVERY

The customer selects delivery, and the caterer uses Dispatch, to deliver the order to the customer.

OrderTypePerspective

Allowed values for an order type perspective. Applied to the orderType as a filter on the field's return type.

Enum Name

Description

CATERER

Filters orderType information to align with the perspective of the Caterer.

CUSTOMER

Filters orderType information to align with the perspective of the Customer.

EZCATER

Filters orderType information to align with the perspective of ezCater.

OrderSource

Allowed values for order sources. An order source represents what user flow the order originated from

Enum Name

Description

CLUB_SODA

Order was placed through Club Soda, also known as Meal Program, a service that allows for grouping individual catering orders from multiple people into one larger order, typically for workplace consumption.

DIRECT_ENTRY

Order was placed through Direct Entry, a feature within ezCater that allows restaurant partners to submit their own orders directly into the system

EZ_ORDERING

Order was placed through Online Ordering, an ordering platform supported by ezCater that enables restaurant partners to facilitate online orders through their own websites.

MARKETPLACE

Order was placed through the Marketplace, ezCater’s primary platform where users can place catering orders from a broad range of partner restaurants.

RejectionReasonEnum

Allowed values for an order rejection reason, though some are unlikely to be relevant to an API integration.

Enum Name

Description

AT_DAILY_CAPACITY

Used when the caterer has reached their maximum order capacity for the entire day.

AT_HOURLY_CAPACITY

Used when the caterer has reached their maximum number of orders for a specific hour, rather than for the full day.

COMMISSION_OR_FEES_TOO_HIGH

Used when the caterer rejects an order because the commission or fees associated with it are deemed too high.

DISTANCE_TOO_FAR

Used when the caterer rejects an order because the delivery distance is beyond their serviceable range.

DOES_NOT_OFFER_TAKE_OUT_OR_DELIVERY

Used when the caterer doesn't provide either takeout or delivery services.

DOES_NOT_REMEMBER_SIGNING_UP_FOR_EZCATER

Used when the caterer claims no recollection of subscribing to ezCater services.

EMERGENCY_CLOSURE

Used when unforeseen circumstances cause the caterer to shut down temporarily.

HOLIDAY_CLOSURE

Used when the caterer has planned closures on holidays.

LACK_OF_INVENTORY

Used when the caterer has insufficient stock or ingredients.

LEAD_TIME_TOO_SHORT_TO_DELIVER

Used when there's insufficient time to deliver the order as requested.

LEAD_TIME_TOO_SHORT_TO_PREPARE

Used when there's not enough time to prepare the order.

MENU_INCORRECT

Used when there are issues with the menu items specified in the order.

MISSING_CUSTOMER_CONTACT_INFORMATION

Used when the order cannot be fulfilled due to the lack of necessary customer contact details.

NO_DRIVERS_AVAILABLE

Used when there are no drivers available to deliver the order.

NO_TIP

Used when the lack of a tip influences the caterer's decision to reject the order.

OWNERSHIP_CHANGED

Used when the ownership of the caterer has changed, which affects the order fulfillment capabilities.

PERMANENTLY_CLOSED

Used when the caterer has ceased operations permanently.

REASON_NOT_LISTED

Used when none of the listed reasons accurately describe the rejection. This is a catch-all category.

STAFF_SHORTAGE

Used when there are not enough staff members to handle the order.

TEMPORARILY_CLOSED

Used when the caterer is temporarily closed for short-term reasons.

WEATHER

Used when adverse weather conditions preventing order fulfillment.

WRONG_HOURS

Used when the order is placed outside of the caterer's operational hours.

Scalars

BigInt

Represents non-fractional signed whole numeric values. Since the value may exceed the size of a 32-bit integer, it's encoded as a string.

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.

ISO8601DateTime

An ISO 8601-encoded datetime @specifiedBy(url: https://tools.ietf.org/html/rfc3339).

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.

UTCTimestamp

iso8601 formatted date & timestamp in UTC.

UUID

Universally unique identifier as defined by RFC 4122.

Did this answer your question?