关系型商品目录架构

本页介绍了您向 Google 提供的端到端订餐数据 Feed(食品目录规范)的格式。 如需获取此信息的机器可读版本,您可以下载 JSON 架构

常规要求

实体必须采用结构化形式,在 Feed 中每个实体占一行(实体之间以换行符分隔)。为方便阅读,本页中的 JSON 示例不遵循该结构。不过,您在发送 Feed 时必须遵循该结构。例如,菜单实体必须采用以下代码结构:

{"@type": "Menu","name": "Coffee Shop A","@id": "1535"}

每个 `Restaurant` 实体可以有两个 Service 实体(分别对应于 `DELIVERY` 和 `TAKEOUT` 服务类型)。每个 `Service` 实体只能有一个 `Menu` 实体。

任何子实体都可以在多个餐厅中重复使用。

JSON 值准则

类型强制转换

JSON 值的类型可以与架构中定义的类型不同,只要该值可以强制转换为所需的类型即可。例如,字符串属性可以接受字符串和整数值作为输入。同样,整数属性可以接受字符串值,前提是字符串可以解析为有效的整数。

类型强制转换也适用于重复属性。重复的属性可以接受值作为输入,而无需用括号 [] 括起来。例如,OperationHours.serviceId 属性接受 "service_id"["service_id"] 作为有效输入。

DateTime 和时间值

DateTime 基于 schema.org 类型,除非另有说明,否则必须采用 ISO 8601 格式,并包含日期、时间和时区。对 DateTime 使用以下语法:

// DateTime format:
YYYY-MM-DDTHH:MM:SS[HH:MM|Z]

例如:

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 是给定餐厅或服务地点所在时区的当地时间,也基于 schema.org 类型,并且还必须遵循 ISO 8601 格式。时间使用以下语法:

// Time format:
THH:MM:SS

例如:

T08:08:00 // 8:08 AM

每当您指定 DateTimeTime 时,请注意以下事项:

  • 时间前面的“T”前缀是格式的一部分,且是必需的。
  • 必须为 DATETIME 指定时区。TIME 不需要此参数。
  • 时间必须以相应餐厅或服务的当地时间指定。

餐厅数据

餐厅(必填)

必须实现的实体。描述餐厅。

下表列出了 Restaurant 类型的属性:

属性 类型 说明
@type Const

必填。

值:Restaurant

@id String

必填。

餐厅或送餐服务提供商的唯一标识符。

示例:restaurant_1

name String

必填。

餐厅的名称。

示例:Foo

description String

餐厅的说明。

示例:Best seafood in town

url 网址

表示相应餐厅的网址。餐厅网域优先于集合商家网域。

示例:http://www.provider.com/somerestaurant

sameAs 网址

餐厅的官方网站。

示例:http://www.provider2.com/somerestaurant

telephone String

餐厅的电话号码。

示例:+12345665898

streetAddress String

必填。

餐厅的街道地址。

示例:12345 Bar Avenu

addressLocality String

必填。

所在地或城市。

示例:San Francisco

addressRegion String

必填。

地区或州/省。

示例:CA

postalCode String

必填。

邮政编码。

示例:94124

addressCountry String

必填。

由 2 个字母组成的 ISO 3166-1 alpha-2 国家/地区代码。

示例:US

latitude 编号

纬度(以度为单位)。值仅限于范围 [[-90, 90]]。 精度应至少为 5 位小数。

示例:35.7392607

longitude 编号

经度(以度为单位)。值仅限于 [[-180, 180]] 范围。 精度应至少为 5 位小数。

示例:-120.3895522

dealId List<String>

餐厅的适用 Deal

imprint String

餐厅信息是餐厅的其他信息部分,例如法律名称、法律地址和注册号。此信息可以使用“ ”进行格式设置。

示例:

Three Brothers Tacos
123 FooSt
Mountain View
CA 94041, United States
email: contact@threebrotherstacos.com

Commercial Register: 123456789

economicOperator String

与餐厅相关联的经济运营商信息(如果适用)。这些信息将显示在“交易者信息”部分中。您可以使用“ ”设置文本格式。

示例:

XYZ Corp
123 Main Street
555-555-5555

dateModified ISO 时间戳

餐厅实体 Feed 的最后修改日期和时间,采用 ISO 时间戳格式,但类型为字符串。

示例:2017-01-02T00:00:00-07:00

以下示例展示了 Restaurant 元素:

示例

