Los feeds de catálogos de alimentos se basan en entidades 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, así como los detalles del servicio del restaurante, como los cargos de entrega, las áreas de entrega y otros elementos, como se especifica a continuación.
Un 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.
Para obtener información sobre el uso de esta especificación para crear tus feeds, consulta la descripción general de la integración de inventario.
Formatos de DateTime 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 un restaurante o una ubicación de servicio determinada, también se basa en el tipo de schema.org y también debe seguir el formato ISO 8601. El tiempo usa 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 es parte del formato y es obligatorio.
- Se debe especificar la zona horaria para
DATETIME
. No es obligatorio paraTIME
. - La hora debe especificarse en la hora local del restaurante o servicio.
Sobre
El código de inicio de cualquier feed de catálogo de alimentos debe contener una sección "envelope".
El "sobre" es la estructura de nivel superior de cada feed y debe ser un DataFeed
con las siguientes propiedades:
Propiedad | Tipo | Necesidad | Descripción |
---|---|---|---|
@context |
URL | Obligatorio | Es el contexto en uso, por lo general, "http://schema.googleapis.com". |
@type |
Texto | Obligatorio | Siempre es "DataFeed". |
dateModified |
DateTime |
Obligatorio |
Es el Es la fecha y hora en formato ISO_OFFSET_DATE_TIME en la que se modificaron los artículos de este feed. Si no se incluye este campo, se supone que el tiempo de actualización es el momento en que se recibe el mensaje push (o se realiza el rastreo) en los servidores de Google. Te recomendamos que implementes esto si usas push y rastreo juntos. Esta marca de tiempo se debe especificar con una zona horaria y una granularidad de milisegundos; por ejemplo, "2016-12-28T06:30:00:123-07:00". En tus feeds por lotes, el
control de versiones de las entidades se determina a través del campo |
dataFeedElement |
Array de Menu o Restaurant o Service |
Obligatorio | Uno o más elementos 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
apropiado.
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
Es un alimento o una bebida que aparece en un elemento de menú de complemento de un 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 | Es un identificador único del elemento de menú del complemento. |
name |
Texto | Obligatorio | Es el texto que identifica el AddOnMenuItem cuando un usuario explora el menú. |
description |
Texto | Opcional | Descripción del elemento del menú del complemento. |
image |
URL | Opcional |
Imagen del elemento de menú del complemento que cumpla con los siguientes lineamientos:
|
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 a la 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 artículo difieran a través de un atributo base o una variación en el propio artículo del complemento (como papas fritas pequeñas, medianas y grandes como complemento), usa la propiedad El valor predeterminado de Las siguientes propiedades
|
hasMenuItemOptions |
Array de MenuItemOption |
Obligatorio* |
Es un array de atributos básicos que describen una variación del mismo elemento complementario (como papas fritas pequeñas, medianas y grandes como complementos) para este elemento de menú complementario. Usa las opciones para especificar las diferentes variantes disponibles para este elemento de menú del complemento. Esto puede ocurrir en dos situaciones:
|
suitableForDiet |
Array de RestrictedDiet |
Opcional | El plato cumple con la restricción alimentaria descrita (como “GlutenFreeDiet” o “VeganDiet”). Esta es una lista enumerada de valores posibles. |
nutrition |
NutritionInformation |
Opcional | La información nutricional del plato, en especial 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 complementos. |
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 un subgrupo de alimentos o bebidas como una sección de menú adicional para el elemento de 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 | Es el identificador único de la sección del menú. |
name |
Texto | Obligatorio | Es el texto que puede identificar AddOnMenuSection cuando un usuario explora 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* | Son elementos de menú de complementos que se incluyen en una AddOnMenuSection. |
offers |
Array de Offer |
Opcional |
Usa En la siguiente lista, se muestran las propiedades
|
hasMenuSection |
Array de AddOnMenuSection |
Obligatorio* | Subgrupos lógicos del menú de complementos (como Cena, Aperitivos o Platos de pescado) |
defaultOption |
Array de AddOnMenuItem |
Opcional |
Son los elementos del menú del complemento que se preseleccionarán de forma predeterminada para los usuarios en Los objetos La cantidad de |
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ú "Sándwich de queso" tiene un AddOnMenuSection
de "Opción de queso" con "Suizo" y "Mozzarella" preseleccionados de forma predeterminada.
{ "@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 para que los usuarios programen pedidos anticipados para entrega y para llevar.
Por lo general, el valor de opens
es menor que el de closes
. Se aplican los siguientes lineamientos para usar las propiedades opens
y closes
:
- Las propiedades
opens
ycloses
son opcionales paraAdvanceServiceDeliveryHoursSpecification
, 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
ocloses
. Se ignoran las zonas horarias especificadas. - Si no se especifican
opens
ycloses
de forma explícita, se supone que el pedido anticipado está disponible todos los días y en todo momento. - Si
opens
ycloses
son iguales, suponemos que el pedido anticipado no está disponible. - Si
opens
es mayor quecloses
, se interpreta que la hora de cierre es del día siguiente. Por ejemplo, si la hora de apertura se establece 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
ycloses
se refieren al intervalo de tiempo futuro.closes
es exclusivo. Por ejemplo, siopens
es a las 10 a.m. ycloses
es a las 4 p.m. con unserviceTimeInterval
de 15 minutos, el primer horario comienza a las 10 a.m. y el último 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 |
Condicional |
Es la fecha de inicio a partir de la cual se pueden entregar los pedidos anticipados 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 Si este tipo se especifica como un Para obtener más información, consulta Formatos de fecha y hora. |
validThrough |
DateTime |
Opcional |
Es la fecha límite a partir 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 Si este tipo se especifica como un El tiempo de Para obtener más información, consulta Formatos de fecha y hora. |
opens |
Time |
Opcional |
Se aplica a los horarios de entrega o para llevar. Es la hora específica del día a partir de la cual se pueden entregar los pedidos anticipados de los usuarios. Por ejemplo, las 6:30 a.m. se escriben como “T06:30:00”. La hora se debe especificar en la hora local del servicio. No incluyas una zona horaria en un valor Para obtener más información, consulta Formatos de fecha y hora. |
closes |
Time |
Opcional |
Se aplica a los horarios de entrega o para llevar. Es la hora específica del día a partir de la cual no se pueden completar los pedidos por adelantado de los usuarios. Por ejemplo, las 9:00 p.m. se escriben como "T21:00:00".
La hora se debe especificar en la hora local del servicio. No incluyas una zona horaria en un valor Para obtener más información, consulta Formatos de fecha y hora. |
dayOfWeek |
Array de DayOfWeek |
Opcional |
Días de la semana en los que están disponibles los horarios de entrega anticipados. Estos son los valores válidos:
Si no especificas ningún día de la semana, |
serviceTimeInterval |
Duration |
Obligatorio |
Es el intervalo entre dos tiempos de servicio consecutivos. Por ejemplo, si
|
advanceBookingRequirement |
QuantitativeValue |
Obligatorio |
Es la cantidad de minutos a partir de la hora del pedido en la que se puede completar el pedido por adelantado. Los valores Por ejemplo, si un pedido anticipado necesita al menos 60 minutos para completarse y no se puede completar más de 2 días después, el valor de |
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
apropiado.
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 según 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 | Es el identificador de la especificación de la tarifa 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 cargos de publicación. Por ejemplo, para indicar un volumen mínimo de compras o para expresar que el envío está disponible sin cargo adicional por encima de un volumen de pedidos determinado. |
eligibleQuantity |
QuantitativeValue |
Opcional | El intervalo y la unidad de medida de las cantidades de pedidos para las que es válido el cargo de entrega Esto te permite, por ejemplo, especificar que un cargo de flete determinado solo es válido para una cantidad determinada. |
eligibleRegion |
Array de GeoShape , Place o GeoCircle |
Opcional | El lugar o la GeoShape/GeoCircle de las regiones geopolíticas para las que es válida la especificación de la oferta o el cargo de entrega Usa esta propiedad solo si las tarifas de entrega varían según la región. |
validFrom |
DateTime |
Opcional | Es la fecha y hora (incluida la zona horaria) en la que el cargo de entrega especificado se vuelve válido. Por ejemplo, "2017-05-01T06:30:00-07:00". Para obtener más información, consulta Formatos de fecha y hora. |
validThrough |
DateTime |
Opcional | Es la fecha y la hora (incluida la zona horaria) a partir de la cual 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 a las 6 p.m., la hora es válida hasta las 5:59:59 p.m.
Para obtener más información, consulta 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 las tarifas de entrega calculadas en porcentajes.
Propiedad | Tipo | Necesidad | Descripción |
---|---|---|---|
referenceQuantity |
QuantitativeValue |
Obligatorio | Es la cantidad de referencia para la que se aplica un precio determinado. Por ejemplo, referenceQuantity de valor 10 con unitCode de "P1" da como resultado el 10% del valor del pedido. Por el momento, solo se admite unitCode "P1". |
basePrice |
Número | Opcional | Es el cargo base además de referenceQuantity . Por ejemplo, referenceQuantity de 10 con unitCode de “P1” y basePrice de 5 en USD da como resultado USD 5 + 10% del valor del pedido. El valor predeterminado es 0. |
Ejemplos de costos de entrega
Google te permite especificar una variedad de tarifas para los usuarios por adelantado con Offer.PriceSpecification
de la entidad de servicio.
Ten en cuenta que, por el momento, Ordering End-to-End solo admite un elemento DeliveryChargeSpecification
. Combina todos los tipos de tarifas en un solo DeliveryChargeSpecification
.
Consulta Ejemplos de feeds de servicios para saber cómo especificar las tarifas de entrega según el área, la distancia y el valor del pedido.
Si no hay ninguna tarifa, se omite Offer.PriceSpecification
.
- Ejemplo 1: La tarifa de envío es el 5% del subtotal del carrito
- Ejemplo 2: La tarifa de entrega es de USD 5
- Ejemplo 3: La tarifa de entrega es de USD 5 + 10% del subtotal del carrito
- Ejemplo 4: La tarifa de entrega es de USD 5 y la tarifa de la bolsa 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 de distancia
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 el 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 mayor que 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 ajustan de forma tal 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 la longitud se presenta como un círculo alrededor de la esfera terrestre. 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 el 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 de la á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" } ], ... },
Menú
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 | Es el identificador único del menú. |
name |
Texto | Opcional | Es el texto que puede identificar el Menu cuando un usuario explora el menú. |
description |
Texto | Opcional | Descripción del menú. |
disclaimer |
MenuDisclaimer |
Opcional | Renuncia de responsabilidad del menú. Por ejemplo, la divulgación de información nutricional y de alérgenos. |
hasMenuSection |
Objeto único o array de MenuSection |
Opcional | Subgrupos lógicos 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 el Menu no está subdividido por MenuSections . |
inLanguage |
Texto | Opcional | Es el idioma del contenido del menú, como un 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 obtener más ejemplos de entidades Menu
, consulta Ejemplos de feeds de restaurantes y menús.
MenuDisclaimer
En la siguiente tabla, se enumeran las propiedades del tipo MenuDisclaimer
:
Propiedad | Tipo | Necesidad | Descripción |
---|---|---|---|
@type |
Texto | Obligatorio | Siempre es "MenuDisclaimer". |
@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 consumo diario promedio de energía de un adulto es de 8,700 kJ”. |
url |
URL | Opcional | Es la URL que dirige a una página en la que se proporcionan 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" } }
MenuItem
Es el elemento del menú que representa el elemento en el 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 | Es el identificador único del elemento de menú. |
name |
Texto | Obligatorio | Es el 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 |
Es la imagen del elemento del menú. Usa los siguientes lineamientos para las imágenes:
|
menuAddOn |
Array de AddOnMenuSection |
Opcional | Son los elementos de una sección de menú que se pueden agregar como complementos al elemento de menú. |
offers |
Array de Offer |
Obligatorio* |
Una o varias ofertas para proporcionar este En la siguiente lista, se muestran las propiedades
|
hasMenuItemOptions |
Array de MenuItemOption |
Obligatorio | Es la lista de opciones o variaciones básicas para este elemento de menú. Se deben usar opciones para especificar varias variantes básicas disponibles para el artículo, por ejemplo, pequeño, mediano y grande. |
suitableForDiet |
Array de RestrictedDiet |
Opcional | El plato cumple con la restricción dietética descrita (como "http://schema.org/GlutenFreeDiet" o "http://schema.org/VeganDiet"). Esta es una lista enumerada de valores posibles. |
nutrition |
NutritionInformation |
Opcional | Información nutricional del plato, en especial las calorías |
hasAllergen |
AllergenDetails |
Opcional | Alérgenos del plato por gs1:AllergenDetails .
Agrega el contexto gs1 para usar esta propiedad: "@context": ["http://gs1.org/voc/", "http://schema.org"] .
Y agrega FoodBeverageTobaccoProduct al tipo de MenuItem . |
additive |
Array de AdditiveDetails |
Opcional | Los aditivos del plato por gs1:AdditiveDetails .
Esta es una lista enumerada de valores posibles. Agrega el contexto gs1 para usar esta propiedad: "@context": ["http://gs1.org/voc/", "http://schema.org"] .
Y agrega FoodBeverageTobaccoProduct al tipo de MenuItem . |
packaging |
PackagingDetails |
Opcional | La información de embalaje y reciclaje de este MenuItem por gs1:PackagingDetails .
Agrega el contexto gs1 para usar esta propiedad: "@context": ["http://gs1.org/voc/", "http://schema.org"] .
Y 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 obtener más ejemplos de entidades MenuItem
, consulta Ejemplos de feeds de restaurantes y menús.
MenuItemOption
Es una opción para representar las opciones que un usuario debería elegir cuando seleccione un plato o una combinación. 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 ejemplo 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
En la siguiente lista, se muestran las propiedades
|
menuAddOn |
Array of |
Opcional | Sección del menú de elementos permitidos que se pueden agregar como complementos. Usa esto solo si los complementos son específicos de una opción de elemento de 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 dietética descrita (como "http://schema.org/GlutenFreeDiet" o "http://schema.org/VeganDiet"). |
nutrition |
NutritionInformation |
Opcional | Información nutricional del plato, en especial las calorías |
hasAllergen |
AllergenDetails |
Opcional | Alérgenos del plato por gs1:AllergenDetails .
Agrega el contexto gs1 para usar esta propiedad: "@context": ["http://gs1.org/voc/", "http://schema.org"] .
Y agrega FoodBeverageTobaccoProduct al tipo de MenuItemOption .
|
additive |
Array de AdditiveDetails |
Opcional | Aditivos del plato por gs1:AdditiveDetails .
Esta es una lista enumerada de valores posibles. Agrega el contexto gs1 para usar esta propiedad: "@context": ["http://gs1.org/voc/", "http://schema.org"] .
Y agrega FoodBeverageTobaccoProduct al tipo de MenuItemOption .
|
packaging |
PackagingDetails |
Opcional | Información de embalaje y reciclaje de este MenuItem según gs1:PackagingDetails . Agrega el contexto de gs1 para usar esta propiedad: "@context": ["http://gs1.org/voc/", "http://schema.org"] .
Y agrega FoodBeverageTobaccoProduct al tipo de MenuItemOption .
|
En el siguiente ejemplo, se muestran 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 -- ] } ] } ] }
MenuSection
Es una sección del menú para representar una sección en particular. 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 | Es el identificador único de la sección del menú. |
name |
Texto | Obligatorio | Es el 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 | Es la subagrupación lógica de MenuSection . Por ejemplo, la sección del menú Cena puede tener varias subsecciones de menú, como "Platos de aves" o "Vegetariano". |
hasMenuItem |
Array de MenuItem |
Opcional | Elementos de menú contenidos en un MenuSection . |
offers |
Array de Offer |
Opcional |
Usa En la siguiente lista, se muestra qué propiedades de
|
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 obtener 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, se acepta "Cal",
pero no "cal".
Propiedad | Tipo | Necesidad | Descripción |
---|---|---|---|
@type |
Texto | Obligatorio | Siempre es "NutritionInformation". |
description |
Texto | Opcional | Información nutricional en texto libre. Por ejemplo, "Contiene conservadores". |
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 Kcal”. |
carbohydrateContent |
Texto | Opcional |
La cantidad de carbohidratos, por lo general, en g, con el siguiente formato: number g_OR_mg Por ejemplo, “7 g”. |
cholesterolContent |
Texto | Opcional |
La cantidad de colesterol, por lo general, en mg, con el siguiente formato: number g_OR_mg Por ejemplo, "12 mg". |
fatContent |
Texto | Opcional |
La cantidad de grasa, por lo general, 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, con el siguiente formato: number g_OR_mg |
proteinContent |
Texto | Opcional |
La cantidad de g o mg de proteína, con el siguiente formato: number g_OR_mg |
saturatedFatContent |
Texto | Opcional |
La cantidad de g o mg de grasa saturada, con el siguiente formato: number g_OR_mg |
servingSize |
Texto | Opcional | Es 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 |
La cantidad de mg o g de sodio, con el siguiente formato: number g_OR_mg |
sugarContent |
Texto | Opcional |
La cantidad de g o mg de azúcar, con el siguiente formato: number g_OR_mg |
transFatContent |
Texto | Opcional |
La cantidad de g o mg de grasas trans, con el siguiente formato: number g_OR_mg |
unsaturatedFatContent |
Texto | Opcional |
La cantidad de grasa no saturada, por lo general, 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
Es la oferta de un elemento del menú. En la siguiente tabla, se describen las propiedades del tipo Offer
:
Propiedad | Tipo | Necesidad | Descripción |
---|---|---|---|
@type |
Texto | Obligatorio | Siempre es "Oferta". |
sku |
Texto | Condicional |
Es el identificador único de la oferta. Puede ser cualquier valor de texto que sea único dentro de Esta propiedad solo se usa en los siguientes tipos de ofertas:
|
price |
Texto | Condicional |
Es el precio del artículo ofrecido. Por ejemplo, “6.00” sin el símbolo de moneda. Esta propiedad solo es obligatoria en los siguientes tipos de ofertas:
No se usa en los siguientes tipos de ofertas:
|
priceCurrency |
Texto | Condicional |
Es la moneda (en formato ISO 4217 de 3 letras) del precio o un componente de precio cuando se adjunta a PriceSpecification y sus subtipos. Esta propiedad solo es obligatoria en los siguientes tipos de ofertas:
No se usa en los siguientes tipos de ofertas:
|
availabilityStarts |
DateTime o Time |
Opcional | La fecha y hora, o solo la hora a partir de la cual la oferta está disponible. Por ejemplo, si los panqueques se sirven a partir de las 7:00 a.m., el valor de este campo puede ser el siguiente: “2017-05-01T07:00:00-07:00”. Para obtener más información, consulta Formatos de fecha y hora. |
availabilityEnds |
DateTime o Time |
Opcional | La fecha y hora, o solo la hora, en la que la oferta no está disponible. Este tiempo es exclusivo. Por ejemplo, si la disponibilidad de los panqueques finaliza a las 10 a.m., el último panqueque se puede servir a las 9:59:59 a.m. El valor de este campo puede verse de la siguiente manera: "2017-05-01T10:00:00-07:00". Para obtener más información, consulta Formatos de fecha y hora. |
availableDay |
Array de DayOfWeek | Opcional |
Son los días de la semana en que está disponible este artículo. Estos son los valores válidos:
Si tienes disponibilidad diferente para los distintos días de la semana, usa más de un objeto |
validFrom |
DateTime |
Opcional |
Es la fecha y la hora (incluida la zona horaria) en las que es válido el precio especificado. Por ejemplo, la pasta cuesta USD 8 durante el almuerzo y USD 10 durante la cena. Para obtener más información, consulta Formatos de fecha y hora. Esta propiedad se puede usar en los siguientes tipos de ofertas:
Esta propiedad no se usa en los siguientes tipos de ofertas:
|
validThrough |
DateTime |
Opcional | Es la fecha y la hora (incluida la zona horaria) después de la cual el precio especificado ya no es válido. Por ejemplo, la pasta cuesta USD 8 durante el almuerzo y USD 10 en la cena. La hora de Esta propiedad se puede usar en los siguientes tipos de ofertas:
Esta propiedad no se usa en los siguientes tipos de ofertas.
|
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 una entrega. Este valor es opcional. De forma predeterminada, no hay un 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:
Esta propiedad no se usa en los siguientes tipos de ofertas.
|
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:
Esta propiedad no se usa en los siguientes tipos.
|
inventoryLevel |
QuantitativeValue | Opcional |
Es el nivel aproximado actual del inventario para el artículo o los artículos. Esta propiedad se puede usar en los siguientes tipos de ofertas:
Esta propiedad no se usa en los siguientes tipos de ofertas:
|
priceSpecification |
Es un array de DeliveryChargeSpecification o un array de PaymentChargeSpecification. | Opcional |
Cuando se usa en Esta propiedad se puede usar en los siguientes tipos de ofertas:
Esta propiedad no se usa en los siguientes tipos de ofertas:
|
offeredBy |
Array de IDs de Restaurant |
Opcional | Representa los restaurantes en los que se ofrece este Si no se especifica, este Esta propiedad se puede usar en los siguientes tipos de ofertas:
Esta propiedad no se usa en los siguientes tipos de ofertas:
|
applicableFulfillmentMethod |
Array de texto | Opcional | Representa el tipo de servicio que entrega este Si no se especifica, este Esta propiedad se puede usar en los siguientes tipos de ofertas:
Esta propiedad no se usa en los siguientes tipos de ofertas:
|
@id |
URL | Obsoleto | Es el identificador único de la oferta. Dejó de estar disponible a partir del 25/4/19. Reemplázalo 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 el siguiente ejemplo de oferta, se muestra la disponibilidad de 8:00 a.m. a 10:00 a.m. los fines de semana:
{ "@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:00 a.m. a 10: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 del menú de complemento 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 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
. Se aplican los siguientes lineamientos para usar las
propiedades opens
y closes
:
- Las propiedades
opens
ycloses
son opcionales, pero se recomienda usarlas para indicar cuándo está disponible el pedido. La práctica recomendada para definir las horas disponibles es incluir un arraydeliveryHours
que contenga unServiceDeliveryHoursSpecification
con propiedadesopens
ycloses
. Luego, puedes incluir un objetoAdvanceServiceDeliveryHoursSpecification
endeliveryHours
con sus propias propiedadesopens
ycloses
si deseas ofrecer un período más limitado para pedidos por adelantado. - Si no se especifican
opens
ycloses
de forma explícita, se supone que el servicio de pedidos está disponible todos los días a todas horas. - La hora se debe especificar en la hora local del servicio. No incluyas una zona horaria en un valor
opens
ocloses
. Si se especifica una zona horaria, Google ignóra esta información. - Si
opens
ycloses
son iguales, suponemos que el restaurante está abierto durante 0 minutos. - Si
opens
es mayor quecloses
, se interpreta que la hora de cierre es del día siguiente. Por ejemplo, si la hora de apertura se establece en 5 p.m. del 1 de enero 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. - El tiempo de
closes
es exclusivo. Por lo tanto, si los horarios de apertura y cierre de este período de pedido se establecen a las 10 a.m. y a las 4 p.m., respectivamente, el último pedido es 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 |
Es el día de la semana para el que es válido este horario de atención. Los valores aceptables son “Monday”, “Tuesday”, “Wednesday”, “Thursday”, “Friday”, “Saturday” y “Sunday”. Por ejemplo: "dayOfWeek": [ "Monday", "Tuesday", "Wednesday", "Thursday", "Friday" ] Si no especificas ningún día de la semana, |
opens |
Time |
Opcional |
Cuando se usa en una especificación Cuando se usa en una especificación La hora se debe especificar en la hora local del servicio. No incluyas una zona horaria en un valor Para obtener más información, consulta Formatos de fecha y hora. |
closes |
Time |
Opcional |
Cuando se usa en una especificación La hora se debe especificar en la hora local del servicio. No incluyas una zona horaria en un valor Para obtener más información, consulta Formatos de fecha y hora. |
validFrom |
DateTime |
Opcional |
Cuando se usa en una especificación Por ejemplo, si las horas indicadas se aplican a todo el año 2017, debes establecer Cuando se usa en una especificación Si no se especifica esta propiedad en tu feed, Google supone que el restaurante o servicio está disponible todos los días. Además de la fecha, se requieren las partes de hora y zona horaria del valor. Para la zona horaria, usa la del restaurante o servicio. Para obtener más información, consulta Formatos de fecha y hora. |
validThrough |
DateTime |
Opcional |
Cuando se usa en un Por ejemplo, si las horas indicadas se aplican a todo el año 2017, debes establecer Cuando se usa en una especificación Si no se especifica esta propiedad en tu feed, Google supone que el restaurante o servicio está disponible todos los días. Además de la fecha, se requieren las partes de hora y zona horaria de la clase DateTime. Para la zona horaria, usa la del restaurante o servicio. El tiempo de Para obtener más información, consulta Formatos de fecha y hora. |
deliveryHours |
Arreglo de ServiceDeliveryHoursSpecification o arreglo de AdvanceServiceDeliveryHoursSpecification |
Condicional |
La especificación del horario de entrega o para llevar. Este parámetro es obligatorio, a menos que el restaurante esté cerrado (es decir, que
|
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"]
.
Y 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 embalaje 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 de devolución según gs1:ReturnablePackageDepositDetails. Por ejemplo, las botellas y latas tienen depósitos de paquetes recuperables. |
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 | Es el 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 | Es el volumen de transacciones, en una unidad monetaria, para el que es válida esta especificación de cargos de pago, como para indicar un volumen mínimo de compras. |
eligibleQuantity |
QuantitativeValue |
Opcional | 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 artículos en un pedido. |
validFrom |
DateTime |
Opcional | Es la fecha y la hora (incluida la zona horaria) en la 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 Formatos de fecha y hora. |
validThrough |
DateTime |
Opcional | Es la fecha y la hora (incluida la zona horaria) en la 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 a las 6 p.m., la hora es válida hasta las 5:59:59 p.m.
Para obtener más información, consulta 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 ampliar con UnitPriceSpecification ("@type": ["PaymentChargeSpecification", "UnitPriceSpecification"]
). La extensión proporciona dos propiedades adicionales necesarias para las tarifas del servicio calculadas en porcentajes.
propiedad | Tipo | Necesidad | Descripción |
referenceQuantity |
QuantitativeValue |
Obligatorio | Es la cantidad de referencia para la que se aplica un precio determinado. Por ejemplo, referenceQuantity de valor 10 con unitCode de "P1" da como resultado el 10% del valor del pedido. Actualmente, solo se admite unitCode "P1". |
basePrice |
Número | Opcional | Es el cargo base además de referenceQuantity . Por
ejemplo, referenceQuantity de 10 con unitCode
de "P1" y basePrice de 5 en USD da como resultado USD 5 + 10% del
valor del pedido. El valor predeterminado es 0. |
Ejemplos de tarifas de Takeout
Google te permite especificar una variedad de tarifas para los usuarios por adelantado con Offer.PriceSpecification
de la entidad de servicio.
Ten en cuenta que, por el momento, solo admitimos un PaymentChargeSpecification
. Combina todos los tipos de tarifas en un solo PaymentChargeSpecification
Si no hay ninguna tarifa, se omite Offer.PriceSpecification
.
- Ejemplo 1: La tarifa del servicio es el 5% del subtotal del carrito
- Ejemplo 2: La tarifa del servicio es de USD 5
- Ejemplo 3: La tarifa de la bolsa es de USD 0.1 y la tarifa del servicio es del 5% del subtotal del carrito
- Ejemplo 4: La tarifa de la bolsa es de USD 0.1 y la tarifa del servicio es de USD 1
- Ejemplo 5: La tarifa del servicio es 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* | Es la localidad o ciudad. Por ejemplo, “San Francisco”. |
addressRegion |
Texto | Obligatorio* | 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 entrega pueden enumerar estas propiedades para designar un Service.areaServed
en el que se proporciona un servicio.
Cuando se usa en Restaurant.address
, se requieren todas las propiedades que se enumeran en PostalAddress
.
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 | Es el precio más bajo si el precio es un rango. |
maxPrice |
Número | Opcional | Es el precio más alto si el precio es un rango. |
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 precios. Por ejemplo, el precio podría ser de USD 2 por libra o 2 artículos 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 un par de valores de propiedad que se usa para describir las 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 el tipo de la opción. Los siguientes son nombres válidos cuando se usan en
Nombres válidos cuando se usan en
|
value |
Texto | Obligatorio |
Es el valor de la opción. Los valores pueden ser cualquier cadena y se muestran como están. Los siguientes son valores válidos:
|
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 | Es el valor del valor cuantitativo o del 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 | Es el valor superior de alguna característica o propiedad. |
minValue |
Número | Opcional | Es 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 "Restaurant". |
@id |
URL | Obligatorio | Es el identificador único del restaurante o proveedor de entrega. Por ejemplo, "http://www.provider.com/326", en la que "326" es el identificador único del restaurante. |
name |
Texto | Obligatorio | Texto que puede identificar el Restaurant durante el proceso de pedido |
url |
URL | Obligatorio | Es la URL de tu dominio que representa al restaurante. Por ejemplo, "http://www.proveedor.com/restaurante-alguno". |
sameAs |
URL | Opcional | El sitio web oficial del restaurante Por ejemplo, "http://www.somerestaurant.com". |
email |
Texto | Opcional | Es el correo electrónico de contacto del restaurante. |
description |
Texto | Opcional | Es la descripción del restaurante. |
telephone |
Texto | Obligatorio |
Número de teléfono con el siguiente formato: "[+][country_code][phone_#_with_area_code]" Por ejemplo, “+16501234567”. |
priceRange |
Texto | Opcional | Un rango de precios Por ejemplo, "$$" ($-Inexpensive, $$-Moderate, $$$-Expensive, $$$$-Very Expensive). |
logo |
URL | Optional | Logo of the restaurant in PNG, JPG, or GIF format. For example, "http://www.somerestaurant.com/logo.png". |
image |
URL | Optional | Image of the restaurant. |
servesCuisine |
Array of Text | Optional | Food types that are served at the restaurant. For example,
["sushi","Asian fusion"] . |
address |
PostalAddress |
Required* | Address of the restaurant. |
geo |
GeoCoordinates |
Optional* | Geographic coordinates of the restaurant. |
suitableForDiet |
Array of RestrictedDiet |
Optional | Dietary restrictions this restaurant accommodates (like kosher, vegan, or gluten-free diets). It is an enumerated list. |
aggregateRating |
AggregateRating |
Optional | Overall rating, based on a collection of reviews or ratings of the restaurant. |
additionalProperty |
Array of name value string pairs | Optional |
A restaurant imprint is a section of additional information about the restaurant, such as legal name, legal address, and registration number. This information can be formatted using "\n". For example |
The following examples show the usage of the Restaurant
type:
Example 1
{ "@type": "Restaurant", "@id": "http://www.provider.com/somerestaurant", "url": "www.provider.com/somerestaurant", "name": "Some Restaurant", "sameAs": "http://www.somerestaurant.com", "image": "http://www.somerestaurant.com/image-of-some-restaurant.jpg", "description": "This is the Some Restaurant located on 345 Spear St. San Francisco, 94105 CA. It serves Indian-Mexican fusion cuisine", "address": { "@type": "PostalAddress", "addressLocality": "San Francisco", "addressRegion": "CA", "postalCode": "94105", "streetAddress": "345 Spear St", "addressCountry": "US" }, "geo": { "@type": "GeoCoordinates", "latitude": "37.391115", "longitude": "-122.081099" }, "aggregateRating": { "@type": "AggregateRating", "ratingValue": "4.4", "reviewCount": "89" }, "priceRange": "$$", "telephone": "+16501234567", // Country code (+1) is required "servesCuisine": [ "Indian-Mexican Fusion" ] },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 obtener más ejemplos de entidades
Restaurant
, consulta Ejemplos de feeds de restaurantes y menús.
ReturnablePackageDepositDetails
Para usar este tipo, agrega el contexto de gs1: "@context":
["http://gs1.org/voc/", "http://schema.org"]
Luego, agrega
FoodBeverageTobaccoProduct
al tipo deMenuItem
oMenuItemOption
apropiado.En la siguiente tabla, se describen las propiedades del tipo
ReturnablePackageDepositDetails
:
Propiedad Tipo Necesidad Descripción @type
Texto Obligatorio Siempre es "ReturnablePackageDepositDetails". returnablePackageDepositAmount
gs1:PriceSpecification
Opcional Es el importe del depósito de este artículo por 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 pedidos de extremo a extremo de un restaurante a una ubicación geográfica por parte de una organización de entrega.
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 debas 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 Descripción del artículo serviceType
Texto Obligatorio 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.proveedor.com/restaurante-alguno". areaServed
Array de GeoShape
,Place
oGeoCircle
Condicional Es el área geográfica en la que se proporciona un servicio. Este campo es opcional de forma predeterminada, pero es obligatorio si serviceType
es "DELIVERY".hoursAvailable
Array de OpeningHoursSpecification
Obligatorio Son las horas durante las que está disponible este servicio. specialOpeningHoursSpecification
Array de OpeningHoursSpecification
,ServiceDeliveryHoursSpecification
oAdvanceServiceDeliveryHoursSpecification
Opcional Son los tiempos que anula el
OpeningHoursSpecification
más general o los tiempos de entrega. Por lo general, se usa este campo para definir días festivos y otros tipos de cierres temporales o cambios en los horarios.Define el período especial con las propiedades
validFrom
yvalidThrough
. La hora y la zona horaria son obligatorias cuando se especifican estas propiedades.offers
Array de Offer
Condicional Son los detalles de la oferta de entrega de un restaurante específico. Este campo es opcional de forma predeterminada, pero obligatorio si
serviceType
es "DELIVERY".La propiedad
Offer.priceSpecification
es opcional en Service. No se usan otras propiedadesOffer
aquí.hasOfferCatalog
[ Menu
, OfferCatalog]Obligatorio Especifica un menú para este servicio. Puedes tener un menú diferente para cada uno de tus servicios (como para llevar, entrega a domicilio y catering).
Debes especificar
Menu
yOfferCatalog
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 del servicio. Se espera que los elementos sean un objeto con la clave
name
que corresponde al nombre de campo opcional. La clavevalue
es un valor relevante en el contexto 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 para un servicio de entrega 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, "potentialAction": { "url": "https://fopatestagent.com/ordering/restaurant-1/delivery" }
En el siguiente ejemplo, se muestra el uso del tipo de servicio:
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 servicios.
ServiceDeliveryHoursSpecification
Representa las horas de entrega para que los usuarios programen pedidos lo antes posible para entrega y para llevar.
Por lo general, el valor de
opens
es menor que el decloses
. Se aplican los siguientes lineamientos para usar las propiedadesopens
ycloses
:
- Las propiedades
opens
ycloses
son opcionales paraServiceDeliveryHoursSpecification
, 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
ocloses
. Si se especifica una zona horaria, Google ignorará la información de la zona horaria.- Si no se especifican
opens
ycloses
de forma explícita, asumimos que el pedido lo antes posible está disponible todos los días y en cualquier momento.- Si
opens
ycloses
son iguales, suponemos que el pedido lo antes posible no está disponible.- Si
opens
es mayor quecloses
, se interpreta que la hora de cierre es del día siguiente. Por ejemplo, si la hora de apertura se establece en 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.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 la hora (incluida la zona horaria) en la que se pueden entregar los pedidos lo antes 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.
Para obtener más información, consulta Formatos de fecha y hora.
validThrough
DateTime
Opcional Es la fecha y la hora (incluida la zona horaria) después de la cual no se pueden entregar los pedidos lo antes posible de los usuarios. Por ejemplo, "2017-05-01T07:00:00-07:00". Si esta propiedad no se establece, se supone que es válida todos los días.
El tiempo de
validThrough
es exclusivo. 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 Formatos de fecha y hora.
opens
Time
Opcional Hora en la que comienza el servicio de entrega para que se completen 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
opens
. Si se especifica una zona horaria, Google ignora esta información.Para obtener más información, consulta Formatos de fecha y hora.
closes
Time
Opcional La hora en la que ya no está disponible el servicio de entrega para los pedidos de los usuarios lo antes posible Por ejemplo, "T23:59:59".
El tiempo de
closes
es exclusivo. Por lo tanto, si estableces el horario de apertura y cierre de esteServiceDeliveryHoursSpecification
a las 10 a.m. y a las 4 p.m., el último pedido es 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
closes
. Si se especifica una zona horaria, Google ignora esta información.Para obtener más información, consulta Formatos de fecha y hora.
dayOfWeek
Array de DayOfWeek
Opcional Son los días de la semana en los que este servicio está disponible para los pedidos lo antes posible de los usuarios. Los siguientes son valores válidos:
- "Monday"
- "Tuesday"
- "Wednesday"
- "Thursday"
- "Friday"
- "Saturday"
- "Sunday"
Si no especificas ningún día de la semana,
ServiceDeliveryHoursSpecification
se aplica a todos los días.deliveryLeadTime
QuantitativeValue
Opcional Es el tiempo de entrega estimado, en minutos, una vez que se realiza el pedido. Te recomendamos que configures esta propiedad. Establece el campo value
deQuantitativeValue
en la cantidad de minutos yunitCode
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" } }Enumeraciones
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
Salvo que se indique lo contrario, el contenido de esta página está sujeto a la licencia Atribución 4.0 de Creative Commons, y los ejemplos de código están sujetos a la licencia Apache 2.0. Para obtener más información, consulta las políticas del sitio de Google Developers. Java es una marca registrada de Oracle o sus afiliados.
Última actualización: 2024-11-26 (UTC)