схема инвентаризации 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 PRICESECECITICATION опущено.

  • Пример 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"
}

PropertyValue

Пара значений свойства, используемая для описания параметров в 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, $$-Умеренный, $$$-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