// Info about a merchant that is on the aggregator's platform.
// A merchant feed should be a list of this message.
message Merchant {
// An opaque string generated by the partner that identifies a merchant.
// Must be unique across all merchants.
// Strongly recommended to only include URL-safe characters. (required)
string merchant_id = 1;
// The name, telephone, url and geo are used to support matching partner
// inventory with merchants already present on Google Maps. This information
// will not be displayed.
//
// The name of the merchant. (required)
string name = 2;
// The contact telephone number of the merchant including its country and area
// codes, e.g. +14567891234. Highly recommended. (optional)
string telephone = 3;
// The url of the merchant's public website. Highly recommended. (optional)
string url = 4;
// The Geo info of the merchant, including latitude, longitude, and address.
// (required)
GeoCoordinates geo = 5;
// The category of the business in aggregator's platform. (required)
// You should categorize this business as you categorize it in your inventory.
// We will use your provided category as a parameter in trying to determine
// the best location match to the physical business.
string category = 6;
// This field is deprecated, please use tax_rate instead.
uint32 tax_rate_basis_points = 8 [deprecated = true];
// The merchant's tax rate. If present this field overrides the deprecated
// tax_rate_basis_points field. An empty message (i.e. tax_rate { }) will
// reset the applied tax rate to zero.
//
// This field is required for payments integration. (optional)
TaxRate tax_rate = 9;
// Restrictions to the payment methods this merchant accepts. We assume no
// restrictions exist if this field is not set. (optional)
PaymentRestrictions payment_restrictions = 10;
// Payment options available for this merchant. Services under this merchant
// will be able to individually limit the payment options they allow.
// (optional)
repeated PaymentOption payment_option = 11;
// Configuration for a tokenized payment processor, if the merchant has
// support for it.
TokenizationConfig tokenization_config = 15;
// The specific merchant's Terms and Conditions displayed to the user when a
// service is being booked through Reserve with Google.
// In addition to these the aggregator partner's Terms and Conditions are
// always displayed to the user and must not be provided here. (optional)
Terms terms = 13;
// An opaque string that identifies the consumer-facing brand to use when
// displaying partner attribution. This field allows partners with multiple
// consumer-facing brands to provide merchants for all brands within the same
// feed.
//
// A brand consists of consumer-facing properties like the name, logo, Terms
// of Service, and Privacy Policy.
//
// If there is only one consumer-facing partner brand, this field does not
// need to be set and can be ignored.
//
// If the partner...
//
// Does not have multiple consumer-facing brands?
// --> Ignore this field
//
// Has Multiple Brands that are configured?
//
// If this field is set
// --> Associated consumer-facing brand attribution is used
//
// If this field is unset or the empty string
// --> Default consumer-facing brand attribution is used
//
// Careful Note: most partners do not need to set this field. If a partner
// wishes to use this field, they must contact us first to configure separate
// brands, including the default brand.
string brand_id = 14;
// Hints to help Google match a merchant to a place on Google Maps.
// Note: Typically, this field does not need to be set, as Google will match
// merchants to places on Google Maps using the information provided above.
// (optional)
MerchantMatchingHints matching_hints = 16;
// Definitions for any service attributes used to describe the Services for
// this Merchant. (optional)
repeated ServiceAttribute service_attribute = 17;
// An action URL with associated language, list of countries restricted to,
// type, and optional platform that indicates which platform this action
// should be performed on. This action link is specifically for the merchant,
// please use the ActionLink in the service feed to link to a specific
// service.
repeated ActionLink action_link = 20;
// The linkout template that specifies how Google should generate the
// partner's URL to reserve a table on their platform.
//
// Note that currently only the first one will be used if multiple are
// provided.
//
// The URI template has support for fields which will be populated based
// on the user's reservation selections, all required fields are needed to
// build a reservation URL successfully:
// * (required) party_size, int: The size of the party for which the user is
// requesting a reservation.
// * (required) selected_date_time, ISO 8601 datetime
// (https://en.wikipedia.org/wiki/ISO_8601): The time the user is requesting a
// reservation for.
// * (optional) merchant_id, string: The ID of the Merchant the user is
// requesting a reservation with, not needed if template already includes a
// merchant identifier.
// * (optional) room_id, string: The id of the room the user is requesting a
// reservation for.
repeated LinkoutTemplate reservation_linkout_template = 21;
// General advisements from a specific merchant for a user joining a waitlist
// through Reserve with Google. Individual text fields in the advisement
// should be limited to 100 bytes in length.
Advisement waitlist_advisement = 22;
// Economic Operator information associated to this specific merchant, if
// applicable for an end to end payments integration.
// For further info, refer to:
// https://developers.google.com/actions-center/verticals/reservations/e2e/partner-portal/testing/regulatory-requirements#economic-operator
//
// (optional)
EconomicOperator economic_operator = 23;
}
GeoCoordinates Definition
// The Geo data of a location, including latitude, longitude, and address.
// At least one of [lat/lng or address] should be provided (or both).
message GeoCoordinates {
// [-90, +90] degrees (inclusive). (optional)
double latitude = 1;
// [-180, +180] degrees (inclusive). (optional)
double longitude = 2;
// Address for a location, could either be structured or unstructured.
oneof addresses {
// Postal address of the location, preferred.
PostalAddress address = 3;
// An unstructured address could also be provided as a fallback.
// E.g. "1600 amphitheatre parkway mountain view, ca 94043"
string unstructured_address = 4;
}
}
PostalAddress Definition
// The postal address for a merchant.
message PostalAddress {
// The country, using ISO 3166-1 alpha-2 country code, e.g. "US" (required)
string country = 1;
// The locality/city, e.g. "Mountain View". (required)
string locality = 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)
string region = 3;
// The postal code, e.g. "94043". (required)
string postal_code = 4;
// The street address, e.g. "1600 Amphitheatre Pkwy". (required)
string street_address = 5;
}
TaxRate Definition
// A tax rate applied when charging the user for a service, and which can be set
// on either a per merchant, or per service basis.
message TaxRate {
// A tax rate in millionths of one percent, effectively giving 6 decimals of
// precision. For example, if the tax rate is 7.253%, this field should be set
// to 7253000.
//
// If this field is left unset or set to 0, the total price charged to a user
// for any service provided by this merchant is the exact price specified by
// Service.price. The service price is assumed to be exempt from or already
// inclusive of applicable taxes. Taxes will not be shown to the user as a
// separate line item.
//
// If this field is set to any nonzero value, the total price charged to a
// user for any service provided by this merchant will include the service
// price plus the tax assessed using the tax rate provided here. Fractions of
// the smallest currency unit (for example, fractions of one cent) will be
// rounded using nearest even rounding. Taxes will be shown to the user as a
// separate line item. (required)
int32 micro_percent = 1;
}
PaymentRestrictions Definition
// Restrictions to the payment methods this merchant accepts.
message PaymentRestrictions {
// Restrictions to the credit cards this merchant accepts. We assume all
// credit cards are accepted if this field is not set.
// Note that the list of cards supported by CreditCardType will grow over
// time, meaning that leaving this empty subjects a configuration to future
// changes. (optional)
CreditCardRestrictions credit_card_restrictions = 1;
}
CreditCardRestrictions Definition
// Restrictions to the credit card types this merchant accepts.
message CreditCardRestrictions {
// A credit card type.
enum CreditCardType {
// Unused.
CREDIT_CARD_TYPE_UNSPECIFIED = 0;
// A Visa credit card.
VISA = 1;
// A Mastercard credit card.
MASTERCARD = 2;
// An American Express credit card.
AMERICAN_EXPRESS = 3;
// A Discover credit card.
DISCOVER = 4;
// A JCB credit card.
JCB = 5;
}
// A list of supported credit cards. No credit cards are supported if empty.
// (optional)
repeated CreditCardType credit_card_type = 1;
}
PaymentOption Definition
// A payment option, which can be used to pay for services provided by a
// merchant. Payment options can be shared among multiple merchants
// (e.g. merchants belonging to the same chain).
message PaymentOption {
// An opaque string from an aggregator partner to identify a payment option.
//
// This id is global to the whole aggregator, and re-using a value across
// multiple merchants will allow a user to pay with the corresponding payment
// option across those merchants.
//
// When re-using an id across multiple merchants, updating any value for a
// payment option under one merchant will also update any other payment option
// with the same id, under a different merchant. As such, it's a best practice
// to have all payment options sharing the same id, always be updated to
// identical values, to avoid any possibility of nondeterministic behavior.
//
// Do NOT confuse it with the internal payment option id. (required)
string payment_option_id = 1;
// The name of the payment option. This can be user visible. (required)
string name = 2;
// A description of the payment option. This can be user visible. (optional)
string description = 3;
// The price of the payment option. (required)
Price price = 4;
// The tax rate for this payment option. If present this field overrides the
// tax_rate field present in the Merchant or Service. An empty message
// (i.e. tax_rate { }) will reset the applied tax rate to zero. (optional)
TaxRate tax_rate = 5;
// A payment option type.
enum PaymentOptionType {
// Unused.
PAYMENT_OPTION_TYPE_UNSPECIFIED = 0;
// Payment option can only be used once.
PAYMENT_OPTION_SINGLE_USE = 1;
// Payment option can be used if its session count > 0.
PAYMENT_OPTION_MULTI_USE = 2;
// Payment option can be used within its valid time range - session count
// is inapplicable.
PAYMENT_OPTION_UNLIMITED = 3;
}
// The type of this payment option. Single-use for drop-ins, multi-use for
// packs, and unlimited for memberships. (required)
PaymentOptionType payment_option_type = 6;
// How many sessions this payment option can be used for. Valid only for
// multi-session / packs, where the value should be > 1.
// (required if payment_option_type is PAYMENT_OPTION_MULTI_USE)
int64 session_count = 7;
// The payment option can be purchased within this interval. (optional)
TimeRange purchase_interval = 8;
// The payment option can be used within this interval (e.g. special price
// for January 2017).
// If present, this overrides valid_duration_sec and activation_type.
// (optional)
TimeRange valid_interval = 9;
// Duration of the payment option validity (e.g. 30 day membership).
// (optional)
int64 valid_duration_sec = 10;
// Defines how the validity start date is determined.
enum ActivationType {
// Unused.
ACTIVATION_TYPE_UNSPECIFIED = 0;
// Validity starts at the time of purchase.
ACTIVATION_ON_PURCHASE = 1;
// Validity starts when the payment option is used for the first time.
ACTIVATION_ON_FIRST_USE = 2;
}
// Defines how the validity start date is determined for this payment option.
// (required)
ActivationType activation_type = 11;
// Restricts the users eligible to purchase this payment option. Can be used
// to restrict a promotional payment option to a subset of users. If not set,
// all users are eligible. (optional)
UserPurchaseRestriction user_restriction = 12;
}
UserPurchaseRestriction Definition
message UserPurchaseRestriction {
// A payment option that can only be purchased by users who have never
// purchased from the same merchant before. (required if new_to_payment_option
// is not set)
bool new_to_merchant = 1;
// A payment option that can only be purchased by users who have never
// purchased the same payment option before. (required if new_to_payment is
// not set)
bool new_to_payment_option = 2;
}
TimeRange Definition
// A closed-open time range, i.e. [begin_sec, end_sec)
message TimeRange {
// Seconds of UTC time since Unix epoch (required)
int64 begin_sec = 1;
// Seconds of UTC time since Unix epoch (required)
int64 end_sec = 2;
}
TokenizationConfig Definition
// A configuration for payment-processor tokenization, set up on a per-Merchant
// basis.
message TokenizationConfig {
// A tokenization configuration will typically have one
// tokenization_parameter whose key is "gateway" and whose value is the
// name of the processor.
//
// The rest of the parameters are dependent on the processor. See
// documentation from Google Pay and your processor for further information.
// https://developers.google.com/pay/api/web/object-reference# \
// PaymentMethodTokenizationSpecification
// https://developers.google.com/pay/api/#participating-google-pay-processors
//
// Braintree example:
// tokenization_parameter { key: "gateway" value: "braintree" }
// tokenization_parameter { key: "braintree:apiVersion" value: "v1" }
// tokenization_parameter { key: "braintree:sdkVersion" value: "2.30.0" }
// tokenization_parameter { key: "braintree:merchantId" value: "abcdef" }
// tokenization_parameter { key: "braintree:clientKey"
// value: "production_xxx_yyy" }
//
// Stripe example:
// tokenization_parameter { key: "gateway" value: "stripe" }
// tokenization_parameter { key: "stripe:version" value: "2018-02-28" }
// tokenization_parameter { key: "stripe:publishableKey" value: "pk_1234" }
//
// Adyen example:
// tokenization_parameter { key: "gateway" value: "adyen" }
// tokenization_parameter { key: "gatewayMerchantId" value: "yourId" }
map<string, string> tokenization_parameter = 1;
// The following field controls how much billing information to include in the
// payment token. Verification of billing information is the responsibility of
// Google Pay upon entry of Form Of Payment (FOP). If the FOP is currently in
// Google Pay without the requested level of billing information, the user
// will not see their FOP as a choice, and they will have to enter the FOP and
// required information according to the current Google Pay UI.
//
// Some merchants like to keep the requested information minimal because
// requesting more information can lead to lower conversion rates.
//
// Note that they can also go to payments.google.com to enhance an FOP but
// most users will not know to do so.
// How much of the Billing Address to require of the user and include in the
// token. The enum values correspond to parameters in the Google Pay API (see
// https://developers.google.com/pay/api/web/reference/object\
// #BillingAddressParameters).
enum BillingInformationFormat {
BILLING_INFORMATION_FORMAT_UNSPECIFIED = 0;
// name, country code, and postal code (GPay default setting).
MIN = 1;
// name, street address, locality, region, country code, and postal code
FULL = 2;
}
// Include in the payment token the user's billing information as entered into
// Google Pay with their FOP (see above).
BillingInformationFormat billing_information_format = 2;
// Name of the Merchant Of Record (MOR). This user-visible name will be shown
// in 3DS2 challenges. In some cases, this is the Merchant, in others this is
// the Aggregator.
string merchant_of_record_name = 3;
// Country where transaction will be processed, in ISO 3166-1 alpha-2 form.
string payment_country_code = 4;
// Per CardNetwork Processing information.
message CardNetworkParameters {
// The Card Network that these parameters are about
CreditCardRestrictions.CreditCardType card_network = 1;
// The Bank Identification Number of the acquiring bank used for processing
// of the card.
//
// If this value is not known to you, you should ask your acquirer or
// merchant processor representative.
string acquirer_bin = 2;
// The merchant identifier assigned by the acquirer to the merchant for use
// in transaction authorization (for Visa and American Express
// transactions).
//
// If this value is not known to you, you should ask the acquirer or
// merchant processor representative.
string acquirer_merchant_id = 3;
}
// Per-Card Network processing parameters.
//
// These are currently only required for PSD2
// (https://en.wikipedia.org/wiki/Payment_Services_Directive)
// processing when payment_country_code is a European country where PSD2 is in
// effect. They are also only currently required for VISA and
// AMERICAN_EXPRESS.
repeated CardNetworkParameters card_network_parameters = 5;
// Fields supported to authorize a card transaction.
//
// See the GPay documentation at
// https://developers.google.com/pay/api/web/reference/object#CardParameters
enum AuthMethod {
AUTH_METHOD_UNSPECIFIED = 0;
// This authentication method is associated with payment cards stored on
// file with the user's Google Account. Returned payment data includes
// personal account number (PAN) with the expiration month and the
// expiration year.
PAN_ONLY = 1;
// This authentication method is associated with cards stored as Android
// device tokens. Returned payment data includes a 3-D Secure (3DS)
// cryptogram generated on the device.
CRYPTOGRAM_3DS = 2;
}
// Defines types of cardholder data that are accepted by the gateway.
// If not specified, no restrictions are applied.
//
// Note that partners who use commercial gateways should leave this
// empty unless their gateway provider has specified otherwise. Restricting
// allowed_auth_methods is most useful in the scenario that a partner
// integrates with GPay as a gateway themselves.
repeated AuthMethod allowed_auth_methods = 6;
}
Terms Definition
// A set of rules and guidelines that are displayed to the
// user in order to make a booking through Reserve with Google.
message Terms {
// The URL to the Terms and Conditions. (optional)
string url = 1;
// The text to be displayed to the user.
// Use localized_text below for new integrations.
string text = 2;
// The localized text to be displayed to the user. (required)
Text localized_text = 3;
}
Text Definition
// A possibly-localized text payload. Some Text fields may contain marked-up
// content.
message Text {
// Required. Text value in an unknown locale, which will be displayed if
// `localized_value` for the user locale is empty or missing. The locale for
// this value may depend on the partner or service provider, and it should not
// be assumed to be any specific language.
string value = 1;
// Per-locale text values. Required.
repeated LocalizedString localized_value = 2;
}
LocalizedString Definition
// Instance of a string in one locale.
message LocalizedString {
// IETF BCP 47 language code, such as "en", "mas", "zh-Hant", "de-CH-1901".
// See http://www.w3.org/International/articles/language-tags/.
string locale = 1;
// Message in the locale above (UTF-8).
string value = 2;
}
Advisement Definition
// Advisements that are displayed to the user when booking through Reserve with
// Google.
message Advisement {
// Custom message to be displayed to the user when booking through
// Reserve with Google.
Text text = 1;
}
EconomicOperator Definition
// Economic Operator information for the Merchant.
message EconomicOperator {
// Name, address, telephone number and email address of the economic operator,
// defined as the manufacturer, authorized representative, importer,
// distributor, fulfillment service provider or any other natural or legal
// person subject to obligations related to the manufacture of products,
// making them available, or putting them into service.
// Freeform string representation of the economic_operator. This information
// may be formatted using " " and "\n".
Text text = 1;
}
MerchantMatchingHints Definition
// Hints used to help Google match a merchant to a place on Google Maps.
message MerchantMatchingHints {
// The Place ID for a place in the Google Places database and on Google Maps.
// See https://developers.google.com/places/place-id for more about Place IDs.
// If this is provided, Google will use it as a hint when matching, and
// prioritize the hint over other candidates.
string place_id = 1;
}
ServiceAttribute Definition
// Service attributes are partner-defined categories that describe the Services
// for a Merchant. For example, a bank may define an "Account Type"
// service attribute with possible values of "Personal" and "Business", while a
// hair salon may define a "Service Type" service attribute with possible
// values of "Haircut", "Color", and "Style".
message ServiceAttribute {
// An identifier that uniquely identifies this service attribute among others
// for the same merchant, e.g. "account-type".
string attribute_id = 1;
// A user-visible name for this attribute, e.g. "Account Type".
string attribute_name = 2;
// Represents a possible value for a particular service attribute.
message Value {
// An identifier that uniquely identifies this value among others for
// this service attribute, e.g. "personal".
string value_id = 1;
// A user-visible name for the value, e.g. "Personal".
string value_name = 2;
}
// All possible values for this service attribute.
repeated Value value = 3;
}
ActionLink Definition
// An action URL with associated language, list of countries restricted to, and
// optional platform that indicates which platform this action should be
// performed on.
message ActionLink {
// The entry point URL for this action link.
string url = 1;
// The BCP-47 language tag identifying the language in which the content
// from this URI is available.
string language = 2;
// An unordered list of ISO 3166-1 alpha-2 country codes. Leave empty for
// unrestricted visibility.
repeated string restricted_country = 3;
// The platform that this action should be performed on. If this field is
// unset, ACTION_PLATFORM_WEB_APPLICATION will be used as fallback.
ActionPlatform platform = 4;
// Predetermined type of action associated with an action link.
enum ActionLinkType {
// The action link type is unspecified.
ACTION_LINK_TYPE_UNSPECIFIED = 0;
// The action link type is booking an appointment.
ACTION_LINK_TYPE_BOOK_APPOINTMENT = 1;
// The action link type is booking an online appointment.
ACTION_LINK_TYPE_BOOK_ONLINE_APPOINTMENT = 2;
// The action link type is ordering food for delivery or takeout or both.
ACTION_LINK_TYPE_ORDER_FOOD = 3;
// The action link type is ordering food for delivery.
ACTION_LINK_TYPE_ORDER_FOOD_DELIVERY = 4;
// The action link type is ordering food for takeout.
ACTION_LINK_TYPE_ORDER_FOOD_TAKEOUT = 5;
// The action link type is making a dining reservation.
ACTION_LINK_TYPE_MAKE_DINING_RESERVATION = 6;
// The action link type allows users to shop from the given merchant. It
// could either be delivery or pickup.
ACTION_LINK_TYPE_SHOP_ONLINE = 7;
}
// Predetermined type of action associated with an action link.
ActionLinkType action_link_type = 5;
// Metadata for the order online link.
// Supports action with ActionLinkType of ACTION_LINK_TYPE_SHOP_ONLINE.
OrderOnlineMetadata order_online_metadata = 6;
// Metadata for Food Ordering links.
// Supports action type:
// * `ACTION_LINK_TYPE_ORDER_FOOD_DELIVERY`
// * `ACTION_LINK_TYPE_ORDER_FOOD_TAKEOUT`
// Does NOT support `ACTION_LINK_TYPE_ORDER_FOOD`
FoodOrderingMetadata food_ordering_metadata = 7
;
// Additional information about action link which is unique to the events
// vertical.
message EventMetadata {
// Predetermined event surface associated with an action link. This is only
// used for Events vertical.
enum Surface {
// The surface is unspecified.
SURFACE_UNSPECIFIED = 0;
// The action link is booking a event ticket in Search.
SURFACE_SEARCH = 1;
// The action link is booking a event ticket in YouTube.
SURFACE_YOUTUBE = 2;
// The action link is clicking on an Ad for the event.
SURFACE_ADS = 3;
}
// Predetermined event surface associated with an action link. This is only
// used for Events vertical.
Surface surface = 1;
}
EventMetadata event_metadata = 9;
reserved 8;
}
ActionPlatform Definition
// The platform that the action is performed on. Web application is the general
// fallback. It is recommended to have at least one ActionLink with
// ACTION_PLATFORM_WEB_APPLICATION. Links with Android and iOS as platform are
// only used on the respective system.
enum ActionPlatform {
// The platform is unspecified.
ACTION_PLATFORM_UNSPECIFIED = 0;
// The action platform is web in general.
ACTION_PLATFORM_WEB_APPLICATION = 1;
// The action platform is web on mobile devices.
ACTION_PLATFORM_MOBILE_WEB = 2;
// The action platform is Android OS.
ACTION_PLATFORM_ANDROID = 3;
// The action platform is iOS.
ACTION_PLATFORM_IOS = 4;
}
OrderOnlineMetadata Definition
// Metadata for an order online action link.
message OrderOnlineMetadata {
// Available fulfillment options for an order online action link.
repeated FulfillmentOption fulfillment_option = 1;
}
FulfillmentOption Definition
// The fulfillment option for an order online action link.
message FulfillmentOption {
// The fulfillment type associated with an action link.
enum FulfillmentType {
// The fulfillment type is unspecified.
FULFILLMENT_TYPE_UNSPECIFIED = 0;
// The fulfillment type is delivery.
FULFILLMENT_TYPE_DELIVERY = 1;
// The fulfillment type is pickup.
FULFILLMENT_TYPE_PICKUP = 2;
}
// Required. The fulfillment type.
FulfillmentType fulfillment_type = 1;
// Day level availability.
message AvailableDay {
// Required. An available date for a fulfillment method. Assumed to be in
// merchant's timezone.
google.type.Date fulfillment_date = 1;
// Required. Unix timestamp. The last time a user could order, and receive
// items by `fulfillment_date`. In other words, after last_ordering_time,
// fulfillment_date will no longer be shown as available.
//
// For example, if the fulfillment_date is 2020-08-10:
// - a last_ordering_time value of 2020-08-10 18:00 means that, in order to
// receive their order on 2020-08-10, a customer must make that order by 6pm
// that same day.
// - a last_ordering_time value of 2020-08-08 20:00 means that, in order to
// receive their order on 2020-08-10, a customer must make that order by 8pm
// two days prior.
google.protobuf.Timestamp last_ordering_time = 2;
}
// Required. A list of days on which there is availability for this
// fulfillment method (preferably at least 2).
repeated AvailableDay available_day = 2;
// No fee required for the fulfillment method associated with the action link.
message NoFee {}
// The minimum fee required for the fulfillment method associated with the
// action link.
message MinimumFee {
// Required. The base fee amount for the fulfillment method.
Price base_fee_amount = 1;
}
// The fixed fee required for the fulfillment method associated with the
// action link.
message FixedFee {
// Required. The amount of the fixed fee for the fulfillment method.
Price amount = 1;
}
// Fee details for the fulfillment method associated with the action link.
message FeeDetails {
// Fee model for the fulfillment method.
oneof fee_details {
// No fee for the fulfillment method.
NoFee no_fee = 1;
// The base fee associated with the fulfillment method.
MinimumFee base_fee = 2;
// The fixed fee associated with the fulfillment method.
FixedFee fixed_fee = 3;
}
}
// Required. Fee details for the fulfillment method.
FeeDetails fee_details = 3;
// Required. Minimum order for the fulfillment method associated with the
// action link.
Price minimum_order = 4;
}
FoodOrderingMetadata Definition
// Metadata for food ordering action links.
message FoodOrderingMetadata {
// Details of fees charged to the user on top of the item total.
// Repeated for different types of fees like service fee, delivery fee etc.
repeated FeeDetails fee_details = 1;
// Order fulfillment time duration from order confirmation.
// For delivery orders, time duration until the food is delivered.
// For pickup orders, time duration until the food is ready for pickup.
oneof fulfillment_duration_options {
// Fixed duration. For example: 30 mins.
google.protobuf.Duration fulfillment_lead_time_duration = 2
;
// A range of duration.
// Examples:
// * 30 mins to 45 mins
// * Greater than 30 mins
// * Less than 50 mins
DurationRange fulfillment_lead_time_duration_range = 4
;
}
// Details on advanced ordering support also known as order ahead where user
// can place an order for fulfillment at a later time than right now.
AdvanceOrderDetails advance_order_details = 3;
// Fee details.
message FeeDetails {
// Fee type.
enum FeeType {
// Fee type unspecified.
FEE_TYPE_UNSPECIFIED = 0;
// For delivery fees.
DELIVERY = 1;
// For service fees.
SERVICE = 2;
}
// Fee type. (required)
FeeType type = 1
;
// Fee amount either in unit currency, a percentage of the cart value, or a
// combination of both. (required)
FeeAmount fee_amount = 2
;
// `FeeAmount` examples:
// * Fixed fee: USD 0 (no fee), USD 1.5
// * Range of fixed fee: USD 1.0 (minimum), USD 3.0 (maximum), USD 5.0-6.0
// * Percentage of cart size: 15.5%, 10%-20%, 10% (minimum), 15% (maximum)
// * Compound of range and percentage:
// 25.5% & USD 2.5 (minimum), 25.5% & USD 4.5 (maximum),
// 10% & USD 1.5-2.5, 10.5%-20% & USD 2.5-3.5
message FeeAmount {
// Options to specify monetary amount.
oneof amount_options {
// Fixed amount. For example USD 3.5.
google.type.Money amount = 1;
// Range of amount.
// Upper and/or Lower bounds of fee range must be positive.
// Examples:
// * USD 3.5 to USD 5.5
// * At least USD 3.5
// * At most USD 5.5
MoneyRange amount_range = 2
;
// Unknown amount.
bool amount_unknown = 4;
}
// Fee in terms of a percentage of the cart value.
// Supports a range (bounded and unbounded) or a fixed percentage.
// Value should be between 0 (exclusive) and 100 (inclusive).
// Examples:
// * Fixed 5.5%
// * At least 5.5%
// * At most 5.5%
// * 4.5% to 5.5%
QuantitativeValue cart_percentage = 3
;
}
}
// For order ahead support.
message AdvanceOrderDetails {
// True if Advance Orders, also known as Order Ahead, is supported.
// (required)
bool is_supported = 1;
}
}
DurationRange Definition
// Wrapper for a range of duration that can be bounded or unbounded.
// At least one of min_duration and max_duration duration is required.
message DurationRange {
// Minimum duration.
google.protobuf.Duration min_duration = 1
;
// Maximum duration.
google.protobuf.Duration max_duration = 2
;
}
MoneyRange Definition
// Wrapper for a range of monetary amount that could be bounded or unbounded.
// At least one of min_amount and max_amount is required.
message MoneyRange {
// Minimum amount.
google.type.Money min_amount = 1
;
// Maximum amount.
google.type.Money max_amount = 2;
}
QuantitativeValue Definition
// Wrapper for a numerical value that could be a range or a fixed value.
// `QuantitativeValue` examples:
// * Singular value: `value: 10.5`
// * Bounded range: `value_range {min_value: 5.5, max_value 10.5}`
// * Lower bound: `value_range {min_value: 5.5}`
// * Upper bound: `value_range {max_value: 10.5}`
message QuantitativeValue {
// Range of values such that `min_value` < `max_value`.
// Requires at least one of `min_value` and `max_value`.
message RangeValue {
// Minimum value.
double min_value =
1
;
// Maximum value.
double max_value =
2
;
}
// (required)
oneof value_options {
option (validator.one_of) = {
// A singular value. For example: 5.6
double value = 1;
// A range of values that could also be open ended or bounded.
// Examples:
// * At least 5.5
// * At most 5.5
// * 5.5 to 6.5
RangeValue value_range = 2
;
}
}
[[["Easy to understand","easyToUnderstand","thumb-up"],["Solved my problem","solvedMyProblem","thumb-up"],["Other","otherUp","thumb-up"]],[["Missing the information I need","missingTheInformationINeed","thumb-down"],["Too complicated / too many steps","tooComplicatedTooManySteps","thumb-down"],["Out of date","outOfDate","thumb-down"],["Samples / code issue","samplesCodeIssue","thumb-down"],["Other","otherDown","thumb-down"]],["Last updated 2024-10-31 UTC."],[[["The Merchant Feed uses Protobuf or JSON to provide information about merchants, including their location, contact details, and supported payment options."],["Merchants can be located using geographical coordinates, either through latitude/longitude or a structured postal address."],["Payment options for services can be defined with unique identifiers, names, descriptions, prices, and tax rates."],["Action links allow users to interact with merchants through various actions, such as booking reservations or placing online orders."],["TokenizationConfig facilitates secure payment processing by specifying parameters, billing information format, and card network details."]]],[]]