Ir al contenido

Añade tu Channel Manager

Esta guía acompaña a los desarrolladores de channel manager y PMS a través del proceso completo de integración con Wink — desde la creación de tus cuentas hasta el mapeo de inventario y la ejecución de tu primera prueba de extremo a extremo.

La API de Channel Manager (Integrations) está disponible en dos entornos. Usa staging para todo el desarrollo y certificación; cambia a producción solo en el lanzamiento.

EntornoURL base
Producciónhttps://integrations.wink.travel
Staginghttps://staging-integrations.wink.travel

La API de Channel Manager sigue los estándares del protocolo OTA (SOAP/XML) para compatibilidad con sistemas hoteleros existentes. Comienza revisando la documentación del endpoint para partners:

Channel Manager API — Endpoints para partners

  1. Crea una cuenta de usuario Wink

    Regístrate en staging-app.wink.travel. Todos los pasos siguientes usan staging — repetirás el proceso completo en producción antes del lanzamiento.

  2. Crea tu cuenta de Afiliado / Channel Manager

    Bajo tu nuevo usuario, crea una cuenta y selecciona el tipo de cuenta Afiliado / Channel Manager. Esta es la cuenta con la que se autenticará tu integración.

  3. Registra una aplicación y genera tu primer token

    Crea una Aplicación y vincúlala a la cuenta de channel manager del paso 2. Elige MACHINE_2_MACHINE como tipo de cliente — esta es una integración servidor a servidor sin usuario final para redirigir. Copia el Client ID y la Secret Key inmediatamente; la clave secreta se muestra solo una vez y no puede recuperarse después.

    La aplicación es la que genera el token bearer que cada llamada en esta guía lleva como Authorization: Bearer <access_token>. Cambia tus credenciales por uno usando el grant client_credentials contra https://staging-iam.wink.travel/oauth2/token, solicitando los scopes integrations.read integrations.write. Haz esto antes de continuar — no puedes consultar identificadores de cuenta ni acceder a ningún endpoint de Channel Manager sin un token. Consulta Autenticación para el flujo completo, el host de producción y el catálogo completo de scopes.

  4. Crea una cuenta de Hotel

    Bajo el mismo usuario, crea una segunda cuenta y selecciona el tipo de cuenta Hotel. Esto te da una propiedad que puedes usar para pruebas sin involucrar un hotel real.

  5. Confirma que ambas cuentas están aprobadas

    Ninguna cuenta puede usarse hasta que esté aprobada: una cuenta de channel manager no aprobada no aparece en la lista de channel managers de ningún hotel, y un hotel no aprobado no es devuelto por la API.

    • Staging — la aprobación es automática. Ambas cuentas son utilizables tan pronto las creas, y no hay nada que solicitar.
    • Producción — la aprobación es manual. Envía a tu contacto de integraciones Wink los nombres de ambas cuentas y el usuario bajo el que están, luego espera confirmación antes de continuar.
  6. Conecta las dos cuentas

    Inicia sesión en la cuenta de Hotel y navega a Extranet → Distribución → Channel Manager. Selecciona tu cuenta de channel manager de la lista — esto vincula la propiedad a tu integración. Si tu cuenta no está en la lista, aún no ha sido aprobada; consulta el paso 5.

  7. Crea un tipo de habitación básico y un plan tarifario

    Dentro de la cuenta de Hotel, crea al menos un tipo de habitación y un plan tarifario. Son necesarios antes de que tu integración pueda enviar tarifas y disponibilidad o extraer reservas.

  8. Mapea y prueba

    En tu propio sistema, mapea los identificadores de tipo de habitación y plan tarifario que devuelve la API. Envía una actualización de tarifa y una de disponibilidad, luego realiza una reserva de prueba y verifica que el endpoint de recuperación de reservas la devuelva correctamente.

Cómo encontrar los identificadores de tus cuentas

Sección titulada «Cómo encontrar los identificadores de tus cuentas»

Cada ruta de la API de Channel Manager está limitada a tu propia cuenta:

/api/managing-entity/{managingEntityIdentifier}/channel-manager/...

