Фиды каталогов продуктов питания основаны на объектах DataFeed
Schema.org. Фид каталога продуктов питания состоит из региональных сведений о ресторане, таких как адрес ресторана, меню и местоположение, а также сведений об услугах ресторана, таких как стоимость доставки, районы доставки и другие элементы, как указано ниже.
DataFeed
содержит коллекцию элементов, каждый из которых представляет отдельный элемент, выраженный в словаре Schema.org . Вы можете использовать тип DataFeed
для публикации всех структурированных данных в формате JSON-LD .
Информацию об использовании этой спецификации для создания фидов см. в обзоре интеграции инвентаря .
Форматы 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
Обратите внимание на следующее, когда вы указываете DateTime
или Time
:
- Префикс «T» перед временем является частью формата и является обязательным.
- Часовой пояс должен быть указан для
DATETIME
. ДляTIME
это не требуется. - Время должно быть указано по местному времени ресторана или услуги.
Конверт
Начальный код любого фида каталога продуктов питания должен содержать раздел «конверт».
«Конверт» — это структура верхнего уровня каждого фида. Он должен представлять собой DataFeed
со следующими свойствами:
Свойство | Тип | Необходимость | Описание |
---|---|---|---|
@context | URL-адрес | Необходимый | Используемый контекст; обычно «http://schema.googleapis.com». |
@type | Текст | Необходимый | Это всегда «DataFeed». |
dateModified | DateTime | Необходимый | Последний измененный Дата и время в формате ISO_OFFSET_DATE_TIME, когда были изменены элементы в этом фиде. При отсутствии этого поля предполагается, что время обновления — это время получения push-сообщения (или сканирования) на серверах Google. Мы настоятельно рекомендуем вам реализовать это, если вы используете как push, так и сканирование одновременно. Эта временная метка должна быть указана с часовым поясом и точностью до миллисекунд; например «2016-12-28T06:30:00:123-07:00». В пакетных фидах версия объекта определяется с помощью поля |
dataFeedElement | Массив Menu , Restaurant или Service | Необходимый | Один или несколько элементов, входящих в этот фид. Подробности см. ниже. |
В следующем примере показан конверт:
Пример
{ "@context": "http://schema.googleapis.com", "dateModified": "2016-12-28T06:30:00:123-07:00", "@type": "DataFeed", "dataFeedElement": [ /* All items that are part of this feed go here */ ] }
AdditiveDetails
Чтобы использовать этот тип, добавьте контекст gs1: "@context": ["http://gs1.org/voc/", "http://schema.org"]
Затем добавьте FoodBeverageTobaccoProduct
к типу соответствующего MenuItem
или MenuItemOption
.
В следующей таблице описаны свойства типа AdditiveDetails
:
Свойство | Тип | Необходимость | Описание |
---|---|---|---|
@type | Текст | Необходимый | Это всегда «AdditiveDetails». |
additiveName | Текст | Необязательный | Название добавки. |
additiveLevelOfContainment | Текст | Необязательный | Код сдерживания согласно gs1:LevelOfContainmentCode . Например, http://gs1.org/voc/LevelOfContainmentCode-CONTAINS , http://gs1.org/voc/LevelOfContainmentCode-FREE_FROM или http://gs1.org/voc/LevelOfContainmentCode-MAY_CONTAIN . |
В следующем примере показано использование типа AdditiveDetails
:
{ "@type": ["MenuItem", "FoodBeverageTobaccoProduct"], "@id": "http://www.example.com/bar/menuitem/8", "name": "Energy Drink", "description": "A 0.25l can of energy drink.", "offers": { "@type": "Offer", "sku": "offer-energy-drink", "price": "3.49", "priceCurrency": "USD" }, "additive": [ { "@type": "AdditiveDetails", "additiveName": "caffeine", "additiveLevelOfContainment": "http://gs1.org/voc/LevelOfContainmentCode-CONTAINS" }, { "@type": "AdditiveDetails", "additiveName": "phosphate", "additiveLevelOfContainment": "http://gs1.org/voc/LevelOfContainmentCode-CONTAINS" } ] },
Аддонменуитем
Элемент еды или напитка, указанный в дополнительном пункте меню MenuItem
.
В следующей таблице перечислены свойства типа AddOnMenuItem
:
Свойство | Тип | Необходимость | Описание |
---|---|---|---|
@type | Текст | Необходимый | Это всегда «AddOnMenuItem». |
@id | URL-адрес | Необходимый | Уникальный идентификатор пункта меню дополнения. |
name | Текст | Необходимый | Текст, идентифицирующий AddOnMenuItem, когда пользователь просматривает меню. |
description | Текст | Необязательный | Описание пункта дополнительного меню. |
image | URL-адрес | Необязательный | Изображение элемента дополнительного меню, соответствующего следующим правилам:
|
offers | Массив Offer | Необходимый* | Одно или несколько предложений предоставить этот AddOnMenuItem. Описывает, когда и по какой цене будет доступен этот AddOnMenuItem. В определенный момент времени должно быть действительно только одно предложение. У вас может быть много действительных предложений, если цена или доступность могут меняться в зависимости от времени суток. Если надстройка или элемент отличается базовым атрибутом или вариацией самого элемента надстройки (например, маленькая, средняя и большая картошка фри в качестве надстройки), используйте свойство Значение по умолчанию для В AddOnMenuItem используются следующие свойства
|
hasMenuItemOptions | Массив MenuItemOption | Необходимый* | Массив базовых атрибутов, описывающих вариацию самого элемента надстройки (например, маленькую, среднюю и большую картошку фри в качестве надстройки) для этого пункта меню надстройки. Используйте параметры, чтобы указать различные варианты, доступные для этого пункта дополнительного меню. Есть два сценария, когда это может произойти:
|
suitableForDiet | Массив RestrictedDiet | Необязательный | Блюдо соответствует описанному диетическому ограничению (например, «GlutenFreeDiet» или «VeganDiet»). Это нумерованный список возможных значений. |
nutrition | NutritionInformation | Необязательный | Информация о пищевой ценности блюда, особенно о калориях. |
menuAddOn | Массив AddOnMenuSection | Необязательный | AddOnMenuItem может иметь раздел меню, состоящий из разрешенных элементов, которые можно добавить в качестве надстройки. |
В следующем примере показан AddOnMenuItem
:
Пример 1
{ "@type": "AddOnMenuSection", "@id": "https://www.example.com/1089/addon/1", "name": "AddOnCheese", "hasMenuItem": [ { "@type": "AddOnMenuItem", "@id": "https://www.example.com/1089/addon/a", "name": "Swiss", "offers": { "@type": "Offer", "sku": "offer-swiss", "price": "2.99", "priceCurrency": "USD" } }, { "@type": "AddOnMenuItem", "@id": "https://www.example.com/1089/addon/b", "name": "Mozarella", "offers": { "@type": "Offer", "sku": "offer-mozzarella", "price": "1.99", "priceCurrency": "USD" } } ] }
Пример 2
{ "@type": "MenuItem", "@id": "https://www.example.com/1089/product/170067", "name": "Pepperoni Pizza", "hasMenuItemOptions": [ { "@type": "MenuItemOption", "value": { "@type": "PropertyValue", "name": "SIZE", "value": "Small" }, "offers": { "@type": "Offer", "sku": "offer-small-pepperoni-pizza", "price": "10.00", "priceCurrency": "USD" } }, { "@type": "MenuItemOption", "value": { "@type": "PropertyValue", "name": "SIZE", "value": "Large" }, "offers": { "@type": "Offer", "sku": "offer-large-pepperoni-pizza", "price": "20.00", "priceCurrency": "USD" } } ], "menuAddOn": [ { "@type": "AddOnMenuSection", "name": "Choice of toppings", "@id": "https://www.example.com/1089/addon/1", "hasMenuItem": [ { "@type": "AddOnMenuItem", "@id": "https://www.example.com/1089/addon/1/a", "name": "Shrimp", "hasMenuItemOptions": [ { "@type": "MenuItemOption", "value": [ { "@type": "PropertyValue", "name": "PIZZA_SIDE", "value": "PIZZA_SIDE_LEFT" // Values are predefined for pizza side. }, { "@type": "PropertyValue", "name": "APPLICABLE_ITEM_OPTION", "value": "Small" // Value should be same as mentioned in item's options. } ], "offers": { "@type": "Offer", "sku": "offer-topping-shrimp-left-small", "price": "1.00", "priceCurrency": "USD" } }, { "@type": "MenuItemOption", "value": [ { "@type": "PropertyValue", "name": "PIZZA_SIDE", "value": "PIZZA_SIDE_LEFT" // Values are predefined for pizza side. }, { "@type": "PropertyValue", "name": "APPLICABLE_ITEM_OPTION", "value": "Large" // Value should be same as mentioned in item's options. } ], "offers": { "@type": "Offer", "sku": "offer-topping-shrimp-left-large", "price": "2.00", "priceCurrency": "USD" } }, { "@type": "MenuItemOption", "value": [ { "@type": "PropertyValue", "name": "PIZZA_SIDE", "value": "PIZZA_SIDE_WHOLE" // Values are predefined for pizza side. }, { "@type": "PropertyValue", "name": "APPLICABLE_ITEM_OPTION", "value": "Small" // Value should be same as mentioned in item's options. } ], "offers": { "@type": "Offer", "sku": "offer-topping-shrimp-whole-small", "price": "1.50", "priceCurrency": "USD" } }, { "@type": "MenuItemOption", "value": [ { "@type": "PropertyValue", "name": "PIZZA_SIDE", "value": "PIZZA_SIDE_WHOLE" // Values are predefined for pizza side. }, { "@type": "PropertyValue", "name": "APPLICABLE_ITEM_OPTION", "value": "Large" // Value should be same as mentioned in item's options. } ], "offers": { "@type": "Offer", "sku": "offer-topping-shrimp-whole-large", "price": "2.50", "priceCurrency": "USD" } } ] } ] } ] }
АддонМенюСекция
Подгруппа блюд или напитков в виде дополнительного раздела меню для данного пункта меню.
В следующей таблице перечислены свойства типа AddOnMenuSection
:
Свойство | Тип | Необходимость | Описание |
---|---|---|---|
@type | Текст | Необходимый | Это всегда «AddOnMenuSection». |
@id | URL-адрес | Необходимый | Уникальный идентификатор раздела меню. |
name | Текст | Необходимый | Текст, который может идентифицировать AddOnMenuSection, когда пользователь просматривает меню. |
description | Текст | Необязательный | Описание раздела меню. |
eligibleQuantity | QuantitativeValue | Необязательный | Указывает количество элементов, разрешенных в качестве дополнения для этого раздела меню. Вы можете использовать это поле, чтобы ограничить количество дополнений, например минимальное и максимальное количество начинок, которые вы можете выбрать для пиццы. |
image | URL-адрес | Необязательный | Изображение раздела меню. |
hasMenuItem | Массив AddOnMenuItem | Необходимый* | Пункты дополнительного меню, содержащиеся в AddOnMenuSection. |
offers | Массив Offer | Необязательный | Используйте В листинге ниже показано, какие свойства
|
hasMenuSection | Массив AddOnMenuSection | Необходимый* | Логическое подгруппирование дополнительного меню (например, «Ужин», «Закуски» или «Рыбные блюда»). |
defaultOption | Массив AddOnMenuItem | Необязательный | Пункты дополнительного меню, которые будут предварительно выбраны по умолчанию для пользователей в Объекты Число |
numberOfFreeAddOns | Число | Необязательный | Указывает количество надстроек, которые пользователь может выбрать бесплатно. |
Следующие примеры включают объекты AddOnMenuSection
:
Пример 1
{ "@type": "AddOnMenuSection", "@id": "https://www.example.com/1089/addon/1", "name": "AddOnCheese", "hasMenuItem": [ { "@type": "AddOnMenuItem", "@id": "https://www.example.com/1089/addon/a", "name": "Swiss", "offers": { "@type": "Offer", "sku": "offer-swiss", "price": "2.99", "priceCurrency": "USD" } }, { "@type": "AddOnMenuItem", "@id": "https://www.example.com/1089/addon/b", "name": "Mozarella", "offers": { "@type": "Offer", "sku": "offer-mozzarella", "price": "1.99", "priceCurrency": "USD" } } ] }
Пример 2
"menuAddOn": { "@type": "AddOnMenuSection", "name": "Cheese", "@id": "https://www.example.com/1089/addon/1", // Points to an AddOnMenuSection "eligibleQuantity": "@type": "QuantitativeValue", "minValue": 0, "maxValue": 2 // Maximum of 2 cheeses are allowed } }
Пример 3
Пункт меню «Сэндвич с сыром» имеет AddOnMenuSection
«Выбор сыра», в котором по умолчанию предварительно выбраны «Швейцарский» и «Моцарелла».
{ "@type": "AddOnMenuSection", "@id": "https://www.example.com/1089/addon/1", "name": "AddOnCheese", "defaultOption": [ { "@type": "AddOnMenuItem", "@id": "https://www.example.com/1089/addon/a" }, { "@type": "AddOnMenuItem", "@id": "https://www.example.com/1089/addon/b" } ], "hasMenuItem": [ { "@type": "AddOnMenuItem", "@id": "https://www.example.com/1089/addon/a", "name": "Swiss", "offers": { "@type": "Offer", "sku": "offer-swiss", "price": "2.99", "priceCurrency": "USD" } }, { "@type": "AddOnMenuItem", "@id": "https://www.example.com/1089/addon/b", "name": "Mozzarella", "offers": { "@type": "Offer", "sku": "offer-mozzarella", "price": "1.99", "priceCurrency": "USD" } } ] }
AdvanceServiceДоставкаЧасыСпецификация
Представляет часы выполнения, позволяющие пользователям планировать предварительные заказы на доставку и вынос.
Обычно значение opens
меньше значения closes
. Следующие рекомендации применимы к использованию свойств opens
и closes
:
- Свойства
opens
иcloses
не являются обязательными дляAdvanceServiceDeliveryHoursSpecification
, но мы настоятельно рекомендуем их включить. - Время должно быть указано по местному времени для услуги. Не включайте часовой пояс в значения
opens
илиcloses
. Указанные часовые пояса игнорируются. - Если
opens
иcloses
явно не указано, мы предполагаем, что предварительный заказ доступен во все дни и в любое время. - Если
opens
иcloses
совпадают, то мы предполагаем, что предварительный заказ недоступен. - Если
opens
больше, чемcloses
, час закрытия интерпретируется как следующий день. Например, если час открытия установлен на 1 января в 17:00, а час закрытия — 2 часа ночи, то ресторан интерпретируется как закрытие 2 января в 2 часа ночи. -
opens
иcloses
относятся к будущему временному интервалу.closes
является эксклюзивным. Например, еслиopens
происходит в 10:00, аcloses
— в 16:00 с интерваломserviceTimeInterval
, равным 15 минутам, то первый временной интервал начинается в 10:00, а последний временной интервал — в 15:45.
В следующей таблице описаны свойства типа AdvanceServiceDeliveryHoursSpecification
:
Свойство | Тип | Необходимость | Описание |
---|---|---|---|
@type | Текст | Необходимый | Это всегда «AdvanceServiceDeliveryHoursSpecification». |
validFrom | DateTime | Условный | Начальная дата, начиная с которой могут выполняться предварительные заказы пользователей. Например, «2017-05-01T00:00:00-07:00». Если это свойство не установлено, предполагается, что оно действует каждый день. Свойства Если этот тип указан как Дополнительные сведения см. в разделе Форматы DateTime и времени . |
validThrough | DateTime | Необязательный | Конечная дата, после которой предварительные заказы пользователей больше не могут быть выполнены. Например, «2018-12-01T00:00:00-07:00». Если это свойство не установлено, предполагается, что оно действует каждый день. Свойства Если этот тип указан как Время Дополнительные сведения см. в разделе Форматы DateTime и времени . |
opens | Time | Необязательный | Применяется к слотам доставки или выноса. Конкретное время суток, начиная с которого могут выполняться предварительные заказы пользователей. Например, 6:30 утра указывается как «T06:30:00». Время должно быть указано по местному времени для обслуживания. Не включайте часовой пояс в значение Дополнительные сведения см. в разделе Форматы DateTime и времени . |
closes | Time | Необязательный | Применяется к слотам доставки или выноса. Определенное время суток, после которого предварительные заказы пользователей не могут быть выполнены. Например, 21:00 указывается как «T21:00:00». Время должно быть указано по местному времени для обслуживания. Не включайте часовой пояс в значение Дополнительные сведения см. в разделе Форматы DateTime и времени . |
dayOfWeek | Массив DayOfWeek | Необязательный | Дни недели, в которые возможна предварительная доставка. Допустимые значения:
Если вы не укажете дни недели, то |
serviceTimeInterval | Duration | Необходимый | Интервал между двумя последовательными периодами обслуживания. Например: если |
advanceBookingRequirement | QuantitativeValue | Необходимый | Количество минут с момента заказа, в течение которых предварительный заказ может быть выполнен. Например, если для выполнения предварительного заказа требуется не менее 60 минут и его нельзя выполнить более чем через 2 дня, то |
В следующем примере показано использование типа AdvanceServiceDeliveryHoursSpecification
:
Пример 1
{ "@type": "AdvanceServiceDeliveryHoursSpecification", "opens": "T10:00:00", // Delivery between 10AM and 7:59:59PM "closes": "T20:00:00", "serviceTimeInterval": "PT15M", // in slots spaced 15 minutes apart (ISO8601) "advanceBookingRequirement": { "minValue": 60, // The slot should be at least 60 mins away "maxValue": 8640, // but not more than 6 days away "unitCode": "MIN" } }
АллергенПодробнее
Чтобы использовать этот тип, добавьте контекст gs1: "@context": ["http://gs1.org/voc/", "http://schema.org"]
Затем добавьте FoodBeverageTobaccoProduct
к типу соответствующего MenuItem
или MenuItemOption
.
В следующей таблице описаны свойства типа AllergenDetails
:
Свойство | Тип | Необходимость | Описание |
---|---|---|---|
@type | Текст | Необходимый | Это всегда «AllergenDetails». |
allergenType | Текст | Необязательный | Тип аллергена согласно gs1:AllergenTypeCode . Например http://gs1.org/voc/AllergenTypeCode-PEANUTS . |
allergenLevelOfContainmentCode | Текст | Необязательный | Код сдерживания согласно gs1:LevelOfContainmentCode . Например http://gs1.org/voc/LevelOfContainmentCode-CONTAINS , http://gs1.org/voc/LevelOfContainmentCode-FREE_FROM или http://gs1.org/voc/LevelOfContainmentCode-MAY_CONTAIN . |
В следующем примере показано использование типа AllergenDetails
:
{ "@type": ["MenuItem", "FoodBeverageTobaccoProduct"], "@id": "http://www.example.com/bar/menuitem/6", "name": "Strawberry joghurt drink", "description": "A 0.5l bottle of strawberry joghurt drink.", "offers": { "@type": "Offer", "sku": "offer-joghurt-drink", "price": "2.49", "priceCurrency": "USD" }, "hasAllergen": [ { "@type": "AllergenDetails", "allergenType": "http://gs1.org/voc/AllergenTypeCode-GLUTEN", "allergenLevelOfContainmentCode": "http://gs1.org/voc/LevelOfContainmentCode-FREE_FROM" }, { "@type": "AllergenDetails", "allergenType": "http://gs1.org/voc/AllergenTypeCode-LACTOSE", "allergenLevelOfContainmentCode": "http://gs1.org/voc/LevelOfContainmentCode-CONTAINS" } ] },
ДоставкаСтоимостьСпецификация
В следующей таблице описаны свойства типа DeliveryChargeSpecification
:
Свойство | Тип | Необходимость | Описание |
---|---|---|---|
@type | Текст | Необходимый | Это всегда «DeliveryChargeSpecification». |
@id | URL-адрес | Необязательный | Идентификатор для спецификации стоимости доставки. |
price | Число | Необходимый | Общая стоимость доставки в виде только числового значения. Используйте свойство priceCurrency для обозначения типа валюты вместо символов валюты. Например, «6.00» без символа валюты. |
priceCurrency | Текст | Необходимый | Трехбуквенный код валюты ISO 4217. Например, «доллар США». |
eligibleTransactionVolume | PriceSpecification | Необязательный | Объем транзакции в денежной единице, для которого действительна данная спецификация стоимости доставки. Например, чтобы указать минимальный объем закупки или указать, что доставка доступна без дополнительной оплаты сверх определенного объема заказа. |
eligibleQuantity | QuantitativeValue | Необязательный | Интервал и единица измерения объемов заказа, для которых действительна стоимость доставки. Это позволяет, например, указать, что определенная плата за перевозку действительна только для определенного количества. |
eligibleRegion | Массив GeoShape или Place или GeoCircle | Необязательный | Место или GeoShape/GeoCircle для геополитического региона(ов), для которого действует предложение или указание стоимости доставки. Используйте это свойство, только если стоимость доставки зависит от региона. |
validFrom | DateTime | Необязательный | Дата и время (включая часовой пояс), когда указанная стоимость доставки вступает в силу. Например, «2017-05-01T06:30:00-07:00». Дополнительные сведения см. в разделе Форматы DateTime и времени . |
validThrough | DateTime | Необязательный | Дата и время (включая часовой пояс), после которого указанная стоимость доставки становится недействительной. Например, «2017-05-01T06:30:00-07:00». Время для validThrough является исключительным: например, если для этого времени установлено значение 18:00, время действительно до 17:59:59. Дополнительные сведения см. в разделе Форматы DateTime и времени . |
В следующих примерах показаны элементы DeliveryChargeSpecification
:
Пример 1
"offers": { "@type":"Offer", "priceSpecification":[ { "@type": "DeliveryChargeSpecification", "price": "5.0", "priceCurrency": "USD" } ] }
Пример 2
"priceSpecification": [ { "@type": "DeliveryChargeSpecification", "@id": "http://www.provider.com/defaultdeliveryfee/foo", "price": "10.0", "priceCurrency": "USD", "eligibleQuantity": { "@type": "QuantitativeValue", "minValue": 3 // Minimum of 3 items required for delivery } }, { "@type": "DeliveryChargeSpecification", "@id": "http://www.provider.com/deliveryfee/foo/1", "price": "20.0", "priceCurrency": "USD", "validFrom":"T18:00:00", // Valid from 6:00PM "validThrough":"T22:00:00", // Valid to 9:59:59PM "eligibleQuantity": { "@type": "QuantitativeValue", "minValue": 3 // Minimum of 3 items required for delivery } } ]
Пример 3
"priceSpecification": [{ "@type": "DeliveryChargeSpecification", "@id": "http://www.provider.com/threebrotherstacos/deliveryfee/1", "price": "8.00", // Charges $8 for area5 "priceCurrency": "USD", "eligibleTransactionVolume": { "@type": "PriceSpecification", "minPrice": "20.00", "priceCurrency": "USD" }, "eligibleRegion": [ // area5 { "@type": "GeoCircle", "geoMidpoint": { "@type": "GeoCoordinates", "latitude": "37.7392607", "longitude": "-122.3895522" }, "geoRadius": "4505" } ] }, { "@type": "DeliveryChargeSpecification", "@id": "http://www.provider.com/threebrotherstacos/defaultdeliveryfee", "price": "6.00", // Charges $6 when delivered from Foo restaurant to area1, area2, area3 and area4 (Default charge) "priceCurrency": "USD", "eligibleTransactionVolume": { "@type": "PriceSpecification", "minPrice": "20.00", // Minimum order price for delivery is $20 "priceCurrency": "USD" } } ]
В дополнение к "@type": ["DeliveryChargeSpecification"]
объект можно расширить с помощью UnitPriceSpecification :
"@type": ["DeliveryChargeSpecification", "UnitPriceSpecification"]
Расширение предоставляет еще два свойства, необходимые для оплаты доставки, рассчитываемой в процентах.
Свойство | Тип | Необходимость | Описание |
---|---|---|---|
referenceQuantity | QuantitativeValue | Необходимый | Справочное количество, к которому применяется определенная цена. Например, referenceQuantity со значением 10 и unitCode «P1» дает 10 % от стоимости заказа. На данный момент поддерживается только unitCode «P1». |
basePrice | Число | Необязательный | Базовая плата в дополнение к referenceQuantity . Например, referenceQuantity , равное 10, с unitCode , равным «P1», и basePrice , равным 5 в долларах США, приведет к выплате 5 долларов США + 10 % от стоимости заказа. Значение по умолчанию — 0. |
Примеры стоимости доставки
Google позволяет вам заранее указать различные сборы для пользователей, используя Offer.PriceSpecification
сущности Service.
Обратите внимание, что сквозной заказ в настоящее время поддерживает только одну DeliveryChargeSpecification
. Объедините все типы сборов в одну DeliveryChargeSpecification
.
См. примеры фидов услуг , чтобы узнать, как указать стоимость доставки в зависимости от региона, расстояния и стоимости заказа.
Если комиссия отсутствует, Offer.PriceSpecification
опускается.
- Пример 1. Плата за доставку составляет 5 % от общей суммы корзины.
- Пример 2: Стоимость доставки составляет 5 долларов США.
- Пример 3. Стоимость доставки составляет 5 долларов США + 10 % от общей суммы корзины.
- Пример 4. Плата за доставку составляет 5 долларов США, плата за багаж — 0,1 доллара США.
- Пример 5. Плата за доставку составляет 5 %, а плата за удобство — 2 % от общей суммы корзины.
- Пример 6: Стоимость доставки составляет 5 долларов США и 1 доллар США за каждый дополнительный 1 км расстояния.
Пример 1
priceSpecification [ { "@type": ["DeliveryChargeSpecification", "UnitPriceSpecification"], "referenceQuantity": { "@type": "QuantitativeValue", "value": "5.00", // 5% "unitCode": "P1" // P1 == % }, "priceCurrency": "USD" } ]
Пример 2
priceSpecification [ { "@type": ["DeliveryChargeSpecification"], "priceCurrency": "USD", "price": "5.00" } ]
Пример 3
priceSpecification [ { "@type": ["DeliveryChargeSpecification", "UnitPriceSpecification"], "referenceQuantity": { "@type": "QuantitativeValue", "value": "10.00", // 10% "unitCode": "P1", // P1 == % }, "priceCurrency": "USD", "basePrice": "5.00" // User always pays $5 in addition to 10% } ]
Пример 4
priceSpecification [ { "@type": ["DeliveryChargeSpecification"], "priceCurrency": "USD", "price": "5.10" //$5 + $0.1 }
Пример 5
priceSpecification [ { "@type": ["DeliveryChargeSpecification", "UnitPriceSpecification"], "referenceQuantity": { "@type": "QuantitativeValue", "value": "7.00", // 5% + 2% "unitCode": "P1" // P1 == % }, "priceCurrency": "USD" }, ]
Пример 6
priceSpecification [ { "@type": ["DeliveryChargeSpecification", "UnitPriceSpecification"], "basePrice": 5.00, // User always pays $5 "price": 1.00, // An additional $1.00 is added per 1km "priceCurrency": "USD", "referenceQuantity": { "@type": "QuantitativeValue", "unitCode": "MTR", // MTR == meter "value": "1000.0" // 1km } } ]
ГеоКркл
В следующей таблице описаны свойства типа GeoCircle
:
Свойство | Тип | Необходимость | Описание |
---|---|---|---|
@type | Текст | Необходимый | Это всегда «GeoCircle». |
geoMidpoint | GeoCoordinates | Необходимый | Указывает GeoCoordinates в центре GeoCircle . |
geoRadius | Число | Необходимый | Указывает приблизительный радиус (в метрах) GeoCircle . |
В следующем примере показан элемент GeoCircle
:
Пример
{ "@type": "GeoCircle", "geoMidpoint": { "@type": "GeoCoordinates", "latitude": "37.7392607", "longitude": "-122.3895522" }, "geoRadius": "4505" }
Геокоординаты
В следующей таблице описаны свойства типа GeoCoordinates
:
Свойство | Тип | Необходимость | Описание |
---|---|---|---|
@type | Текст | Необходимый | Это всегда «Геокоординаты». |
latitude | Число | Необходимый | Широта в градусах. Значения ограничены диапазоном от -90 до 90 включительно. Если указанное значение меньше -90, ему присваивается значение -90; если значение больше 90, оно устанавливается на 90. Точность должна быть не менее 5 десятичных знаков. |
longitude | Число | Необходимый | Долгота в градусах. Значения вне диапазона от -180 до 180 переносятся так, чтобы они попадали в диапазон. Например, значение -190 преобразуется в 170. Значение 190 преобразуется в -170. Это отражает тот факт, что долгота охватывает земной шар. Точность должна быть не менее 5 десятичных знаков. |
В следующем примере показан элемент GeoCoordinates
:
Пример
"geo": { "@type": "GeoCoordinates", "latitude": "35.7392607", "longitude": "-120.3895522" }
ГеоШейп
В следующей таблице описаны свойства типа GeoShape
:
Свойство | Тип | Необходимость | Описание |
---|---|---|---|
@type | Текст | Необходимый | Это всегда «GeoShape». |
polygon | Массив текста | Необходимый | Многоугольник или мультиполигон, выраженный как серия из трех или более точек, разделенных пробелами. Рекомендуется, чтобы первая и последняя точки были одинаковыми, но это не обязательно. Каждая точка в многоугольнике или мультиполигоне определяется точкой широты, за которой следует точка долготы. Вы также должны указать точки в направлении против часовой стрелки. В большинстве случаев у вас будет один полигон. Более сложные случаи использования см. в документации по сфере доставки . |
В следующих примерах показаны элементы GeoShape
:
Пример 1
{ "@type": "GeoShape", // area4 // Specify latitude first (i.e., lat long lat long ...) "polygon": "37.806000 -122.425592 37.775849 -122.419043 37.795547 -122.394046 37.808747 -122.412619" },
Пример 2
{ "@type": "GeoShape", // A service area with a hole. // Specify latitude first (i.e., lat long lat long ...) "polygon": [ “37.771535 -122.506881 37.764289 -122.506669 37.766497 -122.453058”, “37.791707 -122.447987 37.746676 -122.449433 37.736150 -122.505944 37.780924 -122.509729”] },
Пример 3
{ "@type": "Service", "@id": "http://www.provider.com/service/1", "areaServed": [ { "@type": "GeoShape", // Richmond District delivery area. // Specify latitude first (i.e., lat long lat long ...) "polygon": "37.785847 -122.484851 37.772757 -122.483983 37.774442 -122.458563 37.786876 -122.459474" }, { "@type": "GeoShape", // Haight-Ashbury delivery area. // Specify latitude first (i.e., lat long lat long ...) "polygon": "37.774804 -122.454774 37.766224 -122.452881 37.769087 -122.436043 37.773087 -122.437417" } ], ... },
Меню
В следующей таблице перечислены свойства типа Menu
:
Свойство | Тип | Необходимость | Описание |
---|---|---|---|
@type | Текст | Необходимый | Это всегда «Меню». |
@id | URL-адрес | Необходимый | Уникальный идентификатор меню. |
name | Текст | Необязательный | Текст, который может идентифицировать Menu , когда пользователь просматривает меню. |
description | Текст | Необязательный | Описание меню. |
disclaimer | MenuDisclaimer | Необязательный | Отказ от ответственности за меню. Например, раскрытие информации о пищевой ценности и раскрытие аллергенов. |
hasMenuSection | Один объект или массив MenuSection | Необязательный | Логическое подгруппирование меню (например, «Ужин», «Закуски» или «Рыбные блюда»). |
hasMenuItem | Один объект или массив MenuItem | Необязательный | Объекты MenuItem содержащиеся в Menu , обычно когда Menu не подразделяется на MenuSections . |
inLanguage | Текст | Необязательный | Язык содержимого меню, как код языка из стандарта IETF BCP 47 . Например, «en-US». |
В следующих примерах показано использование типа Menu
:
Пример 1
{ "@type": "Menu", "@id": "http://www.provider.com/somerestaurant/menu/1", "hasMenuSection": { "@type": "MenuSection", "@id": "http://www.provider.com/somerestaurant/menusection/1", "name": "Tacos", "description": "Tacos inspired by India cuisine.", "offers": { "@type": "Offer", "availabilityStarts": "T08:00:00", // Starts at 8:00AM "availabilityEnds": "T22:00:00" // Ends at 10:00PM. Available 8AM-9:59:59PM }, "hasMenuItem": { "@type": "MenuItem", "@id": "http://www.provider.com/somerestaurant/menuitem/1", "name": "Aloo Gobi Taco", "description": "Mexico City-style street corn tortilla taco filled with a flavorful mixture of mildly south Indian spiced cauliflower, potato, tomato, onions and bell peppers.", "offers": { "@type": "Offer", "sku": "offer-aloo-gobi-taco", "price": "3.50", "priceCurrency": "USD" }, "nutrition": { "@type": "NutritionInformation", "calories": "170 Cal", "fatContent": "3 g", "fiberContent": "2 g", "proteinContent": "4 g" }, "suitableForDiet": "http://schema.org/GlutenFreeDiet" } }, "inLanguage": "English" }
Пример 2
В этом примере hasMenuItem
показан как массив.
{ "@type": "Menu", "@id": "http://www.provider.com/somerestaurant/menu/1", "name": "Dine-In Menu", "description": "Menu for in-restaurant dining only.", "hasMenuSection": [ { "@type": "MenuSection", "@id": "http://www.provider.com/somerestaurant/menusection/1", "name": "Main", "description": "Main course", "image": "http://www.provider.com/somerestaurant/main_dishes.jpg", "hasMenuItem": [ { "@type": "MenuItem", "@id": "http://www.provider.com/somerestaurant/menuitem/1", "name": "Pizza", "description": "Pizza", "offers": { "@type": "Offer", "sku": "offer-pizza", "price": "7.49", "priceCurrency": "USD", "availabilityStarts": "T08:00:00", // Starts at 8:00AM "availabilityEnds": "T18:00:00" // Ends at 6:00PM, last order at 5:59:59PM } }, { "@type": "MenuItem", "@id": "http://www.provider.com/somerestaurant/menuitem/2", "name": "Pasta", "description": "Pasta", "offers": [ { "@type": "Offer", "sku": "offer-pasta-lunch", "price": "7.49", "priceCurrency": "USD", "availabilityStarts": "T08:00:00", // Starts at 8:00AM "availabilityEnds": "T18:00:00" // Ends at 6:00PM, last order at 5:59:59PM }, { "@type": "Offer", "sku": "offer-pasta-dinner", "price": "10.49", "priceCurrency": "USD", "availabilityStarts": "T18:00:00", // Starts at 6:00PM "availabilityEnds": "T21:00:00" // Ends at 9:00PM, last order at 8:59:59PM } ] } ] }, { "@type": "MenuSection", "@id": "http://www.provider.com/somerestaurant/menusection/2", "name": "Soups & Salads", "description": "Salads and a few choices of soup", "image": "https://www.provider.com/somerestaurant/soup_and_salad_dishes.jpg", "hasMenuItem": { "@type": "MenuItem", "@id": "http://www.provider.com/somerestaurant/menuitem/3", "name": "Pea Soup", "description": "Creamy pea soup topped with melted cheese and sourdough croutons.", "offers": { "@type": "Offer", "sku": "offer-pea-soup", "price": "3.49", "priceCurrency": "USD" }, "suitableForDiet": "http://schema.org/GlutenFreeDiet" } } ] }
Пример 3
В этом примере hasMenuSection
показан как массив.
{ "@type": "Menu", "@id": "http://www.provider.com/somerestaurant/menu/1", "name": "Dine-In Menu", "description": "Menu for in-restaurant dining only.", "hasMenuSection": [ { "@type": "MenuSection", "@id": "http://www.provider.com/somerestaurant/menusection/1", "name": "Dinner", "description": "Dinner dishes", "hasMenuSection": [ { "@type": "MenuSection", "@id": "http://www.provider.com/somerestaurant/menusection/2", "name": "Starters", "description": "Appetizers and such", "image": "https://www.provider.com/somerestaurant/starter_dishes.jpg", "hasMenuItem": { "@type": "MenuItem", "@id": "http://www.provider.com/somerestaurant/menuitem/1", "name": "Potato Skins", "description": "Small serving of stuffed potato skins.", "offers": { "@type": "Offer", "sku": "offer-potato-skins", "price": "7.49", "priceCurrency": "USD" }, "suitableForDiet": "http://schema.org/GlutenFreeDiet" } }, { "@type": "MenuSection", "@id": "http://www.provider.com/somerestaurant/menusection/3", "name": "Soups & Salads", "description": "Salads and a few choices of soup", "image": "https://thisisarestaurant.com/soup_and_salad_dishes.jpg", "hasMenuItem": { "@type": "MenuItem", "@id": "http://www.provider.com/somerestaurant/menuitem/2", "name": "Pea Soup", "description": "Creamy pea soup topped with melted cheese and sourdough croutons.", "offers": { "@type": "Offer", "sku": "offer-pea-soup", "price": "3.49", "priceCurrency": "USD" }, "suitableForDiet": "http://schema.org/GlutenFreeDiet" } }, { "@type": "MenuSection", "@id": "http://www.provider.com/somerestaurant/menusection/4", "name": "Steak", "description": "Steak Dishes", "image": "https://steak.com/steak_dishes.jpg", "hasMenuItem": { "@type": "MenuItem", "@id": "http://www.provider.com/somerestaurant/menuitem/3", "name": "Sirloin", "description": "Sirloin steak dish.", "offers": { "@type": "Offer", "sku": "offer-sirloin-steak", "price": "15.49", "priceCurrency": "USD" }, "suitableForDiet": "http://schema.org/GlutenFreeDiet" } } ] }, { "@type": "MenuSection", "@id": "http://www.provider.com/somerestaurant/menusection/5", "name": "Desserts", "description": "Dessert dishes.", "image": "http://www.provider.com/somerestaurant/dessert_dishes.jpg", "hasMenuItem": { "@type": "MenuItem", "@id": "http://www.provider.com/somerestaurant/menuitem/4", "name": "Chocolate Pie", "description": "A slice of chocolate pie.", "offers": { "@type": "Offer", "sku": "offer-chocolate-pie", "price": "3.49", "priceCurrency": "USD" } } } ] }
Дополнительные примеры сущностей Menu
см. в разделе «Примеры фидов ресторанов и меню» .
МенюОтказ от ответственности
В следующей таблице перечислены свойства типа MenuDisclaimer
:
Свойство | Тип | Необходимость | Описание |
---|---|---|---|
@type | Текст | Необходимый | Это всегда «MenuDisclaimer». |
@id | URL-адрес | Необходимый | Уникальный идентификатор заявления об отказе от ответственности в меню. |
text | Текст | Необходимый | Текст заявления об отказе от ответственности. Например: «Среднее ежедневное потребление энергии взрослым составляет 8700 кДж». |
url | URL-адрес | Необязательный | URL-адрес, указывающий на страницу с более подробной информацией об отказе от ответственности. |
В следующем примере показано использование типа MenuDisclaimer
:
Пример
{ "@type": "Menu", "@id": "menu_1", "disclaimer": { "@type": "MenuDisclaimer", "@id": "menu_1_disclaimer_1", "text": "The average adult daily energy intake is 8700 kJ", "url": "https://partner.domain.com/menu/provider/disclaimer/more-info.html" } }
Пункт меню
Пункт меню, представляющий элемент в меню. В следующей таблице перечислены свойства типа MenuItem
:
Свойство | Тип | Необходимость | Описание |
---|---|---|---|
@type | Текст | Необходимый | Это всегда «MenuItem». |
@id | URL-адрес | Необходимый | Уникальный идентификатор пункта меню. |
name | Текст | Необходимый | Текст, который может идентифицировать MenuItem , когда пользователь просматривает меню. |
description | Текст | Необязательный | Описание пункта меню. |
image | URL-адрес | Необязательный | Изображение пункта меню. Используйте следующие рекомендации по изображениям:
|
menuAddOn | Массив AddOnMenuSection | Необязательный | Элементы раздела меню, которые можно добавлять в качестве дополнений к элементу меню. |
offers | Массив Offer | Необходимый* | Одно или несколько предложений предоставить этот В листинге ниже показано, какие свойства
|
hasMenuItemOptions | Массив MenuItemOption | Необходимый | Список базовых опций/вариантов для этого пункта меню. Параметры следует использовать для указания различных базовых вариантов, доступных для элемента, например маленького, среднего и большого. |
suitableForDiet | Массив RestrictedDiet | Необязательный | Блюдо соответствует описанному диетическому ограничению (например, «http://schema.org/GlutenFreeDiet» или «http://schema.org/VeganDiet». Это пронумерованный список возможных значений). |
nutrition | NutritionInformation | Необязательный | Информация о пищевой ценности блюда, особенно о калориях. |
hasAllergen | AllergenDetails | Необязательный | Аллергены блюда согласно gs1:AllergenDetails . Добавьте контекст gs1, чтобы использовать это свойство: "@context": ["http://gs1.org/voc/", "http://schema.org"] . И добавьте FoodBeverageTobaccoProduct к типу MenuItem . |
additive | Массив AdditiveDetails | Необязательный | Добавки блюда согласно gs1:AdditiveDetails . Это нумерованный список возможных значений. Добавьте контекст gs1, чтобы использовать это свойство: "@context": ["http://gs1.org/voc/", "http://schema.org"] . И добавьте FoodBeverageTobaccoProduct к типу MenuItem . |
packaging | PackagingDetails | Необязательный | Информация об упаковке и переработке этого MenuItem согласно gs1:PackagingDetails . Добавьте контекст gs1, чтобы использовать это свойство: "@context": ["http://gs1.org/voc/", "http://schema.org"] . И добавьте FoodBeverageTobaccoProduct к типу MenuItem . |
В следующих примерах показаны элементы MenuItem
:
Пример 1
"hasMenuItem": { "@type": "MenuItem", "@id": "http://www.provider.com/bar/menuitem/1", "name": "Potato Skins", "description": "Small serving of stuffed potato skins.", "offers": { "@type": "Offer", "sku": "offer-potato-skins", "price": "7.49", "priceCurrency": "USD" }, "suitableForDiet": "http://schema.org/GlutenFreeDiet" }
Пример 2
"hasMenuItem": [ { "@type": "MenuItem", "@id": "https://www.example.com/1089/product/170067", "name": "Veg Grill Burrito", "offers": { "@type": "Offer", "sku": "offer-veg-grill-burrito", "price": "12.99", "priceCurrency": "USD" }, "menuAddOn": { "@type": "AddOnMenuSection", "name": "Cheese", "@id": "https://www.example.com/1089/addon/1", // Points to an AddOnMenuSection "eligibleQuantity": "@type": "QuantitativeValue", "minValue": 0, "maxValue": 2 // Maximum of 2 cheeses are allowed } } }, { "@type": "MenuItem", "@id": "https://www.example.com/1089/product/170018", "name": "Chicken Taco", "offers": { "@type": "Offer", "sku": "offer-chicken-taco", "price": "6.99", "priceCurrency": "USD" } } ]
Пример 3
{ "@type": "MenuItem", "@id": "https://www.example.com/1089/product/170067", "name": "Meat Combo", "hasMenuItemOptions": [ { "@type": "MenuItemOption", "value": { "@type": "PropertyValue", "name": "OPTION", "value": "Plate", "offers": { "@type": "Offer", "sku": "offer-meat-combo-plate", "price": "12.00", "priceCurrency": "USD" }, "menuAddOn": [ { "@type": "AddOnMenuSection", "name": "Toppings for Plate", "@id": "https://www.example.com/1089/addon/1", "eligibleQuantity": { "@type": "QuantitativeValue", "minValue": 0, "maxValue": 3 }, "hasMenuItem": [ { "@type": "AddOnMenuItem", "@id": "https://www.example.com/1089/addon/1/a", "name": "Hummus", "offers": { "@type": "Offer", "sku": "offer-meat-combo-topping-hummus", "price": "1.00", "priceCurrency": "USD" } } // -- Other Items -- ] } ] } }, { "@type": "MenuItemOption", "value": { "@type": "PropertyValue", "name": "OPTION", "value": "Sandwich" }, "offers": { "@type": "Offer", "sku": "offer-meat-combo-sandwich", "price": "10.00", "priceCurrency": "USD" }, "menuAddOn": [ { "@type": "AddOnMenuSection", "name": "Toppings for Sandwich", "@id": "https://www.example.com/1089/addon/1", "eligibleQuantity": { "@type": "QuantitativeValue", "minValue": 0, "maxValue": 2 }, "hasMenuItem": [ { "@type": "AddOnMenuItem", "@id": "https://www.example.com/1089/addon/1/a", "name": "Hummus", "offers": { "@type": "Offer", "sku": "offer-meat-combo-topping-hummus", "price": "1.00", "priceCurrency": "USD" } } // -- Other Items -- ] } ] } ] }
Пример 4
{ "@type": "MenuItem", "@id": "https://www.example.com/1089/product/170067", "name": "Pepperoni Pizza", "hasMenuItemOptions": [ { "@type": "MenuItemOption", "value": { "@type": "PropertyValue", "name": "SIZE", "value": "Small" }, "offers": { "@type": "Offer", "sku": "offer-small", "price": "10.00", "priceCurrency": "USD" } }, { "@type": "MenuItemOption", "value": { "@type": "PropertyValue", "name": "SIZE", "value": "Medium" }, "offers": { "@type": "Offer", "sku": "offer-medium", "price": "15.00", "priceCurrency": "USD" } }, { "@type": "MenuItemOption", "value": { "@type": "PropertyValue", "name": "SIZE", "value": "Large" }, "offers": { "@type": "Offer", "sku": "offer-large", "price": "20.00", "priceCurrency": "USD" } } ] }
Пример 5
{ "@type": ["MenuItem", "FoodBeverageTobaccoProduct"], "@id": "http://www.example.com/bar/menuitem/9", "name": "Ice Coffee", "offers": { "@type": "Offer", "sku": "offer-ice-coffee", "price": "3.99", "priceCurrency": "USD" }, "nutrition": { "@type": "NutritionInformation", "description": "Contains preservatives and artificial flavor" }, "hasAllergen": [ { "@type": "AllergenDetails", "allergenType": "http://gs1.org/voc/AllergenTypeCode-LACTOSE", "allergenLevelOfContainmentCode": "http://gs1.org/voc/LevelOfContainmentCode-CONTAINS" }, { "@type": "AllergenDetails", "allergenType": "http://gs1.org/voc/AllergenTypeCode-PEANUTS", "allergenLevelOfContainmentCode": "http://gs1.org/voc/LevelOfContainmentCode-MAY_CONTAIN" } ], "additive": [ { "@type": "AdditiveDetails", "additiveName": "caffeine", "additiveLevelOfContainment": "http://gs1.org/voc/LevelOfContainmentCode-CONTAINS" } ], "packaging": { "@type": "PackagingDetails", "packagingRecyclingProcessType" : "http://gs1.org/voc/PackagingRecyclingProcessTypeCode-REUSABLE", "hasReturnablePackageDeposit": { "@type": "ReturnablePackageDepositDetails", "returnablePackageDepositAmount": { "@type": "http://gs1.org/voc/PriceSpecification", "http://gs1.org/voc/price": "0.10", "http://gs1.org/voc/priceCurrency": "USD" } } } }
Дополнительные примеры сущностей MenuItem
см. в разделе Примеры фидов ресторанов и меню .
Менюитемопция
Возможность представить варианты, которые пользователь должен будет сделать при выборе блюда или комбинации. Пользователь должен выбрать опцию, в противном случае заказ считается недействительным. Например, в случае с пиццей можно выбрать маленький, средний или большой размер.
Примеры использования MenuItemOption
см. в нашем руководстве по настройке с помощью MenuItemOption
.
В следующей таблице перечислены свойства типа MenuItemOption
:
Свойство | Тип | Необходимость | Описание |
---|---|---|---|
@type | Текст | Необходимый | Это всегда «MenuItemOption». |
value | PropertyValue | Необходимый | PropertyValue , содержащий пару имя/значение, представляющую параметр. |
offers | Массив Offer | Необходимый | Одно или несколько предложений предоставить этот В листинге ниже показано, какие свойства
|
menuAddOn | Array of | Необязательный | Раздел меню разрешенных элементов, которые можно добавить в качестве дополнения. Используйте это только в том случае, если надстройки предназначены для определенного пункта меню. В противном случае добавьте надстройки, используя свойство MenuItem . |
suitableForDiet | Массив RestrictedDiet | Необязательный | Нумерованный список, в котором указаны диеты, при которых это блюдо соответствует описанному диетическому ограничению (например, «http://schema.org/GlutenFreeDiet» или «http://schema.org/VeganDiet»). |
nutrition | NutritionInformation | Необязательный | Информация о пищевой ценности блюда, особенно о калориях. |
hasAllergen | AllergenDetails | Необязательный | Аллергены блюда согласно gs1:AllergenDetails . Добавьте контекст gs1, чтобы использовать это свойство: "@context": ["http://gs1.org/voc/", "http://schema.org"] . И добавьте FoodBeverageTobaccoProduct к типу MenuItemOption . |
additive | Массив AdditiveDetails | Необязательный | Добавки блюда согласно gs1:AdditiveDetails . Это нумерованный список возможных значений. Добавьте контекст gs1, чтобы использовать это свойство: "@context": ["http://gs1.org/voc/", "http://schema.org"] . И добавьте FoodBeverageTobaccoProduct к типу MenuItemOption . |
packaging | PackagingDetails | Необязательный | Информация об упаковке и переработке этого MenuItem для gs1:PackagingDetails Добавьте контекст gs1, чтобы использовать это свойство: "@context": ["http://gs1.org/voc/", "http://schema.org"] . И добавьте FoodBeverageTobaccoProduct к типу MenuItemOption . |
В следующем примере показаны элементы MenuItemOption
:
Пример 1
{ "@type": "MenuItem", "@id": "https://www.example.com/1089/product/170067", "name": "Pepperoni Pizza", "hasMenuItemOptions": [ { "@type": "MenuItemOption", "value": { "@type": "PropertyValue", "name": "SIZE", "value": "Small" }, "offers": { "@type": "Offer", "sku": "offer-small", "price": "10.00", "priceCurrency": "USD" } }, { "@type": "MenuItemOption", "value": { "@type": "PropertyValue", "name": "SIZE", "value": "Medium" }, "offers": { "@type": "Offer", "sku": "offer-medium", "price": "15.00", "priceCurrency": "USD" } }, { "@type": "MenuItemOption", "value": { "@type": "PropertyValue", "name": "SIZE", "value": "Large" }, "offers": { "@type": "Offer", "sku": "offer-large", "price": "20.00", "priceCurrency": "USD" } } ] }
Пример 2
{ "@type": "MenuItem", "@id": "https://www.example.com/1089/product/170067", "name": "Meat Combo", "hasMenuItemOptions": [ { "@type": "MenuItemOption", "value": { "@type": "PropertyValue", "name": "OPTION", "value": "Plate", "offers": { "@type": "Offer", "sku": "offer-meat-combo-plate", "price": "12.00", "priceCurrency": "USD" }, "menuAddOn": [ { "@type": "AddOnMenuSection", "name": "Toppings for Plate", "@id": "https://www.example.com/1089/addon/1", "eligibleQuantity": { "@type": "QuantitativeValue", "minValue": 0, "maxValue": 3 }, "hasMenuItem": [ { "@type": "AddOnMenuItem", "@id": "https://www.example.com/1089/addon/1/a", "name": "Hummus", "offers": { "@type": "Offer", "sku": "offer-meat-combo-topping-hummus", "price": "1.00", "priceCurrency": "USD" } } // -- Other Items -- ] } ] } }, { "@type": "MenuItemOption", "value": { "@type": "PropertyValue", "name": "OPTION", "value": "Sandwich" }, "offers": { "@type": "Offer", "sku": "offer-meat-combo-sandwich", "price": "10.00", "priceCurrency": "USD" }, "menuAddOn": [ { "@type": "AddOnMenuSection", "name": "Toppings for Sandwich", "@id": "https://www.example.com/1089/addon/1", "eligibleQuantity": { "@type": "QuantitativeValue", "minValue": 0, "maxValue": 2 }, "hasMenuItem": [ { "@type": "AddOnMenuItem", "@id": "https://www.example.com/1089/addon/1/a", "name": "Hummus", "offers": { "@type": "Offer", "sku": "offer-meat-combo-topping-hummus", "price": "1.00", "priceCurrency": "USD" } } // -- Other Items -- ] } ] } ] }
МенюРаздел
Раздел меню для представления определенного раздела меню. В следующей таблице перечислены свойства типа MenuSection
:
Свойство | Тип | Необходимость | Описание |
---|---|---|---|
@type | Текст | Необходимый | Это всегда «MenuSection». |
@id | URL-адрес | Необходимый | Уникальный идентификатор раздела меню. |
name | Текст | Необходимый | Текст, который может идентифицировать MenuSection , когда пользователь просматривает меню. |
description | Текст | Необязательный | Описание раздела меню. |
hasMenuSection | Массив MenuSection | Необязательный | Логическая подгруппа MenuSection . Например, раздел меню «Ужин» может иметь несколько подразделов, например «Блюда из птицы» или «Вегетарианские». |
hasMenuItem | Массив MenuItem | Необязательный | Пункты меню, содержащиеся в MenuSection . |
offers | Массив Offer | Необязательный | Используйте В следующем списке показано, какие свойства
|
image | URL-адрес | Необязательный | Изображение раздела меню. |
В следующих примерах показаны сущности MenuSection
:
Пример 1
{ "@type": "MenuSection", "@id": "http://www.provider.com/bar/menusection/4", "name": "Steak", "description": "Steak Dishes", "image": "https://steak.com/steak_dishes.jpg", "hasMenuItem": { "@type": "MenuItem", "@id": "http://www.provider.com/bar/menuitem/3", "name": "Sirloin", "description": "Sirloin steak dish.", "offers": { "@type": "Offer", "sku": "offer-sirloin-steak", "price": "15.49", "priceCurrency": "USD" }, "suitableForDiet": "http://schema.org/GlutenFreeDiet" } }
Пример 2
"hasMenuSection": [ { "@type": "MenuSection", "@id": "https://www.example.com/1089/categorization/25114480", "name": "Main Items", "hasMenuItem": [ { "@type": "MenuItem", "@id": "https://www.example.com/1089/product/170067", "name": "Veg Grill Burrito", "offers": { "@type": "Offer", "sku": "offer-veg-grill-burrito", "price": "12.99", "priceCurrency": "USD" }, "menuAddOn": { "@type": "AddOnMenuSection", "name": "Cheese", "@id": "https://www.example.com/1089/addon/1", // Points to an AddOnMenuSection "eligibleQuantity": "@type": "QuantitativeValue", "minValue": 0, "maxValue": 2 // Maximum of 2 cheeses are allowed } } }, { "@type": "MenuItem", "@id": "https://www.example.com/1089/product/170018", "name": "Chicken Taco", "offers": { "@type": "Offer", "sku": "offer-chicken-taco", "price": "6.99", "priceCurrency": "USD" } } ] }, { "@type": "AddOnMenuSection", "@id": "https://www.example.com/1089/addon/1", "name": "AddOnCheese", "hasMenuItem": [ { "@type": "AddOnMenuItem", "@id": "https://www.example.com/1089/addon/a", "name": "Swiss", "offers": { "@type": "Offer", "sku": "offer-swiss", "price": "2.99", "priceCurrency": "USD" } }, { "@type": "AddOnMenuItem", "@id": "https://www.example.com/1089/addon/b", "name": "Mozarella", "offers": { "@type": "Offer", "sku": "offer-mozzarella", "price": "1.99", "priceCurrency": "USD" } } ] } ]
Дополнительные примеры сущностей MenuSection
см. в разделе «Примеры фидов ресторанов и меню» .
Информация о питании
В следующей таблице описаны свойства типа NutritionInformation
. Единицы измерения чувствительны к регистру. Например, «Cal» принимается, а «cal» — нет.
Свойство | Тип | Необходимость | Описание |
---|---|---|---|
@type | Текст | Необходимый | Это всегда «Информация о питании». |
description | Текст | Необязательный | Информация о питании в произвольном тексте. Например «Содержит консерванты». |
calories | Текст | Необязательный | Количество калорий в кал, ккал или кДж в следующем формате: number Cal_kcal_OR_kJ Например, «240 Кал». |
carbohydrateContent | Текст | Необязательный | Количество углеводов, обычно в г, в следующем формате: number g_OR_mg Например, «7 г». |
cholesterolContent | Текст | Необязательный | Количество холестерина, обычно в мг, в следующем формате: number g_OR_mg Например, «12 мг». |
fatContent | Текст | Необязательный | Количество жира, обычно в г, в следующем формате: number g_OR_mg Например, «42 г». |
fiberContent | Текст | Необязательный | Количество г или мг клетчатки в следующем формате: number g_OR_mg |
proteinContent | Текст | Необязательный | Количество г или мг белка в следующем формате: number g_OR_mg |
saturatedFatContent | Текст | Необязательный | Количество г или мг насыщенных жиров в следующем формате: number g_OR_mg |
servingSize | Текст | Необязательный | Размер порции в мл, л, г или кг в пересчете на объем или массу. |
sodiumContent | Текст | Необязательный | Количество мг или г натрия в следующем формате: number g_OR_mg |
sugarContent | Текст | Необязательный | Количество г или мг сахара в следующем формате: number g_OR_mg |
transFatContent | Текст | Необязательный | Количество г или мг трансжиров в следующем формате: number g_OR_mg |
unsaturatedFatContent | Текст | Необязательный | Количество ненасыщенных жиров, обычно в г, в следующем формате: number g_OR_mg |
В следующих примерах показан элемент NutritionInformation
:
Пример 1
"nutrition": { "@type": "NutritionInformation", "calories": "170 Cal", "fatContent": "3 g", "fiberContent": "2 g", "proteinContent": "4 g" },
Пример 2
{ "@type": ["MenuItem", "FoodBeverageTobaccoProduct"], "@id": "http://www.example.com/bar/menuitem/7", "name": "Peach Ice Tea", "description": "A 0.5l bottle of peach ice tea.", "offers": { "@type": "Offer", "sku": "offer-peach-ice-tea", "price": "2.49", "priceCurrency": "USD" }, "nutrition": { "@type": "NutritionInformation", "description": "Contains preservatives and artificial flavor" } },
Предложение
Предложение по пункту меню. В следующей таблице описаны свойства типа Offer
:
Свойство | Тип | Необходимость | Описание |
---|---|---|---|
@type | Текст | Необходимый | Это всегда «Предложение». |
sku | Текст | Условный | Уникальный идентификатор предложения. Это может быть любое текстовое значение, уникальное в пределах Это свойство используется только в следующих типах предложений:
|
price | Текст | Условный | Цена предлагаемого товара. Например, «6,00» без символа валюты. Это свойство требуется только в следующих типах предложений:
Он не используется в следующих типах предложений:
|
priceCurrency | Текст | Условный | Валюта (в трехбуквенном формате ISO 4217) цены или компонента цены, если она прикреплена к PriceSpecification и ее подтипам. Это свойство требуется только в следующих типах предложений:
Он не используется в следующих типах предложений:
|
availabilityStarts | DateTime или Time | Необязательный | Дата и время или просто время, с которого предложение доступно. Например, если блины подаются начиная с 7:00, то значение этого поля может выглядеть следующим образом: «2017-05-01T07:00:00-07:00». Дополнительные сведения см. в разделе Форматы DateTime и времени . |
availabilityEnds | DateTime или Time | Необязательный | Дата и время или просто время, когда предложение недоступно. Этот раз эксклюзивный. Например, если возможность блинов заканчивается в 10 утра, то последний блин можно будет подать в 9:59:59. Значение этого поля может выглядеть следующим образом: «2017-05-01T10:00:00-07:00». Дополнительные сведения см. в разделе Форматы DateTime и времени . |
availableDay | Массив DayOfWeek | Необязательный | Дни недели, в которые товар доступен. Допустимые значения:
Если у вас разная доступность для разных дней недели, используйте более одного объекта |
validFrom | DateTime | Необязательный | Дата и время (включая часовой пояс), на которые действительна указанная цена. Например, паста стоит 8 долларов во время обеда и 10 долларов за ужин. Дополнительные сведения см. в разделе Форматы DateTime и времени . Это свойство можно использовать в следующих типах предложений:
Это свойство не используется в следующих типах предложений:
|
validThrough | DateTime | Необязательный | Дата и время (включая часовой пояс), после которого указанная цена перестанет действовать. Например, паста стоит 8 долларов во время обеда и 10 долларов за ужин. Время для Это свойство можно использовать в следующих типах предложений:
Это свойство не используется в следующих типах предложений.
|
eligibleQuantity | Количественное значение | Необязательный | Количество заказа, для которого разрешен этот товар. Например, ресторан может потребовать, чтобы для доставки было заказано не менее 10 пицц. Это значение является необязательным. По умолчанию максимального лимита нет, но ресторан может его указать. Минимальные ограничения применяются только тогда, когда пользователь выбирает элемент. Это свойство можно использовать в следующих типах предложений:
Это свойство не используется в следующих типах предложений.
|
aggregateRating | Совокупный рейтинг | Необязательный | Общий рейтинг, основанный на совокупности обзоров или оценок элемента. Это свойство можно использовать в следующих типах предложений:
Это свойство не используется в следующих типах.
|
inventoryLevel | Количественное значение | Необязательный | Текущий приблизительный уровень запасов для предмета или предметов. Это свойство можно использовать в следующих типах предложений:
Это свойство не используется в следующих типах предложений:
|
priceSpecification | Массив DeliveryChargeSpecification или массив PaymentChargeSpecification | Необязательный | При использовании в Это свойство можно использовать в следующих типах предложений:
Это свойство не используется в следующих типах предложений:
|
offeredBy | Массив идентификаторов Restaurant | Необязательный | Обозначает рестораны, в которых действует данное Если не указано иное, данное Это свойство можно использовать в следующих типах предложений:
Это свойство не используется в следующих типах предложений:
|
applicableFulfillmentMethod | Массив текста | Необязательный | Представляет тип услуги, с помощью которой выполняется данное Если не указано иное, данная Это свойство можно использовать в следующих типах предложений:
Это свойство не используется в следующих типах предложений:
|
@id | URL-адрес | Устарело | Уникальный идентификатор предложения. Устарело с 25 апреля 2019 г., замените на sku , как описано выше. |
В следующих примерах показаны элементы Offer
:
Пример 1
В следующем примере показано простое предложение:
{ "@type": "Offer", "@id": "https://www.provider.com/menu/74962/139/offer", "price": "10", "priceCurrency": "USD" }
Пример 2
В следующем примере предложения показано наличие мест с 8 до 10 утра по выходным:
{ "@type": "Offer", "@id": "https://www.provider.com/menu/74962/140/offer", "price": "10", "priceCurrency": "USD", "availabilityStarts": "T08:00:00-07:00", // Only available from 8-9:59:59 AM "availabilityEnds": "T10:00:00-07:00", "availableDay": ["Saturday", "Sunday"] // Only on weekends. }
Пример 3
В следующем примере показана доступность с 9 до 10:59:59 по понедельникам, средам и пятницам и с 8 до 11:59:59 по вторникам и четвергам:
{ "@type": "Offer", "@id": "https://www.provider.com/menu/74962/140/offer", "price": "10", "priceCurrency": "USD", "availabilityStarts": "T09:00:00-07:00", "availabilityEnds": "T11:00:00-07:00", "availableDay": ["Monday", "Wednesday", "Friday"] }, { "@type": "Offer", "@id": "https://www.provider.com/menu/74962/141/offer", "price": "10", "priceCurrency": "USD", "availabilityStarts": "T08:00:00-07:00", "availabilityEnds": "T12:00:00-07:00", "availableDay": ["Tuesday", "Thursday"] }
Пример 4
В следующем примере показан набор допустимых количеств для пункта дополнительного меню, при котором пользователь может заказать максимум 2 порции этого пункта.:
{ "@type": "AddOnMenuItem", "@id": "https://www.example.com/1089/addon/a", "name": "Ranch", "offers": { "@type": "Offer", "@id": "https://www.example.com/1089/addon/a/offer", "price": "2.99", "priceCurrency": "USD" "eligibleQuantity": { "@type": "QuantitativeValue", "maxValue": 2 } } }
Пример 5
В следующем примере показано предложение доставки в определенное место:
{ "@type": "Offer", "@id": "https://www.provider.com/menu/74962/139/offer", "price": "10", "priceCurrency": "USD", "applicableFulfillmentMethods": ["DELIVERY"], "offeredBy": [ { "@type": "Restaurant", "@id": "https://www.provider.com/location/1", } ] }
Часы работыСпецификация
Определяет, когда заказ услуг доступен. Как правило, значение opens
меньше значения closes
. Следующие рекомендации применяются к использованию opens
и closes
свойств:
-
opens
иcloses
свойства необязательны, но настоятельно рекомендуются обозначить при наличии заказа. Лучшая практика для определения доступных часов заключается в том, чтобы включить массивdeliveryHours
, в котором содержитсяServiceDeliveryHoursSpecification
сopens
иcloses
свойствами. Затем вы можете включить объектAdvanceServiceDeliveryHoursSpecification
вdeliveryHours
с его собственнымиopens
иcloses
свойств, если вы хотите предложить более ограниченное окно для предварительного заказа. - Если
opens
иcloses
явно не указано, мы предполагаем, что услуга заказа доступна каждый день в любое время дня. - Время должно быть указано в местное время для обслуживания. Не включайте часовой пояс в
opens
илиcloses
стоимости. Если указан часовой пояс, Google игнорирует эту информацию. - Если
opens
иcloses
одинаковы, то мы предполагаем, что ресторан открыт в течение 0 минут. - Если
opens
больше, чемcloses
, час закрытия интерпретируется как на следующий день. Например, если час открытия установлен до 1 января в 5 часов вечера, а час закрытия - 2 часа ночи, то ресторан интерпретируется как закрытие 2 января в 2 часа ночи. - Время для
closes
является эксклюзивным. Следовательно, если открытое и закрытое время для этого окна заказа установлено в 10 часов утра и 16:00 соответственно, то последний заказ - 15:59:59.
В следующей таблице описываются свойства типа OpeningHoursSpecification
:
Свойство | Тип | Необходимость | Описание |
---|---|---|---|
@type | Текст | Необходимый | Это всегда «Открывающая чашка». |
@id | URL-адрес | Необязательный | Идентификатор для OpeningHoursSpecification . |
dayOfWeek | Множество DayOfWeek | Необязательный | День недели, для которого эти часы работы действительны. Приемлемые ценности - «понедельник», «вторник», «среда», «четверг», «пятница», «суббота» и «воскресенье». Например: "dayOfWeek": [ "Monday", "Tuesday", "Wednesday", "Thursday", "Friday" ] Если вы не указываете никаких дней недели, то |
opens | Time | Необязательный | При использовании в спецификации При использовании в спецификации Время должно быть указано в местное время для обслуживания. Не включайте часовой пояс в Для получения дополнительной информации см. DateTime и форматы времени . |
closes | Time | Необязательный | При использовании в спецификации Время должно быть указано в местное время для обслуживания. Не включайте часовой пояс в Для получения дополнительной информации см. DateTime и форматы времени . |
validFrom | DateTime | Необязательный | При использовании в спецификации Например, если применяемые часы применимы ко всему 2017 году, вы установили настройку При использовании в спецификации Если это свойство не указано в вашем канале, Google предполагает, что ресторан или услуга доступны ежедневно. В дополнение к дате требуются части времени и часового пояса значения. Для часового пояса используйте часовой пояс ресторана или обслуживания. Для получения дополнительной информации см. DateTime и форматы времени . |
validThrough | DateTime | Необязательный | При использовании в Например, если применяемые часы применимы ко всему 2017 году, вы установили настройку При использовании в спецификации Если это свойство не указано в вашем канале, Google предполагает, что ресторан или услуга доступны ежедневно. В дополнение к дате требуются части времени и часового пояса DateTime. Для часового пояса используйте часовой пояс ресторана или обслуживания. Время для Для получения дополнительной информации см. DateTime и форматы времени . |
deliveryHours | Множество ServiceDeliveryHoursSpecification или множества AdvanceServiceDeliveryHoursSpecification | Условный | Спецификация доставки или времени на вынос. Этот параметр требуется, если ресторан не закрыт (это означает, что
|
Следующие примеры показывают элементы OpeningHoursSpecification
:
Пример 1
// Ordering times for Monday through Friday { "@type": "OpeningHoursSpecification", "deliveryHours": [ { "@type": "AdvanceServiceDeliveryHoursSpecification", "deliveryLeadTime": { "@type": "QuantitativeValue", "value": "60", "unitCode": "MIN" }, "dayOfWeek": [ "Monday", "Tuesday", "Wednesday", "Thursday", "Friday" ], "opens": "T12:00:00", // Advance ordering begins at noon "closes": "T23:59:59", // Advance ordering ends at midnight "validFrom": "2017-01-01T00:00:00-07:00", "validThrough": "2018-12-31T23:59:59-07:00" }, { "@type": "ServiceDeliveryHoursSpecification", "deliveryLeadTime": { "@type": "QuantitativeValue", "value": "60", "unitCode": "MIN" }, "dayOfWeek": [ "Monday", "Tuesday", "Wednesday", "Thursday", "Friday" ], "opens": "T10:00:00", // ASAP ordering begins at 10AM "closes": "T14:00:00", // ASAP ordering ends at 2PM "validFrom": "2017-01-01T00:00:00-07:00", "validThrough": "2018-12-31T23:59:59-07:00" } ] },
Пример 2
// Ordering times for Saturday and Sunday { "@type": "OpeningHoursSpecification", "deliveryHours": [ { // In this case advance orders are unavailable on Saturday and Sunday "@type": "ServiceDeliveryHoursSpecification", "deliveryLeadTime": { "@type": "QuantitativeValue", "value": "60", "unitCode": "MIN" }, "dayOfWeek": [ "Saturday", "Sunday" ], "opens": "T12:00:00", // ASAP orders start at noon "closes": "T23:59:59", // ASAP orders end at midnight "validFrom": "2017-01-01T00:00:00-07:00", "validThrough": "2018-12-31T23:59:59-07:00" } ] }
Пример 3
"hoursAvailable": { "@type": "OpeningHoursSpecification", "validFrom": "2016-02-01T00:00:00-07:00", "validThrough": "2016-03-01T00:00:00-07:00", "opens": "T08:00:00", // Ordering begins at 8:00AM and ends at 6:00PM. // ASAP and and advance orders are restricted to this // time frame since the user won't be able to place // orders outside of this window. "closes": "T18:00:00", "deliveryHours": { "@type": "ServiceDeliveryHoursSpecification", "deliveryLeadTime": { "@type": "QuantitativeValue", "value": "60", "unitCode": "MIN" } } },
Пример 4
// List hours available for 2017 and 2018 "hoursAvailable": [ { "@type": "OpeningHoursSpecification", // Array containing advance order hours for each day "deliveryHours": [ { // Open 10:00AM to 9:29:59PM on Mondays "@type": "AdvanceServiceDeliveryHoursSpecification", "deliveryLeadTime": { "@type": "QuantitativeValue", "value": "60", "unitCode": "MIN" }, "dayOfWeek": [ "Monday" ], "opens": "T10:00:00", "closes": "T21:30:00", "validFrom": "2017-01-01T00:00:00-07:00", "validThrough": "2018-12-31T23:59:59-07:00" }, { // Open 10:00AM to 9:29:59PM on Tuesdays "@type": "AdvanceServiceDeliveryHoursSpecification", "deliveryLeadTime": { "@type": "QuantitativeValue", "value": "60", "unitCode": "MIN" }, "dayOfWeek": [ "Tuesday" ], "opens": "T10:00:00", "closes": "T21:30:00", "validThrough": "2018-12-31T23:59:59-07:00" }, { // Open 10:00AM to 9:29:59PM on Wednesdays "@type": "AdvanceServiceDeliveryHoursSpecification", "deliveryLeadTime": { "@type": "QuantitativeValue", "value": "60", "unitCode": "MIN" }, "dayOfWeek": [ "Wednesday" ], "opens": "T10:00:00", "closes": "T21:30:00", "validFrom": "2017-01-01T00:00:00-07:00", "validThrough": "2018-12-31T23:59:59-07:00" }, { // Open 10:00AM to 9:29:59PM on Thursdays "@type": "AdvanceServiceDeliveryHoursSpecification", "dayOfWeek": [ "Thursday" ], "opens": "T10:00:00", "closes": "T21:30:00", "validFrom": "2017-01-01T00:00:00-07:00", "validThrough": "2018-12-31T23:59:59-07:00" }, { // Open 10:00AM to 11:29:59PM on Fridays "@type": "AdvanceServiceDeliveryHoursSpecification", "deliveryLeadTime": { "@type": "QuantitativeValue", "value": "60", "unitCode": "MIN" }, "dayOfWeek": [ "Friday" ], "opens": "T10:00:00", "closes": "T23:30:00", "validFrom": "2017-01-01T00:00:00-07:00", "validThrough": "2018-12-31T23:59:59-07:00" }, { // Open 10:00AM to 11:29:59PM on Saturdays "@type": "AdvanceServiceDeliveryHoursSpecification", "deliveryLeadTime": { "@type": "QuantitativeValue", "value": "60", "unitCode": "MIN" }, "dayOfWeek": [ "Saturday" ], "opens": "T10:00:00", "closes": "T23:30:00", "validFrom": "2017-01-01T00:00:00-07:00", "validThrough": "2018-12-31T23:59:59-07:00" }, { // Open 11:00AM to 6:59:59PM on Sundays "@type": "AdvanceServiceDeliveryHoursSpecification", "deliveryLeadTime": { "@type": "QuantitativeValue", "value": "60", "unitCode": "MIN" }, "dayOfWeek": [ "Sunday" ], "opens": "T11:00:00", "closes": "T19:00:00", "validFrom": "2017-01-01T00:00:00-07:00", "validThrough": "2018-12-31T23:59:59-07:00" } ] } ],
Упаковка
Добавьте контекст GS1, чтобы использовать этот тип: "@context": ["http://gs1.org/voc/", "http://schema.org"]
. И добавьте FoodBeverageTobaccoProduct
к типу MenuItem
или MenuItemOption
.
В следующей таблице описываются свойства типа PackagingDetails
:
Свойство | Тип | Необходимость | Описание |
---|---|---|---|
@type | Текст | Необходимый | Это всегда "упаковочные засыпания". |
packagingRecyclingProcessType | Текст | Необязательный | Тип процесса переработки упаковки на GS1: PackagingRecylingProcessTypecode . Например http://gs1.org/voc/PackagingRecyclingProcessTypeCode-RECYCLABLE или http://gs1.org/voc/PackagingRecyclingProcessTypeCode-REUSABLE |
hasReturnablePackageDeposit | ReturnablePackageDepositDetails | Необязательный | Возвращаемый пакетный депозит сведения за GS1: returnablePackagedEpositDetails . Например, бутылки и банки имеют возвращаемые пакетные месторождения. |
В следующем примере показано использование типа PackagingDetails
:
{ "@type": ["MenuItem", "FoodBeverageTobaccoProduct"], "@id": "http://www.example.com/bar/menuitem/5", "name": "Sparkling Water", "description": "A 0.5l bottle of sparking water.", "offers": { "@type": "Offer", "sku": "offer-sparkling-water", "price": "1.49", "priceCurrency": "USD" }, "packaging": { "@type": "PackagingDetails", "packagingRecyclingProcessType" : "http://gs1.org/voc/PackagingRecyclingProcessTypeCode-REUSABLE", "hasReturnablePackageDeposit": { "@type": "ReturnablePackageDepositDetails", "returnablePackageDepositAmount": { "@type": "http://gs1.org/voc/PriceSpecification", "http://gs1.org/voc/price": "0.05", "http://gs1.org/voc/priceCurrency": "USD" } } } },
Платежная карьера
В следующей таблице описываются свойства типа PaymentChargeSpecification
:
Свойство | Тип | Необходимость | Описание |
---|---|---|---|
@type | Текст | Необходимый | Это всегда «платежная картинка». |
@id | URL-адрес | Необязательный | Идентификатор для PaymentChargeSpecification . |
price | Число | Необходимый | Общая сумма платы. Например, «6.00», без символа валюты. |
priceCurrency | Текст | Необходимый | 3-буквенный ISO 4217 валютный код цены. Например, «доллар США». |
eligibleTransactionVolume | PriceSpecification | Необязательный | Объем транзакций в денежно -кредитной единице, для которой эта спецификация платежа действительна, как для указания минимального объема закупок. |
eligibleQuantity | QuantitativeValue | Необязательный | Количество заказов, для которых действительна плата за оплату. Например, вы можете использовать это свойство, чтобы потребовать минимальное количество элементов в заказе. |
validFrom | DateTime | Необязательный | Дата и время (включая часовой пояс), когда указанная плата оплата становится действительной. Например, «2017-05-01T07: 00: 00-07: 00». Для получения дополнительной информации см. DateTime и форматы времени . |
validThrough | DateTime | Необязательный | Дата и время (включая часовой пояс), когда указанная плата за оплату не является действительной. Например, "2017-05-01T07: 30: 00-07: 00". Время для validThrough является эксклюзивным: например, если это время установлено в 6 часов вечера, время до 5:59:59. Для получения дополнительной информации см. DateTime и форматы времени . |
В следующем примере показан элемент платежной картины:
Пример
"priceSpecification": [{ "@type": "PaymentChargeSpecification", "@id": "http://www.provider.com/paymentCharge/bar", "priceCurrency": "USD", "price": "6.00", // Charges $6 for processing fee "eligibleQuantity": { "@type": "QuantitativeValue", "minValue": 2 // Minimum of two items required } }]
В дополнение к "@type": ["PaymentChargeSpecification"]
, объект может быть расширен с помощью Unitpricespeciation ( "@type": ["PaymentChargeSpecification", "UnitPriceSpecification"]
). Расширение дает дополнительные два свойства, необходимые для сборов за обслуживание, рассчитанные в процентах.
свойство | Тип | Необходимость | Описание |
referenceQuantity | QuantitativeValue | Необходимый | Справочное количество, для которого применяется определенная цена. Например, referenceQuantity значения 10 с unitCode «P1» приводит к 10% от значения заказа. В настоящее время поддерживается только unitCode «P1». |
basePrice | Число | Необязательный | Базовый заряд в дополнение к referenceQuantity . Например, referenceQuantity 10 с unitCode «P1» и basePrice 5 в долларах США приводит к 5 + 10% от значения заказа. Значение по умолчанию составляет 0. |
Примеры платы за вынос
Google позволяет вам указать различные сборы пользователям заранее, используя Offer.PriceSpecification
предприятия услуги.
Обратите внимание, что в настоящее время мы поддерживаем только одну PaymentChargeSpecification
. Объедините все типы сборов в единую PaymentChargeSpecification
Если плата не взимается, Offer.PriceSpecification
опущено.
- Пример 1: Плата за обслуживание составляет 5% от CART Subtotal
- Пример 2: плата за обслуживание составляет 5 долларов США
- Пример 3: Плата за сумки составляет 0,1 долл. США, а плата за обслуживание составляет 5% от CART Subtotal
- Пример 4: Плата за сумки составляет 0,1 долл. США, а плата за обслуживание составляет 1 доллар США
- Пример 5: Плата за обслуживание составляет 5%, а требуемый совет составляет 10% от CART Subtotal
Пример 1
priceSpecification [ { "@type": ["PaymentChargeSpecification", "UnitPriceSpecification"], "referenceQuantity": { "@type": "QuantitativeValue", "value": "5.00", // 5% "unitCode": "P1" // P1 == % }, "priceCurrency": "USD" } ]
Пример 2
priceSpecification [ { "@type": ["PaymentChargeSpecification"], "priceCurrency": "USD", "price": "5.00" } ]
Пример 3
priceSpecification [ { "@type": ["PaymentChargeSpecification", "UnitPriceSpecification"], "referenceQuantity": { "@type": "QuantitativeValue", "value": "5.00", // 5% "unitCode": "P1", // P1 == % }, "priceCurrency": "USD", "basePrice": "0.10" // Bag fee $0.1 } ]
Пример 4
priceSpecification [ { "@type": ["PaymentChargeSpecification"], "priceCurrency": "USD", "price": "1.10" //$1 + $0.1 } ]
Пример 5
priceSpecification [ { "@type": ["PaymentChargeSpecification", "UnitPriceSpecification"], "referenceQuantity": { "@type": "QuantitativeValue", "value": "15.00", // 5% + 10% "unitCode": "P1" // P1 == % }, "priceCurrency": "USD" } ]
Место
В следующей таблице описываются свойства типа Place
:
Свойство | Тип | Необходимость | Описание |
---|---|---|---|
@type | Текст | Необходимый | Это всегда "место". |
address | PostalAddress | Необходимый | Адрес места. |
В следующем примере показан элемент места:
Пример
{ "@type": "Place", // area2 "address": { "@type": "PostalAddress", "postalCode": "94041", "addressCountry": "US" } },
Почтовый адрес
В следующей таблице описываются свойства типа PostalAddress
:
Свойство | Тип | Необходимость | Описание |
---|---|---|---|
@type | Текст | Необходимый | Это всегда "почталдресс". |
addressLocality | Текст | Необходимый* | Местность или город. Например, «Сан -Франциско». |
addressRegion | Текст | Необходимый* | Регион или штат. Например, "CA". |
postalCode | Текст | Необходимый* | Почтовый код. Например, "94102". |
streetAddress | Текст | Необязательный | Уличный адрес. Например, «1600 амфитеатр pkwy». |
addressCountry | Текст | Необходимый | Двухбуктный ISO 3166-1 Альфа-2 код страны. Например, «нас». |
Поставщики доставки могут перечислить эти свойства для обозначения Service.areaServed
.
При использовании в Restaurant.address
требуются все свойства, перечисленные в PostalAddress
.
В следующем примере показан элемент PostalAddress
:
Пример
"address": { "@type": "PostalAddress", "streetAddress": "12345 Bar Avenue", "addressLocality": "San Francisco", "addressRegion": "CA", "postalCode": "94124", "addressCountry": "US" },
Ценовая спецификация
В следующей таблице описываются свойства типа PriceSpecification
:
Свойство | Тип | Необходимость | Описание |
---|---|---|---|
@type | Текст | Необходимый | Это всегда "ценная спецификация". |
@id | URL-адрес | Необязательный | Идентификатор для PriceSpecification . |
minPrice | Число | Необязательный | Самая низкая цена, если цена - это диапазон. |
maxPrice | Число | Необязательный | Самая высокая цена, если цена - это диапазон. |
priceCurrency | Текст | Необходимый | 3-буквенный ISO 4217 валютный код цены. Например, «доллар США». |
eligibleQuantity | QuantitativeValue | Необязательный | Количество заказов, для которых спецификация цена действительна. Например, цена может составлять 2 доллара за фунт или 2 предмета за доллар. |
В следующем примере показан элемент PriceSpecification
:
Пример 1
"eligibleTransactionVolume": { "@type": "PriceSpecification", "minPrice": "20.00", // Minimum order price for delivery is $20 "priceCurrency": "USD" }
Стоимость имущества
Пара значений свойства, используемая для описания параметров в MenuItemOption
.
В следующей таблице перечислены свойства для типа PropertyValue
:
Свойство | Тип | Необходимость | Описание |
---|---|---|---|
@type | Текст | Необходимый | Это всегда "PropertyValue". |
name | Текст | Необходимый | Имя или тип опции. Ниже приведены действительные имена при использовании в
Допустимые имена при использовании в
|
value | Текст | Необходимый | Значение для опции. Значения могут быть любой строкой и отображаются как есть. Ниже приведены допустимые значения:
|
QuantitativeValue
В следующей таблице описываются свойства типа QuantitativeValue
:
Свойство | Тип | Необходимость | Описание |
---|---|---|---|
@type | Текст | Необходимый | Это всегда «QuantitativeValue». |
value | Число | Необязательный | Значение количественного значения или узла значения свойства. |
unitCode | Текст или URL | Необязательный | Единица измерения как общий код ООН/CEFACT или URL. Коды, отличные от общего кода ООН/CEFACT, могут использоваться с префиксом, за которым следует толстая кишка. |
maxValue | Число | Необязательный | Верхнее значение какой -то характеристики или свойства. |
minValue | Число | Необязательный | Более низкое значение какой -то характеристики или свойства. |
Следующие примеры показывают использование типа QuantitativeValue
:
Пример 1
"deliveryLeadTime": { "@type": "QuantitativeValue", "value": "60", "unitCode": "MIN" }
Пример 2
"menuAddOn": { "@type": "AddOnMenuSection", "name": "Cheese", "@id": "https://www.example.com/1089/addon/1", // Points to an AddOnMenuSection "eligibleQuantity": "@type": "QuantitativeValue", "minValue": 0, "maxValue": 2 // Maximum of 2 cheeses are allowed } }
Пример 3
"priceSpecification": [ { "@type": "DeliveryChargeSpecification", "@id": "http://www.provider.com/defaultdeliveryfee/foo", "price": "10.0", "priceCurrency": "USD", "eligibleQuantity": { "@type": "QuantitativeValue", "minValue": 3 // Minimum of 3 items required for delivery } }, { "@type": "DeliveryChargeSpecification", "@id": "http://www.provider.com/deliveryfee/foo/1", "price": "20.0", "priceCurrency": "USD", "validFrom":"T18:00:00", // Valid from 6:00PM "validThrough":"T22:00:00", // Valid to 9:59:59PM "eligibleQuantity": { "@type": "QuantitativeValue", "minValue": 3 // Minimum of 3 items required for delivery } } ]
Ресторан
В следующей таблице перечислены свойства типа Restaurant
:
Свойство | Тип | Необходимость | Описание |
---|---|---|---|
@type | Текст | Необходимый | Это всегда «ресторан». |
@id | URL-адрес | Необходимый | Уникальный идентификатор ресторана или поставщика доставки. Например, «http://www.provider.com/326», где «326» является уникальным идентификатором ресторана. |
name | Текст | Необходимый | Текст, который может идентифицировать Restaurant в процессе заказа. |
url | URL-адрес | Необходимый | URL на вашем домене, который представляет ресторан. Например, «http://www.provider.com/somerestaurant». |
sameAs | URL-адрес | Необязательный | Официальный сайт ресторана. Например, "http://www.somerestaurant.com". |
email | Текст | Необязательный | Контактная электронная почта ресторана. |
description | Текст | Необязательный | Описание ресторана. |
telephone | Текст | Необходимый | Номер телефона в следующем формате: "[+][country_code][phone_#_with_area_code]" Например, "+16501234567". |
priceRange | Текст | Необязательный | Ряд цен. Например, «$$" ($-Inexpensive, $$-Moderate, $$$-Expensive, $$$$-Very Expensive). |
logo |
URL | Optional | Logo of the restaurant in PNG, JPG, or GIF format. For example, "http://www.somerestaurant.com/logo.png". |
image |
URL | Optional | Image of the restaurant. |
servesCuisine |
Array of Text | Optional | Food types that are served at the restaurant. For example,
["sushi","Asian fusion"] . |
address |
PostalAddress |
Required* | Address of the restaurant. |
geo |
GeoCoordinates |
Optional* | Geographic coordinates of the restaurant. |
suitableForDiet |
Array of RestrictedDiet |
Optional | Dietary restrictions this restaurant accommodates (like kosher, vegan, or gluten-free diets). It is an enumerated list. |
aggregateRating |
AggregateRating |
Optional | Overall rating, based on a collection of reviews or ratings of the restaurant. |
additionalProperty |
Array of name value string pairs | Optional |
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 "\n". For example |
The following examples show the usage of the Restaurant
type:
Example 1
{ "@type": "Restaurant", "@id": "http://www.provider.com/somerestaurant", "url": "www.provider.com/somerestaurant", "name": "Some Restaurant", "sameAs": "http://www.somerestaurant.com", "image": "http://www.somerestaurant.com/image-of-some-restaurant.jpg", "description": "This is the Some Restaurant located on 345 Spear St. San Francisco, 94105 CA. It serves Indian-Mexican fusion cuisine", "address": { "@type": "PostalAddress", "addressLocality": "San Francisco", "addressRegion": "CA", "postalCode": "94105", "streetAddress": "345 Spear St", "addressCountry": "US" }, "geo": { "@type": "GeoCoordinates", "latitude": "37.391115", "longitude": "-122.081099" }, "aggregateRating": { "@type": "AggregateRating", "ratingValue": "4.4", "reviewCount": "89" }, "priceRange": "$$», «Телефон»: «+16501234567», // Код страны (+1) требуется «Сервискуазин»: [«Индийский фьюжн»]}}}}}}}}}}}}}}}}}}}}}} ,
Пример 2
{ "@type": "Restaurant", "@id": "http://www.example.com/threebrotherstacos", "name": "Three Brothers Tacos", "address": { "@type": "PostalAddress", "addressLocality": "Mountain View", "addressRegion": "CA", "postalCode": "94041", "streetAddress": "123 Foo St", "addressCountry": "US" }, "additionalProperty": [ {"name": "imprint", "value": "Three Brothers Tacos\n123 FooSt\nMountain View\nCA 94041, United States\nemail: contact@threebrotherstacos.com\n\nCommercial Register: 123456789"} ] }
Для получения дополнительных примеров Restaurant
организаций см. Примеры кормления ресторана и меню .
ReturnablePackageDepositDetails
Чтобы использовать этот тип, добавьте контекст GS1: «@Context»:
["http://gs1.org/voc/", "http://schema.org"]
Затем добавьте FoodBeverageTobaccoProduct
в тип соответствующего MenuItem
или MenuItemOption
.
В следующей таблице описываются свойства типа ReturnablePackageDepositDetails
:
Свойство | Тип | Необходимость | Описание |
---|---|---|---|
@type | Текст | Необходимый | Это всегда «returnablepackagedepositdetails». |
returnablePackageDepositAmount | gs1:PriceSpecification | Необязательный | Сумма депозита для этого пункта на GS1: цену. Определение . Например, залог в размере 0,25 долл. США на банку. |
В следующем примере показано использование типа ReturnablePackageDepositDetails
:
{ "@type": ["MenuItem", "FoodBeverageTobaccoProduct"], "@id": "http://www.example.com/bar/menuitem/5", "name": "Sparkling Water", "description": "A 0.5l bottle of sparking water.", "offers": { "@type": "Offer", "sku": "offer-sparkling-water", "price": "1.49", "priceCurrency": "USD" }, "packaging": { "@type": "PackagingDetails", "packagingRecyclingProcessType" : "http://gs1.org/voc/PackagingRecyclingProcessTypeCode-REUSABLE", "hasReturnablePackageDeposit": { "@type": "ReturnablePackageDepositDetails", "returnablePackageDepositAmount": { "@type": "http://gs1.org/voc/PriceSpecification", "http://gs1.org/voc/price": "0.05", "http://gs1.org/voc/priceCurrency": "USD" } } } },
Услуга
Описывает доставку заказано в ресторане из ресторана в географическое положение организацией доставки.
В следующей таблице описываются свойства типа Service
:
Свойство | Тип | Необходимость | Описание |
---|---|---|---|
@type | Текст | Необходимый | Тип подачи.
|
@id | URL-адрес | Необходимый | Идентификатор для службы выполнения. Например, "http://www.provider.com/service/1". |
description | Текст | Необязательный | Описание элемента. |
serviceType | Текст | Необходимый | Тип предлагаемого обслуживания. Возможные значения - «доставка» или «вынос». |
provider | Restaurant | Необходимый | Ссылка на уникальный идентификатор для ресторана. Например, «http://www.provider.com/somerestaurant». |
areaServed | Массив GeoShape , Place или GeoCircle | Условный | Географический район, где предоставляется услуга. Это поле необязательно по умолчанию, но требуется, если serviceType является «доставкой». |
hoursAvailable | Массив OpeningHoursSpecification | Необходимый | Часы, в течение которых эта услуга доступна. |
specialOpeningHoursSpecification | Массив OpeningHoursSpecification , ServiceDeliveryHoursSpecification или AdvanceServiceDeliveryHoursSpecification | Необязательный | Времена, которые переопределяют более общее Определите специальный диапазон дат, используя |
offers | Множество Offer | Условный | Подробная информация о предложении доставки для указанного ресторана. Это поле не является обязательным по умолчанию, но требуется, если Собственность |
hasOfferCatalog | [ Menu , OfferCatalog] | Необходимый | Определяет меню для этой услуги. У вас может быть другое меню для каждой из ваших услуг (например, на вынос, доставка и питание). Вы должны указать как "hasOfferCatalog": { "@type": ["Menu", "OfferCatalog"], "@id": "https://www.provider.com/restaurant/menu/1" } |
additionalProperty | Массив {name, value} | Необязательный | Дополнительная информация о конфигурации службы. Ожидается, что элементы будут объектом с См. Справочник "additionalProperty": [{ "name": "disableOrderInstructions", "value": false }, { "name": "disableMenuItemSpecialInstructions", "value": false }, { "name": "disableTipWidget", "value": false }, { "name": "disablePromoWidget", "value": false }, { "name": "menuItemSpecialInstructionsMaxLength", "value": 256 }, { "name": "orderInstructionsMaxLength", "value": 256 }] |
potentialAction | URL-адрес | Необязательный | Содержит URL-адрес предоставления услуг по доставке/вынос, который будет использоваться при перенаправлении при перенаправлении. Например, «потенциальное действие»: {"url": "https://fopatestagent.com/ordering/restaurant-1/delivery"} |
В следующем примере показано использование типа службы:
Пример
{ "@type": "Service", "@id": "http://www.provider.com/service/1", "serviceType": "DELIVERY", "provider": { "@type": "Restaurant", "@id": "http://www.provider.com/threebrotherstacos" }, "potentialAction": { "url": "https://foprovider.com/ordering/restaurant-1/delivery" }, "hoursAvailable": [ // Ordering times for Monday through Friday { "@type": "OpeningHoursSpecification", "deliveryHours": [ { "@type": "AdvanceServiceDeliveryHoursSpecification", "deliveryLeadTime": { "@type": "QuantitativeValue", "value": "60", "unitCode": "MIN" }, "dayOfWeek": [ "Monday", "Tuesday", "Wednesday", "Thursday", "Friday" ], "opens": "T12:00:00", // Advance ordering begins at noon "closes": "T23:59:59", // Advance ordering ends at midnight "validFrom": "2017-01-01T00:00:00-07:00", "validThrough": "2018-12-31T23:59:59-07:00" }, { "@type": "ServiceDeliveryHoursSpecification", "deliveryLeadTime": { "@type": "QuantitativeValue", "value": "60", "unitCode": "MIN" }, "dayOfWeek": [ "Monday", "Tuesday", "Wednesday", "Thursday", "Friday" ], "opens": "T10:00:00", // ASAP ordering begins at 10AM "closes": "T14:00:00", // ASAP ordering ends at 2PM "validFrom": "2017-01-01T00:00:00-07:00", "validThrough": "2018-12-31T23:59:59-07:00" } ] }, // Ordering times for Saturday and Sunday { "@type": "OpeningHoursSpecification", "deliveryHours": [ { // In this case advance orders are unavailable on Saturday and Sunday "@type": "ServiceDeliveryHoursSpecification", "deliveryLeadTime": { "@type": "QuantitativeValue", "value": "60", "unitCode": "MIN" }, "dayOfWeek": [ "Saturday", "Sunday" ], "opens": "T12:00:00", // ASAP orders start at noon "closes": "T23:59:59", // ASAP orders end at midnight "validFrom": "2017-01-01T00:00:00-07:00", "validThrough": "2018-12-31T23:59:59-07:00" } ] } ], "hasOfferCatalog": { "@type": ["Menu", "OfferCatalog"], "@id": "https://www.provider.com/menu/1" }, "areaServed": [{ "@type": "GeoCircle", // area1 "geoMidpoint": { "@type": "GeoCoordinates", "latitude": "42.362757", "longitude": "-71.087109" }, "geoRadius": "10000" }, { "@type": "Place", // area2 "address": { "@type": "PostalAddress", "postalCode": "94041", "addressCountry": "US" } }, { "@type": "GeoShape", // area3 // Specify latitude first (i.e., lat long lat long ...) "polygon": "37.418128 -122.098167 37.382755 -122.118968 37.368551 -122.047978 37.400949 -122.048106 37.418128 -122.098167" }, { "@type": "GeoShape", // area4 // Specify latitude first (i.e., lat long lat long ...) "polygon": "37.806000 -122.425592 37.775849 -122.419043 37.795547 -122.394046 37.808747 -122.412619" }, { "@type": "GeoCircle", // area5 "geoMidpoint": { "@type": "GeoCoordinates", "latitude": "37.7392607", "longitude": "-122.3895522" }, "geoRadius": "4505" } ], "offers": { "@type": "Offer", "priceSpecification": [{ "@type": "DeliveryChargeSpecification", "@id": "http://www.provider.com/threebrotherstacos/deliveryfee/1", "price": "8.00", // Charges $8 for area5 "priceCurrency": "USD", "eligibleTransactionVolume": { "@type": "PriceSpecification", "minPrice": "20.00", "priceCurrency": "USD" }, "eligibleRegion": [ // area5 { "@type": "GeoCircle", "geoMidpoint": { "@type": "GeoCoordinates", "latitude": "37.7392607", "longitude": "-122.3895522" }, "geoRadius": "4505" } ] }, { "@type": "DeliveryChargeSpecification", "@id": "http://www.provider.com/threebrotherstacos/defaultdeliveryfee", "price": "6.00", // Charges $6 when delivered from Foo restaurant to area1, area2, area3 and area4 (Default charge) "priceCurrency": "USD", "eligibleTransactionVolume": { "@type": "PriceSpecification", "minPrice": "20.00", // Minimum order price for delivery is $20 "priceCurrency": "USD" } } ] } },
Для получения дополнительных примеров сервисных объектов см. Примеры подачи обслуживания .
ServiceDeliveryHoursSpeciation
Представляет часы выполнения для пользователей, чтобы назначить заказы как можно скорее на доставку и вынос.
Как правило, значение opens
меньше значения closes
. Следующие рекомендации применяются к использованию opens
и closes
свойств:
-
opens
иcloses
свойства являются необязательными дляServiceDeliveryHoursSpecification
, но мы настоятельно рекомендуем вам включить их. - Время должно быть указано в местное время для обслуживания. Не включайте часовой пояс в
opens
илиcloses
стоимости. Если указан часовой пояс, Google игнорирует информацию о часовом поясе. - Если
opens
иcloses
явно не указаны, мы предполагаем, что как можно скорее упорядочение всегда доступно каждый день. - Если
opens
иcloses
одинаковы, то мы предполагаем, что как можно скорее упорядочение недоступно. - Если
opens
больше, чемcloses
, час закрытия интерпретируется как на следующий день. Например, если час открытия установлен до 1 января в 5 часов вечера, а час закрытия - 2 часа ночи, то ресторан интерпретируется как закрытие 2 января в 2 часа ночи.
В следующей таблице описываются свойства типа ServiceDeliveryHoursSpecification
.
Свойство | Тип | Необходимость | Описание |
---|---|---|---|
@type | Текст | Необходимый | Это всегда "обслуживаемое разрешение на освификацию". |
validFrom | DateTime | Необязательный | Дата и время (включая часовой пояс), когда заказы пользователей ASAP могут быть выполнены. Например, «2017-05-01T07: 00: 00-07: 00». Если это свойство не установлено, то считается, что оно является действительным с каждым днем. Для получения дополнительной информации см. DateTime и форматы времени . |
validThrough | DateTime | Необязательный | Дата и время (включая часовой пояс), после чего заказы пользователей ASAP не могут быть выполнены. Например, «2017-05-01T07: 00: 00-07: 00». Если это свойство не установлено, то считается, что оно является действительным с каждым днем. Время для Для получения дополнительной информации см. DateTime и форматы времени . |
opens | Time | Необязательный | Время, в которое начинается служба доставки для выполнения заказов ASAP пользователей. Например, "T10: 30: 00". Время должно быть указано в местное время для обслуживания. Не включайте часовой пояс в Для получения дополнительной информации см. DateTime и форматы времени . |
closes | Time | Необязательный | Время, когда служба доставки для заказов ASAP пользователям больше не доступно. Например, "T23: 59: 59". Время для Время должно быть указано в местное время для обслуживания. Не включайте часовой пояс в Для получения дополнительной информации см. DateTime и форматы времени . |
dayOfWeek | Множество DayOfWeek | Необязательный | Дни недели, когда эта служба доступна для заказов пользователей. Ниже приведены допустимые значения:
Если вы не указываете никаких дней недели, то |
deliveryLeadTime | QuantitativeValue | Необязательный | Расчетное время доставки, в минуты, после того, как заказ был размещен. Мы настоятельно рекомендуем вам установить это свойство. Установите поле value QuantitativeValue на количество минут, а unitCode - на «мин». |
В следующем примере показан элемент ServiceDeliveryHoursSpecification
:
Пример 1
{ "@type": "ServiceDeliveryHoursSpecification", "opens": "T08:00:00", "closes": "T17:00:00", "deliveryLeadTime": { "@type": "QuantitativeValue", "value": "60", // If no exact deliveryLeadTime, put a maximum time "unitCode": "MIN" } },
Пример 2
{ "@type": "ServiceDeliveryHoursSpecification", "opens": "T08:00:00", "closes": "T17:00:00", "deliveryLeadTime": { "@type": "QuantitativeValue", "minValue": "30", "maxValue": "50", "unitCode": "MIN" } }
Перечисления
Ограниченная
Тип RestrictedDiet
имеет следующие возможные значения:
- http://schema.org/diabeticdiet
- http://schema.org/glutenfreediet
- http://schema.org/halaldiet
- http://schema.org/hindudiet
- http://schema.org/kosherdiet
- http://schema.org/lowcaloriediet
- http://schema.org/lowfatdiet
- http://schema.org/lowlactosediet
- http://schema.org/lowsaltdiet
- http://schema.org/Vegandiet
- http://schema.org/vegetariandiet
Пищевые каналы основаны на объектах DataFeed
Schema.org. Корм с пищевым каталогом состоит из деталей в ресторане, таких как адрес ресторана, меню и местоположение, а также детали обслуживания ресторана, такие как сборы о доставке, зоны доставки и другие предметы, как указано ниже.
DataFeed
содержит набор элементов, каждый из которых представляет один элемент, выраженный в словарном запасе Schema.org . Вы можете использовать тип DataFeed
для публикации всех ваших структурированных данных в формате JSON-LD .
Для получения информации об использовании этой спецификации для создания ваших каналов см. Обзор интеграции инвентаризации .
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
Обратите внимание на следующее, когда вы указываете DateTime
или Time
:
- Префикс «T» до времени является частью формата и требуется.
- Часовой пояс должен быть указан для
DATETIME
. Это не требуется воTIME
. - Время должно быть указано в местное время для ресторана или обслуживания.
Конверт
Начальный код для любого пищевого каталога должен содержать раздел «конверт».
«Оболочка»-это структура верхнего уровня каждого канала, и она должна быть DataFeed
со следующими свойствами:
Свойство | Тип | Необходимость | Описание |
---|---|---|---|
@context | URL-адрес | Необходимый | Контекст в использовании; Обычно "http://schema.googleapis.com". |
@type | Текст | Необходимый | Это всегда "DataFeed". |
dateModified | DateTime | Необходимый | Последний измененный Дата и время в формате ISO_OFFSET_DATE_TIME, на котором были изменены элементы в этом канале. В отсутствие этого поля предполагается, что время обновления - это время, когда push -сообщение принимается (или ползание) на серверах Google. Мы настоятельно рекомендуем вам реализовать это, если вы используете как толчок, так и ползти вместе. Эта временная метка должна быть указана с часовым поясом и гранулярностью миллисекундов; Например, "2016-12-28t06: 30: 00: 123-07: 00". В ваших партийных каналах оборудование объекта определяется через |
dataFeedElement | Множество Menu , Restaurant или Service | Необходимый | Один или несколько элементов, которые являются частью этого канала. Подробности см. ниже. |
В следующем примере показан конверт:
Пример
{ "@context": "http://schema.googleapis.com", "dateModified": "2016-12-28T06:30:00:123-07:00", "@type": "DataFeed", "dataFeedElement": [ /* All items that are part of this feed go here */ ] }
AddiTiveTails
Чтобы использовать этот тип, добавьте контекст GS1: "@context": ["http://gs1.org/voc/", "http://schema.org"]
Затем добавьте FoodBeverageTobaccoProduct
в тип соответствующего MenuItem
или MenuItemOption
.
В следующей таблице описываются свойства типа AdditiveDetails
:
Свойство | Тип | Необходимость | Описание |
---|---|---|---|
@type | Текст | Необходимый | Это всегда "добавленные ластики". |
additiveName | Текст | Необязательный | Название добавки. |
additiveLevelOfContainment | Текст | Необязательный | Код сдерживания на GS1: LevelOfContainmentCode . Например, http://gs1.org/voc/LevelOfContainmentCode-CONTAINS , http://gs1.org/voc/LevelOfContainmentCode-FREE_FROM , или http://gs1.org/voc/LevelOfContainmentCode-MAY_CONTAIN . |
В следующем примере показано использование типа AdditiveDetails
:
{ "@type": ["MenuItem", "FoodBeverageTobaccoProduct"], "@id": "http://www.example.com/bar/menuitem/8", "name": "Energy Drink", "description": "A 0.25l can of energy drink.", "offers": { "@type": "Offer", "sku": "offer-energy-drink", "price": "3.49", "priceCurrency": "USD" }, "additive": [ { "@type": "AdditiveDetails", "additiveName": "caffeine", "additiveLevelOfContainment": "http://gs1.org/voc/LevelOfContainmentCode-CONTAINS" }, { "@type": "AdditiveDetails", "additiveName": "phosphate", "additiveLevelOfContainment": "http://gs1.org/voc/LevelOfContainmentCode-CONTAINS" } ] },
Addonmenuitem
Продукт еды или напитков, указанный в дополничном меню MenuItem
.
В следующей таблице перечислены свойства для типа AddOnMenuItem
:
Свойство | Тип | Необходимость | Описание |
---|---|---|---|
@type | Текст | Необходимый | Это всегда "addonmenuitem". |
@id | URL-адрес | Необходимый | Уникальный идентификатор элемента административного меню. |
name | Текст | Необходимый | Текст, который идентифицирует AddonMenuitem, когда пользователь просматривает меню. |
description | Текст | Необязательный | Описание элемента административного меню. |
image | URL-адрес | Необязательный | Изображение элемента меню с дополнением, которое соответствует следующим руководящим принципам:
|
offers | Множество Offer | Необходимый* | Одно или несколько предложений о предоставлении этого дополнения. Описывает, когда и по какой цене эта AddonMenuitem доступна. Только одно предложение должно быть действительным в определенное время. Вы можете иметь много действительных предложений, если цена или доступность могут измениться в зависимости от времени суток. Когда дополнение или элемент отличается через базовый атрибут или изменение самого элемента (например, маленький, средний и большой картофель фри в качестве дополнения), используйте свойство По умолчанию для Следующие свойства
|
hasMenuItemOptions | Массив MenuItemOption | Необходимый* | Массив базовых атрибутов, которые описывают изменение самого элемента (как маленький, средний и большой картофель фри в качестве дополнения), для этого элемента меню. Используйте параметры, чтобы указать различные вариации, доступные для этого элемента административного меню. Есть два сценария, где это может произойти:
|
suitableForDiet | Массив RestrictedDiet | Необязательный | Блюдо соответствует описанному ограничению питания (например, «глютенфриэдиет» или «Vegandiet»). Это перечисленный список возможных значений. |
nutrition | NutritionInformation | Необязательный | Информация о питании для блюда, особенно калории. |
menuAddOn | Массив AddOnMenuSection | Необязательный | У AddonMenuitem может быть раздел меню, состоящий из разрешенных элементов, которые можно добавить в качестве дополнения. |
В следующем примере показан AddOnMenuItem
:
Пример 1
{ "@type": "AddOnMenuSection", "@id": "https://www.example.com/1089/addon/1", "name": "AddOnCheese", "hasMenuItem": [ { "@type": "AddOnMenuItem", "@id": "https://www.example.com/1089/addon/a", "name": "Swiss", "offers": { "@type": "Offer", "sku": "offer-swiss", "price": "2.99", "priceCurrency": "USD" } }, { "@type": "AddOnMenuItem", "@id": "https://www.example.com/1089/addon/b", "name": "Mozarella", "offers": { "@type": "Offer", "sku": "offer-mozzarella", "price": "1.99", "priceCurrency": "USD" } } ] }
Пример 2
{ "@type": "MenuItem", "@id": "https://www.example.com/1089/product/170067", "name": "Pepperoni Pizza", "hasMenuItemOptions": [ { "@type": "MenuItemOption", "value": { "@type": "PropertyValue", "name": "SIZE", "value": "Small" }, "offers": { "@type": "Offer", "sku": "offer-small-pepperoni-pizza", "price": "10.00", "priceCurrency": "USD" } }, { "@type": "MenuItemOption", "value": { "@type": "PropertyValue", "name": "SIZE", "value": "Large" }, "offers": { "@type": "Offer", "sku": "offer-large-pepperoni-pizza", "price": "20.00", "priceCurrency": "USD" } } ], "menuAddOn": [ { "@type": "AddOnMenuSection", "name": "Choice of toppings", "@id": "https://www.example.com/1089/addon/1", "hasMenuItem": [ { "@type": "AddOnMenuItem", "@id": "https://www.example.com/1089/addon/1/a", "name": "Shrimp", "hasMenuItemOptions": [ { "@type": "MenuItemOption", "value": [ { "@type": "PropertyValue", "name": "PIZZA_SIDE", "value": "PIZZA_SIDE_LEFT" // Values are predefined for pizza side. }, { "@type": "PropertyValue", "name": "APPLICABLE_ITEM_OPTION", "value": "Small" // Value should be same as mentioned in item's options. } ], "offers": { "@type": "Offer", "sku": "offer-topping-shrimp-left-small", "price": "1.00", "priceCurrency": "USD" } }, { "@type": "MenuItemOption", "value": [ { "@type": "PropertyValue", "name": "PIZZA_SIDE", "value": "PIZZA_SIDE_LEFT" // Values are predefined for pizza side. }, { "@type": "PropertyValue", "name": "APPLICABLE_ITEM_OPTION", "value": "Large" // Value should be same as mentioned in item's options. } ], "offers": { "@type": "Offer", "sku": "offer-topping-shrimp-left-large", "price": "2.00", "priceCurrency": "USD" } }, { "@type": "MenuItemOption", "value": [ { "@type": "PropertyValue", "name": "PIZZA_SIDE", "value": "PIZZA_SIDE_WHOLE" // Values are predefined for pizza side. }, { "@type": "PropertyValue", "name": "APPLICABLE_ITEM_OPTION", "value": "Small" // Value should be same as mentioned in item's options. } ], "offers": { "@type": "Offer", "sku": "offer-topping-shrimp-whole-small", "price": "1.50", "priceCurrency": "USD" } }, { "@type": "MenuItemOption", "value": [ { "@type": "PropertyValue", "name": "PIZZA_SIDE", "value": "PIZZA_SIDE_WHOLE" // Values are predefined for pizza side. }, { "@type": "PropertyValue", "name": "APPLICABLE_ITEM_OPTION", "value": "Large" // Value should be same as mentioned in item's options. } ], "offers": { "@type": "Offer", "sku": "offer-topping-shrimp-whole-large", "price": "2.50", "priceCurrency": "USD" } } ] } ] } ] }
Аддонмен
Подгруппинг продуктов питания или напитков в качестве раздела меню для административного меню для пункта меню.
В следующей таблице перечислены свойства для типа AddOnMenuSection
:
Свойство | Тип | Необходимость | Описание |
---|---|---|---|
@type | Текст | Необходимый | Это всегда «аддонменом». |
@id | URL-адрес | Необходимый | Уникальный идентификатор раздела меню. |
name | Текст | Необходимый | Текст, который может идентифицировать дополнение, когда пользователь просматривает меню. |
description | Текст | Необязательный | Описание раздела меню. |
eligibleQuantity | QuantitativeValue | Необязательный | Указывает количество элементов, разрешенных в качестве дополнения для этого раздела меню. Вы можете использовать это поле, чтобы ограничить количество дополнений, таких как минимальное и максимальное количество начинок, которые вы можете выбрать на пицце. |
image | URL-адрес | Необязательный | Изображение раздела меню. |
hasMenuItem | Массив AddOnMenuItem | Необходимый* | Дополнительные элементы меню, содержащиеся в дополнении. |
offers | Множество Offer | Необязательный | Используйте В приведенном ниже списке показаны, которые
|
hasMenuSection | Массив AddOnMenuSection | Необходимый* | Логическая подгруппа административного меню (например, ужин, закуски или рыбные блюда). |
defaultOption | Массив AddOnMenuItem | Необязательный | Дополнительные элементы меню, которые будут предварительно выбраны по умолчанию для пользователей в Объекты Количество |
numberOfFreeAddOns | Число | Необязательный | Указывает количество дополнений, которые пользователь может выбрать бесплатно. |
Следующие примеры включают объекты AddOnMenuSection
:
Пример 1
{ "@type": "AddOnMenuSection", "@id": "https://www.example.com/1089/addon/1", "name": "AddOnCheese", "hasMenuItem": [ { "@type": "AddOnMenuItem", "@id": "https://www.example.com/1089/addon/a", "name": "Swiss", "offers": { "@type": "Offer", "sku": "offer-swiss", "price": "2.99", "priceCurrency": "USD" } }, { "@type": "AddOnMenuItem", "@id": "https://www.example.com/1089/addon/b", "name": "Mozarella", "offers": { "@type": "Offer", "sku": "offer-mozzarella", "price": "1.99", "priceCurrency": "USD" } } ] }
Пример 2
"menuAddOn": { "@type": "AddOnMenuSection", "name": "Cheese", "@id": "https://www.example.com/1089/addon/1", // Points to an AddOnMenuSection "eligibleQuantity": "@type": "QuantitativeValue", "minValue": 0, "maxValue": 2 // Maximum of 2 cheeses are allowed } }
Пример 3
Предмет меню «Сэндвич с сыром» имеет AddOnMenuSection
к «выбору сыра» с «швейцарским» и «моцареллой», предварительно избранным по умолчанию.
{ "@type": "AddOnMenuSection", "@id": "https://www.example.com/1089/addon/1", "name": "AddOnCheese", "defaultOption": [ { "@type": "AddOnMenuItem", "@id": "https://www.example.com/1089/addon/a" }, { "@type": "AddOnMenuItem", "@id": "https://www.example.com/1089/addon/b" } ], "hasMenuItem": [ { "@type": "AddOnMenuItem", "@id": "https://www.example.com/1089/addon/a", "name": "Swiss", "offers": { "@type": "Offer", "sku": "offer-swiss", "price": "2.99", "priceCurrency": "USD" } }, { "@type": "AddOnMenuItem", "@id": "https://www.example.com/1089/addon/b", "name": "Mozzarella", "offers": { "@type": "Offer", "sku": "offer-mozzarella", "price": "1.99", "priceCurrency": "USD" } } ] }
AdvanceServiceLiveryHoursSpeciation
Представляет часы выполнения для пользователей, чтобы назначить предварительные заказы на доставку и вынос.
Как правило, значение opens
меньше значения closes
. Следующие рекомендации применяются к использованию opens
и closes
свойств:
-
opens
иcloses
свойства необязательны дляAdvanceServiceDeliveryHoursSpecification
, но мы настоятельно рекомендуем вам включить их. - Время должно быть указано в местное время для обслуживания. Не включайте часовой пояс в
opens
илиcloses
стоимости. Указанные часовые пояса игнорируются. - Если
opens
иcloses
явно не указаны, мы предполагаем, что предварительный заказ всегда доступен во все дни. - Если
opens
иcloses
одинаковы, то мы предполагаем, что предварительный заказ недоступен. - Если
opens
больше, чемcloses
, час закрытия интерпретируется как на следующий день. Например, если час первого часа установлен на 1 января в 17:00, а час закрытия - 2 часа ночи, то ресторан интерпретируется как закрытие 2 января в 2 часа ночи. -
opens
иcloses
относятся к будущему временному слоту.closes
эксклюзивным. Например, еслиopens
10 часов утра, аcloses
4 вечера сserviceTimeInterval
15 минут, то в первый раз слот начинается в 10 часов утра, а в последний раз слот начинается в 15:45.
В следующей таблице описываются свойства AdvanceServiceDeliveryHoursSpecification
Type:
Свойство | Тип | Необходимость | Описание |
---|---|---|---|
@type | Текст | Необходимый | Это всегда «AdvanceserviceDeliveryHoursSpeciation». |
validFrom | DateTime | Условный | Начальная дата, с которой могут быть выполнены предварительные заказы пользователей. Например, "2017-05-01t00: 00: 00-07: 00". Если это свойство не установлено, то считается, что оно является действительным с каждым днем. Если этот тип указан в качестве Для получения дополнительной информации см. DateTime и форматы времени . |
validThrough | DateTime | Необязательный | Дата окончания, после которой предварительные заказы пользователей больше не могут быть выполнены. Например, "2018-12-01t00: 00: 00-07: 00". Если это свойство не установлено, то считается, что оно является действительным с каждым днем. Если этот тип указан в качестве Время для Для получения дополнительной информации см. DateTime и форматы времени . |
opens | Time | Необязательный | Применяется к доставке или слотам на вынос. Конкретное время дня, начиная с того, что могут быть выполнены предварительные заказы пользователей. Например, 6:30 дается как «T06: 30: 00». Время должно быть указано в местное время для обслуживания. Не включайте часовой пояс в Для получения дополнительной информации см. DateTime и форматы времени . |
closes | Time | Необязательный | Применяется к доставке или слотам на вынос. Конкретное время дня, после чего предварительные заказы пользователей не могут быть выполнены. Например, 9:00 вечера дается как «T21: 00: 00». Время должно быть указано в местное время для обслуживания. Не включайте часовой пояс в Для получения дополнительной информации см. DateTime и форматы времени . |
dayOfWeek | Множество DayOfWeek | Необязательный | Дни недели, когда доступны часы предварительной доставки. Допустимые значения:
Если вы не указываете никаких дней недели, то |
serviceTimeInterval | Duration | Необходимый | Интервал между двумя последовательными временами обслуживания. Например: если |
advanceBookingRequirement | QuantitativeValue | Необходимый | Number of minutes from the ordering time when the advance order can be fulfilled. The For example, if an advance order needs at least 60 minutes to be fulfilled, and is restricted from being fulfilled more than 2 days later, then the |
The following example shows the usage of the AdvanceServiceDeliveryHoursSpecification
type:
Пример 1
{ "@type": "AdvanceServiceDeliveryHoursSpecification", "opens": "T10:00:00", // Delivery between 10AM and 7:59:59PM "closes": "T20:00:00", "serviceTimeInterval": "PT15M", // in slots spaced 15 minutes apart (ISO8601) "advanceBookingRequirement": { "minValue": 60, // The slot should be at least 60 mins away "maxValue": 8640, // but not more than 6 days away "unitCode": "MIN" } }
AllergenDetails
To use this type, add the gs1 context: "@context": ["http://gs1.org/voc/", "http://schema.org"]
Then, add FoodBeverageTobaccoProduct
to the type of the appropriate MenuItem
or MenuItemOption
.
The following table describes the properties of the AllergenDetails
type:
Свойство | Тип | Необходимость | Описание |
---|---|---|---|
@type | Текст | Необходимый | This is always "AllergenDetails". |
allergenType | Текст | Необязательный | Type of allergen per gs1:AllergenTypeCode . For example http://gs1.org/voc/AllergenTypeCode-PEANUTS . |
allergenLevelOfContainmentCode | Текст | Необязательный | Containment code per gs1:LevelOfContainmentCode . For example http://gs1.org/voc/LevelOfContainmentCode-CONTAINS , http://gs1.org/voc/LevelOfContainmentCode-FREE_FROM or http://gs1.org/voc/LevelOfContainmentCode-MAY_CONTAIN . |
The following example shows the usage of the AllergenDetails
type:
{ "@type": ["MenuItem", "FoodBeverageTobaccoProduct"], "@id": "http://www.example.com/bar/menuitem/6", "name": "Strawberry joghurt drink", "description": "A 0.5l bottle of strawberry joghurt drink.", "offers": { "@type": "Offer", "sku": "offer-joghurt-drink", "price": "2.49", "priceCurrency": "USD" }, "hasAllergen": [ { "@type": "AllergenDetails", "allergenType": "http://gs1.org/voc/AllergenTypeCode-GLUTEN", "allergenLevelOfContainmentCode": "http://gs1.org/voc/LevelOfContainmentCode-FREE_FROM" }, { "@type": "AllergenDetails", "allergenType": "http://gs1.org/voc/AllergenTypeCode-LACTOSE", "allergenLevelOfContainmentCode": "http://gs1.org/voc/LevelOfContainmentCode-CONTAINS" } ] },
DeliveryChargeSpecification
The following table describes the properties of the DeliveryChargeSpecification
type:
Свойство | Тип | Необходимость | Описание |
---|---|---|---|
@type | Текст | Необходимый | This is always "DeliveryChargeSpecification". |
@id | URL-адрес | Необязательный | Identifier for the delivery charge specification. |
price | Число | Необходимый | Total delivery cost as a numerical only value. Use the priceCurrency property to denote the type of currency instead of currency symbols. For example, "6.00", without the currency symbol. |
priceCurrency | Текст | Необходимый | The 3-letter ISO 4217 currency code. For example, "USD". |
eligibleTransactionVolume | PriceSpecification | Необязательный | The transaction volume, in a monetary unit, for which this delivery charge specification is valid. For example, to indicate a minimal purchasing volume, or to express that shipping is available at no additional charge above a certain order volume. |
eligibleQuantity | QuantitativeValue | Необязательный | The interval and unit of measurement of ordering quantities for which the delivery charge is valid. This lets you, for example, specify that a certain freight charge is valid only for a certain quantity. |
eligibleRegion | Array of GeoShape or Place or GeoCircle | Необязательный | The place, or the GeoShape/GeoCircle for the geo-political region(s) for which the offer or delivery charge specification is valid. Use this property only if delivery fees vary by the region. |
validFrom | DateTime | Необязательный | The date and time (including the time zone) when the delivery charge specified becomes valid. For example, "2017-05-01T06:30:00-07:00". For more information, see DateTime and Time formats . |
validThrough | DateTime | Необязательный | The date and time (including the time zone) after which the delivery charge specified is not valid. For example, "2017-05-01T06:30:00-07:00". The time for validThrough is exclusive: for example, if that time is set to 6 PM, the time is valid up to 5:59:59 PM. For more information, see DateTime and Time formats . |
The following examples show DeliveryChargeSpecification
elements:
Пример 1
"offers": { "@type":"Offer", "priceSpecification":[ { "@type": "DeliveryChargeSpecification", "price": "5.0", "priceCurrency": "USD" } ] }
Пример 2
"priceSpecification": [ { "@type": "DeliveryChargeSpecification", "@id": "http://www.provider.com/defaultdeliveryfee/foo", "price": "10.0", "priceCurrency": "USD", "eligibleQuantity": { "@type": "QuantitativeValue", "minValue": 3 // Minimum of 3 items required for delivery } }, { "@type": "DeliveryChargeSpecification", "@id": "http://www.provider.com/deliveryfee/foo/1", "price": "20.0", "priceCurrency": "USD", "validFrom":"T18:00:00", // Valid from 6:00PM "validThrough":"T22:00:00", // Valid to 9:59:59PM "eligibleQuantity": { "@type": "QuantitativeValue", "minValue": 3 // Minimum of 3 items required for delivery } } ]
Пример 3
"priceSpecification": [{ "@type": "DeliveryChargeSpecification", "@id": "http://www.provider.com/threebrotherstacos/deliveryfee/1", "price": "8.00", // Charges $8 for area5 "priceCurrency": "USD", "eligibleTransactionVolume": { "@type": "PriceSpecification", "minPrice": "20.00", "priceCurrency": "USD" }, "eligibleRegion": [ // area5 { "@type": "GeoCircle", "geoMidpoint": { "@type": "GeoCoordinates", "latitude": "37.7392607", "longitude": "-122.3895522" }, "geoRadius": "4505" } ] }, { "@type": "DeliveryChargeSpecification", "@id": "http://www.provider.com/threebrotherstacos/defaultdeliveryfee", "price": "6.00", // Charges $6 when delivered from Foo restaurant to area1, area2, area3 and area4 (Default charge) "priceCurrency": "USD", "eligibleTransactionVolume": { "@type": "PriceSpecification", "minPrice": "20.00", // Minimum order price for delivery is $20 "priceCurrency": "USD" } } ]
In addition to "@type": ["DeliveryChargeSpecification"]
, the object can be extended with UnitPriceSpecification :
"@type": ["DeliveryChargeSpecification", "UnitPriceSpecification"]
The extension gives an additional two properties required for delivery fees calculated in percentages.
Свойство | Тип | Необходимость | Описание |
---|---|---|---|
referenceQuantity | QuantitativeValue | Необходимый | Reference quantity for which a certain price applies. For example, referenceQuantity of value 10 with unitCode of "P1" result in 10% of the order value. Only unitCode "P1" is supported at the moment. |
basePrice | Число | Необязательный | The base charge in addition to the referenceQuantity . For example, referenceQuantity of 10 with unitCode of "P1" and basePrice of 5 in USD result in $5 + 10% of the order value. The default value is 0. |
Delivery fee examples
Google allows you to specify a variety of fees to users upfront using Offer.PriceSpecification
of the Service entity.
Note that Ordering End-to-End currently only supports one DeliveryChargeSpecification
. Combine all types of fees into a single DeliveryChargeSpecification
.
Refer to Service feed examples for how to specify delivery fees based on area, distance, and order value.
If there is no fee, Offer.PriceSpecification
is omitted.
- Example 1: Delivery fee is 5% of cart subtotal
- Example 2: Delivery fee is $5
- Example 3: Delivery fee is $5 + 10% of cart subtotal
- Example 4: Delivery fee is $5 and bag fee is $0.1
- Example 5: Delivery fee is 5% and convenience fee is 2% of cart subtotal
- Example 6: Delivery fee is $5 and $1 per additional 1km distance
Пример 1
priceSpecification [ { "@type": ["DeliveryChargeSpecification", "UnitPriceSpecification"], "referenceQuantity": { "@type": "QuantitativeValue", "value": "5.00", // 5% "unitCode": "P1" // P1 == % }, "priceCurrency": "USD" } ]
Пример 2
priceSpecification [ { "@type": ["DeliveryChargeSpecification"], "priceCurrency": "USD", "price": "5.00" } ]
Пример 3
priceSpecification [ { "@type": ["DeliveryChargeSpecification", "UnitPriceSpecification"], "referenceQuantity": { "@type": "QuantitativeValue", "value": "10.00", // 10% "unitCode": "P1", // P1 == % }, "priceCurrency": "USD", "basePrice": "5.00" // User always pays $5 in addition to 10% } ]
Пример 4
priceSpecification [ { "@type": ["DeliveryChargeSpecification"], "priceCurrency": "USD", "price": "5.10" //$5 + $0.1 }
Example 5
priceSpecification [ { "@type": ["DeliveryChargeSpecification", "UnitPriceSpecification"], "referenceQuantity": { "@type": "QuantitativeValue", "value": "7.00", // 5% + 2% "unitCode": "P1" // P1 == % }, "priceCurrency": "USD" }, ]
Пример 6
priceSpecification [ { "@type": ["DeliveryChargeSpecification", "UnitPriceSpecification"], "basePrice": 5.00, // User always pays $5 "price": 1.00, // An additional $1.00 is added per 1km "priceCurrency": "USD", "referenceQuantity": { "@type": "QuantitativeValue", "unitCode": "MTR", // MTR == meter "value": "1000.0" // 1km } } ]
GeoCircle
The following table describes the properties of the GeoCircle
type:
Свойство | Тип | Необходимость | Описание |
---|---|---|---|
@type | Текст | Необходимый | This is always "GeoCircle". |
geoMidpoint | GeoCoordinates | Необходимый | Indicates the GeoCoordinates at the center of a GeoCircle . |
geoRadius | Число | Необходимый | Indicates the approximate radius (in meters) of a GeoCircle . |
The following example shows a GeoCircle
element:
Пример
{ "@type": "GeoCircle", "geoMidpoint": { "@type": "GeoCoordinates", "latitude": "37.7392607", "longitude": "-122.3895522" }, "geoRadius": "4505" }
GeoCoordinates
The following table describes the properties of the GeoCoordinates
type:
Свойство | Тип | Необходимость | Описание |
---|---|---|---|
@type | Текст | Необходимый | This is always "GeoCoordinates". |
latitude | Число | Необходимый | Latitude in degrees. Values are restricted to the range from -90 to 90, inclusive. If the value specified is less than -90, it is set to -90; if the value is greater than 90, it is set to 90. The precision should be at least 5 decimal places. |
longitude | Число | Необходимый | Longitude in degrees. Values outside the range of -180 to 180 are wrapped so that they fall within the range. For example, a value of -190 is converted to 170. A value of 190 is converted to -170. This reflects the fact that longitudes wrap around the globe. The precision should be at least 5 decimal places. |
The following example shows a GeoCoordinates
element:
Пример
"geo": { "@type": "GeoCoordinates", "latitude": "35.7392607", "longitude": "-120.3895522" }
GeoShape
The following table describes the properties of the GeoShape
type:
Свойство | Тип | Необходимость | Описание |
---|---|---|---|
@type | Текст | Необходимый | This is always "GeoShape". |
polygon | Array of Text | Необходимый | 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. In most cases you will have a single polygon. For more complex use cases, see the delivery service area documentation. |
The following examples show GeoShape
elements:
Пример 1
{ "@type": "GeoShape", // area4 // Specify latitude first (i.e., lat long lat long ...) "polygon": "37.806000 -122.425592 37.775849 -122.419043 37.795547 -122.394046 37.808747 -122.412619" },
Пример 2
{ "@type": "GeoShape", // A service area with a hole. // Specify latitude first (i.e., lat long lat long ...) "polygon": [ “37.771535 -122.506881 37.764289 -122.506669 37.766497 -122.453058”, “37.791707 -122.447987 37.746676 -122.449433 37.736150 -122.505944 37.780924 -122.509729”] },
Пример 3
{ "@type": "Service", "@id": "http://www.provider.com/service/1", "areaServed": [ { "@type": "GeoShape", // Richmond District delivery area. // Specify latitude first (i.e., lat long lat long ...) "polygon": "37.785847 -122.484851 37.772757 -122.483983 37.774442 -122.458563 37.786876 -122.459474" }, { "@type": "GeoShape", // Haight-Ashbury delivery area. // Specify latitude first (i.e., lat long lat long ...) "polygon": "37.774804 -122.454774 37.766224 -122.452881 37.769087 -122.436043 37.773087 -122.437417" } ], ... },
Меню
The following table lists the properties for the Menu
type:
Свойство | Тип | Необходимость | Описание |
---|---|---|---|
@type | Текст | Необходимый | This is always "Menu". |
@id | URL-адрес | Необходимый | Unique identifier for the menu. |
name | Текст | Необязательный | Text that can identify the Menu when a user is browsing the menu. |
description | Текст | Необязательный | Description of the menu. |
disclaimer | MenuDisclaimer | Необязательный | Disclaimer for the menu. For example, nutritional information disclosure and allergen disclosure. |
hasMenuSection | Single object or array of MenuSection | Необязательный | Logical sub-grouping of the menu (like Dinner, Appetizers, or Fish dishes). |
hasMenuItem | Single object or array of MenuItem | Необязательный | MenuItem objects contained in a Menu , typically when the Menu isn't subdivided by MenuSections . |
inLanguage | Текст | Необязательный | Language of the menu content, as a language code from the IETF BCP 47 standard . For example, "en-US". |
The following examples show the usage of the Menu
type:
Пример 1
{ "@type": "Menu", "@id": "http://www.provider.com/somerestaurant/menu/1", "hasMenuSection": { "@type": "MenuSection", "@id": "http://www.provider.com/somerestaurant/menusection/1", "name": "Tacos", "description": "Tacos inspired by India cuisine.", "offers": { "@type": "Offer", "availabilityStarts": "T08:00:00", // Starts at 8:00AM "availabilityEnds": "T22:00:00" // Ends at 10:00PM. Available 8AM-9:59:59PM }, "hasMenuItem": { "@type": "MenuItem", "@id": "http://www.provider.com/somerestaurant/menuitem/1", "name": "Aloo Gobi Taco", "description": "Mexico City-style street corn tortilla taco filled with a flavorful mixture of mildly south Indian spiced cauliflower, potato, tomato, onions and bell peppers.", "offers": { "@type": "Offer", "sku": "offer-aloo-gobi-taco", "price": "3.50", "priceCurrency": "USD" }, "nutrition": { "@type": "NutritionInformation", "calories": "170 Cal", "fatContent": "3 g", "fiberContent": "2 g", "proteinContent": "4 g" }, "suitableForDiet": "http://schema.org/GlutenFreeDiet" } }, "inLanguage": "English" }
Пример 2
This example shows hasMenuItem
as an array.
{ "@type": "Menu", "@id": "http://www.provider.com/somerestaurant/menu/1", "name": "Dine-In Menu", "description": "Menu for in-restaurant dining only.", "hasMenuSection": [ { "@type": "MenuSection", "@id": "http://www.provider.com/somerestaurant/menusection/1", "name": "Main", "description": "Main course", "image": "http://www.provider.com/somerestaurant/main_dishes.jpg", "hasMenuItem": [ { "@type": "MenuItem", "@id": "http://www.provider.com/somerestaurant/menuitem/1", "name": "Pizza", "description": "Pizza", "offers": { "@type": "Offer", "sku": "offer-pizza", "price": "7.49", "priceCurrency": "USD", "availabilityStarts": "T08:00:00", // Starts at 8:00AM "availabilityEnds": "T18:00:00" // Ends at 6:00PM, last order at 5:59:59PM } }, { "@type": "MenuItem", "@id": "http://www.provider.com/somerestaurant/menuitem/2", "name": "Pasta", "description": "Pasta", "offers": [ { "@type": "Offer", "sku": "offer-pasta-lunch", "price": "7.49", "priceCurrency": "USD", "availabilityStarts": "T08:00:00", // Starts at 8:00AM "availabilityEnds": "T18:00:00" // Ends at 6:00PM, last order at 5:59:59PM }, { "@type": "Offer", "sku": "offer-pasta-dinner", "price": "10.49", "priceCurrency": "USD", "availabilityStarts": "T18:00:00", // Starts at 6:00PM "availabilityEnds": "T21:00:00" // Ends at 9:00PM, last order at 8:59:59PM } ] } ] }, { "@type": "MenuSection", "@id": "http://www.provider.com/somerestaurant/menusection/2", "name": "Soups & Salads", "description": "Salads and a few choices of soup", "image": "https://www.provider.com/somerestaurant/soup_and_salad_dishes.jpg", "hasMenuItem": { "@type": "MenuItem", "@id": "http://www.provider.com/somerestaurant/menuitem/3", "name": "Pea Soup", "description": "Creamy pea soup topped with melted cheese and sourdough croutons.", "offers": { "@type": "Offer", "sku": "offer-pea-soup", "price": "3.49", "priceCurrency": "USD" }, "suitableForDiet": "http://schema.org/GlutenFreeDiet" } } ] }
Пример 3
This example shows hasMenuSection
as an array.
{ "@type": "Menu", "@id": "http://www.provider.com/somerestaurant/menu/1", "name": "Dine-In Menu", "description": "Menu for in-restaurant dining only.", "hasMenuSection": [ { "@type": "MenuSection", "@id": "http://www.provider.com/somerestaurant/menusection/1", "name": "Dinner", "description": "Dinner dishes", "hasMenuSection": [ { "@type": "MenuSection", "@id": "http://www.provider.com/somerestaurant/menusection/2", "name": "Starters", "description": "Appetizers and such", "image": "https://www.provider.com/somerestaurant/starter_dishes.jpg", "hasMenuItem": { "@type": "MenuItem", "@id": "http://www.provider.com/somerestaurant/menuitem/1", "name": "Potato Skins", "description": "Small serving of stuffed potato skins.", "offers": { "@type": "Offer", "sku": "offer-potato-skins", "price": "7.49", "priceCurrency": "USD" }, "suitableForDiet": "http://schema.org/GlutenFreeDiet" } }, { "@type": "MenuSection", "@id": "http://www.provider.com/somerestaurant/menusection/3", "name": "Soups & Salads", "description": "Salads and a few choices of soup", "image": "https://thisisarestaurant.com/soup_and_salad_dishes.jpg", "hasMenuItem": { "@type": "MenuItem", "@id": "http://www.provider.com/somerestaurant/menuitem/2", "name": "Pea Soup", "description": "Creamy pea soup topped with melted cheese and sourdough croutons.", "offers": { "@type": "Offer", "sku": "offer-pea-soup", "price": "3.49", "priceCurrency": "USD" }, "suitableForDiet": "http://schema.org/GlutenFreeDiet" } }, { "@type": "MenuSection", "@id": "http://www.provider.com/somerestaurant/menusection/4", "name": "Steak", "description": "Steak Dishes", "image": "https://steak.com/steak_dishes.jpg", "hasMenuItem": { "@type": "MenuItem", "@id": "http://www.provider.com/somerestaurant/menuitem/3", "name": "Sirloin", "description": "Sirloin steak dish.", "offers": { "@type": "Offer", "sku": "offer-sirloin-steak", "price": "15.49", "priceCurrency": "USD" }, "suitableForDiet": "http://schema.org/GlutenFreeDiet" } } ] }, { "@type": "MenuSection", "@id": "http://www.provider.com/somerestaurant/menusection/5", "name": "Desserts", "description": "Dessert dishes.", "image": "http://www.provider.com/somerestaurant/dessert_dishes.jpg", "hasMenuItem": { "@type": "MenuItem", "@id": "http://www.provider.com/somerestaurant/menuitem/4", "name": "Chocolate Pie", "description": "A slice of chocolate pie.", "offers": { "@type": "Offer", "sku": "offer-chocolate-pie", "price": "3.49", "priceCurrency": "USD" } } } ] }
For more examples of Menu
entities, see Restaurant and Menu Feed Examples .
MenuDisclaimer
The following table lists the properties for the MenuDisclaimer
type:
Свойство | Тип | Необходимость | Описание |
---|---|---|---|
@type | Текст | Необходимый | This is always "MenuDisclaimer". |
@id | URL-адрес | Необходимый | Unique identifier for the menu disclaimer. |
text | Текст | Необходимый | Text of the disclaimer. For example, "The average adult daily energy intake is 8700 kJ." |
url | URL-адрес | Необязательный | URL pointing to a page providing more details on the disclaimer. |
The following example shows the usage of the MenuDisclaimer
type:
Пример
{ "@type": "Menu", "@id": "menu_1", "disclaimer": { "@type": "MenuDisclaimer", "@id": "menu_1_disclaimer_1", "text": "The average adult daily energy intake is 8700 kJ", "url": "https://partner.domain.com/menu/provider/disclaimer/more-info.html" } }
Пункт меню
Menu item to represent the item in the menu. The following table lists the properties for the MenuItem
type:
Свойство | Тип | Необходимость | Описание |
---|---|---|---|
@type | Текст | Необходимый | This is always "MenuItem". |
@id | URL-адрес | Необходимый | Unique identifier of the menu item. |
name | Текст | Необходимый | Text that can identify the MenuItem when a user is browsing the menu. |
description | Текст | Необязательный | Description of the menu item. |
image | URL-адрес | Необязательный | Image of the menu item. Use the following image guidelines:
|
menuAddOn | Array of AddOnMenuSection | Необязательный | Items in a menu section that can be added as add-ons to the menu item. |
offers | Array of Offer | Необходимый* | One or many offers to provide this The listing below shows which
|
hasMenuItemOptions | Array of MenuItemOption | Необходимый | List of base options/variation for this menu item. Options should be used to specify various base variations available for the item, for example small, medium and large. |
suitableForDiet | Array of RestrictedDiet | Необязательный | The dish complies with the described dietary restriction (like "http://schema.org/GlutenFreeDiet" or "http://schema.org/VeganDiet". This is an enumerated list of possible values. |
nutrition | NutritionInformation | Необязательный | Nutrition information for the dish, most notably calories. |
hasAllergen | AllergenDetails | Необязательный | Allergens of the dish per gs1:AllergenDetails . Add the gs1 context to use this property: "@context": ["http://gs1.org/voc/", "http://schema.org"] . And add FoodBeverageTobaccoProduct to the type of the MenuItem . |
additive | Array of AdditiveDetails | Необязательный | The additives of the dish per gs1:AdditiveDetails . This is an enumerated list of possible values. Add the gs1 context to use this property: "@context": ["http://gs1.org/voc/", "http://schema.org"] . And add FoodBeverageTobaccoProduct to the type of the MenuItem . |
packaging | PackagingDetails | Необязательный | The packaging and recycling information of this MenuItem per gs1:PackagingDetails . Add the gs1 context to use this property: "@context": ["http://gs1.org/voc/", "http://schema.org"] . And add FoodBeverageTobaccoProduct to the type of the MenuItem . |
The following examples show MenuItem
elements:
Пример 1
"hasMenuItem": { "@type": "MenuItem", "@id": "http://www.provider.com/bar/menuitem/1", "name": "Potato Skins", "description": "Small serving of stuffed potato skins.", "offers": { "@type": "Offer", "sku": "offer-potato-skins", "price": "7.49", "priceCurrency": "USD" }, "suitableForDiet": "http://schema.org/GlutenFreeDiet" }
Пример 2
"hasMenuItem": [ { "@type": "MenuItem", "@id": "https://www.example.com/1089/product/170067", "name": "Veg Grill Burrito", "offers": { "@type": "Offer", "sku": "offer-veg-grill-burrito", "price": "12.99", "priceCurrency": "USD" }, "menuAddOn": { "@type": "AddOnMenuSection", "name": "Cheese", "@id": "https://www.example.com/1089/addon/1", // Points to an AddOnMenuSection "eligibleQuantity": "@type": "QuantitativeValue", "minValue": 0, "maxValue": 2 // Maximum of 2 cheeses are allowed } } }, { "@type": "MenuItem", "@id": "https://www.example.com/1089/product/170018", "name": "Chicken Taco", "offers": { "@type": "Offer", "sku": "offer-chicken-taco", "price": "6.99", "priceCurrency": "USD" } } ]
Пример 3
{ "@type": "MenuItem", "@id": "https://www.example.com/1089/product/170067", "name": "Meat Combo", "hasMenuItemOptions": [ { "@type": "MenuItemOption", "value": { "@type": "PropertyValue", "name": "OPTION", "value": "Plate", "offers": { "@type": "Offer", "sku": "offer-meat-combo-plate", "price": "12.00", "priceCurrency": "USD" }, "menuAddOn": [ { "@type": "AddOnMenuSection", "name": "Toppings for Plate", "@id": "https://www.example.com/1089/addon/1", "eligibleQuantity": { "@type": "QuantitativeValue", "minValue": 0, "maxValue": 3 }, "hasMenuItem": [ { "@type": "AddOnMenuItem", "@id": "https://www.example.com/1089/addon/1/a", "name": "Hummus", "offers": { "@type": "Offer", "sku": "offer-meat-combo-topping-hummus", "price": "1.00", "priceCurrency": "USD" } } // -- Other Items -- ] } ] } }, { "@type": "MenuItemOption", "value": { "@type": "PropertyValue", "name": "OPTION", "value": "Sandwich" }, "offers": { "@type": "Offer", "sku": "offer-meat-combo-sandwich", "price": "10.00", "priceCurrency": "USD" }, "menuAddOn": [ { "@type": "AddOnMenuSection", "name": "Toppings for Sandwich", "@id": "https://www.example.com/1089/addon/1", "eligibleQuantity": { "@type": "QuantitativeValue", "minValue": 0, "maxValue": 2 }, "hasMenuItem": [ { "@type": "AddOnMenuItem", "@id": "https://www.example.com/1089/addon/1/a", "name": "Hummus", "offers": { "@type": "Offer", "sku": "offer-meat-combo-topping-hummus", "price": "1.00", "priceCurrency": "USD" } } // -- Other Items -- ] } ] } ] }
Пример 4
{ "@type": "MenuItem", "@id": "https://www.example.com/1089/product/170067", "name": "Pepperoni Pizza", "hasMenuItemOptions": [ { "@type": "MenuItemOption", "value": { "@type": "PropertyValue", "name": "SIZE", "value": "Small" }, "offers": { "@type": "Offer", "sku": "offer-small", "price": "10.00", "priceCurrency": "USD" } }, { "@type": "MenuItemOption", "value": { "@type": "PropertyValue", "name": "SIZE", "value": "Medium" }, "offers": { "@type": "Offer", "sku": "offer-medium", "price": "15.00", "priceCurrency": "USD" } }, { "@type": "MenuItemOption", "value": { "@type": "PropertyValue", "name": "SIZE", "value": "Large" }, "offers": { "@type": "Offer", "sku": "offer-large", "price": "20.00", "priceCurrency": "USD" } } ] }
Example 5
{ "@type": ["MenuItem", "FoodBeverageTobaccoProduct"], "@id": "http://www.example.com/bar/menuitem/9", "name": "Ice Coffee", "offers": { "@type": "Offer", "sku": "offer-ice-coffee", "price": "3.99", "priceCurrency": "USD" }, "nutrition": { "@type": "NutritionInformation", "description": "Contains preservatives and artificial flavor" }, "hasAllergen": [ { "@type": "AllergenDetails", "allergenType": "http://gs1.org/voc/AllergenTypeCode-LACTOSE", "allergenLevelOfContainmentCode": "http://gs1.org/voc/LevelOfContainmentCode-CONTAINS" }, { "@type": "AllergenDetails", "allergenType": "http://gs1.org/voc/AllergenTypeCode-PEANUTS", "allergenLevelOfContainmentCode": "http://gs1.org/voc/LevelOfContainmentCode-MAY_CONTAIN" } ], "additive": [ { "@type": "AdditiveDetails", "additiveName": "caffeine", "additiveLevelOfContainment": "http://gs1.org/voc/LevelOfContainmentCode-CONTAINS" } ], "packaging": { "@type": "PackagingDetails", "packagingRecyclingProcessType" : "http://gs1.org/voc/PackagingRecyclingProcessTypeCode-REUSABLE", "hasReturnablePackageDeposit": { "@type": "ReturnablePackageDepositDetails", "returnablePackageDepositAmount": { "@type": "http://gs1.org/voc/PriceSpecification", "http://gs1.org/voc/price": "0.10", "http://gs1.org/voc/priceCurrency": "USD" } } } }
For more examples of MenuItem
entities, see Restaurant and Menu Feed Examples .
MenuItemOption
An option to represent choices that a user would be required to make when selecting a dish or combo. The user must select an option, otherwise the order is considered invalid. For example, choosing small, medium, or large in the case of a pizza.
For sample use cases of MenuItemOption
, see our guide on customization using MenuItemOption
.
The following table lists the properties for the MenuItemOption
type:
Свойство | Тип | Необходимость | Описание |
---|---|---|---|
@type | Текст | Необходимый | This is always "MenuItemOption". |
value | PropertyValue | Необходимый | PropertyValue containing a name/value pair representing the option. |
offers | Array of Offer | Необходимый | One or more offers to provide this The listing below shows which
|
menuAddOn | Array of | Необязательный | Menu section of allowed items that can be added as an add-on. Only use this if add-ons are specific to a particular menu item option. Otherwise provide add-ons using the MenuItem .menuAddOn property. |
suitableForDiet | Array of RestrictedDiet | Необязательный | Enumerated list that indicates diets where this dish complies with the described dietary restriction (like "http://schema.org/GlutenFreeDiet" or "http://schema.org/VeganDiet"). |
nutrition | NutritionInformation | Необязательный | Nutrition information for the dish, most notably calories. |
hasAllergen | AllergenDetails | Необязательный | Allergens of the dish per gs1:AllergenDetails . Add the gs1 context to use this property: "@context": ["http://gs1.org/voc/", "http://schema.org"] . And add FoodBeverageTobaccoProduct to the type of the MenuItemOption . |
additive | Array of AdditiveDetails | Необязательный | Additives of the dish per gs1:AdditiveDetails . This is an enumerated list of possible values. Add the gs1 context to use this property: "@context": ["http://gs1.org/voc/", "http://schema.org"] . And add FoodBeverageTobaccoProduct to the type of the MenuItemOption . |
packaging | PackagingDetails | Необязательный | Packaging and recycling information of this MenuItem per gs1:PackagingDetails Add the gs1 context to use this property: "@context": ["http://gs1.org/voc/", "http://schema.org"] . And add FoodBeverageTobaccoProduct to the type of the MenuItemOption . |
The following example shows MenuItemOption
elements:
Пример 1
{ "@type": "MenuItem", "@id": "https://www.example.com/1089/product/170067", "name": "Pepperoni Pizza", "hasMenuItemOptions": [ { "@type": "MenuItemOption", "value": { "@type": "PropertyValue", "name": "SIZE", "value": "Small" }, "offers": { "@type": "Offer", "sku": "offer-small", "price": "10.00", "priceCurrency": "USD" } }, { "@type": "MenuItemOption", "value": { "@type": "PropertyValue", "name": "SIZE", "value": "Medium" }, "offers": { "@type": "Offer", "sku": "offer-medium", "price": "15.00", "priceCurrency": "USD" } }, { "@type": "MenuItemOption", "value": { "@type": "PropertyValue", "name": "SIZE", "value": "Large" }, "offers": { "@type": "Offer", "sku": "offer-large", "price": "20.00", "priceCurrency": "USD" } } ] }
Пример 2
{ "@type": "MenuItem", "@id": "https://www.example.com/1089/product/170067", "name": "Meat Combo", "hasMenuItemOptions": [ { "@type": "MenuItemOption", "value": { "@type": "PropertyValue", "name": "OPTION", "value": "Plate", "offers": { "@type": "Offer", "sku": "offer-meat-combo-plate", "price": "12.00", "priceCurrency": "USD" }, "menuAddOn": [ { "@type": "AddOnMenuSection", "name": "Toppings for Plate", "@id": "https://www.example.com/1089/addon/1", "eligibleQuantity": { "@type": "QuantitativeValue", "minValue": 0, "maxValue": 3 }, "hasMenuItem": [ { "@type": "AddOnMenuItem", "@id": "https://www.example.com/1089/addon/1/a", "name": "Hummus", "offers": { "@type": "Offer", "sku": "offer-meat-combo-topping-hummus", "price": "1.00", "priceCurrency": "USD" } } // -- Other Items -- ] } ] } }, { "@type": "MenuItemOption", "value": { "@type": "PropertyValue", "name": "OPTION", "value": "Sandwich" }, "offers": { "@type": "Offer", "sku": "offer-meat-combo-sandwich", "price": "10.00", "priceCurrency": "USD" }, "menuAddOn": [ { "@type": "AddOnMenuSection", "name": "Toppings for Sandwich", "@id": "https://www.example.com/1089/addon/1", "eligibleQuantity": { "@type": "QuantitativeValue", "minValue": 0, "maxValue": 2 }, "hasMenuItem": [ { "@type": "AddOnMenuItem", "@id": "https://www.example.com/1089/addon/1/a", "name": "Hummus", "offers": { "@type": "Offer", "sku": "offer-meat-combo-topping-hummus", "price": "1.00", "priceCurrency": "USD" } } // -- Other Items -- ] } ] } ] }
MenuSection
Menu section to represent a particular section in the menu. The following table lists the properties for the MenuSection
type:
Свойство | Тип | Необходимость | Описание |
---|---|---|---|
@type | Текст | Необходимый | This is always "MenuSection". |
@id | URL-адрес | Необходимый | Unique identifier of the menu section. |
name | Текст | Необходимый | Text that can identify the MenuSection when a user browses the menu. |
description | Текст | Необязательный | Description of the menu section. |
hasMenuSection | Array of MenuSection | Необязательный | Logical sub-grouping of the MenuSection . For example, the Dinner menu section can have multiple sub-MenuSections like "Poultry Dishes" or "Vegetarian". |
hasMenuItem | Array of MenuItem | Необязательный | Menu items contained in a MenuSection . |
offers | Array of Offer | Необязательный | Use The following list shows which
|
image | URL-адрес | Необязательный | Image of the menu section. |
The following examples show MenuSection
entities:
Пример 1
{ "@type": "MenuSection", "@id": "http://www.provider.com/bar/menusection/4", "name": "Steak", "description": "Steak Dishes", "image": "https://steak.com/steak_dishes.jpg", "hasMenuItem": { "@type": "MenuItem", "@id": "http://www.provider.com/bar/menuitem/3", "name": "Sirloin", "description": "Sirloin steak dish.", "offers": { "@type": "Offer", "sku": "offer-sirloin-steak", "price": "15.49", "priceCurrency": "USD" }, "suitableForDiet": "http://schema.org/GlutenFreeDiet" } }
Пример 2
"hasMenuSection": [ { "@type": "MenuSection", "@id": "https://www.example.com/1089/categorization/25114480", "name": "Main Items", "hasMenuItem": [ { "@type": "MenuItem", "@id": "https://www.example.com/1089/product/170067", "name": "Veg Grill Burrito", "offers": { "@type": "Offer", "sku": "offer-veg-grill-burrito", "price": "12.99", "priceCurrency": "USD" }, "menuAddOn": { "@type": "AddOnMenuSection", "name": "Cheese", "@id": "https://www.example.com/1089/addon/1", // Points to an AddOnMenuSection "eligibleQuantity": "@type": "QuantitativeValue", "minValue": 0, "maxValue": 2 // Maximum of 2 cheeses are allowed } } }, { "@type": "MenuItem", "@id": "https://www.example.com/1089/product/170018", "name": "Chicken Taco", "offers": { "@type": "Offer", "sku": "offer-chicken-taco", "price": "6.99", "priceCurrency": "USD" } } ] }, { "@type": "AddOnMenuSection", "@id": "https://www.example.com/1089/addon/1", "name": "AddOnCheese", "hasMenuItem": [ { "@type": "AddOnMenuItem", "@id": "https://www.example.com/1089/addon/a", "name": "Swiss", "offers": { "@type": "Offer", "sku": "offer-swiss", "price": "2.99", "priceCurrency": "USD" } }, { "@type": "AddOnMenuItem", "@id": "https://www.example.com/1089/addon/b", "name": "Mozarella", "offers": { "@type": "Offer", "sku": "offer-mozzarella", "price": "1.99", "priceCurrency": "USD" } } ] } ]
For more examples of MenuSection
entities, see Restaurant and Menu Feed Examples .
NutritionInformation
The following table describes the properties of the NutritionInformation
type. Units of measurement are case-sensitive. For example, "Cal" is accepted, but "cal" is not.
Свойство | Тип | Необходимость | Описание |
---|---|---|---|
@type | Текст | Необходимый | This is always "NutritionInformation". |
description | Текст | Необязательный | Nutrition information in free text. For example "Contains preservatives". |
calories | Текст | Необязательный | The number of calories in Cal, kcal, or kJ, using the following format: number Cal_kcal_OR_kJ For example, "240 Cal". |
carbohydrateContent | Текст | Необязательный | The amount of carbohydrates, typically in g, using the following format: number g_OR_mg For example, "7 g". |
cholesterolContent | Текст | Необязательный | The amount of cholesterol, typically in mg, using the following format: number g_OR_mg For example, "12 mg". |
fatContent | Текст | Необязательный | The amount of fat, typically in g, using the following format: number g_OR_mg For example, "42 g". |
fiberContent | Текст | Необязательный | The number of g or mg of fiber, using the following format: number g_OR_mg |
proteinContent | Текст | Необязательный | The number of g or mg of protein, using the following format: number g_OR_mg |
saturatedFatContent | Текст | Необязательный | The number of g or mg of saturated fat, using the following format: number g_OR_mg |
servingSize | Текст | Необязательный | The serving size in mL, L, g, or kg, in terms of the number of volume or mass. |
sodiumContent | Текст | Необязательный | The number of mg or g of sodium, using the following format: number g_OR_mg |
sugarContent | Текст | Необязательный | The number of g or mg of sugar, using the following format: number g_OR_mg |
transFatContent | Текст | Необязательный | The number of g or mg of trans fat, using the following format: number g_OR_mg |
unsaturatedFatContent | Текст | Необязательный | The amount of unsaturated fat, typically in g, using the following format: number g_OR_mg |
The following examples show a NutritionInformation
element:
Пример 1
"nutrition": { "@type": "NutritionInformation", "calories": "170 Cal", "fatContent": "3 g", "fiberContent": "2 g", "proteinContent": "4 g" },
Пример 2
{ "@type": ["MenuItem", "FoodBeverageTobaccoProduct"], "@id": "http://www.example.com/bar/menuitem/7", "name": "Peach Ice Tea", "description": "A 0.5l bottle of peach ice tea.", "offers": { "@type": "Offer", "sku": "offer-peach-ice-tea", "price": "2.49", "priceCurrency": "USD" }, "nutrition": { "@type": "NutritionInformation", "description": "Contains preservatives and artificial flavor" } },
Предложение
Offer for a menu item. The following table describes the properties of the Offer
type:
Свойство | Тип | Необходимость | Описание |
---|---|---|---|
@type | Текст | Необходимый | This is always "Offer". |
sku | Текст | Условный | Unique identifier of the offer. Can be any text value that's unique within the This property is only used in the following offer types:
|
price | Текст | Условный | Price of the offered item. For example, "6.00" without the currency symbol. This property is only required in the following offer types:
It is not used in the following offer types:
|
priceCurrency | Текст | Условный | The currency (in 3-letter ISO 4217 format) of the price or a price component, when attached to PriceSpecification and its subtypes. This property is only required in the following offer types:
It is not used in the following offer types:
|
availabilityStarts | DateTime or Time | Необязательный | The date and time or just the time from which the offer is available. For example, if pancakes are served beginning at 7:00 AM, then the value of this field can look like the following: "2017-05-01T07:00:00-07:00". For more information, see DateTime and Time formats . |
availabilityEnds | DateTime or Time | Необязательный | The date and time or just the time when the offer is unavailable. This time is exclusive. For example, if the availability for pancakes ends at 10 AM, then the last pancake can be served at 9:59:59 AM. The value of this field can then look like the following: "2017-05-01T10:00:00-07:00". For more information, see DateTime and Time formats . |
availableDay | Array of DayOfWeek | Необязательный | Days of the week that this item is available. Допустимые значения:
If you have different availability for different days of the week, use more than one |
validFrom | DateTime | Необязательный | The date and time (including the time zone) at which the specified price is valid. For example, the pasta is $8 during lunch and $10 at dinner. For more information, see DateTime and Time formats . This property can be used in the following offer types:
This property is not used in the following offer types:
|
validThrough | DateTime | Необязательный | The date and time (including the time zone) after which the specified price is no longer valid. For example, the pasta is $8 during lunch and $10 at dinner. The time for This property can be used in the following offer types:
This property is not used in the following offer types.
|
eligibleQuantity | QuantitativeValue | Необязательный | The ordering quantities for which this item is allowed. For example, a restaurant might require that at least 10 pizzas be ordered for a delivery. This value is optional. By default, there is no maximum limit, but the restaurant can specify one. Minimum limits apply only when a user selects the item. This property can be used in the following offer types:
This property is not used in the following offer types.
|
aggregateRating | AggregateRating | Необязательный | The overall rating, based on a collection of reviews or ratings of the item. This property can be used in the following offer types:
This property is not used in the following types.
|
inventoryLevel | QuantitativeValue | Необязательный | The current approximate inventory level for the item or items. This property can be used in the following offer types:
This property is not used in the following offer types:
|
priceSpecification | Array of DeliveryChargeSpecification or array of PaymentChargeSpecification | Необязательный | When used in This property can be used in the following offer types:
This property is not used in the following offer types:
|
offeredBy | Array of Restaurant ids | Необязательный | Represents the restaurants this If not specified, this This property can be used in the following offer types:
This property is not used in the following offer types:
|
applicableFulfillmentMethod | Array of Text | Необязательный | Represents the service type this If not specified, this This property can be used in the following offer types:
This property is not used in the following offer types:
|
@id | URL-адрес | Устарело | Unique identifier of the offer. Deprecated as of 4/25/19, replace with sku as described above. |
The following examples show Offer
elements:
Пример 1
The following example shows a simple offer:
{ "@type": "Offer", "@id": "https://www.provider.com/menu/74962/139/offer", "price": "10", "priceCurrency": "USD" }
Пример 2
The following example offer shows availability from 8-10 AM on weekends:
{ "@type": "Offer", "@id": "https://www.provider.com/menu/74962/140/offer", "price": "10", "priceCurrency": "USD", "availabilityStarts": "T08:00:00-07:00", // Only available from 8-9:59:59 AM "availabilityEnds": "T10:00:00-07:00", "availableDay": ["Saturday", "Sunday"] // Only on weekends. }
Пример 3
The following example shows availability from 9-10:59:59 AM on Mondays, Wednesdays, and Fridays, but 8-11:59:59 AM on Tuesdays and Thursdays:
{ "@type": "Offer", "@id": "https://www.provider.com/menu/74962/140/offer", "price": "10", "priceCurrency": "USD", "availabilityStarts": "T09:00:00-07:00", "availabilityEnds": "T11:00:00-07:00", "availableDay": ["Monday", "Wednesday", "Friday"] }, { "@type": "Offer", "@id": "https://www.provider.com/menu/74962/141/offer", "price": "10", "priceCurrency": "USD", "availabilityStarts": "T08:00:00-07:00", "availabilityEnds": "T12:00:00-07:00", "availableDay": ["Tuesday", "Thursday"] }
Пример 4
The following example shows an add-on menu item's eligible quantity set so that the user can order a maximum of 2 portions of that item.:
{ "@type": "AddOnMenuItem", "@id": "https://www.example.com/1089/addon/a", "name": "Ranch", "offers": { "@type": "Offer", "@id": "https://www.example.com/1089/addon/a/offer", "price": "2.99", "priceCurrency": "USD" "eligibleQuantity": { "@type": "QuantitativeValue", "maxValue": 2 } } }
Example 5
The following example shows a delivery offer at a specific location:
{ "@type": "Offer", "@id": "https://www.provider.com/menu/74962/139/offer", "price": "10", "priceCurrency": "USD", "applicableFulfillmentMethods": ["DELIVERY"], "offeredBy": [ { "@type": "Restaurant", "@id": "https://www.provider.com/location/1", } ] }
OpeningHoursSpecification
Defines when ordering services are available. Typically, the value of opens
is less than the value of closes
. The following guidelines apply to using the opens
and closes
properties:
- The
opens
andcloses
properties are optional but strongly recommended to denote when ordering is available. The best practice for defining available hours is to include adeliveryHours
array that contains aServiceDeliveryHoursSpecification
withopens
andcloses
properties. You can then include anAdvanceServiceDeliveryHoursSpecification
object indeliveryHours
with its ownopens
andcloses
properties, if you want to offer a more limited window for advance ordering. - If
opens
andcloses
are not explicitly specified, we assume that ordering service is available every day at all times of day. - The time must be specified in the local time for the service. Do not include a time zone in an
opens
orcloses
value. If a time zone is specified, Google ignores this information. - If
opens
andcloses
are the same, then we assume that the restaurant is open for 0 minutes. - If
opens
is greater thancloses
, the closing hour is interpreted to be on the following day. For example, if the opening hour is set to January 1 at 5 PM and the closing hour is 2 AM, then the restaurant is interpreted as closing on January 2 at 2 AM. - The time for
closes
is exclusive. Therefore, if the open and close times for this ordering window are set at 10 AM and 4 PM, respectively, then the last order is 3:59:59 PM.
The following table describes the properties of the OpeningHoursSpecification
type:
Свойство | Тип | Необходимость | Описание |
---|---|---|---|
@type | Текст | Необходимый | This is always "OpeningHoursSpecification". |
@id | URL-адрес | Необязательный | Identifier for the OpeningHoursSpecification . |
dayOfWeek | Array of DayOfWeek | Необязательный | The day of the week for which these opening hours are valid. Acceptable values are "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", and "Sunday". Например: "dayOfWeek": [ "Monday", "Tuesday", "Wednesday", "Thursday", "Friday" ] If you do not specify any days of week, then the |
opens | Time | Необязательный | When used in a When used in a The time must be specified in the local time for the service. Do not include a time zone in an For more information, see DateTime and Time formats . |
closes | Time | Необязательный | When used in a The time must be specified in the local time for the service. Do not include a time zone in a For more information, see DateTime and Time formats . |
validFrom | DateTime | Необязательный | When used in a For example, if the hours given apply to all of the year 2017, you set set When used in a If this property is not specified in your feed, Google assumes that the Restaurant or Service is available daily. In addition to the date, the time and time zone portions of the value are required. For the time zone, use the Restaurant's or Service's time zone. For more information, see DateTime and Time formats . |
validThrough | DateTime | Необязательный | When used in a For example, if the hours given apply to all of the year 2017, you set set When used in a If this property is not specified in your feed, Google assumes that the Restaurant or Service is available daily. In addition to the date, the time and time zone portions of the DateTime are required. For the time zone, use the Restaurant's or Service's time zone. The time for For more information, see DateTime and Time formats . |
deliveryHours | Array of ServiceDeliveryHoursSpecification or array of AdvanceServiceDeliveryHoursSpecification | Условный | The delivery or takeout time specification. This parameter is required unless the restaurant is closed (meaning that the
|
The following examples show OpeningHoursSpecification
elements:
Пример 1
// Ordering times for Monday through Friday { "@type": "OpeningHoursSpecification", "deliveryHours": [ { "@type": "AdvanceServiceDeliveryHoursSpecification", "deliveryLeadTime": { "@type": "QuantitativeValue", "value": "60", "unitCode": "MIN" }, "dayOfWeek": [ "Monday", "Tuesday", "Wednesday", "Thursday", "Friday" ], "opens": "T12:00:00", // Advance ordering begins at noon "closes": "T23:59:59", // Advance ordering ends at midnight "validFrom": "2017-01-01T00:00:00-07:00", "validThrough": "2018-12-31T23:59:59-07:00" }, { "@type": "ServiceDeliveryHoursSpecification", "deliveryLeadTime": { "@type": "QuantitativeValue", "value": "60", "unitCode": "MIN" }, "dayOfWeek": [ "Monday", "Tuesday", "Wednesday", "Thursday", "Friday" ], "opens": "T10:00:00", // ASAP ordering begins at 10AM "closes": "T14:00:00", // ASAP ordering ends at 2PM "validFrom": "2017-01-01T00:00:00-07:00", "validThrough": "2018-12-31T23:59:59-07:00" } ] },
Пример 2
// Ordering times for Saturday and Sunday { "@type": "OpeningHoursSpecification", "deliveryHours": [ { // In this case advance orders are unavailable on Saturday and Sunday "@type": "ServiceDeliveryHoursSpecification", "deliveryLeadTime": { "@type": "QuantitativeValue", "value": "60", "unitCode": "MIN" }, "dayOfWeek": [ "Saturday", "Sunday" ], "opens": "T12:00:00", // ASAP orders start at noon "closes": "T23:59:59", // ASAP orders end at midnight "validFrom": "2017-01-01T00:00:00-07:00", "validThrough": "2018-12-31T23:59:59-07:00" } ] }
Пример 3
"hoursAvailable": { "@type": "OpeningHoursSpecification", "validFrom": "2016-02-01T00:00:00-07:00", "validThrough": "2016-03-01T00:00:00-07:00", "opens": "T08:00:00", // Ordering begins at 8:00AM and ends at 6:00PM. // ASAP and and advance orders are restricted to this // time frame since the user won't be able to place // orders outside of this window. "closes": "T18:00:00", "deliveryHours": { "@type": "ServiceDeliveryHoursSpecification", "deliveryLeadTime": { "@type": "QuantitativeValue", "value": "60", "unitCode": "MIN" } } },
Пример 4
// List hours available for 2017 and 2018 "hoursAvailable": [ { "@type": "OpeningHoursSpecification", // Array containing advance order hours for each day "deliveryHours": [ { // Open 10:00AM to 9:29:59PM on Mondays "@type": "AdvanceServiceDeliveryHoursSpecification", "deliveryLeadTime": { "@type": "QuantitativeValue", "value": "60", "unitCode": "MIN" }, "dayOfWeek": [ "Monday" ], "opens": "T10:00:00", "closes": "T21:30:00", "validFrom": "2017-01-01T00:00:00-07:00", "validThrough": "2018-12-31T23:59:59-07:00" }, { // Open 10:00AM to 9:29:59PM on Tuesdays "@type": "AdvanceServiceDeliveryHoursSpecification", "deliveryLeadTime": { "@type": "QuantitativeValue", "value": "60", "unitCode": "MIN" }, "dayOfWeek": [ "Tuesday" ], "opens": "T10:00:00", "closes": "T21:30:00", "validThrough": "2018-12-31T23:59:59-07:00" }, { // Open 10:00AM to 9:29:59PM on Wednesdays "@type": "AdvanceServiceDeliveryHoursSpecification", "deliveryLeadTime": { "@type": "QuantitativeValue", "value": "60", "unitCode": "MIN" }, "dayOfWeek": [ "Wednesday" ], "opens": "T10:00:00", "closes": "T21:30:00", "validFrom": "2017-01-01T00:00:00-07:00", "validThrough": "2018-12-31T23:59:59-07:00" }, { // Open 10:00AM to 9:29:59PM on Thursdays "@type": "AdvanceServiceDeliveryHoursSpecification", "dayOfWeek": [ "Thursday" ], "opens": "T10:00:00", "closes": "T21:30:00", "validFrom": "2017-01-01T00:00:00-07:00", "validThrough": "2018-12-31T23:59:59-07:00" }, { // Open 10:00AM to 11:29:59PM on Fridays "@type": "AdvanceServiceDeliveryHoursSpecification", "deliveryLeadTime": { "@type": "QuantitativeValue", "value": "60", "unitCode": "MIN" }, "dayOfWeek": [ "Friday" ], "opens": "T10:00:00", "closes": "T23:30:00", "validFrom": "2017-01-01T00:00:00-07:00", "validThrough": "2018-12-31T23:59:59-07:00" }, { // Open 10:00AM to 11:29:59PM on Saturdays "@type": "AdvanceServiceDeliveryHoursSpecification", "deliveryLeadTime": { "@type": "QuantitativeValue", "value": "60", "unitCode": "MIN" }, "dayOfWeek": [ "Saturday" ], "opens": "T10:00:00", "closes": "T23:30:00", "validFrom": "2017-01-01T00:00:00-07:00", "validThrough": "2018-12-31T23:59:59-07:00" }, { // Open 11:00AM to 6:59:59PM on Sundays "@type": "AdvanceServiceDeliveryHoursSpecification", "deliveryLeadTime": { "@type": "QuantitativeValue", "value": "60", "unitCode": "MIN" }, "dayOfWeek": [ "Sunday" ], "opens": "T11:00:00", "closes": "T19:00:00", "validFrom": "2017-01-01T00:00:00-07:00", "validThrough": "2018-12-31T23:59:59-07:00" } ] } ],
PackagingDetails
Add the gs1 context to use this type: "@context": ["http://gs1.org/voc/", "http://schema.org"]
. And add FoodBeverageTobaccoProduct
to the type of the MenuItem
or MenuItemOption
.
The following table describes the properties of the PackagingDetails
type:
Свойство | Тип | Необходимость | Описание |
---|---|---|---|
@type | Текст | Необходимый | This is always "PackagingDetails". |
packagingRecyclingProcessType | Текст | Необязательный | Packaging recycling process type per gs1:PackagingRecyclingProcessTypeCode . For example http://gs1.org/voc/PackagingRecyclingProcessTypeCode-RECYCLABLE or http://gs1.org/voc/PackagingRecyclingProcessTypeCode-REUSABLE |
hasReturnablePackageDeposit | ReturnablePackageDepositDetails | Необязательный | Returnable package deposit details per gs1:ReturnablePackageDepositDetails . For example, bottles and cans have returnable package deposits. |
The following example shows the usage of the PackagingDetails
type:
{ "@type": ["MenuItem", "FoodBeverageTobaccoProduct"], "@id": "http://www.example.com/bar/menuitem/5", "name": "Sparkling Water", "description": "A 0.5l bottle of sparking water.", "offers": { "@type": "Offer", "sku": "offer-sparkling-water", "price": "1.49", "priceCurrency": "USD" }, "packaging": { "@type": "PackagingDetails", "packagingRecyclingProcessType" : "http://gs1.org/voc/PackagingRecyclingProcessTypeCode-REUSABLE", "hasReturnablePackageDeposit": { "@type": "ReturnablePackageDepositDetails", "returnablePackageDepositAmount": { "@type": "http://gs1.org/voc/PriceSpecification", "http://gs1.org/voc/price": "0.05", "http://gs1.org/voc/priceCurrency": "USD" } } } },
PaymentChargeSpecification
The following table describes the properties of the PaymentChargeSpecification
type:
Свойство | Тип | Необходимость | Описание |
---|---|---|---|
@type | Текст | Необходимый | This is always "PaymentChargeSpecification". |
@id | URL-адрес | Необязательный | Identifier for the PaymentChargeSpecification . |
price | Число | Необходимый | Total amount of the charge. For example, "6.00", without the currency symbol. |
priceCurrency | Текст | Необходимый | The 3-letter ISO 4217 currency code of the price. For example, "USD". |
eligibleTransactionVolume | PriceSpecification | Необязательный | Transaction volume, in a monetary unit, for which this payment charge specification is valid, like for indicating a minimal purchasing volume. |
eligibleQuantity | QuantitativeValue | Необязательный | The ordering quantities for which the payment charge is valid. For example, you can use this property to require a minimum number of items in an order. |
validFrom | DateTime | Необязательный | Date and time (including the time zone) when the payment charge specified becomes valid. For example, "2017-05-01T07:00:00-07:00". For more information, see DateTime and Time formats . |
validThrough | DateTime | Необязательный | Date and time (including the time zone) when the payment charge specified is not valid. For example, "2017-05-01T07:30:00-07:00". The time for validThrough is exclusive: for example, if that time is set to 6 PM, the time is valid up to 5:59:59 PM. For more information, see DateTime and Time formats . |
The following example shows a PaymentChargeSpecification element:
Пример
"priceSpecification": [{ "@type": "PaymentChargeSpecification", "@id": "http://www.provider.com/paymentCharge/bar", "priceCurrency": "USD", "price": "6.00", // Charges $6 for processing fee "eligibleQuantity": { "@type": "QuantitativeValue", "minValue": 2 // Minimum of two items required } }]
In addition to "@type": ["PaymentChargeSpecification"]
, the object can be extended with UnitPriceSpecification ( "@type": ["PaymentChargeSpecification", "UnitPriceSpecification"]
). The extension gives an additional two properties required for service fees calculated in percentages.
свойство | Тип | Необходимость | Описание |
referenceQuantity | QuantitativeValue | Необходимый | Reference quantity for which a certain price applies. For example, referenceQuantity of value 10 with unitCode of "P1" result in 10% of the order value. Only unitCode "P1" is currently supported. |
basePrice | Число | Необязательный | The base charge in addition to the referenceQuantity . For example, referenceQuantity of 10 with unitCode of "P1" and basePrice of 5 in USD result in $5 + 10% of the order value. The default value is 0. |
Takeout fee examples
Google allows you to specify a variety of fees to users upfront using Offer.PriceSpecification
of the Service entity.
Note that we currently only support one PaymentChargeSpecification
. Combine all types of fees into a single PaymentChargeSpecification
If there is no fee, Offer.PriceSpecification
is omitted.
- Example 1: Service fee is 5% of cart subtotal
- Example 2: Service fee is $5
- Example 3: Bag fee is $0.1 and service fee is 5% of cart subtotal
- Example 4: Bag fee is $0.1 and service fee is $1
- Example 5: Service fee is 5% and required tip is 10% of cart subtotal
Пример 1
priceSpecification [ { "@type": ["PaymentChargeSpecification", "UnitPriceSpecification"], "referenceQuantity": { "@type": "QuantitativeValue", "value": "5.00", // 5% "unitCode": "P1" // P1 == % }, "priceCurrency": "USD" } ]
Пример 2
priceSpecification [ { "@type": ["PaymentChargeSpecification"], "priceCurrency": "USD", "price": "5.00" } ]
Пример 3
priceSpecification [ { "@type": ["PaymentChargeSpecification", "UnitPriceSpecification"], "referenceQuantity": { "@type": "QuantitativeValue", "value": "5.00", // 5% "unitCode": "P1", // P1 == % }, "priceCurrency": "USD", "basePrice": "0.10" // Bag fee $0.1 } ]
Пример 4
priceSpecification [ { "@type": ["PaymentChargeSpecification"], "priceCurrency": "USD", "price": "1.10" //$1 + $0.1 } ]
Example 5
priceSpecification [ { "@type": ["PaymentChargeSpecification", "UnitPriceSpecification"], "referenceQuantity": { "@type": "QuantitativeValue", "value": "15.00", // 5% + 10% "unitCode": "P1" // P1 == % }, "priceCurrency": "USD" } ]
Место
The following table describes the properties of the Place
type:
Свойство | Тип | Необходимость | Описание |
---|---|---|---|
@type | Текст | Необходимый | This is always "Place". |
address | PostalAddress | Необходимый | Address of a place. |
The following example shows a Place element:
Пример
{ "@type": "Place", // area2 "address": { "@type": "PostalAddress", "postalCode": "94041", "addressCountry": "US" } },
Почтовый адрес
The following table describes the properties of the PostalAddress
type:
Свойство | Тип | Необходимость | Описание |
---|---|---|---|
@type | Текст | Необходимый | This is always "PostalAddress". |
addressLocality | Текст | Необходимый* | The locality or city. For example, "San Francisco". |
addressRegion | Текст | Необходимый* | The region or state. For example, "CA". |
postalCode | Текст | Необходимый* | The postal code. For example, "94102". |
streetAddress | Текст | Необязательный | The street address. For example, "1600 Amphitheatre Pkwy". |
addressCountry | Текст | Необходимый | Two-letter ISO 3166-1 alpha-2 country code . For example, "US". |
Delivery providers can list these properties to designate a Service.areaServed
where a service is provided.
When used in Restaurant.address
, all the properties listed in PostalAddress
are required.
The following example shows a PostalAddress
element:
Пример
"address": { "@type": "PostalAddress", "streetAddress": "12345 Bar Avenue", "addressLocality": "San Francisco", "addressRegion": "CA", "postalCode": "94124", "addressCountry": "US" },
PriceSpecification
The following table describes the properties of the PriceSpecification
type:
Свойство | Тип | Необходимость | Описание |
---|---|---|---|
@type | Текст | Необходимый | This is always "PriceSpecification". |
@id | URL-адрес | Необязательный | Identifier for the PriceSpecification . |
minPrice | Число | Необязательный | The lowest price if the price is a range. |
maxPrice | Число | Необязательный | The highest price if the price is a range. |
priceCurrency | Текст | Необходимый | The 3-letter ISO 4217 currency code of the price. For example, "USD". |
eligibleQuantity | QuantitativeValue | Необязательный | The ordering quantities for which the price specification is valid. For example, the price might be $2 per pound or 2 items for a dollar. |
The following example shows a PriceSpecification
element:
Пример 1
"eligibleTransactionVolume": { "@type": "PriceSpecification", "minPrice": "20.00", // Minimum order price for delivery is $20 "priceCurrency": "USD" }
Стоимость имущества
Property value pair used to describe options in MenuItemOption
.
The following table lists the properties for the PropertyValue
type:
Свойство | Тип | Необходимость | Описание |
---|---|---|---|
@type | Текст | Необходимый | This is always "PropertyValue". |
name | Текст | Необходимый | Name or type of the option. The following are valid names when used in
Valid names when used in
|
value | Текст | Необходимый | Value for the option. The values can be any string and are displayed as is. The following are valid values:
|
QuantitativeValue
The following table describes the properties of the QuantitativeValue
type:
Свойство | Тип | Необходимость | Описание |
---|---|---|---|
@type | Текст | Необходимый | This is always "QuantitativeValue". |
value | Число | Необязательный | The value of the quantitative value or property value node. |
unitCode | Text or URL | Необязательный | The unit of measurement as a UN/CEFACT Common Code or a URL. Codes other than the UN/CEFACT Common Code may be used with a prefix followed by a colon. |
maxValue | Число | Необязательный | The upper value of some characteristic or property. |
minValue | Число | Необязательный | The lower value of some characteristic or property. |
The following examples show the usage of the QuantitativeValue
type:
Пример 1
"deliveryLeadTime": { "@type": "QuantitativeValue", "value": "60", "unitCode": "MIN" }
Пример 2
"menuAddOn": { "@type": "AddOnMenuSection", "name": "Cheese", "@id": "https://www.example.com/1089/addon/1", // Points to an AddOnMenuSection "eligibleQuantity": "@type": "QuantitativeValue", "minValue": 0, "maxValue": 2 // Maximum of 2 cheeses are allowed } }
Пример 3
"priceSpecification": [ { "@type": "DeliveryChargeSpecification", "@id": "http://www.provider.com/defaultdeliveryfee/foo", "price": "10.0", "priceCurrency": "USD", "eligibleQuantity": { "@type": "QuantitativeValue", "minValue": 3 // Minimum of 3 items required for delivery } }, { "@type": "DeliveryChargeSpecification", "@id": "http://www.provider.com/deliveryfee/foo/1", "price": "20.0", "priceCurrency": "USD", "validFrom":"T18:00:00", // Valid from 6:00PM "validThrough":"T22:00:00", // Valid to 9:59:59PM "eligibleQuantity": { "@type": "QuantitativeValue", "minValue": 3 // Minimum of 3 items required for delivery } } ]
Ресторан
The following table lists the properties for the Restaurant
type:
Свойство | Тип | Необходимость | Описание |
---|---|---|---|
@type | Текст | Необходимый | This is always "Restaurant". |
@id | URL-адрес | Необходимый | Unique identifier of the restaurant or delivery provider. For example, "http://www.provider.com/326", where "326" is the unique identifier of the restaurant. |
name | Текст | Необходимый | Text that can identify the Restaurant during the ordering process. |
url | URL-адрес | Необходимый | URL on your domain that represents the restaurant. For example, "http://www.provider.com/somerestaurant". |
sameAs | URL-адрес | Необязательный | The official website for the restaurant. For example, "http://www.somerestaurant.com". |
email | Текст | Необязательный | Contact email of the restaurant. |
description | Текст | Необязательный | Description of the restaurant. |
telephone | Текст | Необходимый | Telephone number in the following format: "[+][country_code][phone_#_with_area_code]" For example, "+16501234567". |
priceRange | Текст | Необязательный | A range of pricing. For example, "$$" ($-Inexpensive, $$-Moderate, $$$-Expensive, $$$$-Very Expensive). |
logo |
URL | Optional | Logo of the restaurant in PNG, JPG, or GIF format. For example, "http://www.somerestaurant.com/logo.png". |
image |
URL | Optional | Image of the restaurant. |
servesCuisine |
Array of Text | Optional | Food types that are served at the restaurant. For example,
["sushi","Asian fusion"] . |
address |
PostalAddress |
Required* | Address of the restaurant. |
geo |
GeoCoordinates |
Optional* | Geographic coordinates of the restaurant. |
suitableForDiet |
Array of RestrictedDiet |
Optional | Dietary restrictions this restaurant accommodates (like kosher, vegan, or gluten-free diets). It is an enumerated list. |
aggregateRating |
AggregateRating |
Optional | Overall rating, based on a collection of reviews or ratings of the restaurant. |
additionalProperty |
Array of name value string pairs | Optional |
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 "\n". For example |
The following examples show the usage of the Restaurant
type:
Example 1
{ "@type": "Restaurant", "@id": "http://www.provider.com/somerestaurant", "url": "www.provider.com/somerestaurant", "name": "Some Restaurant", "sameAs": "http://www.somerestaurant.com", "image": "http://www.somerestaurant.com/image-of-some-restaurant.jpg", "description": "This is the Some Restaurant located on 345 Spear St. San Francisco, 94105 CA. It serves Indian-Mexican fusion cuisine", "address": { "@type": "PostalAddress", "addressLocality": "San Francisco", "addressRegion": "CA", "postalCode": "94105", "streetAddress": "345 Spear St", "addressCountry": "US" }, "geo": { "@type": "GeoCoordinates", "latitude": "37.391115", "longitude": "-122.081099" }, "aggregateRating": { "@type": "AggregateRating", "ratingValue": "4.4", "reviewCount": "89" }, "priceRange": "$$", "telephone": "+16501234567", // Country code (+1) is required "servesCuisine": [ "Indian-Mexican Fusion" ] } ,
Пример 2
{ "@type": "Restaurant", "@id": "http://www.example.com/threebrotherstacos", "name": "Three Brothers Tacos", "address": { "@type": "PostalAddress", "addressLocality": "Mountain View", "addressRegion": "CA", "postalCode": "94041", "streetAddress": "123 Foo St", "addressCountry": "US" }, "additionalProperty": [ {"name": "imprint", "value": "Three Brothers Tacos\n123 FooSt\nMountain View\nCA 94041, United States\nemail: contact@threebrotherstacos.com\n\nCommercial Register: 123456789"} ] }
For more examples of Restaurant
entities, see Restaurant and Menu Feed Examples .
ReturnablePackageDepositDetails
To use this type, add the gs1 context: "@context":
["http://gs1.org/voc/", "http://schema.org"]
Then, add FoodBeverageTobaccoProduct
to the type of the appropriate MenuItem
or MenuItemOption
.
The following table describes the properties of the ReturnablePackageDepositDetails
type:
Свойство | Тип | Необходимость | Описание |
---|---|---|---|
@type | Текст | Необходимый | This is always "ReturnablePackageDepositDetails". |
returnablePackageDepositAmount | gs1:PriceSpecification | Необязательный | The amount of deposit for this item per gs1:PriceSpecification . For example, $0.25 deposit per can. |
The following example shows the usage of the ReturnablePackageDepositDetails
type:
{ "@type": ["MenuItem", "FoodBeverageTobaccoProduct"], "@id": "http://www.example.com/bar/menuitem/5", "name": "Sparkling Water", "description": "A 0.5l bottle of sparking water.", "offers": { "@type": "Offer", "sku": "offer-sparkling-water", "price": "1.49", "priceCurrency": "USD" }, "packaging": { "@type": "PackagingDetails", "packagingRecyclingProcessType" : "http://gs1.org/voc/PackagingRecyclingProcessTypeCode-REUSABLE", "hasReturnablePackageDeposit": { "@type": "ReturnablePackageDepositDetails", "returnablePackageDepositAmount": { "@type": "http://gs1.org/voc/PriceSpecification", "http://gs1.org/voc/price": "0.05", "http://gs1.org/voc/priceCurrency": "USD" } } } },
Услуга
Describes delivery of an Ordering End-to-End Action from a restaurant to a geographical location by a delivery organization.
The following table describes the properties of the Service
type:
Свойство | Тип | Необходимость | Описание |
---|---|---|---|
@type | Текст | Необходимый | The feed type.
|
@id | URL-адрес | Необходимый | Identifier for the fulfillment service. For example, "http://www.provider.com/service/1". |
description | Текст | Необязательный | Description of the item. |
serviceType | Текст | Необходимый | Type of service being offered. Possible values are "DELIVERY" or "TAKEOUT". |
provider | Restaurant | Необходимый | A reference to the unique identifier for the restaurant. For example, "http://www.provider.com/somerestaurant". |
areaServed | Array of GeoShape , Place , or GeoCircle | Условный | Geographic area where a service is provided. This field is optional by default, but is required if serviceType is "DELIVERY". |
hoursAvailable | Array of OpeningHoursSpecification | Необходимый | Hours during which this service is available. |
specialOpeningHoursSpecification | Array of OpeningHoursSpecification , ServiceDeliveryHoursSpecification , or AdvanceServiceDeliveryHoursSpecification | Необязательный | Times that override the more general Define the special date range using the |
offers | Array of Offer | Условный | Details about the delivery offering for a specified restaurant. This field is optional by default, but required if The |
hasOfferCatalog | [ Menu , OfferCatalog] | Необходимый | Specifies a menu for this service. You can have a different menu for each of your services (like takeout, delivery, and catering). You must specify both "hasOfferCatalog": { "@type": ["Menu", "OfferCatalog"], "@id": "https://www.provider.com/restaurant/menu/1" } |
additionalProperty | Array of {name, value} | Необязательный | Optional service configuration information. Items are expected to be an object with the key See the "additionalProperty": [{ "name": "disableOrderInstructions", "value": false }, { "name": "disableMenuItemSpecialInstructions", "value": false }, { "name": "disableTipWidget", "value": false }, { "name": "disablePromoWidget", "value": false }, { "name": "menuItemSpecialInstructionsMaxLength", "value": 256 }, { "name": "orderInstructionsMaxLength", "value": 256 }] |
potentialAction | URL-адрес | Необязательный | Contains a URL for a delivery/takeout service that will be used while migrating from end-to-end food ordering experience to redirect. For example, "potentialAction": { "url": "https://fopatestagent.com/ordering/restaurant-1/delivery" } |
The following example shows the usage of the Service type:
Пример
{ "@type": "Service", "@id": "http://www.provider.com/service/1", "serviceType": "DELIVERY", "provider": { "@type": "Restaurant", "@id": "http://www.provider.com/threebrotherstacos" }, "potentialAction": { "url": "https://foprovider.com/ordering/restaurant-1/delivery" }, "hoursAvailable": [ // Ordering times for Monday through Friday { "@type": "OpeningHoursSpecification", "deliveryHours": [ { "@type": "AdvanceServiceDeliveryHoursSpecification", "deliveryLeadTime": { "@type": "QuantitativeValue", "value": "60", "unitCode": "MIN" }, "dayOfWeek": [ "Monday", "Tuesday", "Wednesday", "Thursday", "Friday" ], "opens": "T12:00:00", // Advance ordering begins at noon "closes": "T23:59:59", // Advance ordering ends at midnight "validFrom": "2017-01-01T00:00:00-07:00", "validThrough": "2018-12-31T23:59:59-07:00" }, { "@type": "ServiceDeliveryHoursSpecification", "deliveryLeadTime": { "@type": "QuantitativeValue", "value": "60", "unitCode": "MIN" }, "dayOfWeek": [ "Monday", "Tuesday", "Wednesday", "Thursday", "Friday" ], "opens": "T10:00:00", // ASAP ordering begins at 10AM "closes": "T14:00:00", // ASAP ordering ends at 2PM "validFrom": "2017-01-01T00:00:00-07:00", "validThrough": "2018-12-31T23:59:59-07:00" } ] }, // Ordering times for Saturday and Sunday { "@type": "OpeningHoursSpecification", "deliveryHours": [ { // In this case advance orders are unavailable on Saturday and Sunday "@type": "ServiceDeliveryHoursSpecification", "deliveryLeadTime": { "@type": "QuantitativeValue", "value": "60", "unitCode": "MIN" }, "dayOfWeek": [ "Saturday", "Sunday" ], "opens": "T12:00:00", // ASAP orders start at noon "closes": "T23:59:59", // ASAP orders end at midnight "validFrom": "2017-01-01T00:00:00-07:00", "validThrough": "2018-12-31T23:59:59-07:00" } ] } ], "hasOfferCatalog": { "@type": ["Menu", "OfferCatalog"], "@id": "https://www.provider.com/menu/1" }, "areaServed": [{ "@type": "GeoCircle", // area1 "geoMidpoint": { "@type": "GeoCoordinates", "latitude": "42.362757", "longitude": "-71.087109" }, "geoRadius": "10000" }, { "@type": "Place", // area2 "address": { "@type": "PostalAddress", "postalCode": "94041", "addressCountry": "US" } }, { "@type": "GeoShape", // area3 // Specify latitude first (i.e., lat long lat long ...) "polygon": "37.418128 -122.098167 37.382755 -122.118968 37.368551 -122.047978 37.400949 -122.048106 37.418128 -122.098167" }, { "@type": "GeoShape", // area4 // Specify latitude first (i.e., lat long lat long ...) "polygon": "37.806000 -122.425592 37.775849 -122.419043 37.795547 -122.394046 37.808747 -122.412619" }, { "@type": "GeoCircle", // area5 "geoMidpoint": { "@type": "GeoCoordinates", "latitude": "37.7392607", "longitude": "-122.3895522" }, "geoRadius": "4505" } ], "offers": { "@type": "Offer", "priceSpecification": [{ "@type": "DeliveryChargeSpecification", "@id": "http://www.provider.com/threebrotherstacos/deliveryfee/1", "price": "8.00", // Charges $8 for area5 "priceCurrency": "USD", "eligibleTransactionVolume": { "@type": "PriceSpecification", "minPrice": "20.00", "priceCurrency": "USD" }, "eligibleRegion": [ // area5 { "@type": "GeoCircle", "geoMidpoint": { "@type": "GeoCoordinates", "latitude": "37.7392607", "longitude": "-122.3895522" }, "geoRadius": "4505" } ] }, { "@type": "DeliveryChargeSpecification", "@id": "http://www.provider.com/threebrotherstacos/defaultdeliveryfee", "price": "6.00", // Charges $6 when delivered from Foo restaurant to area1, area2, area3 and area4 (Default charge) "priceCurrency": "USD", "eligibleTransactionVolume": { "@type": "PriceSpecification", "minPrice": "20.00", // Minimum order price for delivery is $20 "priceCurrency": "USD" } } ] } },
For more examples of Service entities, see Service Feed Examples .
ServiceDeliveryHoursSpecification
Represents the fulfillment hours for users to schedule ASAP orders for delivery and takeout.
Typically, the value of opens
is less than the value of closes
. The following guidelines apply to using the opens
and closes
properties:
- The
opens
andcloses
properties are optional forServiceDeliveryHoursSpecification
, but we strongly recommend that you include them. - The time must be specified in the local time for the service. Do not include a time zone in an
opens
orcloses
value. If a time zone is specified, Google ignores the time zone information. - If
opens
andcloses
are not explicitly specified, we assume that ASAP ordering is available every day at all times. - If
opens
andcloses
are the same, then we assume that ASAP ordering is unavailable. - If
opens
is greater thancloses
, the closing hour is interpreted to be on the following day. For example, if the opening hour is set to January 1 at 5 PM and the closing hour is 2 AM, then the restaurant is interpreted as closing on January 2 at 2 AM.
The following table describes the properties of the ServiceDeliveryHoursSpecification
type:
Свойство | Тип | Необходимость | Описание |
---|---|---|---|
@type | Текст | Необходимый | This is always "ServiceDeliveryHoursSpecification". |
validFrom | DateTime | Необязательный | Date and time (including the time zone) when users' ASAP orders can be fulfilled. For example, "2017-05-01T07:00:00-07:00". If this property is not set, then it is assumed to be valid every day. For more information, see DateTime and Time formats . |
validThrough | DateTime | Необязательный | Date and time (including the time zone) after which users' ASAP orders cannot be fulfilled. For example, "2017-05-01T07:00:00-07:00". If this property is not set, then it is assumed to be valid every day. The time for For more information, see DateTime and Time formats . |
opens | Time | Необязательный | Time at which delivery service starts for users' ASAP orders to be fulfilled. For example, "T10:30:00". The time must be specified in the local time for the service. Do not include a time zone in an For more information, see DateTime and Time formats . |
closes | Time | Необязательный | The time when delivery service for users' ASAP orders is no longer available. For example, "T23:59:59". The time for The time must be specified in the local time for the service. Do not include a time zone in a For more information, see DateTime and Time formats . |
dayOfWeek | Array of DayOfWeek | Необязательный | Days of the week that this service is available for users' ASAP orders. The following are valid values:
If you do not specify any days of week, then |
deliveryLeadTime | QuantitativeValue | Необязательный | Estimated delivery time, in minutes, once the order has been placed. We strongly recommend that you set this property. Set the value field of QuantitativeValue to the number of minutes and the unitCode to "MIN". |
The following example shows a ServiceDeliveryHoursSpecification
element:
Пример 1
{ "@type": "ServiceDeliveryHoursSpecification", "opens": "T08:00:00", "closes": "T17:00:00", "deliveryLeadTime": { "@type": "QuantitativeValue", "value": "60", // If no exact deliveryLeadTime, put a maximum time "unitCode": "MIN" } },
Пример 2
{ "@type": "ServiceDeliveryHoursSpecification", "opens": "T08:00:00", "closes": "T17:00:00", "deliveryLeadTime": { "@type": "QuantitativeValue", "minValue": "30", "maxValue": "50", "unitCode": "MIN" } }
Перечисления
RestrictedDiet
The RestrictedDiet
type has the following possible values:
- http://schema.org/DiabeticDiet
- http://schema.org/GlutenFreeDiet
- http://schema.org/HalalDiet
- http://schema.org/HinduDiet
- http://schema.org/KosherDiet
- http://schema.org/LowCalorieDiet
- http://schema.org/LowFatDiet
- http://schema.org/LowLactoseDiet
- http://schema.org/LowSaltDiet
- http://schema.org/VeganDiet
- http://schema.org/VegetarianDiet