Services Feed

  • Services feed data should ideally be uploaded in JSON format, though the spec is defined in protobuffer.

  • The display order of services cannot be configured at this time.

  • The Service definition includes required fields like merchant_id , service_id , and localized_service_name .

  • Optional service details like price, scheduling rules, prepayment type, and related media can be included in the Service definition.

  • The Price definition specifies price in micro-units and currency code, and the PriceInterpretation defines how the price is displayed (e.g., exact amount, starts at).

Definitions

ServiceFeed Definition

 message 
  
 ServiceFeed 
  
 { 
  
 FeedMetadata 
  
 metadata 
  
 = 
  
 1 
 ; 
  
 repeated 
  
 Service 
  
 service 
  
 = 
  
 2 
 ; 
 } 

Service Definition

 // The definition of a service provided by a merchant. 
 message 
  
 Service 
  
 { 
  
 // An opaque string from an aggregator partner which uniquely identifies a 
  
 // merchant. (required) 
  
 string 
  
 merchant_id 
  
 = 
  
 1 
 ; 
  
 // An opaque string from an aggregator partner which uniquely identifies the 
  
 // service. (required) 
  
 string 
  
 service_id 
  
 = 
  
 2 
 ; 
  
 // The name of the service. Deprecated. Please use localized_service_name. 
  
 string 
  
 name 
  
 = 
  
 3 
  
 [ 
 deprecated 
  
 = 
  
 true 
 ]; 
  
 // The name of the service, e.g. "Men's haircut". Possibly in several locales. 
  
 // (required) 
  
 Text 
  
 localized_service_name 
  
 = 
  
 26 
 ; 
  
 // The description of the service. 
  
 // Deprecated. Please use localized_description. 
  
 string 
  
 description 
  
 = 
  
 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) 
  
 Text 
  
 localized_description 
  
 = 
  
 27 
 ; 
  
 // The price of the service. (optional, overridden when payment options or 
  
 // ticket types present) 
  
 Price 
  
 price 
  
 = 
  
 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) 
  
 PriceInterpretation 
  
 price_interpretation 
  
 = 
  
 23 
 ; 
  
 // Rules to book/cancel an appointment. (optional) 
  
 SchedulingRules 
  
 rules 
  
 = 
  
 6 
 ; 
  
 // Enum to indicate the prepayment type. 
  
 enum 
  
 PrepaymentType 
  
 { 
  
 // 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) 
  
 PrepaymentType 
  
 prepayment_type 
  
 = 
  
 8 
 ; 
  
 // Specific information around when prepayment is completed. 
  
 message 
  
 PrepaymentTerms 
  
 { 
  
 // Enum to specify when the charge will occur relative to the purchase 
  
 // time. 
  
 enum 
  
 ChargeTiming 
  
 { 
  
 CHARGE_TIMING_UNSPECIFIED 
  
 = 
  
 0 
 ; 
  
 CHARGE_NOW 
  
 = 
  
 1 
 ; 
  
 CHARGE_LATER 
  
 = 
  
 2 
 ; 
  
 } 
  
 ChargeTiming 
  
 charge_timing 
  
 = 
  
 1 
 ; 
  
 } 
  
 PrepaymentTerms 
  
 prepayment_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) 
  
 TaxRate 
  
 tax_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) 
  
 repeated 
  
 string 
  
 payment_option_id 
  
 = 
  
 10 
 ; 
  
 // Defines how a deposit may be charged to the user. Can be overridden at the 
  
 // availability level. (optional) 
  
 Deposit 
  
 deposit 
  
 = 
  
 11 
 ; 
  
 // Defines a no show fee that may be charged to the user. Can be overridden 
  
 // at the availability level. (optional) 
  
 NoShowFee 
  
 no_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) 
  
 RequireCreditCard 
  
 require_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). 
  
 DirectMerchantPayment 
  
 direct_merchant_payment 
  
 = 
  
 36 
 ; 
  
 // An action link related to this service. If action link exists, type (see 
  
 // below) must be set in the Service. 
  
 repeated 
  
 ActionLink 
  
 action_link 
  
 = 
  
 14 
 ; 
  
 enum 
  
 ServiceType 
  
 { 
  
 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/overview 
  
 SERVICE_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) 
  
 ServiceType 
  
 type 
  
 = 
  
 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) 
  
 repeated 
  
 TicketType 
  
 ticket_type 
  
 = 
  
 16 
 ; 
  
 // Photos related to this service. Google will crawl these media to ensure 
  
 // that they are displayed correctly to end-users. (optional) 
  
 repeated 
  
 RelatedMedia 
  
 related_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. 
  
 repeated 
  
 ServiceAttributeValueId 
  
 service_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. 
  
 WaitlistRules 
  
 waitlist_rules 
  
 = 
  
 19 
 ; 
  
 // Additional information unique to the event ticketing vertical. (optional) 
  
 TicketingVerticalSpecificData 
  
 ticketing_vertical_specific_data 
  
 = 
  
 22 
 ; 
  
 // User rating for this service as an aggregate metric over all reviews. 
  
 Rating 
  
 rating 
  
 = 
  
 30 
 ; 
  
 // Additional information unique to home service vertical. (optional) 
  
 HomeServiceData 
  
 home_service_data 
  
 = 
  
 31 
 ; 
  
 // Information about virtual session. (Optional. Required if enabling 
  
 // virtual services) 
  
 VirtualSession 
  
 virtual_session 
  
 = 
  
 35 
 ; 
  
 // Ranking hint for this service. Optional. 
  
 ServiceRankingHint 
  
 ranking_hint 
  
 = 
  
 37 
 ; 
  
 // A template specifying how Google should generate URLs to external site. 
  
 // Used for Dining Reservations Payment Redirect Partners only. 
  
 UriTemplate 
  
 uri_template 
  
 = 
  
 38 
 ; 
 } 