{
  "@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 类型的属性:

属性 类型 说明
@type Const

必填。

值:Deal

@id String

必填。

交易的唯一标识符。

示例:FREEDELIVERY

dealCode String

必填。

每个合作伙伴的每笔交易都有唯一的交易 ID。此 ID 必须能唯一标识您的促销活动系统中的特惠。Google 会在 CheckoutRequestpromotions.coupon 字段中向您发送此标识符以进行验证。

示例:ADETRE23

applicableServiceType List<ServiceType>

此特惠适用的服务。默认值表示相应特惠适用于所有用户。

eligibleMaxOrders 整数

只有当用户过去成功完成的订单数量不超过此数量时,此特惠才符合条件。

availabilityId List<String>

库存状况实体的 @id 值,用于详细说明菜单部分的提供时间。

示例:[ "availability_1" ]

isDisabled 布尔值

这会替换其他有效性检查。

dealType DealType

必填。

要应用折扣的交易类别。类别可以是购物车总金额、服务费或运费。

priceCurrency String

discount is defined 时为必填项。

eligibleTransactionVolumeMin is defined 时为必填项。

折扣的币种(采用由 3 个字母表示的 ISO 4217 格式)。

示例:USD

eligibleTransactionVolumeMin 编号

此促销活动适用的交易量(以货币单位表示)。

termsOfServiceUrl 网址

必填。

人类可读的服务条款文档。

dateModified ISO 时间戳

特惠实体 Feed 的最后修改日期和时间,采用 ISO 时间戳格式,但类型为字符串。

示例:2017-01-02T00:00:00-07:00

必须提供以下某个属性组。
discount 第 1 组 编号

折扣的值(以数字表示)。

discountPercentage 第 2 组 编号

折扣金额占原价的百分比。

以下示例展示了 Deal 元素:

示例 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"
}

示例 2

{
  "@type": "Deal",
  "@id": "10PERCOFF",
  "dealCode": "10PERCOFF",
  "dealType": "CART_OFF",
  "availabilityId": [
    "availability_weekdays_evening"
  ],
  "termsOfServiceUrl": "http://www.provider.com/deal",
  "discountPercentage": 10,
  "priceCurrency": "USD"
}

示例 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 是必须实现的实体。

下表列出了 Service 类型的属性:

属性 类型 说明
@type Const

必填。

值:Service

@id String

必填。

履单服务的标识符。

示例:service_1

serviceType ServiceType

必填。

提供的服务类型。可能的值为“DELIVERY”或“TAKEOUT”。

示例:DELIVERY

restaurantId String

必填。

与此服务实体相关联的餐厅实体的 @id 值。

示例:restaurant_1

menuId String

必填。

与此 Service 实体相关联的 Menu 实体的 @id 值。

示例:menu_1

dateModified ISO 时间戳

服务实体 Feed 的上次修改日期和时间,采用 ISO 时间戳格式。

示例:2017-01-02T00:00:00-07:00

isDisabled 布尔值

指示实体是否已停用。仅当您因意外事件而必须停用实体且不知道何时会重新建立服务时(例如,请勿在节假日使用此类型),才应使用此类型。

示例:true

servingConfig ServingConfig

用于控制各种功能(例如停用促销信息 widget 等)的服务投放配置。

actionLinkUrl String

包含外卖服务的网址,将在从端到端食品订购体验迁移到重定向时使用。

以下示例展示了 Service 元素:

示例 1

{
  "@type": "Service",
  "@id": "10824/takeout",
  "serviceType": "TAKEOUT",
  "menuId": "10824",
  "restaurantId": "10824",
  "actionLinkUrl": "https://www.rwgpartnerwebsite.com/foodorderpickup/merchant_foepa_3"
}

示例 2

{
  "@type": "Service",
  "@id": "10824/delivery",
  "serviceType": "DELIVERY",
  "menuId": "10824",
  "restaurantId": "10824",
  "actionLinkUrl": "https://www.rwgpartnerwebsite.com/foodorderdelivery/merchant_foepa_3"
}

ServiceArea

描述可配送食品的地理区域。如果关联的 Service 实体将 serviceType 设置为“DELIVERY”,则必须实现此实体。

下表列出了 ServiceArea 类型的属性:

属性 类型 说明
@type Const

必填。

值:ServiceArea

@id String

必填。

服务区域的唯一标识符。

示例:service_area_1

serviceId List<String>

必填。

与此 ServiceArea 实体相关联的 Service 实体的 @id 值。

示例:[ "service_1" ]

dateModified ISO 时间戳

ServiceArea 实体 Feed 的上次修改日期和时间,采用 ISO 时间戳格式,但类型为字符串。

示例:2017-01-02T00:00:00-07:00

exclude 布尔值

从整个配送区域中排除此服务区域。例如,您可以从较大的多边形区域中排除某个邮政编码。

必须提供以下某个属性组。
polygon 第 1 组 List<String>

多边形或多重多边形,表示为一系列由空格分隔的三个或更多点。建议第一个点和最后一个点相同,但这并非强制要求。 多边形或多边形复合体中的每个点由纬度点和经度点组成。您还必须按逆时针方向指定点。

示例:[ "37.806000 -122.425592 37.775849 -122.419043 37.795547 -122.394046 37.808747" ]

geoMidpointLatitude 第 2 组 编号

表示 CIRCLE 区域中心的纬度坐标。

示例:37.806000

geoMidpointLongitude 第 2 组 编号

表示 CIRCLE 区域中心的经度坐标。

示例:-122.425592

geoRadius 第 2 组 整数

表示 CIRCLE 区域的大致半径(以米为单位)。

示例:10000

postalCode 第 3 组 String

表示邮政编码。

示例:91234

addressCountry 第 3 组 String

表示由两个字母组成的 ISO 3166-1 alpha-2 国家/地区代码

示例:US

