商品フィードは、Google のさまざまなサーフェスに表示するおすすめスポットのリストを Google に提供する主な方法です。
ProductFeed
オブジェクトは、単一の FeedMetadata
オブジェクトと 0 個以上の Product
オブジェクトで構成されます。すべてのシャードで Product
が指定されていない場合、すべてのプロダクトが削除されます。
ProductFeed
message ProductFeed {
// Metadata for this feed.
// Required.
FeedMetadata feed_metadata = 1;
// List of the products.
// Optional. When unset in all shards, all products will be deleted.
repeated Product products = 2;
}
タイプ | フィールド | メモ |
---|---|---|
FeedMetadata | feed_metadata | 必須。 このフィードのメタデータ。 |
繰り返し 商品 |
商品 | 省略可。 すべてのシャードで未設定の場合、すべての商品が削除されます。 feed_metadata/max_removal_share
大量の商品を削除する場合は、設定が必要になる場合があります。 |
// Example 1: Basic structure
{
"feed_metadata": {
...
},
"products": [
...
]
}
// Example 2: Wipe all products
{
"feed_metadata": {
"shard_id": 0,
"total_shards_count": 1,
"processing_instruction": "PROCESS_AS_SNAPSHOT",
"nonce": 202113041501,
"max_removal_share": 1.0
},
"products": []
}
FeedMetadata
message FeedMetadata {
// The current shard ID, zero-based. Shards do not need to be transferred in
// order. Processing will start only after a full set of shards was uploaded.
// Required when total_shards_count > 1.
uint32 shard_id = 1;
// Total number of shards in this transfer.
// Required. Must be >= 1.
uint32 total_shards_count = 2;
// An arbitrary number used to link multiple shards to the same transfer.
// Required when total_shards_count > 1.
// Must be the same for all shards within the transfer.
uint64 nonce = 3;
enum ProcessingInstruction {
// For compatibility, don't use.
PROCESS_AS_UNSPECIFIED = 0;
// This Feed upload should be processed as a complete snapshot replacing any
// previously uploaded data of this type.
// Supported feed types: product.
PROCESS_AS_SNAPSHOT = 1;
// This Feed upload should be processed as an upsert, updating or adding
// data to the previous uploads. Supported feed types: reviews,
// availability.
PROCESS_AS_UPSERT = 2;
}
// Processing instruction for this upload.
// Required.
ProcessingInstruction processing_instruction = 4;
// Maximal share of currently active products that are allowed to be removed
// by an upload. If more products will be removed by this transfer, the whole
// transfer will be rejected.
// This is a safeguard against unintentional take down of a significant part
// of the inventory. Can be set to 1.0 to allow complete inventory take down.
// Optional.
double max_removal_share = 5;
}
タイプ | フィールド | メモ |
---|---|---|
uint32 | shard_id | total_shards_count > 1 の場合は必須。ゼロベース。 シャードの転送順序は問いません。処理は、シャードの完全なセットがアップロードされた後にのみ開始されます。 |
uint32 | total_shards_count | 必須。1 以上である必要があります。 |
uint64 | nonce | total_shards_count > 1 の場合は必須。転送内のすべてのシャードで同じである必要があります。 |
enum | processing_instruction | 必須。PROCESS_AS_SNAPSHOT のみがサポートされます。 |
double | max_removal_share | 省略可。 アップロードによって削除できるアクティブな商品の最大割合。この移行によってさらに多くの商品が削除された場合、移行全体が拒否されます。これは、広告枠の大部分が意図せず削除されるのを防ぐための保護対策です。1.0 に設定すると、在庫の完全な削除が可能になります。 |
// Example 1: metadata single JSON file
{
"shard_id": 0,
"total_shards_count": 1,
"processing_instruction": "PROCESS_AS_SNAPSHOT",
"nonce": 202113041501
}
// Example 2a: two JSON files (1st file)
{
"shard_id": 0,
"total_shards_count": 2,
"processing_instruction": "PROCESS_AS_SNAPSHOT",
"nonce": 202213041502
}
// Example 2b: two JSON files (2nd file)
{
"shard_id": 1,
"total_shards_count": 2,
"processing_instruction": "PROCESS_AS_SNAPSHOT",
"nonce": 202213041502
}
プロダクト
message Product {
// An opaque string from the partner which uniquely identifies the product.
// Allowed characters are alphanumeric, _, and -. Max length: 255.
// Required.
string id = 1;
// The title of the product in plain text, e.g. "Horseback riding on the
// moon". See definition of "LocalizedTextSet" message for the details on the
// localization.
// Recommended to not exceed length of 50 in any language. Max length: 150.
// Required.
LocalizedTextSet title = 2;
// 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.
LocalizedTextSet description = 3;
// Structured details about the product features.
// Max number of features: 100.
// Recommended.
repeated TextFeature product_features = 4;
// Aggregated product rating.
// Recommended.
Rating rating = 5;
// Related media such as photos or videos.
// Max number of media: 30.
// Recommended.
repeated Media related_media = 6;
// Whether Google should make use of the order in which related media are
// listed in the feed or not. The media order would be used to influence
// the final image order for the product in the UI.
// Optional, default is false.
bool use_media_order = 13;
// Options available for this product.
// Max number of options: 20.
// At least one is required.
repeated Option options = 7;
// Operator details.
// Optional.
Operator operator = 8;
// Inventory type of this product.
enum InventoryType {
// Default inventory type.
INVENTORY_TYPE_DEFAULT = 0;
// Product is an official ticket to a point of interest. To learn what
// qualifies as official inventory, refer to the policy doc.
INVENTORY_TYPE_OFFICIAL = 1;
// Product is coming directly from the operator or their official
// Connectivity Provider / ResTech.
INVENTORY_TYPE_OPERATOR_DIRECT = 2;
}
// Optional.
InventoryType inventory_type = 9;
// Should contain only distinct values of InventoryType.
// Max number of inventory types: 2.
// Optional.
repeated InventoryType inventory_types = 12;
// Confirmation type of this product.
enum ConfirmationType {
// Type of confirmation is unknown.
CONFIRMATION_TYPE_UNKNOWN = 0;
// Booking is confirmed to the end user immediately.
CONFIRMATION_TYPE_INSTANT = 1;
// Booking is confirmed to the end user within 24 hours.
CONFIRMATION_TYPE_24HRS = 2;
// Booking is confirmed to the end user within 48 hours.
CONFIRMATION_TYPE_48HRS = 3;
}
// Optional.
ConfirmationType confirmation_type = 10;
// Possible fulfillment types -- ways to obtain a document to confirm the
// booking. Combinations are possible, e.g. mobile + printed, or
// printed at home + in-person pickup is available.
// At least one field must be true.
message FulfillmentType {
// Confirmation on a mobile phone, e.g. with a QR code.
bool mobile = 1;
// Printable confirmation.
bool print_at_home = 2;
// Admission documents to be picked up in person.
bool pickup = 3;
}
// Recommended.
FulfillmentType fulfillment_type = 11;
// Provider brand name.
// Recommended to not exceed length of 50 in any language.
// Max length: 100.
// Optional.
LocalizedTextSet brand_name = 14;
}
タイプ | フィールド | メモ |
---|---|---|
文字列 | id | 必須、最大長 255 文字。 商品を一意に識別する文字列。使用できるのは英数字、_、- です。 |
LocalizedTextSet | title | 必須、推奨される長さは 50 文字以下、最大長は 150 文字です。 詳しくは、タイトルと説明のガイドラインをご覧ください。 |
LocalizedTextSet | 説明 | 推奨。推奨される長さは 10, 000 文字以下、最大長は 16, 000 文字です。 詳しくは、タイトルと説明に関するガイドラインをご覧ください。 |
繰り返し TextFeature |
product_features | 推奨。特徴の最大数: 100。 |
評価 | 評価 | 推奨。 評価を表示するとクリック率が高くなるため、評価を表示することを強くおすすめします。 |
repeated メディア |
related_media | 推奨、最大メディア数: 30 複数の画像を指定することを強くおすすめします。画像の詳細なガイドについては、画像のガイドラインをご覧ください。 |
ブール値 | use_media_order | 省略可 表示する画像を選択する際に、関連するメディアがフィードに表示される順序を考慮すべきであることを Google にヒントとして伝えます。 |
繰り返し オプション |
オプション | 必須、オプションの最大数: 20 各商品に少なくとも 1 つの商品オプションが必要です。 |
オペレーター | 演算子 | 省略可。 |
enum | 非推奨 inventory_type |
省略可。INVENTORY_TYPE_OFFICIAL は、観光スポットの公式チケット サイトにリンクされている商品にのみ設定できます。この値を設定できる機能は、資格審査が完了した後にのみ有効になります。このフィールドのサポートは終了し、新しい繰り返しフィールド inventory_types に置き換えられました。 |
repeated | inventory_types | 省略可。 この商品が属する一意の広告枠タイプのリストが繰り返されます。 INVENTORY_TYPE_OFFICIAL は、観光スポットの公式チケット サイトにリンクされている商品にのみ設定できます。この値を設定できる機能は、資格審査が完了した後にのみ有効になります。INVENTORY_TYPE_OPERATOR_DIRECT は、ツアー オペレーターのサイトにリンクする商品でのみ設定できます。
この値を設定できる機能は、資格審査が完了した後にのみ有効になります。 |
enum | confirmation_type | 省略可。 |
FulfillmentType | fulfillment_type | 推奨。設定する場合は、fulfillment_rype の少なくとも 1 つのフィールドが true である必要があります。予約を確認するためのドキュメントを取得する方法が設定されます。モバイルと印刷、自宅で印刷して店舗で受け取るなどの組み合わせも可能です。 |
LocalizedTextSet | brand_name | 最大長は 100 です。 商品に表示するブランド名。非推奨となった「operator/name」に代わるものです。2 つの値のうち 1 つのみ設定できます。 |
{
"id": "product-1",
"title": {
"localized_texts": [
{
"language_code": "en",
"text": "Dans bike tour"
},
{
"language_code": "es",
"text": "Tour en bicicleta por Dans"
},
{
"language_code": "zh-HK",
"text": "丹斯自行車之旅"
}
]
},
"description": {
"localized_texts": [
{
"language_code": "en",
"text": "<p>A very fun bike tour<p>"
},
{
"language_code": "es",
"text": "<p>Un recorrido en bicicleta muy divertido.</p>"
},
{
"language_code": "zh-HK",
"text": "<p>一個非常有趣的自行車之旅.</p>"
}
]
},
"brand_name": {
"localized_texts": [
{
"language_code": "en",
"text": "Dans Bikes"
}
]
},
"rating": {
"average_value": 4.6,
"rating_count": 192
},
"product_features": [{
"feature_type": "TEXT_FEATURE_INCLUSION",
"value": {
"localized_texts": [
{
"language_code": "en",
"text": "<p>A very fun bike tour<p>"
},
{
"language_code": "es",
"text": "<p>Un recorrido en bicicleta muy divertido.</p>"
},
{
"language_code": "zh-HK",
"text": "<p>一個非常有趣的自行車之旅.</p>"
}
]
}
},{
"feature_type": "TEXT_FEATURE_HIGHLIGHT",
"value": {
"localized_texts": [
{
"language_code": "en",
"text": "<p>A very fun bike tour<p>"
},
{
"language_code": "es",
"text": "<p>Un recorrido en bicicleta muy divertido.</p>"
},
{
"language_code": "zh-HK",
"text": "<p>一個非常有趣的自行車之旅.</p>"
}
]
}
},{
"feature_type": "TEXT_FEATURE_MUST_KNOW",
"value": {
"localized_texts": [
{
"language_code": "en",
"text": "<p>A very fun bike tour<p>"
},
{
"language_code": "es",
"text": "<p>Un recorrido en bicicleta muy divertido.</p>"
},
{
"language_code": "zh-HK",
"text": "<p>一個非常有趣的自行車之旅.</p>"
}
]
}
}],
"options": [{
"id": "option-1",
"title": {
"localized_texts": [
{
"language_code": "en",
"text": "Sunset tour"
},
{
"language_code": "es",
"text": "Tour al atardecer"
},
{
"language_code": "zh-HK",
"text": "日落之旅"
}
]
},
"landing_page": {
"url": "https://www.danstour.com/sunset?language={lang}¤cy={currency}"
},
"cancellation_policy": {
"refund_conditions": [
{
"min_duration_before_start_time_sec": 86400,
"refund_percent": 100
}
]
},
"option_categories": [
{
"label": "sports"
},
{
"label": "bike-tours"
}
],
"related_locations": [
{
"location": {
"location": {
"place_id": "ChIJ3S-JXmauEmsRUcIaWtf4MzE"
}
},
"relation_type": "RELATION_TYPE_RELATED_NO_ADMISSION"
},
{
"location": {
"location": {
"lat_lng": {
"latitude": 53.339688,
"longitude": 6.236688
}
}
},
"relation_type": "RELATION_TYPE_RELATED_NO_ADMISSION"
}
],
"price_options": [
{
"id": "option-1-adult",
"title": "Adult (14+)",
"price": {
"currency_code": "EUR",
"units": 20
},
"fees_and_taxes": {
"per_ticket_fee": {
"currency_code": "EUR",
"units": 1
},
"per_ticket_tax": {
"currency_code": "EUR",
"units": 1
}
}
}
]},{
"id": "option-2",
"title": {
"localized_texts": [
{
"language_code": "en",
"text": "Sunrise tour"
},
{
"language_code": "es",
"text": "Tour al amanecer"
},
{
"language_code": "zh-HK",
"text": "日出之旅"
}
]
},
"landing_page": {
"url": "https://www.danstour.com/sunrise?language={lang}¤cy={currency}"
},
"cancellation_policy": {
"refund_conditions": [
{
"min_duration_before_start_time_sec": 86400,
"refund_percent": 100
}
]
},
"option_categories": [
{
"label": "sports"
},
{
"label": "bike-tours"
}
],
"related_locations": [
{
"location": {
"location": {
"place_id": "ChIJ3S-JXmauEmsRUcIaWtf4MzE"
}
},
"relation_type": "RELATION_TYPE_RELATED_NO_ADMISSION"
}
],
"price_options": [
{
"id": "option-2-adult",
"title": "Adult (14+)",
"price": {
"currency_code": "EUR",
"units": 20,
"nanos": 0
}
}
],
"meeting_point": {
"location": {
"place_id": "ChIJ3S-JXmauEmsRUcIaWtf4MzE"
},
"description": {
"localized_texts": [
{
"language_code": "en",
"text": "Sunrise tour"
},
{
"language_code": "es",
"text": "Tour al amanecer"
},
{
"language_code": "zh-HK",
"text": "日出之旅"
}
]
}
}
}
],
"related_media": [
{
"url": "http://www.danstour.com/photo1.jpg",
"type": "MEDIA_TYPE_PHOTO"
},
{
"url": "http://www.danstour.com/photo2.jpg",
"type": "MEDIA_TYPE_PHOTO",
"attribution": {
"localized_texts": [
{
"language_code": "en",
"text": "Dans Photos"
}
]
}
}
],
"operator": {
"name": {
"localized_texts": [
{
"language_code": "en",
"text": "Dans Bikes"
}
]
},
"phone_number": "01234567",
"locations": [{
"location": {
"place_id": "ChIJ3S-JXmauEmsRUcIaWtf4MzE"
}
}]
},
"inventory_types": ["INVENTORY_TYPE_OPERATOR_DIRECT"]
}
オプション
message Option {
// Option ID. Must be unique within a product.
// Required.
string id = 1;
// The title of the option in plain text, e.g. "Sunset tour".
//
// If there is only a single option, the option title may be the same as the
// product title. If multiple product options are presented, the title must be
// unique to the option.
// Recommended to not exceed length of 50 in any language.
// Max length: 150.
// Required.
LocalizedTextSet title = 2;
// The description of the option. Limited formatting options are allowed in
// the HTML format, see product description field for more details.
// Recommended to not exceed length of 10000 in any language.
// Max length: 16000.
// Recommended.
LocalizedTextSet description = 3;
// Landing page URL for this option. The page should include a button to start
// the booking/checkout flow.
// Required.
DeepLink landing_page = 5;
// Link to a list view at a higher level of available tickets and tours,
// prominently showing this option possibly among other options.
// Recommended.
DeepLink landing_page_list_view = 6;
// Additional structured details about the option features. Should not
// duplicate the details from the product level.
// Max number of features: 100.
// Optional.
repeated TextFeature option_features = 7;
// Cancellation policy for this option.
// Recommended.
CancellationPolicy cancellation_policy = 8;
// Relevant categories for this Option. Refer to the documentation for valid
// and mutually exclusive values.
// Max number of categories: 100.
// Optional.
repeated Category option_categories = 9;
// List of locations related to this option.
// Max number of locations: 100.
// Recommended.
repeated RelatedLocation related_locations = 10;
// If true, the option is a *typical ticket* that a user would expect to buy
// to participate in the experience, whether it's an attraction admission or
// a slot in a tour.
// Optional, default is false.
bool base_ticket = 11;
// All possible prices for this option.
// Note: With Feed Spec v1 only single Adult price is supported. If multiple
// price options were provided, the lowest price, possibly with notion
// "from ..." would be displayed.
// At least one is required.
repeated PriceOption price_options = 12;
// Duration of the option in seconds, where applicable, e.g. for guided tours,
// boat trips etc. This should reflect the duration of experience (not
// validity time).
// Optional.
uint32 duration_sec = 16;
// Languages of the option. Only where relevant -- when it's important for
// the end user to understand and/or read in the language to enjoy the
// experience. E.g. relevant for a guided tour, but not for a mini-golf pass.
// Max number of languages: 100.
// Recommended.
repeated Language languages = 14;
// Meeting point -- the start location. Only add where relevant and
// beneficial, e.g. the place where participant will meet the tour guide to
// start a walking tour, the place where participant will be picked up for a
// city tour, the dock where a cruise trip will start.
// Optional.
Location meeting_point = 15;
}
タイプ | フィールド | メモ |
---|---|---|
文字列 | id | 必須。 オプション ID。商品内で一意にする必要があります。 |
LocalizedTextSet | title | 必須、推奨される長さ: 50 文字、最大長: 150 文字。 オプションが 1 つしかない場合は、オプションのタイトルが商品のタイトルと同じになることがあります。複数の商品オプションを表示する場合は、オプションごとに一意のタイトルにする必要があります。詳しくは、タイトルと説明のガイドラインをご覧ください。 |
LocalizedTextSet | 説明 | 推奨、推奨される長さ: 10, 000、最大長: 16, 000。 詳しくは、タイトルと説明に関するガイドラインをご覧ください。 |
DeepLink | landing_page | 必須。 商品を予約するためのボタンまたはリンクを含める必要があります。 詳しくは、ランディング ページに関するガイドラインをご覧ください。 |
DeepLink | landing_page_list_view | 推奨。 利用可能なチケットやツアーのより上位のリストビューにリンクし、他のオプションとともにこのオプションを目立つように表示します。 詳しくは、ランディング ページに関するガイドラインをご覧ください。 |
繰り返し TextFeature |
option_features | 省略可。特徴の最大数は 100 です。 商品レベルの詳細を重複して指定しないでください。 |
CancellationPolicy | cancellation_policy | 推奨。 |
繰り返し カテゴリ |
option_categories | 省略可。カテゴリの最大数は 100 です。 このオプションに関連するカテゴリ。推奨されるその他の値については、プロダクト カテゴリのドキュメントをご覧ください。 |
繰り返し RelatedLocation |
related_location | 推奨。場所の最大数: 100。 商品が最も関連性の高い場所に表示されるようにするには、関連する場所の正確なリストを提供することが非常に重要です。ただし、過剰なタグ付けや正確でないデータの提供は、商品の削除につながります。詳しくは、ロケーションとスポットのガイドをご覧ください。 |
ブール値 | base_ticket | 省略可。 プロダクト オプションが基本入場券かどうかを示すために使用します。 |
繰り返し PriceOption |
price_options | 必須、1 つ以上。 このオプションで可能なすべての価格。 注: 大人料金のみがサポートされています。複数の料金オプションが指定されている場合は、地域制限チェックに合格した最初の料金が使用されます。団体チケットの場合は、代わりにグループ全体の正規料金を使用する必要があります。 |
uint32 | duration_sec | 省略可。 オプションの所要時間(秒単位)。ガイド付きツアーやボート ツアーなど、該当する場合。これは、経験期間(有効期間ではない)を反映する必要があります。 |
繰り返し 言語 |
言語 | 推奨。言語数の上限: 100。 このオプションが使用できる言語。エンドユーザーがその言語を理解または読み取ることが、エクスペリエンスを享受するうえで重要である場合。ガイド付きツアーなどです。 |
ロケーション | meeting_point | 省略可。 関連性があり、有益な場所にのみ追加します。たとえば、参加者がツアーガイドと待ち合わせしてウォーキング ツアーを開始する場所、参加者が市内観光のために乗車する場所、クルーズ ツアーの出発地となる埠頭などです。 |
{
"id": "option-1",
"title": {
"localized_texts": [
{
"language_code": "en",
"text": "Sunset tour"
},
{
"language_code": "es",
"text": "Tour al atardecer"
},
{
"language_code": "zh-HK",
"text": "日落之旅"
}
]
},
"landing_page": {
"url": "https://www.danstour.com/sunset?language={lang}¤cy={currency}"
},
"cancellation_policy": {
"refund_conditions": [
{
"min_duration_before_start_time_sec": 86400,
"refund_percent": 100
}
]
},
"option_categories": [
{
"label": "sports"
},
{
"label": "bike-tours"
}
],
"related_locations": [
{
"location": {
"location": {
"place_id": "ChIJ3S-JXmauEmsRUcIaWtf4MzE"
}
},
"relation_type": "RELATION_TYPE_RELATED_NO_ADMISSION"
},
{
"location": {
"location": {
"lat_lng": {
"latitude": 53.339688,
"longitude": 6.236688
}
}
},
"relation_type": "RELATION_TYPE_RELATED_NO_ADMISSION"
}
],
"price_options": [
{
"id": "option-1-adult",
"title": "Adult (14+)",
"price": {
"currency_code": "EUR",
"units": 20
},
"fees_and_taxes": {
"per_ticket_fee": {
"currency_code": "EUR",
"units": 1
},
"per_ticket_tax": {
"currency_code": "EUR",
"units": 1
}
}
}
]
}
TextFeature
message TextFeature {
enum TextFeatureType {
// Don't use, for backwards compatibility only.
TEXT_FEATURE_UNKNOWN = 0;
// Feature is an inclusion.
TEXT_FEATURE_INCLUSION = 1;
// Feature is an exclusion.
TEXT_FEATURE_EXCLUSION = 2;
// Feature is a highlight.
TEXT_FEATURE_HIGHLIGHT = 3;
// Feature is a "must know".
TEXT_FEATURE_MUST_KNOW = 4;
// Feature represents information about safety measures.
TEXT_FEATURE_SAFETY_INFORMATION = 5;
}
// Feature type.
// Required.
TextFeatureType feature_type = 1;
// LocalizedTextSet content of the feature. Values support both plain-text
// and HTML-like text for basic formatting. Supported HTML formatting tags:
//
// Phrase tags: <br>, <strong>, <em>, <i>:
// Only the four tags mentioned above are supported. <br> can be used to
// break lines in paragraphs, and <strong>/<em>/<i> can be used to highlight
// important text. Any other phrase tags will be ignored.
//
// All other tags and custom styles are not allowed and will be removed. Any
// URLs, anchors, and links will be stripped, and will never be displayed to
// end-users.
// Recommended to not exceed length of 1000 in any language. Max length: 2000.
// Required.
LocalizedTextSet value = 2;
}
タイプ | フィールド | メモ |
---|---|---|
enum | feature_type | 必須。 特徴のタイプ。有効な値は次のとおりです。 TEXT_FEATURE_INCLUSION : 対象物は包含です。TEXT_FEATURE_EXCLUSION : 特徴が除外対象です。TEXT_FEATURE_HIGHLIGHT : 対象物がハイライトです。TEXT_FEATURE_MUST_KNOW : 必須の機能。TEXT_FEATURE_SAFETY_INFORMATION : 安全対策に関する情報を表す特徴。 |
LocalizedTextSet | 値 | 必須、推奨される長さは 1, 000 文字以下、最大長は 2, 000 文字です。 サポートされている HTML 形式タグ: br、strong、em、i 上記の 4 つのタグのみがサポートされています。 br を使用すると、段落の改行ができます。また、strong /em /i を使用すると、重要なテキストをハイライト表示できます。その他のフレーズタグは無視されます。その他すべてのタグとカスタム スタイルは使用できず、削除されます。URL、アンカー、リンクはすべて削除され、エンドユーザーには表示されません。 |
{
"feature_type": "TEXT_FEATURE_HIGHLIGHT",
"value": {
"localized_texts": [
{
"language_code": "en",
"text": "<p>A very fun bike tour<p>"
},
{
"language_code": "es",
"text": "<p>Un recorrido en bicicleta muy divertido.</p>"
},
{
"language_code": "zh-HK",
"text": "<p>一個非常有趣的自行車之旅.</p>"
}
]
}
}
評価
message Rating {
// Average rating value.
// The value must be in the range of [1, 5] and can be omitted if and only if
// the rating_count is zero.
double average_value = 1;
// Number of ratings used in calculating the value.
// Required.
uint64 rating_count = 2;
}
タイプ | フィールド | メモ |
---|---|---|
double | average_value | 省略可。 平均評価値。値は [1, 5] の範囲内である必要があり、 rating_count がゼロの場合にのみ省略できます。 |
uint64 | rating_count | 必須。 値の計算に使用される評価の数。 |
// Example 1
{
"average_value": 4.6,
"rating_count": 192
}
// Example 2: No ratings data
{
"rating_count": 0
}
メディア
message Media {
// URL of this media source. Google will crawl the media hosted at this URL.
// Max length: 2000.
// Required.
string url = 1;
enum MediaType {
// Don't use, for backwards compatibility only.
MEDIA_TYPE_UNSPECIFIED = 0;
// Indicates the media provided by the url is a photo.
MEDIA_TYPE_PHOTO = 1;
}
// Type of this media source.
// Required.
MediaType type = 2;
// 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.
// Recommended to not exceed length of 1000 in any language.
// Max length: 2000.
// Optional.
LocalizedTextSet attribution = 3;
}
タイプ | フィールド | メモ |
---|---|---|
文字列 | URL | 必須、最大長: 2, 000。 このメディアソースの URL。この URL でホストされているメディアが、Google によりクロールされます。 |
enum | type | 必須。 このメディアソースのタイプ。有効な値: MEDIA_TYPE_PHOTO : URL で指定されたメディアが写真であることを示します。 |
LocalizedTextSet | アトリビューション | 省略可。推奨長さ: 1, 000、最大長: 2, 000。 メディアのソースに関する権利帰属情報。撮影者または代理店にクレジットを付与するために、メディアとともに権利帰属情報を表示する必要がある場合は、このフィールドを設定する必要があります。 |
{
"url": "http://www.danstour.com/photo2.jpg",
"type": "MEDIA_TYPE_PHOTO",
"attribution": {
"localized_texts": [
{
"language_code": "en",
"text": "Dans Photos"
}
]
}
}
カテゴリ
message Category {
// Refer to the documentation for the valid values list.
// Required.
string label = 1;
}
タイプ | フィールド | メモ |
---|---|---|
文字列 | ラベル | 必須。有効な値のリストについては、商品カテゴリのドキュメントをご覧ください。 |
{
"label": "sports"
}
RelatedLocation
// Defines relation between an option and a location.
message RelatedLocation {
// Location related to an option. Can be a POI (e.g. Eiffel tower),
// neighbourhood (e.g. Old Town) or an address / arbitrary map point.
// Required.
Location location = 1;
enum RelationType {
// Location is related but relation does not allow admission or admission is
// irrelevant, e.g. location is a square highlighted in a city tour.
RELATION_TYPE_RELATED_NO_ADMISSION = 0;
// Relation grants admission to this related location.
RELATION_TYPE_ADMISSION_TICKET = 1;
// Relation declares an additional service which doesn't get the user into
// the related location, e.g. a parking ticket, a temporary exhibition, etc.
RELATION_TYPE_SUPPLEMENTARY_ADDON = 2;
}
// Relation type of an option for the given location.
// Required.
RelationType relation_type = 2;
}
オプションとロケーションの関係を定義します。
タイプ | フィールド | メモ |
---|---|---|
ロケーション | 場所 | 必須。 オプションに関連する場所。スポット(エッフェル塔など)、地域(旧市街など)、住所または任意の地図上の地点に設定できます。 |
enum | relation_type | 必須。 指定された場所のオプションの関係タイプ。有効な値: RELATION_TYPE_RELATED_NO_ADMISSION : 場所は関連しているが、その関係で入場が許可されていないか、入場が関連性がない(場所が市内観光でハイライト表示されている広場など)。RELATION_TYPE_ADMISSION_TICKET : 関係により、この関連する場所への入場が許可されます。RELATION_TYPE_SUPPLEMENTARY_ADDON : 関係は、駐車券や一時的な展示など、関連する場所にユーザーを誘導しない追加サービスを宣言します。 |
// Example of place ID POI with no admissions
{
"location": {
"location": {
"place_id": "ChIJ3S-JXmauEmsRUcIaWtf4MzE"
}
},
"relation_type": "RELATION_TYPE_RELATED_NO_ADMISSION"
}
// Example of Address POI with admissions
{
"location": {
"location": {
"address": "Madame Tussauds Berlin, Unter den Linden 74, 10117 Berlin, Germany"
}
},
"relation_type": "RELATION_TYPE_ADMISSION_TICKET"
}
DeepLink
// Deep link definition. Can include value parameters that will be expanded on
// serve time.
message DeepLink {
// Landing page URL template for desktop. If both `url` and `localized_url`
// are provided, the former is used as a fallback in case
// no URL matches the user’s locale.
// Max length: 2000.
// Either `url` or `localized_url` is required.
string url = 1;
// Localized landing page URL template for desktop. If both `url` and
// `localized_url` are provided, the former is used as a fallback in case
// no URL matches the user’s locale.
// Max length: 2000.
// Max number of locales: 50.
// Either `url` or `localized_url` is required.
LocalizedTextSet localized_url = 3;
reserved 2, 4;
}
ディープリンクの定義。配信時に展開される値パラメータを指定できます。
タイプ | フィールド | メモ |
---|---|---|
文字列 | URL | 省略可、最大長: 2, 000 文字。 デスクトップ用ランディング ページの URL テンプレート。「url」または「localized_url」のいずれかが必要です。 |
LocalizedTextSet | localized_url | 省略可。最大長: 2,000、ローカルの最大数: 50。 パソコン向けのローカライズされたランディング ページ URL テンプレート。 url と localized_url の両方が指定されている場合、ユーザーの言語 / 地域に一致する URL がない場合、前者がフォールバックとして使用されます。url が使用できず、言語が指定されていない場合は、英語の URL が使用されます。 |
// Example 1: single landing page URL.
{
"url": "https://www.danstour.com/bike-tours/?language={lang}¤cy={currency}"
}
// Example 2: localized landing page url with fallback
{
"url": "https://www.danstour.com/bike-tours/?currency={currency}",
"localized_url": {
"localized_texts": [{
"language_code": "de",
"text": "https://www.danstour.com.de/bike-tours/?currency={currency}"
}, {
"language_code": "es-MX",
"text": "https://mx.danstour.com/bike-tours/?currency={currency}"
}, {
"language_code": "zh-HK",
"text": "https://hk.danstour.com.es/bike-tours/?currency={currency}"
}]
}
}
演算子
message Operator {
// Operator name.
// Recommended to not exceed length of 50 in any language. Max length: 100.
// Required.
LocalizedTextSet name = 1;
// Operator business name as it is registered in Google Business Profile and
// appearing on Google Maps.
// Recommended to not exceed length of 50 in any language.
// Max length: 100.
// Required.
LocalizedTextSet google_business_profile_name = 4;
// Operator phone number. Prefer full international phone number format.
// Max length: 64.
// Optional.
string phone_number = 2;
// List of operator locations.
// Max number of locations: 1.
// Optional.
repeated Location locations = 3;
}
タイプ | フィールド | メモ |
---|---|---|
LocalizedTextSet | name [非推奨] | 省略可、推奨文字数: 50、最大文字数: 100。 この商品の販売者のブランド名。OTA は、これを OTA ブランドとして設定する必要があります。 このフィールドは非推奨となり、products の brand_name に置き換えられました |
LocalizedTextSet | google_business_profile_name | 必須、最大長: 100。 Google ビジネス プロフィールに登録され、Google マップに表示される事業者のビジネス名。運転手予約モジュールに参加するには、このフィールドが必要です。 |
文字列 | phone_number | 省略可、最大長: 64。 オペレーターの電話番号。国際電話番号の形式で入力することをおすすめします。 |
繰り返し 位置情報 |
開催地 | 省略可、最大数: 1。 事業者のビジネス拠点の住所。 住所文字列を使用している場合は、住所文字列の一部としてビジネス名を含めます。たとえば、「ビジネス名、番地」などです。オペレーター予約モジュールをトリガーするには、オペレーターのビジネスが Google マップで検索可能である必要があります。ビジネスが Google マップで検索できない場合は、オペレーターが Google ビジネス プロフィールを登録する必要があります。 |
// Example 1: Sending operator information for operator booking module:
operator: {
"google_business_profile_name": {
"localized_texts": [{
"language_code": "en",
"text": "Dans Bikes"}]
},
"locations": [{
"location": { //Operator business address
"address": "Dans Bikes, 123 NYC st…"
}}]
}
言語
message Language {
// A BCP 47 compliant language code such as "en" or "de-CH".
string code = 1;
}
タイプ | フィールド | メモ |
---|---|---|
文字列 | コード | BCP-47 に準拠した言語コード(「en」や「de-CH」など)。 |
{
"code": "de-CH"
}
PriceOption
message PriceOption {
// Unique ID within the price set.
// Max length: 255.
// Required.
string id = 1;
// Short description of the price option, e.g. "Adult weekday".
// Max length: 150.
// Required.
string title = 2;
// Price value, must match the final price on the checkout page, including all
// taxes and charges, see price policy. Currency will be converted to the user
// currency on rendering.
// Required when is_free is false.
google.type.Money price = 3;
// Admission or ticket is free. Must be set to true for zero-price options.
// Optional, default is false.
bool is_free = 4;
// List of geographical regions this price is applicable to. If empty,
// applicable to all locations.
// Optional.
repeated GeoCriterion geo_criteria = 5;
// Break down of fees and taxes included in the price above.
// Optional.
PriceFeesAndTaxes fees_and_taxes = 6;
}
タイプ | フィールド | メモ |
---|---|---|
文字列 | id | 必須、最大長: 255 文字。 料金セット内の一意の ID。 |
文字列 | title | 必須、最大長: 150。 料金オプションの簡単な説明(例: 平日の大人)。 |
google.type.Money | 価格 | is_free が false の場合に必須。価格の値は、すべての税金と料金を含め、購入手続きページの最終価格と一致している必要があります。価格に関するポリシーをご覧ください。通貨はレンダリング時にユーザーの通貨に変換されます。 |
ブール値 | is_free | 省略可。デフォルトは false です。 入場料またはチケットは無料です。価格がゼロのオプションの場合は true に設定する必要があります。 |
繰り返し GeoCriterion |
geo_criteria | 省略可。 この価格が適用される地域のリスト。空の場合、すべてのロケーションに適用されます。 |
繰り返し PriceFeesAndTaxes |
fees_and_taxes | 省略可。 料金に含まれる手数料と税金の内訳。 |
{
"id": "option-1-adult",
"title": "Adult (14+)",
"price": {
"currency_code": "EUR",
"units": 20
},
"fees_and_taxes": {
"per_ticket_fee": {
"currency_code": "EUR",
"units": 1
},
"per_ticket_tax": {
"currency_code": "EUR",
"units": 1
}
}
}
GeoCriterion
message GeoCriterion {
// 2-letter country code as defined in ISO 3166-1.
// Required.
string country_code = 1;
// If true, criterion is negative (the country code is excluded).
bool is_negative = 2;
}
タイプ | フィールド | メモ |
---|---|---|
文字列 | country_code | 必須。 ISO 3166-1 で定義されている 2 文字の国コード。 |
ブール値 | is_negative | 省略可。 true の場合、条件は否定形になります(国コードは除外されます)。 |
{
"country_code": "US",
"is_negative": "true"
}
PriceFeesAndTaxes
message PriceFeesAndTaxes {
// Booking fees included in the final product price for a single ticket.
// Optional.
google.type.Money per_ticket_fee = 1;
// State taxes included in the final product price for a single ticket.
// Optional.
google.type.Money per_ticket_tax = 2;
}
タイプ | フィールド | メモ |
---|---|---|
google.type.Money | per_ticket_fee | 省略可。 1 枚のチケットの最終的な商品価格に含まれる予約手数料。 |
google.type.Money | per_ticket_tax | 省略可。 1 枚のチケットの最終的な商品価格に含まれる税金を指定します。 |
{
"per_ticket_fee": {
"currency_code": "EUR",
"units": 1
},
"per_ticket_tax": {
"currency_code": "EUR",
"units": 1
}
}
場所
message Location {
// At least one of (location, description) must be set, and we highly
// recommend populating location wherever possible.
//
// To emphasize, both fields can be populated together, e.g. you can set
// Central Park New York for the location and "In front of the 72 Street
// Station" for the description.
GeoLocation location = 1;
// Additional description in human-readable form, e.g.
// "On the left side of the fountain on the Palace square".
// At least one of (location, description) must be set.
// Recommended to not exceed length of 1000 in any language. Max length: 2000.
LocalizedTextSet description = 2;
}
タイプ | フィールド | メモ |
---|---|---|
GeoLocation | 場所 | 任意。location または description の少なくとも 1 つが必要です。 地理的位置。 |
LocalizedTextSet | 説明 | 省略可。推奨される長さ: 1,000、最大長: 2,000。場所または説明のいずれかが必要です。 「宮殿広場の噴水の左側」など、人間が読める形式の追加の説明。 |
{
"location": {
"place_id": "ChIJ3S-JXmauEmsRUcIaWtf4MzE"
}
}
GeoLocation
各ヒントタイプの詳細については、 使用に関するガイドラインをご覧ください。
message GeoLocation {
// Required (exactly one variant from oneof).
// See
// https://developers.google.com/travel/things-to-do/guides/partner-integration/location
// for detailed guidelines.
oneof value {
// Place ID as defined by the Places API:
// https://developers.google.com/places/web-service/place-id
//
// Uniquely identifies a POI on Google.
// It can be sourced using the Places API endpoints, for instance Place
// Search or Place Autocomplete, or manually using the Find Location Matches
// tool in Things to Do Center.
string place_id = 1;
// Legacy single-line address.
// Components are expected to be comma-separated, with the first component
// being the place name as it is displayed on Google.
// For higher matching accuracy, use the street address shown on Google for
// the place.
//
// Examples:
// - "Colosseum, Piazza del Colosseo, 1, 00184 Roma RM, Italy"
// - "The British Museum, Great Russell St, London WC1B 3DG, United Kingdom"
//
// Max length: 200.
//
// Deprecated: use `place_info` for higher matching accuracy, which provides
// a separate field for the place name and supports both structured and
// unstructured address formats.
string address = 3 [deprecated = true];
// Structured place information.
PlaceInfo place_info = 4;
// Business Profile ID, as found in the Google Business Profile settings
// page. Use this field when sourcing locations directly from the place
// owner, who has access to the Google Business Profile for the place and
// can provide such ID.
uint64 business_profile_id = 5;
// Geographic coordinates.
// This field can only be used to determine a city or geographical region,
// as it is too ambiguous to identify a specific place or businesses.
// Use `place_info` instead to match to a specific place by name and
// coordinates.
google.type.LatLng lat_lng = 2;
}
}
タイプ | フィールド | メモ |
---|---|---|
文字列 | place_id | 省略可。place_id 、address 、place_info 、business_profile_id 、lat_lng のいずれか 1 つを指定する必要があります。Places API で定義されている PlaceId。Google 上のスポットを一意に識別します。場所 ID は、Place Search や Place Autocomplete などの Places API エンドポイントを使用して取得するか、おすすめスポット センターの [場所の一致検索] ツールを使用して手動で取得できます。 |
文字列 | 住所 | 省略可。place_id 、address 、place_info 、business_profile_id 、lat_lng のいずれか 1 つを指定する必要があります。非推奨。従来の単一行の住所。最大長: 200。 コンポーネントはカンマ区切りで指定します。最初のコンポーネントは、Google に表示される場所の名前にする必要があります。より正確に一致させるには、Google に表示されている住所を使用します。 |
PlaceInfo | place_info | 省略可。place_id 、address 、place_info 、business_profile_id 、lat_lng のいずれか 1 つを指定する必要があります。構造化された場所情報。 |
uint64 | business_profile_id | 省略可。place_id 、address 、place_info 、business_profile_id 、lat_lng のいずれか 1 つを指定する必要があります。Google ビジネス プロフィールの設定ページに表示されるビジネス プロフィール ID。このフィールドは、場所のオーナーから直接場所を取得する場合に使用します。場所のオーナーは、その場所の Google ビジネス プロフィールにアクセスでき、そのような ID を提供できます。 |
google.type.LatLng | lat_lng | 省略可。place_id 、address 、place_info 、business_profile_id 、lat_lng のいずれか 1 つを指定する必要があります。地理座標。このフィールドは、特定の場所やビジネスを特定するには曖昧すぎるため、都市や地域を特定する場合にのみ使用できます。名前と座標で特定の場所と一致させるには、代わりに place_info を使用します。 |
"place_id": "ChIJ3S-JXmauEmsRUcIaWtf4MzE"
"address": "Eiffel Tower, 5 Av. Anatole France, 75007 Paris, France"
"place_info": {
"name": "Eiffel Tower",
"unstructured_address": "5 Av. Anatole France, 75007 Paris, France"
}
"business_profile_id": 11458995034835395294
"lat_lng": {
"latitude": -25.3511774,
"longitude": 131.0326859
}
PlaceInfo
message PlaceInfo {
// Place or business name.
// For higher matching accuracy, this should be the same as the name shown on
// Google for the place. For places with a claimed Google Business Profile,
// this should be the same as the business name configured in the business
// profile.
// Max length: 100.
// Required.
string name = 1;
// Phone number, including the international prefix.
// For higher matching accuracy, this should be the same as the phone number
// shown on Google for the place.
// It can include commonly used separator characters.
// Examples: "+1 212-363-3200", "+91 562 222 7261".
// Max length: 30.
// Optional.
string phone_number = 2;
// Website URL shown on Google for the place, preferably the URL linked from
// the business listing in Google Maps or Search for the place.
// Max length: 1000.
// Optional.
string website_url = 3;
// Geographic coordinates of the place.
// If left empty, Google will infer the coordinates from the address.
// Optional, but either `coordinates` or one of `address_type` must be
// provided.
google.type.LatLng coordinates = 4;
// Optional, but either `coordinates` or one of `address_type` must be
// provided.
oneof address_type {
// Structured address.
// Prefer this format whenever possible for higher matching accuracy.
StructuredAddress structured_address = 5;
// Unstructured address.
// It should not include the place or business name, which must instead be
// provided separately using the `name` field.
//
// Examples:
// - `name`: "Colosseum", `unstructured_address`: "Piazza del Colosseo, 1,
// 00184 Roma RM, Italy".
// - `name`: "The British Museum", `unstructured_address`: "Great Russell
// St, London WC1B 3DG, United Kingdom".
//
// Max length: 400.
string unstructured_address = 6;
}
}
タイプ | フィールド | メモ |
---|---|---|
文字列 | name | 必須。最大長: 300 文字。場所またはお店やサービスの名前。一致精度を高めるには、Google に表示される場所の名前と同じにする必要があります。Google ビジネス プロフィールが登録されている場所の場合は、ビジネス プロフィールで設定されているビジネス名と同じにする必要があります。 |
文字列 | phone_number | 省略可。最大長: 30 文字。国際電話の局番を含む電話番号。一致精度を高めるには、Google に表示されている場所の電話番号と同じにする必要があります。よく使用される区切り文字を含めることができます。例: 「+1 212-363-3200」、「+91 562 222 7261」。 |
文字列 | website_url | 省略可。最大長: 1,000。場所の Google でのウェブサイト URL(Google マップまたはその場所の検索からリンクされている URL が望ましい)。 |
google.type.LatLng | coordinates | 省略可。場所の地理座標。空白のままにすると、Google によって住所から座標が推測されます。省略可能ですが、coordinates または structured_address と unstructured_address のいずれかを指定する必要があります。 |
StructuredAddress | structured_address | 省略可。structured_address または unstructured_address のいずれか一つを指定できます。両方は指定できません。 |
文字列 | unstructured_address | 省略可。structured_address または unstructured_address のいずれか一つを指定できます。両方は指定できません。 |
"place_info": {
"name": "Colosseum",
"phone_number": "+39 063 99 67 700",
"website_url": "https://colosseo.it/",
"coordinates": {
"latitude": 41.8902102,
"longitude": 12.4922309
},
"structured_address" {
"street_address": "Piazza del Colosseo, 1",
"locality": "Roma",
"administrative_area": "RM",
"postal_code": "00184",
"country_code": "IT"
}
}
"place_info": {
"name": "Eiffel Tower",
"unstructured_address": "5 Av. Anatole France, 75007 Paris, France"
}
"place_info": {
"name": "Mutitjulu Waterhole",
"coordinates": {
"latitude": -25.3511774,
"longitude": 131.0326859
}
}
StructuredAddress
message StructuredAddress {
// Street address, including house number and any other component that cannot
// be provided using the more specific fields defined below. It should not
// include the place or business name, which must instead be provided
// separately using the `name` field under `PlaceInfo`. It should also not
// include postal code, locality or country as those should be provided using
// the corresponding fields below.
//
// Examples:
// - "Piazza del Colosseo, 1" for the Colosseum.
// - "Great Russell St" for The British Museum.
// - "Champ de Mars, 5 Av. Anatole France" for the Eiffel Tower.
//
// Max length: 200.
// Required.
string street_address = 1;
// Locality, generally referring to the city/town portion of an address.
// Examples: "New York", "Rome", "London", "Tokyo".
// In regions of the world where localities are not well defined or do not fit
// into this structure well, leave empty.
// Max length: 80.
// Optional.
string locality = 2;
// Highest administrative subdivision used for postal addresses of the
// specific country or region. This can be a state, a region, a province, an
// oblast, a prefecture, etc.
// It can be an abbreviation or a full name, depending on how the region is
// usually represented in the postal addresses of the specific country. For
// example, "CA" or "California" for US addresses, "RM" for Rome province in
// Italy.
// Many countries don't use an administrative area in postal addresses. For
// instance, this field should not be used for addresses in Switzerland.
// Max length: 80.
// Optional.
string administrative_area = 3;
// The postal code or zip code.
// Examples: "75007", "WC1B 3DG", etc.
// Required if the country supports postal codes, otherwise it should be left
// empty.
// Max length: 30.
// Optional.
string postal_code = 4;
// Country code, as defined by Unicode's "CLDR", itself based on the ISO 3166
// alpha-2 standard. See
// https://unicode.org/cldr/charts/latest/supplemental/territory_containment_un_m_49.html.
//
// Examples: "US" for the United States, "FR" for France, "GB" for the United
// Kingdom, etc.
// Max length: 2.
// Required.
string country_code = 5;
}
タイプ | フィールド | メモ |
---|---|---|
文字列 | street_address(住所) | 必須。最大長: 200。住所(番地など、より具体的なフィールドを使用して指定できないコンポーネントを含む)。場所やビジネス名は含めないでください。代わりに、PlaceInfo の name フィールドを使用して別途指定してください。また、郵便番号、地域、国は、対応するフィールドを使用して指定する必要があるため、含めないでください。 |
文字列 | 地域区分 | 省略可。最大長: 80 文字。地域区分: 通常は住所の市区町村の部分を指します。地域区分が明確に定義されていない地域や、この体系が当てはまらない地域では、空白のままにします。 |
文字列 | administrative_area | 省略可。最大長: 80 文字。特定の国または地域の住所に使用される最上位の行政区画。州、地域、州、州、都道府県などです。地域は、特定の国で郵便番号に通常どのように表記されているかによって、省略形またはフルネームになります。 |
文字列 | postal_code | 省略可。最大長: 30 文字。郵便番号。国で郵便番号がサポートされている場合は必須です。それ以外の場合は空白にします。 |
文字列 | country_code | 省略可。最大長: 2。国コード(Unicode の「CLDR」で定義され、ISO 3166 alpha-2 標準に基づく)。 Unicode のドキュメントをご覧ください。 |
{
"structured_address" {
"street_address": "Piazza del Colosseo, 1",
"locality": "Roma",
"administrative_area": "RM",
"postal_code": "00184",
"country_code": "IT"
}
}
LocalizedTextSet
// Values of the localized fields.
message LocalizedTextSet {
// Per-locale LocalizedText values.
// Maximum repeatedness: 50
repeated google.type.LocalizedText localized_texts = 1;
}
タイプ | フィールド | メモ |
---|---|---|
繰り返し google.type.LocalizedText |
localized_texts | 言語 / 地域ごとのローカライズされたテキスト値。 |
{
"language_code": "en",
"text": "Sunrise tour"
}
CancellationPolicy
// Cancellation policy for a product.
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 unset or set to 0 the service can be cancelled at any time.
// Optional.
uint32 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 unset or set to 0, the service is not refundable. When set to 100
// this service is fully refundable.
// Optional.
uint32 refund_percent = 2;
// A flat fee deducted on refund. Could be used separately, or in
// combination with the refund_percent above. In the latter case, refund
// percent applies first, then the fee is deducted.
// Optional.
google.type.Money refund_fee = 3;
}
// Zero or more refund conditions applicable to the policy.
// Max number of refund conditions: 10.
repeated RefundCondition refund_conditions = 1;
}
単一の払い戻し条件を定義します。複数の払い戻し条件を組み合わせて使用すると、サービスの開始時刻までのさまざまな期間として「払い戻しステップ」を記述できます。
タイプ | フィールド | メモ |
---|---|---|
RefundCondition | refund_conditions | 省略可。払い戻し条件の最大数は 10 です。 |
RefundCondition
タイプ | フィールド | メモ |
---|---|---|
uint32 | min_duration_before_start_time_sec | 省略可。 開始時刻までの期間(秒単位)。顧客は、この時刻まで refund_percent で指定されたサービス価格の一部の払い戻しを受け取ることができます。未設定または 0 に設定すると、サービスはいつでも解約できます。 |
uint32 | refund_percent | 省略可。 サービス開始時刻の min_duration_before_start_time 以前にサービス予約がキャンセルされる限り、払い戻し可能な金額の割合([0, 100] の範囲)。未設定または 0 に設定されている場合、サービスは払い戻しできません。100 に設定すると、このサービスは全額払い戻されます。 |
google.type.Money | refund_fee | 省略可。 払い戻し時に差し引かれる定額料金。単独で使用することも、 refund_percent と組み合わせて使用することもできます。後者の場合、まず払い戻し率が適用され、次に手数料が差し引かれます。 |
"refund_conditions": [
{
"min_duration_before_start_time_sec": 86400,
"refund_percent": 100
}]