Price Definition

 // The price of a service or a fee. 
 message 
  
 Price 
  
 { 
  
 // 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) 
  
 int64 
  
 price_micros 
  
 = 
  
 1 
 ; 
  
 // The currency of the price that is defined in ISO 4217. (required) 
  
 string 
  
 currency_code 
  
 = 
  
 2 
 ; 
  
 // An optional and opaque string that identifies the pricing option that is 
  
 // associated with the extended price. (optional) 
  
 string 
  
 pricing_option_tag 
  
 = 
  
 3 
 ; 
 } 

PriceInterpretation Definition

 // Describes how a Price should be interpreted and displayed to the user. 
 enum 
  
 PriceInterpretation 
  
 { 
  
 // 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 haircut 
  
 EXACT_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 
  
 //   price 
  
 STARTS_AT 
  
 = 
  
 2 
 ; 
 } 

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 
 ; 
 } 

SchedulingRules Definition

 // The scheduling rules for a service. 
 message 
  
 SchedulingRules 
  
 { 
  
 // 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) 
  
 oneof 
  
 min_booking_buffer 
  
 { 
  
 // The duration (in seconds) from when the last booking can be made to 
  
 // when the availability slot starts. 
  
 int64 
  
 min_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. 
  
 int64 
  
 min_booking_buffer_before_end_time 
  
 = 
  
 6 
 ; 
  
 } 
  
 // The minimum advance notice in seconds required to cancel a booked 
  
 // appointment online. (optional) 
  
 int64 
  
 min_advance_online_canceling 
  
 = 
  
 2 
 ; 
  
 // The fee for canceling within the minimum advance notice period. 
  
 Price 
  
 late_cancellation_fee 
  
 = 
  
 3 
  
 [ 
 deprecated 
  
 = 
  
 true 
 ]; 
  
 // The fee for no-show without canceling. 
  
 Price 
  
 noshow_fee 
  
 = 
  
 4 
  
 [ 
 deprecated 
  
 = 
  
 true 
 ]; 
  
 // The admission policy of this service. 
  
 enum 
  
 AdmissionPolicy 
  
 { 
  
 // 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) 
  
 AdmissionPolicy 
  
 admission_policy 
  
 = 
  
 5 
 ; 
  
 // Scheduling rules cancellation policy (required for Things-to-do). 
  
 // Defaults to non-refundable. 
  
 CancellationPolicy 
  
 cancellation_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. 
 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 
 ; 
 } 

Deposit Definition

 // A deposit that the user may be charged or have a hold on their credit card 
 // for. 
 message 
  
 Deposit 
  
 { 
  
 // Deposit amount. 
  
 Price 
  
 deposit 
  
 = 
  
 1 
 ; 
  
 // Minimum advance cancellation for the deposit. 
  
 int64 
  
 min_advance_cancellation_sec 
  
 = 
  
 2 
 ; 
  
 // Defines how the deposit is determined from the availability. 
  
 PriceType 
  
 deposit_type 
  
 = 
  
 3 
 ; 
 } 

NoShowFee Definition

 // A fee that a user may be charged if they have made a booking but do not 
 // show up. 
 message 
  
 NoShowFee 
  
 { 
  
 // The amount the user may be charged if they do not show up for their 
  
 // reservation. 
  
 Price 
  
 fee 
  
 = 
  
 1 
 ; 
  
 // Defines how the fee is determined from the availability. 
  
 PriceType 
  
 fee_type 
  
 = 
  
 3 
 ; 
 } 

PriceType Definition

 // Defines how a total price is determined from an availability. 
 enum 
  
 PriceType 
  
 { 
  
 // 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 class 
  
 FIXED_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 museum 
  
 PER_PERSON 
  
 = 
  
 1 
 ; 
 } 

RequireCreditCard Definition

 // Defines whether a credit card is required in order to book an appointment. 
 enum 
  
 RequireCreditCard 
  
 { 
  
 // 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 
 ; 
 } 
 // 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 
 ; 
  
 // 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 
 ; 
 } 

