Esquema de inventario v1

Los feeds de catálogo de alimentos se basan en entidades de DataFeed de Schema.org. Un feed de catálogo de alimentos consta de detalles de la configuración regional del restaurante, como la dirección, el menú y la ubicación, además de los detalles del servicio de un restaurante, como los cargos y las áreas de entrega, entre otros artículos, como se especifica a continuación.

Una DataFeed contiene una colección de elementos, cada uno de los cuales representa un solo elemento expresado en el vocabulario de schema.org. Puedes usar el tipo DataFeed para publicar todos tus datos estructurados en formato JSON-LD.

Si deseas obtener información para usar esta especificación a fin de compilar tus feeds, consulta la descripción general de la integración de inventario.

Formatos de fecha, hora y hora

DateTime se basa en el tipo de schema.org y, a menos que se indique lo contrario, debe seguir el formato ISO 8601 y, además, incluir la fecha, la hora y la zona horaria. Usa la siguiente sintaxis para DateTime:

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

Por ejemplo:

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 es la hora local de la zona horaria de una ubicación de servicio o un restaurante determinados, también se basa en el tipo de schema.org y debe seguir el formato ISO 8601. La hora utiliza la siguiente sintaxis:

// Time format:
THH:MM:SS

Por ejemplo:

T08:08:00 // 8:08 AM

Ten en cuenta lo siguiente cada vez que especifiques un DateTime o Time:

  • El prefijo "T" antes de la hora forma parte del formato y es obligatorio.
  • Se debe especificar la zona horaria de DATETIME. No es necesario para TIME.
  • La hora debe especificarse en la hora local del restaurante o servicio.

Sobre

El código de inicio para cualquier feed de catálogo de alimentos debe contener una sección de “sobre”.

El "sobre" es la estructura de nivel superior de cada feed y debe ser un objeto DataFeed con las siguientes propiedades:

Propiedad Tipo Necesidad Descripción
@context URL Obligatorio El contexto en uso; por lo general, “http://schema.googleapis.com”.
@type Texto Obligatorio Siempre es "DataFeed".
dateModified DateTime Obligatorio

El DateTime modificado por última vez del feed de datos, en formato ISO 8601.

Es la fecha y la hora en formato ISO_OFFSET_DATE_TIME en las que se modificaron los elementos de este feed. En ausencia de este campo, se supone que la hora de actualización es la hora a la que se recibe el mensaje push (o se realiza el rastreo) en los servidores de Google.

Te recomendamos que implementes esto si usas las operaciones de envío y rastreo juntos. Esta marca de tiempo debe especificarse con una zona horaria y un nivel de detalle en milisegundos; por ejemplo, “2016-12-28T06:30:00:123-07:00”.

En los feeds por lotes, el control de versiones de entidades se determina mediante el campo dateModified en el sobre del feed.

dataFeedElement Array de Menu, Restaurant o Service Obligatorio Uno o más artículos que forman parte de este feed. Consulta la siguiente información para obtener más detalles.

En el siguiente ejemplo, se muestra el sobre:

Ejemplo

{
  "@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

Para usar este tipo, agrega el contexto gs1: "@context": ["http://gs1.org/voc/", "http://schema.org"]

Luego, agrega FoodBeverageTobaccoProduct al tipo de MenuItem o MenuItemOption correspondientes.

En la siguiente tabla, se describen las propiedades del tipo AdditiveDetails:

Propiedad Tipo Necesidad Descripción
@type Texto Obligatorio Siempre es "AdditiveDetails".
additiveName Texto Opcional Es el nombre del aditivo.
additiveLevelOfContainment Texto Opcional Código de contención por gs1:LevelOfContainmentCode. Por ejemplo, http://gs1.org/voc/LevelOfContainmentCode-CONTAINS, http://gs1.org/voc/LevelOfContainmentCode-FREE_FROM o http://gs1.org/voc/LevelOfContainmentCode-MAY_CONTAIN.

En el siguiente ejemplo, se muestra el uso del tipo AdditiveDetails:

{
  "@type": ["MenuItem", "FoodBeverageTobaccoProduct"],
  "@id": "http://www.example.com/bar/menuitem/8",
  "name": "Energy Drink",
  "description": "A 0.25l can of energy drink.",
  "offers": {
    "@type": "Offer",
    "sku": "offer-energy-drink",
    "price": "3.49",
    "priceCurrency": "USD"
  },
  "additive": [
    {
      "@type": "AdditiveDetails",
      "additiveName": "caffeine",
      "additiveLevelOfContainment":
        "http://gs1.org/voc/LevelOfContainmentCode-CONTAINS"
    },
    {
      "@type": "AdditiveDetails",
      "additiveName": "phosphate",
      "additiveLevelOfContainment":
        "http://gs1.org/voc/LevelOfContainmentCode-CONTAINS"
    }
  ]
},

AddOnMenuItem

Un elemento de comida o bebida que aparece en un elemento del menú complementario de una MenuItem.

En la siguiente tabla, se enumeran las propiedades del tipo AddOnMenuItem:

Propiedad Tipo Necesidad Descripción
@type Texto Obligatorio Siempre es "AddOnMenuItem".
@id URL Obligatorio Un identificador único del elemento de menú del complemento.
name Texto Obligatorio Texto que identifica el AddOnMenuItem cuando un usuario navega por el menú.
description Texto Opcional Descripción del elemento de menú del complemento.
image URL Opcional

Imagen del elemento de menú del complemento que coincide con los siguientes lineamientos:

  • Relación de aspecto 3:2
  • >
  • Resolución mínima: 600 x 400 píxeles, 72 dpi
  • >
  • Resolución recomendada de 1,400 x 960 píxeles, 72 dpi
offers Array de Offer Obligatorio*

Una o más ofertas para proporcionar este AddOnMenuItem.

Describe cuándo y a qué precio está disponible este AddOnMenuItem. Solo debe ser válida una oferta por vez. Puedes tener muchas ofertas válidas si el precio o la disponibilidad pueden cambiar según la hora del día. Cuando el complemento o el elemento difiera por un atributo base o una variación del elemento del complemento en sí (como papas fritas pequeñas, medianas y grandes como complemento), usa la propiedad hasMenuItemOption.

El valor predeterminado para Offer.eligibleQuantity es un mínimo de 0 y un máximo de 1.

Las siguientes propiedades de Offer se usan en AddOnMenuItem:

  • Debe implementar la Offer.sku
  • Debe implementar la Offer.price
  • Debe implementar la Offer.priceCurrency
  • Offer.availabilityStarts (opcional)
  • Offer.availabilityEnds (opcional)
  • Offer.availableDay (opcional)
  • Offer.validFrom (opcional)
  • Offer.validThrough (opcional)
  • Offer.eligibleQuantity (opcional)
  • Offer.inventoryLevel (opcional)
hasMenuItemOptions Array de MenuItemOption Obligatorio*

Es un array de atributos básicos que describen una variación del elemento del complemento (como papas fritas pequeñas, medianas y grandes como complemento) de este elemento de menú del complemento. Usa las opciones para especificar las distintas variaciones disponibles para este elemento de menú del complemento. Esto puede suceder en dos situaciones:

  • La variación base se encuentra en el elemento complementario (por ejemplo, papas fritas pequeñas, medianas y grandes).
  • La variación base del elemento de menú con el que está asociado este complemento (como queso extra como complemento para una pizza grande)
suitableForDiet Array de RestrictedDiet Opcional El plato cumple con la restricción alimentaria descrita (como "GlutenFreeDiet" o "VeganDiet"). Esta es una lista enumerada de los valores posibles.
nutrition NutritionInformation Opcional La información nutricional del plato, en particular las calorías.
menuAddOn Array de AddOnMenuSection Opcional AddOnMenuItem puede tener una sección de menú compuesta por elementos permitidos que se pueden agregar como complemento.

En el siguiente ejemplo, se muestra AddOnMenuItem:

Ejemplo 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"
      }
    }
  ]
}

Ejemplo 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

Es una subagrupación de comidas o bebidas como una sección de menú complementaria para cada elemento del menú.

En la siguiente tabla, se enumeran las propiedades del tipo AddOnMenuSection:

Propiedad Tipo Necesidad Descripción
@type Texto Obligatorio Siempre es "AddOnMenuSection".
@id URL Obligatorio Identificador único de la sección del menú
name Texto Obligatorio Es un texto que puede identificar la AddOnMenuSection cuando un usuario navega por el menú.
description Texto Opcional Descripción de la sección del menú.
eligibleQuantity QuantitativeValue Opcional Indica la cantidad de elementos permitidos como complemento para esta sección del menú. Puedes usar este campo para restringir la cantidad de complementos, como la cantidad mínima y máxima de ingredientes que puedes elegir para una pizza.
image URL Opcional Imagen de la sección del menú.
hasMenuItem Array de AddOnMenuItem Obligatorio* Elementos de menú de complementos que se encuentran en una AddOnMenuSection.
offers Array de Offer Opcional

Usa Offer.availabilityStarts y Offer.availabilityEnds para indicar el período durante el cual está disponible esta AddOnMenuSection.

En la siguiente lista, se muestran las propiedades de Offer que se usan en AddOnMenuSection.

  • Offer.availabilityStarts (opcional)
  • Offer.availabilityEnds (opcional)
  • Offer.availableDay (opcional)
  • Offer.validFrom (opcional)
  • Offer.validThrough (opcional)
hasMenuSection Array de AddOnMenuSection Obligatorio* Es una subagrupación lógica del menú de complementos (como Cena, Aperitivos o Platos de pescado).
defaultOption Array de AddOnMenuItem Opcional

Los elementos de menú del complemento se preseleccionarán de forma predeterminada para los usuarios de AddOnMenuSection. Los usuarios pueden cambiar las selecciones finales. Si no se especifica un defaultOption, no se preselecciona ningún AddOnMenuItem.

Los objetos AddOnMenuItem deben existir en el hasMenuItem de AddOnMenuSection.

La cantidad de defaultOption no puede superar el máximo de eligibleQuantity de AddOnMenuSection.

numberOfFreeAddOns Número Opcional Indica la cantidad de complementos que un usuario puede seleccionar sin cargo.

En los siguientes ejemplos, se incluyen objetos AddOnMenuSection:

Ejemplo 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"
      }
    }
  ]
}

Ejemplo 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
  }
}

Ejemplo 3

Un elemento de menú de "Sándwich de queso" tiene una AddOnMenuSection "Opción de queso" con las opciones "Suiza" y "Mozzarella" preseleccionadas como predeterminadas.

{
  "@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"
      }
    }
  ]
}

AdvanceServiceDeliveryHoursSpecification

Representa las horas de entrega a fin de que los usuarios programen pedidos por adelantado para entrega y comida para llevar.

