定义
<ph type="x-smartling-placeholder">
</ph>
注意 :服务 Feed 规范以下面的协议缓冲区格式定义,
不过,我们建议您以 JSON 格式上传 Feed您可以参考
JSON 示例 Feed 了解详情。
。
<ph type="x-smartling-placeholder">
ServiceFeed 的定义
message ServiceFeed {
FeedMetadata metadata = 1;
repeated Service service = 2;
}
Service 的定义
// 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 的定义
// 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 的定义
// 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 的定义
// 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 的定义
// 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 的定义
// 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 9 am that requires all attendees to arrive
// at the start time , and returns at around 12 pm .
// * A haircut reservation at 3 pm on Saturday that will take approximately
// 30 minutes .
// * A fitness class from 6 pm to 8 pm .
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
// 12 pm to 9 pm .
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 10 am requires the user to be at the museum at 10 am . 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 的定义
// 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 ;
}
押金的定义
// 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 的定义
// 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 的定义
// 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 的定义
// 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 ;
}
ActionLink 的定义
// 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 ;
// An unordered list of ISO 3166 - 1 alpha - 2 country codes . Leave empty for
// unrestricted visibility .
repeated string restricted_country = 3 ;
// 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 ;
}
// 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 的定义
// 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 的定义
// 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 ;
}
// 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 的定义
// 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 的定义
// 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 的定义
// 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 的定义
// 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 的定义
// 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 的定义
// 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 的定义
// 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 的定义
// 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 ];
}
服务 Feed 示例
服务(现场)
{
"metadata ": {
"processing_instruction ": "PROCESS_AS_COMPLETE ",
"shard_number ": 0 ,
"total_shards ": 1 ,
"generation_timestamp ": 1462926569
},
"service ": [
{
"merchant_id ": "plmb_04 ",
"service_id ": "plmb_04_repair_02 ",
"localized_service_name ": {
"value ": "Repair pipe ",
"localized_value ": [
{
"locale ": "en ",
"value ": "Repair pipe "
}
]
},
"localized_description ": {
"value ": "Plumbing assessment for general repairs and services in regards to your plumbing concerns . Fee will be waived if any immediate repair or installation work is performed .",
"localized_value ": [
{
"locale ": "en ",
"value ": "Plumbing assessment for general repairs and services in regards to your plumbing concerns . Fee will be waived if any immediate repair or installation work is performed . "
}
]
},
"price ": {
"currency_code ": "USD ",
"price_micros ": 90000000
},
"prepayment_type ": "NOT_SUPPORTED ",
"home_service_data ": {
"category_type ": "plumber ",
"job_type ": "repair_pipe "
}
},
{
"merchant_id ": "elct_12 ",
"service_id ": "elct_12_install_01 ",
"localized_service_name ": {
"value ": "Install outlets or switches ",
"localized_value ": [
{
"locale ": "en ",
"value ": "Install outlets or switches "
}
]
},
"localized_description ": {
"value ": "Install new , or relocate existing outlets or switches . We provide free visual estimates . We will provide you with a quote and no work will be performed without authorization .",
"localized_value ": [
{
"locale ": "en ",
"value ": "Install new , or relocate existing outlets or switches . We provide free visual estimates . We will provide you with a quote and no work will be performed without authorization . "
}
]
},
"price ": {
"currency_code ": "USD ",
"price_micros ": 70000000
},
"prepayment_type ": "NOT_SUPPORTED ",
"home_service_data ": {
"category_type ": "electrician ",
"job_type ": "install_outlets_switches "
}
}
]
}
服务(视频估算数据)
{
"metadata ": {
"processing_instruction ": "PROCESS_AS_COMPLETE ",
"shard_number ": 0 ,
"total_shards ": 1 ,
"generation_timestamp ": 1462926569
},
"service ": [
{
"merchant_id ": "plmb_04 ",
"service_id ": "plmb_04_video_estimate ",
"type ": "SERVICE_TYPE_ONLINE_APPOINTMENT ",
"localized_service_name ": {
"value ": "Video estimate ",
"localized_value ": [
{
"locale ": "en ",
"value ": "Video estimate "
}
]
},
"localized_description ": {
"value ": "Online assessment for general plumbing issues . Additional follow - up onsite visit may be required to fix the issue .",
"localized_value ": [
{
"locale ": "en ",
"value ": " Online assessment for general plumbing issues . Additional follow - up onsite visit may be required to fix the issue . "
}
]
},
"price ": {
"currency_code ": "USD ",
"price_micros ": 80000000
},
"prepayment_type ": "NOT_SUPPORTED ",
"direct_merchant_payment ": {
"payment_methods ": [
{
"value ": "venmo ",
"localized_value ": [
{
"locale ": "en ",
"value ": "venmo "
}
]
},
{
"value ": "paypal ",
"localized_value ": [
{
"locale ": "en ",
"value ": "paypal "
}
]
}
]
},
"home_service_data ": {
"category_type ": "plumber ",
"job_type ": ""
},
"virtual_session ": {
"session_instructions ": {
"value ": "Before you join the call , please make sure your device meets the system requirements and test your internet connection .",
"localized_value ": [
{
"locale ": "en ",
"value ": "Before you join the call , please make sure your device meets the system requirements and test your internet connection . "
}
]
},
"virtual_platform_info ": {
"platform ": "OTHER ",
"other_platform_name ": {
"value ": "SNAPCHAT ",
"localized_value ": [
{
"locale ": "en ",
"value ": "SNAPCHAT "
}
]
}
},
"is_session_prerecorded ": false
}
},
{
"merchant_id ": "elct_12 ",
"service_id ": "elct_12_video_estimate ",
"type ": "SERVICE_TYPE_ONLINE_APPOINTMENT ",
"localized_service_name ": {
"value ": "Video estimate ",
"localized_value ": [
{
"locale ": "en ",
"value ": "Video estimate "
}
]
},
"localized_description ": {
"value ": "Electrician assessment for general concerns . We provide estimates service online through video calls . No actual work will be performed without authorization .",
"localized_value ": [
{
"locale ": "en ",
"value ": "Electrician assessment for general concerns . We provide estimates service online through video calls . No actual work will be performed without authorization . "
}
]
},
"price ": {
"currency_code ": "USD ",
"price_micros ": 70000000
},
"prepayment_type ": "NOT_SUPPORTED ",
"direct_merchant_payment ": {
"payment_methods ": [
{
"value ": "venmo ",
"localized_value ": [
{
"locale ": "en ",
"value ": "venmo "
}
]
}
]
},
"home_service_data ": {
"category_type ": "electrician ",
"job_type ": ""
},
"virtual_session ": {
"session_instructions ": {
"value ": "Before you join the call , please make sure your device meets the system requirements and test your internet connection .",
"localized_value ": [
{
"locale ": "en ",
"value ": "Before you join the call , please make sure your device meets the system requirements and test your internet connection . "
}
]
},
"virtual_platform_info ": {
"platform ": "ZOOM "
},
"is_session_prerecorded ": false
}
}
]
}