Interroger l'état du marchand via l'API

Cas d'utilisation

L'API Google Maps Booking fournit deux méthodes qui peuvent être utilisées pour récupérer par programmation l'état des différents marchands pour diverses intégrations du Centre d'actions ou l'inventaire des annonces pour les services de proximité.

Cas d'utilisation de l'API Merchant Status :

  • Améliorez les outils de gestion de la relation client existants pour montrer à vos clients comment leur inventaire est présenté sur la plate-forme Actions Center.
  • Créez un tableau de bord pour suivre l'état de l'inventaire et l'état des correspondances de vos marchands.
  • Récupérez par programmation les états de correspondance et de disponibilité de vos marchands, et corrigez toute information incorrecte pour améliorer la qualité des données.

Que contient l'état du marchand ?

MerchantStatus contient les informations suivantes :

  • État de l'inventaire du marchand : s'applique aux marchands proposant des réservations et/ou des listes d'attente.
  • État de la correspondance du marchand : inclut des informations sur la fiche d'établissement correspondante
  • Pour les annonces Google Local Services uniquement) Fournisseur de services marchand associé : inclut le numéro client et les catégories de services.
  • URL permettant de montrer comment le marchand est présenté via Réserver avec Google.

Rechercher l'état d'un marchand

Vous pouvez obtenir l'état d'un seul marchand à l'aide de inventory.partners.merchants.getStatus :

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

Voici un exemple de code Python (pour voir des exemples dans d'autres langages, cliquez ici) :

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')

Voici un exemple de réponse 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"
      }
    ]
  }

Récupérer l'état de plusieurs marchands

Vous pouvez récupérer l'état de tous les marchands ou d'un groupe de marchands répondant à certaines conditions d'inventaire/de correspondance à l'aide de inventory.partners.merchants.status.list. Par exemple, vous pouvez effectuer cet appel pour obtenir tous les marchands sans correspondance avec un inventaire de réservations valides à une date ultérieure :

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

Voici un exemple de réponse :

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

Cette réponse contiendra 50 MerchantStatus qui répondent aux conditions de filtrage et qui sont triés par merchant_id. La réponse contient également un jeton de page (s'il ne s'agit pas de la dernière page) pour interroger la page suivante.

Remarque : Les conditions de filtrage doivent être cohérentes sur toutes les pages.

Bonnes pratiques

Étant donné que l'état des marchands ne change pas souvent, il est recommandé de mettre en cache les résultats récupérés et de les récupérer périodiquement (par exemple, toutes les quelques heures) à l'aide de nouvelles requêtes. Le Centre d'actions peut limiter vos requêtes si le nombre de requêtes par seconde est jugé excessivement élevé.