Mensajería
Flujo de mensajes
Para poder realizar cualquier interacción con la plataforma es necesario haber abierto previamente una sesión (Ver Sesión Abrir).Una vez abierta, se realizan las operaciones, se cierra la sesión (Ver Sesión Cerrar) y finaliza el proceso.
Flujo básico de reserva:
Después de abrir la sesión se debe realizar una petición de disponibilidad de hotel con los parámetros deseados. La búsqueda se puede realizar tantas veces como se considere. Una vez seleccionado el hotel de la respuesta de disponibilidad, se puede bloquear. El Bloqueo de Hotel siempre se realiza sobre la última disponibilidad.
Una vez bloqueado el hotel, podemos proceder a cerrar la reserva. La plataforma soporta “carrito de la compra”, por lo que se pueden ir eliminando o añadiendo nuevos bloqueos al carrito (Ver Bloqueo Servicio).
Cuando la reserva ya está cerrada se procede a cerrar la sesión y finaliza el proceso.
Nomenclatura de definición de mensajes
Para la definición de los mensajes XML se utiliza la siguiente nomenclatura.
Nombre del elemento: descripción del elemento.
Elemento | O | Tipo de datos | Restricciones | Descripción |
@elementoAtributo | S | Integer | Valor mínimo: 0 | Descripción del elemento simple |
elementoSimple | S | String | Longitud: 10 | Descripción del elemento simple |
elementoGrupo | N | ElementoGrupo(Grupo) | Ver definición | Ver definición |
elementoComplejo | S | ElementoComplejo | Ver definición | Ver definición |
Utilizado en:
elementoComplejo1
elementoComplejo2
elementoComplejo3
Ejemplo de mensaje XML:
<nombreElementoelementoAtributo="1">
<elementoSimple>Ejemplo1</elementoSimple>
<elementoSimple>Ejemplo2</elementoSimple>
</nombreElemento>
La definición de los mensajes se ha realizado utilizando la definición estándar de XSD oficial del W3C.
Puede consultar las definiciones oficiales en:
XML Schema: http://www.w3.org/XML/Schema
W3C Recommendation: http://www.w3.org/TR/xmlschema-1/
También puede resultar de ayuda la página de W3Schoolsque contiene muchos ejemplos.
Columna Elemento: nombre del campo XML o nombre del grupo. Los elementos grupo y elementos complejos estarán marcados en cursiva.
Columna O: indica si el elemento es obligatorio (S) o no (N). El valor CHOICE (C) indica elección. Es decir puede ser obligatorio o no en función de otro elemento. En estos casos se añadirá un comentario adicional en el apartado Comentarios.
Columna Tipo de datos: indica el tipo del elemento.
- Puede ser un tipo primitivo: String, Boolean, Integer, etc.
- Una enumeración: lista de valores predefinida en un dominio cerrado. Por ejemplo tiperr únicamente admite como valores válidos E, W o I.
Un elemento grupo formado por varios elementos simples o complejos. Por ejemplo, todos los mensajes de respuesta pueden contener ciertos elementos con la información del error en caso de que se produjera (tiperr, coderr, txterr). Para no replicar estos campos en todos los mensajes se ha creado el grupo error que contiene la definición de estos campos.
Nota adicional acerca de los grupos
El elemento group usado en la definición de XSD NO se ve reflejado en los XML.Se usa para tener una estructura más fácil de gestionar en la definición de las XSD.
Por ejemplo, en el caso de un mensaje SesionAbrirRespuesta que hubiera dado error, el mensaje XML devuelto por el servidor tendría la siguiente estructura:
<SesionAbrirRespuesta>
<tiperr>E</tiperr>
<coderr>SAN-121</coderr>
<txterr>Usuario incorrecto</coderr>
</SesionAbrirRespuesta>
Puede consultar más información acerca del elemento group aquí.
- Elemento complejo: elemento definido completamente por separado.
- Elemento lista []: se indicará con corchetes cuando el elemento pueda estar repetido.
Columna Restricciones: son restricciones de aplicación del elemento. Diferentes opciones son: longitud máxima y/o mínima, valores de un dominio cerrado, expresiones regulares, etc. Para el caso de elementos complejos se detallará un enlace “Ver definición” que redirigirá a la información del tipo en cuestión.
De forma general los valores de longitud máxima y/o mínima, y de valores máximo y/o mínimo tendrán el siguiente significado:
Para los valores String siempre serán valores inclusivos,es decir, si la restricción es de máximo 100. El valor de 100 está incluido.
Para los valores numéricos como Integer o Short serán valores inclusivos para los mínimos y exclusivos para los máximos.Por ejemplo, una restricción de valor mínimo 0 y valor máximo 1000 significa que los valores posibles son de 0 a 999. Si tiene dudas acerca del uso y definición de restricciones puede consultarlo aquí.
Columna Descripción: breve descripción del elemento así como un listado de posibles valores que puede tener. Igual que en la columna restricciones, para el caso de elementos complejos se detallará un enlace “Ver definición” que redirigirá a la información del tipo en cuestión.
Utilizado en: lista con el nombre de los elementos complejos que utilizan el elemento actual. Cada uno de los nombres será un enlace a la definición del tipo en cuestión.
Elementos comunes en los mensajes
Existen ciertos elementos y grupos de elementos XML que son usados en varios mensajes.
Grupo Error
Todos los mensajes de respuesta pueden contener información acerca de errores que se hayan podido producir.
Error (Grupo): grupo de elementos con los datos de un error.
Elemento | O | Tipo de datos | Restricciones | Descripción |
tiperr | N | Enumeration | E W I | Tipo de error. E: error. Parará el sistema. W: alerta. Parará el sistema. I: información. No parará el sistema. |
coderr | S | String | Longitud máxima: 10 | Código de error |
txterr | S | String | Longitud máxima: 1000 | Texto de error |
Utilizado en:
- BloqueServicioRespuesta
- DisponibilidadDestinoRespuesta
- DisponibilidadElementoRespuesta
- DisponibilidadHotelRespuesta
- InformacionServicioRespuesta
- ReservaAbrirRespuesta
- ReservaCancelarRespuesta
- ReservaCerrarRespuesta
- ReservaListarRespuesta
- SesionAbrirRespuesta
- SesionCerrarRespuesta
- SesionEstadoRespuesta
- SesionIgnorarRespuesta
Ejemplo de respuesta de error en un mensaje de abrir sesión:
<SesionAbrirRespuesta>
<tiperr>E</tiperr>
<coderr>SAN-121</coderr>
<txterr>Usuario incorrecto</txterr>
</SesionAbrirRespuesta>
Dominio check
Se han definido una serie de campos en distintos elementos que solo pueden tener valores de SI o NO. Para estos campos se ha creado un dominio cerrado con los valores S y N.
De forma general son todos los campos que empiezan con las letras CHK.