Por lo general, el valor de opens es menor que el de closes. Los siguientes lineamientos se aplican al uso de las propiedades opens y closes:

  • Las propiedades opens y closes son opcionales para AdvanceServiceDeliveryHoursSpecification, pero te recomendamos que las incluyas.
  • La hora se debe especificar en la hora local del servicio. No incluyas una zona horaria en un valor opens o closes. Se ignoran las zonas horarias especificadas.
  • Si opens y closes no se especifican de forma explícita, suponemos que los pedidos anticipados están disponibles en todos los días y en todo momento.
  • Si opens y closes son iguales, se supondrá que el pedido anticipado no está disponible.
  • Si opens es mayor que closes, se interpreta que la hora de cierre es el día siguiente. Por ejemplo, si la hora de atención se establece como el 1 de enero a las 5 p.m. y la hora de cierre es a las 2 a.m., se interpreta que el restaurante cierra el 2 de enero a las 2 a.m.
  • opens y closes hacen referencia al horario futuro. closes es exclusivo. Por ejemplo, si opens es 10 a.m. y closes es 4 p.m. con un serviceTimeInterval de 15 minutos, el primer horario disponible comienza a las 10 a.m. y el último comienza a las 3:45 p.m.

En la siguiente tabla, se describen las propiedades del tipo AdvanceServiceDeliveryHoursSpecification:

Propiedad Tipo Necesidad Descripción
@type Texto Obligatorio Siempre es "AdvanceServiceDeliveryHoursSpecification".
validFrom DateTime Condicionales

Es la fecha de inicio a partir de la cual se pueden entregar los pedidos por adelantado de los usuarios. Por ejemplo, “2017-05-01T00:00:00-07:00”.

Si no se establece esta propiedad, se supone que es válida todos los días. Las propiedades validFrom y validThrough deben estar ausentes o presentes juntas.

Si este tipo se especifica como specialOpeningHoursSpecification en el nivel de Service, esta propiedad validFrom en AdvanceServiceDeliveryHoursSpecification es obligatoria.

Para obtener más información, consulta los formatos de fecha, hora y hora.

validThrough DateTime Opcional

Es la fecha de finalización después de la cual ya no se pueden entregar los pedidos anticipados de los usuarios. Por ejemplo, “2018-12-01T00:00:00-07:00”.

Si no se establece esta propiedad, se supone que es válida todos los días. Las propiedades validFrom y validThrough deben estar ausentes o presentes juntas.

Si este tipo se especifica como specialOpeningHoursSpecification en el nivel de Service, se requiere la propiedad validThrough en AdvanceServiceDeliveryHoursSpecification.

La hora de validThrough es exclusiva. Por ejemplo, si esa hora se establece a las 6 p.m., la hora es válida hasta las 5:59:59 p.m.

Para obtener más información, consulta los formatos de fecha y hora.

opens Time Opcional

Se aplica a los horarios disponibles de entrega o comida para llevar.

Es la hora específica del día a partir de la cual se pueden entregar los pedidos por adelantado de los usuarios. Por ejemplo, 6:30 a.m. se indica como "T06:30:00".

La hora del servicio se debe especificar en la hora local. No incluyas una zona horaria en un valor de opens. Si se especifica una, Google ignorará esta información.

Para obtener más información, consulta los formatos de fecha y hora.

closes Time Opcional

Se aplica a los horarios disponibles de entrega o comida para llevar.

La hora específica del día después de la cual no se pueden entregar los pedidos por adelantado de los usuarios. Por ejemplo, 9:00 p.m. aparece como "T21:00:00". closes> es exclusivo, por lo que configurarlo en 9:00 p.m. para un serviceTimeInterval de 15 minutos significa que el último horario disponible comienza a las 8:45 p.m.

La hora se debe especificar en la hora local del servicio. No incluyas una zona horaria en un valor de closes. Si se especifica una zona horaria, Google ignorará esta información.

Para obtener más información, consulta los formatos de fecha y hora.

dayOfWeek Array de DayOfWeek Opcional

Los días de la semana que están disponibles las horas de entrega anticipadas Los valores válidos son los siguientes:

  • "Lunes"
  • “martes”
  • "miércoles"
  • "Jueves"
  • "Viernes"
  • "Sábado"
  • "Domingo"

Si no especificas ningún día de la semana, AdvanceServiceDeliveryHoursSpecification se aplica a todos los días.

serviceTimeInterval Duration Obligatorio

Intervalo entre dos horas de servicio sucesivas

Por ejemplo, si opens y closes son 8 a.m., 8 p.m. y serviceTimeInterval es 15 minutos, el usuario puede elegir horarios de entrega de 8 a.m., 8:15 a.m., 8:30 a.m., 8:45 a.m., y así sucesivamente, hasta las 8 p.m.

Se debe especificar Duration con una duración en formato ISO 8601. Por ejemplo: "P15M" significa intervalos de 15 minutos.

advanceBookingRequirement QuantitativeValue Obligatorio

Cantidad de minutos desde el momento en que se puede completar el pedido por adelantado.

Los valores min y max de QuantitativeValue deben establecerse en la cantidad de minutos y el unitCode en "MIN".

Por ejemplo, si la entrega de un pedido por adelantado necesita al menos 60 minutos y no se puede completar más de 2 días después, el valor de min es 60 y el valor de max es 2, 880.

En el siguiente ejemplo, se muestra el uso del tipo AdvanceServiceDeliveryHoursSpecification:

Ejemplo 1

{
  "@type": "AdvanceServiceDeliveryHoursSpecification",
  "opens": "T10:00:00",  // Delivery between 10AM and 7:59:59PM
  "closes": "T20:00:00",
  "serviceTimeInterval": "PT15M", // in slots spaced 15 minutes apart (ISO8601)
  "advanceBookingRequirement": {
    "minValue": 60,   // The slot should be at least 60 mins away
    "maxValue": 8640, // but not more than 6 days away
    "unitCode": "MIN"
  }
}

AllergenDetails

Para usar este tipo, agrega el contexto gs1: "@context": ["http://gs1.org/voc/", "http://schema.org"]

Luego, agrega FoodBeverageTobaccoProduct al tipo de MenuItem o MenuItemOption correspondientes.

En la siguiente tabla, se describen las propiedades del tipo AllergenDetails:

Propiedad Tipo Necesidad Descripción
@type Texto Obligatorio Siempre es "AllergenDetails".
allergenType Texto Opcional Tipo de alérgeno por gs1:AllergenTypeCode . Por ejemplo, http://gs1.org/voc/AllergenTypeCode-PEANUTS.
allergenLevelOfContainmentCode Texto Opcional Código de contención por gs1:LevelOfContainmentCode. Por ejemplo, http://gs1.org/voc/LevelOfContainmentCode-CONTAINS, http://gs1.org/voc/LevelOfContainmentCode-FREE_FROM o http://gs1.org/voc/LevelOfContainmentCode-MAY_CONTAIN.

En el siguiente ejemplo, se muestra el uso del tipo 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

En la siguiente tabla, se describen las propiedades del tipo DeliveryChargeSpecification:

Propiedad Tipo Necesidad Descripción
@type Texto Obligatorio Siempre es “DeliveryChargeSpecification”.
@id URL Opcional Identificador de la especificación del cargo de entrega.
price Número Obligatorio Corresponde al costo de entrega como valor numérico únicamente. Usa la propiedad priceCurrency para indicar el tipo de moneda, en lugar de los símbolos de moneda. Por ejemplo, "6.00", sin el símbolo de moneda.
priceCurrency Texto Obligatorio Corresponde al código de moneda ISO 4217 de 3 letras. Por ejemplo, “USD”.
eligibleTransactionVolume PriceSpecification Opcional Es el volumen de transacciones, en una unidad monetaria, para el que es válida esta especificación de cargo por entrega. Por ejemplo, para indicar un volumen de compra mínimo o expresar que el envío está disponible sin cargos adicionales por encima de un volumen de pedidos determinado.
eligibleQuantity QuantitativeValue Opcional El intervalo y la unidad de medida de las cantidades de pedido para las que el cargo de entrega es válido. Esto te permite, por ejemplo, especificar que un cargo por flete determinado solo es válido para una cantidad determinada.
eligibleRegion Array de GeoShape, Place o GeoCircle Opcional El lugar o el GeoShape/GeoCircle de las regiones geopolíticas para las que son válidas las especificaciones de la oferta o el cargo de entrega. Usa esta propiedad solo si los costos de entrega varían según la región.
validFrom DateTime Opcional Es la fecha y la hora (incluida la zona horaria) en las que se aplica un cargo de entrega especificado. Por ejemplo, “2017-05-01T06:30:00-07:00”. Para obtener más información, consulta los formatos de fecha y hora.
validThrough DateTime Opcional Fecha y hora (incluida la zona horaria) después de las cuales el cargo de entrega especificado no es válido. Por ejemplo, “2017-05-01T06:30:00-07:00”. La hora de validThrough es exclusiva: por ejemplo, si esa hora se establece como 6 p.m., la hora es válida hasta las 5:59:59 p.m. Para obtener más información, consulta los formatos de fecha y hora.

En los siguientes ejemplos, se muestran elementos DeliveryChargeSpecification:

Ejemplo 1

"offers": {
  "@type":"Offer",
  "priceSpecification":[
    {
      "@type": "DeliveryChargeSpecification",
      "price": "5.0",
      "priceCurrency": "USD"
    }
  ]
}

Ejemplo 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
    }
  }
]

Ejemplo 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"
    }
  }
]

Además de "@type": ["DeliveryChargeSpecification"], el objeto se puede extender con UnitPriceSpecification:

"@type": ["DeliveryChargeSpecification", "UnitPriceSpecification"]

La extensión proporciona dos propiedades adicionales necesarias para los cargos de entrega calculados en porcentajes.

Propiedad Tipo Necesidad Descripción
referenceQuantity QuantitativeValue Obligatorio Cantidad de referencia a la que se aplica un precio determinado. Por ejemplo, los referenceQuantity del valor 10 con el unitCode de “P1” dan como resultado el 10% del valor del pedido. Por el momento, solo se admite unitCode "P1".
basePrice Número Opcional El cargo base, además del referenceQuantity Por ejemplo, referenceQuantity de 10 con unitCode de "P1" y basePrice de 5 en USD dan como resultado $5 más el 10% del valor del pedido. El valor predeterminado es 0.

Ejemplos de tarifas de entrega

Google te permite especificar por adelantado una variedad de tarifas para los usuarios mediante el objeto Offer.PriceSpecification de la entidad de servicio.

Ten en cuenta que, por el momento, el ordenamiento de extremo a extremo solo admite un DeliveryChargeSpecification. Combina todos los tipos de tarifas en una sola DeliveryChargeSpecification.

Consulta los ejemplos de feeds de servicios para especificar las tarifas de entrega en función del área, la distancia y el valor del pedido.

