схема инвентаризации v1

Фиды каталогов продуктов питания основаны на объектах 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 Необходимый

Последний измененный DateTime канала данных в формате ISO 8601.

Дата и время в формате ISO_OFFSET_DATE_TIME, когда были изменены элементы в этом фиде. При отсутствии этого поля предполагается, что время обновления — это время получения push-сообщения (или сканирования) на серверах Google.

Мы настоятельно рекомендуем вам реализовать это, если вы используете как push, так и сканирование одновременно. Эта временная метка должна быть указана с часовым поясом и точностью до миллисекунд; например «2016-12-28T06:30:00:123-07:00».

В пакетных фидах версия объекта определяется с помощью поля dateModified в конверте фида.

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-адрес Необязательный

Изображение элемента дополнительного меню, соответствующего следующим правилам:

  • Соотношение сторон 3:2
  • >
  • Минимальное разрешение 600x400 пикселей, 72 dpi.
  • >
  • Рекомендуемое разрешение 1400x960 пикселей, 72 dpi
offers Массив Offer Необходимый*

Одно или несколько предложений предоставить этот AddOnMenuItem.

Описывает, когда и по какой цене будет доступен этот AddOnMenuItem. В определенный момент времени должно быть действительно только одно предложение. У вас может быть много действительных предложений, если цена или доступность могут меняться в зависимости от времени суток. Если надстройка или элемент отличается базовым атрибутом или вариацией самого элемента надстройки (например, маленькая, средняя и большая картошка фри в качестве надстройки), используйте свойство hasMenuItemOption .

Значение по умолчанию для Offer.eligibleQuantity — минимум 0 и максимум 1.

В AddOnMenuItem используются следующие свойства Offer :

  • Требуется Offer.sku
  • Предложение.нужная Offer.price
  • Offer.priceCurrency
  • Offer.availabilityStarts необязательно
  • Offer.availabilityEnds необязательно
  • Offer.availableDay необязательно
  • Offer.validFrom необязательно
  • Offer.validThrough необязательно
  • Offer.eligibleQuantity необязательно
  • Offer.inventoryLevel необязательно
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 Необязательный

Используйте Offer .availabilityStarts и Offer .availabilityEnds , чтобы указать период времени, в течение которого этот AddOnMenuSection доступен.

В листинге ниже показано, какие свойства Offer используются в AddOnMenuSection.

  • Offer.availabilityStarts необязательно
  • Offer.availabilityEnds необязательно
  • Offer.availableDay необязательно
  • Offer.validFrom необязательно
  • Offer.validThrough необязательно
hasMenuSection Массив AddOnMenuSection Необходимый* Логическое подгруппирование дополнительного меню (например, «Ужин», «Закуски» или «Рыбные блюда»).
defaultOption Массив AddOnMenuItem Необязательный

Пункты дополнительного меню, которые будут предварительно выбраны по умолчанию для пользователей в AddOnMenuSection . Пользователи могут изменить окончательный выбор. Если defaultOption не указан, AddOnMenuItem не выбран заранее.

Объекты AddOnMenuItem должны существовать в hasMenuItem AddOnMenuSection .

Число defaultOption не может превышать максимальное eligibleQuantity AddOnMenuSection .

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».

Если это свойство не установлено, предполагается, что оно действует каждый день. Свойства validFrom и validThrough должны отсутствовать или присутствовать вместе.

Если этот тип указан как specialOpeningHoursSpecification на уровне Service , это свойство validFrom в AdvanceServiceDeliveryHoursSpecification является обязательным.

Дополнительные сведения см. в разделе Форматы DateTime и времени .

validThrough DateTime Необязательный

Конечная дата, после которой предварительные заказы пользователей больше не могут быть выполнены. Например, «2018-12-01T00:00:00-07:00».

Если это свойство не установлено, предполагается, что оно действует каждый день. Свойства validFrom и validThrough должны отсутствовать или присутствовать вместе.

Если этот тип указан как specialOpeningHoursSpecification на уровне Service , свойство validThrough в AdvanceServiceDeliveryHoursSpecification является обязательным.

Время validThrough является исключительным. Например, если время установлено на 18:00, время действительно до 17:59:59.

Дополнительные сведения см. в разделе Форматы DateTime и времени .

opens Time Необязательный

Применяется к слотам доставки или выноса.

Конкретное время суток, начиная с которого могут выполняться предварительные заказы пользователей. Например, 6:30 утра указывается как «T06:30:00».

Время должно быть указано по местному времени для обслуживания. Не включайте часовой пояс в значение opens . Если указан часовой пояс, Google игнорирует эту информацию.

Дополнительные сведения см. в разделе Форматы DateTime и времени .

closes Time Необязательный

Применяется к слотам доставки или выноса.

Определенное время суток, после которого предварительные заказы пользователей не могут быть выполнены. Например, 21:00 указывается как «T21:00:00». closes> является эксклюзивным, поэтому установка его на 21:00 для serviceTimeInterval , равного 15 минутам, означает, что последний доступный временной интервал начинается в 20:45.

Время должно быть указано по местному времени для обслуживания. Не включайте часовой пояс в значение closes . Если указан часовой пояс, Google игнорирует эту информацию.

Дополнительные сведения см. в разделе Форматы DateTime и времени .