{managingEntityIdentifier} es el ID de cuenta (un UUID) de tu cuenta de channel manager — no del hotel. Recupéralo, junto con el ID y estado actual de todas las demás cuentas que posee tu usuario, desde la API de Plataforma:

Ventana de terminal
curl -s -X GET \
"https://staging-api.wink.travel/api/managing-entity/list" \
-H "Authorization: Bearer <access_token>" \
-H "Wink-Version: 2.0" \
-H "Accept: application/json"

La respuesta es un array con las cuentas que posees:

[
{
"id": "3f1c8e42-7b90-4d55-a1e2-6c8d09b4f731",
"type": "CHANNEL_MANAGER",
"name": "Tu Channel Manager",
"status": "ACTIVE"
},
{
"id": "d5b8a3c2-9e6f-4a1b-8d34-7c2e1f0a5b69",
"type": "HOTEL",
"name": "Tu Propiedad de Prueba",
"urlName": "your-test-property",
"status": "ACTIVE"
}
]
  • El id de la entrada channel manager es tu {managingEntityIdentifier}.
  • El id de la entrada HOTEL es tu {propertyIdentifier}.
  • status es donde confirmas que cada cuenta está aprobada — más útil en producción, donde la aprobación es manual. El hotel debe mostrar ACTIVE antes de que pueda reservarse o verse en la API de Channel Manager. Tu cuenta de channel manager seguirá mostrando PENDING_APPROVAL hasta que pases la Certificación; esto es esperado y no bloquea el desarrollo.

La certificación es cómo demuestras — y Wink confirma — que tu integración mapea correctamente el inventario, envía tarifas y disponibilidad, y recibe reservas de extremo a extremo. Está diseñada para ser autoservicio: tú manejas cada paso desde tu propio sistema y envías un único paquete de evidencias al final. Wink revisa el paquete y, si apruebas, cambia el estado de tu cuenta Afiliado / Channel Manager de PENDING_APPROVAL a ACTIVE.