Si no hay tarifa, se omite Offer.PriceSpecification.

  • Ejemplo 1: La tarifa de entrega es del 5% del subtotal del carrito
  • Ejemplo 2: El costo de entrega es de USD 5
  • Ejemplo 3: La tarifa de entrega es de USD 5 + el 10% del subtotal del carrito
  • Ejemplo 4: La tarifa de entrega es de USD 5 y la tarifa por equipaje es de USD 0.1
  • Ejemplo 5: La tarifa de entrega es del 5% y la tarifa de conveniencia es del 2% del subtotal del carrito
  • Ejemplo 6: La tarifa de entrega es de USD 5 y USD 1 por cada 1 km adicional

Ejemplo 1

priceSpecification [
  {
    "@type": ["DeliveryChargeSpecification", "UnitPriceSpecification"],
    "referenceQuantity": {
      "@type": "QuantitativeValue",
      "value": "5.00", // 5%
      "unitCode": "P1" // P1 == %
    },
    "priceCurrency": "USD"
  }
]

Ejemplo 2

priceSpecification [
  {
    "@type": ["DeliveryChargeSpecification"],
    "priceCurrency": "USD",
    "price": "5.00"
  }
]

Ejemplo 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%
  }
]

Ejemplo 4

priceSpecification [
  {
    "@type": ["DeliveryChargeSpecification"],
    "priceCurrency": "USD",
    "price": "5.10" //$5 + $0.1
  }

Ejemplo 5

priceSpecification [
  {
    "@type": ["DeliveryChargeSpecification", "UnitPriceSpecification"],
    "referenceQuantity": {
      "@type": "QuantitativeValue",
      "value": "7.00", // 5% + 2%
      "unitCode": "P1" // P1 == %
    },
    "priceCurrency": "USD"
  },
]

Ejemplo 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

En la siguiente tabla, se describen las propiedades del tipo GeoCircle:

Propiedad Tipo Necesidad Descripción
@type Texto Obligatorio Siempre es "GeoCircle".
geoMidpoint GeoCoordinates Obligatorio Indica la GeoCoordinates en el centro de un GeoCircle.
geoRadius Número Obligatorio Indica el radio aproximado (en metros) de un GeoCircle.

En el siguiente ejemplo, se muestra un elemento GeoCircle:

Ejemplo

{
  "@type": "GeoCircle",
  "geoMidpoint": {
    "@type": "GeoCoordinates",
    "latitude": "37.7392607",
    "longitude": "-122.3895522"
  },
  "geoRadius": "4505"
}

GeoCoordinates

En la siguiente tabla, se describen las propiedades del tipo GeoCoordinates:

Propiedad Tipo Necesidad Descripción
@type Texto Obligatorio Siempre es "GeoCoordinates".
latitude Número Obligatorio

Es la latitud en grados. Los valores están restringidos al rango de -90 a 90, inclusive. Si el valor especificado es menor que -90, se establece en -90; si el valor es superior a 90, se establece en 90.

La precisión debe ser de al menos 5 decimales.

longitude Número Obligatorio

Es la longitud en grados. Los valores fuera del rango de -180 a 180 se unen para que queden dentro del rango. Por ejemplo, un valor de -190 se convierte en 170. Un valor de 190 se convierte en -170. (esto refleja el hecho de que las longitudes se ajustan a todo el globo terráqueo).

La precisión debe ser de al menos 5 decimales.

En el siguiente ejemplo, se muestra un elemento GeoCoordinates:

Ejemplo

"geo": {
  "@type": "GeoCoordinates",
  "latitude": "35.7392607",
  "longitude": "-120.3895522"
}

GeoShape

En la siguiente tabla, se describen las propiedades del tipo GeoShape:

Propiedad Tipo Necesidad Descripción
@type Texto Obligatorio Siempre es "GeoShape".
polygon Array de texto Obligatorio

Un polígono o multipolígono expresado como una serie de tres o más puntos delimitados por espacios. Se recomienda que el primer y el último punto sean iguales, pero no es obligatorio.

Cada punto de un polígono o multipolígono se define por un punto de latitud seguido de un punto de longitud. También debes especificar los puntos en sentido antihorario.

En la mayoría de los casos, tendrás un solo polígono. Para casos de uso más complejos, consulta la documentación del área de servicio de entrega.

En los siguientes ejemplos, se muestran elementos GeoShape:

Ejemplo 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"
},

Ejemplo 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”]
},

Ejemplo 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"
    }  ],
...
},

En la siguiente tabla, se enumeran las propiedades del tipo Menu:

Propiedad Tipo Necesidad Descripción
@type Texto Obligatorio Siempre es "Menú".
@id URL Obligatorio Identificador único del menú
name Texto Opcional Es un texto que puede identificar el Menu cuando un usuario explora el menú.
description Texto Opcional Es la descripción del menú.
disclaimer MenuDisclaimer Opcional Renuncia de responsabilidad del menú. Por ejemplo, la divulgación de información nutricional y la de alérgenos.
hasMenuSection Objeto único o array de MenuSection Opcional Es una subagrupación lógica del menú (como Cena, Aperitivos o Platos de pescado).
hasMenuItem Objeto único o array de MenuItem Opcional Objetos MenuItem contenidos en un Menu, por lo general, cuando la Menu no está subdividida por MenuSections.
inLanguage Texto Opcional Es el idioma del contenido del menú, como el código de idioma del estándar IETF BCP 47. Por ejemplo, “en-US”.

En los siguientes ejemplos, se muestra el uso del tipo Menu:

Ejemplo 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"
}

Ejemplo 2

En este ejemplo, se muestra hasMenuItem como un array.

{
  "@type": "Menu",
  "@id": "http://www.provider.com/somerestaurant/menu/1",
  "name": "Dine-In Menu",
  "description": "Menu for in-restaurant dining only.",
  "hasMenuSection": [
    {
      "@type": "MenuSection",
      "@id": "http://www.provider.com/somerestaurant/menusection/1",
      "name": "Main",
      "description": "Main course",
      "image": "http://www.provider.com/somerestaurant/main_dishes.jpg",
      "hasMenuItem": [
        {
          "@type": "MenuItem",
          "@id": "http://www.provider.com/somerestaurant/menuitem/1",
          "name": "Pizza",
          "description": "Pizza",
          "offers": {
            "@type": "Offer",
            "sku": "offer-pizza",
            "price": "7.49",
            "priceCurrency": "USD",
            "availabilityStarts": "T08:00:00", // Starts at 8:00AM
            "availabilityEnds": "T18:00:00" // Ends at 6:00PM, last order at 5:59:59PM
          }
        },
        {
          "@type": "MenuItem",
          "@id": "http://www.provider.com/somerestaurant/menuitem/2",
          "name": "Pasta",
          "description": "Pasta",
          "offers": [
            {
              "@type": "Offer",
              "sku": "offer-pasta-lunch",
              "price": "7.49",
              "priceCurrency": "USD",
              "availabilityStarts": "T08:00:00", // Starts at 8:00AM
              "availabilityEnds": "T18:00:00" // Ends at 6:00PM, last order at 5:59:59PM
            },
            {
              "@type": "Offer",
              "sku": "offer-pasta-dinner",
              "price": "10.49",
              "priceCurrency": "USD",
              "availabilityStarts": "T18:00:00", // Starts at 6:00PM
              "availabilityEnds": "T21:00:00" // Ends at 9:00PM, last order at 8:59:59PM
            }
          ]
        }
      ]
    },
    {
      "@type": "MenuSection",
      "@id": "http://www.provider.com/somerestaurant/menusection/2",
      "name": "Soups & Salads",
      "description": "Salads and a few choices of soup",
      "image": "https://www.provider.com/somerestaurant/soup_and_salad_dishes.jpg",
      "hasMenuItem": {
        "@type": "MenuItem",
        "@id": "http://www.provider.com/somerestaurant/menuitem/3",
        "name": "Pea Soup",
        "description": "Creamy pea soup topped with melted cheese and sourdough croutons.",
        "offers": {
          "@type": "Offer",
          "sku": "offer-pea-soup",
          "price": "3.49",
          "priceCurrency": "USD"
        },
        "suitableForDiet": "http://schema.org/GlutenFreeDiet"
      }
    }
  ]
}

Ejemplo 3

En este ejemplo, se muestra hasMenuSection como un array.

{
  "@type": "Menu",
  "@id": "http://www.provider.com/somerestaurant/menu/1",
  "name": "Dine-In Menu",
  "description": "Menu for in-restaurant dining only.",
  "hasMenuSection": [
    {
      "@type": "MenuSection",
      "@id": "http://www.provider.com/somerestaurant/menusection/1",
      "name": "Dinner",
      "description": "Dinner dishes",
      "hasMenuSection": [
        {
          "@type": "MenuSection",
          "@id": "http://www.provider.com/somerestaurant/menusection/2",
          "name": "Starters",
          "description": "Appetizers and such",
          "image": "https://www.provider.com/somerestaurant/starter_dishes.jpg",
          "hasMenuItem": {
            "@type": "MenuItem",
            "@id": "http://www.provider.com/somerestaurant/menuitem/1",
            "name": "Potato Skins",
            "description": "Small serving of stuffed potato skins.",
            "offers": {
              "@type": "Offer",
              "sku": "offer-potato-skins",
              "price": "7.49",
              "priceCurrency": "USD"
            },
            "suitableForDiet": "http://schema.org/GlutenFreeDiet"
          }
        },
        {
          "@type": "MenuSection",
          "@id": "http://www.provider.com/somerestaurant/menusection/3",
          "name": "Soups & Salads",
          "description": "Salads and a few choices of soup",
          "image": "https://thisisarestaurant.com/soup_and_salad_dishes.jpg",
          "hasMenuItem": {
            "@type": "MenuItem",
            "@id": "http://www.provider.com/somerestaurant/menuitem/2",
            "name": "Pea Soup",
            "description": "Creamy pea soup topped with melted cheese and sourdough croutons.",
            "offers": {
              "@type": "Offer",
              "sku": "offer-pea-soup",
              "price": "3.49",
              "priceCurrency": "USD"
            },
            "suitableForDiet": "http://schema.org/GlutenFreeDiet"
          }
        },
        {
          "@type": "MenuSection",
          "@id": "http://www.provider.com/somerestaurant/menusection/4",
          "name": "Steak",
          "description": "Steak Dishes",
          "image": "https://steak.com/steak_dishes.jpg",
          "hasMenuItem": {
            "@type": "MenuItem",
            "@id": "http://www.provider.com/somerestaurant/menuitem/3",
            "name": "Sirloin",
            "description": "Sirloin steak dish.",
            "offers": {
              "@type": "Offer",
              "sku": "offer-sirloin-steak",
              "price": "15.49",
              "priceCurrency": "USD"
            },
            "suitableForDiet": "http://schema.org/GlutenFreeDiet"
          }
        }
      ]
    },
    {
      "@type": "MenuSection",
      "@id": "http://www.provider.com/somerestaurant/menusection/5",
      "name": "Desserts",
      "description": "Dessert dishes.",
      "image": "http://www.provider.com/somerestaurant/dessert_dishes.jpg",
      "hasMenuItem": {
        "@type": "MenuItem",
        "@id": "http://www.provider.com/somerestaurant/menuitem/4",
        "name": "Chocolate Pie",
        "description": "A slice of chocolate pie.",
        "offers": {
          "@type": "Offer",
          "sku": "offer-chocolate-pie",
          "price": "3.49",
          "priceCurrency": "USD"
        }
      }
    }
  ]
}

