El inventario en tu sistema varía a lo largo del día debido a la creación de nuevas reservas, las cancelaciones y los cambios en los horarios de tus comercios. La API de actualización en tiempo real es un mecanismo que permite notificarle a Google sobre estos cambios en la disponibilidad del inventario. También puedes utilizar la API de actualizaciones en tiempo real para notificarle a Google sobre los cambios realizados en las reservas existentes.
Feeds y actualizaciones de la API en tiempo real
Las actualizaciones de la API en tiempo real se utilizan para notificarle a Google sobre los cambios incrementales en la disponibilidad del inventario y las reservas a medida que ocurren en tiempo real. Además de las actualizaciones de la API en tiempo real, debes enviar feeds de disponibilidad completos todos los días para asegurarte de que Google tenga la información sobre disponibilidad más precisa y actualizada de tu sistema. Los feeds completos actúan como un resumen del estado actual de la disponibilidad del inventario en tu sistema.
Aunque las actualizaciones de la API se pueden utilizar para poner al día cualquier información proporcionada en los feeds, como aquella sobre los comercios y servicios, solo suelen usarse para actualizar la información de disponibilidad.
API de actualización en tiempo real requeridas
API de actualización en tiempo real (RTU) | ||
---|---|---|
BookingNotification | Obligatorio | Envía RTU de BookingNotification cada vez que se realice un cambio en la reserva (p.ej., modificaciones o cancelaciones). |
RTU de Availability Replace | Condicionalmente obligatorio[1] | Utiliza RTU de reemplazo por lotes o reemplazo único para enviar actualizaciones a la disponibilidad del inventario. Los cambios pueden tardar varios minutos en propagarse y reflejarse. |
RTU de Merchant | Opcional | Envía las RTU del comercio si deseas realizar cambios en la información del comercio en tiempo real. Los cambios pueden tardar varias horas en propagarse y reflejarse. |
RTU de Service | Opcional | Envía las RTU del servicio si deseas realizar cambios en la información del servicio en tiempo real. Un caso de uso común es que, si los precios del servicio fluctúan drásticamente durante el día, se recomienda implementar las RTU del servicio para evitar fallas en los pedidos debido a discrepancias en los precios. Los cambios pueden tardar varias horas en propagarse y reflejarse. |
RTU de la API de Availability Replace
Usa la API de Availability Replace para proporcionar actualizaciones de disponibilidad en los siguientes casos de uso:
- Un usuario hace una reserva en tu sistema, por lo que el horario correspondiente deja de estar disponible.
- Un comercio cambia su disponibilidad en tu sistema.
- Un usuario hace una reserva a través de Google, por lo que el horario correspondiente deja de estar disponible.
- Un usuario hace una reserva a través de Google y alguien más la cancela, por ejemplo, el comercio directamente. Debes actualizar la reserva y la disponibilidad, ya que el horario original está disponible nuevamente.
- Una llamada
BatchAvailabilityLookup
al servidor de reservas muestra un inventario que no coincide con el real.
Para obtener más información, consulta los siguientes recursos:
- Instructivo: Cómo estructurar las actualizaciones en tiempo real
- Ejemplo de cliente Java para actualizaciones en tiempo real mediante llamadas RESTful
- Página de referencia de la API de actualización del inventario
RTU de la API de Booking Notification
Las APIs de Booking Notification le informan a Google sobre las actualizaciones de las reservas existentes. Cuando envíes una actualización sobre cancelaciones,
envía solo la información esencial de la solicitud con el
parámetro de búsqueda updateMask
. A continuación, se muestra un ejemplo:
Request: PATCH https://mapsbooking.googleapis.com/v1alpha/notification/partners/<PARTNER_ID>/bookings/<BOOKING_ID>?updateMask=status Body: {"name":"partners/<PARTNER_ID>/bookings/<BOOKING_ID>", "status":"CANCELED"}
Cómo acceder a la API
Crea una cuenta de servicio
Utiliza la pestaña Credentials en la Consola de API de Google para crear una cuenta de servicio. Almacena la clave privada en formato JSON en un lugar seguro. Cuando creas la cuenta, tienes la opción de establecer el rol en "Propietario".
Autentica las API de Maps Booking
Tras crear una cuenta de servicio, autentica las siguientes API:
- API de Google Maps Booking
- API de Google Maps Booking (desarrolladores)
Para obtener una guía paso a paso al respecto, consulta el instructivo Cómo realizar autenticaciones con la API de Maps Booking.
Utiliza llamadas RESTful o descarga la biblioteca cliente
Te recomendamos que realices llamadas RESTful directamente a la API de Maps Booking con cargas útiles JSON. Para obtener más información, consulta la documentación de la API de REST.
También puedes utilizar bibliotecas cliente para conectarte a la API.
Lenguaje | Vínculo de descarga |
---|---|
Java | Biblioteca cliente de Java. Para obtener más información, consulta las instrucciones del cliente de Java. |
Hay bibliotecas de compatibilidad adicionales disponibles para su descarga que controlan la autorización y otros aspectos de las llamadas a las APIs de Google. Si es necesario, consulta estos ejemplos.
Obtén el documento de descubrimiento
Para algunas bibliotecas cliente, como Ruby, es necesario recuperar el documento de descubrimiento de la API, donde se describen sus métodos y parámetros.
Usa el siguiente comando para recuperar el documento de Discovery:
curl -s -o 'mapsbooking_rest' 'https://mapsbooking.googleapis.com/$discovery/rest?version=v1alpha'
Para obtener más información sobre cómo acceder a la API desde Ruby, sigue estos vínculos: Cliente de API de Ruby y Biblioteca de Auth de Ruby.
Realiza llamadas autorizadas a la API
Cuando realices llamadas a la API, consulta
Cómo prepararse para realizar una llamada a la API autorizada para aprobar tu cuenta de servicio
con tu clave privada y el siguiente alcance de OAuth:
https://www.googleapis.com/auth/mapsbooking
.
Cuotas de la API
Las actualizaciones de la API tienen una cuota de 1,500 solicitudes cada 60 segundos, o bien de un promedio de 25 solicitudes por segundo. Cuando se excede una cuota (lo que puede ocurrir cuando no agregas el número de proyecto de Google Cloud correcto en tu Portal para socios), Google responde con el siguiente mensaje de error:
{ "error": { "code": 429, "message": "Insufficient tokens for quota ...", "status": "RESOURCE_EXHAUSTED", "details": [...] } }
Para controlar esta situación, intenta realizar la llamada nuevamente en intervalos cada vez más largos
hasta que se complete correctamente. Si sueles agotar la cuota con
ReplaceServiceAvailability
, cambia a
BatchReplaceServiceAvailabily
para reducir la cantidad de llamadas a la
API. Este método te permite actualizar varios servicios en una sola llamada a la API.
Extremos en los entornos de producción y zona de pruebas
Puedes realizar llamadas a los entornos de producción y zona de pruebas a través de la API. Asegúrate de haber habilitado las dos API en tu proyecto de Google Cloud. Ambas APIs usan el mismo alcance, pero tienen extremos diferentes.
Extremo en el entorno de producción: https://mapsbooking.googleapis.com/
Extremo en el entorno de zona de pruebas: https://partnerdev-mapsbooking.googleapis.com/
A continuación, se incluye un ejemplo en Java de cómo cambiar los extremos:
// This block of code is for OAuth and is the same for prod and sandbox. GoogleCredential .fromStream(new FileInputStream(...)) .createScoped(Collections.singleton("https://www.googleapis.com/auth/mapsbooking")) // This block of code sets the endpoint. This is what you'd change to connect to the sandbox. new GoogleMapsBookingAPI.Builder(...) .setApplicationName(...) .setRootUrl("https://partnerdev-mapsbooking.googleapis.com/") // you add this to change the endpoint to use partnerdev. .build()