dayOfWeek Массив DayOfWeek Необязательный

Дни недели, в которые возможна предварительная доставка. Допустимые значения:

  • "Понедельник"
  • "Вторник"
  • "Среда"
  • "Четверг"
  • "Пятница"
  • "Суббота"
  • "Воскресенье"

Если вы не укажете дни недели, то AdvanceServiceDeliveryHoursSpecification применяется ко всем дням.

serviceTimeInterval Duration Необходимый

Интервал между двумя последовательными периодами обслуживания.

Например: если opens и closes приходится на 8:00 и 20:00, а serviceTimeInterval равен 15 минутам, то пользователь может выбрать время выполнения: 8:00, 8:15, 8:30, 8:45 и т. д. до тех пор, пока 8 ВЕЧЕРА.

Duration должна быть указана как продолжительность ISO 8601. Например: "P15M" означает 15-минутные интервалы.

advanceBookingRequirement QuantitativeValue Необходимый

Количество минут с момента заказа, в течение которых предварительный заказ может быть выполнен.

min и max значения QuantitativeValue должны быть установлены на количество минут, а unitCode — на «MIN».

Например, если для выполнения предварительного заказа требуется не менее 60 минут и его нельзя выполнить более чем через 2 дня, то min значение равно 60, а max значение — 2880.

В следующем примере показано использование типа 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-адрес Необязательный

Изображение пункта меню. Используйте следующие рекомендации по изображениям:

  • Соотношение сторон 3:2
  • Минимальное разрешение 600x400 пикселей, 72 dpi.
  • Рекомендуемое разрешение 1400x960 пикселей 72 dpi
menuAddOn Массив AddOnMenuSection Необязательный Элементы раздела меню, которые можно добавлять в качестве дополнений к элементу меню.
offers Массив Offer Необходимый*

Одно или несколько предложений предоставить этот MenuItem . Описывает, когда и по какой цене будет доступен этот MenuItem . В определенный момент времени должно быть действительно только одно предложение. Можно предоставить несколько предложений, если цена/наличие различаются в зависимости от времени суток. Если элемент питания отличается базовым атрибутом (например, размером пиццы), используйте menuItemOption . По умолчанию для Offer.eligibleQuantity установлено минимальное значение 0 без верхнего предела.

В листинге ниже показано, какие свойства Offer используются в MenuItem .

  • Требуется Offer.sku
  • Предложение.нужная Offer.price
  • Offer.priceCurrency
  • Offer.availabilityStarts необязательно
  • Offer.availabilityEnds необязательно
  • Offer.availableDay необязательно
  • Offer.validFrom необязательно
  • Offer.validThrough необязательно
  • Offer.eligibleQuantity необязательно
  • Offer.inventoryLevel необязательно
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 Необходимый

Одно или несколько предложений предоставить этот MenuItemOption . Описывает, когда и по какой цене будет доступен этот пункт меню. В определенный момент времени должно быть действительно только одно предложение. У вас может быть много действительных предложений, если цена/наличие могут меняться в зависимости от времени суток. Не используйте Offer.eligibleQuantity . MenuItemOption является взаимоисключающим, поэтому Offer.eligibleQuantity игнорируется, если он указан.

В листинге ниже показано, какие свойства Offer используются в MenuItemOption .

  • Требуется Offer.sku
  • Предложение.нужная Offer.price
  • Offer.priceCurrency
  • Offer.availabilityStarts необязательно
  • Offer.availabilityEnds необязательно
  • Offer.availableDay необязательно
  • Offer.validFrom необязательно
  • Offer.validThrough необязательно
  • Offer.eligibleQuantity необязательно
  • Offer.inventoryLevel необязательно
menuAddOn Array of AddOnMenuSection Необязательный Раздел меню разрешенных элементов, которые можно добавить в качестве дополнения. Используйте это только в том случае, если надстройки предназначены для определенного пункта меню. В противном случае добавьте надстройки, используя свойство 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 Необязательный

Используйте Offer.availabilityStarts и Offer.availabilityEnds , чтобы указать период времени, в течение которого обслуживается этот MenuSection . Не используйте Offer.eligibleQuantity .

В следующем списке показано, какие свойства Offer используются в MenuSection :

  • Offer.availabilityStarts необязательно
  • Offer.availabilityEnds необязательно
  • Offer.availableDay необязательно
  • Offer.validFrom необязательно
  • Offer.validThrough необязательно
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 Текст Условный

Уникальный идентификатор предложения. Это может быть любое текстовое значение, уникальное в пределах Offer . Значения sku упоминаются в Checkout и Submit как offerId в lineitem .

Это свойство используется только в следующих типах предложений:

  • AddOnMenuItem.Offer
  • MenuItem.Offer
  • MenuOption.Offer
price Текст Условный

Цена предлагаемого товара. Например, «6,00» без символа валюты.

Это свойство требуется только в следующих типах предложений:

  • AddOnMenuItem.Offer
  • MenuItem.Offer
  • MenuOption.Offer

Он не используется в следующих типах предложений:

  • AddOnMenuSection.Offer
  • MenuSection.Offer
  • Service.Offer
priceCurrency Текст Условный

Валюта (в трехбуквенном формате ISO 4217) цены или компонента цены, если она прикреплена к PriceSpecification и ее подтипам.