La certificación se realiza completamente en el entorno staging (https://staging-integrations.wink.travel). Nada en esta sección toca producción.

  1. Autenticación. Tu cliente OAuth2 puede obtener un token de acceso y llamar con éxito al endpoint /ping contra tu cuenta Afiliado / Channel Manager.

  2. Mapeo de inventario. Puedes listar el/los hotel(es) conectados a tu cuenta, recuperar la tarifa maestra (tipo de habitación × plan tarifario) que configuraste, e identificar correctamente el masterRateIdentifier que tu sistema usará.

  3. Envío de tarifa y disponibilidad. Puedes actualizar los siete días de una semana de certificación de forma independiente — con diferentes combinaciones de monto, cantidad, flags de cierre a la llegada / salida y límites mínimos/máximos de estancia por día — y leer los valores exactos de vuelta desde Wink.

  4. Extracción de reserva. Puedes recuperar una reserva real de staging hecha contra tu propiedad de prueba, mostrarla en tu propio UI de PMS/CM con la estancia, huésped y total correctos, y luego reflejar una cancelación una vez que Wink marque la reserva como cancelada.

Antes de comenzar la certificación, completa los pasos 1–7 de Pasos de integración para tener:

  • Un usuario Wink en staging con una cuenta Afiliado / Channel Manager y una cuenta Hotel conectadas entre sí (Extranet → Distribución → Channel Manager). Las cuentas de staging se aprueban automáticamente, por lo que no hay nada que solicitar aquí.
  • Al menos un tipo de habitación y un plan tarifario creados dentro de la cuenta de Hotel. Publica el hotel para que pueda reservarse en https://staging-book.wink.travel/hotel/<your-slug>.
  • Una aplicación registrada bajo tu cuenta Afiliado / Channel Manager con un Client ID, Secret Key, y los scopes integrations.read integrations.write (consulta Autenticación).
  • El managingEntityIdentifier de tu cuenta Afiliado / Channel Manager y el propertyIdentifier de tu cuenta Hotel (ambos son UUIDs — consulta Cómo encontrar los identificadores de tus cuentas).

Cada solicitud en esta sección usa estos encabezados:

Authorization: Bearer <access_token>
Wink-Version: 2.0
Accept: application/json
  • <access_token> proviene del grant client_credentials contra https://staging-iam.wink.travel/oauth2/token — consulta Autenticación.
  • El encabezado Wink-Version es obligatorio; omitirlo no enruta a la API JSON v2.
  • Content-Type: application/json se añade en solicitudes PUT que llevan cuerpo.

En los ejemplos siguientes, los marcadores de posición corresponden a los valores que recopilaste en Requisitos previos:

Marcador de posiciónSignificado
{managingEntityIdentifier}ID de tu cuenta Afiliado / Channel Manager (UUID) — ver Cómo encontrar los identificadores.
{propertyIdentifier}ID de la cuenta Hotel (propiedad) que conectaste a la cuenta CM.
{masterRateIdentifier}La tarifa maestra (tipo de habitación × plan tarifario) que certificarás.
{bookingIdentifier}ID de la reserva en staging devuelto por la llamada de lista de reservas.

Confirma que tus credenciales resuelven a la cuenta Afiliado / Channel Manager que esperas.

Ventana de terminal
curl -s -X GET \
"https://staging-integrations.wink.travel/api/managing-entity/{managingEntityIdentifier}/channel-manager/ping" \
-H "Authorization: Bearer <access_token>" \
-H "Wink-Version: 2.0" \
-H "Accept: application/json"

Respuesta esperada:

{
"apiVersion": "2.0",
"name": "Nombre de tu cuenta Channel Manager",
"status": "PENDING_APPROVAL"
}

Una respuesta 200 con un name coincidente indica que la autenticación y resolución de cuenta son correctas. status mostrará PENDING_APPROVAL hasta que Wink te certifique.

Recupera la lista paginada de hoteles vinculados a tu cuenta y confirma que tu propiedad de prueba está presente.

Ventana de terminal
curl -s -X GET \
"https://staging-integrations.wink.travel/api/managing-entity/{managingEntityIdentifier}/channel-manager/property/list?page=0&size=25" \
-H "Authorization: Bearer <access_token>" \
-H "Wink-Version: 2.0" \
-H "Accept: application/json"

La respuesta es una página Spring de entradas ChannelManagerProperty. Localiza la entrada cuyo identifier coincida con tu {propertyIdentifier} y anota su currencyCode — lo necesitarás para interpretar las actualizaciones de tarifa en el Paso D.

Recupera la propiedad junto con todas las tarifas maestras (combinación tipo de habitación × plan tarifario) que publica. Elige la que certificarás y anota su identifier como tu {masterRateIdentifier}.

Ventana de terminal
curl -s -X GET \
"https://staging-integrations.wink.travel/api/managing-entity/{managingEntityIdentifier}/channel-manager/property/{propertyIdentifier}" \
-H "Authorization: Bearer <access_token>" \
-H "Wink-Version: 2.0" \
-H "Accept: application/json"

El sobre de respuesta es PropertyWithRoomRateList: un bloque property más un array rooms de entradas PropertyRoomRate. Cada entrada expone el tipo de habitación, plan tarifario, límites de ocupación, tarifa base y los modificadores de tarifa que conservarás al enviar tarifas diarias.

Paso D — Carga la semana de certificación

Sección titulada «Paso D — Carga la semana de certificación»

Carga un calendario de tarifas de siete días que cubra los primeros siete días calendario del mes siguiente al mes en que comienzas la certificación. Por ejemplo, si empiezas la certificación el 21 de agosto, apunta del 1 al 7 de septiembre.

Enviarás siete llamadas PUT separadas — una por día — donde startDate == endDate. Cada día lleva una combinación deliberadamente diferente de monto, cantidad, flags de cierre a la llegada / salida, y límites mínimos/máximos de estancia para que cada campo editable se pruebe al menos una vez. Los valores están en la moneda de la propiedad (anotada en el Paso B); omite currencyCode y se asignará correctamente por defecto.

DíaMontoCantidadclosedOnArrivalclosedOnDepartureminLengthOfStaymaxLengthOfStayQué demuestra
1100.005falsefalse130Día base.
2125.004falsefalse114Cambio en monto + cantidad + maxLengthOfStay.
3150.003truefalse130Cambio en closedOnArrival.
4175.002falsetrue27Cambio en closedOnDeparture + ventana de estancia más restrictiva.
5200.000falsefalse130Cantidad agotada.
6225.005falsefalse35Ventana de estancia restrictiva.
7250.001falsefalse130Última habitación disponible.

El cuerpo de la solicitud para el Día 1 es así. Repite, ajustando startDate / endDate / valores por fila, para los Días 2 a 7.

Ventana de terminal
curl -s -X PUT \
"https://staging-integrations.wink.travel/api/managing-entity/{managingEntityIdentifier}/channel-manager/property/{propertyIdentifier}/master-rate/{masterRateIdentifier}" \
-H "Authorization: Bearer <access_token>" \
-H "Wink-Version: 2.0" \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-d '{
"startDate": "2026-09-01",
"endDate": "2026-09-01",
"amount": 100.00,
"master": true,
"closedOnArrival": false,
"closedOnDeparture": false,
"quantity": 5,
"minLengthOfStay": 1,
"maxLengthOfStay": 30
}'

