
  // 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 an partner which 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 an partner which 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 {
    // 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 an partner which 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.
  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 = 1;

  // 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 {
      // 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.
  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.
  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.
  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.
  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;
}
