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.
Entornos
Sección titulada «Entornos»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.
| Entorno | URL base |
|---|---|
| Producción | https://integrations.wink.travel |
| Staging | https://staging-integrations.wink.travel |
Referencia de la API
Sección titulada «Referencia de la API»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
Pasos de integración
Sección titulada «Pasos de integración»-
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.
-
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.
-
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 grantclient_credentialscontrahttps://staging-iam.wink.travel/oauth2/token, solicitando los scopesintegrations.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. -
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.
-
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.
-
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.
-
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.
-
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:
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
idde la entrada channel manager es tu{managingEntityIdentifier}. - El
idde la entradaHOTELes tu{propertyIdentifier}. statuses donde confirmas que cada cuenta está aprobada — más útil en producción, donde la aprobación es manual. El hotel debe mostrarACTIVEantes de que pueda reservarse o verse en la API de Channel Manager. Tu cuenta de channel manager seguirá mostrandoPENDING_APPROVALhasta que pases la Certificación; esto es esperado y no bloquea el desarrollo.
Certificación
Sección titulada «Certificación»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.
Qué demostrarás
Sección titulada «Qué demostrarás»-
Autenticación. Tu cliente OAuth2 puede obtener un token de acceso y llamar con éxito al endpoint
/pingcontra tu cuenta Afiliado / Channel Manager. -
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
masterRateIdentifierque tu sistema usará. -
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.
-
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.
Requisitos previos
Sección titulada «Requisitos previos»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
managingEntityIdentifierde tu cuenta Afiliado / Channel Manager y elpropertyIdentifierde tu cuenta Hotel (ambos son UUIDs — consulta Cómo encontrar los identificadores de tus cuentas).
Convenciones comunes de solicitud
Sección titulada «Convenciones comunes de solicitud»Cada solicitud en esta sección usa estos encabezados:
Authorization: Bearer <access_token>Wink-Version: 2.0Accept: application/json<access_token>proviene del grantclient_credentialscontrahttps://staging-iam.wink.travel/oauth2/token— consulta Autenticación.- El encabezado
Wink-Versiones obligatorio; omitirlo no enruta a la API JSON v2. Content-Type: application/jsonse añade en solicitudesPUTque llevan cuerpo.
En los ejemplos siguientes, los marcadores de posición corresponden a los valores que recopilaste en Requisitos previos:
| Marcador de posición | Significado |
|---|---|
{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. |
Paso A — Ping
Sección titulada «Paso A — Ping»Confirma que tus credenciales resuelven a la cuenta Afiliado / Channel Manager que esperas.
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.
Paso B — Lista propiedades
Sección titulada «Paso B — Lista propiedades»Recupera la lista paginada de hoteles vinculados a tu cuenta y confirma que tu propiedad de prueba está presente.
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.
Paso C — Obtén las tarifas maestras
Sección titulada «Paso C — Obtén las tarifas maestras»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}.
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ía | Monto | Cantidad | closedOnArrival | closedOnDeparture | minLengthOfStay | maxLengthOfStay | Qué demuestra |
|---|---|---|---|---|---|---|---|
| 1 | 100.00 | 5 | false | false | 1 | 30 | Día base. |
| 2 | 125.00 | 4 | false | false | 1 | 14 | Cambio en monto + cantidad + maxLengthOfStay. |
| 3 | 150.00 | 3 | true | false | 1 | 30 | Cambio en closedOnArrival. |
| 4 | 175.00 | 2 | false | true | 2 | 7 | Cambio en closedOnDeparture + ventana de estancia más restrictiva. |
| 5 | 200.00 | 0 | false | false | 1 | 30 | Cantidad agotada. |
| 6 | 225.00 | 5 | false | false | 3 | 5 | Ventana de estancia restrictiva. |
| 7 | 250.00 | 1 | false | false | 1 | 30 | Ú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.
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.
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.
Paso F — Realiza una reserva de prueba
Sección titulada «Paso F — Realiza una reserva de prueba»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.
Paso G — Extrae la reserva
Sección titulada «Paso G — Extrae la reserva»Recupera todas las reservas creadas para tu propiedad de prueba dentro de un intervalo que abarque la marca temporal de la reserva.
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:
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,endDatey elamountpor 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.
Paso H — Cancela la reserva y verifica
Sección titulada «Paso H — Cancela la reserva y verifica»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
cancelDatepoblado - Un
paymentMethodStatusque refleje el ciclo de vida de la cancelación (CANCELLED,PARTIALLY_REFUNDED, oFULLY_REFUNDEDsegú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.
Paso I — Envía tu paquete de evidencias
Sección titulada «Paso I — Envía tu paquete de evidencias»Empaqueta lo siguiente en un solo archivo (.zip) llamado
wink-cert-<nombre-de-tu-channel-manager>-<aaaa-mm-dd>.zip:
-
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
Authorizationoculto, y el cuerpo JSON para llamadasPUT) 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.httpen texto plano o una exportación.harúnica son formatos aceptables. -
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.
-
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.
-
Resumen de certificación. Un breve
README.mddentro del archivo que liste:- El nombre y versión de tu channel manager / PMS.
- Los identificadores
managingEntityIdentifier,propertyIdentifier,masterRateIdentifierybookingIdentifierque usaste. - El slug del hotel en staging (el
<your-slug>enhttps://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.
Notificaciones webhook
Sección titulada «Notificaciones webhook»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.
Lecturas adicionales
Sección titulada «Lecturas adicionales»- Channel Manager API — Documentación completa de endpoints API.
- Proveedores de tarifas — Gestión de proveedores de tarifas en el Extranet.
- Catálogo de eventos webhook — Todos los eventos suscribibles.
- Construye sobre Wink — Visión general de la plataforma para desarrolladores.