Cada PUT responde con un 200 y el array de entradas PropertyRate actualizadas para el rango enviado (una entrada cuando startDate == endDate). Guarda esa respuesta — será parte de tu evidencia.

Paso E — Lee de vuelta la semana de certificación

Sección titulada «Paso E — Lee de vuelta la semana de certificación»

Recupera toda la semana en una sola llamada y confirma que los valores almacenados de cada día coinciden con la fila enviada en el Paso D — incluyendo los flags booleanos y la ventana de estancia.

Ventana de terminal
curl -s -X GET \
"https://staging-integrations.wink.travel/api/managing-entity/{managingEntityIdentifier}/channel-manager/property/{propertyIdentifier}/master-rate/{masterRateIdentifier}?startDate=2026-09-01&endDate=2026-09-07" \
-H "Authorization: Bearer <access_token>" \
-H "Wink-Version: 2.0" \
-H "Accept: application/json"

La respuesta es un PropertyRoomRateWithRateList. Su array rates debe contener siete entradas, una por día, cada una con los valores amount, quantity, closedOnArrival, closedOnDeparture, minLengthOfStay y maxLengthOfStay que cargaste. Cualquier discrepancia indica que el PUT correspondiente en el Paso D no se aplicó como esperabas — corrígelo y verifica de nuevo antes de continuar.

Abre la siguiente URL en un navegador, reemplazando <your-slug> con el slug de la cuenta Hotel que publicaste en Requisitos previos:

https://staging-book.wink.travel/hotel/<your-slug>

Selecciona una fecha de llegada y salida que caigan completamente dentro de tu semana de certificación, elige la combinación de tipo de habitación + plan tarifario que certificaste y completa la reserva. Staging usa un camino de pago de prueba — no se cobra ninguna tarjeta real.

Cuando se muestre la página de confirmación, anota el código de reserva (formato WNKxxxxx) que se muestra al huésped.

Recupera todas las reservas creadas para tu propiedad de prueba dentro de un intervalo que abarque la marca temporal de la reserva.

Ventana de terminal
curl -s -X GET \
"https://staging-integrations.wink.travel/api/managing-entity/{managingEntityIdentifier}/channel-manager/property/{propertyIdentifier}/booking/list?startDate=2026-09-01T00:00:00&endDate=2026-09-08T00:00:00" \
-H "Authorization: Bearer <access_token>" \
-H "Wink-Version: 2.0" \
-H "Accept: application/json"

Encuentra la entrada cuyo bookingCode coincida con el código que anotaste en el Paso F. Anota su bookingIdentifier. Luego recupera esa reserva individual:

Ventana de terminal
curl -s -X GET \
"https://staging-integrations.wink.travel/api/managing-entity/{managingEntityIdentifier}/channel-manager/property/{propertyIdentifier}/booking/{bookingIdentifier}" \
-H "Authorization: Bearer <access_token>" \
-H "Wink-Version: 2.0" \
-H "Accept: application/json"

