Agregá tu Channel Manager
Esta guía acompaña a desarrolladores de channel manager y PMS a lo largo de todo el proceso 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 end-to-end.
Entornos
Sección titulada «Entornos»La API de Channel Manager (Integraciones) está disponible en dos entornos. Usá staging para todo el desarrollo y certificación; cambiá a producción solo al momento del 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. Comenzá revisando la documentación de los endpoints para partners:
Channel Manager API — Endpoints para partners
Pasos de integración
Sección titulada «Pasos de integración»-
Creá una cuenta de usuario Wink
Registrate en staging-app.wink.travel. Todos los pasos a continuación usan staging — repetirás el proceso completo en producción antes del lanzamiento.
-
Creá tu cuenta de Afiliado / Channel Manager
Bajo tu nuevo usuario, creá una cuenta y seleccioná el tipo de cuenta Afiliado / Channel Manager. Esta es la cuenta con la que tu integración se autenticará.
-
Registrá una aplicación y generá tu primer token
Creá una Aplicación y vinculala a la cuenta de channel manager del paso 2. Elegí MACHINE_2_MACHINE como tipo de cliente — esta es una integración servidor a servidor sin usuario final para redirigir. Copiá el Client ID y la Secret Key inmediatamente; la clave secreta se muestra solo una vez y no puede recuperarse luego.
La aplicación es la que genera el token bearer que cada llamada en esta guía lleva como
Authorization: Bearer <access_token>. Intercambiá tus credenciales por uno usando el grantclient_credentialscontrahttps://staging-iam.wink.travel/oauth2/token, solicitando los scopesintegrations.read integrations.write. Hacé esto antes de continuar — no podés consultar identificadores de cuenta ni acceder a ningún endpoint de Channel Manager sin un token. Consultá Autenticación para el flujo completo, el host de producción y el catálogo completo de scopes. -
Creá una cuenta de Hotel
Bajo el mismo usuario, creá una segunda cuenta y seleccioná el tipo Hotel. Esto te da una propiedad para usar en pruebas sin involucrar un hotel real.
-
Confirmá 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 usables apenas las creás, y no hay nada que solicitar.
- Producción — la aprobación es manual. Enviá a tu contacto de integraciones Wink los nombres de ambas cuentas y el usuario bajo el cual están, y esperá confirmación antes de continuar.
-
Conectá las dos cuentas
Iniciá sesión en la cuenta de Hotel y navegá a Extranet → Distribución → Channel Manager. Seleccioná tu cuenta de channel manager de la lista — esto vincula la propiedad a tu integración. Si tu cuenta no aparece en la lista, aún no fue aprobada; consultá el paso 5.
-
Creá un tipo de habitación básico y un plan tarifario
Dentro de la cuenta de Hotel, creá al menos un tipo de habitación y un plan tarifario. Son requeridos antes de que tu integración pueda enviar actualizaciones de tarifas y disponibilidad o extraer reservas.
-
Mapeá y probá
En tu propio sistema, mapeá los identificadores de tipo de habitación y plan tarifario que devuelve la API. Enviá una actualización de tarifa y una de disponibilidad, luego hacé una reserva de prueba y verificá 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. Obtenelo, junto con el ID y estado actual de todas las demás cuentas que tu usuario
posea, 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 confirmás que cada cuenta está aprobada — más útil en producción, donde la aprobación es manual. El hotel debe mostrarACTIVEantes de poder reservarse o ser visible para la API de Channel Manager. Tu cuenta de channel manager seguirá mostrandoPENDING_APPROVALhasta que pases la Certificación; eso es esperado y no bloquea el desarrollo.
Certificación
Sección titulada «Certificación»La certificación es cómo probás — y Wink confirma — que tu integración mapea correctamente el inventario, envía tarifas y disponibilidad, y recibe reservas end-to-end. Está diseñada para ser autoservicio: vos manejás cada paso desde tu propio sistema, y enviás un único paquete de evidencias al final. Wink revisa el paquete y, si aprobás, 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é vas a demostrar
Sección titulada «Qué vas a demostrar»-
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. Podés listar el/los hotel(es) conectado(s) 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. Podés actualizar los siete días de una semana de certificación de forma independiente — con diferentes combinaciones de monto, cantidad, flags de cierre a llegada / salida, y límites mínimos/máximos de estadía en cada día — y leer los valores exactos de vuelta desde Wink.
-
Extracción de reserva. Podés recuperar una reserva real de staging hecha contra tu propiedad de prueba, mostrarla en tu propio UI de PMS/CM con la estadía, 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, completá los pasos 1 a 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 Hotel. Publicá el
hotel para que sea reservable 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(ver Autenticación). - El
managingEntityIdentifierde tu cuenta Afiliado / Channel Manager y elpropertyIdentifierde tu cuenta Hotel (ambos son UUIDs — ver Cómo encontrar los identificadores de tus cuentas).
Convenciones comunes para las solicitudes
Sección titulada «Convenciones comunes para las solicitudes»Cada solicitud en esta sección usa estos headers:
Authorization: Bearer <access_token>Wink-Version: 2.0Accept: application/json<access_token>proviene del grantclient_credentialscontrahttps://staging-iam.wink.travel/oauth2/token— ver Autenticación.- El header
Wink-Versiones obligatorio; omitirlo no direccionará a la API JSON v2. Content-Type: application/jsonse agrega en solicitudesPUTque llevan cuerpo.
En los ejemplos a continuación, los placeholders corresponden a los valores que reuniste en Requisitos previos:
| Placeholder | Significado |
|---|---|
{managingEntityIdentifier} | El ID de tu cuenta Afiliado / Channel Manager (UUID) — ver Cómo encontrar los identificadores de tus cuentas. |
{propertyIdentifier} | El ID de la cuenta Hotel (propiedad) que vinculaste a la cuenta CM. |
{masterRateIdentifier} | La tarifa maestra (tipo de habitación × plan tarifario) que certificarás. |
{bookingIdentifier} | El ID de la reserva de staging devuelto por la llamada de lista de reservas. |
Paso A — Ping
Sección titulada «Paso A — Ping»Confirmá que tus credenciales resuelven a la cuenta Afiliado / Channel Manager que esperás.
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 — Listar propiedades
Sección titulada «Paso B — Listar propiedades»Recuperá la lista paginada de hoteles vinculados a tu cuenta y confirmá 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 Page de Spring con entradas ChannelManagerProperty. Localizá la entrada cuyo
identifier coincida con tu {propertyIdentifier} y anotá su currencyCode — lo necesitarás
para interpretar las actualizaciones de tarifa en el Paso D.
Paso C — Obtener tarifas maestras
Sección titulada «Paso C — Obtener tarifas maestras»Recuperá la propiedad junto con todas las tarifas maestras (combinación tipo de habitación × plan tarifario) que
publica. Elegí la que certificarás y anotá 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 — Cargar la semana de certificación
Sección titulada «Paso D — Cargar la semana de certificación»Cargá un calendario de tarifas de siete días que cubra los primeros siete días calendario del mes siguiente al mes en que comenzás la certificación. Por ejemplo, si empezás la certificación el 21 de agosto, apuntá 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 llegada / salida,
y límites mínimos/máximos de estadía para que cada campo editable se ejercite al menos una vez. Los valores están en la moneda de la propiedad (anotada en el Paso B); omití 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 estadía más estricta. |
| 5 | 200.00 | 0 | false | false | 1 | 30 | Cantidad agotada. |
| 6 | 225.00 | 5 | false | false | 3 | 5 | Ventana de estadía 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í. Repetí, ajustando startDate / endDate / valores según
la 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 un array de entradas PropertyRate actualizadas para el rango enviado
(una entrada cuando startDate == endDate). Guardá esa respuesta — será parte de tu evidencia.
Paso E — Leer la semana de certificación
Sección titulada «Paso E — Leer la semana de certificación»Recuperá toda la semana en una sola llamada y confirmá que los valores almacenados de cada día coinciden con la fila que enviaste en el Paso D — incluyendo los flags booleanos y la ventana de estadía.
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. Si hay alguna diferencia en cualquier campo, significa que el PUT
correspondiente en el Paso D no se aplicó como esperabas — corregí y verificá de nuevo antes de continuar.
Paso F — Hacer una reserva de prueba
Sección titulada «Paso F — Hacer una reserva de prueba»Abrí 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>Seleccioná una fecha de llegada y salida que caigan completamente dentro de tu semana de certificación, elegí la combinación de tipo de habitación + plan tarifario que certificaste, y completá la reserva. Staging usa un camino de pago de prueba — no se cobra ninguna tarjeta real.
Una vez que se muestre la página de confirmación, anotá el código de reserva (formato WNKxxxxx) que se muestra al
huésped.
Paso G — Extraer la reserva
Sección titulada «Paso G — Extraer la reserva»Recuperá todas las reservas creadas para tu propiedad de prueba dentro de una ventana que abarque la fecha 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"Encontrá la entrada cuyo bookingCode coincida con el código que anotaste en el Paso F. Anotá su
bookingIdentifier. Luego obtené 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. Importalo en tu propio UI de PMS / channel manager y confirmá
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 por habitaciónamount
Sacá una captura de pantalla de la reserva como aparece en tu UI — esa captura es uno de los artefactos de evidencia requeridos.
Paso H — Cancelar la reserva y verificar
Sección titulada «Paso H — Cancelar la reserva y verificar»Pedile al equipo de Wink que cancele la reserva de certificación en tu nombre (o cancelala vos mismo desde el Extranet de la cuenta Hotel si tenés ese permiso). Luego volvé a obtener la misma reserva con la llamada del Paso G.
Confirmá 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)
Importá esa reserva actualizada en tu UI y confirmá que la cancelación es visible para el operador — estado, timestamp de cancelación y cualquier indicador de reembolso que soporte tu UI. Sacá una segunda captura de pantalla de la reserva cancelada en tu UI. Este es el artefacto final de evidencia.
Paso I — Enviar tu paquete de evidencias
Sección titulada «Paso I — Enviar tu paquete de evidencias»Empaquetá lo siguiente en un único archivo (.zip) llamado
wink-cert-<tu-nombre-channel-manager>-<aaaa-mm-dd>.zip:
-
Transcripción de la API. Para cada solicitud que hiciste en los Pasos A a H, capturá la solicitud HTTP completa (método, URL, headers con el valor de
Authorizationoculto, y el cuerpo JSON para llamadasPUT) y la respuesta HTTP completa (código de estado, headers y cuerpo JSON). Estructurá 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 mostrando 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 mostrando 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 de 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 formato ISO-8601).
- El nombre y email del ingeniero que realizó la certificación.
Enviá el archivo a tu contacto de integraciones Wink. Wink revisará, hará seguimiento de cualquier
discrepancia y — si aprobás — cambiará el estado de tu cuenta Afiliado / Channel Manager de
PENDING_APPROVAL a ACTIVE. Tu integración quedará entonces habilitada para onboarding en producción.
Notificaciones webhook
Sección titulada «Notificaciones webhook»Podés 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.
Consultá el Catálogo de eventos webhook para más detalles.
Lecturas recomendadas
Sección titulada «Lecturas recomendadas»- Channel Manager API — Documentación completa de endpoints de API.
- Proveedores de tarifas — Gestión de proveedores de tarifas en el Extranet.
- Catálogo de eventos webhook — Todos los eventos suscribibles.
- Construí sobre Wink — Visión general de la plataforma para desarrolladores.
