滞在日数(LoS)の料金

Travel Partner Prices API

Travel Partner Prices API は、Google 広告から送信するための RESTful インターフェースを 物件価格を Google に送ります

サービス: travelpartnerprices.googleapis.com

このサービスを呼び出すには、Google 提供のクライアント ライブラリ。お使いの このサービスを呼び出すために独自のライブラリを使用する必要がある場合は、 テクニカル アカウント マネージャー(TAM)によるディスカバリ ドキュメントの取得 割り当てることができます。

サービス エンドポイント

サービス endpoint は、 API サービスのネットワーク アドレスを指定するベース URL。1 つのサービスに複数のサービス エンドポイントが存在することもあります。このサービスには次のサービスがあります 示されているすべての URI は、このサービス エンドポイントからの相対パスです。

https://travelpartnerprices.googleapis.com
メソッド
ingestLosPropertyPrices POST /v1/accounts/account_id/properties/property_id:ingestLosPropertyPrices

指定した宿泊施設の滞在日数の料金をアップロードします。

HTTP メッセージの本文として、JSON エンコードされた LoS 料金メッセージ(下記を参照)が必要です。

account_id: この文字列値は、 "アカウント ID"ホテルの [アカウント設定] ページに表示されている値 できます。

property_id: この要素の値は、 ホテルリスト フィードのリスティング ID と一致する文字列である必要があります。

API の認証

Travel Partner Prices API は、OAuth 2.0 を使用してアプリケーションを認証し、API にアクセスできるようにします。

OAUTH 2.0 のセットアップに沿って対応します。 Travel Partner Prices API の承認を受けるための手順。

Travel Partners Prices API 用の新しいプロジェクトを作成するときは、次のことを行う必要があります。 新しい Google Cloud コンソール プロジェクトへのアクセスを有効にします。 Travel Partner API で提供される手順をご覧ください

Travel Partner API で提供される手順をご覧ください すべての「Travel Partner API」と置き換えます。「旅行パートナーの料金」 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,...]
          }]
        }]
      }]
    }]
  }
}

要素と属性

滞在日数に基づく料金メッセージには、次の要素と属性があります。

要素 発生回数 タイプ 説明
requestTime 1 string

LoS Price メッセージが送信された時点。RFC 3339 形式の文字列で表します。

過去 24 日以内に requestTime を使用して送信されたメッセージ 時間は処理され、残りの時間は破棄されます。

メッセージは requestTime の順序で処理されます。 受信の順序に関係なく 常に同じですたとえば、requestTime2019-05-03T14:10:00Z の同じ旅行プランのメッセージの後に受信された requestTime2019-05-03T14:09:00Z の料金の更新は、タイムスタンプが新しいメッセージに優先され破棄されます。

RFC 3339 では、YYYY-MM-DDThh:mm:ss.SSZ として完全な日時を指定する必要があります。タイムゾーンの指定は必須です UTC からの正または負の hh:mm オフセット、または Z は UTC の省略形です。

秒の小数部分は省略可能です。ナノ秒単位の精度まで表すことができます。たとえば、2017-01-15T01:30:15.01-08:00 は 2017 年 1 月 15 日 01:30 PST の 15.01 秒をエンコードします。

propertyPrices 1 Object 宿泊施設の料金。このpropertyPrices内のすべての料金 すべて同じプロパティに適用されます。

この要素は繰り返しません。複数の宿泊施設の料金を送信するには 複数の HTTP リクエスト(プロパティごとに少なくとも 1 つ)を行う必要があります。

arrivalDayPrices[] 1..n Object 到着日の料金。この arrivalDayPrices 内のすべての料金は、特定の宿泊施設に適用されますが、到着日が異なります。
startDate 1 Object productPrices は、startDateendDate のすべての到着日に適用されます。

期間ではなく、1 つの到着日のみを指定する場合: startDateendDate の両方に到着日を入力します。

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 は、startDateendDate のすべてのチェックイン日に適用されます。

期間ではなく、1 つの到着日のみを指定する場合、 endDate は省略できます。

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 を使用して、条件の組み合わせデータと客室データで送信した内容を照合します。 詳細については、このモジュールの 条件の組み合わせのメタデータ
ratePlanId 0..1 string この料金が参照するパッケージ データの一意の ID。この ID を使用して、条件の組み合わせのデータと packagedata で送信した内容を一致させます。詳しくは、条件の組み合わせのメタデータをご覧ください。
occupancyPrices[] 1..n Object 宿泊人数ごとの料金。この occupancyPrices 内のすべての料金は、特定の宿泊施設、到着日、商品の組み合わせに適用されますが、宿泊人数は異なります。
adults 1 integer 1 つの部屋で予約できる宿泊客の最大数 使用できます。この値は、対応する occupancyPrices フィールド内のすべてのレートに設定され、1~99 の正の整数にする必要があります。

注: 大人 4 人を超える宿泊人数を送信するには、サポートチームにお問い合わせください。

prices[] 1..n Object 滞在日数に応じた料金。prices 内のすべての価格が以下に適用されます 特定の宿泊施設、到着日、商品、定員の組み合わせ。
rateRuleId 0..1 string 限定価格の場合、この ID は料金ルール定義ファイルの定義と一致します。このフィールドの文字数制限は 40 文字です。
currencyCode 1 string ratestaxes が指定されている 3 文字の通貨コード。たとえば、米ドルの場合は "USD" です。
rates[] 30 float 滞在日数の基本料金コンポーネント。

対応する taxes 値が指定されている場合、このレートは 税抜きです。合計金額は 税率と税金です

インデックス n の値は、n+1 の滞在日数に対応します。

一度に 30 個の価格の完全な LoS セットを送信する必要があります。30 個未満を送信した場合、指定された LoS の料金はすべて通常どおり処理されますが、残りの料金は LoS 30 まで使用できません。30 件を超えて送信した場合、30 件目の料金を超えて送信された料金は破棄されます。

利用できない滞在日数は、 0

taxes[] 30 float 滞在日数分の税金のコンポーネント。

インデックス n の値が n+1 に対応している。 滞在日数。

fees[] 30 float 滞在日数料金の料金コンポーネント。

インデックス n の値は、n+1 の滞在日数に対応します。

料金とLOS に基づく税金

次の例は、1 つのチェックイン日に最低宿泊日数を 2 泊に設定し、別のチェックイン日に空室を設定しない方法を示しています。endDate を指定せずに 2023 年 9 月 1 日から startDate を設定した場合、次のようになります。 1 つの日付に対してのみ料金を指定し、 endDate

2 に設定された occupancyPrices 配列を使用すると、宿泊人数ごとに異なる料金を設定できます。したがって、2023 年 9 月 4 日の上限には空室がありません。 (ratesに利用可能)

表示されている taxes 配列は、割合の 10% として計算されます。

表示されている fees 配列は、1 滞在あたり 50 ドルの清掃料金を適用しています。

チェックイン日全体が空室の場合(2023 年 9 月 3 日)は、日付を明示的に送信し、ratestaxesproductPrices を省略して、リクエストされた日付の空室がないことを示します。

{
  "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}