La respuesta es un PropertyBooking. Impórtalo en tu propio UI de PMS / channel manager y confirma que cada uno de los siguientes datos se muestra correctamente a un operador:

  • bookingCode, bookingIdentifier, createdDate
  • Huésped: firstName, lastName, email
  • totalAmount + currencyCode (el monto neto que el hotel recibe por todas las habitaciones)
  • paymentMethodType, paymentMethodStatus, salesChannelName
  • Cada entrada en roomStays: guestRoomName, ratePlanName, adults, children, startDate, endDate y el amount por habitación

Toma una captura de pantalla de la reserva como aparece en tu UI — esa captura es uno de los artefactos de evidencia requeridos.

Pide al equipo de Wink que cancele la reserva de certificación en tu nombre (o cancélala tú mismo desde el Extranet de la cuenta Hotel si tienes ese permiso). Luego vuelve a recuperar la misma reserva con la llamada del Paso G.

Confirma que la respuesta ahora muestra:

  • cancelled: true
  • Un timestamp cancelDate poblado
  • Un paymentMethodStatus que refleje el ciclo de vida de la cancelación (CANCELLED, PARTIALLY_REFUNDED, o FULLY_REFUNDED según la política de reembolso)

Importa esa reserva actualizada en tu UI y confirma que la cancelación es visible para el operador — estado, timestamp de cancelación y cualquier indicador de reembolso que soporte tu UI. Toma una segunda captura de pantalla de la reserva cancelada en tu UI. Este es el artefacto final de evidencia.

Empaqueta lo siguiente en un solo archivo (.zip) llamado wink-cert-<nombre-de-tu-channel-manager>-<aaaa-mm-dd>.zip:

  1. Transcripción de la API. Para cada solicitud que hiciste en los Pasos A a H, captura la solicitud HTTP completa (método, URL, encabezados de solicitud con el valor Authorization oculto, y el cuerpo JSON para llamadas PUT) y la respuesta HTTP completa (código de estado, encabezados de respuesta y cuerpo JSON). Estructura la transcripción para que cada par solicitud/respuesta esté claramente etiquetado con el paso al que pertenece (step-a-ping.json, step-d-day-3-put.json, step-g-list-bookings.json, etc.). Archivos .http en texto plano o una exportación .har única son formatos aceptables.

  2. Captura de pantalla UI: reserva activa. La captura del Paso G que muestra la reserva de certificación renderizada dentro de tu propio UI de PMS / channel manager, con huésped, fechas, tipo de habitación, plan tarifario y total claramente legibles.

  3. Captura de pantalla UI: reserva cancelada. La captura del Paso H que muestra la misma reserva en tu UI tras la cancelación, con el estado cancelado y timestamp claramente legibles.

  4. Resumen de certificación. Un breve README.md dentro del archivo que liste:

    • El nombre y versión de tu channel manager / PMS.
    • Los identificadores managingEntityIdentifier, propertyIdentifier, masterRateIdentifier y bookingIdentifier que usaste.
    • El slug del hotel en staging (el <your-slug> en https://staging-book.wink.travel/hotel/<your-slug>).
    • El rango de fechas de la semana de certificación (Día 1 → Día 7 en ISO-8601).
    • El nombre y correo electrónico del ingeniero que realizó la certificación.

Envía el archivo a tu contacto de integraciones Wink. Wink revisará, hará seguimiento de cualquier discrepancia y — si apruebas — cambiará el estado de tu cuenta Afiliado / Channel Manager de PENDING_APPROVAL a ACTIVE. Tu integración será entonces elegible para la incorporación en producción.

Puedes suscribirte a eventos webhook de channel manager para recibir notificaciones en tiempo real:

  • channel-manager.update.rate — Se recibió una actualización de tarifa.
  • channel-manager.update.availability — Se recibió una actualización de disponibilidad.
  • channel-manager.update — Actualización general de channel manager.

Consulta el Catálogo de eventos webhook para más detalles.