エンドツーエンドの予約機能で API 経由で販売者のステータスをクエリする

ユースケース

Google Maps Booking API には、さまざまな統合やローカル サービス広告広告枠の個々の販売者のステータスをプログラムで取得するために使用できる 2 つのメソッドが用意されています。

Merchant Status API のユースケース:

  • 既存の顧客関係管理ツールを強化して、Google に在庫が表示される仕組みをお客様に示します。
  • 販売者の在庫状況と一致ステータスをトラッキングするダッシュボードを作成します。
  • 販売者の一致ステータスと予約可能ステータスをプログラムで取得し、誤った情報を修正してデータ品質を改善します。

販売者のステータスにはどのような情報が含まれますか?

MerchantStatus には次の情報が含まれます。

  • 販売者の在庫状況: 予約販売または待機リストの販売者の両方に適用されます。
  • 販売者のマッチング ステータス: 一致したビジネス リスティングの詳細が含まれます
  • Google ローカル サービス広告のみ)一致した販売者サービス プロバイダ: お客様 ID とサービス カテゴリが含まれます。
  • 販売者が Google にどのように表示されているかを確認できる URL。

単一販売者のステータスを検索する

inventory.partners.merchants.getStatus を使用して、単一の販売者のステータスを取得できます。

GET https://mapsbooking.googleapis.com/v1alpha/inventory/partners/{partnerId}/merchants/{merchantId}/status

Python コードのサンプルを以下に示します(他の言語の例については、こちらをご覧ください)。

from google.auth.transport.requests import AuthorizedSession
from google.oauth2 import service_account

credentials = service_account.Credentials.from_service_account_file(
    './your_key.json')
scoped_credentials = credentials.with_scopes(
    ['https://www.googleapis.com/auth/mapsbooking'])
authed_session = AuthorizedSession(scoped_credentials)

response = authed_session.get('https://partnerdev-mapsbooking.googleapis.com' +
    '/v1alpha/inventory/partners/123456789/merchants/001/status')

MerchantStatus レスポンスの例は次のようになります。

  {
    "name": "partners/123456789/merchants/001/status",
    "merchantName": "Foo Bar Restaurant",
    "inputGeoInfo": {
      "unstructured_address": "123 Foo Bar Street, Mountain View"
    },
    "processingStatus": "COMPLETED",
    "bookingStatus": {
      "hasValidFutureInventory": true
    },
    "waitlistStatus": {
      "hasValidWaitlistService": true
    }
    "geoMatch": {
      "name": "Foo Bar Restaurant",
      "formattedAddress": "123 Foo Bar St, Mountain View, CA 94043",
      "placeId": "ChIAAAAAAAAABBBBBBBB"
    },
    "directUrls": [
      {
        "type": "BOOKING",
        "url": "https://reserve-partnerdev.sandbox.google.com/maps/reserve/v/dine/m/Nwaaaaa"
      },
      {
        "type": "WAITLIST",
        "url": "https://reserve-partnerdev.sandbox.google.com/maps/reserve/v/wait/c/iDbbbbb"
      }
    ]
  }

販売者のステータスを一括取得する

inventory.partners.merchants.status.list を使用して、すべての販売者、または特定の在庫/一致条件を満たす販売者のグループのステータスを取得できます。たとえば、次の呼び出しを行うと、有効な将来の日付の予約在庫を持つ一致しないすべての販売者を取得できます。

GET https://mapsbooking.googleapis.com/v1alpha/inventory/partners/{partnerId}/merchants/status?pageSize=50&bookingInventoryStatusRestrict=HAS_VALID_FUTURE_INVENTORY&geoMatchRestrict=GEO_UNMATCHED

レスポンスの例は次のようになります。

  {
    "merchantStatuses": [
      {
        "name": "partners/123456789/merchants/002/status",
        "merchantName": "Bar Foo Restaurant",
        "inputGeoInfo": {
          "unstructured_address": "234 Bar Foo Street, Mountain View"
        },
        "processingStatus": "COMPLETED",
        "bookingStatus": {
          "hasValidFutureInventory": true
        },
        "waitlistStatus": {},
      },
      ...
      {
        "name": "partners/123456789/merchants/080/status",
        "merchantName": "Baz Restaurant",
        "inputGeoInfo": {
          "unstructured_address": "345 Baz Street, Mountain View"
        },
        "processingStatus": "COMPLETED",
        "bookingStatus": {
          "hasValidFutureInventory": true
        },
        "waitlistStatus": {
          "hasValidWaitlistService": true
        },
      },
    ],
    "nextPageToken": "AAABBBB"
  }

このレスポンスには、フィルタ条件を満たす 50 個の MerchantStatusmerchant_id で並べ替えられて含まれます。レスポンスには、次のページをクエリするためのページトークンも含まれます(最後のページでない場合に限ります)。

なお、フィルタ条件はすべてのページで統一する必要があります。

ベスト プラクティス

販売者のステータスはほとんどの場合頻繁に変更されないため、取得した結果をキャッシュに保存し、定期的に(数時間ごとに)新しいクエリで取得することをおすすめします。1 秒あたりのリクエスト数が過度に多いと判断された場合、Actions Center によってクエリがスロットリングされることがあります。