Os parceiros do Google podem fornecer dados estruturados de cardápio ao Google pela integração de ponta a ponta de reservas para uso na seção Cardápio do Perfil da Empresa no Google de um restaurante e em outros pontos de entrada nas plataformas de consumo do Google.
Os dados do menu são ingeridos usando os feeds genéricos. Antes de começar:
- Confirme se você concluiu a configuração da conta.
- Entenda o processo de upload de feed genérico
- Entenda como configurar sua conta para uploads de feed genérico
Criar e fazer upload de feeds de cardápio
Ao criar e fazer upload de feeds de cardápio, siga estas diretrizes e convenções:-
Para fornecer detalhes do restaurante, siga a especificação de dados descrita em Feed do comerciante.
Para um exemplo de arquivo JSON, consulte o JSON de exemplo.
Os nomes dos arquivos de dados precisam ser exclusivos entre os envios. Recomendamos incluir um carimbo de data/hora no nome do arquivo, por exemplo,
menu1_1633621547.json. -
No descritor do conjunto de arquivos do feed de cardápio, defina o campo
namecomogoogle.food_menu. Para ver um exemplo do conteúdo do arquivo de descritor, consulte o exemplo JSON do arquivo de descritor. Os nomes dos arquivos de descritor precisam ser exclusivos entre os envios. Recomendamos incluir um carimbo de data/hora no nome do arquivo, por exemplo,descriptor_1633621547.filesetdesc.json. O arquivo descritor precisa ser enviado para o servidor SFTP genérico como parte do feed de cardápio. - Os feeds precisam ser enviados para o servidor SFTP genérico diariamente como atualizações completas.
- Limite os feeds a 1.000 fragmentos (arquivos), conforme mencionado em Usar o sftp de feed genérico.
O status da ingestão de feeds pode ser encontrado na seção Ingestão > Histórico do portal de parceiros. As informações do servidor SFTP do feed podem ser encontradas na seção Configuração > Feeds do portal de parceiros.
O status da ingestão de feeds pode ser encontrado na seção Ingestão > Histórico do Portal de parceiros. As informações do servidor SFTP do feed podem ser encontradas na seção Configuração > Feeds do portal de parceiros.
Como trabalhar com opções de itens de menu
As opções de itens de menu podem ser especificadas usando o
proto MenuItemOption.
Os parceiros com vários conjuntos de opções obrigatórias para um único item de menu (por exemplo, um latte com opções de tamanho e leite) precisam decidir a melhor forma de mostrar essas opções no Google. O Google recomenda o seguinte:
- O feed de cardápio precisa corresponder ao site de pedidos do parceiro ou ao cardápio para consumo no local do restaurante, se você não tiver um site de pedidos para o local.
Se o item for exibido com um preço individual no site de pedidos, use um
MenuItem. Se o item for exibido com um preço base e várias opções, use umMenuItemOption. - Evite incluir uma longa lista de opções, por exemplo:
- Burrito de frango
- Burrito de frango com queijo
- Burrito de frango com salsa
- Burrito de frango com salsa e queijo
- Burrito de frango com guacamole
- Burrito de frango com guacamole e salsa
- As opções de itens do cardápio só são aceitas se o prato exigir que uma das opções seja selecionada. Por exemplo, ao pedir uma pizza, o tamanho é uma opção obrigatória. Opções de itens de menu para complementos (por exemplo, "opção de adicionar abacate") não são compatíveis e não devem ser incluídas em feeds.
O preço da opção de item do cardápio precisa ser o preço total do item com essa opção selecionada. O preço precisa ser definido para o item do menu ou para as opções dele, mas não para ambos.
Restaurantes com vários menus
Um único restaurante (entidade) só pode ter um cardápio. Para um restaurante que tem vários cardápios (por exemplo, almoço e jantar separados), você pode combinar todos em um só com MenuSections (ou seja, um cardápio com uma seção para almoço e outra para jantar). O menu resultante teria a seguinte estrutura:
- Menu
- Seção de almoço
- Sopas
- Sopa 1
- Sopa 2
- Sanduíches
- Sanduíche 1
- Sanduíche 2
- Seção de jantar
- Entradas
- Starter 1
- Starter 2
- Principais
- Prato principal 1
- Prato principal 2
Compartilhamento de cardápios entre restaurantes
Um único cardápio pode ser compartilhado em vários restaurantes ao incluir todos eles na lista merchant_ids do cardápio. Essa lista aceita IDs de entidades para parceiros que usam o feed Entidade.
Práticas recomendadas
Confira a seguir as práticas recomendadas para desenvolver feeds de cardápio.
- Associe apenas um menu a um restaurante.
- Forneça o idioma preferido como o primeiro idioma no TextField. Se você estiver enviando vários objetos LocalizedText, o primeiro objeto na lista de texto será exibido para os usuários.
- Todos os itens do cardápio precisam ser adicionados às seções do cardápio. Não adicione itens de menu diretamente ao objeto de menu.
- Forneça conteúdo usando a codificação UTF-8. Não é necessário usar escape em caracteres não ASCII.
- Se você estiver lançando em várias regiões, use os códigos de moeda e denominações corretos nos campos "unidades" e "nanos". Preste atenção especial ao campo "nanos", que é 10^-9 de uma unidade. Use o visualizador de cardápio no Visualizador de inventário para confirmar se você definiu os preços corretamente.
- Oferecer menus visualmente ricos, abrangentes e atualizados é fundamental para proporcionar uma experiência do usuário útil e envolvente. Preços, descrições, fotos e informações sobre dieta são elementos importantes para impulsionar a tomada de decisões. Por isso, incentivamos os parceiros a fornecer o máximo possível desses dados para oferecer uma experiência ideal para usuários e comerciantes.
- Para não mostrar um preço, inclua um proto Price vazio no proto Offer.
Ferramentas de desenvolvimento e teste
Depois que os feeds de cardápio forem lançados, os dados deles poderão aparecer nas experiências de descoberta e ficar visíveis na guia "Cardápio" da página do restaurante. A guia de menu é compatível com a Pesquisa Google (dispositivos móveis e computadores), e a experiência será expandida para outras plataformas, incluindo o Google Maps. A experiência renderizada pode variar dependendo da plataforma.
Para garantir que seu cardápio esteja estruturado corretamente, use o visualizador de cardápio no Visualizador de inventário para conferir uma prévia.
Os cardápios dos restaurantes podem vir de várias fontes, incluindo os próprios restaurantes pelo Perfil da Empresa no Google, parceiros de pedidos de comida e reservas, fotos de cardápios enviadas por usuários e muito mais. Se várias fontes fornecerem cardápios para o mesmo restaurante, o comerciante poderá escolher um provedor preferido no editor de cardápio do Perfil da Empresa no Google.
Esquema
Confira o esquema completo do menu aqui.
FoodMenuFeed
| Nome do campo | Tipo | Requisito | Descrição |
|---|---|---|---|
data | matriz de objeto(MenuComponent) |
MenuComponent
| Nome do campo | Tipo | Requisito | Descrição |
|---|---|---|---|
| oneOf(type) | Apenas um dos campos neste "oneOf" pode ser definido. |
| Nome do campo | Tipo | Requisito | Descrição |
|---|---|---|---|
menu_id | string | Obrigatório | Uma string opaca de um parceiro que identifica exclusivamente o menu no feed dele. Obrigatório. |
merchant_ids | matriz de strings | Obrigatório | Os comerciantes a quem o cardápio se aplica. Observação: esse campo é repetido para que as redes de restaurantes possam compartilhar o mesmo cardápio em vários locais, cada um deles sendo um comerciante separado. Obrigatório. |
display_name | object(TextField) | O nome que pode identificar o menu quando um usuário está navegando nele. Opcional. | |
language | string | O código de idioma padrão associado aos rótulos de texto contidos no menu. Espera um código de idioma BCP-47, como "en-US" ou "sr-Latn". Para mais informações, consulte http://www.unicode.org/reports/tr35/#Unicode_locale_identifier. Opcional. |
| Nome do campo | Tipo | Requisito | Descrição |
|---|---|---|---|
text | matriz de objeto(LocalizedText) | Obrigatório | Valores de texto por localidade. Se houver apenas uma localidade desejada, não será necessário definir o language_code em cada texto, e o idioma será inferido do idioma padrão do menu. Se houver vários textos em locais diferentes, o language_code precisará ser definido para cada texto. O primeiro texto da lista é considerado a representação preferida. Obrigatório. |
LocalizedText
Variante localizada de um texto em um idioma específico.
| Nome do campo | Tipo | Requisito | Descrição |
|---|---|---|---|
text | string | String localizada no idioma correspondente ao [language_code][google.type.LocalizedText.language_code] abaixo. | |
language_code | string | O código de idioma BCP-47 do texto, como "en-US" ou "sr-Latn". Para mais informações, consulte http://www.unicode.org/reports/tr35/#Unicode_locale_identifier. |
| Nome do campo | Tipo | Requisito | Descrição |
|---|---|---|---|
menu_section_id | string | Obrigatório | Uma string opaca de um parceiro que identifica exclusivamente o MenuSection no feed do parceiro. Obrigatório. |
display_name | object(TextField) | Obrigatório | O nome que pode identificar o MenuSection quando um usuário está navegando pelo menu. Obrigatório. |
description | object(TextField) | Uma descrição da seção do menu. Opcional. | |
images | matriz de objeto(Image) | Imagens da seção do cardápio. Opcional. |
| Nome do campo | Tipo | Requisito | Descrição |
|---|---|---|---|
uri | string | Obrigatório | URL que contém os pixels brutos da imagem. Obrigatório. |
| Nome do campo | Tipo | Requisito | Descrição |
|---|---|---|---|
menu_item_id | string | Obrigatório | Uma string opaca de um parceiro que identifica exclusivamente o MenuItem no feed do parceiro. Obrigatório. |
display_name | object(TextField) | Obrigatório | O nome que pode identificar o MenuItem quando um usuário está navegando pelo menu. Obrigatório. |
description | object(TextField) | Uma descrição do item de menu. Opcional. | |
images | matriz de objeto(Image) | Imagens do item do cardápio. Opcional. | |
| oneOf(pricing) | Obrigatório | Apenas um dos campos neste "oneOf" pode ser definido. |
item_attributes | object(MenuItemAttributes) | Atributos sobre este item de menu. Opcional. |
| Nome do campo | Tipo | Requisito | Descrição |
|---|---|---|---|
offers | matriz de objeto(Offer) | Obrigatório | Lista de ofertas possíveis. Obrigatório. |
| Nome do campo | Tipo | Requisito | Descrição |
|---|---|---|---|
price | object(Money) | Os casos a seguir são inválidos e vão resultar na remoção do item de menu: Preço sem código de moeda, mas com unidade ou nanos ou ambos: price {units: 100, nanos: 1000000} price {units: 100} price {nanos: 1000000} Preço com código de moeda inválido, mas com unidade ou nanos ou ambos: price {currency_code: 'gXYZ', units: 100, nanos: 1000000} price {currency_code: 'gXYZ', units: 100} price {currency_code: 'gXYZ', nanos: 1000000} Preço com código de moeda, mas unidades ou nanos inválidos price {currency_code: 'USD', units: 100, nanos: -100} price {currency_code: 'USD', units: -100, nanos: 100} |
Dinheiro
Representa um montante em dinheiro com o respectivo tipo de moeda.
| Nome do campo | Tipo | Requisito | Descrição |
|---|---|---|---|
currency_code | string | O código de moeda de três letras definido no ISO 4217. | |
units | string | As unidades inteiras do montante.
Por exemplo, se currencyCode for "USD", então 1 unidade equivalerá a um dólar americano. | |
nanos | número | Número de unidades nano (10^-9) do montante.
É necessário que o valor fique entre -999.999.999 e +999.999.999 (inclusive os dois limites).
Se units for positivo, nanos será positivo ou zero.
Se units for zero, nanos poderá ser positivo, zero ou negativo.
Se units for negativo, nanos será negativo ou zero.
Por exemplo,US $-1,75 é representado como units=-1 e nanos=-750.000.000. |
| Nome do campo | Tipo | Requisito | Descrição |
|---|---|---|---|
menu_item_option_ids | matriz de strings | Obrigatório | IDs das opções de itens de menu aplicáveis a este item de menu. Obrigatório. |
| Nome do campo | Tipo | Requisito | Descrição |
|---|---|---|---|
number_of_servings | número | Número de porções disponíveis em um determinado item do menu. Opcional. | |
nutrition_information | object(NutritionInformation) | Descreve todas as informações nutricionais do item, por exemplo, calorias e teor de gordura. Opcional. | |
suitable_diets | matriz de enum(DietaryRestriction) | As restrições alimentares que este item do menu atende. Opcional. | |
additive | matriz de objeto(Additive) | Aditivos deste item de menu. Opcional. | |
allergen | matriz de objeto(Allergen) | Alérgenos deste item de menu. Opcional. | |
packaging_deposit_info | object(DepositInfo) | Informações sobre embalagem e reciclagem deste item de menu. Opcional. |
| Nome do campo | Tipo | Requisito | Descrição |
|---|---|---|---|
energy | object(NutritionValue) | A quantidade de energia nutricional da porção de alimento. Pode ser definido em calorias ou quilojoules. Opcional. | |
sodium_content | object(NutritionValue) | A quantidade de sódio, medida em gramas ou miligramas. Opcional. | |
serving_size | número | O número de porções a que o valor nutricional se aplica. Opcional. | |
description | object(TextField) | Informações nutricionais em texto livre. Por exemplo, "Contém conservantes". Opcional. |
| Nome do campo | Tipo | Requisito | Descrição |
|---|---|---|---|
| oneOf(value) | Apenas um dos campos neste "oneOf" pode ser definido. | |
unit | enum(NutritionValueUnit) | Obrigatório | A unidade associada ao valor, conforme especificado pelo parceiro. Vamos validar o feed para que a unidade de cada tipo de valor nutricional seja esperada para esse tipo de valor. Por exemplo, apenas ENERGY_CALORIES e ENERGY_KILOJOULES são esperados na propriedade "energia" de NutritionalInformation. Obrigatório. |
| Nome do campo | Tipo | Requisito | Descrição |
|---|---|---|---|
min | número | Obrigatório | A quantidade mínima de valor nutricional. Obrigatório. |
max | número | Obrigatório | A quantidade máxima de valor nutricional. Obrigatório. |
| Nome do campo | Tipo | Requisito | Descrição |
|---|---|---|---|
name | object(TextField) | Obrigatório | Texto descritivo do aditivo, por exemplo, "conservantes". Obrigatório. |
containment_level_code | enum(ContainmentLevelCode) | Se o MenuItem contém, pode conter ou não tem esse aditivo. O padrão é "contém". Opcional. |
| Nome do campo | Tipo | Requisito | Descrição |
|---|---|---|---|
allergen_type_code | enum(AllergenTypeCode) | Obrigatório | Tipo de alérgeno. Obrigatório. |
containment_level_code | enum(ContainmentLevelCode) | Se o MenuItem contém, pode conter ou não tem esse alérgeno. O padrão é "contém". Opcional. |
| Nome do campo | Tipo | Requisito | Descrição |
|---|---|---|---|
deposit_code | enum(DepositCode) | A estratégia de depósito a ser usada, por exemplo, "reusable". Opcional. | |
deposit_value | object(Money) | Valor reembolsado por depositar o item corretamente. Opcional. |
| Nome do campo | Tipo | Requisito | Descrição |
|---|---|---|---|
menu_item_option_id | string | Obrigatório | Uma string opaca de um parceiro que identifica exclusivamente o MenuItemOption no feed do parceiro. Obrigatório. |
value | object(MenuItemOptionProperty) | Obrigatório | Propriedade e valor da opção, por exemplo, "Tamanho: pequeno". Obrigatório. |
| Nome do campo | Tipo | Requisito | Descrição |
|---|---|---|---|
property_type | enum(PropertyType) | Obrigatório | O tipo dessa propriedade de opção. Obrigatório. |
| oneOf(value) | Obrigatório | Apenas um dos campos neste "oneOf" pode ser definido. |
NutritionValueUnit
| Nome | Descrição |
|---|---|
NUTRITION_VALUE_UNIT_UNSPECIFIED | Não use. A unidade de valor nutricional não está definida explicitamente. |
ENERGY_CALORIES | Unidades usadas para expressar a quantidade de energia em um item de menu. |
ENERGY_KILOJOULES | |
WEIGHT_MILLIGRAMS | Unidades usadas para expressar a quantidade em peso de uma substância presente no item de menu. |
WEIGHT_GRAMS |
DietaryRestriction
Indica uma restrição ou diretriz alimentar seguida durante o preparo de alimentos.
| Nome | Descrição |
|---|---|
DIET_UNSPECIFIED | Não use. A restrição alimentar não foi especificada explicitamente. |
DIET_DIABETIC | |
DIET_GLUTEN_FREE | |
DIET_HALAL | |
DIET_HINDU | |
DIET_KOSHER | |
DIET_LOW_CALORIE | |
DIET_LOW_FAT | |
DIET_LOW_LACTOSE | |
DIET_LOW_SALT | |
DIET_VEGAN | |
DIET_VEGETARIAN |
ContainmentLevelCode
Indica o nível de contenção de um item alimentar de um determinado atributo, como alérgenos ou aditivos.
| Nome | Descrição |
|---|---|
CONTAINMENT_LEVEL_CODE_UNSPECIFIED | Não use. O código do nível de contenção não foi especificado explicitamente. |
CONTAINMENT_LEVEL_CODE_CONTAINS | |
CONTAINMENT_LEVEL_CODE_DOES_NOT_CONTAIN | |
CONTAINMENT_LEVEL_CODE_MAY_CONTAIN |
AllergenTypeCode
Tipo de alérgeno derivado do GS1: http://gs1.org/voc/AllergenTypeCode
| Nome | Descrição |
|---|---|
ALLERGEN_TYPE_CODE_UNSPECIFIED | Não use. O código do tipo de alérgeno não foi especificado explicitamente. |
ALLERGEN_TYPE_CODE_ALMONDS | |
ALLERGEN_TYPE_CODE_ALPHA_ISOMETHYL_IONONE | |
ALLERGEN_TYPE_CODE_ALCOHOL | |
ALLERGEN_TYPE_CODE_AMYL_CINNAMAL | |
ALLERGEN_TYPE_CODE_ANISE_ALCOHOL | |
ALLERGEN_TYPE_CODE_BARLEY | |
ALLERGEN_TYPE_CODE_BENZYL_ALCOHOL | |
ALLERGEN_TYPE_CODE_BENZYL_BENZOATE | |
ALLERGEN_TYPE_CODE_BENZYL_CINNAMATE | |
ALLERGEN_TYPE_CODE_BENZYL_SALICYLATE | |
ALLERGEN_TYPE_CODE_BRAZIL_NUTS | |
ALLERGEN_TYPE_CODE_BUTYLPHENYL_METHYLPROPIONATE | |
ALLERGEN_TYPE_CODE_CARROTS | |
ALLERGEN_TYPE_CODE_CASHEW_NUTS | |
ALLERGEN_TYPE_CODE_CELERY | |
ALLERGEN_TYPE_CODE_CEREALS_CONTAINING_GLUTEN | |
ALLERGEN_TYPE_CODE_CINNAMAL | |
ALLERGEN_TYPE_CODE_CINNAMYL_ALCOHOL | |
ALLERGEN_TYPE_CODE_CITRAL | |
ALLERGEN_TYPE_CODE_CITRONELLOL | |
ALLERGEN_TYPE_CODE_COCOA | |
ALLERGEN_TYPE_CODE_CORIANDER | |
ALLERGEN_TYPE_CODE_CORN | |
ALLERGEN_TYPE_CODE_COUMARIN | |
ALLERGEN_TYPE_CODE_CRUSTACEANS | |
ALLERGEN_TYPE_CODE_EGGS | |
ALLERGEN_TYPE_CODE_EUGENOL | |
ALLERGEN_TYPE_CODE_EVERNIA_FURFURACEA | |
ALLERGEN_TYPE_CODE_EVERNIA_PRUNASTRI | |
ALLERGEN_TYPE_CODE_FARNESOL | |
ALLERGEN_TYPE_CODE_FISH | |
ALLERGEN_TYPE_CODE_GERANIOL | |
ALLERGEN_TYPE_CODE_GLUTEN | |
ALLERGEN_TYPE_CODE_HAZELNUTS | |
ALLERGEN_TYPE_CODE_HEXYL_CINNAMAL | |
ALLERGEN_TYPE_CODE_HYDROXYCITRONELLAL | |
ALLERGEN_TYPE_CODE_HYDROXYISOHEXYL_3_CYCLOHEXENE_CARBOXALDEHYDE_ISOEUGENOL_LIMONENE_LINAL | |
ALLERGEN_TYPE_CODE_KAMUT | |
ALLERGEN_TYPE_CODE_LACTOSE | |
ALLERGEN_TYPE_CODE_LUPINE | |
ALLERGEN_TYPE_CODE_MACADAMIA_NUTS | |
ALLERGEN_TYPE_CODE_METHYL_2_OCTYNOATE | |
ALLERGEN_TYPE_CODE_MILK | |
ALLERGEN_TYPE_CODE_MOLLUSCS | |
ALLERGEN_TYPE_CODE_MUSTARD | |
ALLERGEN_TYPE_CODE_NO_DECLARED_ALLERGENS | |
ALLERGEN_TYPE_CODE_OAT | |
ALLERGEN_TYPE_CODE_PEANUTS | |
ALLERGEN_TYPE_CODE_PEAS | |
ALLERGEN_TYPE_CODE_PECAN_NUTS | |
ALLERGEN_TYPE_CODE_PISTACHIOS | |
ALLERGEN_TYPE_CODE_POD_FRUITS | |
ALLERGEN_TYPE_CODE_QUEENSLAND_NUTS | |
ALLERGEN_TYPE_CODE_RYE | |
ALLERGEN_TYPE_CODE_SESAME_SEEDS | |
ALLERGEN_TYPE_CODE_SOYBEANS | |
ALLERGEN_TYPE_CODE_SPELT | |
ALLERGEN_TYPE_CODE_SULPHUR_DIOXIDE | |
ALLERGEN_TYPE_CODE_TREE_NUTS | |
ALLERGEN_TYPE_CODE_TREE_NUT_TRACES | |
ALLERGEN_TYPE_CODE_WALNUTS | |
ALLERGEN_TYPE_CODE_WHEAT |
DepositCode
Indica como depositar corretamente um alimento ou uma garrafa.
| Nome | Descrição |
|---|---|
DEPOSIT_CODE_UNSPECIFIED | Não use. O código de depósito não foi especificado explicitamente. |
DEPOSIT_CODE_REUSABLE | |
DEPOSIT_CODE_RECYCLABLE |
PropertyType
Tipos de propriedade para os quais a opção é válida.
| Nome | Descrição |
|---|---|
UNKNOWN_PROPERTY_TYPE | Não use. O tipo de propriedade não foi especificado explicitamente. |
OPTION | Uma propriedade genérica de opção de item de menu, que não é um dos tipos mais específicos abaixo. Use isso se a propriedade não for do tipo SIZE ou PIZZA_SIDE. |
SIZE | Denota a propriedade de opção de item de menu de tamanho (por exemplo, pequeno, médio ou grande). |
PIZZA_SIDE | Propriedade específica para pizzas. Por exemplo, esse MenuItemOption só é válido para uma porção/pizza inteira, como recheio de cogumelos no lado esquerdo, direito ou na pizza inteira. |
PropertyValue
Valores bem definidos para a propriedade "option".
| Nome | Descrição |
|---|---|
UNKNOWN_PROPERTY_VALUE | Não use. O valor da propriedade não foi especificado explicitamente. |
PIZZA_SIDE_LEFT | O MenuItemOption se aplica apenas ao lado esquerdo de uma pizza. |
PIZZA_SIDE_RIGHT | O MenuItemOption se aplica apenas ao lado direito de uma pizza. |
PIZZA_SIDE_WHOLE | O MenuItemOption se aplica a toda a pizza. |
tipo
| Nome do campo | Tipo | Requisito | Descrição |
|---|---|---|---|
menu | object(Menu) | Mutuamente exclusivo com | |
section | object(MenuSection) | Mutuamente exclusivo com | |
item | object(MenuItem) | Mutuamente exclusivo com | |
option | object(MenuItemOption) | Mutuamente exclusivo com |
| Nome do campo | Tipo | Requisito | Descrição |
|---|---|---|---|
offer_set | object(OfferSet) | Mutuamente exclusivo com | Ofertas disponíveis para comprar esse alimento. |
menu_item_option_set | object(MenuItemOptionSet) | Mutuamente exclusivo com | Opções disponíveis para este item de menu. |
| Nome do campo | Tipo | Requisito | Descrição |
|---|---|---|---|
amount | número | Mutuamente exclusivo com | Um único número que representa a quantidade de valor nutricional. |
range | object(Range) | Mutuamente exclusivo com | Um intervalo que representa a quantidade de valor nutricional. |
| Nome do campo | Tipo | Requisito | Descrição |
|---|---|---|---|
property_val | enum(PropertyValue) | Mutuamente exclusivo com | Um valor bem definido para a propriedade "option". No momento, só é esperado se o "property_type" for PIZZA_SIDE. |
text_val | object(TextField) | Mutuamente exclusivo com | Um texto de formato livre para o valor da propriedade. Esperado para property_type OPTION e SIZE. |