以下示例展示了 ServiceArea 元素:

示例

{
  "@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(必填)

说明用户可以访问该流程并下单的期限,以及可以下单的类型(即尽快送达或日后送达)。必须实现 OperationHours,默认表示全天候营业。

OperationHours openscloses 属性用于指定允许用户下单的在线系统的营业时间和非营业时间。在这些在线系统营业时间内,使用 ServiceHours 指定可以处理用户订单的营业时间和休息时间。

时间必须以服务的当地时间指定。请勿在 opens 值中添加时区。如果指定了时区,Google 会忽略此信息。如需了解详情,请参阅日期时间和时间格式

下表列出了 OperationHours 类型的属性:

属性 类型 说明
@type Const

必填。

值:OperationHours

@id String

必填。

用于描述订购时间范围的实体的唯一标识符,用户可以访问该流程并下单(尽快送达/未来送达)。

示例:operation_hour_1

serviceId List<String>

必填。

与此 OperationHours 实体相关联的 Service 实体的 @id 值。

示例:[ "service_1" ]

opens ISO 时间(本地)

指明用户可以下单的开始时间(采用 ISO 格式)。

示例:T00:00

closes ISO 时间(本地)

指明用户无法下单的特定时间(采用 ISO 格式)。

示例:T16:00

dayOfWeek List<DayOfWeek>

这些营业时间适用的星期几的列表。可接受的值为“MONDAY”“TUESDAY”“WEDNESDAY”“THURSDAY”“FRIDAY”“SATURDAY”和“SUNDAY”。

示例:[ "MONDAY", "TUESDAY" ]

validFrom ISO 时间戳

isSpecialHour = true 时为必填项。

一个 ISO 时间戳,表示用户可以访问流程并下单尽快送达/未来送达的订单时间范围的开始时间。

示例:2017-01-01T00:00:00-07:00

validThrough ISO 时间戳

isSpecialHour = true 时为必填项。

ISO 时间戳,表示订购时间范围的结束时间。如果超过该时间,用户将无法访问该流程并下单。

示例:2017-01-02T00:00:00-07:00

isSpecialHour 布尔值

一个布尔值,表示 OperationHours 是否适用于特殊营业时间。可接受的值为“false”和“true”。

示例:False

dateModified ISO 时间戳

OperationHours 实体 Feed 的上次修改日期和时间,采用 ISO 时间戳格式,但类型为字符串。

示例:2017-01-02T00:00:00-07:00

以下示例展示了 OperationHours 元素:

示例 1

{
  "@type": "OperationHours",
  "@id": "10824/deliveryOh",
  "serviceId": [
    "10824/delivery"
  ],
  "isSpecialHour": false
}

示例 2

{
  "@type": "OperationHours",
  "@id": "10824/takeoutOh",
  "serviceId": [
    "10824/takeout"
  ],
  "isSpecialHour": false
}

ServiceHours(必填)

说明用户可在其中选择执行时段(ASAP 或未来时段)的执行期限。必须实现 ServiceHours

OperationHours openscloses 属性用于指定允许用户下单的在线系统的营业时间和非营业时间。在这些在线系统营业时间内,使用 ServiceHours 指定可以处理用户订单的营业时间和休息时间。

时间必须以服务的当地时间指定。请勿在 opens 值中添加时区。如果指定了时区,Google 会忽略此信息。如需了解详情,请参阅日期时间和时间格式

下表列出了 ServiceHours 类型的属性:

属性 类型 说明
@type Const

必填。

值:ServiceHours

@id String

必填。

实体的唯一标识符,用于描述用户可以选择的执行时间范围,例如尽快或未来的时间范围。

示例:service_hour_1

orderType OrderType

必填。

一个字符串,表示服务时间是否适用于“尽快”或“提前”订单。可接受的值为“ASAP”和“ADVANCE”。

示例:ASAP

serviceId List<String>

必填。

与此 ServiceHours 实体相关联的 Service 实体的 @id 值。

示例:[ "service_1" ]

operationHoursId List<String>

isSpecialHour = false 时为必填项。

与此 ServiceHours 实体相关联的 OperationHours 实体的 @id 值。

示例:[ "operation_hour_1" ]

opens ISO 时间(本地)

指明用户订单可从何时开始履单,采用 ISO 格式。

示例:T00:00

closes ISO 时间(本地)

指明用户订单的处理截止时间(采用 ISO 格式),超过此时间将无法再处理。

示例:T16:00

dayOfWeek List<DayOfWeek>

这些营业时间适用的星期几的列表。

示例:[ "MONDAY", "TUESDAY" ]

validFrom ISO 时间戳

isSpecialHour = true 时为必填项。

一个 ISO 时间戳,表示用户可以访问流程并下单尽快送达/未来送达的订单时间范围的开始时间。

示例:2017-01-01T00:00:00-07:00

validThrough ISO 时间戳

isSpecialHour = true 时为必填项。

ISO 时间戳,表示订购时间范围的结束时间。如果超过该时间,用户将无法访问该流程并下单。

示例:2017-01-02T00:00:00-07:00

isSpecialHour 布尔值

一个布尔值,表示 OperationHours 是否适用于特殊营业时间。可接受的值为“false”和“true”。

示例:False

leadTimeMin 整数

下单后,最短预计送货/自提时间(以分钟为单位)。我们强烈建议您设置此属性。

示例:60

leadTimeMax 整数

下单后,最长预计送达/自提时间(以分钟为单位)。我们强烈建议您设置此属性。

示例:70

advanceBookingRequirementMin 整数

orderType = "ADVANCE" 时为必填项。

从下单时间起,提前订单最短可满足的分钟数。 例如,如果提前订单需要至少 60 分钟才能完成,则 advanceBookingRequirementMin 为 60。

示例:15

advanceBookingRequirementMax 整数

orderType = "ADVANCE" 时为必填项。

从下单时间起,提前订单可完成的最长分钟数。 例如,如果提前预订的订单不得晚于 2 天后履行,则 advanceBookingRequirementMax 的值为 2880。

示例:10080

advanceBookingSlotInterval String

orderType = "ADVANCE" 时为必填项。

连续两个提前预订时间空档之间的间隔。 例如:如果开始时间和结束时间分别为上午 8 点和晚上 8 点,并且 advanceBookingSlotInterval 为 15 分钟,则用户可以选择上午 8 点、上午 8:15、上午 8:30、上午 8:45 等时间,一直到晚上 8 点。 时长必须指定为 ISO 时段时长。例如,“PT15M”表示 15 分钟的间隔时间。

示例:PT15M

dateModified ISO 时间戳

ServiceHours 实体 Feed 的最后修改日期和时间,采用 ISO 时间戳格式,但类型为字符串。

示例:2017-01-02T00:00:00-07:00

以下示例展示了 ServiceHours 元素:

示例 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"
}

