Réservations de bout en bout 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 de manière programmatique l'état des marchands individuels pour diverses intégrations ou l'inventaire des annonces Local Services.

Cas d'utilisation de l'API Merchant Status:

  • Améliorez les outils de gestion des relations client existants pour montrer à vos clients comment leur inventaire s'affiche sur Google.
  • Créez un tableau de bord pour suivre l'état de l'inventaire et l'état de 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 ?

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 mise en correspondance des marchands: inclut des informations sur la fiche d'établissement mise en correspondance
  • (Pour les annonces Google Local Services uniquement) Fournisseur de services marchands correspondant : inclut le numéro client et les catégories de services.
  • URL permettant de voir comment le marchand s'affiche sur Google.

Consulter 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 (cliquez ici pour 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 façon groupée

Vous pouvez récupérer l'état de tous les marchands ou d'un groupe de marchands répondant à certaines conditions d'inventaire/de mise en correspondance à l'aide de inventory.partners.merchants.status.list. Par exemple, vous pouvez effectuer cet appel pour obtenir tous les marchands sans correspondance disposant d'un inventaire de réservations à venir valide:

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 MerchantStatus qui répondent aux 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) 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, 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 quelques heures) via de nouvelles requêtes. Le Centre d'actions peut limiter vos requêtes si le nombre de requêtes par seconde est jugé trop élevé.