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

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

注: フィルタリング条件はすべてのページで同じにする必要があります。

ベスト プラクティス

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