Это свойство требуется только в следующих типах предложений:

  • AddOnMenuItem.Offer
  • MenuItem.Offer
  • MenuOption.Offer

Он не используется в следующих типах предложений:

  • AddOnMenuSection.Offer
  • MenuSection.Offer
  • Service.Offer
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 Необязательный

Дни недели, в которые товар доступен. Допустимые значения:

  • "Понедельник"
  • "Вторник"
  • "Среда"
  • "Четверг"
  • "Пятница"
  • "Суббота"
  • "Воскресенье"

Если у вас разная доступность для разных дней недели, используйте более одного объекта Offer , как показано в примерах ниже .

validFrom DateTime Необязательный

Дата и время (включая часовой пояс), на которые действительна указанная цена. Например, паста стоит 8 долларов во время обеда и 10 долларов за ужин. Дополнительные сведения см. в разделе Форматы DateTime и времени .

Это свойство можно использовать в следующих типах предложений:

  • AddOnMenuItem.Offer
  • MenuItem.Offer
  • MenuOption.Offer
  • AddOnMenuSection.Offer
  • MenuSection.Offer

Это свойство не используется в следующих типах предложений:

  • Service.Offer
validThrough DateTime Необязательный

Дата и время (включая часовой пояс), после которого указанная цена перестанет действовать. Например, паста стоит 8 долларов во время обеда и 10 долларов за ужин. Время для validThrough является исключительным: например, если для этого времени установлено значение 18:00, время действительно до 17:59:59. Дополнительные сведения см. в разделе Форматы DateTime и времени .

Это свойство можно использовать в следующих типах предложений:

  • AddOnMenuItem.Offer
  • MenuItem.Offer
  • MenuOption.Offer
  • AddOnMenuSection.Offer
  • MenuSection.Offer

Это свойство не используется в следующих типах предложений.

  • Service.Offer
eligibleQuantity Количественное значение Необязательный

Количество заказа, для которого разрешен этот товар. Например, ресторан может потребовать, чтобы для доставки было заказано не менее 10 пицц.

Это значение является необязательным. По умолчанию максимального лимита нет, но ресторан может его указать. Минимальные ограничения применяются только тогда, когда пользователь выбирает элемент.

Это свойство можно использовать в следующих типах предложений:

  • AddOnMenuItem.Offer
  • MenuItem.Offer
  • MenuOption.Offer

Это свойство не используется в следующих типах предложений.

  • AddOnMenuSection.Offer
  • MenuSection.Offer
  • Service.Offer
aggregateRating Совокупный рейтинг Необязательный

Общий рейтинг, основанный на совокупности обзоров или оценок элемента.

Это свойство можно использовать в следующих типах предложений:

  • AddOnMenuItem.Offer
  • MenuItem.Offer

Это свойство не используется в следующих типах.

  • AddOnMenuSection.Offer
  • MenuItemOption.Offer
  • MenuSection.Offer
  • Service.Offer
inventoryLevel Количественное значение Необязательный

Текущий приблизительный уровень запасов для предмета или предметов.

Это свойство можно использовать в следующих типах предложений:

  • AddOnMenuItem.Offer
  • MenuItem.Offer
  • MenuItemOption.Offer

Это свойство не используется в следующих типах предложений:

  • AddOnMenuSection.Offer
  • MenuSection.Offer
  • Service.Offer
priceSpecification Массив DeliveryChargeSpecification или массив PaymentChargeSpecification Необязательный

При использовании в Service.Offer указывает подробную информацию о цене доставки. Если применимо несколько объектов DeliveryChargeSpecification , применяется наиболее конкретный из них. Используйте взаимоисключающие объекты DeliveryChargeSpecification , чтобы избежать двусмысленности.

Это свойство можно использовать в следующих типах предложений:

  • Service.Offer

Это свойство не используется в следующих типах предложений:

  • AddOnMenuItem.Offer
  • AddOnMenuSection.Offer
  • MenuItem.Offer
  • MenuOption.Offer
  • MenuSection.Offer
offeredBy Массив идентификаторов Restaurant Необязательный

Обозначает рестораны, в которых действует данное Offer .

Если не указано иное, данное Offer будет предлагаться всем ресторанам.

Это свойство можно использовать в следующих типах предложений:

  • AddOnMenuItem.Offer
  • AddOnMenuSection.Offer
  • MenuItem.Offer
  • MenuItemOption.Offer
  • MenuSection.Offer

Это свойство не используется в следующих типах предложений:

  • Service.Offer
applicableFulfillmentMethod Массив текста Необязательный

Представляет тип услуги, с помощью которой выполняется данное Offer . Возможные значения: «ДОСТАВКА» или «ВЫНОС».

Если не указано иное, данная Offer будет выполняться как на доставку, так и на вынос.

Это свойство можно использовать в следующих типах предложений:

  • AddOnMenuItem.Offer
  • AddOnMenuSection.Offer
  • MenuItem.Offer
  • MenuItemOption.Offer
  • MenuSection.Offer

Это свойство не используется в следующих типах предложений:

  • Service.Offer
@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"
]

Если вы не указываете никаких дней недели, то OpeningHoursSpecification применяется ко всем дням.

opens Time Необязательный

