Les partenaires Google peuvent fournir des données de menu structurées à Google via l'intégration de bout en bout des réservations. Ces données sont utilisées dans la section Menu de la fiche d'établissement Google d'un restaurant et dans d'autres points d'entrée sur les surfaces Google destinées aux consommateurs.
Les données de menu sont ingérées à l'aide des flux génériques. Avant de commencer :
- Assurez-vous d'avoir terminé la configuration de votre compte.
- Comprendre le processus d'importation de flux génériques
- Découvrez comment configurer votre compte pour importer des flux génériques.
Créer et importer des flux de menus
Lorsque vous créez et importez des flux de menus, suivez ces consignes et conventions :-
Pour fournir des informations sur les restaurants, suivez les spécifications de données décrites dans Flux des marchands.
Pour obtenir un exemple de fichier JSON, consultez l'exemple de fichier JSON.
Les noms de fichiers de données doivent être uniques entre les importations. Il est recommandé d'inclure un code temporel dans le nom du fichier, par exemple
menu1_1633621547.json. -
Dans le descripteur de fichier pour le flux de menus, définissez le champ
namesurgoogle.food_menu. Pour voir un exemple du contenu du fichier descripteur, consultez l'exemple JSON de fichier descripteur. Les noms des fichiers descripteurs doivent être uniques entre les importations. Nous vous recommandons d'inclure un code temporel dans le nom de fichier, par exempledescriptor_1633621547.filesetdesc.json. Le fichier descripteur doit être importé sur le serveur SFTP générique en tant qu'élément du flux de menu. - Les flux doivent être importés sur le serveur SFTP générique tous les jours pour être actualisés complètement.
- Limitez les flux à 1 000 partitions (fichiers), comme indiqué dans Utiliser le SFTP de flux générique.
L'état de l'ingestion des flux est indiqué dans la section Ingestion > Historique du portail des partenaires. Les informations sur le serveur SFTP des flux sont disponibles dans la section Configuration > Flux du portail des partenaires.
L'état de l'ingestion des flux est indiqué dans la section Ingestion > Historique du portail des partenaires. Les informations sur le serveur SFTP des flux sont disponibles dans la section Configuration > Flux du portail des partenaires.
Utiliser les options des éléments de menu
Les options des éléments de menu peuvent être spécifiées à l'aide du proto MenuItemOption.
Les partenaires qui proposent plusieurs ensembles d'options obligatoires pour un même élément de menu (par exemple, un latte avec des options de taille et de lait) doivent choisir la meilleure façon d'afficher ces options sur Google. Google recommande les pratiques suivantes :
- Le flux de menus doit correspondre au site de commande du partenaire (ou au menu du restaurant si vous n'avez pas de site de commande pour l'établissement).
Si l'article est affiché avec un prix individuel sur le site de commande, vous devez utiliser
MenuItem. Si l'article est affiché avec un prix de base et plusieurs options, unMenuItemOptiondoit être utilisé. - Évitez d'inclure une longue liste d'options, par exemple :
- Burrito au poulet
- Burrito au poulet et au fromage
- Burrito au poulet avec salsa
- Burrito au poulet avec salsa et fromage
- Burrito au poulet avec guacamole
- Burrito au poulet avec guacamole et salsa
- Les options de menu ne sont acceptées que si le plat nécessite la sélection d'une des options. Par exemple, lorsque vous commandez une pizza, la taille est une option obligatoire. Les options d'éléments de menu qui concernent les modules complémentaires (par exemple, "option pour ajouter de l'avocat") ne sont pas prises en charge et ne doivent pas être incluses dans les flux.
Le prix de l'option d'un élément de menu doit correspondre au prix total de l'élément avec cette option sélectionnée. Le prix doit être défini pour l'élément de menu ou pour ses options, mais pas pour les deux.
Restaurants avec plusieurs menus
Un restaurant (entité) ne peut avoir qu'un seul menu. Pour un restaurant qui propose plusieurs menus (par exemple, un menu du midi et un menu du soir distincts), vous pouvez combiner tous les menus en un seul à l'aide de MenuSections (par exemple, un menu avec une section pour le midi et une section pour le soir). Le menu obtenu aurait la structure suivante :
- Menu
- Section "Déjeuner"
- Soupes
- Soupe 1
- Soupe 2
- Sandwichs
- Sandwich 1
- Sandwich 2
- Section "Dîner"
- Titulaires
- Déclencheur 1
- Starter 2
- Secteur
- Plat principal 1
- Plat principal 2
Partager des menus entre restaurants
Un même menu peut être partagé entre plusieurs restaurants en incluant tous les restaurants dans la liste merchant_ids du menu. Notez que cette liste accepte les ID d'entité pour les partenaires utilisant le flux Entité.
Bonnes pratiques
Voici les bonnes pratiques à suivre lorsque vous développez des flux de menus.
- N'associez qu'un seul menu à un restaurant.
- Indiquez la langue de votre choix comme première langue dans le TextField. Si vous envoyez plusieurs objets LocalizedText, le premier objet de la liste de texte est affiché aux utilisateurs.
- Tous les éléments de menu doivent être ajoutés aux sections de menu. N'ajoutez pas d'éléments de menu directement à l'objet de menu.
- Fournissez du contenu en utilisant l'encodage UTF-8. Il n'est pas nécessaire d'échapper les caractères non ASCII.
- Si vous lancez votre application dans plusieurs régions, assurez-vous d'utiliser les codes de devise et les dénominations appropriés dans les champs "unités" et "nanos". Soyez particulièrement vigilant avec le champ "nanos", qui correspond à 10^-9 unité. Utilisez le visualiseur de menu dans l'outil de visualisation de l'inventaire pour vérifier que vous avez correctement défini les prix.
- Pour offrir aux utilisateurs une expérience utile et attrayante, il est essentiel de leur proposer des menus complets, récents et visuellement riches. Les prix, les descriptions, les photos et les informations sur les régimes alimentaires sont des éléments clés pour aider les utilisateurs à prendre des décisions. Nous encourageons les partenaires à fournir autant de données que possible pour offrir une expérience optimale aux utilisateurs et aux marchands.
- Pour ne pas afficher de prix, incluez un proto Price vide dans le proto Offer.
Outils de développement et de test
Une fois les flux de menus lancés, les données de votre flux de menus pourront s'afficher dans les expériences de découverte et dans l'onglet "Menu" de la fiche de votre restaurant. L'onglet "Menu" est disponible dans la recherche Google (sur mobile et ordinateur). Il sera bientôt disponible sur d'autres surfaces, y compris Google Maps. L'expérience de rendu peut varier en fonction de la surface.
Pour vous assurer que votre menu est structuré correctement, utilisez le visualiseur de menu dans Inventory Viewer pour prévisualiser vos menus.
Les menus de restaurants peuvent provenir de nombreuses sources, y compris des restaurants eux-mêmes via leur fiche d'établissement Google, des partenaires de commande de repas et de réservation, des photos de menus prises par les utilisateurs, etc. Si plusieurs sources fournissent des menus pour le même restaurant, le marchand peut choisir un fournisseur de son choix dans l'éditeur de menus de la fiche d'établissement Google.
Schéma
Le schéma complet du menu est disponible ici.
FoodMenuFeed
| Nom du champ | Type | Exigence | Description |
|---|---|---|---|
data | Tableau d'objets(MenuComponent) |
MenuComponent
| Nom du champ | Type | Exigence | Description |
|---|---|---|---|
| oneOf(type) | Un seul des champs de ce oneOf peut être défini. |
| Nom du champ | Type | Exigence | Description |
|---|---|---|---|
menu_id | chaîne | Obligatoire | Chaîne opaque provenant d'un partenaire qui identifie de manière unique le menu dans le flux du partenaire. Obligatoire. |
merchant_ids | tableau de chaînes | Obligatoire | Marchands auxquels le menu s'applique. Remarque : Ce champ est répété afin que les chaînes de restaurants puissent partager le même menu dans plusieurs établissements, chacun étant un marchand distinct. Obligatoire. |
display_name | object(TextField) | Nom permettant d'identifier le menu lorsqu'un utilisateur le parcourt. Facultatif. | |
language | chaîne | Code de langue par défaut associé aux libellés textuels contenus dans le menu. Code de langue BCP-47 attendu, tel que "en-US" ou "sr-Latn". Pour en savoir plus, consultez http://www.unicode.org/reports/tr35/#Unicode_locale_identifier. Facultatif. |
| Nom du champ | Type | Exigence | Description |
|---|---|---|---|
text | Tableau d'objets(LocalizedText) | Obligatoire | Valeurs textuelles par paramètre régional. Si vous ne souhaitez prendre en charge qu'un seul paramètre régional, il n'est pas nécessaire de définir le language_code dans chaque texte. La langue sera déduite de la langue par défaut du menu. S'il existe plusieurs textes dans différentes langues, le language_code doit être défini pour chacun d'eux. Le premier texte de la liste est considéré comme la représentation préférée. Obligatoire. |
LocalizedText
Variante localisée d'un texte dans une langue spécifique.
| Nom du champ | Type | Exigence | Description |
|---|---|---|---|
text | chaîne | Chaîne localisée dans la langue correspondant à [language_code][google.type.LocalizedText.language_code] ci-dessous. | |
language_code | chaîne | Code de langue BCP-47 du texte, tel que "en-US" ou "sr-Latn". Pour en savoir plus, consultez http://www.unicode.org/reports/tr35/#Unicode_locale_identifier. |
| Nom du champ | Type | Exigence | Description |
|---|---|---|---|
menu_section_id | chaîne | Obligatoire | Chaîne opaque provenant d'un partenaire qui identifie de manière unique la section de menu dans le flux du partenaire. Obligatoire. |
display_name | object(TextField) | Obligatoire | Nom permettant d'identifier la section du menu lorsqu'un utilisateur parcourt le menu. Obligatoire. |
description | object(TextField) | Description de la section du menu. Facultatif. | |
images | Tableau d'objets(Image) | Image(s) de la section du menu. Facultatif. |
| Nom du champ | Type | Exigence | Description |
|---|---|---|---|
uri | chaîne | Obligatoire | URL contenant les pixels bruts de l'image. Obligatoire. |
| Nom du champ | Type | Exigence | Description |
|---|---|---|---|
menu_item_id | chaîne | Obligatoire | Chaîne opaque provenant d'un partenaire qui identifie de manière unique le MenuItem dans le flux du partenaire. Obligatoire. |
display_name | object(TextField) | Obligatoire | Nom permettant d'identifier le MenuItem lorsqu'un utilisateur parcourt le menu. Obligatoire. |
description | object(TextField) | Description de l'élément de menu. Facultatif. | |
images | Tableau d'objets(Image) | Image(s) de l'élément de menu. Facultatif. | |
| oneOf(pricing) | Obligatoire | Un seul des champs de ce oneOf peut être défini. |
item_attributes | object(MenuItemAttributes) | Attributs de cet élément de menu. Facultatif. |
| Nom du champ | Type | Exigence | Description |
|---|---|---|---|
offers | Tableau d'objets(Offer) | Obligatoire | Liste des offres possibles. Obligatoire. |
| Nom du champ | Type | Exigence | Description |
|---|---|---|---|
price | object(Money) | Les cas suivants ne sont pas valides et entraîneront la suppression de l'élément de menu : Prix sans code de devise, mais avec une unité ou des nanos, ou les deux : price {units: 100, nanos: 1000000} price {units: 100} price {nanos: 1000000} Prix avec un code de devise non valide, mais avec une unité ou des nanos, ou les deux : price {currency_code: 'gXYZ', units: 100, nanos: 1000000} price {currency_code: 'gXYZ', units: 100} price {currency_code: 'gXYZ', nanos: 1000000} Prix avec un code de devise, mais avec des unités ou des nanos non valides : price {currency_code: 'USD', units: 100, nanos: -100} price {currency_code: 'USD', units: -100, nanos: 100} |
Valeur monétaire
Représente un montant associé à un type de devise.
| Nom du champ | Type | Exigence | Description |
|---|---|---|---|
currency_code | chaîne | Code de devise à trois lettres défini par la norme ISO 4217. | |
units | chaîne | Unités entières du montant.
Par exemple, si currencyCode est défini sur "USD", une unité correspond à un dollar américain. | |
nanos | nombre | Nombre de nano-unités (10^-9) du montant.
La valeur doit être comprise entre -999 999 999 et +999 999 999 inclus.
Si units est positif, nanos doit être positif ou nul.
Si units est égal à zéro, nanos peut être positif, nul ou négatif.
Si units est négatif, nanos doit être négatif ou nul.
Par exemple, -1,75 $ est représenté par units=-1 et nanos=-750 000 000. |
| Nom du champ | Type | Exigence | Description |
|---|---|---|---|
menu_item_option_ids | tableau de chaînes | Obligatoire | ID des options de menu applicables à cet élément de menu. Obligatoire. |
| Nom du champ | Type | Exigence | Description |
|---|---|---|---|
number_of_servings | nombre | Nombre de portions disponibles dans un élément de menu donné. Facultatif. | |
nutrition_information | object(NutritionInformation) | Décrit toutes les informations nutritionnelles de l'article, par exemple les calories et la teneur en matières grasses. Facultatif. | |
suitable_diets | tableau d'énumérations(DietaryRestriction) | Restrictions alimentaires auxquelles cet élément de menu est conforme. Facultatif. | |
additive | Tableau d'objets(Additive) | Additifs de cet élément de menu. Facultatif. | |
allergen | Tableau d'objets(Allergen) | Allergènes de cet élément de menu. Facultatif. | |
packaging_deposit_info | object(DepositInfo) | Informations sur l'emballage et le recyclage de cet élément de menu. Facultatif. |
| Nom du champ | Type | Exigence | Description |
|---|---|---|---|
energy | object(NutritionValue) | Quantité d'énergie nutritionnelle de la portion d'aliment. Peut être défini en calories ou en kilojoules. Facultatif. | |
sodium_content | object(NutritionValue) | La quantité de sodium, mesurée en grammes ou en milligrammes. Facultatif. | |
serving_size | nombre | Nombre de portions auxquelles s'applique la valeur nutritionnelle. Facultatif. | |
description | object(TextField) | Informations nutritionnelles au format texte libre. Par exemple, "Contient des conservateurs". Facultatif. |
| Nom du champ | Type | Exigence | Description |
|---|---|---|---|
| oneOf(value) | Un seul des champs de ce oneOf peut être défini. | |
unit | enum(NutritionValueUnit) | Obligatoire | Unité associée au montant, telle que spécifiée par le partenaire. Nous validerons le flux afin que l'unité de chaque type de valeur nutritionnelle soit celle attendue pour ce type de valeur. Par exemple, seules les valeurs ENERGY_CALORIES et ENERGY_KILOJOULES sont attendues pour la propriété énergétique de NutritionalInformation. Obligatoire. |
| Nom du champ | Type | Exigence | Description |
|---|---|---|---|
min | nombre | Obligatoire | Quantité minimale de valeur nutritionnelle. Obligatoire. |
max | nombre | Obligatoire | Quantité maximale de valeur nutritionnelle. Obligatoire. |
| Nom du champ | Type | Exigence | Description |
|---|---|---|---|
name | object(TextField) | Obligatoire | Texte descriptif de l'additif, par exemple "conservateurs". Obligatoire. |
containment_level_code | enum(ContainmentLevelCode) | Indique si le MenuItem contient, peut contenir ou est exempt de cet additif. La valeur par défaut est "contains" (contient). Facultatif. |
| Nom du champ | Type | Exigence | Description |
|---|---|---|---|
allergen_type_code | enum(AllergenTypeCode) | Obligatoire | Type d'allergène. Obligatoire. |
containment_level_code | enum(ContainmentLevelCode) | Indique si le MenuItem contient, peut contenir ou ne contient pas cet allergène. La valeur par défaut est "contains" (contient). Facultatif. |
| Nom du champ | Type | Exigence | Description |
|---|---|---|---|
deposit_code | enum(DepositCode) | Stratégie de dépôt à utiliser, par exemple "reusable". Facultatif. | |
deposit_value | object(Money) | Valeur remboursée pour le dépôt correct de l'article. Facultatif. |
| Nom du champ | Type | Exigence | Description |
|---|---|---|---|
menu_item_option_id | chaîne | Obligatoire | Chaîne opaque provenant d'un partenaire qui identifie de manière unique l'option MenuItemOption dans le flux du partenaire. Obligatoire. |
value | object(MenuItemOptionProperty) | Obligatoire | Propriété et valeur de l'option, par exemple "Taille : Petite". Obligatoire. |
| Nom du champ | Type | Exigence | Description |
|---|---|---|---|
property_type | enum(PropertyType) | Obligatoire | Type de propriété de cette option. Obligatoire. |
| oneOf(value) | Obligatoire | Un seul des champs de ce oneOf peut être défini. |
NutritionValueUnit
| Nom | Description |
|---|---|
NUTRITION_VALUE_UNIT_UNSPECIFIED | Ne pas utiliser. L'unité de valeur nutritionnelle n'est pas explicitement définie. |
ENERGY_CALORIES | Unités utilisées pour exprimer la quantité d'énergie dans un élément de menu. |
ENERGY_KILOJOULES | |
WEIGHT_MILLIGRAMS | Unités utilisées pour exprimer la quantité d'une substance présente dans l'élément de menu (en poids). |
WEIGHT_GRAMS |
DietaryRestriction
Indique une restriction ou une directive alimentaire respectée lors de la préparation des aliments.
| Nom | Description |
|---|---|
DIET_UNSPECIFIED | Ne pas utiliser. La restriction alimentaire n'est pas explicitement spécifiée. |
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
Indique le niveau de confinement d'un aliment par rapport à un certain attribut, comme les allergènes ou les additifs.
| Nom | Description |
|---|---|
CONTAINMENT_LEVEL_CODE_UNSPECIFIED | Ne pas utiliser. Le code de niveau de confinement n'est pas spécifié explicitement. |
CONTAINMENT_LEVEL_CODE_CONTAINS | |
CONTAINMENT_LEVEL_CODE_DOES_NOT_CONTAIN | |
CONTAINMENT_LEVEL_CODE_MAY_CONTAIN |
AllergenTypeCode
Type d'allergène dérivé de GS1 : http://gs1.org/voc/AllergenTypeCode
| Nom | Description |
|---|---|
ALLERGEN_TYPE_CODE_UNSPECIFIED | Ne pas utiliser. Le code de type d'allergène n'est pas explicitement spécifié. |
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
Indique comment déposer correctement un aliment ou une bouteille.
| Nom | Description |
|---|---|
DEPOSIT_CODE_UNSPECIFIED | Ne pas utiliser. Le code de dépôt n'est pas spécifié explicitement. |
DEPOSIT_CODE_REUSABLE | |
DEPOSIT_CODE_RECYCLABLE |
PropertyType
Types de propriétés auxquels l'option s'applique.
| Nom | Description |
|---|---|
UNKNOWN_PROPERTY_TYPE | Ne pas utiliser. Le type de propriété n'est pas explicitement spécifié. |
OPTION | Propriété d'option de menu générique, qui n'appartient pas aux types plus spécifiques ci-dessous. Utilisez cette option si la propriété n'est pas de type SIZE ou PIZZA_SIDE. |
SIZE | Indique la propriété de taille de l'option du menu (par exemple, petite, moyenne ou grande). |
PIZZA_SIDE | Propriété spécifique aux pizzas. Par exemple, cette MenuItemOption n'est valable que pour une partie ou une pizza entière (par exemple, des champignons sur le côté gauche, le côté droit ou toute la pizza). |
PropertyValue
Valeurs bien définies pour la propriété de l'option.
| Nom | Description |
|---|---|
UNKNOWN_PROPERTY_VALUE | Ne pas utiliser. La valeur de la propriété n'est pas spécifiée explicitement. |
PIZZA_SIDE_LEFT | MenuItemOption ne s'applique qu'au côté gauche d'une pizza. |
PIZZA_SIDE_RIGHT | MenuItemOption ne s'applique qu'au côté droit d'une pizza. |
PIZZA_SIDE_WHOLE | L'option MenuItemOption s'applique à l'ensemble de la pizza. |
de conversion
| Nom du champ | Type | Exigence | Description |
|---|---|---|---|
menu | object(Menu) | Exclusif avec | |
section | object(MenuSection) | Exclusif avec | |
item | object(MenuItem) | Exclusif avec | |
option | object(MenuItemOption) | Exclusif avec |
| Nom du champ | Type | Exigence | Description |
|---|---|---|---|
offer_set | object(OfferSet) | Exclusivité mutuelle avec | Offres disponibles pour acheter cet aliment. |
menu_item_option_set | object(MenuItemOptionSet) | Exclusivité mutuelle avec | Options disponibles pour cet élément de menu. |
| Nom du champ | Type | Exigence | Description |
|---|---|---|---|
amount | nombre | Exclusivité mutuelle avec | Nombre unique représentant la valeur nutritionnelle. |
range | object(Range) | Exclusivité mutuelle avec | Plage représentant la quantité de valeur nutritionnelle. |
| Nom du champ | Type | Exigence | Description |
|---|---|---|---|
property_val | enum(PropertyValue) | Exclusivité mutuelle avec | Valeur bien définie pour la propriété de l'option. Actuellement, cette valeur n'est attendue que si property_type est défini sur PIZZA_SIDE. |
text_val | object(TextField) | Exclusivité mutuelle avec | Texte libre pour la valeur de la propriété. Attendu pour les types de propriété OPTION et SIZE. |