Para ver más ejemplos de entidades Menu, consulta Ejemplos de feeds de restaurantes y menús.

En la siguiente tabla, se enumeran las propiedades del tipo MenuDisclaimer:

Propiedad Tipo Necesidad Descripción
@type Texto Obligatorio Siempre es "MenuRenuncia de responsabilidad".
@id URL Obligatorio Es el identificador único de la renuncia de responsabilidad del menú.
text Texto Obligatorio Texto de la renuncia de responsabilidad. Por ejemplo, "El promedio de consumo diario de energía en un adulto es 8,700 kJ".
url URL Opcional URL que dirige a una página que proporciona más detalles sobre la renuncia de responsabilidad.

En el siguiente ejemplo, se muestra el uso del tipo MenuDisclaimer:

Ejemplo

{
    "@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"
    }
}

Elemento de menú para representar el elemento de menú. En la siguiente tabla, se enumeran las propiedades del tipo MenuItem:

Propiedad Tipo Necesidad Descripción
@type Texto Obligatorio Siempre es "MenuItem".
@id URL Obligatorio Identificador único del elemento del menú
name Texto Obligatorio Es un texto que puede identificar el MenuItem cuando un usuario explora el menú.
description Texto Opcional Es la descripción del elemento del menú.
image URL Opcional

Imagen del elemento del menú. Usa los siguientes lineamientos para las imágenes:

  • Relación de aspecto 3:2
  • Resolución mínima: 600 x 400 píxeles, 72 dpi
  • Resolución recomendada de 1,400 x 960 píxeles, 72 dpi
menuAddOn Array de AddOnMenuSection Opcional Elementos de una sección de menú que se pueden agregar como complementos al elemento de menú.
offers Array de Offer Obligatorio*

Una o muchas ofertas para proporcionar este MenuItem. Describe cuándo y a qué precio estará disponible este MenuItem. Solo debe ser válida una oferta por vez. Se pueden proporcionar varias ofertas si hay variaciones en el precio o la disponibilidad según la hora del día. Si el alimento difiere mediante un atributo base (por ejemplo, tamaño para la pizza), usa menuItemOption. El valor predeterminado para Offer.eligibleQuantity es un mínimo de 0 sin límite superior.

En la siguiente lista, se muestran las propiedades de Offer que se usan en MenuItem.

  • Debe implementar la Offer.sku
  • Debe implementar la Offer.price
  • Debe implementar la Offer.priceCurrency
  • Offer.availabilityStarts (opcional)
  • Offer.availabilityEnds (opcional)
  • Offer.availableDay (opcional)
  • Offer.validFrom (opcional)
  • Offer.validThrough (opcional)
  • Offer.eligibleQuantity (opcional)
  • Offer.inventoryLevel (opcional)
hasMenuItemOptions Array de MenuItemOption Obligatorio Lista de opciones/variaciones básicas de este elemento del menú. Se deben usar opciones para especificar las diversas variaciones base disponibles para el elemento, por ejemplo, pequeño, mediano y grande.
suitableForDiet Array de RestrictedDiet Opcional El plato cumple con la restricción alimentaria descrita (como “http://schema.org/GlutenFreeDiet” o “http://schema.org/VeganDiet”. Esta es una lista enumerada de los valores posibles.
nutrition NutritionInformation Opcional Información nutricional del plato, en particular las calorías.
hasAllergen AllergenDetails Opcional Alérgenos del plato por gs1:AllergenDetails. Agrega el contexto de gs1 para usar esta propiedad: "@context": ["http://gs1.org/voc/", "http://schema.org"]. Además, agrega FoodBeverageTobaccoProduct al tipo de MenuItem.
additive Array de AdditiveDetails Opcional Los aditivos del plato por gs1:AdditiveDetails. Esta es una lista enumerada de los valores posibles. Agrega el contexto de gs1 para usar esta propiedad: "@context": ["http://gs1.org/voc/", "http://schema.org"]. Además, agrega FoodBeverageTobaccoProduct al tipo de MenuItem.
packaging PackagingDetails Opcional Es la información de empaquetado y reciclaje de este MenuItem por gs1:PackagingDetails. Agrega el contexto de gs1 para usar esta propiedad: "@context": ["http://gs1.org/voc/", "http://schema.org"]. Además, agrega FoodBeverageTobaccoProduct al tipo de MenuItem.

En los siguientes ejemplos, se muestran elementos MenuItem:

Ejemplo 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"
}

Ejemplo 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"
    }
  }
]

Ejemplo 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 --
          ]
        }
      ]
    }
  ]
}

Ejemplo 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"
      }
    }
  ]
}

Ejemplo 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"
      }
    }
  }
}

Para ver más ejemplos de entidades MenuItem, consulta Ejemplos de feeds de restaurantes y menús.

Es una opción para representar las elecciones que un usuario deberá tomar cuando seleccione un plato o un combo. El usuario debe seleccionar una opción; de lo contrario, el pedido se considerará no válido. Por ejemplo, elegir pequeño, mediano o grande en el caso de una pizza.

Para ver casos de uso de muestra de MenuItemOption, consulta nuestra guía sobre personalización con MenuItemOption.

En la siguiente tabla, se enumeran las propiedades del tipo MenuItemOption:

Propiedad Tipo Necesidad Descripción
@type Texto Obligatorio Siempre es "MenuItemOption".
value PropertyValue Obligatorio PropertyValue que contiene un par nombre/valor que representa la opción.
offers Array de Offer Obligatorio

Una o más ofertas para proporcionar este MenuItemOption. Describe cuándo y a qué precio está disponible esta opción del menú. Solo debe ser válida una oferta por vez. Puedes tener muchas ofertas válidas si el precio o la disponibilidad pueden cambiar según la hora del día. No uses Offer.eligibleQuantity. MenuItemOption es mutuamente excluyente, por lo que se ignora Offer.eligibleQuantity si se proporciona.

En la siguiente lista, se muestran las propiedades de Offer que se usan en MenuItemOption.

  • Debe implementar la Offer.sku
  • Debe implementar la Offer.price
  • Debe implementar la Offer.priceCurrency
  • Offer.availabilityStarts (opcional)
  • Offer.availabilityEnds (opcional)
  • Offer.availableDay (opcional)
  • Offer.validFrom (opcional)
  • Offer.validThrough (opcional)
  • Offer.eligibleQuantity (opcional)
  • Offer.inventoryLevel (opcional)
menuAddOn Array of AddOnMenuSection Opcional Sección del menú con elementos permitidos que se pueden agregar como complementos. Úsalo solo si los complementos son específicos de una opción de elemento del menú en particular. De lo contrario, proporciona complementos con la propiedad MenuItem.menuAddOn.
suitableForDiet Array de RestrictedDiet Opcional Es una lista enumerada que indica las dietas en las que este plato cumple con la restricción alimentaria descrita (como "http://schema.org/GlutenFreeDiet" o "http://schema.org/VeganDiet").
nutrition NutritionInformation Opcional Información nutricional del plato, en particular las calorías.
hasAllergen AllergenDetails Opcional Alérgenos del plato por gs1:AllergenDetails. Agrega el contexto de gs1 para usar esta propiedad: "@context": ["http://gs1.org/voc/", "http://schema.org"]. Además, agrega FoodBeverageTobaccoProduct al tipo de MenuItemOption.
additive Array de AdditiveDetails Opcional Agregados del plato por gs1:AdditiveDetails. Esta es una lista enumerada de los valores posibles. Agrega el contexto de gs1 para usar esta propiedad: "@context": ["http://gs1.org/voc/", "http://schema.org"]. Además, agrega FoodBeverageTobaccoProduct al tipo de MenuItemOption.
packaging PackagingDetails Opcional Información sobre el empaquetado y el reciclaje de este MenuItem por gs1:PackagingDetails Agrega el contexto gs1 para usar esta propiedad: "@context": ["http://gs1.org/voc/", "http://schema.org"]. Además, agrega FoodBeverageTobaccoProduct al tipo de MenuItemOption.

En el siguiente ejemplo, se muestran los elementos MenuItemOption:

Ejemplo 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"
      }
    }
  ]
}

Ejemplo 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 --
          ]
        }
      ]
    }
  ]
}

Sección de menú para representar una sección específica del menú. En la siguiente tabla, se enumeran las propiedades del tipo MenuSection:

Propiedad Tipo Necesidad Descripción
@type Texto Obligatorio Siempre es "MenuSection".
@id URL Obligatorio Identificador único de la sección del menú
name Texto Obligatorio Texto que puede identificar el MenuSection cuando un usuario explora el menú.
description Texto Opcional Descripción de la sección del menú.
hasMenuSection Array de MenuSection Opcional Subagrupación lógica de MenuSection. Por ejemplo, la sección del menú Cena puede tener varias subsecciones de menú, como "Platos avícolas" o "Vegetariano".
hasMenuItem Array de MenuItem Opcional Elementos de menú contenidos en una MenuSection.
offers Array de Offer Opcional

Usa Offer.availabilityStarts y Offer.availabilityEnds para indicar el período durante el cual se entrega este MenuSection. No uses Offer.eligibleQuantity.

En la siguiente lista, se muestran las propiedades de Offer que se usan en MenuSection:

  • Offer.availabilityStarts (opcional)
  • Offer.availabilityEnds (opcional)
  • Offer.availableDay (opcional)
  • Offer.validFrom (opcional)
  • Offer.validThrough (opcional)
image URL Opcional Imagen de la sección del menú.

En los siguientes ejemplos, se muestran entidades MenuSection:

Ejemplo 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"
  }
}

Ejemplo 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"
        }
      }
    ]
  }
]

Para ver más ejemplos de entidades MenuSection, consulta Ejemplos de feeds de restaurantes y menús.

NutritionInformation

En la siguiente tabla, se describen las propiedades del tipo NutritionInformation. Las unidades de medida distinguen mayúsculas de minúsculas. Por ejemplo, "Cal" se acepta, pero "cal" no.

Propiedad Tipo Necesidad Descripción
@type Texto Obligatorio Siempre es “NutritionInformation”.
description Texto Opcional Información nutricional en texto libre Por ejemplo, "Contiene conservantes".
calories Texto Opcional

Es la cantidad de calorías en calorías, kcal o kJ, con el siguiente formato:

number Cal_kcal_OR_kJ

Por ejemplo, “240 cal”.

carbohydrateContent Texto Opcional

La cantidad de carbohidratos, generalmente en g, con el siguiente formato:

number g_OR_mg

Por ejemplo, “7 g”.

cholesterolContent Texto Opcional

Cantidad de colesterol, generalmente en mg, con el siguiente formato:

number g_OR_mg

Por ejemplo, “12 mg”.