При использовании в спецификации Restaurant эта недвижимость указывает время открытия ресторана в данный день (ы) недели. Например, 6:30 дается как «T06: 30: 00».

При использовании в спецификации Service это указывает на конкретное время дня, начиная с того, что могут быть размещены заказы пользователей. Он определяет время открытия, когда онлайн -система встает, и позволяет пользователям размещать заказы. В течение этих часов открытия/закрытия онлайн -системы вы можете использовать deliveryHours для указания часов открытия/закрытия, когда пользователи могут заказать специальные типы доставки.

Время должно быть указано в местное время для обслуживания. Не включайте часовой пояс в opens значение. Если указан часовой пояс, Google игнорирует эту информацию.

Для получения дополнительной информации см. DateTime и форматы времени .

closes Time Необязательный

При использовании в спецификации Service это свойство указывает на конкретное время дня, за исключением того, что заказы пользователей не могут быть размещены. Он определяет время закрытия, когда онлайн -система встает, и позволяет пользователям размещать заказы. В течение этих часов открытия/закрытия онлайн -системы вы можете использовать deliveryHours для указания часов открытия/закрытия, когда пользователи могут заказать специальные типы доставки.

Время должно быть указано в местное время для обслуживания. Не включайте часовой пояс в closes значение. Если указан часовой пояс, Google игнорирует эту информацию.

Для получения дополнительной информации см. DateTime и форматы времени .

validFrom DateTime Необязательный

При использовании в спецификации Restaurant эта собственность указывает дату, когда часы работы, указанные в opens и closes ресторана, действительны.

Например, если применяемые часы применимы ко всему 2017 году, вы установили настройку validFrom от «2017-01-01t00: 00: 00-07: 00» и validThrough to "2017-12-31t23: 59: 59-07 : 00 ".

При использовании в спецификации Service validFrom указывает на начальную дату, с которой могут быть размещены заказы пользователей.

Если это свойство не указано в вашем канале, Google предполагает, что ресторан или услуга доступны ежедневно.

В дополнение к дате требуются части времени и часового пояса значения.

Для часового пояса используйте часовой пояс ресторана или обслуживания.

Для получения дополнительной информации см. DateTime и форматы времени .

validThrough DateTime Необязательный

При использовании в Restaurant , дата, после которой часы работы, указанные в opens и closes , не являются действительными.

Например, если применяемые часы применимы ко всему 2017 году, вы установили настройку validFrom от «2017-01-01t00: 00: 00-07: 00» и validThrough to "2017-12-31t23: 59: 59-07 : 00 ".

При использовании в спецификации Service validThrough указывает дату окончания, после которой заказы пользователей больше не могут быть размещены.

Если это свойство не указано в вашем канале, Google предполагает, что ресторан или услуга доступны ежедневно.

В дополнение к дате требуются части времени и часового пояса DateTime.

Для часового пояса используйте часовой пояс ресторана или обслуживания.

Время для validThrough является эксклюзивным. Например, если это время установлено в 6 часов вечера, время до 5:59:59.

Для получения дополнительной информации см. DateTime и форматы времени .

deliveryHours Множество ServiceDeliveryHoursSpecification или множества AdvanceServiceDeliveryHoursSpecification Условный

Спецификация доставки или времени на вынос.

