General requirements
Entities must be structured to be on one line per entity in the feeds (entities are separated by newline characters). For readability purposes, JSON examples on this page do not follow that structure. However, you must follow that structure when sending your feeds. For example, a menu entity must be structured like the following code:
{"@type": "Menu","name": "Coffee Shop A","@id": "1535"}
Each `Restaurant` entity may have two Service entities (one each for the `DELIVERY` and `TAKEOUT` service types). Each `Service` entity may only have one `Menu` entity.
Any sub-entities can be reused across multiple restaurants.
JSON value guidelines
Type coercion
A type of a JSON value can be different from the type defined in the schema as long as the value can be coerced into the required type. For example, string properties can accept both string as well as integer values as input. Similarly, integer properties can accept string value as long as string can be parsed into valid integer.
Type coercion also works for repeated properties. Repeated properties can accept values as input
without being enclosed in brackets []
. For example, the
OperationHours.serviceId
property accepts both "service_id"
and
["service_id"]
as valid inputs.
DateTime and Time Values
DateTime
is based on the schema.org type,
and, unless otherwise stated, must follow the ISO 8601 format and include the
date, the time, and the time zone. Use following syntax for DateTime
:
// DateTime format: YYYY-MM-DDTHH:MM:SS[∓HH:MM|Z]
For example:
2017-05-01T06:30:00-07:00 // UTC minus 7 hours 2017-05-01T06:30:00Z // UTC time zone. The optional "Z" suffix represents the UTC time zone.
Time
is the local time for a given restaurant or
service location's time zone, is also based on the schema.org type, and must also
follow the ISO 8601 format. Time uses the following syntax:
// Time format: THH:MM:SS
For example:
T08:08:00 // 8:08 AM
Note the following whenever you specify a DateTime
or Time
:
- The "T" prefix before the time is part of the format and is required.
- The time zone must be specified for
DATETIME
. It isn't required forTIME
. - The time must be specified in the local time for the restaurant or service.
Restaurant data
Restaurant (required)
A required entity to implement. Describes a restaurant.
The following table lists the properties for the Restaurant
type:
Property | Type | Description | |
---|---|---|---|
@type |
Const | Required. Value: |
|
@id |
String | Required. A unique identifier of the restaurant or delivery provider. Example: |
|
name |
String | Required. Name of the restaurant. Example: |
|
description |
String |
A description of the restaurant. Example: |
|
url |
Url |
The URL that represents the restaurant. The restaurant domain is preferred over the aggregator domain. Example: |
|
sameAs |
Url |
The official website for the restaurant. Example: |
|
telephone |
String |
Telephone number of the restaurant. Example: |
|
streetAddress |
String | Required. The street address of the restaurant. Example: |
|
addressLocality |
String | Required. The locality or city. Example: |
|
addressRegion |
String | Required. The region or state. Example: |
|
postalCode |
String | Required. The postal code. Example: |
|
addressCountry |
String | Required. Two-letter ISO 3166-1 alpha-2 country code. Example: |
|
latitude |
Number |
Latitude in degrees. Values are restricted to the range [[-90, 90]]. The precision should be at least 5 decimal places. Example: |
|
longitude |
Number |
Longitude in degrees. Values are restricted to the range [[-180, 180]]. The precision should be at least 5 decimal places. Example: |
|
dealId |
List<String> |
Applicable |
|
imprint |
String |
A restaurant imprint is a section of additional information about the restaurant, such as legal name, legal address, and registration number. This information can be formatted using " ". Example: |
|
economicOperator |
String |
Economic Operator information associated with the restaurant, if applicable. This information will be displayed within the Trader Info section. Text can be formatted using " ". Example: |
|
dateModified |
ISO Timestamp |
The last modified date and time of the Restaurant entity feed in ISO timestamp format but with type String. Example: |
The following example shows a Restaurant
element:
Example
{ "@type": "Restaurant", "@id": "10824", "name": "Pronto Wood Fired Pizzeria", "url": "https://www.provider.com/pronto-wood-fired-pizzeria", "telephone": "+16503659978", "streetAddress": "2560 El Camino Real", "addressLocality": "Palo Alto", "addressRegion": "CA", "postalCode": "94061", "addressCountry": "US", "latitude": 37.472842, "longitude": -122.217144 }
Deal
Types of discounts which can be applied to a cart.
The following table lists the properties for the Deal
type:
Property | Type | Description | |
---|---|---|---|
@type |
Const | Required. Value: |
|
@id |
String | Required. A unique identifier of the deal. Example: |
|
dealCode |
String | Required. Unique deal ID per deal per partner. This ID must uniquely identify the deal in your promotion system. Google sends you this identifier in the Example: |
|
applicableServiceType |
List<ServiceType > |
The service that this deal is applicable to. Default assumes a deal applicable to all. |
|
eligibleMaxOrders |
Integer |
This deal is only eligible when the user has less than or equal to this number of past successful orders. |
|
availabilityId |
List<String> |
The @id values of Availability entities which provide details on when the menu section is available. Example: |
|
isDisabled |
Boolean |
This overrides other validity checks. |
|
dealType |
DealType |
Required. Category of deal to apply the discount to. The category can be the whole cart total, service fees, or delivery fees. |
|
priceCurrency |
String | Required when
Required when
Currency (in 3-letter ISO 4217 format) of the discount. Example: |
|
eligibleTransactionVolumeMin |
Number |
Transaction volume, in a monetary unit, for which this promotion is valid. |
|
termsOfServiceUrl |
Url | Required. Human-readable terms of service documentation. |
|
dateModified |
ISO Timestamp |
The last modified date and time of the Deal entity feed in ISO timestamp format but with type String. Example: |
|
Exactly one of the following groups of properties is required. | |||
discount |
Group 1 | Number |
Value of the discount as a number. |
discountPercentage |
Group 2 | Number |
Value of the discount as a percentage of the original price. |
The following example shows a Deal
element:
Example 1
{ "@type": "Deal", "@id": "ONEDOLLARFEE", "dealCode": "THREEDOLLARFEE", "dealType": "CART_OFF", "availabilityId": [ "availability_may2020" ], "termsOfServiceUrl": "http://www.provider.com/onedollardeal", "applicableServiceType": [ "TAKEOUT" ], "discount": 3, "priceCurrency": "USD" }
Example 2
{ "@type": "Deal", "@id": "10PERCOFF", "dealCode": "10PERCOFF", "dealType": "CART_OFF", "availabilityId": [ "availability_weekdays_evening" ], "termsOfServiceUrl": "http://www.provider.com/deal", "discountPercentage": 10, "priceCurrency": "USD" }
Example 3
{ "@type": "Deal", "@id": "FREEDELIVERY", "dealCode": "FREEDELIVERY", "dealType": "DELIVERY_OFF", "availabilityId": [ "availability_may" ], "applicableServiceType": [ "DELIVERY" ], "termsOfServiceUrl": "http://www.provider.com/free_delivery_deal", "discountPercentage": 100, "eligibleTransactionVolumeMin": 25, "priceCurrency": "USD" }
Service data
Service (required)
Describes food ordering service details for a restaurant. Service
is a
required entity to implement.
The following table lists the properties for the Service
type:
Property | Type | Description | |
---|---|---|---|
@type |
Const | Required. Value: |
|
@id |
String | Required. Identifier for the fulfillment service. Example: |
|
serviceType |
ServiceType |
Required. The type of service being offered. Possible values are "DELIVERY" or "TAKEOUT". Example: |
|
restaurantId |
String | Required. The @id value of the Restaurant entity correlated to this Service entity. Example: |
|
menuId |
String | Required. The @id value of the Menu entity correlated to this Service entity. Example: |
|
dateModified |
ISO Timestamp |
The last modified date and time of the Service entity feed in ISO timestamp format. Example: |
|
isDisabled |
Boolean |
Indicates if the entity is disabled. Only use this type when you must disable the entity due to an unexpected event and you don't know when the service will be re-established (e.g. do not use for holidays). Example: |
|
servingConfig |
ServingConfig |
Serving config for the service used to control various features. e.g. disabling promo widget etc. |
|
actionLinkUrl |
String |
Contains a URL for a delivery/takeout service that will be used while migrating from end-to-end food ordering experience to redirect. |
The following example shows a Service
element:
Example 1
{ "@type": "Service", "@id": "10824/takeout", "serviceType": "TAKEOUT", "menuId": "10824", "restaurantId": "10824", "actionLinkUrl": "https://www.rwgpartnerwebsite.com/foodorderpickup/merchant_foepa_3" }
Example 2
{ "@type": "Service", "@id": "10824/delivery", "serviceType": "DELIVERY", "menuId": "10824", "restaurantId": "10824", "actionLinkUrl": "https://www.rwgpartnerwebsite.com/foodorderdelivery/merchant_foepa_3" }
ServiceArea
Describes the geographical region in which food can be delivered. This entity
is required to implement if the associated Service
entity has
serviceType
set to "DELIVERY".
The following table lists the properties for the ServiceArea
type:
Property | Type | Description | |
---|---|---|---|
@type |
Const | Required. Value: |
|
@id |
String | Required. A unique identifier of the service area. Example: |
|
serviceId |
List<String> | Required. The @id value of the Service entity correlated to this ServiceArea entity. Example: |
|
dateModified |
ISO Timestamp |
The last modified date and time of the ServiceArea entity feed in ISO timestamp format but with type String. Example: |
|
exclude |
Boolean |
Exclude this service area from the total delivery region. For example, a zip code can be excluded from a larger polygon area. |
|
Exactly one of the following groups of properties is required. | |||
polygon |
Group 1 | List<String> |
A polygon or multipolygon expressed as a series of three or more space delimited points. It is recommended that the first and last points be the same, but it is not required. Each point in a polygon or multipolygon is defined by a latitude point followed by a longitude point. You also must specify the points in a counter-clockwise direction. Example: |
geoMidpointLatitude |
Group 2 | Number |
Indicates the latitude coordinate at the center of the CIRCLE area. Example: |
geoMidpointLongitude |
Group 2 | Number |
Indicates the longitude coordinate at the center of the CIRCLE area. Example: |
geoRadius |
Group 2 | Integer |
Indicates the approximate radius (in meters) of the CIRCLE area. Example: |
postalCode |
Group 3 | String |
Indicates the postal code. Example: |
addressCountry |
Group 3 | String |
Indicates the two-letter ISO 3166-1 alpha-2 country code Example: |
The following example shows a ServiceArea
element:
Example
{ "@type": "ServiceArea", "@id": "28427", "serviceId": [ "10824/delivery" ], "polygon": [ "37.4818562 -122.25801303 37.48247836 -122.25801303 37.48434484 -122.25621319 37.48621133 -122.25424681 37.49181077 -122.24704744 37.49305509 -122.24541414 37.49429942 -122.2436143 37.49803238 -122.23821477 37.49803238 -122.21285044 37.49367726 -122.15885517 37.49056645 -122.15722187 37.48621133 -122.15542202 37.48558917 -122.15525548 37.4818562 -122.15525548 37.43191387 -122.17865343 37.43191387 -122.23444854" ] }
OperationHours (required)
Describes the ordering window in which users can access the flow and place ASAP
or future orders. Implementation of OperationHours
is required, and defaults
to representing operation at all hours on all days.
The OperationHours
opens
and closes
attributes specify the opening and closing times for
the online system that allows users to place orders. Within those online system
hours, use ServiceHours
to specify opening and closing hours
for when users' orders can be fulfilled.
Times must be specified in the local time for the service. Do not include a time
zone in an opens
value. If a time zone is specified, Google ignores this
information. For more information, see DateTime and Time formats.
The following table lists the properties for the OperationHours
type:
Property | Type | Description | |
---|---|---|---|
@type |
Const | Required. Value: |
|
@id |
String | Required. A unique identifier to the entity describing the ordering window which users can access the flow and place ASAP/future orders. Example: |
|
serviceId |
List<String> | Required. The @id value of the Service entity correlated to this OperationHours entity. Example: |
|
opens |
ISO Time (Local) |
Indicates the specific time of day in ISO format starting from which users' orders can be placed. Example: |
|
closes |
ISO Time (Local) |
Indicates the specific time of day in ISO format beyond which users' orders cannot be placed. Example: |
|
dayOfWeek |
List<DayOfWeek > |
A list of the day(s) of the week for which these operation hours are valid. Acceptable values are "MONDAY", "TUESDAY", "WEDNESDAY", "THURSDAY", "FRIDAY", "SATURDAY", and "SUNDAY". Example: |
|
validFrom |
ISO Timestamp | Required when
An ISO Timestamp indicating the beginning time of the ordering window which users can access the flow and place ASAP/future orders. Example: |
|
validThrough |
ISO Timestamp | Required when
An ISO Timestamp indicating the ending time of the ordering window beyond which users cannot access the flow and place ASAP/future orders. Example: |
|
isSpecialHour |
Boolean |
A boolean indicating if the OperationHours is for special hours. Acceptable values are "false" and "true". Example: |
|
dateModified |
ISO Timestamp |
The last modified date and time of the OperationHours entity feed in ISO timestamp format but with type String. Example: |
The following example shows a OperationHours
element:
Example 1
{ "@type": "OperationHours", "@id": "10824/deliveryOh", "serviceId": [ "10824/delivery" ], "isSpecialHour": false }
Example 2
{ "@type": "OperationHours", "@id": "10824/takeoutOh", "serviceId": [ "10824/takeout" ], "isSpecialHour": false }
ServiceHours (required)
Describes the fulfillment window in which users can choose fulfillment slots
(ASAP or future slots). Implementation of ServiceHours
is required.
The OperationHours
opens
and closes
attributes specify the opening and closing times for
the online system that allows users to place orders. Within those online system
hours, use ServiceHours
to specify opening and closing hours
for when users' orders can be fulfilled.
Times must be specified in the local time for the service. Do not include a time
zone in an opens
value. If a time zone is specified, Google ignores this
information. For more information, see DateTime and Time formats.
The following table lists the properties for the ServiceHours
type:
Property | Type | Description | |
---|---|---|---|
@type |
Const | Required. Value: |
|
@id |
String | Required. A unique identifier of the entity describing the fulfillment window which users can choose fulfillment slots i.e. ASAP or future slots. Example: |
|
orderType |
OrderType |
Required. A String indicating if the service hours apply to ASAP or advanced orders. Acceptable values are "ASAP" and "ADVANCE". Example: |
|
serviceId |
List<String> | Required. The @id value of the Service entity correlated to this ServiceHours entity. Example: |
|
operationHoursId |
List<String> | Required when
The @id value of the OperationHours entity correlated to this ServiceHours entity. Example: |
|
opens |
ISO Time (Local) |
Indicates the specific time of day in ISO format starting from which users' orders can be fulfilled. Example: |
|
closes |
ISO Time (Local) |
Indicates the specific time of day in ISO format beyond which users' orders cannot be fulfilled. Example: |
|
dayOfWeek |
List<DayOfWeek > |
A list of the day(s) of the week for which these operation hours are valid. Example: |
|
validFrom |
ISO Timestamp | Required when
An ISO Timestamp indicating the beginning time of the ordering window which users can access the flow and place ASAP/future orders. Example: |
|
validThrough |
ISO Timestamp | Required when
An ISO Timestamp indicating the ending time of the ordering window beyond which users cannot access the flow and place ASAP/future orders. Example: |
|
isSpecialHour |
Boolean |
A boolean indicating if the OperationHours is for special hours. Acceptable values are "false" and "true". Example: |
|
leadTimeMin |
Integer |
Minimum estimated delivery/pickup time, in minutes, once the ASAP order has been placed. We strongly recommend that you set this property. Example: |
|
leadTimeMax |
Integer |
Maximum estimated delivery/pickup time, in minutes, once the ASAP order has been placed. We strongly recommend that you set this property. Example: |
|
advanceBookingRequirementMin |
Integer | Required when
The minimum number of minutes from the ordering time when the advance order can be fulfilled. For example, if an advance order needs at least 60 minutes to be fulfilled, then the advanceBookingRequirementMin is 60. Example: |
|
advanceBookingRequirementMax |
Integer | Required when
The maximum number of minutes from the ordering time when the advance order can be fulfilled. For example, if an advance order is restricted from being fulfilled more than 2 days later, then the advanceBookingRequirementMax value is 2880. Example: |
|
advanceBookingSlotInterval |
String | Required when
Interval between two successive advance booking slot times. For example: If opens and closes are 8am and 8pm and the advanceBookingSlotInterval is 15 minutes, then the user can choose fulfillment times of 8am, 8:15am, 8:30am, 8:45am, and so on until 8pm. Duration must be specified as an ISO Period duration. For example: "PT15M" means 15 minute intervals. Example: |
|
dateModified |
ISO Timestamp |
The last modified date and time of the ServiceHours entity feed in ISO timestamp format but with type String. Example: |
The following example shows a ServiceHours
element:
Example 1
{ "@type": "ServiceHours", "@id": "613741/delivery", "orderType": "ASAP", "serviceId": [ "10824/delivery" ], "opens": "T00:00", "closes": "T00:00", "isSpecialHour": true, "validFrom": "2017-12-25T00:00:00-07:00", "validThrough": "2017-12-25T23:59:00-07:00" }
Example 2
{ "@type": "ServiceHours", "@id": "10824/takeoutSh_0", "orderType": "ASAP", "serviceId": [ "10824/takeout" ], "operationHoursId": [ "10824/takeoutOh" ], "opens": "11:00", "closes": "21:00", "dayOfWeek": [ "MONDAY", "TUESDAY", "WEDNESDAY", "THURSDAY" ], "isSpecialHour": false }
Fee
Describes a fee. If the associated Service
entity has
serviceType
set to "DELIVERY", then a Fee
with feeType
set to
"DELIVERY" is required.
The following table lists the properties for the Fee
type:
Property | Type | Description | |
---|---|---|---|
@type |
Const | Required. Value: |
|
@id |
String | Required. A unique identifier of the entity describing the fee. Example: |
|
serviceId |
List<String> | Required. The @id value of the Service entity correlated to this Fee entity. Example: |
|
feeType |
FeeType |
Required. A String indicating if the fee applies to delivery or service orders. Acceptable values are "DELIVERY" and "SERVICE". Example: |
|
priceCurrency |
String | Required. The 3-letter ISO 4217 currency code. Example: |
|
basePrice |
Number |
Base price of the fee, applicable when Example: |
|
minPrice |
Number |
Min fee, caps fee value when Example: |
|
maxPrice |
Number |
Max fee, caps fee value when Example: |
|
eligibleRegion |
List<String> |
The @id of the ServiceArea for the geo-political region(s) for which the fee is valid. Use this property only if delivery fees vary by the region. Example: |
|
eligibleTransactionVolumeMin |
Number |
The minimum transaction volume, in a monetary unit, for which this fee specification is valid. Example: |
|
eligibleTransactionVolumeMax |
Number |
The maximum transaction volume, in a monetary unit, for which this fee specification is valid. For example, the fee does not apply if above a certain order volume. Example: |
|
validFrom |
ISO Timestamp |
An ISO Timestamp indicating the beginning time of when the fee is valid. Example: |
|
validThrough |
ISO Timestamp |
An ISO Timestamp indicating the ending time beyond which the fee is invalid. Example: |
|
dateModified |
ISO Timestamp |
The last modified date and time of the Fee entity feed in ISO timestamp format but with type String. Example: |
|
priority |
Number |
A positive, non-zero value. When more than 1 fee applies to the user's cart, the highest priority fee will take precedence over the lower ones. If this field is provided, the priority will always take precedence over a calculated priority. Example: |
|
Exactly one of the following groups of properties is required. | |||
price |
Group 1 | Number |
Price of the fee. If price is not fixed, minPrice and maxPrice can be provided instead of price. Example: |
percentageOfCart |
Group 2 | Number |
Fee in percentage of the cart value. Acceptable values are float values between 0 and 100 inclusive. Example: |
pricePerMeter |
Group 3 | Number |
Fee per meter for radial distance from user. e.g. If distance to user is 5km and rate is $0.001 then user fee will be $5. Example: |
The following example shows a Fee
element:
Example 1
{ "@type": "Fee", "@id": "28427", "serviceId": [ "10824/delivery" ], "feeType": "DELIVERY", "priceCurrency": "USD", "eligibleRegion": [ "28427" ], "eligibleTransactionVolumeMin": 20, "price": 5 }
Example 2
{ "@type": "Fee", "@id": "28427", "serviceId": [ "10824/delivery" ], "feeType": "DELIVERY", "priceCurrency": "USD", "eligibleRegion": [ "28427" ], "eligibleTransactionVolumeMin": 20, "pricePerMeter": 0.0005, "basePrice": 4 }
Example 3
{ "@type": "Fee", "@id": "28427", "serviceId": [ "10824/delivery" ], "feeType": "DELIVERY", "priceCurrency": "USD", "eligibleRegion": [ "28427" ], "eligibleTransactionVolumeMin": 20, "pricePerMeter": 0.0005, "basePrice": 4, "minPrice": 5, "maxPrice": 50 }
Example 4
{ "@type": "Fee", "@id": "28427", "serviceId": [ "10824/delivery" ], "feeType": "DELIVERY", "priceCurrency": "USD", "eligibleRegion": [ "28427" ], "eligibleTransactionVolumeMin": 20, "percentageOfCart": 5, "basePrice": 4 }
Example 5
{ "@type": "Fee", "@id": "28427", "serviceId": [ "10824/delivery" ], "feeType": "DELIVERY", "priceCurrency": "USD", "eligibleRegion": [ "28427" ], "eligibleTransactionVolumeMin": 20, "percentageOfCart": 5, "basePrice": 4, "minPrice": 5, "maxPrice": 50 }
Menu Data
Menu (required)
A required entity to implement. Describes a menu.
The following table lists the properties for the Menu
type:
Property | Type | Description | |
---|---|---|---|
@type |
Const | Required. Value: |
|
@id |
String | Required. A unique identifier of the menu. Example: |
|
name |
String |
The text that can identify the Menu when a user is browsing the menu. Example: |
|
disclaimer |
String |
Disclaimer for the menu. For example, nutritional information disclosure and allergen disclosure. Example: |
|
disclaimerUrl |
Url |
URL pointing to a page providing more details on the disclaimer. |
|
dateModified |
ISO Timestamp |
The last modified date and time of the Menu entity feed in ISO timestamp format but with type String. Example: |
The following example shows a Menu
element:
Example
{ "@type": "Menu", "@id": "10824" }
MenuSection
An optional entity to implement. Describes a particular section in the menu.
The following table lists the properties for the MenuSection
type:
Property | Type | Description | |
---|---|---|---|
@type |
Const | Required. Value: |
|
@id |
String | Required. A unique identifier of the menu section. Example: |
|
menuId |
List<ReverseReference > |
The @id value of the Menu entity correlated to this Example: |
|
menuSectionId |
List<String> |
A list of the @id values of the child Important: You must only use one of Example: |
|
parentMenuSectionId |
List<ReverseReference > |
The @id value of the parent Important: You must only use one of Example: |
|
name |
String | Required. The text that can identify the Example: |
|
description |
String |
A description of the menu section. Example: |
|
image |
Url |
The URL of an image of the menu section. Example: |
|
menuItemId |
List<String> |
A list of the @id values of the Important: You must only use one of Example: |
|
parentMenuItemId |
List<ReverseReference > |
A list of the @id values of the parent Important: You must only use one of Example: |
|
parentMenuItemOptionId |
List<ReverseReference > |
A list of the @id values of the parent Important: You must only use one of Example: |
|
eligibleQuantityMax |
Integer |
The maximum number of addon which can be selected in the add-on section. Example: |
|
eligibleQuantityMin |
Integer |
The minimum number of addon which should be selected in the add-on section. Example: |
|
defaultItemId |
List<String> |
A list of @id referencing Example: |
|
availabilityId |
List<String> |
The @id values of Availability entities which provide details on when the menu section is available. Example: |
|
numberOfFreeAddOns |
Integer |
Indicates the number of add-ons a user can select at no charge. Only valid for add-on menu sections. Example: |
|
dateModified |
ISO Timestamp |
The last modified date and time of the Example: |
|
applicableServiceType |
List<ServiceType > |
The service that this |
|
offeredById |
List<String> |
The @id values of Example: |
The following example shows a MenuSection
element:
Example 1
{ "@type": "MenuSection", "@id": "853705", "menuId": [ { "@id": "10824", "displayOrder": 853705 } ], "menuSectionId": [ 12345, 43645 ], "name": "Pasta", "applicableServiceType": [ "TAKEOUT" ], "offeredById": [ "italian_restaurant_location_1" ] }
Example 2
{ "@type": "MenuSection", "@id": "427484", "menuId": [ { "@id": "4287", "displayOrder": 964376 } ], "menuItemId": [ 46784, 42728 ], "name": "Burger", "applicableServiceType": [ "TAKEOUT", "DELIVERY" ] }
Example 3
{ "@type": "MenuSection", "@id": "3138486", "name": "Choose a side:", "parentMenuItemId": [ { "@id": "6680295", "displayOrder": 3138486 } ], "eligibleQuantityMax": "5", "numberOfFreeAddOns": "2" }
Example 4
{ "@type": "MenuSection", "@id": "3138482", "name": "Additional Pizza Toppings", "parentMenuItemId": [ { "@id": "6680246", "displayOrder": 3138482 } ], "eligibleQuantityMax": "3" }
Availability
An optional entity to implement. Describes the time period during which a
MenuSection
entity is served.
The following table lists the properties for the Availability
type:
Property | Type | Description | |
---|---|---|---|
@type |
Const | Required. Value: |
|
@id |
String | Required. A unique identifier of the entity describing the menu section availability. Example: |
|
availabilityStarts |
ISO Time (Local) |
The ISO Timestamp indicating the starting time in which the menu section availability is valid. Example: |
|
availabilityEnds |
ISO Time (Local) |
The ISO Timestamp indicating the ending time beyond which the menu section availability is invalid. Example: |
|
availableDay |
List<DayOfWeek > |
A list of the day(s) of the week for which the menu section availability is valid. Example: |
|
validFrom |
ISO Timestamp |
An ISO Timestamp indicating the beginning time in which the menu section availability is valid. Example: |
|
validThrough |
ISO Timestamp |
An ISO Timestamp indicating the ending time beyond which the menu section availability is invalid. Example: |
|
dateModified |
ISO Timestamp |
The last modified date and time of the Availability entity feed in ISO timestamp format but with type String. Example: |
The following example shows a Availability
element:
Example
{ "@type": "Availability", "@id": "85343705", "availabilityStarts": "06:00", "availabilityEnds": "22:30", "availableDay": [ "SATURDAY", "SUNDAY" ] }
MenuItem (required)
A required entity to implement. Describes an item in a Menu
entity.
The following table lists the properties for the MenuItem
type:
Property | Type | Description | |
---|---|---|---|
@type |
Const | Required. Value: |
|
@id |
String | Required. A unique identifier of the menu item. Example: |
|
name |
String | Required. The text that can identify the Example: |
|
description |
String |
A description of the menu item. Example: |
|
image |
Url |
A URL of an image of the menu item. Example: |
|
parentMenuSectionId |
List<ReverseReference > |
A list of the @id values of the parent Important: You must only use one of Example: |
|
menuAddOnId |
List<String> |
A list of the @id values of the Important: You must only use one of Example: |
|
nutrition |
NutritionInformation |
Nutrition information for the dish, most notably calories. Example: |
|
allergen |
List<Allergen > |
Allergens of this MenuItem. Example: |
|
additive |
List<Additive > |
Additives of this MenuItem. Example: |
|
suitableDiet |
List<RestrictedDiet > |
The dish complies with the described dietary restriction. Example: |
|
depositInfo |
DepositInfo |
Packaging and recycling information of this MenuItem. Example: |
|
numberOfServings |
Integer |
Number of servings available in a given menu item. Example: |
|
dateModified |
ISO Timestamp |
The last modified date and time of the Example: |
The following example shows a MenuItem
element:
Example 1
{ "@type": "MenuItem", "@id": "18931508", "name": "Sauteed Baby Spinach", "parentMenuSectionId": [ { "@id": "3138479", "displayOrder": 18931508 } ] }
Example 2
{ "@type": "MenuItem", "@id": "18931508", "name": "Hamburger", "parentMenuSectionId": [ { "@id": "4645747", "displayOrder": 12345 } ], "nutrition": { "calories": "400 cal" }, "allergen": [ { "allergenType": "GLUTEN", "levelOfContainment": "CONTAINS" } ], "additive": [ { "additiveName": "Sodium nitrite", "levelOfContainment": "CONTAINS" } ], "suitableDiet": [ "DIABETIC", "LOW_FAT" ] }
MenuItemOption
An optional entity to implement. Describes choices that a user would be required to make when selecting a dish/combo. The user must select an option, otherwise the order is considered invalid (e.g. the user must choose small, medium, or large for a pizza).
The following table lists the properties for the MenuItemOption
type:
Property | Type | Description | |
---|---|---|---|
@type |
Const |
Value: |
|
@id |
String | Required. A unique identifier of the menu item option. Example: |
|
menuItemId |
ReverseReference |
Required. The @id value of the Example: |
|
optionType |
OptionType |
A String indicating if the menu item option is categorized on size, option, or pizza side. Acceptable values are "SIZE", "OPTION", and "PIZZA_SIDE". "SIZE": Size of the MenuItemOption. For example, small, medium, or large. "OPTION": Any variation other than size (e.g. a dish that comes either as a salad or a sandwich). If you can't distinguish between "SIZE" and "OPTION", then use "OPTION". "PIZZA_SIDE": Specific to pizzas: example being this Example: |
|
value |
String or
PizzaSide |
Required when
A string value or enum value. Enum values are specific to PIZZA_SIDE option type. |
|
applicableParentOptionValue |
String |
A String containing the value of parent item’s option value for which this option is available. Example: |
|
menuAddOnId |
List<String> |
A list of the @id values of the Important: You must only use one of Example: |
|
nutrition |
NutritionInformation |
Nutrition information for the dish, most notably calories. Example: |
|
allergen |
List<Allergen > |
Allergens of this MenuItem. Example: |
|
additive |
List<Additive > |
Additives of this MenuItem. Example: |
|
depositInfo |
DepositInfo |
The packaging and recycling information of this MenuItem. Example: |
|
numberOfServings |
Integer |
Number of servings available in a given menu item option. Example: |
|
dateModified |
ISO Timestamp |
The last modified date and time of the MenuItemOption entity feed in ISO timestamp format but with type String. Example: |
The following example shows a MenuItemOption
element:
Example 1
{ "@type": "MenuItemOption", "@id": "56177944", "menuItemId": { "@id": "18930213", "displayOrder": 1234 }, "optionType": "PIZZA_SIDE", "value": "PIZZA_SIDE_LEFT" }
Example 2
{ "@type": "MenuItemOption", "@id": "56177944", "menuItemId": { "@id": "18930213", "displayOrder": 1234 }, "applicableParentOptionValue": "Small Pizza" }
MenuItemOffer (required)
A required entity to implement. Describes an offer for a MenuItem
or MenuItemOption
entity.
The following table lists the properties for the MenuItemOffer
type:
Property | Type | Description | |
---|---|---|---|
@type |
Const | Required. Value: |
|
@id |
String | Required. A unique identifier of the menu item offer. Example: |
|
sku |
String | Required. An identifier of the menu item offer. The sku values could be different or the same across multiple menu item offer entities. The sku value will be set in order when we make an API call to you. Example: |
|
price |
Number | Required. Price of the menu item offer. Example: |
|
priceCurrency |
String | Required. The 3-letter ISO 4217 currency code. Example: |
|
availabilityId |
List<String> |
The @id values of Availability entities which provide details on when the menu item offer is available. Example: |
|
eligibleQuantityMin |
Number |
The minimum ordering quantity for which the Example: |
|
eligibleQuantityMax |
Number |
The maximum ordering quantity for which the Example: |
|
inventoryLevel |
Number |
The current approximate inventory level for the item or items corresponding to this MenuItemOffer. Example: |
|
dateModified |
ISO Timestamp |
The last modified date and time of the Example: |
|
applicableServiceType |
List<ServiceType > |
The service that this |
|
offeredById |
List<String> |
The @id values of Example: |
|
Exactly one of the following groups of properties is required. | |||
menuItemId |
Group 1 | String |
The @id value of the Example: |
menuItemOptionId |
Group 2 | String |
The @id value of the Example: |
The following example shows a MenuItemOffer
element:
Example
{ "@type": "MenuItemOffer", "@id": "6680262", "sku": "offer-mediterranean-bagel", "menuItemId": "896532", "price": 15.5, "priceCurrency": "USD", "applicableServiceType": [ "DELIVERY" ], "offeredById": [ "bagel_shop_location_5" ] }
Common
ReverseReference
The following table lists the properties for the ReverseReference
type:
Property | Type | Description | |
---|---|---|---|
@id |
String | Required. @id of the parent entity. |
|
displayOrder |
Integer | Required. Display order of item within the parent. |
NutritionInformation
The following table lists the properties for the NutritionInformation
type:
Property | Type | Description | |
---|---|---|---|
description |
String |
Nutrition information in free text. For example "Contains preservatives". |
|
calories |
String |
The number of calories in Cal, kcal, or kJ, using the following format: value Cal or min-max Cal Example: |
|
sodiumContent |
String |
The number of mg or g of sodium, using the following format: value g or min-max g Example: |
The following example shows a NutritionInformation
element:
Example
{ "calories": "120-150 Cal", "sodiumContent": "100 mg" }
Allergen
The following table lists the properties for the Allergen
type:
Property | Type | Description | |
---|---|---|---|
allergenType |
AllergenType |
Required. Type of allergen. |
|
levelOfContainment |
ContainmentLevel |
Level of a given allergen in the menu item. |
The following example shows a Allergen
element:
Example
{ "allergenType": "PEANUTS", "levelOfContainment": "MAY_CONTAIN" }
Additive
The following table lists the properties for the Additive
type:
Property | Type | Description | |
---|---|---|---|
additiveName |
String | Required. Name of the additive. |
|
levelOfContainment |
ContainmentLevel |
Level of a given additive in the menu item. |
The following example shows a Additive
element:
Example
{ "additiveName": "Sodium nitrite", "levelOfContainment": "CONTAINS" }
DepositInfo
The following table lists the properties for the DepositInfo
type:
Property | Type | Description | |
---|---|---|---|
depositCode |
DepositCode |
Deposit Code. |
|
depositValue |
Number |
Numerical value of the item's deposit, for example, when recycled. |
|
depositValueCurrency |
String |
Currency of the deposit value |
The following example shows a DepositInfo
element:
Example
{ "depositCode": "RECYCLABLE", "depositValue": 0.05, "depositValueCurrency": "USD" }
ServingConfig
Serving config for the service used to control various features. e.g. disabling promo widget etc.
The following table lists the properties for the ServingConfig
type:
Property | Type | Description | |
---|---|---|---|
disableOrderInstructions |
Boolean |
Hides the ability to specify order instructions. |
|
disableMenuItemSpecialInstructions |
Boolean |
Hides the ability to specify special instructions on a menu item. |
|
disableTipWidget |
Boolean |
Hides the tip widget in the 'Place Order' page of the ordering flow. |
|
disablePromoWidget |
Boolean |
Hides the promo widget in the 'Place Order' page of the ordering flow. |
|
menuItemSpecialInstructionsMaxLength |
Number |
Specifies the max number of characters a menu item special instruction can contain. |
|
orderInstructionsMaxLength |
Number |
Specifies the max number of characters an order instruction can contain. |
The following example shows a ServingConfig
element:
Example 1
{ "disableMenuItemSpecialInstructions": true }
Example 2
{ "disableTipWidget": true, "disablePromoWidget": true }
Example 3
{ "menuItemSpecialInstructionsMaxLength": 250, "orderInstructionsMaxLength": 1000 }
Enums
DayOfWeek
The DayOfWeek
type has the following possible values:
MONDAY
TUESDAY
WEDNESDAY
THURSDAY
FRIDAY
SATURDAY
SUNDAY
ServiceType
The ServiceType
type has the following possible values:
DELIVERY
TAKEOUT
OrderType
The OrderType
type has the following possible values:
ASAP
ADVANCE
FeeType
The FeeType
type has the following possible values:
DELIVERY
SERVICE
OptionType
The OptionType
type has the following possible values:
SIZE
OPTION
PIZZA_SIDE
PizzaSide
The PizzaSide
type has the following possible values:
PIZZA_SIDE_LEFT
PIZZA_SIDE_RIGHT
PIZZA_SIDE_WHOLE
AllergenType
Type of allergens per gs1:AllergenTypeCode.
The AllergenType
type has the following possible values:
ALMONDS
ALPHA_ISOMETHYL_IONONE
ALCOHOL
AMYL_CINNAMAL
ANISE_ALCOHOL
BARLEY
BENZYL_ALCOHOL
BENZYL_BENZOATE
BENZYL_CINNAMATE
BENZYL_SALICYLATE
BRAZIL_NUTS
BUTYLPHENYL_METHYLPROPIONATE
CARROTS
CASHEW_NUTS
CELERY
CEREALS_CONTAINING_GLUTEN
CINNAMAL
CINNAMYL_ALCOHOL
CITRAL
CITRONELLOL
COCOA
CORIANDER
CORN
COUMARIN
CRUSTACEANS
EGGS
EUGENOL
EVERNIA_FURFURACEA
EVERNIA_PRUNASTRI
FARNESOL
FISH
GERANIOL
GLUTEN
HAZELNUTS
HEXYL_CINNAMAL
HYDROXYCITRONELLAL
HYDROXYISOHEXYL_3_CYCLOHEXENE_CARBOXALDEHYDE_ISOEUGENOL_LIMONENE_LINAL
KAMUT
LACTOSE
LUPINE
MACADAMIA_NUTS
METHYL_2_OCTYNOATE
MILK
MOLLUSCS
MUSTARD
NO_DECLARED_ALLERGENS
OAT
PEANUTS
PEAS
PECAN_NUTS
PISTACHIOS
POD_FRUITS
QUEENSLAND_NUTS
RYE
SESAME_SEEDS
SOYBEANS
SPELT
SULPHUR_DIOXIDE
TREE_NUTS
TREE_NUT_TRACES
WALNUTS
WHEAT
ContainmentLevel
The ContainmentLevel
type has the following possible values:
CONTAINS
FREE_FROM
MAY_CONTAIN
DepositCode
The DepositCode
type has the following possible values:
REUSABLE
RECYCLABLE
DealType
Category of deal to apply the discount to. The category can be the whole cart total or delivery fees.
The DealType
type has the following possible values:
CART_OFF
DELIVERY_OFF
RestrictedDiet
Type of restricted diets per schema.org:RestrictedDiet.
The RestrictedDiet
type has the following possible values:
DIABETIC
GLUTEN_FREE
HALAL
HINDU
KOSHER
LOW_CALORIE
LOW_FAT
LOW_LACTOSE
LOW_SALT
VEGAN
VEGETARIAN