Reservas de extremo a extremo: consulta 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 o 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 los clientes para demostrarles a tus clientes cómo se muestra su inventario en Google.
  • 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 coincidentes y reservables de tus comercios, y corrige la información incorrecta para mejorar la calidad de los datos.

Qué contiene el estado del comercio

MerchantStatus contiene la siguiente información:

  • Estado del inventario del comercio: Se aplica a los comercios con reservaciones o listas de espera.
  • Estado de coincidencia del comercio: Incluye detalles sobre la ficha de la empresa coincidente.
  • Solo para anuncios de Servicios Locales de Google: Proveedor de servicios del comercio coincidente: Incluye el ID de cliente y las categorías de servicio.
  • Las URLs para demostrar cómo se muestra el comercio en Google

Cómo buscar 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

Este es un ejemplo 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')

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

Cómo recuperar estados de comercios de forma masiva

Puedes recuperar los estados de todos los comercios o de un grupo de comercios que cumplan con ciertas condiciones de coincidencia o de inventario con inventory.partners.merchants.status.list. Por ejemplo, puedes realizar esta llamada para obtener todos los comercios que no coinciden con 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 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 MerchantStatus que satisfagan las condiciones de filtrado y ordenados por merchant_id. La respuesta también contiene un token de página (si no es la última página) para consultar la siguiente página.

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, se recomienda almacenar en caché los resultados recuperados y recuperarlos periódicamente (p.ej., cada pocas horas) mediante consultas nuevas. Es posible que el Centro de Acciones limite tus consultas si la cantidad de solicitudes por segundo es demasiado alta.