Этот параметр требуется, если ресторан не закрыт (это означает, что opens и closes установлены и равны друг другу.

  • ServiceDeliveryHoursSpecification : в часы открытия/закрытия вы можете установить «открывается» и «закрывает» часы, когда пользователи могут разместить заказы ASAP.
  • 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 Текст Необходимый

Имя или тип опции.

Ниже приведены действительные имена при использовании в MenuItem :

  • «Размер»: размер MenuItem . Например, маленький, средний или большой.
  • «Вариант»: любой вариант, кроме размера (как блюдо, которое поставляется либо салатом, либо сэндвичем). Если вы не можете различить «размер» и «опция», то используйте опцию «.

Допустимые имена при использовании в AddOnMenuItem :

  • "Applyble_item_option": опция для аддона, которая применима только при использовании с MenuItem с соответствующим «размер/опция».
  • «Pizza_side»: специфичная для пиццы, это дополнение действительнее только для порции/целой пиццы (например, начинки грибов с левой стороны, правая или целая пицца).
  • «Размер»: вариант обозначения размера дополнения (например, большой картофель фри в качестве дополнения для комбинации еды).
  • «Вариант»: любой вариант, кроме размера. Если вы не можете различить «размер» и «опция», то используйте опцию «.
value Текст Необходимый

Значение для опции. Значения могут быть любой строкой и отображаются как есть. Ниже приведены допустимые значения:

  • «Pizza_side»: соответствующим значением должно быть «pizza_side_left», «pizza_side_right» или «pizza_side_whole» для пиццы.
  • «Applyble_item_option»: это значение должно присутствовать в одном из соответствующих вариантов/размера «опция/размер» для MenuiteMoptions родительского MenuItem .

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 "additionalProperty": [{"name": "imprint", "value": "first row\nsecondrow\n"},]

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 Текст Необходимый

Тип подачи.

  • Service : используйте этот тип для всех активных сервисных каналов.
  • DisabledService : используйте этот тип только тогда, когда вы должны отключить сервисную сущность из-за неожиданного события, и вы не знаете, когда служба будет восстановлен.
@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 Необязательный

Времена, которые переопределяют более общее OpeningHoursSpecification , или время выполнения. Обычно вы используете это поле для определения праздников и других типов временных закрытий или изменений в часы.

Определите специальный диапазон дат, используя validFrom и validThrough свойства. Время и часовой пояс требуются при указании этих свойств.

offers Множество Offer Условный

Подробная информация о предложении доставки для указанного ресторана. Это поле не является обязательным по умолчанию, но требуется, если serviceType является «доставкой».

Собственность Offer.priceSpecification является необязательным в эксплуатации. Никакие другие свойства Offer здесь не используются.

hasOfferCatalog [ Menu , OfferCatalog] Необходимый

Определяет меню для этой услуги. У вас может быть другое меню для каждой из ваших услуг (например, на вынос, доставка и питание).

Вы должны указать как Menu , так и OfferCatalog для типа. Например:

"hasOfferCatalog": {
"@type": ["Menu", "OfferCatalog"],
"@id": "https://www.provider.com/restaurant/menu/1"
}
additionalProperty Массив {name, value} Необязательный

Дополнительная информация о конфигурации службы. Ожидается, что элементы будут объектом с name ключа, соответствующим необязательному имени поля. Ключевое value -это контекстно-релевантное значение для поля.

См. Справочник ServingConfig для получения дополнительной информации о конкретных именах и значениях.

"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». Если это свойство не установлено, то считается, что оно является действительным с каждым днем.

Время для validThrough является эксклюзивным. Например, если это время установлено в 6 часов вечера, время до 5:59:59.

Для получения дополнительной информации см. DateTime и форматы времени .

opens Time Необязательный

Время, в которое начинается служба доставки для выполнения заказов ASAP пользователей. Например, "T10: 30: 00".

Время должно быть указано в местное время для обслуживания. Не включайте часовой пояс в opens значение. Если указан часовой пояс, Google игнорирует эту информацию.

Для получения дополнительной информации см. DateTime и форматы времени .

closes Time Необязательный

Время, когда служба доставки для заказов ASAP пользователям больше не доступно. Например, "T23: 59: 59".

Время для closes является эксклюзивным. Поэтому, если вы устанавливаете OpenS/Closed для этого ServiceDeliveryHoursSpecification на 10 часов утра и 16:00, то последний заказ - 15:59:59.

Время должно быть указано в местное время для обслуживания. Не включайте часовой пояс в closes значение. Если указан часовой пояс, Google игнорирует эту информацию.

Для получения дополнительной информации см. DateTime и форматы времени .

dayOfWeek Множество DayOfWeek Необязательный

Дни недели, когда эта служба доступна для заказов пользователей. Ниже приведены допустимые значения:

  • "Понедельник"
  • "Вторник"
  • "Среда"
  • "Четверг"
  • "Пятница"
  • "Суббота"
  • "Воскресенье"

Если вы не указываете никаких дней недели, то ServiceDeliveryHoursSpecification применяется ко всем дням.

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 Необходимый

Последний измененный DateTime of Feed Data, в формате ISO 8601.

Дата и время в формате ISO_OFFSET_DATE_TIME, на котором были изменены элементы в этом канале. В отсутствие этого поля предполагается, что время обновления - это время, когда push -сообщение принимается (или ползание) на серверах Google.

Мы настоятельно рекомендуем вам реализовать это, если вы используете как толчок, так и ползти вместе. Эта временная метка должна быть указана с часовым поясом и гранулярностью миллисекундов; Например, "2016-12-28t06: 30: 00: 123-07: 00".

В ваших партийных каналах оборудование объекта определяется через dateModified поле в конверте канала.

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-адрес Необязательный

Изображение элемента меню с дополнением, которое соответствует следующим руководящим принципам:

  • Соотношение сторон 3: 2
  • >
  • Минимальное разрешение 600x400 пикселей, 72 dpi
  • >
  • Рекомендуемое разрешение 1400x960 пикселей, 72 DPI
offers Множество Offer Необходимый*

Одно или несколько предложений о предоставлении этого дополнения.

Описывает, когда и по какой цене эта AddonMenuitem доступна. Только одно предложение должно быть действительным в определенное время. Вы можете иметь много действительных предложений, если цена или доступность могут измениться в зависимости от времени суток. Когда дополнение или элемент отличается через базовый атрибут или изменение самого элемента (например, маленький, средний и большой картофель фри в качестве дополнения), используйте свойство hasMenuItemOption .

По умолчанию для Offer.eligibleQuantity составляет минимум 0, максимум 1.

Следующие свойства Offer используются в AddonMenuitem:

  • Offer.sku требуется
  • Offer.price Требуется
  • Offer.priceCurrency Требуется режима
  • Offer.availabilityStarts необязательно
  • Offer.availabilityEnds необязательно
  • Offer.availableDay . АВАЛИКАЛЬНЫЙ ДОПОЛНИТЕЛЬНЫЙ
  • Offer.validFrom Необязательно
  • Offer.validThrough необязательно
  • Offer.eligibleQuantity необязательно
  • Offer.inventoryLevel Необязательно
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 Необязательный

Используйте Offer .availabilityStarts и Offer .availabilityEnds , чтобы указать период времени, в течение которого это дополнение доступно.

В приведенном ниже списке показаны, которые Offer свойства, используются в AddonMenusection.

  • Offer.availabilityStarts необязательно
  • Offer.availabilityEnds необязательно
  • Offer.availableDay . АВАЛИКАЛЬНЫЙ ДОПОЛНИТЕЛЬНЫЙ
  • Offer.validFrom Необязательно
  • Offer.validThrough необязательно
hasMenuSection Массив AddOnMenuSection Необходимый* Логическая подгруппа административного меню (например, ужин, закуски или рыбные блюда).
defaultOption Массив AddOnMenuItem Необязательный

Дополнительные элементы меню, которые будут предварительно выбраны по умолчанию для пользователей в AddOnMenuSection . Пользователи могут изменить окончательный выбор. Если не defaultOption не указано, не предварительно избран AddOnMenuItem .

Объекты AddOnMenuItem должны существовать в hasMenuItem AddOnMenuSection .

Количество defaultOption не может превышать максимальную eligibleQuantity AddOnMenuSection .

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".

Если это свойство не установлено, то считается, что оно является действительным с каждым днем. validFrom и validThrough свойства должны отсутствовать или присутствовать вместе.

Если этот тип указан в качестве specialOpeningHoursSpecification на уровне Service , это validFrom свойство в AdvanceServiceDeliveryHoursSpecification требуется.

Для получения дополнительной информации см. DateTime и форматы времени .

validThrough DateTime Необязательный

Дата окончания, после которой предварительные заказы пользователей больше не могут быть выполнены. Например, "2018-12-01t00: 00: 00-07: 00".

Если это свойство не установлено, то считается, что оно является действительным с каждым днем. validFrom и validThrough свойства должны отсутствовать или присутствовать вместе.

Если этот тип указан в качестве specialOpeningHoursSpecification на уровне Service , требуется свойство validThrough в AdvanceServiceDeliveryHoursSpecification .

Время для validThrough является эксклюзивным. Например, если это время установлено в 6 часов вечера, время до 5:59:59.

Для получения дополнительной информации см. DateTime и форматы времени .

opens Time Необязательный

Применяется к доставке или слотам на вынос.

Конкретное время дня, начиная с того, что могут быть выполнены предварительные заказы пользователей. Например, 6:30 дается как «T06: 30: 00».

Время должно быть указано в местное время для обслуживания. Не включайте часовой пояс в opens значение. Если указан часовой пояс, Google игнорирует эту информацию.

Для получения дополнительной информации см. DateTime и форматы времени .

closes Time Необязательный

Применяется к доставке или слотам на вынос.

Конкретное время дня, после чего предварительные заказы пользователей не могут быть выполнены. Например, 9:00 вечера дается как «T21: 00: 00». closes> является эксклюзивным, поэтому установление его до 9:00 вечера для serviceTimeInterval в 15 минут означает, что последний доступный временной интервал начинается в 8:45 вечера.

Время должно быть указано в местное время для обслуживания. Не включайте часовой пояс в closes значение. Если указан часовой пояс, Google игнорирует эту информацию.

Для получения дополнительной информации см. DateTime и форматы времени .

dayOfWeek Множество DayOfWeek Необязательный

Дни недели, когда доступны часы предварительной доставки. Допустимые значения:

  • "Понедельник"
  • "Вторник"
  • "Среда"
  • "Четверг"
  • "Пятница"
  • "Суббота"
  • "Воскресенье"

Если вы не указываете никаких дней недели, то AdvanceServiceDeliveryHoursSpecification применяется ко всем дням.

serviceTimeInterval Duration Необходимый

Интервал между двумя последовательными временами обслуживания.

Например: если opens и closes в 8 часов утра и 8 часов вечера, а serviceTimeInterval составляет 15 минут, то пользователь может выбрать время выполнения 8 утра, 8:15, 8:30, 8:45 и так далее. 8 ВЕЧЕРА.

Duration должна быть указана как продолжительность ISO 8601. For example: "P15M" means 15 minute intervals.

advanceBookingRequirement QuantitativeValue Необходимый

Number of minutes from the ordering time when the advance order can be fulfilled.

The QuantitativeValue 's min and max values must be set to the number of minutes and the unitCode to "MIN".

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 min value is 60 and the max value is 2880.

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 .

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:

  • Aspect ratio 3:2
  • Minimum resolution 600x400 pixels, 72 dpi
  • Recommended resolution 1400x960 pixels 72 dpi
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 MenuItem . Describes when and at what price this MenuItem is available. Only one offer should be valid at a particular time. Multiple offers can be provided if there is variation on price/availability based on time of day. If the food item differs through a base attribute, (for example, size for pizza), use menuItemOption . The default for Offer.eligibleQuantity is minimum of 0 with no upper limit.

The listing below shows which Offer properties are used in MenuItem .

  • Offer.sku required
  • Offer.price required
  • Offer.priceCurrency required
  • Offer.availabilityStarts optional
  • Offer.availabilityEnds optional
  • Offer.availableDay optional
  • Offer.validFrom optional
  • Offer.validThrough optional
  • Offer.eligibleQuantity optional
  • Offer.inventoryLevel optional
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 .

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 MenuItemOption . Describes when and at what price this menu item option is available. Only one offer should be valid at a particular time. You can have many valid offers if the price/availability can change based on time of day. Do not use Offer.eligibleQuantity . MenuItemOption is mutually exclusive, so Offer.eligibleQuantity is ignored if provided.

The listing below shows which Offer properties are used in MenuItemOption .

  • Offer.sku required
  • Offer.price required
  • Offer.priceCurrency required
  • Offer.availabilityStarts optional
  • Offer.availabilityEnds optional
  • Offer.availableDay optional
  • Offer.validFrom optional
  • Offer.validThrough optional
  • Offer.eligibleQuantity optional
  • Offer.inventoryLevel optional
menuAddOn Array of AddOnMenuSection Необязательный 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 --
          ]
        }
      ]
    }
  ]
}

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 Offer.availabilityStarts and Offer.availabilityEnds to indicate the time period during which this MenuSection is served. Do not use Offer.eligibleQuantity .

