// The definition of a service provided by a merchant.messageService{// An opaque string from an aggregator partner which uniquely identifies a// merchant. (required)stringmerchant_id=1;// An opaque string from an aggregator partner which uniquely identifies the// service. (required)stringservice_id=2;// The name of the service. Deprecated. Please use localized_service_name.stringname=3[deprecated=true];// The name of the service, e.g. "Men's haircut". Possibly in several locales.// (required)Textlocalized_service_name=26;// The description of the service.// Deprecated. Please use localized_description.stringdescription=4[deprecated=true];// The description of the product. Limited formatting options are allowed in// the HTML format. Supported tags:// * h1-h5// * ul, ol, li// * strong, italic, em// * p, br// Other tags are not supported and will be removed. CSS, tables, style// property, `a` links are not supported. Images are not allowed, use the// related_media field instead.// Important notes:// * Try not to use other tags except for the supported ones mentioned// above, because the contents within unsupported tags will be stripped,// and may lead to an undesirable user experience.// * Try avoid deep nested structures like more than 3 different heading// levels or nested lists. Keeping the structure flat, simple, and// straightforward, helps to create a better user experience.// * Do not duplicate info from the product_features field below in the// description as both would normally be shown side by side.// Recommended to not exceed length of 10000 in any language. Max length:// 16000.// Recommended.// (optional)Textlocalized_description=27;// The price of the service. (optional, overridden when payment options or// ticket types present)Priceprice=5;// Describes how the price is interpreted and displayed to the user. Can be// used by any vertical except Dining and Things To Do to configure display of// the service price. (optional)PriceInterpretationprice_interpretation=23;// Rules to book/cancel an appointment. (optional)SchedulingRulesrules=6;// Enum to indicate the prepayment type.enumPrepaymentType{// By default we will assume that the prepayment is NOT_SUPPORTED.PREPAYMENT_TYPE_UNSPECIFIED=0;// The user has to pay this service at the booking time.REQUIRED=1;// The user can choose to pre-pay this service at the booking time or later,// but it is not required in order to book.OPTIONAL=2;// The prepayment is not supported for this service.NOT_SUPPORTED=3;}// Whether a prepayment is required, optional or not supported. (optional)PrepaymentTypeprepayment_type=8;// Specific information around when prepayment is completed.messagePrepaymentTerms{// Enum to specify when the charge will occur relative to the purchase// time.enumChargeTiming{CHARGE_TIMING_UNSPECIFIED=0;CHARGE_NOW=1;CHARGE_LATER=2;}ChargeTimingcharge_timing=1;}PrepaymentTermsprepayment_terms=34;// The service's tax rate. If present this field overrides any tax_rate set at// the merchant level. An empty message (i.e. tax_rate { }) will reset the// applied tax rate to zero. (optional)TaxRatetax_rate=9;// A list of ids referencing the payment options which can be used to pay// for this service. The actual payment options are defined at the Merchant// level, and can also be shared among multiple Merchants. (optional)repeatedstringpayment_option_id=10;// Defines how a deposit may be charged to the user. Can be overridden at the// availability level. (optional)Depositdeposit=11;// Defines a no show fee that may be charged to the user. Can be overridden// at the availability level. (optional)NoShowFeeno_show_fee=12;// Indicates whether the user must provide a credit card in order to book this// service.// This value can be overridden at the availability level. (optional)RequireCreditCardrequire_credit_card=13;// Additional information which needs to be added if the service requires the// user to pay directly to the merchant. IMPORTANT NOTE: RwG would not be// involved in this transaction. (Optional. Required if virtual_session is// defined and prepayment_type is NOT set to REQUIRED).DirectMerchantPaymentdirect_merchant_payment=36;// An action link related to this service. If action link exists, type (see// below) must be set in the Service.repeatedActionLinkaction_link=14;enumServiceType{SERVICE_TYPE_UNSPECIFIED=0;// Service that provides dining reservation.SERVICE_TYPE_DINING_RESERVATION=1;// Service that provides food ordering in general, could be either takeout// or delivery or both.SERVICE_TYPE_FOOD_ORDERING=2;// Service that only provides food delivery.SERVICE_TYPE_FOOD_DELIVERY=6;// Service that only provides food takeout.SERVICE_TYPE_FOOD_TAKEOUT=7;// Services that provide event based ticketing (e.g. concerts, sporting// events, shows). Do not use for Reserve with Google integrations.SERVICE_TYPE_EVENT_TICKET=3;SERVICE_TYPE_TRIP_TOUR=4;// Service that provides appointments or classes. Recommended for (1) health// and fitness, (2) spa and beauty, and (3) financial consults and// evaluations services. Please see the supported service types:// https://developers.google.com/maps-booking/guides/end-to-end-integration/overviewSERVICE_TYPE_APPOINTMENT=5;// Service that provides appointment for an online class or session which// will be fully virtual. Must be set if enabling virtual service bookings.SERVICE_TYPE_ONLINE_APPOINTMENT=8;// Service that allows users to shop from the given merchant. It could// either be delivery or pickup.SERVICE_TYPE_SHOPPING=9;}// The predefined type of this service. (optional)ServiceTypetype=15;// Types of tickets that can be booked/purchased for this service. Only// supported in order based booking API, see// https://developers.google.com/maps-booking/guides/partner-implementing-booking-server-1a// (optional)repeatedTicketTypeticket_type=16;// Photos related to this service. Google will crawl these media to ensure// that they are displayed correctly to end-users. (optional)repeatedRelatedMediarelated_media=17;// Service attribute values that apply to this service (optional).// Each Service may have zero or more values for each service attribute// defined in the corresponding Merchant.repeatedServiceAttributeValueIdservice_attribute_value_id=18;// Rules related to joining the waitlist. Should be populated if the service// and merchant support waitlist functionality. Should not be populated// otherwise.WaitlistRuleswaitlist_rules=19;// Additional information unique to the event ticketing vertical. (optional)TicketingVerticalSpecificDataticketing_vertical_specific_data=22;// User rating for this service as an aggregate metric over all reviews.Ratingrating=30;// Additional information unique to home service vertical. (optional)HomeServiceDatahome_service_data=31;// Information about virtual session. (Optional. Required if enabling// virtual services)VirtualSessionvirtual_session=35;// Ranking hint for this service. Optional.ServiceRankingHintranking_hint=37;// A template specifying how Google should generate URLs to external site.// Used for Dining Reservations Payment Redirect Partners only.UriTemplateuri_template=38;}
Price – Definition
// The price of a service or a fee.messagePrice{// The price in micro-units of the currency.// For example: 1.95 USD is 1950000 in micro-units.// If your price contains fractions of the smallest currency unit, then it// will be rounded using nearest even rounding (e.g. 2.5 cents rounded// to 2 cents, 3.5 cents rounded to 4 cents, 0.5 cents rounded to 0 cents,// 2.51 cents rounded to 3 cents). (required)int64price_micros=1;// The currency of the price that is defined in ISO 4217. (required)stringcurrency_code=2;// An optional and opaque string that identifies the pricing option that is// associated with the extended price. (optional)stringpricing_option_tag=3;}
PriceInterpretation – Definition
// Describes how a Price should be interpreted and displayed to the user.enumPriceInterpretation{// Price interpretation unspecified, defaults to EXACT_AMOUNT.PRICE_INTERPRETATION_UNSPECIFIED=0;// When the price should be interpreted as a specific value.//// Examples:// $20 for a yoga class; $15 for a child haircutEXACT_AMOUNT=1;// When the price of a service is variable but a minimum price is known and// displayed to consumers. Consumers may make choices which increase the// price.//// Note that any service that uses this PriceInterpretation must use// PrepaymentType NOT_SUPPORTED.//// Examples:// $30 for dog grooming, but additional consumer choices may increase the// priceSTARTS_AT=2;}
Text – Definition
// A possibly-localized text payload. Some Text fields may contain marked-up// content.messageText{// 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.stringvalue=1;// Per-locale text values. Required.repeatedLocalizedStringlocalized_value=2;}
LocalizedString – Definition
// Instance of a string in one locale.messageLocalizedString{// IETF BCP 47 language code, such as "en", "mas", "zh-Hant", "de-CH-1901".// See http://www.w3.org/International/articles/language-tags/.stringlocale=1;// Message in the locale above (UTF-8).stringvalue=2;}
SchedulingRules – Definition
// The scheduling rules for a service.messageSchedulingRules{// The duration (in seconds) from when the last booking can be made to// when the availability slot starts or ends.//// If "min_advance_booking" is set, the last bookable time is calculated as// (<slot start time> - "min_advance_booking").// If "min_booking_buffer_before_end_time" is set, the last bookable time is// calculated as (<slot end time> - "min_booking_buffer_before_end_time").// Note that the value of "min_booking_buffer_before_end_time" must be// positive if set.// If both are unset, the slot is bookable until the slot begin time. If both// fields are set, only one value will be picked while the other value// ignored--we cannot reliably predict which value is chosen.//// Examples:// * A haircut that needs to be booked at least 1 hour before the start time.// 'scheduling_rules{ min_advance_booking: 3600 ...}`//// * A museum where the last ticket can be purchased 30 mins before closing:// 'scheduling_rules{ min_booking_buffer_before_end_time: 1800 ...}'//// * A movie ticket that needs to be purchased before the start time.// 'scheduling_rules{ ...}' (leave this field empty)// (optional)oneofmin_booking_buffer{// The duration (in seconds) from when the last booking can be made to// when the availability slot starts.int64min_advance_booking=1;// The duration (in seconds) from when the last booking can be made to// when the availability slot ends. If this field is set, the// "admission_policy" field must be set to TIME_FLEXIBLE to indicate that// users can use the purchased tickets after slots start.int64min_booking_buffer_before_end_time=6;}// The minimum advance notice in seconds required to cancel a booked// appointment online. (optional)int64min_advance_online_canceling=2;// The fee for canceling within the minimum advance notice period.Pricelate_cancellation_fee=3[deprecated=true];// The fee for no-show without canceling.Pricenoshow_fee=4[deprecated=true];// The admission policy of this service.enumAdmissionPolicy{// Unused.ADMISSION_POLICY_UNSPECIFIED=0;// Customers are required to be present at the start time of the// availability slot, and the service is expected to finish at the// end time of the slot.// Examples of TIME_STRICT use cases:// * A tour that starts at 9am that requires all attendees to arrive// at the start time, and returns at around 12pm.// * A haircut reservation at 3pm on Saturday that will take approximately// 30 minutes.// * A fitness class from 6pm to 8pm.TIME_STRICT=1;// Customers can arrive at any time between the start and end time of the// availability slot to use this booking.//// Examples of TIME_FLEXIBLE use cases:// * A museum ticket that can be used during any time on the purchase// date.// * An afternoon admission to an amusement park that can be used from// 12pm to 9pm.TIME_FLEXIBLE=2;// Customers need to arrive at the merchant at the start time of the// availability slot but can leave any time they want.//// For example, in the museum admission scenario, a timed entry ticket// for 10am requires the user to be at the museum at 10am. The start time of// availability slots for this service represents the designated entry// time. The end time, however, is used solely as a key to identify the// availability slot for booking.TIMED_ENTRY_WITH_FLEXIBLE_DURATION=3;}// The admission policy that applied to this service. If unset, defaults to// TIME_STRICT. (optional)AdmissionPolicyadmission_policy=5;// Scheduling rules cancellation policy (required for Things-to-do).// Defaults to non-refundable.CancellationPolicycancellation_policy=7;}
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.messageTaxRate{// 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)int32micro_percent=1;}
ServiceIntakeFormField – Definition
// Defines a field that is included in a ServiceIntakeForm.messageServiceIntakeFormField{// A string from an aggregator partner which uniquely identifies a form field.// This id should be the same as the id in the corresponding form field// answer and must be unique across both the service level and per ticket// intake forms. (required)stringid=5;// Enum to indicate the type of field.enumFieldType{// Fields of unspecified or unknown type will be ignored.FIELD_TYPE_UNSPECIFIED=0;// A one-line input field for text.SHORT_ANSWER=1;// A multi-line input field for text.PARAGRAPH=2;// A set of radio buttons that requires one choice from many options.MULTIPLE_CHOICE=3;// One or more enumerated items with checkboxes.CHECKBOXES=4;// A selection from a dropdown.DROPDOWN=5;// A yes/no button.BOOLEAN=6;// A search widget that supports finding matched location given user input// from provided location list.LOCATION_SEARCH=7;}// The type of this field. (required)FieldTypetype=1;// The text shown to the user for this field. Deprecated, please use// `localized_label` instead.stringlabel=2[deprecated=true];// The text shown to the user for this field. The field can be supplied in// multiple locales. (required)Textlocalized_label=7;// Set if and only if the field type is LOCATION_SEARCH. Please use the// "location_id" in the "location" field to specify the location value.repeatedstringvalue=3;// Set if and only if the field type is MULTIPLE_CHOICE, CHECKBOXES, or// DROPDOWN. Used to enumerate possible choices.repeatedTextchoice_text=8;// Indicates whether an answer to this field is required by a user. (optional)boolis_required=4;// Indicates whether a custom value is allowed in additional to predefined// answers. This is only applicable when the field type is LOCATION_SEARCH.// (optional)boolallow_custom_answer=9;// Additional options provided in addition to the provided values. Only// applicable when the field type is LOCATION_SEARCH.// E.g. in addition to the provided location list, another available option// can be "I will contact supplier later". (optional)repeatedTextadditional_option=10;// If this question should only be shown when the user books certain ticket// types, this field should be set as the set of applicable ticket type ids.// Leave the field empty if the question is always applicable.// (optional)repeatedstringticket_type_restrict=6;// The hint text for input, which shows up as a text placeholder. This is only// applicable when the field type is SHORT_ANSWER or PARAGRAPH.// (optional)Texthint=11;}
ServiceIntakeForm – Definition
// Defines an intake form that customizes the service provided by a merchant.messageServiceIntakeForm{// Fields that will be displayed to the user. (required)repeatedServiceIntakeFormFieldfield=1;// If true, this form will be shown to first time customers.// Deprecated. This functionality is not supported for intake forms.boolfirst_time_customers=2[deprecated=true];// If true, this form will be shown to repeat customers.// Deprecated. This functionality is not supported for intake forms.boolreturning_customers=3[deprecated=true];}
Deposit – Definition
// A deposit that the user may be charged or have a hold on their credit card// for.messageDeposit{// Deposit amount.Pricedeposit=1;// Minimum advance cancellation for the deposit.int64min_advance_cancellation_sec=2;// Defines how the deposit is determined from the availability.PriceTypedeposit_type=3;}
NoShowFee – Definition
// A fee that a user may be charged if they have made a booking but do not// show up.messageNoShowFee{// The amount the user may be charged if they do not show up for their// reservation.Pricefee=1;// Defines how the fee is determined from the availability.PriceTypefee_type=3;}
PriceType – Definition
// Defines how a total price is determined from an availability.enumPriceType{// The price is for a fixed amount. This is the default value if the field is// not set.//// Examples:// $50 deposit to reserve a table; $20 no show fee for a yoga classFIXED_RATE_DEFAULT=0;// The price specified is per person, and the total price is calculated// according to the party size specified in Resources as price_micros *// party_size. A PER_PERSON price must be accompanied by a party size in the// availability resources. If it is not, a party size of one is used.//// Examples:// $10 each for tickets to a museumPER_PERSON=1;}
RequireCreditCard – Definition
// Defines whether a credit card is required in order to book an appointment.enumRequireCreditCard{// The credit card requirement is not explicitly specified and the// behaviour is identical to the one specified for CONDITIONAL.REQUIRE_CREDIT_CARD_UNSPECIFIED=0;// Google will require a credit card for the booking if any of the following// conditions are met:// * the availability has a price and the prepayment_type is REQUIRED// * the no_show_fee is set// * the deposit field is set.REQUIRE_CREDIT_CARD_CONDITIONAL=1;// A credit card is always required in order to book this availability// regardless of other field values.REQUIRE_CREDIT_CARD_ALWAYS=2;}
PerTicketFee – Definition
// Fees that must be paid for each ticket the user purchases. These fields// must add up to the total per ticket fee.messagePerTicketFee{// An extra charge assessed for a service.Priceservice_charge=1;// A fee that goes to the venue/facility.Pricefacility_fee=2;// Per ticket taxes.Pricetaxes=3;}
PreOrderFee – Definition
// Fees that must be paid once per order, regardless of number of tickets. These// fields must add up to the total per order fee.messagePerOrderFee{// A fee that can vary by delivery method.Pricedelivery_fee=1;// A fee to process the user's payment method.Priceprocessing_fee=2;}
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.messageActionLink{// The entry point URL for this action link.stringurl=1;// The BCP-47 language tag identifying the language in which the content// from this URI is available.stringlanguage=2;// The platform that this action should be performed on. If this field is// unset, ACTION_PLATFORM_WEB_APPLICATION will be used as fallback.ActionPlatformplatform=4;// Predetermined type of action associated with an action link.enumActionLinkType{// 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.ActionLinkTypeaction_link_type=5;// Metadata for the order online link.// Supports action with ActionLinkType of ACTION_LINK_TYPE_SHOP_ONLINE.OrderOnlineMetadataorder_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`FoodOrderingMetadatafood_ordering_metadata=7;// Additional information about action link which is unique to the events// vertical.messageEventMetadata{// Predetermined event surface associated with an action link. This is only// used for Events vertical.enumSurface{// 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.Surfacesurface=1;}EventMetadataevent_metadata=9;reserved8;}
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.enumActionPlatform{// 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;}
OnlineOrderMetadata – Definition
// Metadata for an order online action link.messageOrderOnlineMetadata{// Available fulfillment options for an order online action link.repeatedFulfillmentOptionfulfillment_option=1;}
FulfillmentOption – Definition
//Thefulfillmentoptionforanorderonlineactionlink.messageFulfillmentOption{//Thefulfillmenttypeassociatedwithanactionlink.enumFulfillmentType{//Thefulfillmenttypeisunspecified.FULFILLMENT_TYPE_UNSPECIFIED=0;//Thefulfillmenttypeisdelivery.FULFILLMENT_TYPE_DELIVERY=1;//Thefulfillmenttypeispickup.FULFILLMENT_TYPE_PICKUP=2;}//Required.Thefulfillmenttype.FulfillmentTypefulfillment_type=1;//Daylevelavailability.messageAvailableDay{//Required.Anavailabledateforafulfillmentmethod.Assumedtobein//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;}
TicketType – Definition
// TicketType is used to differentiate among tickets (where a ticket can be a// spot on a raft trip, an admission to a museum, etc.) with different prices// and/or availabilities due to different user types or different service// attributes.// Only add new ticket types when at least one of the following differs:// (1) short_description (2) option_description (3) pricemessageTicketType{// The ticket id is used to differentiate among different ticket types of the// same service, and is only expected to be unique within a service.stringticket_type_id=1;// This can be user visible, e.g., “adult”, "child", “veteran”, “Row J”, etc.// Deprecated, use `localized_short_description` instead.stringshort_description=2[deprecated=true];// This can be user visible, e.g., “adult”, "child", “veteran”, “Row J”, etc.// The field can be supplied in multiple locales.Textlocalized_short_description=6;// The price of a single ticket of this type.Priceprice=3;// Additional fees for purchasing this ticket. (optional)PerTicketFeeper_ticket_fee=5;// Indicates the price format displayed on the landing page.//// This field is ignored for non-link-out inventory.//// This field allows Google surfaces to show the same price format as used by// the landing page. Consistent price formats improve conversion rate and// reduce confusion.enumPriceDisplayType{// The price display type is unspecified. Google will determine which// format to show.PRICE_DISPLAY_TYPE_UNSPECIFIED=0;// The price shown on the landing page is the base price.PRICE_DISPLAY_TYPE_BASE=1;// The price shown on the landing page includes all fees and taxes.PRICE_DISPLAY_TYPE_ALL_IN=2;}// Predetermined price display type of a single ticket of this type.PriceDisplayTypeprice_display_type=9;// Description of any additional option which this ticket type represents, if// any. Deprecated, use `localized_option_description` instead.stringoption_description=4[deprecated=true];// Description of any additional option which this ticket type represents, if// any. The field can be supplied in multiple locales.//// This is useful when the ticket type represents multiple dimensions.//// Example: an admission ticket with different types 'adult', 'child' and// language as an additional option, the expected TicketType list would be:// - { ticket_type_id: "ticket_type_1"// localized_short_description { value: "adult" }// localized_option_description { value: "english" }// }// - { ticket_type_id: "ticket_type_2"// localized_short_description { value: "adult" }// localized_option_description { value: "spanish" }// }// - { ticket_type_id: "ticket_type_3"// localized_short_description { value: "child" }// localized_option_description { value: "english" }// }// - { ticket_type_id: "ticket_type_4"// localized_short_description { value: "child" }// localized_option_description { value: "spanish" }// }//// Optional, but if any ticket type within the service has this field set, we// expect all other ticket types to have this field set as well (a default// option_description could be used). E.g.// [{ticket_type_1, adult, english}, {ticket_type_1, adult, ''}] is not a// valid list.//// Only two HTML formatting tags are supported: <em> and <br>. They are// intended to be used for specifying options with both a title and// detailed description, for example: "<em>Premium Seating</em><br>This option// offers seating at the private boxes including fully cushioned seats,// private TVs, in-seat food and beverage service. These seats provide// picturesque views of the field."Textlocalized_option_description=7;// Predetermined inventory type of a single ticket of this type.enumInventoryType{// The inventory type is unspecified.INVENTORY_TYPE_UNSPECIFIED=0;// Primary inventory.INVENTORY_TYPE_PRIMARY=1;// Verified resale inventory.INVENTORY_TYPE_VERIFIED_RESALE=2;// Resale inventory.INVENTORY_TYPE_RESALE=3;// Aggregator inventory.INVENTORY_TYPE_AGGREGATOR=4;}// Predetermined inventory type of a single ticket of this type.InventoryTypeinventory_type=8;}
Location – Definition
// Geographic information about a location.messageLocation{// 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 match the location to this place.// (optional)stringplace_id=1;// The location's name, telephone, url and geo are used to support matching// the location with places already present on Google Maps.//// This field is optional, but may be required in some contexts. For example,// a Service.location without a name will not be matched to a business entity,// even if they are located at the same address. (optional)stringname=2;// The public telephone number of the location including its country and area// codes, e.g. +14567891234. (optional)stringtelephone=3;// The url of the location's public website. (optional)stringurl=4;// The Geo info of the location, including latitude, longitude, and address.// (optional)GeoCoordinatesgeo=5;// Optional text to provide more precise description of the location, or// instructions assisting locating the place. E.g. "Front entrance of the// library", "meet at the intersect of Road A and Street B". (optional)Textdescription=6;// The type of the location. Note that this field may be required when// attached to a Service, see comments in Service.location for more details.// (optional)LocationTypelocation_type=7;// Unique reference of the location within the service. This id can be used to// refer to this location in other service fields. E.g. in the custom intake// form, a set of location ids can be used to specify pick up location// options. If set, this id should be unique within the same service.// Note this is only applicable for Service.// (optional)stringlocation_id=8;}
Rating – Definition
// Defines Rating for an entity.messageRating{// Average rating value (required when number_of_ratings > 0).// The value must be in the range of [1, 5] and can be omitted if and only if// the number_of_ratings is zero.doublevalue=1;// Number of ratings used in calculating the value (required).uint64number_of_ratings=2;}
LocationType – Definition
enumLocationType{// Location type unspecified.LOCATION_TYPE_UNSPECIFIED=0;// The location where this service visits.VISITED_LOCATION=1;// The location where this service starts, also serves as MEETING_LOCATION// or START_LOCATION.START_LOCATION=2;// The location where this service ends.END_LOCATION=3;}
CancellationPolicy – Definition
// Cancellation policy for a service.messageCancellationPolicy{// Defines a single refund condition. Multiple refund conditions could be// used together to describe "refund steps" as various durations before the// service start time.messageRefundCondition{// Duration in seconds before the start time, until when the customer can// receive a refund for part of the service's cost specified in// `refund_percent`.// When set to 0 (default), the service can be cancelled at any time.int64min_duration_before_start_time_sec=1;// The percent that can be refunded, as long as the service booking is// cancelled at least `min_duration_before_start_time` before the service// start time, in the range of [0, 100]. When set to 0 (default), the// service is not refundable. When set to 100 this service is fully// refundable.uint32refund_percent=2;}// Zero or more refund conditions applicable to the policy.repeatedRefundConditionrefund_condition=1;}
RelatedMedia – Definition
// Photos related to this service. Google will crawl these media to ensure// that they are displayed correctly to end-users. (optional)messageRelatedMedia{// URL of this media source. Google will crawl the media hosted at this URL.stringurl=1;// Type of this media source.MediaTypetype=2;// Enum to indicate the type of this media source. Only photos are supported.// Please reach out to the Reserve with Google team if other media beyond// photos need to be supported.enumMediaType{// Unused.TYPE_UNSPECIFIED=0;// Indicates the media provided by the url is a photo.PHOTO=1;}// Caption of the media that supports i18n, only plain text is supported. Any// HTML components will be stripped. (optional)Textlocalized_caption=5;// Attribution information about the source of the media. Note that if// the attribution is required to display with the media to give credit to// photographer or agency, this field must be set. (optional)Attributionattribution=4;// Attribution information for this media.messageAttribution{// The text to give credit to the photographer or agency supporting i18n.// This text will be displayed together with the source media. Note that// only plain text is supported for this field, any HTML components will be// stripped (hyperlink based attribution is not supported).Textlocalized_text=2;// Deprecated, prefer to use localized_text.stringtext=1[deprecated=true];}// Deprecated, prefer to use localized_caption.stringcaption=3[deprecated=true];}
ServiceAttributeValueId – Definition
// Identifies a particular value of a service attribute to be applied to a// Service.messageServiceAttributeValueId{// ID of an attribute as defined in Merchant.service_attribute, e.g.// "service-type".stringattribute_id=1;// ID of the value for this attribute, e.g. "haircut". Must match a value_id// in the service attribute definition.stringvalue_id=2;}
WaitlistRules – Definition
// Rules related to joining the waitlist.messageWaitlistRules{// Required. Must be a positive integer for services providing waitlist// functionality. If the service or merchant does not provide waitlist// functionality, this must not be populated.int32min_party_size=1;// Required. Must be a positive integer for services providing waitlist// functionality. If the service or merchant does not provide waitlist// functionality, this must not be populated.int32max_party_size=2;// If true, the user will be able to send a free-form additional text request// when joining the waitlist for this service.boolsupports_additional_request=3;// Set options for parties larger than the set max_party_size.// Leave empty if larger parties should not be given alternative options// for joining a waitlist.repeatedUnsupportedPartySizeOptionabove_max_party_size_options=4;}
UnsupportedPartySizeOption – Definition
// Options for parties that are out of range.messageUnsupportedPartySizeOption{// Available options for parties that are out of range.oneofkind{// Party sizes that are out of range can call the business.// A predefined message will be displayed to the user.// Sample text to be displayed: "For parties larger than// {waitlist_rules.max_party_size} please call the restaurant at// {restaurant phone number in Google maps}." CallMerchant must be// set, but will be empty.CallMerchantcall_merchant=1;}}
CallMerchant – Definition
// Empty message to be used in UnsupportedPartySizeOption, setting this will// display a pre-defined message to users to call the business for a booking.messageCallMerchant{}
TicketingVerticalSpecificData – Definition>
// Additional information unique to the event ticketing vertical.messageTicketingVerticalSpecificData{// A subset of event categories for which we customize the product experience.// Note: not intended to be a universal ontology of events.enumEventCategory{// Not specified. Do not use.EVENT_CATEGORY_UNSPECIFIED=0;// Concerts.EVENT_CATEGORY_CONCERT=1;// Sports events.EVENT_CATEGORY_SPORTS=2;// Theatre events.EVENT_CATEGORY_THEATRE=3;// Exhibits.EVENT_CATEGORY_EXHIBITS=4;// Workshops and Classes.EVENT_CATEGORY_WORKSHOPS_AND_CLASSES=5;}// The category of the event. Set only when event falls into one of the// predefined categories. (optional)EventCategoryevent_category=1;// The URL of the event on the partner's website. (optional)stringevent_url=2;// Identifiers, webpages, or any other public sources that reference an// entity.messagePublicIdentificationData{// Public URL of any webpage that is dedicated to only the topic. This could// include official websites, discogs, social media platforms, wikipedia or// imdb pages, e.g. https://www.discogs.com/artist/1124645-Taylor-Swift,// https://www.wikidata.org/wiki/Q19320959, https://twitter.com/acmilan.// (optional)repeatedstringrelevant_url=1;// The 36-character musicbrainz identifier of the artist or other music// entities, if applicable. See// https://musicbrainz.org/doc/MusicBrainz_Identifier.// (optional)stringmusicbrainz_id=2;}// Represents an entity related to the event.messageEntity{// Unique identifier of the entity in the partner's database. (optional)stringid=1;// Name of the entity. (required)stringname=2;// Url of the webpage that unambiguously describes the entity.// This is the webpage on the partner's website for the entity if any; for// other public URLs of the entity, use relevant_url in// public_identification_data. (optional)stringurl=3;// The type of the entity. Note: not intended to be a universal ontology.enumEntityType{// Not specified. Do not use.ENTITY_TYPE_UNSPECIFIED=0;// The entity represents the artist or group performing at a// concert or a show. Only applicable when event category is CONCERT or// THEATRE.ENTITY_TYPE_PERFORMER=1;// The entity represents the sports team or player at the event. Only// applicable when event category is SPORTS.ENTITY_TYPE_PLAYER=2;// The entity represents the tour that this event belongs to. Only// applicable when event category is CONCERT.ENTITY_TYPE_CONCERT_TOUR=3;// The entity represents a sports tournament that this event// belongs to. Only applicable when event category is SPORTS.ENTITY_TYPE_SPORTS_SERIES=4;// The entity represents the type of play (e.g., musical, comedy, ballet,// etc.) performed at the event. Only applicable when event category is// THEATRE.ENTITY_TYPE_PLAY=5;}// The type of the entity. (optional)EntityTypeentity_type=4;// The role of the entity in the event.enumEntityRole{// Not specified.ENTITY_ROLE_UNSPECIFIED=0;// The entity represents a headliner or leading performer at the event.ENTITY_ROLE_HEADLINER=1;// The entity represents a supporting performer at the event.ENTITY_ROLE_SUPPORTER=2;// The entity represents the home team at the (sports) event.ENTITY_ROLE_HOME_TEAM=3;// The entity represents the away team at the (sports) event.ENTITY_ROLE_AWAY_TEAM=4;}// The role of the entity in the event. (optional)EntityRoleentity_role=5;// Public references of the entity. (optional)PublicIdentificationDatapublic_identification_data=6;}// A list of entities related to the event. (optional)repeatedEntityentity=3;// The type of the event attendance.enumAttendanceMode{// Not specified.ATTENDANCE_MODE_UNSPECIFIED=0;// For virtual events.ONLINE=1;// For physical events.PHYSICAL=2;// For events that are both physical and virtual.PHYSICAL_ONLINE_MIXED=3;}// Required. The type of the event attendance.AttendanceModeevent_attendance_mode=4;// Optional. URL where the event can be watched.repeatedstringevent_virtual_location_url=5;// Optional. Organizer who hosts the event.Textevent_organizer=6;// Optional. URL of the organizer who hosts the event.stringevent_organizer_url=7;// The type of the organizer.enumOrganizerType{// Not specified.ORGANIZER_TYPE_UNSPECIFIED=0;// For organizer who is a person.PERSON=1;// For organizer who is an organization.ORGANIZATION=2;}// Optional. The type of the organizer.OrganizerTypeevent_organizer_type=8;// URL of the pages where the event information or descriptions can be found.// Required for virtual events as virtual events may not have a ticketing// page and this url contains the basic information of the event.repeatedstringevent_source_url=9;// State of the event.enumEventState{// Not specified.EVENT_STATE_UNSPECIFIED=0;// The event is scheduled.SCHEDULED=1;// The event is rescheduled.RESCHEDULED=2;// The event is cancelled.CANCELLED=3;// The event is postponed.POSTPONED=4;}// Optional. State of the event.EventStateevent_state=10;// The localized brand name. (optional)Textbrand_name=11;// Information about the creator of the event. Only relevant for platforms// that include user-generated content events.messageEventCreator{// Name of the event creator. No character restriction.stringname=1[features.field_presence=EXPLICIT];}// Information about the creator of the event.EventCreatorevent_creator=12;}
IntegrationType – Definition
// Depth of integration supported.enumIntegrationType{// Defaults to END_TO_END.INTEGRATION_TYPE_UNSPECIFIED=0;// Complete integration that allows end to end booking through Google.INTEGRATION_TYPE_END_TO_END=1;// Feed integration that does not allow end to end booking through Google.// Only merchants, services, and (optionally) availability data need// to be sent.INTEGRATION_TYPE_INVENTORY_ONLY=2;}
ToursAndActivitiesContent – Definition
// Content fields specific to Tours and Activities. Each element in the repeated// field should be independent to allow separate rendering (e.g. as a bullet// point).//// Populating ToursAndActivitiesContent is strongly recommended for tours and// activities, but not strictly required. All fields support both plain-text// and HTML-like text for basic formatting. Supported HTML-like formatting tags://// Phrase tags: <br>, <strong>, <em>, <i>:// Only the four tags mentioned above are supported. <br> can be used to// break lines in paragraphs, and <strong>/<em> can be used to highlight// important text. Any other phrase tags will be ignored.//// All other tags and custom styles are not allowed and will be removed. Any// URLs, anchors, and links will be stripped, and will never be displayed to// end-users.//// Important notes:// * Don't duplicate data already supplied in `highlights`, `exclusion` and// other, more specific, fields in service description.// * Avoid using other tags except for the supported ones mentioned above,// because the contents within unsupported tags will be stripped, and may// lead to an undesirable user experience.messageToursAndActivitiesContent{// The user-visible list of highlights.repeatedTexthighlights=1;// The user-visible list of inclusions.repeatedTextinclusions=2;// The user-visible list of exclusions.repeatedTextexclusions=3;// The user-visible list of important notes, use for details such as age// restrictions or other conditions that make this service unsuitable.repeatedTextmust_know=4;}
HomeServiceData – Definition
// Additional information required to be provided for home service vertical.messageHomeServiceData{// The high level category to which this home service belongs to. E.g.// plumber, electrician etc.stringcategory_type=1;// The job type under the category to which the given home service belongs to.// E.g. unclog_drain, install_faucet are the job types under plumber// category.stringjob_type=2;}
VirtualSession – Definition
// Information about virtual/online session. E.g. Online yoga class, virtual// cooking class etc.messageVirtualSession{// Instructions on how this virtual class is set up. If the partner does not// include the video URL with the booking, then this text must include when// the video URL will be shared with the user. Eg. “Zoom url will be mailed// 30 minutes prior to the class”. (Recommended)// Only the folloiwng four tags are supported: <br>, <strong>, <em>, <i>.Textsession_instructions=1;// Requirements for the given virtual session. Eg. yoga mat,// cooking utensils etc. (Recommended)// Only the folloiwng four tags are supported: <br>, <strong>, <em>, <i>.Textsession_requirements=2;// Information about the virtual platform used in this session. (Required to// enable virtual services)messageVirtualPlatformInfo{// Enum to indicate which virtual platform would be used by the merchant.enumPlatform{PLATFORM_UNSPECIFIED=0;// The merchant is flexible in which video platform they use.FLEXIBLE=1;GOOGLE_HANGOUTS=2;GOOGLE_MEET=3;ZOOM=4;SKYPE=5;YOUTUBE=6;// Should be set if the video platform used is different from the ones// mentioned here.OTHER=7;}Platformplatform=1;// The name of the platform if the platform is set to OTHER. (Required if// platform is set to OTHER)Textother_platform_name=2;}VirtualPlatformInfovirtual_platform_info=3;// Set this as true if the virtual session is not live and is pre-recorded.// (Optional)boolis_session_prerecorded=4;}
DirectMerchantPayment – Definition
// Information about how the user can pay directly to the merchant instead of// pre-paying for the service via RwG.messageDirectMerchantPayment{// Users would be advised to pay only via the payment methods mentioned below.repeatedTextpayment_methods=1;}
ServiceRankingHint – Definition
// Ranking hints for a service.messageServiceRankingHint{// Arbitrary partner or merchant assigned rank for this service.//// Services with a higher score will be shown more prominently (e.g. shown// higher in lists). Note that other factors may also influence ranking, such// as price, availability, user history, etc.//// Optional. Must be non-negative if set.floatscore=1[features.field_presence=EXPLICIT];}
[[["Leicht verständlich","easyToUnderstand","thumb-up"],["Mein Problem wurde gelöst","solvedMyProblem","thumb-up"],["Sonstiges","otherUp","thumb-up"]],[["Benötigte Informationen nicht gefunden","missingTheInformationINeed","thumb-down"],["Zu umständlich/zu viele Schritte","tooComplicatedTooManySteps","thumb-down"],["Nicht mehr aktuell","outOfDate","thumb-down"],["Problem mit der Übersetzung","translationIssue","thumb-down"],["Problem mit Beispielen/Code","samplesCodeIssue","thumb-down"],["Sonstiges","otherDown","thumb-down"]],["Zuletzt aktualisiert: 2026-03-26 (UTC)."],[],["Service data, in either Protobuf or JSON format, includes metadata and a list of services, though display order is fixed. Each service requires unique identifiers (`merchant_id`, `service_id`) and a localized name. Service descriptions are optional, with limited HTML support. Pricing, scheduling, prepayment, tax, and payment options can be set, with overrides available. Additional fields cover actions, service type, tickets, media, attributes, waitlists, vertical-specific data, virtual session information, ranking hint and uri template. The data includes definitions for prices, text, scheduling rules, intake forms, fees, action links, online order metadata, tickets, location, rating, cancellation policy, and media types.\n"]]