示例 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
}

费用

描述费用。如果关联的 Service 实体将 serviceType 设置为“DELIVERY”,则必须提供将 feeType 设置为“DELIVERY”的 Fee

下表列出了 Fee 类型的属性:

属性 类型 说明
@type Const

必填。

值:Fee

@id String

必填。

用于描述费用的实体的唯一标识符。

示例:service_fee_1

serviceId List<String>

必填。

与此费用实体相关联的服务实体的 @id 值。

示例:[ "service_1" ]

feeType FeeType

必填。

一个字符串,表示相应费用是否适用于送货订单或服务订单。可接受的值为“DELIVERY”和“SERVICE”。

示例:DELIVERY

priceCurrency String

必填。

由 3 个字母表示的 ISO 4217 货币代码。

示例:USD

basePrice 编号

费用的基本价格,适用于使用 percentageOfCartpricePerMeter 时。

示例:2.0

minPrice 编号

使用 percentageOfCartpricePerMeter 时的最低费用、上限费用值。

示例:2.0

maxPrice 编号

最高费用,使用 percentageOfCartpricePerMeter 时上限费用值。

示例:10.0

eligibleRegion List<String>

适用费用的地缘政治区域的 ServiceArea 的 @id。仅当配送费用因地区而异时,才使用此属性。

示例:[ "service_area_1" ]

eligibleTransactionVolumeMin 编号

此费用规范适用的最低交易量(以货币单位表示)。

示例:50

eligibleTransactionVolumeMax 编号

此费率规范适用的最高交易量(以货币单位表示)。例如,如果订单量超过一定数量,则不收取此费用。

示例:10

validFrom ISO 时间戳

一个 ISO 时间戳,表示费用生效的开始时间。

示例:2017-01-01T00:00:00-07:00

validThrough ISO 时间戳

ISO 时间戳,表示费用的结束时间(超过此时间,费用无效)。

示例:2017-01-02T00:00:00-07:00

dateModified ISO 时间戳

费用实体 Feed 的上次修改日期和时间,采用 ISO 时间戳格式,但类型为字符串。

示例:2017-01-02T00:00:00-07:00

priority 编号

非零正值。如果用户的购物车中有多项费用,则优先级最高的费用将优先于优先级较低的费用。如果提供此字段,则此优先级始终优先于计算出的优先级。

示例:3

必须提供以下某个属性组。
price 第 1 组 编号

费用价格。如果价格不固定,可以提供 minPrice 和 maxPrice 来代替 price。

示例:1.5

percentageOfCart 第 2 组 编号

费用占购物车价值的百分比。可接受的值为介于 0 到 100 之间的浮点值(包括这两个数值)。

示例:9.00

pricePerMeter 第 3 组 编号

距离用户的半径距离每米费用。例如,如果距离用户的距离为 5 公里,费率为 0.001 美元,则用户费用为 5 美元。

示例:0.001

以下示例展示了 Fee 元素:

示例 1

{
  "@type": "Fee",
  "@id": "28427",
  "serviceId": [
    "10824/delivery"
  ],
  "feeType": "DELIVERY",
  "priceCurrency": "USD",
  "eligibleRegion": [
    "28427"
  ],
  "eligibleTransactionVolumeMin": 20,
  "price": 5
}

示例 2