Rating Definition

 // Defines Rating for an entity. 
 message 
  
 Rating 
  
 { 
  
 // 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. 
  
 double 
  
 value 
  
 = 
  
 1 
 ; 
  
 // Number of ratings used in calculating the value (required). 
  
 uint64 
  
 number_of_ratings 
  
 = 
  
 2 
 ; 
 } 

CancellationPolicy Definition

 // Cancellation policy for a service. 
 message 
  
 CancellationPolicy 
  
 { 
  
 // Defines a single refund condition. Multiple refund conditions could be 
  
 // used together to describe "refund steps" as various durations before the 
  
 // service start time. 
  
 message 
  
 RefundCondition 
  
 { 
  
 // 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. 
  
 int64 
  
 min_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. 
  
 uint32 
  
 refund_percent 
  
 = 
  
 2 
 ; 
  
 } 
  
 // Zero or more refund conditions applicable to the policy. 
  
 repeated 
  
 RefundCondition 
  
 refund_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) 
 message 
  
 RelatedMedia 
  
 { 
  
 // URL of this media source. Google will crawl the media hosted at this URL. 
  
 string 
  
 url 
  
 = 
  
 1 
 ; 
  
 // Type of this media source. 
  
 MediaType 
  
 type 
  
 = 
  
 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. 
  
 enum 
  
 MediaType 
  
 { 
  
 // 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) 
  
 Text 
  
 localized_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) 
  
 Attribution 
  
 attribution 
  
 = 
  
 4 
 ; 
  
 // Attribution information for this media. 
  
 message 
  
 Attribution 
  
 { 
  
 // 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). 
  
 Text 
  
 localized_text 
  
 = 
  
 2 
 ; 
  
 // Deprecated, prefer to use localized_text. 
  
 string 
  
 text 
  
 = 
  
 1 
  
 [ 
 deprecated 
  
 = 
  
 true 
 ]; 
  
 } 
  
 // Deprecated, prefer to use localized_caption. 
  
 string 
  
 caption 
  
 = 
  
 3 
  
 [ 
 deprecated 
  
 = 
  
 true 
 ]; 
 } 

ServiceAttributeValueId Definition

 // Identifies a particular value of a service attribute to be applied to a 
 // Service. 
 message 
  
 ServiceAttributeValueId 
  
 { 
  
 // ID of an attribute as defined in Merchant.service_attribute, e.g. 
  
 // "service-type". 
  
 string 
  
 attribute_id 
  
 = 
  
 1 
 ; 
  
 // ID of the value for this attribute, e.g. "haircut". Must match a value_id 
  
 // in the service attribute definition. 
  
 string 
  
 value_id 
  
 = 
  
 2 
 ; 
 } 

WaitlistRules Definition

 // Rules related to joining the waitlist. 
 message 
  
 WaitlistRules 
  
 { 
  
 // 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. 
  
 int32 
  
 min_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. 
  
 int32 
  
 max_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. 
  
 bool 
  
 supports_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. 
  
 repeated 
  
 UnsupportedPartySizeOption 
  
 above_max_party_size_options 
  
 = 
  
 4 
 ; 
 } 