fatContent Texto Opcional

La cantidad de grasa, generalmente en g, con el siguiente formato:

number g_OR_mg

Por ejemplo, “42 g”.

fiberContent Texto Opcional

La cantidad de g o mg de fibra, en el siguiente formato:

number g_OR_mg
proteinContent Texto Opcional

La cantidad de g o mg de proteína, en el siguiente formato:

number g_OR_mg
saturatedFatContent Texto Opcional

La cantidad de g o mg de grasas saturadas en el siguiente formato:

number g_OR_mg
servingSize Texto Opcional El tamaño de la porción en ml, L, g o kg, en términos de la cantidad de volumen o masa.
sodiumContent Texto Opcional

Corresponde a la cantidad de mg o g de sodio en el siguiente formato:

number g_OR_mg
sugarContent Texto Opcional

La cantidad de g o mg de azúcar en el siguiente formato:

number g_OR_mg
transFatContent Texto Opcional

Cantidad de g o mg de grasas trans, con el siguiente formato:

number g_OR_mg
unsaturatedFatContent Texto Opcional

La cantidad de grasas insaturadas, generalmente en g, con el siguiente formato:

number g_OR_mg

En los siguientes ejemplos, se muestra un elemento NutritionInformation:

Ejemplo 1

"nutrition": {
  "@type": "NutritionInformation",
  "calories": "170 Cal",
  "fatContent": "3 g",
  "fiberContent": "2 g",
  "proteinContent": "4 g"
},

Ejemplo 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"
  }
},

Oferta

Oferta de un producto del menú En la siguiente tabla, se describen las propiedades del tipo Offer:

Propiedad Tipo Necesidad Descripción
@type Texto Obligatorio Siempre es "Offer".
sku Texto Condicionales

Es el identificador único de la oferta. Puede ser cualquier valor de texto que sea único dentro de Offer. Los valores de sku se mencionan en Confirmación de la compra y Enviar como offerId en lineitem.

Esta propiedad solo se usa en los siguientes tipos de ofertas:

  • AddOnMenuItem.Offer
  • MenuItem.Offer
  • MenuOption.Offer
price Texto Condicionales

Es el precio del artículo ofrecido. Por ejemplo, "6.00" sin el símbolo de moneda.

Esta propiedad solo se requiere en los siguientes tipos de ofertas:

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

No se utiliza en los siguientes tipos de ofertas:

  • AddOnMenuSection.Offer
  • MenuSection.Offer
  • Service.Offer
priceCurrency Texto Condicionales

Es la moneda (en formato ISO 4217 de 3 letras) del precio o un componente del precio cuando se adjunta a PriceSpecification y sus subtipos.

Esta propiedad solo se requiere en los siguientes tipos de ofertas:

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

No se utiliza en los siguientes tipos de ofertas:

  • AddOnMenuSection.Offer
  • MenuSection.Offer
  • Service.Offer
availabilityStarts DateTime o Time Opcional Indica la fecha y hora, o solo la hora a partir de la cual la oferta está disponible. Por ejemplo, si los panqueques se entregan desde las 7:00 a.m., el valor de este campo puede tener el siguiente aspecto: "2017-05-01T07:00:00-07:00". Para obtener más información, consulta los formatos de fecha y hora.
availabilityEnds DateTime o Time Opcional Indica la fecha y hora, o solo el momento en que la oferta no está disponible. Este período es exclusivo. Por ejemplo, si la disponibilidad de panqueques finaliza a las 10 a.m., el último panqueque se puede entregar a las 9:59:59 a.m. El valor de este campo puede tener el siguiente aspecto: "2017-05-01T10:00:00-07:00". Para obtener más información, consulta los formatos de fecha y hora.
availableDay Arreglo de DayOfWeek Opcional

Los días de la semana en que está disponible este artículo. Estos son los valores válidos:

  • "Lunes"
  • “martes”
  • "miércoles"
  • "Jueves"
  • "Viernes"
  • "Sábado"
  • "Domingo"

Si tienes una disponibilidad diferente para diferentes días de la semana, usa más de un objeto Offer, como se muestra en los ejemplos siguientes.

validFrom DateTime Opcional

Fecha y hora (incluida la zona horaria) en las que el precio especificado es válido. Por ejemplo, la pasta cuesta USD 8 durante el almuerzo y USD 10 en la cena. Para obtener más información, consulta los formatos de fecha y hora.

Esta propiedad se puede usar en los siguientes tipos de ofertas:

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

Esta propiedad no se utiliza en los siguientes tipos de ofertas:

  • Service.Offer
validThrough DateTime Opcional

Fecha y hora (incluida la zona horaria) a partir de las cuales el precio especificado deja de ser válido. Por ejemplo, la pasta cuesta USD 8 durante el almuerzo y USD 10 en la cena. La hora de validThrough es exclusiva: Por ejemplo, si esa hora se establece como 6 p.m., la hora es válida hasta las 5:59:59 p.m. Para obtener más información, consulta los formatos de fecha y hora.

Esta propiedad se puede usar en los siguientes tipos de ofertas:

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

Esta propiedad no se utiliza en los siguientes tipos de ofertas.

  • Service.Offer
eligibleQuantity QuantitativeValue Opcional

Las cantidades de pedidos para las que se permite este artículo Por ejemplo, un restaurante podría requerir que se pidan al menos 10 pizzas para un envío.

Este valor es opcional. De forma predeterminada, no hay límite máximo, pero el restaurante puede especificar uno. Los límites mínimos se aplican solo cuando un usuario selecciona el elemento.

Esta propiedad se puede usar en los siguientes tipos de ofertas:

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

Esta propiedad no se utiliza en los siguientes tipos de ofertas.

  • AddOnMenuSection.Offer
  • MenuSection.Offer
  • Service.Offer
aggregateRating AggregateRating Opcional

Es la calificación general, basada en una colección de opiniones o calificaciones del elemento.

Esta propiedad se puede usar en los siguientes tipos de ofertas:

  • AddOnMenuItem.Offer
  • MenuItem.Offer

Esta propiedad no se utiliza en los siguientes tipos.

  • AddOnMenuSection.Offer
  • MenuItemOption.Offer
  • MenuSection.Offer
  • Service.Offer
inventoryLevel QuantitativeValue Opcional

Indica el nivel de inventario actual aproximado para el artículo o los artículos.

Esta propiedad se puede usar en los siguientes tipos de ofertas:

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

Esta propiedad no se utiliza en los siguientes tipos de ofertas:

  • AddOnMenuSection.Offer
  • MenuSection.Offer
  • Service.Offer
priceSpecification Array de DeliveryChargeSpecification o array de PaymentChargeSpecification Opcional

Cuando se usa en Service.Offer, indica los detalles del precio de la entrega. Si se aplican varios objetos DeliveryChargeSpecification, se aplica el más específico. Usa objetos DeliveryChargeSpecification mutuamente excluyentes para evitar ambigüedades.

Esta propiedad se puede usar en los siguientes tipos de ofertas:

  • Service.Offer

Esta propiedad no se utiliza en los siguientes tipos de ofertas:

  • AddOnMenuItem.Offer
  • AddOnMenuSection.Offer
  • MenuItem.Offer
  • MenuOption.Offer
  • MenuSection.Offer
offeredBy Array de IDs de Restaurant Opcional

Representa los restaurantes en los que se ofrece este Offer.

Si no se especifica, este Offer se ofrecerá a todos los restaurantes.

Esta propiedad se puede usar en los siguientes tipos de ofertas:

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

Esta propiedad no se utiliza en los siguientes tipos de ofertas:

  • Service.Offer
applicableFulfillmentMethod Array de texto Opcional

Representa el tipo de servicio con el que se entrega este Offer. Los valores posibles son "DELIVERY" o "TakeOUT".

Si no se especifica, este Offer se usará con servicio de entrega a domicilio y para llevar.

Esta propiedad se puede usar en los siguientes tipos de ofertas:

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

Esta propiedad no se utiliza en los siguientes tipos de ofertas:

  • Service.Offer
@id URL Funciones obsoletas Es el identificador único de la oferta. Obsoleta a partir del 25/4/19; reemplázala por sku como se describió anteriormente.

En los siguientes ejemplos, se muestran elementos Offer:

Ejemplo 1

En el siguiente ejemplo, se muestra una oferta simple:

{
  "@type": "Offer",
  "@id": "https://www.provider.com/menu/74962/139/offer",
  "price": "10",
  "priceCurrency": "USD"
}

Ejemplo 2

En la siguiente oferta de ejemplo, se muestra la disponibilidad los fines de semana de 8 a 10 a.m.:

{
  "@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.
}

Ejemplo 3

En el siguiente ejemplo, se muestra la disponibilidad de 9:59:59 a.m. los lunes, miércoles y viernes, pero de 8:00 a.m. a 11:59:59 a.m. los martes y jueves:

{
  "@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"]
}

Ejemplo 4

En el siguiente ejemplo, se muestra la cantidad apta de un elemento de menú de complementos establecida para que el usuario pueda pedir un máximo de 2 porciones de ese elemento:

{
  "@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
     }
  }
}

Ejemplo 5

En el siguiente ejemplo, se muestra una oferta de entrega a domicilio en una ubicación específica:

{
  "@type": "Offer",
  "@id": "https://www.provider.com/menu/74962/139/offer",
  "price": "10",
  "priceCurrency": "USD",
  "applicableFulfillmentMethods": ["DELIVERY"],
  "offeredBy": [
    {
      "@type": "Restaurant",
      "@id": "https://www.provider.com/location/1",
    }
  ]
}

OpeningHoursSpecification

Define cuándo están disponibles los servicios de pedido. Por lo general, el valor de opens es menor que el de closes. Los siguientes lineamientos se aplican al uso de las propiedades opens y closes:

  • Las propiedades opens y closes son opcionales, pero se recomienda indicar cuando el pedido está disponible. La práctica recomendada para definir el horario disponible es incluir un array deliveryHours que contenga una ServiceDeliveryHoursSpecification con propiedades opens y closes. Luego, puedes incluir un objeto AdvanceServiceDeliveryHoursSpecification en deliveryHours con sus propias propiedades opens y closes, si deseas ofrecer una ventana más limitada para realizar pedidos avanzados.
  • Si opens y closes no se especifican de forma explícita, suponemos que el servicio de pedidos está disponible todos los días en todo momento.
  • La hora se debe especificar en la hora local del servicio. No incluyas una zona horaria en un valor opens o closes. Si especificas una zona horaria, Google ignorará esta información.
  • Si opens y closes son iguales, suponemos que el restaurante está abierto durante 0 minutos.
  • Si opens es mayor que closes, se interpreta que la hora de cierre es el día siguiente. Por ejemplo, si la hora de apertura es el 1 de enero a las 5 p.m. y la hora de cierre es las 2 a.m., se interpreta que el restaurante cierra el 2 de enero a las 2 a.m.
  • La hora de closes es exclusiva. Por lo tanto, si los horarios de apertura y cierre de esta ventana de pedido se configuran a las 10 a.m. y a las 4 p.m. respectivamente, el último orden será a las 3:59:59 p.m.

