Travel Partner Prices API
Travel Partner Prices API は、宿泊施設の料金を Google に送信するための RESTful インターフェースを提供します。
サービス: travelpartnerprices.googleapis.com
このサービスを呼び出すには、Google が提供するクライアント ライブラリを使用することをおすすめします。アプリケーションで独自のライブラリを使用してこのサービスを呼び出す必要がある場合は、テクニカル アカウント マネージャー(TAM)に連絡して、このサービスの Discovery Document を取得してください。
サービス エンドポイント
サービス エンドポイントは、API サービスのネットワーク アドレスを指定するベース URL です。1 つのサービスに複数のサービス エンドポイントが存在することもあります。このサービスには次のサービス エンドポイントがあり、以下のすべての URI がこのサービス エンドポイントに関連しています。
https://travelpartnerprices.googleapis.com
| メソッド | |
|---|---|
ingestLosPropertyPrices |
POST /v1/accounts/account_id/properties/property_id:ingestLosPropertyPrices
指定した宿泊施設の滞在日数別料金をアップロードします。 HTTP メッセージ本文として、JSON エンコードされた LoS 料金メッセージ(下記参照)が必要です。
|
API の認証
Travel Partner Prices API は、OAuth 2.0 を使用してアプリケーションを認証し、API にアクセスできるようにします。
OAUTH 2.0 の設定の手順に沿って、Travel Partner Prices API の認証を取得します。
Travel Partners Prices API の新しいプロジェクトを作成する場合は、Travel Partner API で提供されている手順と同様に、新しい Google Cloud コンソール プロジェクトへのアクセスを有効にする必要があります。
Travel Partner API で提供されている手順を参照し、「Travel Partner API」のすべてのインスタンスを「Travel Partner Prices API」に置き換えて、プロジェクトを有効にします。
Travel Partner Prices API のスコープは次のとおりです。
"https://travelpartnerprices.googleapis.com"
Travel Partner Prices API のアップロード パスは次のとおりです。
"/travel/lodging/uploads/accounts/<account_id>/property_data"
リクエスト
構文
LoS Prices メッセージでは、次の構文を使用します。
{
"requestTime": YYYY-MM-DDTHH:mm:ss.SSSZ,
"propertyPrices": {
"arrivalDatePrices": [{
"startDate": {
"year": int
"month": int
"day": int
}
"endDate": {
"year": int
"month": int
"day": int
}
"productPrices": [{
"roomTypeId": "string"
"ratePlanId": "string"
"occupancyPrices": [{
"adults": int
"prices": [{
"rateRuleId": "string"
"currencyCode": "string"
"rates": [night_1,night_2,...]
"taxes": [night_1,night_2,...]
"fees": [night_1,night_2,...]
}]
}]
}]
}]
}
}
要素と属性
Length of Stay の料金メッセージには、次の要素と属性があります。
| 要素 | 発生回数 | タイプ | 説明 |
|---|---|---|---|
| requestTime | 1 | string | LoS 料金メッセージが送信された時点(RFC 3339 形式の文字列)。 過去 24 時間以内の メッセージは、受信された順序に関係なく、 RFC 3339 では、完全に指定された日時を 秒の小数部分は省略可能で、ナノ秒の精度まで指定できます。たとえば、 |
| propertyPrices | 1 | Object | 宿泊施設の料金。この propertyPrices 内のすべての価格は、同じ宿泊施設に適用されます。この要素は繰り返されません。複数のプロパティの料金を送信するには、複数の HTTP リクエスト(プロパティごとに少なくとも 1 つ)を行う必要があります。 |
| arrivalDayPrices[] | 1..n | Object | 到着日の料金。この arrivalDayPrices 内のすべての料金は、特定の宿泊施設に適用されますが、到着日が異なります。 |
| startDate | 1 | Object | productPrices は、startDate~endDate のすべての到着日に適用されます。到着日を 1 つだけ指定する場合(範囲を指定しない場合)は、 |
| startDate.year | 1 | integer | startDate の年。1 ~ 9999 の範囲で指定する必要があります。 |
| startDate.month | 1 | integer | 1 年の中の月。1~12 である必要があります。 |
| startDate.day | 1 | integer | 1 月の中の日付。1 ~ 31 で、その年と月で有効な値にする必要があります。 |
| endDate | 0..1 | Object | productPrices は、startDate~endDate のすべての到着日に適用されます(両日を含む)。到着日を 1 つだけ指定する場合(範囲を指定しない場合)、 |
| endDate.year | 1 | integer | endDate の年。1 ~ 9999 の範囲で指定する必要があります。 |
| endDate.month | 1 | integer | 1 年の中の月。1~12 である必要があります。 |
| endDate.day | 1 | integer | 1 月の中の日付。1 ~ 31 で、その年と月で有効な値にする必要があります。 |
| productPrices[] | 1..n | Object | 商品の価格。この productPrices 内のすべての料金は、特定の宿泊施設と到着日の組み合わせに適用されますが、商品は異なります。 |
| roomTypeId | 0..1 | string | この料金が参照する客室の一意の ID。この ID を使用して、条件の組み合わせのデータと roomdata で送信した内容を一致させます。詳しくは、条件の組み合わせのメタデータをご覧ください。 |
| ratePlanId | 0..1 | string | この料金が参照しているパッケージ データの一意の ID。この ID を使用して、条件の組み合わせのデータと packagedata で送信した内容を一致させます。詳しくは、条件の組み合わせのメタデータをご覧ください。 |
| occupancyPrices[] | 1..n | Object | 宿泊人数別の料金。この occupancyPrices 内のすべての料金は、特定の宿泊施設、到着日、商品との組み合わせに適用されますが、宿泊人数は異なります。 |
| adults | 1 | integer | 客室ごとに予約できる最大宿泊客数(大人と子どもを含む)。この値は、対応する occupancyPrices フィールド内のすべてのレートに設定され、1 ~ 99 の正の整数にする必要があります。注: 5 人以上の大人の宿泊人数を送信するには、サポートチームにお問い合わせください。 |
| prices[] | 1..n | Object | 滞在日数に応じた料金。prices 内のすべての料金は、特定の宿泊施設、到着日、商品、宿泊人数に適用されます。 |
| rateRuleId | 0..1 | string | 限定価格の場合、この ID は料金ルール定義ファイルの定義と一致します。このフィールドには 40 文字まで入力できます。 |
| currencyCode | 1 | string | rates と taxes が提供される 3 文字の通貨コード。たとえば、米ドルの場合は "USD" です。 |
| rates[] | 30 | float | 滞在日数の料金の基本料金コンポーネント。 対応する インデックス 30 個の料金からなる LoS セット全体を一度に送信する必要があります。30 個未満の LoS 価格を送信した場合、指定されたすべての LoS 価格が通常どおり処理され、残りのレートは LoS 30 まで利用できません。30 件を超える料金を送信すると、30 件目を超える料金はすべて破棄されます。 利用できない宿泊日数は |
| taxes[] | 30 | float | 滞在日数の価格の税額部分。 インデックス |
| fees[] | 30 | float | 滞在日数の料金の料金コンポーネント。 インデックス |
例
LOS に基づく料金と税金
次の例は、1 つのチェックイン日の最低宿泊日数を 2 に設定し、別のチェックイン日の空室状況をなしに設定する方法を示しています。endDate を指定せずに 2023 年 9 月 1 日から startDate を設定した場合、1 日のみの料金を指定することになり、endDate を省略できます。
2 に設定された occupancyPrices 配列を使用すると、宿泊人数ごとに異なる料金を設定できます。そのため、2023 年 9 月 4 日に空きがない場合、利用可能な rates が制限されます。
表示されている taxes 配列は、レートの 10% として計算されます。
表示されている fees 配列は、1 滞在あたり 50 ドルの清掃料金を適用します。
チェックイン日全体(2023 年 9 月 3 日)が予約不可の場合は、日付を明示的に送信し、rates、taxes、productPrices を省略して、リクエストされた日付の予約不可であることを示します。
{
"requestTime": "2023-08-10T12:15:222",
"propertyPrices": {
"arrivalDatePrices": [
{
"startDate": {
"year": 2023,
"month": 9,
"day": 1
},
"productPrices": [
{
"occupancyPrices": [
{
"adults": 2,
"prices": [
{
"currencyCode": "USD",
"rates": [
0, 200, 300, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
],
"taxes": [
0, 20, 30, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
],
"fees": [
0, 50, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
]
}
]
}
]
}
]
},
{
"startDate": {
"year": 2023,
"month": 9,
"day": 3
},
"productPrices": [
{
"occupancyPrices": [
{
"adults": 2,
"prices": [
{
"currencyCode": "USD",
"rates": [
0, 200, 300, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
],
"taxes": [
0, 20, 30, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
],
"fees": [
0, 50, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
]
}
]
}
]
}
]
}
]
}
}
レスポンスの本文
成功した場合、レスポンスの本文には次の構造のデータが含まれます。
| JSON 表現 | |
|---|---|
{
"name": "string"
}
|
|
| フィールド | |
|---|---|
name |
変更された PropertyPrices のリソース名。形式は accounts/{account}/properties/{property} です。 |