The following list shows which Offer properties are used in MenuSection :

  • Offer.availabilityStarts optional
  • Offer.availabilityEnds optional
  • Offer.availableDay optional
  • Offer.validFrom optional
  • Offer.validThrough optional
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 Offer . sku values are referenced in Checkout and Submit as the offerId in lineitem .

This property is only used in the following offer types:

  • AddOnMenuItem.Offer
  • MenuItem.Offer
  • MenuOption.Offer
price Текст Условный

Price of the offered item. For example, "6.00" without the currency symbol.

This property is only required in the following offer types:

  • AddOnMenuItem.Offer
  • MenuItem.Offer
  • MenuOption.Offer

It is not used in the following offer types:

  • AddOnMenuSection.Offer
  • MenuSection.Offer
  • Service.Offer
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:

  • AddOnMenuItem.Offer
  • MenuItem.Offer
  • MenuOption.Offer

It is not used in the following offer types:

  • AddOnMenuSection.Offer
  • MenuSection.Offer
  • Service.Offer
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 Offer object, as shown in the examples below .

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:

  • AddOnMenuItem.Offer
  • MenuItem.Offer
  • MenuOption.Offer
  • AddOnMenuSection.Offer
  • MenuSection.Offer

This property is not used in the following offer types:

  • Service.Offer
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 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 .