UnsupportedPartySizeOption Definition

 // Options for parties that are out of range. 
 message 
  
 UnsupportedPartySizeOption 
  
 { 
  
 // Available options for parties that are out of range. 
  
 oneof 
  
 kind 
  
 { 
  
 // 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. 
  
 CallMerchant 
  
 call_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. 
 message 
  
 CallMerchant 
  
 {} 

HomeServiceData Definition

 // Additional information required to be provided for home service vertical. 
 message 
  
 HomeServiceData 
  
 { 
  
 // The high level category to which this home service belongs to. E.g. 
  
 // plumber, electrician etc. 
  
 string 
  
 category_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. 
  
 string 
  
 job_type 
  
 = 
  
 2 
 ; 
 } 

VirtualSession Definition

 // Information about virtual/online session. E.g. Online yoga class, virtual 
 // cooking class etc. 
 message 
  
 VirtualSession 
  
 { 
  
 // 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>. 
  
 Text 
  
 session_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>. 
  
 Text 
  
 session_requirements 
  
 = 
  
 2 
 ; 
  
 // Information about the virtual platform used in this session. (Required to 
  
 // enable virtual services) 
  
 message 
  
 VirtualPlatformInfo 
  
 { 
  
 // Enum to indicate which virtual platform would be used by the merchant. 
  
 enum 
  
 Platform 
  
 { 
  
 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 
 ; 
  
 } 
  
 Platform 
  
 platform 
  
 = 
  
 1 
 ; 
  
 // The name of the platform if the platform is set to OTHER. (Required if 
  
 // platform is set to OTHER) 
  
 Text 
  
 other_platform_name 
  
 = 
  
 2 
 ; 
  
 } 
  
 VirtualPlatformInfo 
  
 virtual_platform_info 
  
 = 
  
 3 
 ; 
  
 // Set this as true if the virtual session is not live and is pre-recorded. 
  
 // (Optional) 
  
 bool 
  
 is_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. 
 message 
  
 DirectMerchantPayment 
  
 { 
  
 // Users would be advised to pay only via the payment methods mentioned below. 
  
 repeated 
  
 Text 
  
 payment_methods 
  
 = 
  
 1 
 ; 
 } 

ServiceRankingHint Definition

 // Ranking hints for a service. 
 message 
  
 ServiceRankingHint 
  
 { 
  
 // 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. 
  
 float 
  
 score 
  
 = 
  
 1 
  
 [ 
 features.field_presence 
  
 = 
  
 EXPLICIT 
 ]; 
 } 

Services Feed samples

Services

 { 
  
 "metadata" 
 : 
  
 { 
  
 "processing_instruction" 
 : 
  
 "PROCESS_AS_COMPLETE" 
 , 
  
 "shard_number" 
 : 
  
 0 
 , 
  
 "total_shards" 
 : 
  
 1 
 , 
  
 "nonce" 
 : 
  
 "11203880" 
 , 
  
 "generation_timestamp" 
 : 
  
 1524606581 
  
 }, 
  
 "service" 
 : 
  
 [ 
  
 { 
  
 "merchant_id" 
 : 
  
 "dining-1" 
 , 
  
 "localized_service_name" 
 : 
  
 { 
  
 "value" 
 : 
  
 "Reservation" 
 , 
  
 "localized_value" 
 : 
  
 [ 
  
 { 
  
 "locale" 
 : 
  
 "en" 
 , 
  
 "value" 
 : 
  
 "Reservation" 
  
 } 
  
 ] 
  
 }, 
  
 "service_id" 
 : 
  
 "reservation" 
 , 
  
 "prepayment_type" 
 : 
  
 "NOT_SUPPORTED" 
  
 }, 
  
 { 
  
 "merchant_id" 
 : 
  
 "dining-2" 
 , 
  
 "localized_service_name" 
 : 
  
 { 
  
 "value" 
 : 
  
 "Reservation" 
 , 
  
 "localized_value" 
 : 
  
 [ 
  
 { 
  
 "locale" 
 : 
  
 "en" 
 , 
  
 "value" 
 : 
  
 "Reservation" 
  
 } 
  
 ] 
  
 }, 
  
 "service_id" 
 : 
  
 "reservation" 
 , 
  
 "prepayment_type" 
 : 
  
 "NOT_SUPPORTED" 
  
 } 
  
 ] 
 } 
Design a Mobile Site
View Site in Mobile | Classic
Share by: