Invia feedback
Bundle proto del feed del menu
Mantieni tutto organizzato con le raccolte
Salva e classifica i contenuti in base alle tue preferenze.
// Feeds declaration
syntax = "proto3" ;
package food . menu . v1 ;
import "google/protobuf/timestamp.proto" ;
import "money.proto" ;
import "localized_text.proto" ;
option go_package = "food/menu/v1/proto" ;
message FoodMenuFeed {
repeated MenuComponent data = 1 ;
}
message MenuComponent {
oneof type {
food . menu . v1 . Menu menu = 1 ;
food . menu . v1 . MenuSection section = 2 ;
food . menu . v1 . MenuItem item = 3 ;
food . menu . v1 . MenuItemOption option = 4 ;
}
}
// Top - level catalog of food items offered by a Food establishment . Menu
// contains a list of merchant ids and the menu that apply to those merchants .
// A Menu can be used to represent single merchant with the menu , or multiple
// merchants ( typically chain restaurants ) with the menus .
message Menu {
// An opaque string from a partner which uniquely identifies the Menu within
// the partner feed .
// Required .
string menu_id = 1
;
// The merchants to whom the menu apply .
// Note : This field is repeated so chain restaurants can share the same menu
// across multiple locations , each of which is a separate merchant .
// Required .
repeated string merchant_ids = 2
;
// The name that can identify the Menu when a user is browsing the menu .
// Optional .
TextField display_name = 3 ;
// The default language code associated with the text labels contained in the
// menu . Expects BCP - 47 language code , such as "en-US" or "sr-Latn" .
//
// For more information , see
// http : // www . unicode . org / reports / tr35 / #Unicode_locale_identifier.
// Optional .
string language = 4 ;
// Disclaimer to be shown to the user for the menu . For example , nutritional
// information disclosure and allergen disclosure .
// Optional .
Disclaimer disclaimer = 5 ;
// IDs of items contained within this menu . Expects first - level menu items
// only .
// Optional .
repeated string menu_item_ids = 6
;
// IDs of sections contained within this menu . Expects first - level menu
// sections only .
// Optional .
repeated string menu_section_ids = 7
;
// Timestamp when this Menu or any of its contents was last updated by the
// restaurant ; i . e . a date to be associated with the phrase “ accurate as of
// date ” .
// Optional .
google . protobuf . Timestamp last_merchant_update_time = 8
;
}
// A menu section is a grouping of items on a menu . Separate MenuSections are
// usually created for each logical grouping of items on a menu . For example ,
// meal course type ( Appetizer , Main , Dessert ) and food categories ( Burgers ,
// Drinks ) are typical sections .
message MenuSection {
// An opaque string from a partner that uniquely identifies the MenuSection
// within the partner feed .
// Required .
string menu_section_id = 1
;
// The name that can identify the MenuSection when a user is browsing the
// menu .
// Required .
TextField display_name = 2
;
// A description of the menu section .
// Optional .
TextField description = 3 ;
// Image ( s ) of the menu section .
// Optional .
repeated Image images = 4 ;
// IDs of MenuItem entities that correspond to this MenuSection entity . A
// section is expected to have at least 1 item if it does not contain any
// sub - sections .
// Optional .
repeated string menu_item_ids = 6
;
// Child MenuSections ( sub - sections ) that correspond to this MenuSection
// entity .
// Optional .
repeated string menu_section_ids = 7
;
}
// Represents a single food or drink item offered by a Food establishment .
message MenuItem {
// An opaque string from a partner that uniquely identifies the MenuItem
// within the partner feed .
// Required .
string menu_item_id = 1
;
// The name that can identify the MenuItem when a user is browsing the menu .
// Required .
TextField display_name = 2
;
// A description of the menu item .
// Optional .
TextField description = 3 ;
// Image ( s ) of the menu item .
// Optional .
repeated Image images = 4 ;
// Container that specifies a list of options available on an item .
message MenuItemOptionSet {
// IDs of menu item options that are applicable to this menu item .
// Required .
repeated string menu_item_option_ids = 1
;
}
// The menu item must either have a price , or a set of menu item options .
// Required .
oneof pricing {
option ( validator . one_of ) = {
// Available offers to purchase this food item .
OfferSet offer_set = 6 ;
// Available options for this menu item .
MenuItemOptionSet menu_item_option_set = 7 ;
}
// Attributes about this menu item .
// Optional .
MenuItemAttributes item_attributes = 8 ;
}
// Describes choices that a user would be required to make when selecting a
// dish / combo . The user must select an option , otherwise the order is
// considered invalid ( e . g . the user must choose small , medium , or large for a
// pizza ) .
message MenuItemOption {
// An opaque string from a partner that uniquely identifies the
// MenuItemOption within the partner feed .
// Required .
string menu_item_option_id = 9
;
// Option property and value e . g . Size : Small .
// Required .
MenuItemOptionProperty value = 2
;
// Available offers to purchase this menu item option .
// Required .
OfferSet offer_set = 4
;
// Attributes about this menu item option .
// Optional .
MenuItemAttributes item_attributes = 5 ;
}
// Describes attributes about a particular menu item or option .
message MenuItemAttributes {
// Number of servings available in a given menu item .
// Optional .
int32 number_of_servings = 1 ;
// Describes all the nutritional information of the item , e . g . calories , fat
// content .
// Optional .
NutritionInformation nutrition_information = 2 ;
// The dietary restrictions that this menu item complies with .
// Optional .
repeated DietaryRestriction suitable_diets = 3
;
// Additives of this menu item .
// Optional .
repeated Additive additive = 4 ;
// Allergens of this menu item .
// Optional .
repeated Allergen allergen = 5 ;
// Packaging and recycling information of this menu item .
// Optional .
DepositInfo packaging_deposit_info = 6 ;
}
// Container for a list of offers available on a menu item / option .
// Only one offer should be applicable / valid at one particular time .
// For example , a drink can have 2 offers where one is applicable in the morning
// while the other is applicable in the evening during happy hours .
message OfferSet {
// List of possible offers .
// Required .
repeated Offer offers = 1
;
}
// Represents pricing and availability information for MenuItems and
// MenuItemOptions .
message Offer {
// Monetary value of the menu item / option on sale . Can be 0 to represent free .
// Required .
google . type . Money price = 1
;
}
// Partner provided disclaimer shown to the user . Contains a text disclaimer
// along with an optional URL for more information .
// Some example include : associated medical risks / warnings , any additional
// fees / gratutity , etc .
message Disclaimer {
// Body of the disclaimer text to be shown to the user .
// Required .
TextField text = 1
;
// URL containing more information about the disclaimer .
// Optional .
string uri = 2 ;
}
// A text payload that contains one or more localized values .
message TextField {
// Per - locale text values .
//
// If there is only one desired locale support , then the language_code within
// each text is not required to be set and the language will be inferred from
// the default language of the menu .
//
// If there are multiple texts across different locales , then the
// language_code must be set for each text . The first text in the list is
// considered the preferred representation .
// Required .
repeated google . type . LocalizedText text = 1
;
}
// Represents an image associated with a menu entity .
message Image {
// URL containing the raw pixels of the image .
// Required .
string uri = 1
;
}
// Describes the property of a menu item option and its value .
message MenuItemOptionProperty {
// Types of property that the option is for .
enum PropertyType {
// Do not use . The property type is not explicitly specified .
UNKNOWN_PROPERTY_TYPE = 0 ;
// A generic menu item option property , which is not one of the more
// specific types below . Use this if the property is not of type
// SIZE or PIZZA_SIDE .
OPTION = 1 ;
// Denotes the menu item option property of size ( e . g . small , medium , or
// large ) .
SIZE = 2 ;
// Property specific to pizzas . For example : this MenuItemOption is only
// valid for a portion / whole pizza , such as mushroom toppings on the left
// side , right side , or whole pizza ) .
PIZZA_SIDE = 3 ;
}
// Well - defined values for the option property .
enum PropertyValue {
// Do not use . The property value is not explicitly specified .
UNKNOWN_PROPERTY_VALUE = 0 ;
// The MenuItemOption applies only to the left side of a pizza .
PIZZA_SIDE_LEFT = 1 ;
// The MenuItemOption applies only to the right side of a pizza .
PIZZA_SIDE_RIGHT = 2 ;
// The MenuItemOption applies to the entire pizza .
PIZZA_SIDE_WHOLE = 3 ;
}
// The type of this option property .
// Required .
PropertyType property_type =
;
// Required .
oneof value {
// A well - defined value for the option property . Currently only expected
// if the property_type is PIZZA_SIDE .
PropertyValue property_val = 2
;
// A free - form text for the value of the property . Expected for
// property_type OPTION and SIZE .
TextField text_val = 3
;
}
}
// Describes all the nutritional measurements of a MenuItem or add - on .
message NutritionInformation {
// Describes a single nutritional measurement of the serving of food .
message NutritionValue {
// Describes a closed range for the nutrition value . E . g . "100-150 cal"
message Range {
// The minimum amount of nutrition value .
// Required .
double min =
1
;
// The maximum amount of nutrition value .
// Required .
double max =
2
;
}
// Required oneof .
oneof value {
option ( validator . one_of ) = {
// A single number representing the amount of nutritional value .
double amount = 1
;
// A range representing the amount of nutritional value .
Range range = 3 ;
}
// The unit associated with the amount as specified from the partner . We
// will validate the feed so that the unit for each type of nutrition value
// is expected for that type of value . For example , only ENERGY_CALORIES
// and ENERGY_KILOJOULES are expected on energy property of
// NutritionalInformation .
// Required .
NutritionValueUnit unit =
2
;
}
// The amount of nutritional energy of the serving of food . Can be defined
// in Calories or kilojoules .
// Optional .
NutritionValue energy = 1 ;
// The amount of sodium content , measured in grams or milligrams .
// Optional .
NutritionValue sodium_content = 2 ;
// The number of servings the nutrition value applies to .
// Optional .
int32 serving_size = 3
;
// Nutrition information in free text . For example "Contains preservatives" .
// Optional .
TextField description = 4 ;
}
// Indicates a dietary restriction or guideline adhered to during
// food preparation .
enum DietaryRestriction {
// Do not use . The dietary restriction is not explicitly specified .
DIET_UNSPECIFIED = 0 ;
DIET_DIABETIC = 1 ;
DIET_GLUTEN_FREE = 2 ;
DIET_HALAL = 3 ;
DIET_HINDU = 4 ;
DIET_KOSHER = 5 ;
DIET_LOW_CALORIE = 6 ;
DIET_LOW_FAT = 7 ;
DIET_LOW_LACTOSE = 8 ;
DIET_LOW_SALT = 9 ;
DIET_VEGAN = 10 ;
DIET_VEGETARIAN = 11 ;
}
// Additive shown to the user on the MenuItem . An additive preserves or enhances
// the quality of the food .
message Additive {
// Descriptive text of the additive , e . g . "preservatives" .
// Required .
TextField name = 1
;
// Whether the MenuItem contains , may contain , or is free from this additive .
// Defaults to contains .
// Optional .
ContainmentLevelCode containment_level_code = 2 ;
}
// Allergen shown to the user on the MenuItem . An allergen relates to qualities
// of food that causes allergic reactions .
message Allergen {
// Type of allergen .
// Required .
AllergenTypeCode allergen_type_code =
1
;
// Whether the MenuItem contains , may contain , or is free from this allergen .
// Defaults to contains .
// Optional .
ContainmentLevelCode containment_level_code = 2 ;
}
// Allergen type derived from GS1 : http : // gs1 . org / voc / AllergenTypeCode
enum AllergenTypeCode {
// Do not use . The allergen type code is not explicitly specified .
ALLERGEN_TYPE_CODE_UNSPECIFIED = 0 ;
ALLERGEN_TYPE_CODE_ALMONDS = 1 ;
ALLERGEN_TYPE_CODE_ALPHA_ISOMETHYL_IONONE = 2 ;
ALLERGEN_TYPE_CODE_ALCOHOL = 3 ;
ALLERGEN_TYPE_CODE_AMYL_CINNAMAL = 4 ;
ALLERGEN_TYPE_CODE_ANISE_ALCOHOL = 5 ;
ALLERGEN_TYPE_CODE_BARLEY = 6 ;
ALLERGEN_TYPE_CODE_BENZYL_ALCOHOL = 7 ;
ALLERGEN_TYPE_CODE_BENZYL_BENZOATE = 8 ;
ALLERGEN_TYPE_CODE_BENZYL_CINNAMATE = 9 ;
ALLERGEN_TYPE_CODE_BENZYL_SALICYLATE = 10 ;
ALLERGEN_TYPE_CODE_BRAZIL_NUTS = 11 ;
ALLERGEN_TYPE_CODE_BUTYLPHENYL_METHYLPROPIONATE = 12 ;
ALLERGEN_TYPE_CODE_CARROTS = 13 ;
ALLERGEN_TYPE_CODE_CASHEW_NUTS = 14 ;
ALLERGEN_TYPE_CODE_CELERY = 15 ;
ALLERGEN_TYPE_CODE_CEREALS_CONTAINING_GLUTEN = 16 ;
ALLERGEN_TYPE_CODE_CINNAMAL = 17 ;
ALLERGEN_TYPE_CODE_CINNAMYL_ALCOHOL = 18 ;
ALLERGEN_TYPE_CODE_CITRAL = 19 ;
ALLERGEN_TYPE_CODE_CITRONELLOL = 20 ;
ALLERGEN_TYPE_CODE_COCOA = 21 ;
ALLERGEN_TYPE_CODE_CORIANDER = 22 ;
ALLERGEN_TYPE_CODE_CORN = 23 ;
ALLERGEN_TYPE_CODE_COUMARIN = 24 ;
ALLERGEN_TYPE_CODE_CRUSTACEANS = 25 ;
ALLERGEN_TYPE_CODE_EGGS = 26 ;
ALLERGEN_TYPE_CODE_EUGENOL = 27 ;
ALLERGEN_TYPE_CODE_EVERNIA_FURFURACEA = 28 ;
ALLERGEN_TYPE_CODE_EVERNIA_PRUNASTRI = 29 ;
ALLERGEN_TYPE_CODE_FARNESOL = 30 ;
ALLERGEN_TYPE_CODE_FISH = 31 ;
ALLERGEN_TYPE_CODE_GERANIOL = 32 ;
ALLERGEN_TYPE_CODE_GLUTEN = 33 ;
ALLERGEN_TYPE_CODE_HAZELNUTS = 34 ;
ALLERGEN_TYPE_CODE_HEXYL_CINNAMAL = 35 ;
ALLERGEN_TYPE_CODE_HYDROXYCITRONELLAL = 36 ;
ALLERGEN_TYPE_CODE_HYDROXYISOHEXYL_3_CYCLOHEXENE_CARBOXALDEHYDE_ISOEUGENOL_LIMONENE_LINAL =
37 ;
ALLERGEN_TYPE_CODE_KAMUT = 38 ;
ALLERGEN_TYPE_CODE_LACTOSE = 39 ;
ALLERGEN_TYPE_CODE_LUPINE = 40 ;
ALLERGEN_TYPE_CODE_MACADAMIA_NUTS = 41 ;
ALLERGEN_TYPE_CODE_METHYL_2_OCTYNOATE = 42 ;
ALLERGEN_TYPE_CODE_MILK = 43 ;
ALLERGEN_TYPE_CODE_MOLLUSCS = 44 ;
ALLERGEN_TYPE_CODE_MUSTARD = 45 ;
ALLERGEN_TYPE_CODE_NO_DECLARED_ALLERGENS = 46 ;
ALLERGEN_TYPE_CODE_OAT = 47 ;
ALLERGEN_TYPE_CODE_PEANUTS = 48 ;
ALLERGEN_TYPE_CODE_PEAS = 49 ;
ALLERGEN_TYPE_CODE_PECAN_NUTS = 50 ;
ALLERGEN_TYPE_CODE_PISTACHIOS = 51 ;
ALLERGEN_TYPE_CODE_POD_FRUITS = 52 ;
ALLERGEN_TYPE_CODE_QUEENSLAND_NUTS = 53 ;
ALLERGEN_TYPE_CODE_RYE = 54 ;
ALLERGEN_TYPE_CODE_SESAME_SEEDS = 55 ;
ALLERGEN_TYPE_CODE_SOYBEANS = 56 ;
ALLERGEN_TYPE_CODE_SPELT = 57 ;
ALLERGEN_TYPE_CODE_SULPHUR_DIOXIDE = 58 ;
ALLERGEN_TYPE_CODE_TREE_NUTS = 59 ;
ALLERGEN_TYPE_CODE_TREE_NUT_TRACES = 60 ;
ALLERGEN_TYPE_CODE_WALNUTS = 61 ;
ALLERGEN_TYPE_CODE_WHEAT = 62 ;
}
// Partner provided deposit info to instruct the user how to deposit a food item
// or bottle and the value of such deposit .
message DepositInfo {
// The deposit strategy to employ , e . g . "reusable" .
// Optional .
DepositCode deposit_code = 1 ;
// Value refunded for depositing the item properly .
// Optional .
google . type . Money deposit_value = 2
;
}
enum NutritionValueUnit {
// Do not use . The nutrition value unit is not explicitly set .
NUTRITION_VALUE_UNIT_UNSPECIFIED = 0 ;
// Units used to express the amount of energy in a menu item .
ENERGY_CALORIES = 1 ;
ENERGY_KILOJOULES = 2 ;
// Units used to express the amount in weight a substance is present in the
// menu item .
WEIGHT_MILLIGRAMS = 3 ;
WEIGHT_GRAMS = 4 ;
}
// Indicates the level of containment a food item has of a certain attribute ,
// such as allergens or additives .
enum ContainmentLevelCode {
// Do not use . The containment level code is not explicitly specified .
CONTAINMENT_LEVEL_CODE_UNSPECIFIED = 0 ;
CONTAINMENT_LEVEL_CODE_CONTAINS = 1 ;
CONTAINMENT_LEVEL_CODE_DOES_NOT_CONTAIN = 2 ;
CONTAINMENT_LEVEL_CODE_MAY_CONTAIN = 3 ;
}
// Indicates how to properly deposit a food item or bottle .
enum DepositCode {
// Do not use . The deposite code is not explicitly specified .
DEPOSIT_CODE_UNSPECIFIED = 0 ;
DEPOSIT_CODE_REUSABLE = 1 ;
DEPOSIT_CODE_RECYCLABLE = 2 ;
}
money.proto
// Copyright 2024 Google LLC
//
// Licensed under the Apache License , Version 2.0 ( the "License" );
// you may not use this file except in compliance with the License .
// You may obtain a copy of the License at
//
// http :// www . apache . org / licenses / LICENSE - 2.0
//
// Unless required by applicable law or agreed to in writing , software
// distributed under the License is distributed on an "AS IS" BASIS ,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND , either express or implied .
// See the License for the specific language governing permissions and
// limitations under the License .
syntax = "proto3" ;
package google . type ;
option cc_enable_arenas = true ;
option go_package = "google.golang.org/genproto/googleapis/type/money;money" ;
option java_multiple_files = true ;
option java_outer_classname = "MoneyProto" ;
option java_package = "com.google.type" ;
option objc_class_prefix = "GTP" ;
// Represents an amount of money with its currency type .
message Money {
// The three - letter currency code defined in ISO 4217.
string currency_code = 1 ;
// The whole units of the amount .
// For example if `currencyCode` is `"USD"` , then 1 unit is one US dollar .
int64 units = 2 ;
// Number of nano ( 10 ^- 9 ) units of the amount .
// The value must be between - 999 , 999 , 999 and + 999 , 999 , 999 inclusive .
// If `units` is positive , `nanos` must be positive or zero .
// If `units` is zero , `nanos` can be positive , zero , or negative .
// If `units` is negative , `nanos` must be negative or zero .
// For example $ - 1.75 is represented as `units` =- 1 and `nanos` =- 750 , 000 , 000.
int32 nanos = 3 ;
}
localized_text.proto
// Copyright 2024 Google LLC
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
syntax = "proto3" ;
package google . type ;
option cc_enable_arenas = true ;
option go_package = "google.golang.org/genproto/googleapis/type/localized_text;localized_text" ;
option java_multiple_files = true ;
option java_outer_classname = "LocalizedTextProto" ;
option java_package = "com.google.type" ;
option objc_class_prefix = "GTP" ;
// Localized variant of a text in a particular language.
message LocalizedText {
// Localized string in the language corresponding to `language_code' below.
string text = 1 ;
// The text's BCP-47 language code, such as "en-US" or "sr-Latn".
//
// For more information, see
// http://www.unicode.org/reports/tr35/#Unicode_locale_identifier.
string language_code = 2 ;
}
Invia feedback
Salvo quando diversamente specificato, i contenuti di questa pagina sono concessi in base alla licenza Creative Commons Attribution 4.0 , mentre gli esempi di codice sono concessi in base alla licenza Apache 2.0 . Per ulteriori dettagli, consulta le norme del sito di Google Developers . Java è un marchio registrato di Oracle e/o delle sue consociate.
Ultimo aggiornamento 2024-11-26 UTC.
Vuoi dirci altro?
[[["Facile da capire","easyToUnderstand","thumb-up"],["Il problema è stato risolto","solvedMyProblem","thumb-up"],["Altra","otherUp","thumb-up"]],[["Mancano le informazioni di cui ho bisogno","missingTheInformationINeed","thumb-down"],["Troppo complicato/troppi passaggi","tooComplicatedTooManySteps","thumb-down"],["Obsoleti","outOfDate","thumb-down"],["Problema di traduzione","translationIssue","thumb-down"],["Problema relativo a esempi/codice","samplesCodeIssue","thumb-down"],["Altra","otherDown","thumb-down"]],["Ultimo aggiornamento 2024-11-26 UTC."],[[["The `food_menu.proto` file defines a protocol buffer schema for representing food menus, encompassing menus, sections, items, options, pricing, and nutritional data."],["Key messages include `FoodMenuFeed`, `MenuComponent`, `Menu`, `MenuSection`, `MenuItem`, `MenuItemOption`, and others for detailed menu representation."],["Enums like `DietaryRestriction`, `MenuItemOptionProperty`, and `AllergenTypeCode` categorize dietary restrictions, menu item properties, and allergens."],["Data types include strings, integers, doubles, booleans, timestamps, and custom messages to represent various data elements."],["The schema utilizes imports, options, and validators for code generation, data constraints, and efficient data exchange."]]],[]]