This property can be used in the following offer types:

  • AddOnMenuItem.Offer
  • MenuItem.Offer
  • MenuOption.Offer
  • AddOnMenuSection.Offer
  • MenuSection.Offer

This property is not used in the following offer types.

  • Service.Offer
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:

  • AddOnMenuItem.Offer
  • MenuItem.Offer
  • MenuOption.Offer

This property is not used in the following offer types.

  • AddOnMenuSection.Offer
  • MenuSection.Offer
  • Service.Offer
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:

  • AddOnMenuItem.Offer
  • MenuItem.Offer

This property is not used in the following types.

  • AddOnMenuSection.Offer
  • MenuItemOption.Offer
  • MenuSection.Offer
  • Service.Offer
inventoryLevel QuantitativeValue Необязательный

The current approximate inventory level for the item or items.

This property can be used in the following offer types:

  • AddOnMenuItem.Offer
  • MenuItem.Offer
  • MenuItemOption.Offer

This property is not used in the following offer types:

  • AddOnMenuSection.Offer
  • MenuSection.Offer
  • Service.Offer
priceSpecification Array of DeliveryChargeSpecification or array of PaymentChargeSpecification Необязательный

When used in Service.Offer , it indicates the details on the price of the delivery. If multiple DeliveryChargeSpecification objects are applicable, the most specific one is applied. Use mutually exclusive DeliveryChargeSpecification objects to avoid any ambiguity.

This property can be used in the following offer types:

  • Service.Offer

This property is not used in the following offer types:

  • AddOnMenuItem.Offer
  • AddOnMenuSection.Offer
  • MenuItem.Offer
  • MenuOption.Offer
  • MenuSection.Offer
offeredBy Array of Restaurant ids Необязательный

Represents the restaurants this Offer is offered at.

If not specified, this Offer will be offered to all restaurants.

This property can be used in the following offer types:

  • AddOnMenuItem.Offer
  • AddOnMenuSection.Offer
  • MenuItem.Offer
  • MenuItemOption.Offer
  • MenuSection.Offer

This property is not used in the following offer types:

  • Service.Offer
applicableFulfillmentMethod Array of Text Необязательный

Represents the service type this Offer is fulfilled by. Possible values are "DELIVERY" or "TAKEOUT".

If not specified, this Offer will be fulfilled by both delivery and takeout.

This property can be used in the following offer types:

  • AddOnMenuItem.Offer
  • AddOnMenuSection.Offer
  • MenuItem.Offer
  • MenuItemOption.Offer
  • MenuSection.Offer

This property is not used in the following offer types:

  • Service.Offer
@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 and closes properties are optional but strongly recommended to denote when ordering is available. The best practice for defining available hours is to include a deliveryHours array that contains a ServiceDeliveryHoursSpecification with opens and closes properties. You can then include an AdvanceServiceDeliveryHoursSpecification object in deliveryHours with its own opens and closes properties, if you want to offer a more limited window for advance ordering.
  • If opens and closes 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 or closes value. If a time zone is specified, Google ignores this information.
  • If opens and closes are the same, then we assume that the restaurant is open for 0 minutes.
  • If opens is greater than closes , 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 OpeningHoursSpecification applies to all days.

