// The definition of a service provided by a merchant.exportmessageService{optionfeatures.(pb.java).nest_in_file_class=YES;// An opaque string from an aggregator partner which uniquely identifies a// merchant.// (required)stringmerchant_id=1[features.field_presence=IMPLICIT,features.(pb.cpp).string_type=STRING];// An opaque string of ASCII characters from an aggregator partner which// uniquely identifies the service.// Must be equal to or shorter than 100 characters.// (required)stringservice_id=2[features.field_presence=IMPLICIT,features.(pb.cpp).string_type=STRING];// The name of the service, e.g. "Men's haircut". Possibly in several locales.// (required)Textlocalized_service_name=3;// The name of the service category, e.g. "Haircut", "Shave", "Color".// Possibly in several locales. The category will be used to group services// when presented to the consumer.// Note: For merchants without categories on your website, you can group all// services into one category and use a generic name such as "All Services"// or "General." Merchants who have categories you should try to replicate// those categories.// (required)Textlocalized_service_category=4;// The user-visible description of the service, possibly in several locales.// This field is not required for every services, but is strongly// recommended to be filled when available.// Important notes:// * The recommended maximum size is 2,000 characters.// (optional)Textlocalized_service_description=5;// The price of the service.// Note, if a service (or merchant) doesn't provide price up front, use// RangeInterpretation.INTERPRETATION_NOT_DISPLAYED as PriceInterpretation.// (required)ServicePriceservice_price=6;// An action link related to this service. Action link should deep link to the// 3P page with the preselected service.// Note: Only the first entry will be used. Other provided action links will// be ignored.// Optional, but highly recommended if service-level deep links are supported.// This enables service-level entrypoints on Google if provided.// Note: For merchants participating in Healthcare vertical should not provide// service-level deep link.// (optional)repeatedActionLinkaction_link=8;// Duration of the service.// Note, if a service (or merchant) doesn't provide service duration, use// RangeInterpretation.INTERPRETATION_NOT_DISPLAYED as DurationInterpretation.// (required)ServiceDurationservice_duration=9;// Ranking hint for this service.// (optional)ServiceRankingHintranking_hint=10;// Bookability info for the service, required for agentic bookings on Google.// (optional)ServiceBookabilityInfobookability_info=11;// Policies for this service, required for agentic bookings on Google.// (optional)ServicePolicyInfopolicy_info=12;}
Text – Définition
// A possibly-localized text payload. Some Text fields may contain marked-up// content.exportmessageText{optionfeatures.(pb.java).nest_in_file_class=YES;// 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.// (required)stringvalue=1;// Per-locale text values.// (optional)repeatedLocalizedStringlocalized_value=2;}
Définition de l'interprétation de la plage
// Describes how a range of values should be interpreted and displayed to the// user.enumRangeInterpretation{optionfeatures.(pb.cpp).enum_name_uses_string_view=false;optionfeatures.(pb.java).nest_in_file_class=YES;// When range represents an exact value (such that min value equals to max)// Will be interpreted as a specific value.//// Examples:// $20 for a yoga class; 50 min haircut durationINTERPRETATION_EXACT=1;// When only minimum of the range is known and displayed to consumers.// The maximum value will be decided based on other configurations// (e.g., price may go up if consumer selecting add-ons)//// Examples:// $30 for dog grooming, but additional consumer choices may increase the// price// 40 min massage, but there are also options for extending the time.INTERPRETATION_STARTS_AT=2;// When the range is variable and both minimum and maximum values are known// and displayed to consumers.//// Examples:// $30 - $60 for dog grooming, the exact price will depend on additional// consumer choices.// 1 - 3 hour hair color service.INTERPRETATION_RANGE=3;// When the range is variable and no min value is known. No information is// displayed to consumers ahead of time.//// Examples:// A consultation for a home serviceINTERPRETATION_NOT_DISPLAYED=4;}
Définition du prix du service
// The price of a service.exportmessageServicePrice{optionfeatures.(pb.java).nest_in_file_class=YES;// Describes how a Price should be interpreted and displayed to the user.// (required)RangeInterpretationprice_interpretation=1;// The minimum price of the service. Must be set if price_interpretation is// set to EXACT, STARTS_AT, or RANGE.// price is known.// (optional)Pricemin_price=2;// The maximum price of the service. Must be set if price_interpretation is// set to RANGE.// (optional)Pricemax_price=3;}
Price – Définition
// The price of a service or a fee.messagePrice{optionfeatures.(pb.java).nest_in_file_class=YES;// 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;}
ActionLink – Définition
// An action URL for a service.exportmessageActionLink{optionfeatures.(pb.java).nest_in_file_class=YES;// The entry point URL for this action link.// (required)stringurl=1;}
Définition de la durée de l'intervention
exportmessageServiceDuration{optionfeatures.(pb.java).nest_in_file_class=YES;// Describes how a service duration should be interpreted and displayed to// the user.// Note, if a service (or merchant) doesn't provide service duration, use// 'INTERPRETATION_NOT_DISPLAYED' as DurationInterpretation.// (required)RangeInterpretationduration_interpretation=1;// The minimum duration (in seconds) that the service may take. Must be set// if duration_interpretation is set to EXACT, STARTS_AT, or RANGE.// (required)int64min_duration_sec=2;// The maximum duration (in seconds) that the service may take. Must be set// if duration_interpretation is set to RANGE.// (optional)int64max_duration_sec=3;}
Définition des indications de classement des services
// Ranking hints for a service.messageServiceRankingHint{optionfeatures.(pb.java).nest_in_file_class=YES;// Arbitrary partner or merchant assigned rank for this service.//// Services with a lower score will be displayed more prominently (e.g.// displayed higher in lists).//// Ranking hints affect both the ordering of services within a service// category, and the ordering of the categories themselves. The ranking hint// for a category is assumed to be the minimum ranking hint of any item in the// category. Note that other factors may also influence the final ranking,// such as price, user history, etc.//// The recommended approach is to define a total ordering on all the services,// by assigning each one a unique integer ranking hint and ensuring that// ranking hint values don’t overlap between categories. For example, if we// want the preferred ordering of categories and services to be:// Category 1: A, B, C// Category 2: D, E, F// Then the simplest ranking hint scheme to indicate this would be:// A=1, B=2, C=3, D=4, E=5, F=6.//// Must be non-negative if set.// (optional)floatscore=1;}
Définition des informations sur la disponibilité des services
// Bookability info for the service.exportmessageServiceBookabilityInfo{optionfeatures.(pb.java).nest_in_file_class=YES;// Indicates whether the service can be booked online.// (optional)boolis_online_bookable=1;// Indicates whether payment is required when booking online.// (optional)boolpayment_required=2;// Indicates whether a credit card must be on file.// (optional)boolcard_on_file_required=3;// Indicates whether a One-Time Password (OTP), such as an email or SMS code,// is required when booking an appointment online.// (optional)boolotp_required=4;// Indicates whether a user must sign in to book an appointment online.// (optional)boolsign_in_required=5;}
Définition des informations sur les règles de service
// Policy info for the service.exportmessageServicePolicyInfo{optionfeatures.(pb.java).nest_in_file_class=YES;// Policies for this service, required for agentic bookings on Google.// (optional)repeatedServicePolicypolicies=1;}
Définition des règles de service
// A named policy for the service.// Displayed to the user when performing agentic bookings on Google.messageServicePolicy{optionfeatures.(pb.java).nest_in_file_class=YES;// A partner-defined policy identifier, not user-facing and possibly not// unique. The partner can use this to identify a specific policy content// or version. Treated as an opaque identifier by Google.// (optional)stringid=1;// A user-facing localized name for this policy.//// Standard, Title Case naming is strongly recommended to ensure a clean,// consistent, and recognizable user experience. Avoid informal abbreviations// or shorthand (e.g., do NOT use "T&C", "T&Cs", "ToS", or "Cancel").//// Recommended standard names for common policy types:// - "Terms & Conditions" (or "Terms and Conditions" / "Terms of Service")// - "Privacy Policy" (or "Privacy")// - "Cancellation Policy" (or "Refund Policy")// - "Health & Safety Policy"//// (required)Textname=2;// The content of the policy to be displayed or linked to the user.// (required)oneofcontent{// The textual content of the policy to be displayed to the user.Texttext_content=3;// The URL where the policy can be viewed.Texturl_content=4;}}
Définition de la chaîne localisée
// Instance of a string in one locale.messageLocalizedString{optionfeatures.(pb.java).nest_in_file_class=YES;// IETF BCP 47 language code, such as "en", "mas", "zh-Hant", "de-CH-1901".// See http://www.w3.org/International/articles/language-tags/.// (required)stringlocale=1;// Message in the locale above (UTF-8).// (required)stringvalue=2;}
Exemples de flux de services
Flux de services
{"data":[{"merchant_id":"appointments-merchant-1","service_id":"service-1","localized_service_name":{"value":"Service Type 1","localized_value":[{"locale":"en","value":"Service Type 1"},{"locale":"es","value":"Servicio Tipo 1"}]},"localized_service_category":{"value":"Haircut","localized_value":[{"locale":"en","value":"Haircut"},{"locale":"es","value":"Cortes de pelo"}]},"localized_service_description":{"value":"Lorem ipsum dolor sit amet","localized_value":[{"locale":"en","value":"Lorem ipsum dolor sit amet"},{"locale":"es","value":"el cliente esta muy contento"}]},"service_price":{"price_interpretation":"INTERPRETATION_EXACT","min_price":{"price_micros":40000000,"currency_code":"USD"}},"action_link":[{"url":"https://www.rwgpartnerwebsite.com/appointment/service-1/in-person-1"}],"service_duration":{"duration_interpretation":"INTERPRETATION_EXACT","min_duration_sec":360},"ranking_hint":{"score":1},"bookability_info":{"is_online_bookable":true,"payment_required":false,"card_on_file_required":false,"otp_required":false,"sign_in_required":false},"policy_info":{"policies":[{"id":"service-policy-1","name":{"value":"Cancellation Policy","localized_value":[{"locale":"en","value":"Cancellation Policy"},{"locale":"es","value":"Política de cancelación"}]},"text_content":{"value":"Appointments must be canceled at least 24 hours in advance.","localized_value":[{"locale":"en","value":"Appointments must be canceled at least 24 hours in advance."},{"locale":"es","value":"Las citas deben cancelarse con al menos 24 horas de anticipación."}]}}]}}]}
Sauf indication contraire, le contenu de cette page est régi par une licence Creative Commons Attribution 4.0, et les échantillons de code sont régis par une licence Apache 2.0. Pour en savoir plus, consultez les Règles du site Google Developers. Java est une marque déposée d'Oracle et/ou de ses sociétés affiliées.
Dernière mise à jour le 2026/10/21 (UTC).
[[["Facile à comprendre","easyToUnderstand","thumb-up"],["J'ai pu résoudre mon problème","solvedMyProblem","thumb-up"],["Autre","otherUp","thumb-up"]],[["Il n'y a pas l'information dont j'ai besoin","missingTheInformationINeed","thumb-down"],["Trop compliqué/Trop d'étapes","tooComplicatedTooManySteps","thumb-down"],["Obsolète","outOfDate","thumb-down"],["Problème de traduction","translationIssue","thumb-down"],["Mauvais exemple/Erreur de code","samplesCodeIssue","thumb-down"],["Autre","otherDown","thumb-down"]],["Dernière mise à jour le 2026/10/21 (UTC)."],[],["Services are defined by unique identifiers (`merchant_id`, `service_id`), names, and categories, supporting multiple languages. Each service includes a description, price (with `min_price`, `max_price`, and interpretation), an optional action link for deep linking, and a duration (with similar interpretation). Services can have a ranking hint to influence display order. The service feed is provided in JSON format and includes `localized_service_name`, `localized_service_category` and `localized_service_description`.\n"]]