En la siguiente tabla, se describen las propiedades del tipo OpeningHoursSpecification:

Propiedad Tipo Necesidad Descripción
@type Texto Obligatorio Siempre es “OpeningHoursSpecification”.
@id URL Opcional Es el identificador de OpeningHoursSpecification.
dayOfWeek Array de DayOfWeek Opcional

Indica el día de la semana para el que es válido este horario de atención. Los valores aceptables son "lunes", "martes", "miércoles", "jueves", "viernes", "sábado" y "domingo". Por ejemplo:

"dayOfWeek": [
"Monday",
"Tuesday",
"Wednesday",
"Thursday",
"Friday"
]

Si no especificas ningún día de la semana, OpeningHoursSpecification se aplica a todos los días.

opens Time Opcional

Cuando se usa en una especificación de Restaurant, esta propiedad indica el horario de apertura del restaurante en los días de la semana determinados. Por ejemplo, 6:30 a.m. se indica como "T06:30:00".

Cuando se usa en una especificación Service, indica la hora específica del día a partir de la cual se pueden realizar los pedidos de los usuarios. Especifica el horario de apertura del sistema en línea y permite a los usuarios realizar pedidos. En esos horarios de apertura y cierre del sistema en línea, puedes usar deliveryHours para especificar los horarios de apertura o cierre en los que los usuarios pueden pedir tipos de entregas especiales.

La hora se debe especificar en la hora local del servicio. No incluyas una zona horaria en un valor de opens. Si se especifica una zona horaria, Google ignorará esta información.

Para obtener más información, consulta los formatos de fecha y hora.

closes Time Opcional

Cuando se usa en una especificación Service, esta propiedad indica la hora específica del día después de la cual no se pueden realizar los pedidos de los usuarios. Especifica el horario de cierre en el cual el sistema en línea está activo y permite a los usuarios realizar pedidos. En esos horarios de apertura y cierre del sistema en línea, puedes usar deliveryHours para especificar los horarios de apertura o cierre en los que los usuarios pueden pedir tipos de entregas especiales.

La hora se debe especificar en la hora local del servicio. No incluyas una zona horaria en un valor de closes. Si se especifica una zona horaria, Google ignorará esta información.

Para obtener más información, consulta los formatos de fecha y hora.

validFrom DateTime Opcional

Cuando se usa en una especificación de Restaurant, esta propiedad indica la fecha en la que son válidos los horarios de atención especificados por opens y closes del restaurante.

Por ejemplo, si las horas correspondientes se aplican a todo el año 2017, establece validFrom en “2017-01-01T00:00:00-07:00” y validThrough en “2017-12-31T23:59:59-07:00”.

Cuando se usa en una especificación de Service, validFrom indica la fecha de inicio a partir de la cual se pueden realizar los pedidos de los usuarios.

Si no se especifica esta propiedad en tu feed, Google supone que el Restaurante o el Servicio está disponible todos los días.

Además de la fecha, se requieren las partes de la hora y la zona horaria del valor.

Como zona horaria, utiliza la del Restaurante o Servicio.

Para obtener más información, consulta los formatos de fecha y hora.

validThrough DateTime Opcional

Cuando se usa en un Restaurant, la fecha después de la cual el horario de atención especificado por opens y closes no es válido.

Por ejemplo, si las horas correspondientes se aplican a todo el año 2017, establece validFrom en “2017-01-01T00:00:00-07:00” y validThrough en “2017-12-31T23:59:59-07:00”.

Cuando se usa en una especificación de Service, validThrough indica la fecha de finalización después de la cual ya no se pueden realizar los pedidos de los usuarios.

Si no se especifica esta propiedad en tu feed, Google supone que el Restaurante o el Servicio está disponible todos los días.

Además de la fecha, se requieren las partes de hora y zona horaria de DateTime.

Como zona horaria, utiliza la del Restaurante o Servicio.

La hora de validThrough es exclusiva. Por ejemplo, si esa hora se establece a las 6 p.m., la hora es válida hasta las 5:59:59 p.m.

Para obtener más información, consulta los formatos de fecha y hora.

deliveryHours Array de ServiceDeliveryHoursSpecification o array de AdvanceServiceDeliveryHoursSpecification Condicionales

Es la especificación del tiempo de entrega o comida para llevar.

Este parámetro es obligatorio, a menos que el restaurante esté cerrado (es decir, que opens y closes estén configurados y sean iguales entre sí).

  • ServiceDeliveryHoursSpecification: Dentro de los horarios de apertura o cierre, puedes establecer los horarios de "abierto" y "cierre" en los que los usuarios pueden realizar pedidos lo antes posible.
  • AdvanceServiceDeliveryHoursSpecification: Dentro de los horarios de apertura o cierre, puedes establecer los horarios de "abierto" y "cierre" en los que los usuarios pueden realizar pedidos por adelantado.

En los siguientes ejemplos, se muestran elementos OpeningHoursSpecification:

Ejemplo 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"
    }
  ]
},

Ejemplo 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"
    }
  ]
}

Ejemplo 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"
    }
  }
},

Ejemplo 4

// List hours available for 2017 and 2018
"hoursAvailable": [
  {
    "@type": "OpeningHoursSpecification",
    // Array containing advance order hours for each day
    "deliveryHours": [
      {
        // Open 10:00AM to 9:29:59PM on Mondays
        "@type": "AdvanceServiceDeliveryHoursSpecification",
        "deliveryLeadTime": {
          "@type": "QuantitativeValue",
          "value": "60",
          "unitCode": "MIN"
        },
        "dayOfWeek": [
          "Monday"
        ],
        "opens": "T10:00:00",
        "closes": "T21:30:00",
        "validFrom": "2017-01-01T00:00:00-07:00",
        "validThrough": "2018-12-31T23:59:59-07:00"
      },
      {
        // Open 10:00AM to 9:29:59PM on Tuesdays
        "@type": "AdvanceServiceDeliveryHoursSpecification",
        "deliveryLeadTime": {
          "@type": "QuantitativeValue",
          "value": "60",
          "unitCode": "MIN"
        },
        "dayOfWeek": [
          "Tuesday"
        ],
        "opens": "T10:00:00",
        "closes": "T21:30:00",
        "validThrough": "2018-12-31T23:59:59-07:00"
      },
      {
        // Open 10:00AM to 9:29:59PM on Wednesdays
        "@type": "AdvanceServiceDeliveryHoursSpecification",
        "deliveryLeadTime": {
          "@type": "QuantitativeValue",
          "value": "60",
          "unitCode": "MIN"
        },
        "dayOfWeek": [
          "Wednesday"
        ],
        "opens": "T10:00:00",
        "closes": "T21:30:00",
        "validFrom": "2017-01-01T00:00:00-07:00",
        "validThrough": "2018-12-31T23:59:59-07:00"
      },
      {
        // Open 10:00AM to 9:29:59PM on Thursdays
        "@type": "AdvanceServiceDeliveryHoursSpecification",
        "dayOfWeek": [
          "Thursday"
        ],
        "opens": "T10:00:00",
        "closes": "T21:30:00",
        "validFrom": "2017-01-01T00:00:00-07:00",
        "validThrough": "2018-12-31T23:59:59-07:00"
      },
      {
        // Open 10:00AM to 11:29:59PM on Fridays
        "@type": "AdvanceServiceDeliveryHoursSpecification",
        "deliveryLeadTime": {
          "@type": "QuantitativeValue",
          "value": "60",
          "unitCode": "MIN"
        },
        "dayOfWeek": [
          "Friday"
        ],
        "opens": "T10:00:00",
        "closes": "T23:30:00",
        "validFrom": "2017-01-01T00:00:00-07:00",
        "validThrough": "2018-12-31T23:59:59-07:00"
      },
      {
        // Open 10:00AM to 11:29:59PM on Saturdays
        "@type": "AdvanceServiceDeliveryHoursSpecification",
        "deliveryLeadTime": {
          "@type": "QuantitativeValue",
          "value": "60",
          "unitCode": "MIN"
        },
        "dayOfWeek": [
          "Saturday"
        ],
        "opens": "T10:00:00",
        "closes": "T23:30:00",
        "validFrom": "2017-01-01T00:00:00-07:00",
        "validThrough": "2018-12-31T23:59:59-07:00"
      },
      {
        // Open 11:00AM to 6:59:59PM on Sundays
        "@type": "AdvanceServiceDeliveryHoursSpecification",
        "deliveryLeadTime": {
          "@type": "QuantitativeValue",
          "value": "60",
          "unitCode": "MIN"
        },
        "dayOfWeek": [
          "Sunday"
        ],
        "opens": "T11:00:00",
        "closes": "T19:00:00",
        "validFrom": "2017-01-01T00:00:00-07:00",
        "validThrough": "2018-12-31T23:59:59-07:00"
      }
    ]
  }
],

PackagingDetails

Agrega el contexto gs1 para usar este tipo: "@context": ["http://gs1.org/voc/", "http://schema.org"]. Además, agrega FoodBeverageTobaccoProduct al tipo de MenuItem o MenuItemOption.

En la siguiente tabla, se describen las propiedades del tipo PackagingDetails:

Propiedad Tipo Necesidad Descripción
@type Texto Obligatorio Siempre es "PackagingDetails".
packagingRecyclingProcessType Texto Opcional Tipo de proceso de reciclaje de paquetes según gs1:PackagingRecyclingProcessTypeCode. Por ejemplo, http://gs1.org/voc/PackagingRecyclingProcessTypeCode-RECYCLABLE o http://gs1.org/voc/PackagingRecyclingProcessTypeCode-REUSABLE.
hasReturnablePackageDeposit ReturnablePackageDepositDetails Opcional Detalles del depósito del paquete que se puede devolver según gs1:ReturnablePackageBucketDetails. Por ejemplo, las botellas y las latas tienen depósitos en paquetes que se pueden devolver.

En el siguiente ejemplo, se muestra el uso del tipo 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

En la siguiente tabla, se describen las propiedades del tipo PaymentChargeSpecification:

Propiedad Tipo Necesidad Descripción
@type Texto Obligatorio Siempre es “PaymentChargeSpecification”.
@id URL Opcional Es el identificador de PaymentChargeSpecification.
price Número Obligatorio Importe total del cargo. Por ejemplo, "6.00", sin el símbolo de moneda.
priceCurrency Texto Obligatorio Es el código de moneda ISO 4217 de 3 letras del precio. Por ejemplo, "USD".
eligibleTransactionVolume PriceSpecification Opcional Volumen de transacciones, en una unidad monetaria, para el que es válida esta especificación de cargo de pago, por ejemplo, para indicar un volumen de compra mínimo.
eligibleQuantity QuantitativeValue Opcional Indica las cantidades de pedidos para las que es válido el cargo del pago. Por ejemplo, puedes usar esta propiedad para exigir una cantidad mínima de elementos en un pedido.
validFrom DateTime Opcional Fecha y hora (incluida la zona horaria) en las que el cargo de pago especificado se vuelve válido. Por ejemplo, “2017-05-01T07:00:00-07:00”. Para obtener más información, consulta los formatos de fecha y hora.
validThrough DateTime Opcional Fecha y hora (incluida la zona horaria) en las que el cargo de pago especificado no es válido. Por ejemplo, “2017-05-01T07:30:00-07:00”. La hora de validThrough es exclusiva: por ejemplo, si esa hora se establece como 6 p.m., la hora es válida hasta las 5:59:59 p.m. Para obtener más información, consulta los formatos de fecha y hora.

