// Feeds declarationsyntax="proto3";import"google/protobuf/duration.proto";import"google/protobuf/timestamp.proto";import"google/type/timeofday.proto";import"google/type/dayofweek.proto";import"google/type/money.proto";import"google/type/latlng.proto";packagemadden.ingestion;// Merchant feed startsmessageEntityFeed{repeatedEntitydata=1;}//// Information about an Entity that is on the partner's platform. For example,// an Entity could be a retail store, a hospital, an online business etc.messageEntity{// An opaque string generated by the partner that identifies an Entity.// Must be unique across all entities.// Strongly recommended to only include URL-safe characters.// This ID should be immutable. Changing or recycling them to represent the// same entity may cause issues and outages.// (required)stringentity_id=1;// If present, the name, telephone, url and location are used to support// matching partner inventory with entities already present on Google. This// information will not be displayed.// The name of the Entity. (required)stringname=2;// The contact telephone number of the Entity including its country and area// codes, e.g. +14567891234. Highly recommended. (optional)stringtelephone=3;// The url of the Entity's public website. Highly recommended. (optional)stringurl=4;// The location of the Entity (required)madden.ingestion.GeoCoordinateslocation=5;}// The Geo data of a location, including latitude, longitude, and address.// At least one of [lat/lng or address] should be provided (or both).messageGeoCoordinates{// [-90, +90] degrees (inclusive). (optional)doublelatitude=1;// [-180, +180] degrees (inclusive). (optional)doublelongitude=2;// Address for a location, could either be structured or unstructured.oneofaddresses{// Postal address of the location, preferred.PostalAddressaddress=3;// An unstructured address could also be provided as a fallback.// E.g. "1600 amphitheatre parkway mountain view, ca 94043"stringunstructured_address=4;}}// The postal address for a merchant.messagePostalAddress{// The country, using ISO 3166-1 alpha-2 country code, e.g. "US" (required)stringcountry=1;// The locality/city, e.g. "Mountain View". (required)stringlocality=2;// The region/state/province, e.g. "CA". This field is only required in// countries where region is commonly a part of the address. (optional)stringregion=3;// The postal code, e.g. "94043". (required)stringpostal_code=4;// The street address, e.g. "1600 Amphitheatre Pkwy". (required)stringstreet_address=5;}// Merchant feed ends// Actions feed startsmessageActionFeed{repeatedActionDetaildata=1;}messageActionDetail{stringentity_id=2;stringlink_id=3;// Deep link for action detailstringurl=4;repeatedActionactions=1;}// Information about an Action which could be performed.messageAction{// Deprecated fields not to be reused.reserved1;oneofaction_info{FoodOrderingInfofood_ordering_info=3;}}messageFoodOrderingInfo{// Service type for food ordering action.enumServiceType{UNKNOWN=0;DELIVERY=1;TAKEOUT=2;}ServiceTypeservice_type=1;}// Actions feed ends// Service feed starts// Food Ordering Team's EPA Service Feeds Spec.messageFoodServiceFeed{// Service feed entity data.repeatedServiceDatadata=1;}// Service feed entity data.messageServiceData{oneoftype{FoodOrderingServiceservice=1;ServiceHoursservice_hours=2;ServiceAreaservice_area=3;Feefee=4;}}// (-- LINT.IfChange --)messageFoodOrderingService{// Unique identifier of the provided service.// Required.stringservice_id=1;enumServiceType{SERVICE_TYPE_UNKNOWN=0;DELIVERY=1;TAKEOUT=2;}// The type of the service.// Required and cannot be SERVICE_TYPE_UNKNOWN.ServiceTypeservice_type=2;// The parent entity’s ID.// Required.stringparent_entity_id=3;// Indicates if the entity is disabled.// Optional.booldisabled=4;// The lead time given in the service entity will apply to all// the service hours unless an overridden property is set in the// service hours entity.// Required.ETAlead_time=5;// Parent action detail's link ID.// Required.stringaction_link_id=6;}// (--// LINT.ThenChange(//depot/google3/indexing/tugela/customers/food_ordering/utils/validation_issue_converter.cc)// --)// Lead time range [min, max). At least one of min or max needs to be provided.// A fixed value can be provided by setting both min and max to the same value.// (-- LINT.IfChange --)messageETA{// Indicates a range of ETA duration.google.protobuf.Durationmin_lead_time_duration=1;google.protobuf.Durationmax_lead_time_duration=2;}// (--// LINT.ThenChange(//depot/google3/indexing/tugela/customers/food_ordering/utils/validation_issue_converter.cc)messageFee{// Unique identifier to the Fee entity.// Required.stringfee_id=1;enumFeeType{FEE_TYPE_UNKNOWN=0;DELIVERY=1;SERVICE=2;}// Indicates the nature of the service, e.g. delivery fee/service fee.// Required.FeeTypefee_type=2;oneofamount{// A fixed amount of fees to be collected.google.type.Moneyfixed_amount=3;// A range of fees that could be collected. Will mirror// madden.ingestion.MoneyRange for the starting point.MoneyRangerange_amount=4;// Fees in terms of amount percentage. Will mirror// madden.ingestion.QuantitativeValue for the starter.PercentageBasedFeecart_percentage=5;}// Service association needs to be provided.// Required.repeatedstringservice_ids=6;// Service area can be provided to further restrict eligibility of the// fee.// Optional.repeatedstringarea_ids=7;}// (--// LINT.ThenChange(//depot/google3/indexing/tugela/customers/food_ordering/utils/validation_issue_converter.cc)// --)// Wrapper for a range of monetary amount that could be bounded or unbounded.// At least one of min_amount or max_amount is required.// (-- LINT.IfChange --)messageMoneyRange{// Minimum amount.google.type.Moneymin_amount=1;// Maximum amount.google.type.Moneymax_amount=2;}// Variable fee which changes based on the price of the order.messagePercentageBasedFee{// Optional, base fee not including the variable percentage based fee.google.type.Moneybase_value=1;// Optional, overall range of possible values of the PercentageBasedFee.MoneyRangerange=2;// Optional, percentage representing an additional variable fee based on// the cart subtotal. E.g. 15.0 represents a fee of 15% of the cart.doublepercentage_of_cart_value=3;}messageServiceArea{// Unique identifier.// Required.stringarea_id=1;// Identifier to the parent service entity.// Required.repeatedstringservice_ids=2;// One of the following needs to be provided to define the service area.// Required.oneofregion{GeoCirclecircle=3;Localitylocality=4;Polygonpolygon=5;}// Sets to true if the assigned area is excluded from serving.// Optional.optionalboolexcluded_area=6;}// (--// LINT.ThenChange(//depot/google3/indexing/tugela/customers/food_ordering/utils/validation_issue_converter.cc)// Geographical circular area described by a point and radius.// (-- LINT.IfChange --)messageGeoCircle{// Geographical center of the area.// Required.google.type.LatLngcenter=1;// Radius for the circular area, in meters. Must be greater than 0.// Required.doubleradius=2;}// Geolocation of interests.messageLocality{stringcountry_code=1;// Postal code in the country's local format in string.stringpostal_code=2;}// Represents a polygon shaped region.messagePolygon{reserved1;// List of S2Loops which defines a polygon. A point is considered in the// polygon if it is contained in odd number of loops.repeatedLooploops=2;}// Represents a loop of geo coordinates. This should be a valid S2Loop.messageLoop{// Points making the boundary of loop.repeatedgoogle.type.LatLngpoint=1;}// Service hours entity for ASAP/Advance orders.messageServiceHours{// Unique identifier of the provided advance service hours.// Required.stringhours_id=1;// The unique identifier of the Service entity correlated to this ServiceHours// entity.// Required.repeatedstringservice_ids=2;// The hours the orders can be fulfilled. For ASAP services, this is also// orderable time.// One of the fields (asap_hours/advance_hours) is required to be set.repeatedAsapTimeWindowasap_hours=3;repeatedAdvanceTimeWindowadvance_hours=4;// When advance ordering services, this is the time windows the orders can be// placed.// Required when advance_hour is given. Invalid when asap_hour is given.repeatedTimeOfDayWindoworderable_time=5;// Indicates if the service hours are for special occasions// (e.g. Thanksgiving/...)// Optionalboolspecial_hour=6;// A timestamp window indicating the validity of the special hours.// Optional. Required if it's special hours.ValidityRangevalidity_range=7;}// (--// LINT.ThenChange(//depot/google3/indexing/tugela/customers/food_ordering/utils/validation_issue_converter.cc)messageAsapTimeWindow{// A time window the ASAP order can be placed and fulfilled.// Required.TimeOfDayWindowtime_windows=1;// Indicates the lead time, specific to service_time, the service can// be fulfilled.// Optional.ETAlead_time=2;}// The fulfillment time window for advance orders.messageAdvanceTimeWindow{// A time window the advance order can be fulfilled.// Required.TimeOfDayWindowtime_windows=1;// a window that an advance order can be placed. For example, an advance// order must be placed at least 60 minutes ahead and not exceeding 2// days, the interval would be [PT60M, P2D).// Optional.DurationIntervaladvance_booking_interval=2;}// The TimeWindow object is a composite entity that describes a list// of windows the user's order can be either placed or fulfilled.messageTimeOfDayWindow{// The time window the order can be placed/fulfilled.// Required.TimeOfDayRangetime_windows=1;// The list of days in a week the windows are applied.// Required. If not given, we assume 7 days a week.repeatedgoogle.type.DayOfWeekday_of_week=2;}// A closed-open timestamp range.messageValidityRange{// The beginning time of the range (inclusive).// Optional.google.protobuf.Timestampvalid_from_time=1;// The ending time of the range (exclusive).// Optional.google.protobuf.Timestampvalid_through_time=2;}// A closed-open duration range.messageDurationInterval{// The minimum duration (inclusive).// Required.google.protobuf.Durationmin_offset=1;// The maximum duration (exclusive).// Required.google.protobuf.Durationmax_offset=2;}// A closed-open time range.// (-- LINT.IfChange --)messageTimeOfDayRange{// A Time indicating the beginning time of the day of the range (inclusive).// Required. If not given, we assume 00:00:00.google.type.TimeOfDayopen_time=1;// A Time indicating the ending time of the day of the range (exclusive).// Required. If not given, we assume 23:59:59.google.type.TimeOfDayclose_time=2;}// Service feed ends
Sauf indication contraire, le contenu de cette page est régi par une licence Creative Commons Attribution 4.0, et les échantillons de code sont régis par une licence Apache 2.0. Pour en savoir plus, consultez les Règles du site Google Developers. Java est une marque déposée d'Oracle et/ou de ses sociétés affiliées.
Dernière mise à jour le 2026/05/07 (UTC).
[[["Facile à comprendre","easyToUnderstand","thumb-up"],["J'ai pu résoudre mon problème","solvedMyProblem","thumb-up"],["Autre","otherUp","thumb-up"]],[["Il n'y a pas l'information dont j'ai besoin","missingTheInformationINeed","thumb-down"],["Trop compliqué/Trop d'étapes","tooComplicatedTooManySteps","thumb-down"],["Obsolète","outOfDate","thumb-down"],["Problème de traduction","translationIssue","thumb-down"],["Mauvais exemple/Erreur de code","samplesCodeIssue","thumb-down"],["Autre","otherDown","thumb-down"]],["Dernière mise à jour le 2026/05/07 (UTC)."],[],["The content defines proto files for data exchange, detailing structures for merchant, action, and service feeds. Key actions include: defining `Entity` data (ID, name, contact, location), `GeoCoordinates` (latitude, longitude, address), and `PostalAddress`. It outlines `ActionDetail` structures linking entities to actions, like `FoodOrderingInfo` (delivery/takeout). The `ServiceFeed` specifies `FoodOrderingService` (type, lead time, parent entity), fees (`FeeType`, `Money`, `MoneyRange`, `PercentageBasedFee`), `ServiceArea` (geo-fencing), and `ServiceHours` for order placement and fulfillment (`AsapTimeWindow`, `AdvanceTimeWindow`).\n"]]