// 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.// Dining Reservations only supports 1 service per merchant.// Do not use URIs (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.// Do not include pricing details or experience// (required)Textlocalized_service_name=26;// 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;// Rules to book/cancel an appointment. (optional)SchedulingRulesrules=6;// 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;// User rating for this service as an aggregate metric over all reviews.Ratingrating=30;}
텍스트 정의
// 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 정의
// 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 정의
// 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 cancelling 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;}
[null,null,["최종 업데이트: 2025-07-26(UTC)"],[],[],null,["# Services Feed Samples and Definitions\n\nServices Feed sample\n--------------------\n\n {\n \"metadata\": {\n \"processing_instruction\": \"PROCESS_AS_COMPLETE\",\n \"shard_number\": 0,\n \"total_shards\": 1,\n \"nonce\": \"11203880\",\n \"generation_timestamp\": 1524606581\n },\n \"service\": [\n {\n \"merchant_id\": \"dining-1\",\n \"localized_service_name\": {\n \"value\": \"Reservation\",\n \"localized_value\": [\n {\n \"locale\": \"en\",\n \"value\": \"Reservation\"\n }\n ]\n },\n \"service_id\": \"1000\",\n },\n {\n \"merchant_id\": \"dining-2\",\n \"localized_service_name\": {\n \"value\": \"Reservation\",\n \"localized_value\": [\n {\n \"locale\": \"en\",\n \"value\": \"Reservation\"\n }\n ]\n },\n \"service_id\": \"1000\",\n }\n ]\n }\n\nDefinitions\n-----------\n\nThe Services Feed specification is defined in the following protocol buffer\nformat. However, we recommend you to upload the feeds in JSON format. For more\ninformation, see\n[JSON sample feeds](/actions-center/verticals/reservations/e2e/reference/feeds/services-feed#samples).\n| **Note:** The order in which the services are displayed can't be configured at this time.\n\n### Services Feed definition\n\nThe Services Feed contains the `FeedMetadata` object and the service array. \n\n message ServiceFeed {\n FeedMetadata metadata = 1;\n repeated Service service = 2;\n }\n\n### Service definition\n\n // The definition of a service provided by a merchant.\n message Service {\n // An opaque string from an aggregator partner which uniquely identifies a\n // merchant. (required)\n string merchant_id = 1;\n\n // An opaque string from an aggregator partner which uniquely identifies the\n // service.\n // Dining Reservations only supports 1 service per merchant.\n // Do not use URIs (required)\n string service_id = 2;\n\n // The name of the service. Deprecated. Please use localized_service_name.\n string name = 3 [deprecated = true];\n\n // The name of the service, e.g. \"Men's haircut\". Possibly in several locales.\n // Do not include pricing details or experience\n // (required)\n Text localized_service_name = 26;\n\n // The description of the product. Limited formatting options are allowed in\n // the HTML format. Supported tags:\n // * h1-h5\n // * ul, ol, li\n // * strong, italic, em\n // * p, br\n // Other tags are not supported and will be removed. CSS, tables, style\n // property, `a` links are not supported. Images are not allowed, use the\n // related_media field instead.\n // Important notes:\n // * Try not to use other tags except for the supported ones mentioned\n // above, because the contents within unsupported tags will be stripped,\n // and may lead to an undesirable user experience.\n // * Try avoid deep nested structures like more than 3 different heading\n // levels or nested lists. Keeping the structure flat, simple, and\n // straightforward, helps to create a better user experience.\n // * Do not duplicate info from the product_features field below in the\n // description as both would normally be shown side by side.\n // Recommended to not exceed length of 10000 in any language. Max length:\n // 16000.\n // Recommended.\n // (optional)\n Text localized_description = 27;\n\n // Rules to book/cancel an appointment. (optional)\n SchedulingRules rules = 6;\n\n // Photos related to this service. Google will crawl these media to ensure\n // that they are displayed correctly to end-users. (optional)\n repeated RelatedMedia related_media = 17;\n\n // Service attribute values that apply to this service (optional).\n // Each Service may have zero or more values for each service attribute\n // defined in the corresponding Merchant.\n repeated ServiceAttributeValueId service_attribute_value_id = 18;\n\n // User rating for this service as an aggregate metric over all reviews.\n Rating rating = 30;\n\n }\n\n### Text definition\n\n // A possibly-localized text payload. Some Text fields may contain marked-up\n // content.\n message Text {\n // Required. Text value in an unknown locale, which will be displayed if\n // `localized_value` for the user locale is empty or missing. The locale for\n // this value may depend on the partner or service provider, and it should not\n // be assumed to be any specific language.\n string value = 1;\n\n // Per-locale text values. Required.\n repeated LocalizedString localized_value = 2;\n }\n\n### LocalizedString definition\n\n // Instance of a string in one locale.\n message LocalizedString {\n // IETF BCP 47 language code, such as \"en\", \"mas\", \"zh-Hant\", \"de-CH-1901\".\n // See http://www.w3.org/International/articles/language-tags/.\n string locale = 1;\n\n // Message in the locale above (UTF-8).\n string value = 2;\n }\n\n### SchedulingRules definition\n\n // The scheduling rules for a service.\n message SchedulingRules {\n // The duration (in seconds) from when the last booking can be made to\n // when the availability slot starts or ends.\n //\n // If \"min_advance_booking\" is set, the last bookable time is calculated as\n // (\u003cslot start time\u003e - \"min_advance_booking\").\n // If \"min_booking_buffer_before_end_time\" is set, the last bookable time is\n // calculated as (\u003cslot end time\u003e - \"min_booking_buffer_before_end_time\").\n // Note that the value of \"min_booking_buffer_before_end_time\" must be\n // positive if set.\n // If both are unset, the slot is bookable until the slot begin time. If both\n // fields are set, only one value will be picked while the other value\n // ignored--we cannot reliably predict which value is chosen.\n //\n // Examples:\n // * A haircut that needs to be booked at least 1 hour before the start time.\n // 'scheduling_rules{ min_advance_booking: 3600 ...}`\n //\n // * A museum where the last ticket can be purchased 30 mins before closing:\n // 'scheduling_rules{ min_booking_buffer_before_end_time: 1800 ...}'\n //\n // * A movie ticket that needs to be purchased before the start time.\n // 'scheduling_rules{ ...}' (leave this field empty)\n // (optional)\n oneof min_booking_buffer {\n // The duration (in seconds) from when the last booking can be made to\n // when the availability slot starts.\n int64 min_advance_booking = 1;\n\n // The duration (in seconds) from when the last booking can be made to\n // when the availability slot ends. If this field is set, the\n // \"admission_policy\" field must be set to TIME_FLEXIBLE to indicate that\n // users can use the purchased tickets after slots start.\n int64 min_booking_buffer_before_end_time = 6;\n }\n\n // The minimum advance notice in seconds required to cancel a booked\n // appointment online. (optional)\n int64 min_advance_online_canceling = 2;\n\n // The fee for cancelling within the minimum advance notice period.\n Price late_cancellation_fee = 3 [deprecated = true];\n\n // The fee for no-show without canceling.\n Price noshow_fee = 4 [deprecated = true];\n\n // The admission policy of this service.\n enum AdmissionPolicy {\n // Unused.\n ADMISSION_POLICY_UNSPECIFIED = 0;\n\n // Customers are required to be present at the start time of the\n // availability slot, and the service is expected to finish at the\n // end time of the slot.\n // Examples of TIME_STRICT use cases:\n // * A tour that starts at 9am that requires all attendees to arrive\n // at the start time, and returns at around 12pm.\n // * A haircut reservation at 3pm on Saturday that will take approximately\n // 30 minutes.\n // * A fitness class from 6pm to 8pm.\n TIME_STRICT = 1;\n\n // Customers can arrive at any time between the start and end time of the\n // availability slot to use this booking.\n //\n // Examples of TIME_FLEXIBLE use cases:\n // * A museum ticket that can be used during any time on the purchase\n // date.\n // * An afternoon admission to an amusement park that can be used from\n // 12pm to 9pm.\n TIME_FLEXIBLE = 2;\n\n // Customers need to arrive at the merchant at the start time of the\n // availability slot but can leave any time they want.\n //\n // For example, in the museum admission scenario, a timed entry ticket\n // for 10am requires the user to be at the museum at 10am. The start time of\n // availability slots for this service represents the designated entry\n // time. The end time, however, is used solely as a key to identify the\n // availability slot for booking.\n TIMED_ENTRY_WITH_FLEXIBLE_DURATION = 3;\n }\n\n // The admission policy that applied to this service. If unset, defaults to\n // TIME_STRICT. (optional)\n AdmissionPolicy admission_policy = 5;\n\n // Scheduling rules cancellation policy (required for Things-to-do).\n // Defaults to non-refundable.\n CancellationPolicy cancellation_policy = 7;\n }"]]