opens Time Необязательный

When used in a Restaurant specification, this property indicates the opening time of the restaurant on the given day(s) of the week. For example, 6:30 AM is given as "T06:30:00".

When used in a Service specification, it indicates the specific time of day starting from which users' orders can be placed. It specifies the opening time for when the online system is up and allows users to place orders. Within those online system opening/closing hours, you can use deliveryHours to specify opening/closing hours when users can order special types of deliveries.

The time must be specified in the local time for the service. Do not include a time zone in an opens value. If a time zone is specified, Google ignores this information.

For more information, see DateTime and Time formats .

closes Time Необязательный

When used in a Service specification, this property indicates the specific time of day beyond which users' orders cannot be placed. It specifies the closing time for when the online system is up and allows users to place orders. Within those online system opening/closing hours, you can use deliveryHours to specify opening/closing hours when users can order special types of deliveries.

The time must be specified in the local time for the service. Do not include a time zone in a closes value. If a time zone is specified, Google ignores this information.

For more information, see DateTime and Time formats .

validFrom DateTime Необязательный

When used in a Restaurant specification, this property indicates the date when the opening hours specified by opens and closes for the restaurant are valid.

For example, if the hours given apply to all of the year 2017, you set set validFrom to "2017-01-01T00:00:00-07:00" and validThrough to "2017-12-31T23:59:59-07:00".

When used in a Service specification, validFrom indicates the beginning date starting from which users' orders can be placed.

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 Restaurant , the date after which the opening hours specified by opens and closes are not valid.

For example, if the hours given apply to all of the year 2017, you set set validFrom to "2017-01-01T00:00:00-07:00" and validThrough to "2017-12-31T23:59:59-07:00".

When used in a Service specification, validThrough indicates the ending date beyond which users' orders can no longer be placed.

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 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 .

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 opens and closes are set and equal to each other.

  • ServiceDeliveryHoursSpecification : Within the opening/closing hours, you can set "opens" and "closes" hours when users can place ASAP orders.
  • AdvanceServiceDeliveryHoursSpecification : Within the opening/closing hours, you can set "opens" and "closes" hours when users can place advance orders.

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

  • "SIZE": Size of the MenuItem . For example, small, medium, or large.
  • "OPTION": Any variation other than size (like a dish that comes either as a salad or a sandwich). If you can't distinguish between "SIZE" and "OPTION", then use "OPTION".

Valid names when used in AddOnMenuItem :

  • "APPLICABLE_ITEM_OPTION": An option for the addOn that is only applicable when used with the MenuItem with the respective "SIZE/OPTION".
  • "PIZZA_SIDE": Specific to pizzas, this add-on is only valid for a portion/whole pizza (like mushroom toppings on the left side, right side, or whole pizza).
  • "SIZE": An option to designate the size of the add-on (like large fries as an add-on for a meal combo).
  • "OPTION": Any variation other than size. If you can't distinguish between "SIZE" and "OPTION", then use "OPTION".
value Текст Необходимый

Value for the option. The values can be any string and are displayed as is. The following are valid values:

  • "PIZZA_SIDE": The corresponding value should be "PIZZA_SIDE_LEFT", "PIZZA_SIDE_RIGHT", or "PIZZA_SIDE_WHOLE" for a pizza.
  • "APPLICABLE_ITEM_OPTION": This value should be present in one of the corresponding "OPTION/SIZE" choices for the parent MenuItem 's menuItemOptions.

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 "additionalProperty": [{"name": "imprint", "value": "first row\nsecondrow\n"},]

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.

  • Service : Use this type for all active Service feeds.
  • DisabledService : Only use this type when you must disable a Service entity due to an unexpected event, and you don't know when the service will be re-established.
@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 OpeningHoursSpecification or the fulfillment times. You typically use this field to define holidays and other types of temporary closures or changes in hours.

Define the special date range using the validFrom and validThrough properties. The time and time zone are required when specifying these properties.

offers Array of Offer Условный

Details about the delivery offering for a specified restaurant. This field is optional by default, but required if serviceType is "DELIVERY".

The Offer.priceSpecification property is optional in Service. No other Offer properties are used here.

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 Menu and OfferCatalog for the type. Например:

"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 name corresponding to the optional field name. The key value is a contextually-relevant value for the field.

See the ServingConfig reference for more information on the specific names and values.

"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 and closes properties are optional for ServiceDeliveryHoursSpecification , 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 or closes value. If a time zone is specified, Google ignores the time zone information.
  • If opens and closes are not explicitly specified, we assume that ASAP ordering is available every day at all times.
  • If opens and closes are the same, then we assume that ASAP ordering is unavailable.
  • If opens is greater than closes , 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 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 .

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 opens value. If a time zone is specified, Google ignores this information.

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 closes is exclusive. Therefore, if you set opens/closes for this ServiceDeliveryHoursSpecification to 10 AM and 4 PM, then that last order is 3:59:59 PM.

The time must be specified in the local time for the service. Do not include a time zone in a closes value. If a time zone is specified, Google ignores this information.

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 ServiceDeliveryHoursSpecification applies to all days.

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