{
  "@type": "Fee",
  "@id": "28427",
  "serviceId": [
    "10824/delivery"
  ],
  "feeType": "DELIVERY",
  "priceCurrency": "USD",
  "eligibleRegion": [
    "28427"
  ],
  "eligibleTransactionVolumeMin": 20,
  "pricePerMeter": 0.0005,
  "basePrice": 4
}

示例 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
}

示例 4

{
  "@type": "Fee",
  "@id": "28427",
  "serviceId": [
    "10824/delivery"
  ],
  "feeType": "DELIVERY",
  "priceCurrency": "USD",
  "eligibleRegion": [
    "28427"
  ],
  "eligibleTransactionVolumeMin": 20,
  "percentageOfCart": 5,
  "basePrice": 4
}

示例 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 类型的属性:

属性 类型 说明
@type Const

必填。

值:Menu

@id String

必填。

菜单的唯一标识符。

示例:menu_1

name String

在用户浏览菜单时可用于识别菜单的文本。

示例:Foo

disclaimer String

菜单的免责声明。例如,营养信息披露和致敏原披露。

示例:Items may contain peanuts.

disclaimerUrl 网址

指向提供免责声明更多详细信息的页面的网址。

dateModified ISO 时间戳

菜单实体 Feed 的上次修改日期和时间,采用 ISO 时间戳格式,但类型为字符串。

示例:2017-01-02T00:00:00-07:00

以下示例展示了 Menu 元素:

{
  "@type": "Menu",
  "@id": "10824"
}

可选择实现的实体。描述菜单中的特定部分。

下表列出了 MenuSection 类型的属性:

属性 类型 说明
@type Const

必填。

值:MenuSection

@id String

必填。

菜单部分的唯一标识符。

示例:menu_section_1

menuId List<ReverseReference>

与此 MenuSection 实体相关联的菜单实体的 @id 值。

示例:[ { "@id": "menu_id", "displayOrder": 4 } ]

menuSectionId List<String>

与此 MenuSection 实体对应的子 MenuSection 实体的 @id 值的列表。

重要提示:您只能使用 menuSectionIdparentMenuSectionId(in child) 引用之一。

示例:[ "child_menu_section_1", "child_menu_section_2" ]

parentMenuSectionId List<ReverseReference>

与此 MenuSection 实体相关联的父 MenuSection 实体的 @id 值。

重要提示:您只能使用 parentMenuSectionIdmenuSectionId(in parent) 引用之一。

示例:[ { "@id": "parent_menu_section_id", "displayOrder": 4 } ]

name String

必填。

在用户浏览菜单时可用于识别 MenuSection 的文本。

示例:Foo

description String

菜单部分的说明。

示例:Example menu section description that helps users.

image 网址

菜单部分图片的网址。

示例:https://provider.com/someimage

menuItemId List<String>

与此 MenuSection 实体对应的 MenuItem 实体的 @id 值的列表。

重要提示:您只能使用 menuItemIdMenuItem.parentMenuSectionId 引用之一。

示例:[ "menu_item1", "menu_item2" ]

parentMenuItemId List<ReverseReference>

与此 MenuSection 实体对应的父 MenuItem 实体的 @id 值列表。

重要提示:您只能使用 parentMenuItemIdMenuItem.menuAddOnId 引用之一。

示例:[ { "@id": "parent_menu_item_id", "displayOrder": 4 } ]

parentMenuItemOptionId List<ReverseReference>

与此 MenuSection 实体对应的父 MenuItemOption 实体的 @id 值列表。

重要提示:您只能使用 parentMenuItemOptionIdMenuItemOption.menuAddOnId 引用之一。

示例:[ { "@id": "parent_menu_item_option_id", "displayOrder": 4 } ]

eligibleQuantityMax 整数

在插件部分中可选择的插件数量上限。

示例:5

eligibleQuantityMin 整数

在插件部分应选择的插件数量下限。

示例:1

defaultItemId List<String>

一个 @id 列表,其中引用了默认情况下要为插件 MenuSection 中的用户预先选择的 MenuItem 实体。用户可以更改最终选择。如果未指定 defaultItemId,则不会预先选择任何 MenuItem

示例:[ "item1", "item2" ]

availabilityId List<String>

库存状况实体的 @id 值,用于详细说明菜单部分的提供时间。

示例:[ "menu_availability_1" ]

numberOfFreeAddOns 整数

表示用户可以免费选择的插件数量。仅适用于插件菜单版块。

示例:3

dateModified ISO 时间戳

MenuSection 实体 Feed 的上次修改日期和时间,采用 ISO 时间戳格式,但类型为字符串。

示例:2017-01-02T00:00:00-07:00

applicableServiceType List<ServiceType>

MenuSection 适用的服务。默认值假定 MenuSection 适用于所有人。

offeredById List<String>

MenuSection 可供使用的 Restaurant 实体的 @id 值。默认值假定所有位置都提供 MenuSection

示例:[ "restaurant_id_1", "restaurant_id_55" ]

以下示例展示了 MenuSection 元素:

