AI-generated Key Takeaways
-
A Service Feed is a structured data format used to describe services offered by a merchant, such as appointments, reservations, or tickets.
-
Services are defined with key details like pricing, booking rules, payment options, and relevant media like photos or videos.
-
The feed uses standardized data structures to represent location, pricing, scheduling, ticket types, and other essential service information.
-
Merchants can use this feed to provide their service information to Google, enhancing their visibility and user experience on Google platforms.
-
This specification uses protocol buffers for definition but recommends JSON format for uploads.
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; }
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; }
PerTicketFee Definition
// Fees that must be paid for each ticket the user purchases. These fields // must add up to the total per ticket fee. message PerTicketFee { // An extra charge assessed for a service. Price service_charge = 1; // A fee that goes to the venue/facility. Price facility_fee = 2; // Per ticket taxes. Price taxes = 3; }
ActionLink Definition
// An action URL with associated language, list of countries restricted to, and // optional platform that indicates which platform this action should be // performed on. message ActionLink { // The entry point URL for this action link. string url = 1; // The BCP-47 language tag identifying the language in which the content // from this URI is available. string language = 2; // 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; }
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) price message TicketType { // 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. string ticket_type_id = 1; // This can be user visible, e.g., “adult”, "child", “veteran”, “Row J”, etc. // Deprecated, use `localized_short_description` instead. string short_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. Text localized_short_description = 6; // The price of a single ticket of this type. Price price = 3; // Additional fees for purchasing this ticket. (optional) PerTicketFee per_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. enum PriceDisplayType { // 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. PriceDisplayType price_display_type = 9; // Description of any additional option which this ticket type represents, if // any. Deprecated, use `localized_option_description` instead. string option_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." Text localized_option_description = 7; // Predetermined inventory type of a single ticket of this type. enum InventoryType { // 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. InventoryType inventory_type = 8; }
Location Definition
// Geographic information about a location. message Location { // 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) string place_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) string name = 2; // The public telephone number of the location including its country and area // codes, e.g. +14567891234. (optional) string telephone = 3; // The url of the location's public website. (optional) string url = 4; // The Geo info of the location, including latitude, longitude, and address. // (optional) GeoCoordinates geo = 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) Text description = 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) LocationType location_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) string location_id = 8; }
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; }
LocationType Definition
enum LocationType { // 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; }
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; }
TicketingVerticalSpecificData Definition
// Additional information unique to the event ticketing vertical. message TicketingVerticalSpecificData { // A subset of event categories for which we customize the product experience. // Note: not intended to be a universal ontology of events. enum EventCategory { // 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) EventCategory event_category = 1; // The URL of the event on the partner's website. (optional) string event_url = 2; // Identifiers, webpages, or any other public sources that reference an // entity. message PublicIdentificationData { // 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) repeated string relevant_url = 1; // The 36-character musicbrainz identifier of the artist or other music // entities, if applicable. See // https://musicbrainz.org/doc/MusicBrainz_Identifier. // (optional) string musicbrainz_id = 2; } // Represents an entity related to the event. message Entity { // Unique identifier of the entity in the partner's database. (optional) string id = 1; // Name of the entity. (required) string name = 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) string url = 3; // The type of the entity. Note: not intended to be a universal ontology. enum EntityType { // 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) EntityType entity_type = 4; // The role of the entity in the event. enum EntityRole { // 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) EntityRole entity_role = 5; // Public references of the entity. (optional) PublicIdentificationData public_identification_data = 6; } // A list of entities related to the event. (optional) repeated Entity entity = 3; // The type of the event attendance. enum AttendanceMode { // 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. AttendanceMode event_attendance_mode = 4; // Optional. URL where the event can be watched. repeated string event_virtual_location_url = 5; // Optional. Organizer who hosts the event. Text event_organizer = 6; // Optional. URL of the organizer who hosts the event. string event_organizer_url = 7; // The type of the organizer. enum OrganizerType { // 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. OrganizerType event_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. repeated string event_source_url = 9; // State of the event. enum EventState { // 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. EventState event_state = 10; // The localized brand name. (optional) Text brand_name = 11; // Information about the creator of the event. Only relevant for platforms // that include user-generated content events. message EventCreator { // Name of the event creator. No character restriction. string name = 1 [features.field_presence = EXPLICIT]; } // Information about the creator of the event. EventCreator event_creator = 12; }
IntegrationType Definition
// Depth of integration supported. enum IntegrationType { // 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; }
Services Feed Sample
Services Feed
{ "metadata": { "processing_instruction": "PROCESS_AS_COMPLETE", "shard_number": 0, "total_shards": 1, "generation_timestamp": 1534731312 }, "service": [ { "merchant_id": "10000001", "service_id": "20000001", "localized_service_name": { "value": "Beyoncé Concert World Tour", "localized_value": [ { "locale": "en", "value": "Beyoncé Concert World Tour" } ] }, "localized_description": { "value": "The Beyoncé World Tour will feature all the hits from her latest album.", "localized_value": [ { "locale": "en", "value": "The Beyoncé World Tour will feature all the hits from her latest album." } ] }, "type": "SERVICE_TYPE_EVENT_TICKET", "action_link": [ { "url": "https://www.selltickets.com/event/beyonce/1234?cid=youtube", "language": "en-us" } ], "ticket_type": [ { "ticket_type_id": "20000001-1", "inventory_type": "INVENTORY_TYPE_PRIMARY", "price": { "price_micros": 200000000, "currency_code": "USD" }, "per_ticket_fee": { "service_charge": { "price_micros": 20000000, "currency_code": "USD" }, "facility_fee": { "price_micros": 10000000, "currency_code": "USD" }, "taxes": { "price_micros": 20000000, "currency_code": "USD" } }, "localized_short_description": { "value": "General admission", "localized_value": [ { "locale": "en", "value": "General admission" } ] } } ], "ticketing_vertical_specific_data": { "event_category": "EVENT_CATEGORY_CONCERT", "event_url": "https://www.selltickets.com/event/beyonce/1234", "entity": [ { "id": "501", "name": "Beyoncé Knowles", "url": "https://www.beyonce.com", "entity_type": "ENTITY_TYPE_PERFORMER", "entity_role": "ENTITY_ROLE_HEADLINER", "public_identification_data": { "relevant_url": [ "https://twitter.com/beyonce", "https://en.wikipedia.org/wiki/Beyonc%C3%A9" ], "musicbrainz_id": "859d0860-d480-4efd-970c-c05d5f1776b8" } } ] } }, { "merchant_id": "10000001", "service_id": "20000002", "localized_service_name": { "value": "The Lion King", "localized_value": [ { "locale": "en", "value": "The Lion King" } ] }, "localized_description": { "value": "Experience the award-winning Best Musical with beautifully composed music and stunning choreography.", "localized_value": [ { "locale": "en", "value": "Experience the award-winning Best Musical with beautifully composed music and stunning choreography." } ] }, "type": "SERVICE_TYPE_EVENT_TICKET", "action_link": [ { "url": "https://www.selltickets.com/event/theater/1923?cid=youtube", "language": "en-us" } ], "ticket_type": [ { "ticket_type_id": "20000002-1", "inventory_type": "INVENTORY_TYPE_PRIMARY", "price": { "price_micros": 100000000, "currency_code": "USD" }, "per_ticket_fee": { "service_charge": { "price_micros": 10000000, "currency_code": "USD" }, "facility_fee": { "price_micros": 5000000, "currency_code": "USD" }, "taxes": { "price_micros": 10000000, "currency_code": "USD" } }, "localized_short_description": { "value": "General admission", "localized_value": [ { "locale": "en", "value": "General admission" } ] } } ], "ticketing_vertical_specific_data": { "event_category": "EVENT_CATEGORY_THEATRE", "event_url": "https://www.selltickets.com/event/theater/1923", "entity": [ { "id": "15632", "name": "The Lion King", "url": "https://www.lionkingbroadway.com" } ], "entity_type": "ENTITY_TYPE_PLAY" } }, { "merchant_id": "10000002", "service_id": "20000003", "localized_service_name": { "value": "Tampa Bay Buccaneers vs. Dallas Cowboys", "localized_value": [ { "locale": "en", "value": "Tampa Bay Buccaneers vs. Dallas Cowboys" } ] }, "localized_description": { "value": "Watch the Tampa Bay Buccaneers vs. Dallas Cowboys game at AT&T Stadium.", "localized_value": [ { "locale": "en", "value": "Watch the Tampa Bay Buccaneers vs. Dallas Cowboys game at AT&T Stadium." } ] }, "type": "SERVICE_TYPE_EVENT_TICKET", "action_link": [ { "url": "https://www.selltickets.com/event/sports/4543?cid=youtube", "language": "en-us" } ], "ticket_type": [ { "ticket_type_id": "20000003-1", "inventory_type": "INVENTORY_TYPE_RESALE", "price": { "price_micros": 50000000, "currency_code": "USD" }, "per_ticket_fee": { "service_charge": { "price_micros": 5000000, "currency_code": "USD" }, "facility_fee": { "price_micros": 0, "currency_code": "USD" }, "taxes": { "price_micros": 5000000, "currency_code": "USD" } }, "localized_short_description": { "value": "General admission", "localized_value": [ { "locale": "en", "value": "General admission" } ] } } ], "ticketing_vertical_specific_data": { "event_category": "EVENT_CATEGORY_SPORTS", "event_url": "https://www.selltickets.com/event/sports/4543", "entity": [ { "id": "9010", "name": "Tampa Bay Buccaneers", "url": "https://www.tampabaybuccaneers.com", "entity_type": "ENTITY_TYPE_PLAYER", "entity_role": "ENTITY_ROLE_HOME_TEAM" } ] } } ] }