パートナー サーバー

料金と空室情報を統合するには、パートナーは Partner API を実装する必要があります。このインターフェースは REST に基づいており、Google は HTTP 経由でライブ通話を送信できます。個々の API メソッドの詳細については、リファレンス セクションをご覧ください。横断的な懸念事項については、後で説明します。

リクエストとレスポンスの形式

最初は JSON 形式のみがサポートされます。リクエストまたはレスポンスの形式を追加する必要がある場合は、transport-help@google.com の Travel Transport チームにお問い合わせのうえ、ユースケースについてご相談ください。

リクエストは HTTP メソッド POST を使用して送信され、リクエスト メッセージは POST 本文に含まれます。

構造を明確にするため、API インターフェースのドキュメントはプロトコル バッファ メッセージ定義として提供されます。プロトコル バッファ メッセージ定義から JSON オブジェクトへの変換は、標準の JSON マッピングによって定義されます。このマッピングでは、オプションを使用して、デフォルト値を持つフィールドを出力し、lowerCamelCase 名ではなく proto フィールド名を使用します。

認証

Google は、HTTP ダイジェスト認証とクライアント証明書認証をサポートしています。Partner API のすべての HTTP 呼び出しでは、HTTP ダイジェスト認証(ユーザー名とパスワードを使用)またはクライアント証明書認証のいずれかを使用します。パートナーは、Google にユーザー名とパスワード(パートナー構成を参照)または SSL クライアント証明書を提供する必要があります。

ステータス コードとエラー処理

一般に、HTTP レスポンスで返されるステータス コードは次のとおりです。

HTTP Code HTTP の説明 メモ
2xx OK エラーではありません。成功したときに返されます。レスポンスの本文には、エラー レスポンスではなく、成功した結果(TripOptionsResult など)が含まれることが想定されます。
400 不正なリクエスト 受信したリクエストが無効でした。メソッド固有のエラー レスポンスを使用して、レスポンス本文に追加のエラーの詳細を返す必要があります。HTTP 400 は、通常、Google が技術的なエラー(リクエスト内のフィールド名の誤りなど)を犯した場合にのみ使用されます。
403 禁止動作 アクセスが拒否されたか、禁止されています(呼び出し元は既知であり、拒否されています)。このレスポンスは、リソースの枯渇を原因とする拒否には使用できません(このようなエラーには Too Many Requests を使用します)。呼び出し元が特定できない場合は、Forbidden を使用しないでください(このようなエラーには代わりに Unauthorized を使用します)。
404 見つかりませんでした リクエストされたリソースが見つかりませんでした。メソッド固有のエラー レスポンスは、レスポンス本文に追加のエラーの詳細を返すために使用する必要があります。
429 リクエストが多すぎます ユーザーごとの割り当てなど、一部のリソースが枯渇しています。
500 内部サーバー エラー 内部エラー。これは、基盤となるシステムで予期される一部の不変条件が満たされていないことを意味します。このエラーコードは深刻なエラーのために予約されており、パートナーの API サーバー実装のバグを示します。
503 サービスを利用できません サービスを利用できません。これは、バックオフで再試行することで解決できる可能性が高い一時的な状態です。
504 ゲートウェイのタイムアウト オペレーションが完了する前に期限が切れました。システムの状態を変更するオペレーションの場合、オペレーションが正常に終了しても、このエラーが返されることがあります。たとえば、サーバーからの正常なレスポンスが期限切れになるほど遅延する場合もあります。

すべての前提条件、無効な引数、または見つからないエラーについては、次の点に注意してください。

  • API で定義されているメソッド固有のレスポンスまたはエラー メッセージを使用する必要があります。
  • メソッド固有のコードで指定されている正しい HTTP コードを使用する必要があります(TripOptionsErrorType など)。

これにより、これらのタイプのエラーに関する詳細情報を提供できます。この情報は、以下の目的で使用されます。

  • エラーを再試行できるかどうかを判断する
    • SEGMENT_KEY_NOT_FOUND は再試行できません。
  • 古い情報を修正する
    • Unavailable.Reason.CANCELED は、乗車を削除する必要があることを示します(これは成功レスポンスの一部です)。
    • Unavailable.Reason.TEMPORARILY_UNAVAILABLE とエラーコード SEGMENT_KEY_NOT_FOUNDSUBOPTIMAL_ITINERARYBOOKING_WINDOW_NOT_SUPPORTEDTICKETING_PROHIBITED は、以前にキャッシュから受け取った価格をすべて削除します。
  • ユーザーに関連性の高いガイダンスを提供する

TripOptionsError で提供されているメソッド固有のエラーの現在のリストは、出発点となります。追加のエラータイプが必要な場合は、Google Travel Transport チームにお問い合わせください。

QPS(1 秒あたりのクエリ数)

Google から送信される QPS のレベルは、パートナーの在庫と、キャッシュに保存されたデータを閲覧するユーザーの数や、予約のためにパートナーのウェブサイトにクリック スルーするユーザーの数によって変動する可能性があります。

レイテンシ

リクエストは 10 秒後にタイムアウトします。ベータ版パートナー統合に関する追加のレイテンシ ガイドラインはありません。ただし、レイテンシ SLO はパートナー データ品質ガイドラインでさらに定義されます。

通貨、税金、手数料

Google に送信する価格はすべて、すべての税と手数料を含み、サポートされている通貨で指定する必要があります。

通貨

価格の通貨は currency_code フィールドで指定します。このフィールドは、有効な ISO 4217 通貨コードである必要があります。

例: 10,25 USD:

{
  "price": {
    "currency_code": "USD",
    "units": 10,
    "nanos": 250000000
  }
}

税金と手数料

提示する価格は、ユーザーが支払う最終的な合計価格である必要があります。これには、すべての税金(VAT など)と追加料金(予約手数料や支払いカード手数料など)が含まれます。line_items フィールドを繰り返して使用すると、運賃の内訳(省略可)を追加できます。Google は、合計料金とオプションの運賃の内訳をユーザーに表示します。