リアルタイム API 更新

システムの在庫は、新しい予約、 キャンセル、販売者によるスケジュールの変更などが可能です。リアルタイム更新 API は、在庫のこうした変更を Google に通知するメカニズムです。 可用性。リアルタイムの API 更新を使用して、Google に 既存の予約に加えられた変更

すべての販売者が順番待ちリスト機能を使用している場合、リアルタイムの更新は不要です。

API リアルタイム更新とフィード

API のリアルタイム更新を使用して、システムに対する段階的な変更を Google に通知します。 予約状況をリアルタイムで把握することができます。その他の 完全な在庫状況フィードを毎日送信して Google は可用性に関する最新かつ正確な知識を 持っています 自動的に検出されます。完全なフィードは最新のコンバージョンと 在庫状況の把握に役立ちます

API の更新を使用すると、変更されるすべての情報が フィードで提供される情報(販売者やサービスに関する情報など)は、 通常、空き情報を更新する目的にのみ使用されます。

必須のリアルタイム更新 API

リアルタイム更新(RTU)API
BookingNotification 必須 いつでも BookingNotification RTU を送信する 予約の変更(変更やキャンセルなど)
空き情報置換 RTU 条件付き必須[1] いずれかを送信 一括置換または 単一交換の RTU を使用して、在庫状況の更新を送信します。 変更が反映されて反映されるまでに数分かかることがあります。
販売者 RTU 省略可 販売者に変更を加える場合は、販売者の RTU を送信します リアルタイムで情報をやり取りできます変更が反映されるまでに数時間かかることがあります 振り返ります。
サービス RTU 省略可 サービスに変更を加える場合は、サービス RTU を送信します リアルタイムで情報をやり取りできます一般的なユースケースとして、サービス料金が 大幅に変動するため、サービス RTU の実装は 価格の不一致による注文の失敗を回避することが推奨されます。変更は、 反映されるまでに数時間かかります。
<ph type="x-smartling-placeholder">

Availability Replace API RTU

可用性の置換 API を使用して、可用性の更新を 次のようなユースケースがあります。

  • ユーザーがシステムで予約を行ったため、予約枠がない 提供されなくなりました
  • 販売者がシステムで空き情報を変更した。
  • ユーザーが Google で予約を行ったため、予約枠が「なし」になっている 提供されなくなりました
  • Google を通じて行われた予約がお客様側でキャンセルされた場合: 直接渡されます。予約と住所を更新する必要が 元のスロットが再度使用可能になったためです。
  • 予約サーバーの BatchAvailabilityLookup 呼び出しが返されると、 除外された広告枠が表示されます

詳細については、次のリソースをご覧ください。

予約通知 API の RTU

Booking Notification API は、Google に次の通知を送信します。 簡単に更新できますキャンセルに関する最新情報を送信する際は リクエストに含まれる重要な情報のみを updateMask クエリ パラメータ。以下に例を示します。

Request:
PATCH https://mapsbooking.googleapis.com/v1alpha/notification/partners/<PARTNER_ID>/bookings/<BOOKING_ID>?updateMask=status

Body:
{"name":"partners/<PARTNER_ID>/bookings/<BOOKING_ID>", "status":"CANCELED"}

API へのアクセス

サービス アカウントを作成する

Google API Console の [認証情報] タブを使用して、以下を行います。 サービス アカウントを作成します。JSON 形式の秘密鍵を安全な場所に保管する できます。アカウントを作成するときに、ロールを 「オーナー」

Maps Booking API を認証する

サービス アカウントを作成したら、次の API を認証します。

  • Google Maps Booking API
  • Google Maps Booking API(Dev)

詳細な手順については、 Maps Booking API による認証のチュートリアル

RESTful 呼び出しを使用するかクライアント ライブラリをダウンロードする

Maps Booking API に対して直接 RESTful 呼び出しを行うことをおすすめします 使用できます。詳しくは、 REST API のドキュメント

クライアント ライブラリを使用して API に接続することもできます。

言語 ダウンロード リンク
Java Java Client ライブラリ。詳しくは、 Java クライアントの手順

追加 サポート ライブラリがダウンロード可能で、 Google API の呼び出しの認可やその他の側面を処理します。必要に応じて こちらを こちらのサンプルをご覧ください。

ディスカバリ ドキュメントを取得する

Ruby などの一部のクライアント ライブラリでは、 メソッドと説明が記載された API のディスカバリ ドキュメント あります。

次のコマンドを使用して、ディスカバリ ドキュメントを取得します。

curl -s -o 'mapsbooking_rest' 'https://mapsbooking.googleapis.com/$discovery/rest?version=v1alpha'

Ruby から API にアクセスする方法については、次のリンクをご覧ください。 Ruby API クライアントRuby 認証ライブラリ

API に対して承認された呼び出しを行う

API を呼び出す際は、このモジュールの サービスを承認するための承認済み API 呼び出しの準備 秘密鍵と次の OAuth スコープを持つ必要があります。 https://www.googleapis.com/auth/mapsbooking

API 割り当て

API の更新の割り当ては、60 秒ごとに 1,500 件のリクエスト、つまり 25 件のリクエストです 平均で 1 秒あたり 30 億ドルに上ります割り当てを超過した場合(パートナー ポータルで正しい Google Cloud プロジェクト番号を追加していない場合に発生することがあります)、Google は 次のエラー メッセージが表示されます。

{
  "error": {
    "code": 429,
    "message": "Insufficient tokens for quota ...",
    "status": "RESOURCE_EXHAUSTED",
    "details": [...]
  }
}

この問題に対処するには、指数関数的に長い間隔で呼び出しを再試行します。 確認します。常時割り当てを使い切った場合、 ReplaceServiceAvailability、切り替え BatchReplaceServiceAvailabily: API の数を減らす できます。この方法では、1 つの API で複数のサービスを更新できます あります。

サンドボックス エンドポイントと本稼働エンドポイント

サンドボックスと本番環境の両方を呼び出すには、 できます。Google Cloud プロジェクトで両方の API が有効になっていることを確認します。 どちらの API も同じスコープを使用しますが、エンドポイントが異なります。

本番環境エンドポイント: https://mapsbooking.googleapis.com/

サンドボックス エンドポイント: https://partnerdev-mapsbooking.googleapis.com/

Java でのエンドポイントの切り替え方法の例を次に示します。

    // This block of code is for OAuth and is the same for prod and sandbox.
    GoogleCredential
      .fromStream(new FileInputStream(...))
      .createScoped(Collections.singleton("https://www.googleapis.com/auth/mapsbooking"))

    // This block of code sets the endpoint. This is what you'd change to connect to the sandbox.
    new GoogleMapsBookingAPI.Builder(...)
      .setApplicationName(...)
      .setRootUrl("https://partnerdev-mapsbooking.googleapis.com/") // you add this to change the endpoint to use partnerdev.
      .build()