En el siguiente ejemplo, se muestra un elemento PaymentChargeSpecification:

Ejemplo

"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
  }
}]

Además de "@type": ["PaymentChargeSpecification"], el objeto se puede extender con UnitPriceSpecification ("@type": ["PaymentChargeSpecification", "UnitPriceSpecification"]). La extensión proporciona dos propiedades adicionales requeridas para los cargos del servicio calculados en porcentajes.

propiedad Tipo Necesidad Descripción
referenceQuantity QuantitativeValue Obligatorio Cantidad de referencia a la que se aplica un precio determinado. Por ejemplo, los referenceQuantity del valor 10 con el unitCode de “P1” dan como resultado el 10% del valor del pedido. Por el momento, solo se admite unitCode "P1".
basePrice Número Opcional El cargo base, además del referenceQuantity Por ejemplo, referenceQuantity de 10 con unitCode de "P1" y basePrice de 5 en USD dan como resultado $5 más el 10% del valor del pedido. El valor predeterminado es 0.

Ejemplos de tarifas de comida para llevar

Google te permite especificar por adelantado una variedad de tarifas para los usuarios mediante el objeto Offer.PriceSpecification de la entidad de servicio.

Ten en cuenta que, por el momento, solo admitimos un elemento PaymentChargeSpecification. Combina todos los tipos de tarifas en una sola PaymentChargeSpecification.

Si no hay tarifa, se omite Offer.PriceSpecification.

  • Ejemplo 1: Los cargos del servicio son el 5% del subtotal del carrito
  • Ejemplo 2: El cargo del servicio es de USD 5
  • Ejemplo 3: La tarifa por equipaje es de USD 0.1 y los cargos del servicio son del 5% del subtotal del carrito
  • Ejemplo 4: La tarifa por equipaje es de USD 0.1 y la tarifa del servicio es de USD 1
  • Ejemplo 5: Los cargos del servicio son del 5% y la propina obligatoria es del 10% del subtotal del carrito

Ejemplo 1

priceSpecification [
  {
    "@type": ["PaymentChargeSpecification", "UnitPriceSpecification"],
    "referenceQuantity": {
      "@type": "QuantitativeValue",
      "value": "5.00", // 5%
      "unitCode": "P1" // P1 == %
    },
    "priceCurrency": "USD"
  }
]

Ejemplo 2

priceSpecification [
  {
    "@type": ["PaymentChargeSpecification"],
    "priceCurrency": "USD",
    "price": "5.00"
  }
]

Ejemplo 3

priceSpecification [
  {
    "@type": ["PaymentChargeSpecification", "UnitPriceSpecification"],
    "referenceQuantity": {
      "@type": "QuantitativeValue",
      "value": "5.00", // 5%
      "unitCode": "P1", // P1 == %
    },
    "priceCurrency": "USD",
    "basePrice": "0.10" // Bag fee $0.1
  }
]

Ejemplo 4

priceSpecification [
  {
    "@type": ["PaymentChargeSpecification"],
    "priceCurrency": "USD",
    "price": "1.10" //$1 + $0.1
  }
]

Ejemplo 5

priceSpecification [
  {
    "@type": ["PaymentChargeSpecification", "UnitPriceSpecification"],
    "referenceQuantity": {
      "@type": "QuantitativeValue",
      "value": "15.00", // 5% + 10%
      "unitCode": "P1" // P1 == %
    },
    "priceCurrency": "USD"
  }
]

Lugar

En la siguiente tabla, se describen las propiedades del tipo Place:

Propiedad Tipo Necesidad Descripción
@type Texto Obligatorio Siempre es "Place".
address PostalAddress Obligatorio Dirección de un lugar.

En el siguiente ejemplo, se muestra un elemento Place:

Ejemplo

{
  "@type": "Place", // area2
  "address": {
    "@type": "PostalAddress",
    "postalCode": "94041",
    "addressCountry": "US"
  }
},

PostalAddress

En la siguiente tabla, se describen las propiedades del tipo PostalAddress:

Propiedad Tipo Necesidad Descripción
@type Texto Obligatorio Siempre es "PostalAddress".
addressLocality Texto Obligatorio* La localidad o la ciudad. Por ejemplo, "San Francisco".
addressRegion Texto Obligatorio* Es la región o el estado. Por ejemplo, “CA”.
postalCode Texto Obligatorio* Corresponde al código postal, Por ejemplo, “94102”.
streetAddress Texto Opcional Indica la dirección, Por ejemplo, “1600 Amphitheatre Pkwy”.
addressCountry Texto Obligatorio Código de país ISO 3166-1 alpha-2 de dos letras . Por ejemplo, “US”.

Los proveedores de entregas pueden enumerar estas propiedades para designar un Service.areaServed donde se proporciona un servicio.

Cuando se usa en Restaurant.address, todas las propiedades enumeradas en PostalAddress son obligatorias.

En el siguiente ejemplo, se muestra un elemento PostalAddress:

Ejemplo

"address": {
  "@type": "PostalAddress",
  "streetAddress": "12345 Bar Avenue",
  "addressLocality": "San Francisco",
  "addressRegion": "CA",
  "postalCode": "94124",
  "addressCountry": "US"
},

PriceSpecification

En la siguiente tabla, se describen las propiedades del tipo PriceSpecification:

Propiedad Tipo Necesidad Descripción
@type Texto Obligatorio Siempre es "PriceSpecification".
@id URL Opcional Es el identificador de PriceSpecification.
minPrice Número Opcional El precio más bajo si el precio es un intervalo.
maxPrice Número Opcional El precio más alto si el precio es un intervalo.
priceCurrency Texto Obligatorio Es el código de moneda ISO 4217 de 3 letras del precio. Por ejemplo, "USD".
eligibleQuantity QuantitativeValue Opcional Las cantidades de pedidos para las que es válida la especificación de precio. Por ejemplo, el precio podría ser de USD 2 por libra o 2 elementos por un dólar.

En el siguiente ejemplo, se muestra un elemento PriceSpecification:

Ejemplo 1

"eligibleTransactionVolume": {
  "@type": "PriceSpecification",
  "minPrice": "20.00", // Minimum order price for delivery is $20
  "priceCurrency": "USD"
}

PropertyValue

Es el par de valores de la propiedad que se usa para describir opciones en MenuItemOption.

En la siguiente tabla, se enumeran las propiedades del tipo PropertyValue:

Propiedad Tipo Necesidad Descripción
@type Texto Obligatorio Siempre es “PropertyValue”.
name Texto Obligatorio

Es el nombre o tipo de la opción.

Los siguientes son nombres válidos cuando se usan en MenuItem:

  • "SIZE": Tamaño de MenuItem. Por ejemplo, pequeño, mediano o grande.
  • "OPCIÓN": Cualquier variación que no sea el tamaño (como un plato que viene como ensalada o un sándwich). Si no puedes distinguir entre "SIZE" y "OPTION", utiliza "OPTION".

Nombres válidos cuando se usan en AddOnMenuItem:

  • "APPLICABLE_ITEM_OPTION": Es una opción para el complemento que solo se aplica cuando se usa con MenuItem con el "SIZE/OPTION" correspondiente.
  • "PIZZA_SIDE": Este complemento, que es específico para las pizzas, solo es válido para una porción o pizza completa (como los ingredientes con champiñones del lado izquierdo, del lado derecho o de pizza completa).
  • "SIZE": Es una opción para designar el tamaño del complemento (por ejemplo, papas fritas grandes como complemento para un combo de comida).
  • "OPCIÓN": cualquier variación que no sea el tamaño. Si no puedes distinguir entre "SIZE" y "OPTION", usa "OPTION".
value Texto Obligatorio

Valor de la opción. Los valores pueden ser cualquier cadena y se muestran como están. Los siguientes son valores válidos:

  • "PIZZA_SIDE": El valor correspondiente debe ser "PIZZA_SIDE_LEFT", "PIZZA_SIDE_RIGHT" o "PIZZA_SIDE_WHOLE" para una pizza.
  • "APPLICABLE_ITEM_OPTION": Este valor debe estar presente en una de las opciones correspondientes de "OPTION/SIZE" para el elemento menuItemOptions del elemento superior MenuItem.

QuantitativeValue

En la siguiente tabla, se describen las propiedades del tipo QuantitativeValue:

Propiedad Tipo Necesidad Descripción
@type Texto Obligatorio Siempre es "QuantitativeValue".
value Número Opcional El valor del valor cuantitativo o el nodo de valor de la propiedad.
unitCode Texto o URL Opcional

La unidad de medida como un código común UN/CEFACT o una URL.

Los códigos que no sean el código común UN/CEFACT se pueden usar con un prefijo seguido de dos puntos.

maxValue Número Opcional El valor superior de alguna característica o propiedad.
minValue Número Opcional El valor más bajo de alguna característica o propiedad.

En los siguientes ejemplos, se muestra el uso del tipo QuantitativeValue:

Ejemplo 1

"deliveryLeadTime": {
  "@type": "QuantitativeValue",
  "value": "60",
  "unitCode": "MIN"
}

Ejemplo 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
  }
}

Ejemplo 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
    }
  }
]

Restaurante

En la siguiente tabla, se enumeran las propiedades del tipo Restaurant:

Propiedad Tipo Necesidad Descripción
@type Texto Obligatorio Siempre es "Restaurante".
@id URL Obligatorio Es el identificador único del restaurante o del proveedor de entregas a domicilio. Por ejemplo, "http://www.provider.com/326", donde "326" es el identificador único del restaurante.
name Texto Obligatorio Texto que puede identificar el Restaurant durante el proceso de ordenamiento.
url URL Obligatorio URL en el dominio que representa al restaurante. Por ejemplo, "http://www.provider.com/somerestaurant".
sameAs URL Opcional Es el sitio web oficial del restaurante. Por ejemplo, "http://www.unrestaurante.com".
email Texto Opcional Correo electrónico de contacto del restaurante.
description Texto Opcional Es la descripción del restaurante.
telephone Texto Obligatorio

Número de teléfono en el siguiente formato:

"[+][country_code][phone_#_with_area_code]"

Por ejemplo, “+16501234567”.

