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 de varias integraciones de Actions Center o Anuncios de Servicios Locales en el inventario de Google.

Casos de uso de Merchant Status API:

  • Mejore las herramientas existentes de administración de relaciones con los clientes para demostrar su a los clientes cómo se muestra su inventario en la plataforma de Actions Center.
  • Crear un panel para hacer un seguimiento del estado del inventario y de coincidencia de tus comercios.
  • Recupera de manera programática los estados coincidentes y reservables de tus y corregir la información incorrecta para mejorar la calidad de los datos.

¿Qué contiene el estado del comercio?

El MerchantStatus contiene la siguiente información:

  • Estado del inventario del comercio: Se aplica a los comercios de reservas o listas de espera.
  • Estado de coincidencia del comercio: Incluye detalles de la ficha de la empresa coincidente
  • Para Anuncios de Servicios Locales de Google) Coincide con el proveedor de servicios del comercio: incluye el ID de cliente y las categorías de servicio.
  • Las URLs para demostrar cómo aparece el comercio a través de Reserva con Google.

Cómo buscar el estado de un solo comercio

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

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

Aquí hay 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')

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

Recuperar los estados de los comercios de forma masiva

Puedes recuperar los estados de todos los comercios o de un grupo de comercios el cumplimiento de ciertas condiciones de inventario/coincidencia, inventory.partners.merchants.status.list. Por ejemplo, puedes hacer esta llamada para obtener todos los comercios no coincidentes con reservas válidas a fecha futura inventario:

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 cumpla con las condiciones de filtrado y ordenado por merchant_id La respuesta también contiene un token de página (si no en la última) para consultar la página siguiente.

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

Prácticas recomendadas

Dado que los estados de los comercios no cambian con frecuencia en la mayoría de los casos, es se recomienda almacenar en caché los resultados recuperados y periódicamente (p.ej., cada pocas horas) los recupera a través de consultas nuevas. Es posible que el Centro de acciones limite tu si la cantidad de solicitudes por segundo se considera demasiado alta.