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

Casos prácticos

La API de Google Maps Booking proporciona dos métodos que se pueden usar para recuperar de forma programática el estado de los comercios individuales para varias integraciones del Centro de acciones o el inventario de los 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 mostrarles a tus clientes cómo se muestra su inventario en la plataforma de Actions Center.
  • Crea un panel para hacer un seguimiento del estado del inventario y del estado de la coincidencia de tus comercios.
  • Recupera de forma programática los estados de coincidencia y reserva de tus comercios, y corrige cualquier información incorrecta para mejorar la calidad de los datos.

Qué contiene el estado del comercio

El objeto MerchantStatus contiene la siguiente información:

  • Estado del inventario del comercio: Se aplica a los comercios que aceptan reservaciones o que tienen listas de espera.
  • Estado de coincidencia del comercio: Incluye detalles sobre la ficha de la empresa que coincide.
  • Solo para Anuncios de Servicios Locales de Google) Proveedor de servicios comerciales coincidente: Incluye el ID de cliente y las categorías de servicio.
  • Son las URLs para demostrar cómo se muestra el comercio a través de Reserva con Google.

Cómo consultar el estado de un solo comercio

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

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

Aquí tienes un ejemplo de código en 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')

Un ejemplo de respuesta de MerchantStatus se ve de la siguiente manera:

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

Recupera estados de comercios de forma masiva

Puedes recuperar los estados de todos los comercios o de un grupo de comercios que satisfagan ciertas condiciones de inventario o de coincidencia con inventory.partners.merchants.status.list. Por ejemplo, puedes hacer esta llamada para obtener todos los comercios no coincidentes con inventario de reservas con fechas futuras válidas:

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

Una respuesta de ejemplo 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 objetos MerchantStatus que satisfagan las condiciones de filtrado y estén ordenados 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, se recomienda almacenar en caché los resultados recuperados y recuperarlos periódicamente (p.ej., cada pocas horas) a través de nuevas búsquedas. El Centro de acciones puede limitar tus consultas si la cantidad de solicitudes por segundo se considera demasiado alta.