{
  "@type": "MenuSection",
  "@id": "853705",
  "menuId": [
    {
      "@id": "10824",
      "displayOrder": 853705
    }
  ],
  "menuSectionId": [
    12345,
    43645
  ],
  "name": "Pasta",
  "applicableServiceType": [
    "TAKEOUT"
  ],
  "offeredById": [
    "italian_restaurant_location_1"
  ]
}
{
  "@type": "MenuSection",
  "@id": "427484",
  "menuId": [
    {
      "@id": "4287",
      "displayOrder": 964376
    }
  ],
  "menuItemId": [
    46784,
    42728
  ],
  "name": "Burger",
  "applicableServiceType": [
    "TAKEOUT",
    "DELIVERY"
  ]
}
{
  "@type": "MenuSection",
  "@id": "3138486",
  "name": "Choose a side:",
  "parentMenuItemId": [
    {
      "@id": "6680295",
      "displayOrder": 3138486
    }
  ],
  "eligibleQuantityMax": "5",
  "numberOfFreeAddOns": "2"
}
{
  "@type": "MenuSection",
  "@id": "3138482",
  "name": "Additional Pizza Toppings",
  "parentMenuItemId": [
    {
      "@id": "6680246",
      "displayOrder": 3138482
    }
  ],
  "eligibleQuantityMax": "3"
}

可用性

可选择实现的实体。描述 MenuSection 实体投放的时间段。

下表列出了 Availability 类型的属性:

属性 类型 说明
@type Const

必填。

值:Availability

@id String

必填。

用于描述菜单版块可用性的实体的唯一标识符。

示例:menu_section_avail_1

availabilityStarts ISO 时间(本地)

ISO 时间戳,表示菜单版块播出信息有效的开始时间。

示例:T00:00

availabilityEnds ISO 时间(本地)

ISO 时间戳,表示菜单部分的有效结束时间。

示例:T16:00

availableDay List<DayOfWeek>

菜单版块的营业时间适用的一周中的日期列表。

示例:[ "MONDAY", "TUESDAY" ]

validFrom ISO 时间戳

一个 ISO 时间戳,表示菜单部分库存状况有效的开始时间。

示例:2017-01-01T00:00:00-07:00

validThrough ISO 时间戳

ISO 时间戳,表示菜单版块的播出信息在该时间之后无效。

示例:2017-01-02T00:00:00-07:00

dateModified ISO 时间戳

播出信息实体 Feed 的上次修改日期和时间,采用 ISO 时间戳格式,但类型为字符串。

示例:2017-01-02T00:00:00-07:00

以下示例展示了 Availability 元素:

示例

{
  "@type": "Availability",
  "@id": "85343705",
  "availabilityStarts": "06:00",
  "availabilityEnds": "22:30",
  "availableDay": [
    "SATURDAY",
    "SUNDAY"
  ]
}

必须实现的实体。描述 Menu 实体中的项。

下表列出了 MenuItem 类型的属性:

属性 类型 说明
@type Const

必填。

值:MenuItem

@id String

必填。

菜单项的唯一标识符。

示例:menu_item_1

name String

必填。

在用户浏览菜单时可用于识别 MenuItem 的文本。

示例:Foo

description String

菜单项的说明。

示例:Foo

image 网址

菜单项图片的网址。

示例:http://someprovider.com/someimage

parentMenuSectionId List<ReverseReference>

与此 MenuItem 实体对应的父 MenuSection 实体的 @id 值列表。

重要提示:您只能使用 parentMenuSectionIdMenuSection.menuItemId 引用之一。

示例:{ "@id": "menu_section_parent_id", "displayOrder": 4 }

menuAddOnId List<String>

与此 MenuItem 实体对应的插件部分中 MenuSection 实体的 @id 值的列表。

重要提示:您只能使用 menuAddOnIdMenuSection.parentMenuItemId 引用之一。

示例:menu_addon_1

nutrition NutritionInformation

菜肴的营养信息,尤其是卡路里。

示例:{ "calories": "120-150 Cal" }

allergen List<Allergen>

此 MenuItem 的过敏原。

示例:[ { "allergenType": "PEANUTS", "levelOfContainment": "MAY_CONTAIN" } ]

additive List<Additive>

此 MenuItem 的添加项。

示例:[ { "additiveName": "Sodium nitrite", "levelOfContainment": "CONTAINS" } ]

suitableDiet List<RestrictedDiet>

菜肴符合所述的饮食禁忌。

示例:[ "DIABETIC", "GLUTEN_FREE" ]

depositInfo DepositInfo

此 MenuItem 的包装和回收信息。

示例:{ "depositCode": "RECYCLABLE", "depositValue": "0.05", "depositValueCurrency": "USD" }

numberOfServings 整数

指定菜单项中的份数。

示例:2

dateModified ISO 时间戳

MenuItem 实体 Feed 的上次修改日期和时间,采用 ISO 时间戳格式,但类型为字符串。

示例:2017-01-02T00:00:00-07:00

以下示例展示了 MenuItem 元素:

{
  "@type": "MenuItem",
  "@id": "18931508",
  "name": "Sauteed Baby Spinach",
  "parentMenuSectionId": [
    {
      "@id": "3138479",
      "displayOrder": 18931508
    }
  ]
}
{
  "@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 类型的属性:

属性 类型 说明
@type Const

值:MenuItemOption

@id String

必填。

菜单项选项的唯一标识符。

示例:menu_item_1_option

menuItemId ReverseReference

必填。

与此 MenuItemOption 实体相关联的 MenuItem 实体的 @id 值。

示例:{ "@id": "menu_item_1", "displayOrder": 4 }

optionType OptionType

一个字符串,用于指明菜单项选项是按大小、选项还是比萨配菜进行分类的。可接受的值为“SIZE”“OPTION”和“PIZZA_SIDE”。“SIZE”:MenuItemOption 的大小。例如,小、中或大。“OPTION”:除尺寸之外的任何变体(例如,沙拉或三明治)。如果您无法区分“SIZE”和“OPTION”,请使用“OPTION”。“PIZZA_SIDE”:仅适用于披萨:例如,此 MenuItemOption 仅适用于披萨的部分/整份(例如,左侧、右侧或整份披萨上的蘑菇浇头)。

示例:SIZE

value 字符串或 PizzaSide

optionType is defined 时为必填项。

字符串值或枚举值。枚举值仅适用于 PIZZA_SIDE 选项类型。

applicableParentOptionValue String

一个字符串,其中包含此选项可用的父项选项值的值。

示例:Small

menuAddOnId List<String>

与此 MenuItemOption 实体对应的插件部分中 MenuSection 实体的 @id 值的列表。

重要提示:您只能使用 menuAddOnIdMenuSection.parentMenuItemId 引用之一。

示例:menuAddOnId

nutrition NutritionInformation

菜肴的营养信息,尤其是卡路里。

示例:{ "calories": "120-150 Cal" }

allergen List<Allergen>

此 MenuItem 的过敏原。

示例:{ "allergenType": "PEANUTS", "levelOfContainment": "MAY_CONTAIN" }

additive List<Additive>

此 MenuItem 的添加项。

示例:{ "additiveName": "Sodium nitrite", "levelOfContainment": "CONTAINS" }

depositInfo DepositInfo

此 MenuItem 的包装和回收信息。

示例:{ "depositCode": "RECYCLABLE", "depositValue": "0.05", "depositValueCurrency": "USD" }

numberOfServings 整数

给定菜单项选项中的份数。

示例:2

dateModified ISO 时间戳

MenuItemOption 实体 Feed 的最后修改日期和时间,采用 ISO 时间戳格式,但类型为字符串。

示例:2017-01-02T00:00:00-07:00

以下示例展示了 MenuItemOption 元素:

{
  "@type": "MenuItemOption",
  "@id": "56177944",
  "menuItemId": {
    "@id": "18930213",
    "displayOrder": 1234
  },
  "optionType": "PIZZA_SIDE",
  "value": "PIZZA_SIDE_LEFT"
}
{
  "@type": "MenuItemOption",
  "@id": "56177944",
  "menuItemId": {
    "@id": "18930213",
    "displayOrder": 1234
  },
  "applicableParentOptionValue": "Small Pizza"
}

必须实现的实体。描述 MenuItemMenuItemOption 实体的优惠。

下表列出了 MenuItemOffer 类型的属性:

属性 类型 说明
@type Const

必填。

值:MenuItemOffer

@id String

必填。

菜单项优惠的唯一标识符。

示例:menu_item_offer

sku String

必填。

菜品优惠的标识符。多个菜单项商品实体的 SKU 值可以不同,也可以相同。当我们向您发出 API 调用时,系统会按顺序设置 sku 值。

示例:Menu_item_offer_sku

price 编号

必填。

菜品优惠的价格。

示例:2.5

priceCurrency String

必填。

由 3 个字母表示的 ISO 4217 货币代码。

示例:USD

availabilityId List<String>

库存状况实体的 @id 值,用于详细说明菜单项优惠的提供时间。

示例:[ "menu_availability_1" ]

eligibleQuantityMin 编号

MenuItemOffer 有效的最小订购数量。

示例:1

eligibleQuantityMax 编号

MenuItemOffer 有效的最高订购数量。

示例:25

inventoryLevel 编号

与此 MenuItemOffer 对应的商品的当前大致库存状况。

示例:10

dateModified ISO 时间戳

MenuItemOffer 实体 Feed 的上次修改日期和时间,采用 ISO 时间戳格式,但类型为字符串。

示例:2017-01-02T00:00:00-07:00

applicableServiceType List<ServiceType>

MenuItemOffer 适用的服务。默认值假定 MenuItemOffer 适用于所有人。

offeredById List<String>

MenuItemOffer 可供使用的 Restaurant 实体的 @id 值。默认值假定所有位置都提供 MenuItemOffer

示例:[ "restaurant_id_5", "restaurant_id_26" ]

必须提供以下某个属性组。
menuItemId 第 1 组 String

与此 MenuItemOffer 实体相关联的 MenuItem 实体的 @id 值。

示例:menu_item_1

menuItemOptionId 第 2 组 String

与此 MenuItemOffer 实体相关联的 MenuItemOption 实体的 @id 值。

示例:menu_item_option_1

以下示例展示了 MenuItemOffer 元素:

{
  "@type": "MenuItemOffer",
  "@id": "6680262",
  "sku": "offer-mediterranean-bagel",
  "menuItemId": "896532",
  "price": 15.5,
  "priceCurrency": "USD",
  "applicableServiceType": [
    "DELIVERY"
  ],
  "offeredById": [
    "bagel_shop_location_5"
  ]
}

常见

ReverseReference

下表列出了 ReverseReference 类型的属性:

属性 类型 说明
@id String

必填。

父实体的 @id。

displayOrder 整数

必填。

在父项中的显示顺序。

NutritionInformation

下表列出了 NutritionInformation 类型的属性:

属性 类型 说明
description String

营养信息(采用自由文本格式)。例如“含防腐剂”。

calories String

卡路里数(以卡路里、千卡或千焦为单位),采用以下格式:值(卡路里)或最小值-最大值(卡路里)

示例:120.34 Cal

sodiumContent String

钠的毫克数或克数,格式为:值(克)或最小值-最大值(克)

示例:1200 mg

以下示例展示了 NutritionInformation 元素:

示例

{
  "calories": "120-150 Cal",
  "sodiumContent": "100 mg"
}

过敏原

下表列出了 Allergen 类型的属性:

属性 类型 说明
allergenType AllergenType

必填。

过敏原的类型。

levelOfContainment ContainmentLevel

菜单项中给定过敏原的级别。

以下示例展示了 Allergen 元素:

示例

{
  "allergenType": "PEANUTS",
  "levelOfContainment": "MAY_CONTAIN"
}

添加剂

下表列出了 Additive 类型的属性:

属性 类型 说明
additiveName String

必填。

添加剂的名称。

levelOfContainment ContainmentLevel

菜单项中给定添加剂的级别。

以下示例展示了 Additive 元素:

示例

{
  "additiveName": "Sodium nitrite",
  "levelOfContainment": "CONTAINS"
}

DepositInfo

下表列出了 DepositInfo 类型的属性:

属性 类型 说明
depositCode DepositCode

存款代码。

depositValue 编号

商品押金的数值,例如回收时。

depositValueCurrency String

预付款价值的币种

以下示例展示了 DepositInfo 元素:

示例

{
  "depositCode": "RECYCLABLE",
  "depositValue": 0.05,
  "depositValueCurrency": "USD"
}

ServingConfig

用于控制各种功能(例如停用促销信息 widget 等)的服务投放配置。

下表列出了 ServingConfig 类型的属性:

属性 类型 说明
disableOrderInstructions 布尔值

隐藏了指定订单说明的功能。

disableMenuItemSpecialInstructions 布尔值

隐藏了在菜单项上指定特殊说明的功能。

disableTipWidget 布尔值

在订购流程的“下单”页面中隐藏小费微件。

disablePromoWidget 布尔值

在订购流程的“下单”页面中隐藏促销活动微件。

menuItemSpecialInstructionsMaxLength 编号

指定菜单项特殊说明可以包含的字符数上限。

orderInstructionsMaxLength 编号

指定有序指令可以包含的字符数上限。

以下示例展示了 ServingConfig 元素:

示例 1

{
  "disableMenuItemSpecialInstructions": true
}

示例 2

{
  "disableTipWidget": true,
  "disablePromoWidget": true
}

示例 3

{
  "menuItemSpecialInstructionsMaxLength": 250,
  "orderInstructionsMaxLength": 1000
}

枚举

DayOfWeek

DayOfWeek 类型有以下可能值:

  • MONDAY
  • TUESDAY
  • WEDNESDAY
  • THURSDAY
  • FRIDAY
  • SATURDAY
  • SUNDAY

ServiceType

ServiceType 类型有以下可能值:

  • DELIVERY
  • TAKEOUT

OrderType

OrderType 类型有以下可能值:

  • ASAP
  • ADVANCE

FeeType

FeeType 类型有以下可能值:

  • DELIVERY
  • SERVICE

OptionType

OptionType 类型有以下可能值:

  • SIZE
  • OPTION
  • PIZZA_SIDE

PizzaSide

PizzaSide 类型有以下可能值:

  • PIZZA_SIDE_LEFT
  • PIZZA_SIDE_RIGHT
  • PIZZA_SIDE_WHOLE

AllergenType

过敏原的类型(根据 gs1:AllergenTypeCode)。

AllergenType 类型有以下可能值:

  • 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

ContainmentLevel 类型有以下可能值:

  • CONTAINS
  • FREE_FROM
  • MAY_CONTAIN

DepositCode

DepositCode 类型有以下可能值:

  • REUSABLE
  • RECYCLABLE

DealType

要应用折扣的交易类别。类别可以是购物车总金额或运费。

DealType 类型有以下可能值:

  • CART_OFF
  • DELIVERY_OFF

RestrictedDiet

schema.org:RestrictedDiet 中所述的限制膳食类型。

RestrictedDiet 类型有以下可能值:

  • DIABETIC
  • GLUTEN_FREE
  • HALAL
  • HINDU
  • KOSHER
  • LOW_CALORIE
  • LOW_FAT
  • LOW_LACTOSE
  • LOW_SALT
  • VEGAN
  • VEGETARIAN