API を介した販売者のステータスのクエリ

ユースケース

Google Maps Booking API には 2 つの方法が用意されています。これらを使用して、さまざまなアクション センターの統合やローカル サービス広告の在庫について、個々の販売者のステータスをプログラムで取得できます。

Merchant Status API のユースケース:

  • 既存の顧客関係管理ツールを強化して、アクション センター プラットフォームで在庫がどのように表示されるかを顧客に示します。
  • 販売者の在庫ステータスと照合ステータスをトラッキングするダッシュボードを構築します。
  • プログラムでビジネス オーナーの照合ステータスと予約可能ステータスを取得し、誤った情報を修正してデータ品質を改善します。

販売者のステータスに含まれる情報

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 秒あたりのリクエスト数が過度に多いと判断された場合、アクション センターはクエリをスロットリングすることがあります。