priceRange Texto Opcional Rango de precios Por ejemplo, "$$" ($-Inexpensive, $$-Moderada, $$$-Expensive, $$$$-Very Expensive).
logo URL Optional Logo of the restaurant in PNG, JPG, or GIF format. For example, "http://www.somerestaurant.com/logo.png".
image URL Optional Image of the restaurant.
servesCuisine Array of Text Optional Food types that are served at the restaurant. For example, ["sushi","Asian fusion"].
address PostalAddress Required* Address of the restaurant.
geo GeoCoordinates Optional* Geographic coordinates of the restaurant.
suitableForDiet Array of RestrictedDiet Optional Dietary restrictions this restaurant accommodates (like kosher, vegan, or gluten-free diets). It is an enumerated list.
aggregateRating AggregateRating Optional Overall rating, based on a collection of reviews or ratings of the restaurant.
additionalProperty Array of name value string pairs Optional

A restaurant imprint is a section of additional information about the restaurant, such as legal name, legal address, and registration number. This information can be formatted using "\n".

For example "additionalProperty": [{"name": "imprint", "value": "first row\nsecondrow\n"},]

The following examples show the usage of the Restaurant type:

Example 1

{
  "@type": "Restaurant",
  "@id": "http://www.provider.com/somerestaurant",
  "url": "www.provider.com/somerestaurant",
  "name": "Some Restaurant",
  "sameAs": "http://www.somerestaurant.com",
  "image": "http://www.somerestaurant.com/image-of-some-restaurant.jpg",
  "description": "This is the Some Restaurant located on 345 Spear St. San Francisco, 94105 CA. It serves Indian-Mexican fusion cuisine",
  "address": {
    "@type": "PostalAddress",
    "addressLocality": "San Francisco",
    "addressRegion": "CA",
    "postalCode": "94105",
    "streetAddress": "345 Spear St",
    "addressCountry": "US"
  },
  "geo": {
    "@type": "GeoCoordinates",
    "latitude": "37.391115",
    "longitude": "-122.081099"
  },
  "aggregateRating": {
    "@type": "AggregateRating",
    "ratingValue": "4.4",
    "reviewCount": "89"
  },
  "priceRange": "$$",
  "telephone": "+16501234567", // El código de país (+1) es obligatorio
  "servesCuisine": [
    "Indian-Mexican Fusion"
  ]
},
  
  

Ejemplo 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"}
  ]
}

Para ver más ejemplos de entidades Restaurant, consulta Ejemplos de feeds de restaurantes y menús.

ReturnablePackageDepositDetails

Para utilizar este tipo, agrega el contexto gs1: "@context":

["http://gs1.org/voc/", "http://schema.org"]

Luego, agrega FoodBeverageTobaccoProduct al tipo de MenuItem o MenuItemOption correspondientes.

En la siguiente tabla, se describen las propiedades del tipo ReturnablePackageDepositDetails:

Propiedad Tipo Necesidad Descripción
@type Texto Obligatorio Siempre es "ReturnablePackageBucketDetails".
returnablePackageDepositAmount gs1:PriceSpecification Opcional El importe del depósito para este elemento según gs1:PriceSpecification. Por ejemplo, un depósito de USD 0.25 por lata.

En el siguiente ejemplo, se muestra el uso del tipo 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"
      }
    }
  }
},

Servicio

Describe la entrega de una acción de extremo a extremo del pedido de un restaurante a una ubicación geográfica realizada por una organización de entregas.

En la siguiente tabla, se describen las propiedades del tipo Service:

Propiedad Tipo Necesidad Descripción
@type Texto Obligatorio

El tipo de feed.

  • Service: Usa este tipo para todos los feeds de servicios activos.
  • DisabledService: Usa este tipo solo cuando debes inhabilitar una entidad de servicio debido a un evento inesperado y no sepas cuándo se restablecerá el servicio.
@id URL Obligatorio Es el identificador del servicio de entrega. Por ejemplo, "http://www.provider.com/service/1".
description Texto Opcional Es la descripción del artículo.
serviceType Texto Obligatorio Es el tipo de servicio que se ofrece. Los valores posibles son "DELIVERY" o "TakeOUT".
provider Restaurant Obligatorio Es una referencia al identificador único del restaurante. Por ejemplo, "http://www.provider.com/somerestaurant".
areaServed Array de GeoShape, Place o GeoCircle Condicionales Es el área geográfica donde se presta el servicio. Este campo es opcional de forma predeterminada, pero es obligatorio si serviceType es "DELIVERY".
hoursAvailable Array de OpeningHoursSpecification Obligatorio Indica el horario durante el cual está disponible este servicio.
specialOpeningHoursSpecification Array de OpeningHoursSpecification, ServiceDeliveryHoursSpecification o AdvanceServiceDeliveryHoursSpecification Opcional

Son los horarios que anulan el OpeningHoursSpecification más general o los tiempos de entrega. Por lo general, utilizas este campo para definir días feriados y otros tipos de cierres temporales o cambios en el horario de atención.

Define el período especial con las propiedades validFrom y validThrough. Cuando se especifican estas propiedades, la hora y la zona horaria son obligatorias.

offers Array de Offer Condicionales

Detalles sobre la oferta de entrega a domicilio para un restaurante específico. Este campo es opcional de forma predeterminada, pero es obligatorio si serviceType es "DELIVERY".

La propiedad Offer.priceSpecification es opcional en Service. No se utilizan otras propiedades de Offer aquí.

hasOfferCatalog [Menu, Catálogo de ofertas] Obligatorio

Especifica un menú para este servicio. Puedes tener un menú diferente para cada uno de tus servicios (como comida para llevar, entrega a domicilio y catering).

Debes especificar Menu y OfferCatalog para el tipo. Por ejemplo:

"hasOfferCatalog": {
"@type": ["Menu", "OfferCatalog"],
"@id": "https://www.provider.com/restaurant/menu/1"
}
additionalProperty Array de {name, value} Opcional

Información opcional de configuración de servicio. Se espera que los elementos sean objetos con la clave name correspondiente al nombre del campo opcional. La clave value es un valor contextualmente relevante para el campo.

Consulta la referencia de ServingConfig para obtener más información sobre los nombres y valores específicos.

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

Contiene una URL de un servicio de entrega a domicilio o para llevar que se usará durante la migración de la experiencia de pedido de comida de extremo a extremo al redireccionamiento. Por ejemplo, "multipleAction": { "url": "https://fopatestagent.com/ordering/restaurant-1/delivery" }

En el siguiente ejemplo, se muestra el uso del tipo Service:

Ejemplo

{
  "@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"
        }
      }
    ]
  }
},

Para obtener más ejemplos de entidades de servicio, consulta Ejemplos de feeds de servicio.

ServiceDeliveryHoursSpecification

Representa las horas de entrega a fin de que los usuarios programen pedidos lo antes posible para llevar o entregar a domicilio.

Por lo general, el valor de opens es menor que el de closes. Los siguientes lineamientos se aplican al uso de las propiedades opens y closes:

  • Las propiedades opens y closes son opcionales para ServiceDeliveryHoursSpecification, pero te recomendamos que las incluyas.
  • La hora se debe especificar en la hora local del servicio. No incluyas una zona horaria en un valor opens o closes. Si especificas una zona horaria, Google ignorará la información correspondiente.
  • Si opens y closes no se especifican de forma explícita, suponemos que los pedidos para lo antes posible están disponibles todos los días y en todo momento.
  • Si opens y closes son iguales, se supondrá que los pedidos para lo antes posible no están disponibles.
  • Si opens es mayor que closes, se interpreta que la hora de cierre es el día siguiente. Por ejemplo, si la hora de apertura es el 1 de enero a las 5 p.m. y la hora de cierre es las 2 a.m., se interpreta que el restaurante cierra el 2 de enero a las 2 a.m.

En la siguiente tabla, se describen las propiedades del tipo ServiceDeliveryHoursSpecification:

Propiedad Tipo Necesidad Descripción
@type Texto Obligatorio Siempre es "ServiceDeliveryHoursSpecification".
validFrom DateTime Opcional

Es la fecha y hora en que se pueden entregar los pedidos de los usuarios (incluida la zona horaria). Por ejemplo, “2017-05-01T07:00:00-07:00”. Si no se establece esta propiedad, se supone que es válida todos los días.

Para obtener más información, consulta los formatos de fecha y hora.

validThrough DateTime Opcional

Fecha y hora (incluida la zona horaria) a partir de la cual no se pueden entregar los pedidos de lo más pronto posible de los usuarios. Por ejemplo, “2017-05-01T07:00:00-07:00”. Si no se establece esta propiedad, se supone que es válida todos los días.

La hora de validThrough es exclusiva. Por ejemplo, si esa hora se establece a las 6 p.m., la hora es válida hasta las 5:59:59 p.m.

Para obtener más información, consulta los formatos de fecha y hora.

opens Time Opcional

Hora a la que se inicia el servicio de entrega para que se entreguen los pedidos lo antes posible de los usuarios. Por ejemplo, “T10:30:00”.

La hora se debe especificar en la hora local del servicio. No incluyas una zona horaria en un valor de opens. Si se especifica una zona horaria, Google ignorará esta información.

Para obtener más información, consulta los formatos de fecha y hora.

closes Time Opcional

El momento en que el servicio de entrega para los pedidos lo antes posible de los usuarios ya no está disponible. Por ejemplo, “T23:59:59”.

La hora de closes es exclusiva. Por lo tanto, si configuras la opción de apertura o cierre para este ServiceDeliveryHoursSpecification a las 10 a.m. y las 4 p.m., el último pedido será a las 3:59:59 p.m.

La hora se debe especificar en la hora local del servicio. No incluyas una zona horaria en un valor de closes. Si se especifica una zona horaria, Google ignorará esta información.

Para obtener más información, consulta los formatos de fecha y hora.

dayOfWeek Array de DayOfWeek Opcional

Los días de la semana en que este servicio está disponible para los pedidos de los usuarios lo antes posible. Los siguientes son valores válidos:

  • "Lunes"
  • “martes”
  • "miércoles"
  • "Jueves"
  • "Viernes"
  • "Sábado"
  • "Domingo"

Si no especificas ningún día de la semana, ServiceDeliveryHoursSpecification se aplica a todos los días.

deliveryLeadTime QuantitativeValue Opcional Tiempo de entrega estimado, en minutos, una vez que se haya realizado el pedido Te recomendamos que configures esta propiedad. Establece el campo value de QuantitativeValue en la cantidad de minutos y unitCode en "MIN".

En el siguiente ejemplo, se muestra un elemento ServiceDeliveryHoursSpecification:

Ejemplo 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"
  }
},

Ejemplo 2

{
  "@type": "ServiceDeliveryHoursSpecification",
  "opens": "T08:00:00",
  "closes": "T17:00:00",
  "deliveryLeadTime": {
    "@type": "QuantitativeValue",
    "minValue": "30",
    "maxValue": "50",
    "unitCode": "MIN"
  }
}
    

Enumeradores

RestrictedDiet

El tipo RestrictedDiet tiene los siguientes valores posibles:

  • 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