关系型目录架构

本页面介绍了您向 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 基于 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 常量

必填。

值: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

必填。

由两个字母组成的 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 常量

必填。

值:Deal

@id String

必填。

交易的唯一标识符。

示例:FREEDELIVERY

dealCode String

必填。

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

示例:ADETRE23

applicableServiceType 列表<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 常量

必填。

值:Service

@id String

必填。

执行方式服务的标识符。

示例:service_1

serviceType ServiceType

必填。

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

示例:DELIVERY

restaurantId String

必填。

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

示例:restaurant_1

menuId String

必填。

与此服务实体关联的菜单实体的 @id 值。

示例:menu_1

dateModified ISO 时间戳

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

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

isDisabled 布尔值

指示实体是否已停用。只有在因意外事件而必须停用实体,且不知道何时重新建立服务的情况下,才使用此类型(例如,不要在节假日中使用)。

示例:true

servingConfig ServingConfig

该服务的服务配置,用于控制各种功能,例如停用促销微件等。

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 常量

必填。

值: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 openscloses 属性用于指定允许用户下单的在线系统的开始和打烊时间。在这些在线系统营业时间内,使用 ServiceHours 指定可以履行用户订单的营业时间和结束营业时间。

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

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

媒体资源 类型 说明
@type 常量

必填。

值:OperationHours

@id String

必填。

描述订餐时段的实体的唯一标识符,用户可以访问该流程并下达尽快/未来订单。

示例:operation_hour_1

serviceId List<String>

必填。

与此 OperationHours 实体关联的服务实体的 @id 值。

示例:[ "service_1" ]

opens ISO 时间(本地)

以 ISO 格式表示一天中的特定时间,从可下单的起始日期开始。

示例:T00:00

closes ISO 时间(本地)

表示一天中的特定时间(采用 ISO 格式),超过这个时间的用户就无法下单。

示例:T16:00

dayOfWeek 列表<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

OperationHours openscloses 属性用于指定允许用户下单的在线系统的开始和打烊时间。在这些在线系统营业时间内,使用 ServiceHours 指定可以履行用户订单的营业时间和结束营业时间。

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

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

媒体资源 类型 说明
@type 常量

必填。

值:ServiceHours

@id String

必填。

实体的唯一标识符,用于描述履单时段,用户可以选择履单时段(即“尽快”或“未来”时段)。

示例:service_hour_1

orderType OrderType

必填。

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

示例:ASAP

serviceId List<String>

必填。

与此 ServiceHours 实体关联的服务实体的 @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 列表<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 分钟才能完成,则 advancedBookingRequirementMin 为 60。

示例:15

advanceBookingRequirementMax 整数

orderType = "ADVANCE" 时,必需。

自下单时间起,可以完成提前订单所需要的分钟数上限。 例如,如果提前订单被限制在超过 2 天后履单,则 AdvancedBookingRequirementMax 的值为 2880。

示例:10080

advanceBookingSlotInterval String

orderType = "ADVANCE" 时,必需。

两次连续提前预订空档时间之间的时间间隔。 例如:如果开门和关门时间是上午 8 点和晚上 8 点,并且 advancedBookingSlotInterval 是 15 分钟,那么用户可以选择履单时间为上午 8 点、上午 8:15、上午 8:30、上午 8:45,等等。 必须将时长指定为 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”,则必须提供 Fee,并将 feeType 设置为“DELIVERY”。

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

媒体资源 类型 说明
@type 常量

必填。

值: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(含 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 常量

必填。

值: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 常量

必填。

值:MenuSection

@id String

必填。

菜单部分的唯一标识符。

示例:menu_section_1

menuId 列表<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 列表<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 列表<ReverseReference>

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

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

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

parentMenuItemOptionId 列表<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 列表<ServiceType>

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

offeredById List<String>

提供此 MenuSectionRestaurant 实体的 @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 常量

必填。

值:Availability

@id String

必填。

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

示例:menu_section_avail_1

availabilityStarts ISO 时间(本地)

指明菜单部分可用性有效的开始时间的 ISO 时间戳。

示例:T00:00

availabilityEnds ISO 时间(本地)

ISO 时间戳,表示在超过该时间后,菜单部分可用性无效的时间。

示例:T16:00

availableDay 列表<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 常量

必填。

值:MenuItem

@id String

必填。

菜单项的唯一标识符。

示例:menu_item_1

name String

必填。

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

示例:Foo

description String

菜单项的说明。

示例:Foo

image 网址

菜单项图片的网址。

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

parentMenuSectionId 列表<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 列表<Allergen>

此 MenuItem 的过敏原。

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

additive 列表<Additive>

此 MenuItem 的添加剂。

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

suitableDiet 列表<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 常量

值: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 列表<Allergen>

此 MenuItem 的过敏原。

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

additive 列表<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 常量

必填。

值: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 列表<ServiceType>

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

offeredById List<String>

提供此 MenuItemOfferRestaurant 实体的 @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

卡路里数(以 Cal、kcal 或 kJ 为单位),使用以下格式:Cal 值或 min-max Cal

示例:120.34 Cal

sodiumContent String

mg 或 g 钠的数量,使用以下格式:值 g 或 min-max g

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

该服务的服务配置,用于控制各种功能,例如停用促销微件等。

下表列出了 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