Cómo consultar el estado del comercio a través de la API

Casos de uso

La API de Google Maps Booking proporciona dos métodos que se pueden usar para recuperar de manera programática el estado de los comercios individuales para varias integraciones del Centro de Acciones o para el inventario de Anuncios de Servicios Locales.

Casos de uso de la API de Merchant Status:

  • Mejora las herramientas existentes de administración de relaciones con clientes para demostrar a tus clientes cómo se muestra su inventario en la plataforma del Centro de acciones.
  • Crea un panel para hacer un seguimiento del estado del inventario y del estado de coincidencia de tus comercios.
  • Recupera de forma programática los estados de coincidencia y reserva de tus comercios y corrige la información incorrecta para mejorar la calidad de los datos.

¿Qué contiene el estado de comerciante?

MerchantStatus contiene la siguiente información:

  • Estado del inventario del comercio: Se aplica a los comercios que reservan o que están en lista de espera.
  • Estado de coincidencia del comercio: Incluye los detalles de la ficha de la empresa coincidente.
  • Solo para los Anuncios de Servicios Locales de Google) Proveedor de servicios de comercio coincidente: Incluye el ID de cliente y las categorías de servicio.
  • Las URLs para demostrar cómo se muestra el comercio a través de Reserva con Google.

Cómo buscar el estado de un solo comercio

Puedes consultar el estado de un solo comercio con inventory.partners.merchants.getStatus:

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

A continuación, se muestra una muestra de código de Python (consulta ejemplos en más lenguajes aquí):

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

Esta es una respuesta de ejemplo de 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"
      }
    ]
  }

Cómo recuperar los estados de los comercios de forma masiva

Puedes recuperar los estados de todos los comercios o de un grupo de comercios que cumplen con determinadas condiciones de inventario o de coincidencia mediante inventory.partners.merchants.status.list. Por ejemplo, puedes realizar esta llamada para obtener todos los comercios que no coincidan y que tengan un inventario de reservas válido con fecha futura:

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

Una respuesta de muestra se vería de la siguiente manera:

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

Esta respuesta contendrá 50 MerchantStatus que cumplen con las condiciones de filtrado y ordenadas por merchant_id. La respuesta también contiene un token de página (si no es la última página) para consultar la página siguiente.

Ten en cuenta que las condiciones de filtrado deben ser coherentes en todas las páginas.

Prácticas recomendadas

Dado que los estados de los comercios no cambian con frecuencia en la mayoría de los casos, te recomendamos que almacenes en caché los resultados recuperados y que los recuperes periódicamente (p.ej., cada pocas horas) a través de búsquedas nuevas. El Centro de acciones puede limitar tus consultas si la cantidad de solicitudes por segundo se considera excesivamente alta.