Interroger l'état du marchand via l'API

Cas d'utilisation

L'API Google Maps Booking propose deux méthodes permettant de récupérer de manière programmatique l'état de marchands individuels pour diverses intégrations au centre d'actions ou l'inventaire d'annonces Local Services.

Cas d'utilisation de l'API Merchant Status:

  • Améliorez les outils existants de gestion de la relation client pour montrer à vos clients comment leur inventaire est mis en avant sur la plate-forme Actions Center.
  • Créez un tableau de bord pour suivre l'état de l'inventaire et de la mise en correspondance de vos marchands.
  • Récupérez de manière programmatique les états de correspondance et de réservation de vos marchands, et corrigez les informations incorrectes pour améliorer la qualité des données.

Que contient l'état du marchand ?

Le champ MerchantStatus contient les informations suivantes:

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

Rechercher l'état d'un seul marchand

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

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

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

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 les états des marchands de manière groupée

Vous pouvez récupérer l'état de tous les marchands ou d'un groupe de marchands qui remplissent certaines conditions d'inventaire/de correspondance à l'aide de la méthode inventory.partners.merchants.status.list. Par exemple, vous pouvez effectuer cet appel pour obtenir tous les marchands sans correspondance avec un inventaire de réservation valide à 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 contient 50 éléments MerchantStatus qui remplissent les conditions de filtrage et 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) permettant d'interroger la page suivante.

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

Bonnes pratiques

L'état des marchands ne change pas souvent, c'est pourquoi nous vous recommandons de mettre en cache les résultats récupérés et de les récupérer régulièrement (par exemple, toutes les deux ou trois heures) via de nouvelles requêtes. Le Centre d'actions peut limiter vos requêtes si le nombre de requêtes par seconde estime qu'il est excessivement élevé.