CMT Sistema de Gestión de Datos de Abonado (SGDA) Nº Proyecto: SAT2004-0419 Protocolo de intercambio de información (Web Services) Nivel de seguridad: N1 Versión: 1.5 17/06/2004 Autores Carlos Guardiola Salvador Madrid Aprobación: Eduardo Blanco Avda. de Europa, 34 A - 28023 Aravaca, Madrid. Tel: (+34) 91 708 90 00 / (+34) 91 211 03 00 Fax: (+34) 91 708 90 90 / (+34) 91 211 03 90
Control de cambios Versión Fecha Revisado Resumen de los cambios producidos 0.1 Borrador inicial. 1.0 15/07/2004 Primera versión oficial 1.1 15/07/2004 Actualización de esquemas y definiciones de los webservices asi como modificacion de los diagramas de uso. 1.2 15/07/2004 22/09/2004 Actualización de definiciones 1.3 22/09/2004 Actualización de definiciones 1.4 28/02/2005 Actualizacion de esquemas y definiciones asi como explicación de nuevas funcionalidades. 1.5 17/03/2006 Nuevos webservices para consulta de operaciones pendientes de cargas y descargas.
Índice 1. Introducción...1 2. Descripción de los Servicios Web...3 2.1. Servicio Web: login...3 2.1.1. Función: login...3 2.1.2. Función: logout...4 2.1.3. Definición WSDL....4 2.2. Servicio Web: upload...6 2.2.1. Función: operacionespendientes...7 2.2.2. Función: iniciarvolumen...8 2.2.3. Función: enviardatos...8 2.2.4. Función: continuarvolumen...9 2.2.5. Función: anularvolumen...9 2.2.6. Función: anularentrega...10 2.2.7. Función: obtenerestadoentrega...10 2.2.8. Definición WSDL...11 2.3. Servicio Web: download...17 2.3.1. Función: operacionespendientes...18 2.3.2. Función: descargardatos...19 2.3.3. Función: obtenerestadodescarga...19 2.3.4. Función: comprobardescarga...20 2.3.5. Definición WSDL...20 2.4. Servicio web: Operaciones Pendientes para cargas...23 2.4.1. Funcion: solicitudfranjas...24 2.4.2. Funcion: solicitudarchivos...25 2.4.3. DefinicionWSDL...26 2.5. Servicio web: Operaciones Pendientes para descargas...29 2.5.1. Funcion: solicitudfranjas...30 2.5.2. Funcion: solicitudoperadores...30 2.5.3. Funcion: solicitudarchivos...31 2.5.4. DefinicionWSDL...32 3. Protocolo de Intercambio...35 3.1. Upload...35 3.1.1. Subida de datos al sistema....35 3.1.2. Continuar Volumen...37 3.1.3. Otras operaciones...38 3.2. Download...39 3.2.1. Descarga de datos...39 3.2.2. Otras operaciones...41 4. Definiciones y Esquemas...42 4.1. Login, Upload y Download ERROR...42 Pág. i
4.2. Upload y Download: Utilidades...43 4.3. Upload, RESPUESTA_OPERACIONES_PENDIENTES...46 4.4. Upload, SOLICITUD_INICIAR_VOLUMEN...48 4.5. Upload, RESPUESTA_INICIAR_VOLUMEN...49 4.6. Upload, SOLICITUD_ENVIAR_DATOS...49 4.7. Upload, RESPUESTA_ENVIAR_DATOS...50 4.8. Upload, SOLICITUD_CONTINUAR_VOLUMEN...51 4.9. Upload, RESPUESTA_CONTINUAR_VOLUMEN...51 4.10. Upload, SOLICITUD_ESTADO_ENTREGA...52 4.11. Upload, RESPUESTA_ESTADO_ENTREGA...52 4.12. Upload, SOLICITUD_ANULAR_VOLUMEN...53 4.13. Upload, RESPUESTA_ANULAR_VOLUMEN...53 4.14. Upload, SOLICITUD_ANULAR_ENTREGA...54 4.15. Upload, RESPUESTA_ANULAR_ENTREGA...54 4.16. Download, RESPUESTA_OPERACIONES_PENDIENTES...55 4.17. Download, SOLICITUD_DESCARGAR_DATOS...57 4.18. Download, RESPUESTA_DESCARGAR_DATOS...57 4.19. Download, SOLICITUD_ESTADO_DESCARGA...58 4.20. Download, RESPUESTA_ESTADO_DESCARGA...58 4.21. Download, SOLICITUD_COMPROBAR_DESCARGA...59 4.22. Download, RESPUESTA_COMPROBAR_DESCARGA...60 4.23. Operaciones Pendientes, SOLICITUD_FRANJAS...61 4.24. Operaciones Pendientes, RESPUESTA_FRANJAS_UPLOAD...61 4.25. Operaciones Pendientes, SOLICITUD_ARCHIVOS_UPLOAD...62 4.26. Operaciones Pendientes, RESPUESTA_ARCHIVOS_UPLOAD...62 4.27. Operaciones Pendientes, RESPUESTA_FRANJAS_DOWNLOAD...62 4.28. Operaciones Pendientes, SOLICITUD_OPERADORES...63 4.29. Operaciones Pendientes, RESPUESTA_OPERADORES...64 4.30. Operaciones Pendientes, SOLICITUD_ARCHIVOS_DOWNLOAD...64 4.31. Operaciones Pendientes, RESPUESTA_ARCHIVOS_DOWNLOAD...65 Apéndice I. Referencias...66 Pág. ii
1. Introducción El Sistema de Gestión de Datos de Abonado (SGDA) se define como un Servicio que la CMT ofrece tanto a los Operadores como a las Entidades mediante el cual puedan intercambiar de manera telemática información sobre Datos de Abonado. Dentro del alcance original del proyecto, tal y como se describe en la Circular y en el Pliego, se establece la necesidad de hacer que ciertas operaciones sean accesibles de manera hasta cierto punto automática. La solución propuesta pasa por el intercambio de mensajes en formato XML mediante el protocolo SOAP, utilizando funciones que se definen dentro de una serie de servicios Web. Merece la pena destacar que no se considera adecuado que las operaciones sean completamente automáticas, porque el acceso al sistema se realiza en cualquier caso estableciendo una sesión SSL con el certificado digital de un usuario representante de la Entidad u Operador. Este establecimiento será responsabilidad del programa Cliente (en adelante, el cliente) que deberá tener acceso al certificado personal del representante, junto con su clave privada, para poder establecer al sesión segura con el servidor. Parece por tanto que dejar en un servidor el certificado del represente junto con su clave privada, podría ser una práctica comprometedora desde el punto de vista de la seguridad. Para SGDA, es necesario que la sesión se establezca usando el certificado del usuario; no sólo para garantizar que realmente representa a la Entidad u Operador que dice representar, sino porque además el servidor tiene que realizar operaciones de seguridad que garanticen la integridad de los datos que se suben al sistema. El objetivo de este documento es detallar los servicios Web que se han diseñado para automatizar los procesos de: Carga de datos en el sistema. Descarga de datos del sistema. Establecimiento y cierre de sesión, operaciones comunes a ambos. En cualquier caso, ambos procesos se han diseñado como un reflejo de las funcionalidades que un usuario podría hacer si accediese a la interfaz Web de SGDA. Esto significa que se han diseñado siguiendo los requisitos y las especificaciones funcionales definidos en ARS2_1 y EFS1_2 respectivamente, y por tanto están sometidos a las mismas restricciones. El documento se ha dividido en varias partes; en la primera, se describen los servicios de login, cargas (o uploads), y descargas (o downloads). En cada una de ellas de describirán las funciones: Indicando su sentido desde el punto de vista del servidor y del cliente. Pág. 1 de 49
Especificando sus parámetros de entrada y salida. Incluyendo los archivos con las definiciones y esquemas en formato XML de los servicios, funciones, tipos de datos, etc. En la segunda parte se presentan diagramas de intercambio de mensajes, para mayor comprensión de las operaciones descritas. En la tercera, se definen los esquemas XML que regulan el intercambio de información. Pág. 2 de 49
2. Descripción de los Servicios Web En este capítulo se detallan los servicios Web que se han diseñado, sus funciones, el sentido de las mismas y sus parámetros de entrada y salida. 2.1. Servicio Web: login Este servicio gestiona las sesiones de los clientes. Aporta las funcionalidades de crear una nueva sesión, cuando el cliente quiera acceder al sistema, y de cerrarla cuando considere oportuno. 2.1.1. Función: login 2.1.1.1. Descripción Puesto que el servidor de aplicaciones de SGDA sólo es accesible mediante conexiones SSL establecidas con certificado digital de usuario, el cliente deberá implementar los mecanismos que permitan iniciar esta sesión. Internamente existirán unos manejadores que comprobarán que efectivamente el usuario que trata de iniciar la sesión tiene los permisos necesarios. Sólo si se consigue transitar por completo por la cadena de filtros, se invoca realmente la función login; el servidor creará un identificador de sesión e instanciará una serie de objetos que guardará en la sesión, que ayudarán a la gestión de las operaciones del cliente. En cualquier caso, esto es transparente al cliente; la función devuelve el valor con el identificador de la sesión ademas de establecer dicho valor en las cabeceras SOAP del mensaje. Opcionalmente, podrá devolver un mensaje de error cuando no ha sido posible realizar correctamente la operación. Por lo tanto, y a partir de este punto será responsabilidad del cliente mantener este identificador de sesión en todas las cabeceras de los mensajes SOAP que envíe al servidor. De no ser así, el servidor podría detectar el uso de sesiones caducadas o no creadas, lo que implicaría que se descartasen los mensajes. 2.1.1.2. Entrada No tiene parámetros de entrada, salvo el parámetro de cabecera del mensaje SOAP con un identificador de sesion aleatorio que no será utilizado. Pág. 3 de 49
2.1.1.3. Salida Devolverá el identificador de la sesión creada tanto en la cabecera SOAP como en el cuerpo del mensaje. Opcionalmente, podrá devolver un mensaje de tipo ERROR si surgieron problemas a la hora de realizar la operación. 2.1.2. Función: logout 2.1.2.1. Descripción Esta función es la contraria de la anterior, y cierra la sesión que el usuario haya iniciado. No es necesario que el cliente pase como parámetro el identificador de la sesión, puesto que esta forma parte de la cabecera SOAP. Opcionalmente, devolverá un mensaje de tipo ERROR en caso de que se produjese alguno mientras el servidor procesa la respuesta. 2.1.2.2. Entrada Además del identificador de la sesión que se ha venido utilizando en la cabecera es necesario enviar el mismo identificador como parte del cuerpo del mensaje. 2.1.2.3. Salida Opcionalmente, podrá devolver un mensaje de tipo ERROR. 2.1.3. Definición WSDL. A continuación se muestra la definición del servicio login en formato WSDL. <definitions xmlns:er="https://www.sgda.cmt.es/webservices/error" xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:http="http://schemas.xmlsoap.org/wsdl/http/" xmlns:xs="http://www.w3.org/2001/xmlschema" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/" xmlns:l="https://www.sgda.cmt.es/webservices/login" xmlns:ut="https://www.sgda.cmt.es/webservices/utils" targetnamespace="https://www.sgda.cmt.es/webservices/login"> <types> <xs:schema> <xs:import namespace="https://www.sgda.cmt.es/webservices/error" schemalocation="https://www.sgda.cmt.es/webservices/xsd/error.xsd"/> <xs:import namespace="https://www.sgda.cmt.es/webservices/utils" schemalocation="https://www.sgda.cmt.es/webservices/xsd/utils.xsd"/> </xs:schema> </types> <message name="respuestaerror"> <part name="respuesta" type="er:error"/> <message name="session"> <part name="sessionheader" type="ut:sessionid"/> <message name="sessionparam"> <part name="session" type="xs:int"/> Pág. 4 de 49
<porttype name="loginservice"> <operation name="login"> <input message="l:session"/> <output message="l:sessionparam"/> <fault name="error" message="l:respuestaerror"/> <operation name="logout"> <input message="l:session"/> <output message="l:sessionparam"/> <fault name="error" message="l:respuestaerror"/> </porttype> <binding name="loginservicesoapbinding" type="l:loginservice"> <soap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http"/> <operation name="login"> <soap:operation style="rpc"/> <input> <soap:header message="l:session" part="sessionheader" use="encoded" namespace="https://www.sgda.cmt.es/webservices/login"/> <soap:body use="encoded" namespace="https://www.sgda.cmt.es/webservices/login"/> </input> <output> <soap:body use="encoded" namespace="https://www.sgda.cmt.es/webservices/login"/> </output> <fault name="error"> <soap:fault name="error" use="encoded" namespace="https://www.sgda.cmt.es/webservices/login"/> </fault> <operation name="logout"> <soap:operation style="rpc"/> <input> <soap:header message="l:session" part="sessionheader" use="encoded" namespace="https://www.sgda.cmt.es/webservices/login"/> <soap:body use="encoded" namespace="https://www.sgda.cmt.es/webservices/login"/> </input> <output> <soap:body use="encoded" namespace="https://www.sgda.cmt.es/webservices/login"/> </output> <fault name="error"> <soap:fault name="error" use="encoded" namespace="https://www.sgda.cmt.es/webservices/login"/> </fault> </binding> <service name="loginservice"> <port name="loginservice" binding="l:loginservicesoapbinding"> <soap:address location="https://www.sgda.cmt.es/webservices/services/loginservice"/> </port> </service> </definitions> Tabla 1 login.wsdl Pág. 5 de 49
2.2. Servicio Web: upload Este servicio gestiona las operaciones de cargas de ficheros de Datos de Abonado, que los operadores tienen la obligación de incorporar al sistema. La Circular especifica que un mismo archivo de datos de abonado puede incorporarse al sistema mediante un conjunto de volúmenes. Así, al menos un archivo está compuesto de un volumen. Puesto que un volumen en sí es un archivo, y para evitar posibles confusiones, al conjunto de volúmenes que componen un archivo de datos de abonado se le denominará entrega. Hay que destacar que los volúmenes que componen la entrega se subirán por partes, de manera que la interrupción de la transmisión no suponga la subida desde el principio. Esto deberá ser tenido en cuenta por el cliente, siendo responsabilidad suya preparar los datos correctamente del volumen que desea subir. Sin embargo, el control de la transferencia recae en el servidor. Aporta las siguientes funcionalidades: Conocer las operaciones de cargas pendientes dado el día en que se accede al sistema, asi como las fechas de inicio y finalizacion del periodo de carga en el que se encuentra. Caracterizar la entrega de un archivo de datos de abonado. Enviar porciones de datos de un determinado archivo. Retomar una operación de carga que por cualquier motivo se ha pospuesto. Anular un volumen, porque desea subirse desde el principio. Anular una entrega, porque desea caracterizarse desde el principio. Obtener el estado de una entrega. En general, la mayoría de las operaciones reciben entradas y devuelven respuestas de un tipo de datos a medida de la función. Alternativamente, podrían devolver un elemento de tipo ERROR si el servidor detectase un error durante la ejecución de las mismas. Las restricciones de autenticidad y no repudio obligan a que todas las cargas de un mismo volumen sean hechas por un mismo usuario. Sólo si este decidiese anular el volumen podría subirlo otro representante. Indicar también que todas las operaciones que se realicen contra este servicio web estarán firmadas. Por parte del servidor, los mensajes SOAP que se envien estarán firmados con el certificado digital de que dispone SGDA y por parte del cliente los mensajes SOAP que envíe deberan estar firmados con el certificado digital usado para la comunicación SSL con el servidor. Pág. 6 de 49
2.2.1. Función: operacionespendientes 2.2.1.1. Descripción Permite que un operador conozca las operaciones pendientes a la fecha del día en que se realiza la consulta. La respuesta vendrá ordenada en primer lugar por operadores a los que representa el usuario, después en función de los ámbitos en los que el Operador está habilitado para dar servicio, y dentro de cada uno de ellos, los archivos (entregas) que está obligado a subir al sistema y el estado de los mismos, si es que hubiese comenzado a subirlos. Puesto que la circular establece que en el ámbito Nacional habrá un archivo para numeración de Directorio, y en el resto de ámbitos provinciales un archivo para Emergencias y Guías; como mucho podrá haber hasta 3 archivos en un mismo ámbito. Dado que se incluye el estado de las transferencias, esta deberá ser la primera operación que un cliente invoque cuando haga uso del servicio de uploads. Por otra parte, el sistema detectará las siguientes condiciones: Si el sistema se encuentra en una ventana de descarga, no se podrán subir archivos en ningún caso. Si el operador se encuentra en una ventana de carga, bien de totales o de actualizaciones, recibirá la lista de archivos que el sistema espera recibir. Si el operador no se encuentra en una ventana de carga ni de descarga, pero se ha dado recientemente de alta en el sistema, el servidor permitirá que se suban archivos de totales. Si el operador no tiene obligación de subir archivos, no devolverá ningún elemento de tipo archivo. Conviene destacar que esta función permite al cliente conocer los identificadores de los archivos (entregas) que mantiene el sistema, así como de los volúmenes que haya comenzado a subir. Estos identificadores deberán usarse en la mayor parte de las funciones del servicio de upload, siendo por tanto responsabilidad del cliente obtenerlos de la respuesta y almacenarlos de la forma que considere oportuna (en la memoria del proceso, o mecanismos similares) 2.2.1.2. Entrada No recibe ningún parámetro de entrada, salvo el identificador de la sesion obtenido del servicio web de Login. 2.2.1.3. Salida Un elemento de tipo RESPUESTA_OPERACIONES_PENDIENTES. Pág. 7 de 49
2.2.2. Función: iniciarvolumen 2.2.2.1. Descripción Mediante esta operación, un Operador indica al sistema que desea comenzar la carga de uno de los volúmenes que componen una entrega de datos de abonado. Esta función requiere que el cliente aporte información que el sistema a priori desconoce, como la fecha de extracción de los datos, el número total de volúmenes que componen un archivo (entrega), el número de volumen en concreto que se quiere subir, el resumen (hash) del mismo, etc. Estos datos se detallarán en el tipo SOLICITUD_INICIAR_VOLUMEN. El resumen del fichero (HASH) debe estar codificado en hexadecimal. El sistema realizará una serie de comprobaciones, y si el cliente tiene derecho a comenzar la operación que está solicitando, creará un identificador de envío asociado a la transferencia. Este identificador se entrega junto otros datos que forman parte de la respuesta, y será responsabilidad del cliente incluirlo en todas las operaciones de transferencias de datos del volumen. Así mismo, el cliente recibe el número total de bloques de datos y el tamaño de los mismos, que el servidor espera recibir. Será responsabilidad del cliente asegurarse de cumplir estas condiciones, puesto que el servidor podrá rechazar aquellos envíos que no las respeten. 2.2.2.2. Entrada Un elemento de tipo SOLICITUD_INICIAR_VOLUMEN. 2.2.2.3. Salida Un elemento de tipo RESPUESTA_INICIAR_VOLUMEN. 2.2.3. Función: enviardatos 2.2.3.1. Descripción Esta es la función que utiliza el cliente para transmitir bloques de un volumen, siempre en formato base64. Por lo tanto, en una misma sesión, el cliente deberá hacer tantas invocaciones a esta función como bloques espere el servidor recibir. Además, deberá usar los identificadores de archivo, envío y bloque que permitan caracterizar la transferencia. Será responsabilidad del cliente cumplir las siguientes condiciones: Enviar los bloques en el orden en que el servidor se los solicita. Componer bloques de información bien codificados y consecutivos, de manera que el servidor reciba todos los datos que le permitan restaurar el archivo. El servidor responderá al cliente con el estado de la recepción. Pág. 8 de 49
Es necesario indicar que los identificadores de los bloques empiezan en 0 no 1 y por tanto el identificador del último bloque a enviar será: numero_total_bloques 1 Todos los bloques enviados deben ir codificados en base64 lo cual no quiere decir que se deba codificar todo el fichero y luego recoger el bloque que corresponda enviar del fichero codificado, sino que se debe coger el bloque que corresponda y codificar en base64 solo el bloque. Por tanto, el tamaño del bloque indicado en las operaciones anteriores se corresponde a la cantidad de información que se debe enviar antes de codificarlo en base64 y no a la cantidad de información a enviar al WebService. 2.2.3.2. Entrada Un elemento de tipo SOLICITUD_ENVIAR_DATOS. 2.2.3.3. Salida Un elemento de tipo RESPUESTA_ENVIAR_DATOS. 2.2.4. Función: continuarvolumen 2.2.4.1. Descripción Esta operación la debe invocar un cliente solamente cuando se haya interrumpido una sesión de envío, y desee retomar la transferencia en el último bloque que se envió. Deberá indicar el identificar de archivo y volumen, que pueden recuperarse en una llamada a la función operacionespendientes. El servidor responderá con el estado de la transferencia del volumen. 2.2.4.2. Entrada Un elemento de tipo SOLICITUD_CONTINUAR_VOLUMEN. 2.2.4.3. Salida Un elemento de tipo RESPUESTA_CONTINUAR_VOLUMEN. 2.2.5. Función: anularvolumen 2.2.5.1. Descripción Un Operador podrá en cualquier momento anular la entrega de un volumen si detectase que por cualquier motivo sus datos estuviesen mal formados, corrompidos, y en general cualquier causa que considerase oportuna. Pág. 9 de 49
Para ello deberá indicar al servidor el archivo (entrega) y el volumen del mismo que desea eliminar. El servidor elimina del sistema la información asociada únicamente al volumen indicado, quedando sin modificarse el resto de los posibles volúmenes que compusieran la entrega. Esto implica que si el cliente quisiera volver a intentar la subida del volumen debe volver a caracterizarlo, usando la función empezarvolumen. Invocar a continuarvolumen con un volumen que ha sido anulado dará una respuesta errónea. 2.2.5.2. Entrada Un elemento de tipo SOLICITUD_ANULAR_VOLUMEN. 2.2.5.3. Salida Un elemento de tipo RESPUESTA_ANULAR_VOLUMEN. 2.2.6. Función: anularentrega 2.2.6.1. Descripción Esta operación es de mayor alcance que la anterior, ya que permite eliminar toda la información que el sistema almacene sobre una determinada entrega. De esta forma, dado un identificador de archivo, el sistema borrará todos los volúmenes del mismo. 2.2.6.2. Entrada Un elemento de tipo SOLICITUD_ANULAR_ENTREGA. 2.2.6.3. Salida Un elemento de tipo RESPUESTA_ANULAR_ENTREGA. 2.2.7. Función: obtenerestadoentrega 2.2.7.1. Descripción Esta operación permite que en cualquier momento un operador pueda conocer el estado particular de una determinado archivo (entrega) a partir del identificador del mismo. El servidor responderá con la información que posee el sistema sobre dicho archivo, y sus volúmenes. 2.2.7.2. Entrada Un elemento de tipo SOLICITUD_ESTADO_ENTREGA. Pág. 10 de 49
2.2.7.3. Salida Un elemento de tipo RESPUESTA_ESTADO_ENTREGA. 2.2.8. Definición WSDL A continuación se muestra la definición en formato WSDL del servicio upload. <definitions xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:http="http://schemas.xmlsoap.org/wsdl/http/" xmlns:xs="http://www.w3.org/2001/xmlschema" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/" xmlns:u="https://www.sgda.cmt.es/webservices/upload" xmlns:rop="https://www.sgda.cmt.es/webservices/upload/operacionespendientes/respuesta" xmlns:siv="https://www.sgda.cmt.es/webservices/upload/iniciarvolumen/solicitud" xmlns:riv="https://www.sgda.cmt.es/webservices/upload/iniciarvolumen/respuesta" xmlns:sed="https://www.sgda.cmt.es/webservices/upload/enviardatos/solicitud" xmlns:red="https://www.sgda.cmt.es/webservices/upload/enviardatos/respuesta" xmlns:scv="https://www.sgda.cmt.es/webservices/upload/continuarvolumen/solicitud" xmlns:rcv="https://www.sgda.cmt.es/webservices/upload/continuarvolumen/respuesta" xmlns:sav="https://www.sgda.cmt.es/webservices/upload/anularvolumen/solicitud" xmlns:rav="https://www.sgda.cmt.es/webservices/upload/anularvolumen/respuesta" xmlns:sae="https://www.sgda.cmt.es/webservices/upload/anularentrega/solicitud" xmlns:rae="https://www.sgda.cmt.es/webservices/upload/anularentrega/respuesta" xmlns:see="https://www.sgda.cmt.es/webservices/upload/estadoentrega/solicitud" xmlns:ree="https://www.sgda.cmt.es/webservices/upload/estadoentrega/respuesta" xmlns:ut="https://www.sgda.cmt.es/webservices/utils" xmlns:er="https://www.sgda.cmt.es/webservices/error" targetnamespace="https://www.sgda.cmt.es/webservices/upload"> <types> <xs:schema> <xs:import namespace="https://www.sgda.cmt.es/webservices/error" schemalocation="https://www.sgda.cmt.es/webservices/xsd/error.xsd"/> <xs:import namespace="https://www.sgda.cmt.es/webservices/utils" schemalocation="https://www.sgda.cmt.es/webservices/xsd/utils.xsd"/> <xs:import namespace="https://www.sgda.cmt.es/webservices/upload/operacionespendientes/respuesta" schemalocation="https://www.sgda.cmt.es/webservices/xsd/upload/respuestaoperacionespendientes.xsd"/> <xs:import namespace="https://www.sgda.cmt.es/webservices/upload/iniciarvolumen/solicitud" schemalocation="https://www.sgda.cmt.es/webservices/xsd/upload/solicitudiniciarvolumen.xsd"/> <xs:import namespace="https://www.sgda.cmt.es/webservices/upload/iniciarvolumen/respuesta" schemalocation="https://www.sgda.cmt.es/webservices/xsd/upload/respuestainiciarvolumen.xsd"/> <xs:import namespace="https://www.sgda.cmt.es/webservices/upload/enviardatos/solicitud" schemalocation="https://www.sgda.cmt.es/webservices/xsd/upload/solicitudenviardatos.xsd"/> <xs:import namespace="https://www.sgda.cmt.es/webservices/upload/enviardatos/respuesta" schemalocation="https://www.sgda.cmt.es/webservices/xsd/upload/respuestaenviardatos.xsd"/> <xs:import namespace="https://www.sgda.cmt.es/webservices/upload/continuarvolumen/solicitud" schemalocation="https://www.sgda.cmt.es/webservices/xsd/upload/solicitudcontinuarvolumen.xsd"/> <xs:import namespace="https://www.sgda.cmt.es/webservices/upload/continuarvolumen/respuesta" schemalocation="https://www.sgda.cmt.es/webservices/xsd/upload/respuestacontinuarvolumen.xsd"/> <xs:import namespace="https://www.sgda.cmt.es/webservices/upload/anularvolumen/solicitud" schemalocation="https://www.sgda.cmt.es/webservices/xsd/upload/solicitudanularvolumen.xsd"/> <xs:import namespace="https://www.sgda.cmt.es/webservices/upload/anularvolumen/respuesta" schemalocation="https://www.sgda.cmt.es/webservices/xsd/upload/respuestaanularvolumen.xsd"/> <xs:import namespace="https://www.sgda.cmt.es/webservices/upload/anularentrega/solicitud" schemalocation="https://www.sgda.cmt.es/webservices/xsd/upload/solicitudanularentrega.xsd"/> <xs:import namespace="https://www.sgda.cmt.es/webservices/upload/anularentrega/respuesta" schemalocation="https://www.sgda.cmt.es/webservices/xsd/upload/respuestaanularentrega.xsd"/> <xs:import namespace="https://www.sgda.cmt.es/webservices/upload/estadoentrega/solicitud" schemalocation="https://www.sgda.cmt.es/webservices/xsd/upload/solicitudestadoentrega.xsd"/> <xs:import namespace="https://www.sgda.cmt.es/webservices/upload/estadoentrega/respuesta" Pág. 11 de 49
schemalocation="https://www.sgda.cmt.es/webservices/xsd/upload/respuestaestadoentrega.xsd"/> <xs:import namespace="http://schemas.xmlsoap.org/soap/encoding/"/> </xs:schema> </types> <message name="respuestaerror"> <part name="respuesta" type="er:error"/> <message name="solicitudoperacionespendientes"> <part name="sessionheader" type="ut:sessionid"/> <message name="respuestaoperacionespendientes"> <part name="respuesta" type="rop:operacionespendientes"/> <part name="sessionheader" type="ut:sessionid"/> <message name="solicitudiniciarvolumen"> <part name="solicitud" type="siv:iniciarvolumen"/> <part name="sessionheader" type="ut:sessionid"/> <message name="respuestainiciarvolumen"> <part name="respuesta" type="ut:volumen"/> <part name="sessionheader" type="ut:sessionid"/> <message name="solicitudenviardatos"> <part name="solicitud" type="sed:enviardatos"/> <part name="sessionheader" type="ut:sessionid"/> <message name="respuestaenviardatos"> <part name="respuesta" type="red:envio"/> <part name="sessionheader" type="ut:sessionid"/> <message name="respuestacontinuarvolumen"> <part name="respuesta" type="ut:volumen"/> <part name="sessionheader" type="ut:sessionid"/> <message name="solicitudcontinuarvolumen"> <part name="solicitud" type="scv:continuarvolumen"/> <part name="sessionheader" type="ut:sessionid"/> <message name="solicitudanularvolumen"> <part name="solicitud" type="sav:anularvolumen"/> <part name="sessionheader" type="ut:sessionid"/> <message name="respuestaanularvolumen"> <part name="respuesta" type="rav:volumenarchivo"/> <part name="sessionheader" type="ut:sessionid"/> <message name="solicitudanularentrega"> <part name="solicitud" type="sae:anularentrega"/> <part name="sessionheader" type="ut:sessionid"/> <message name="respuestaanularentrega"> <part name="respuesta" type="rae:entrega"/> <part name="sessionheader" type="ut:sessionid"/> <message name="solicitudestadoentrega"> <part name="solicitud" type="see:estadoentrega"/> <part name="sessionheader" type="ut:sessionid"/> <message name="respuestaestadoentrega"> <part name="respuesta" type="ut:archivo"/> <part name="sessionheader" type="ut:sessionid"/> <porttype name="uploadservice"> Pág. 12 de 49
<operation name="operacionespendientes"> <input message="u:solicitudoperacionespendientes"/> <output message="u:respuestaoperacionespendientes"/> <fault name="error" message="u:respuestaerror"/> <operation name="iniciarvolumen"> <input message="u:solicitudiniciarvolumen"/> <output message="u:respuestainiciarvolumen"/> <fault name="error" message="u:respuestaerror"/> <operation name="enviardatos"> <input message="u:solicitudenviardatos"/> <output message="u:respuestaenviardatos"/> <fault name="error" message="u:respuestaerror"/> <operation name="continuarvolumen"> <input message="u:solicitudcontinuarvolumen"/> <output message="u:respuestacontinuarvolumen"/> <fault name="error" message="u:respuestaerror"/> <operation name="anularvolumen"> <input message="u:solicitudanularvolumen"/> <output message="u:respuestaanularvolumen"/> <fault name="error" message="u:respuestaerror"/> <operation name="anularentrega"> <input message="u:solicitudanularentrega"/> <output message="u:respuestaanularentrega"/> <fault name="error" message="u:respuestaerror"/> <operation name="estadoentrega"> <input message="u:solicitudestadoentrega"/> <output message="u:respuestaestadoentrega"/> <fault name="error" message="u:respuestaerror"/> </porttype> <binding name="uploadservicesoapbinding" type="u:uploadservice"> <soap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http"/> <operation name="operacionespendientes"> <soap:operation style="rpc"/> <input> <soap:header message="u:solicitudoperacionespendientes" part="sessionheader" use="encoded" namespace="https://www.sgda.cmt.es/webservices/upload"/> <soap:body use="encoded" namespace="https://www.sgda.cmt.es/webservices/upload"/> </input> <output> <soap:header message="u:respuestaoperacionespendientes" part="sessionheader" use="encoded" namespace="https://www.sgda.cmt.es/webservices/upload"/> <soap:body use="encoded" namespace="https://www.sgda.cmt.es/webservices/upload"/> </output> <fault name="error"> <soap:fault name="error" use="encoded" namespace="https://www.sgda.cmt.es/webservices/upload"/> </fault> <operation name="iniciarvolumen"> <soap:operation style="rpc"/> <input> Pág. 13 de 49
<soap:header message="u:solicitudiniciarvolumen" part="sessionheader" use="encoded" namespace="https://www.sgda.cmt.es/webservices/upload"/> <soap:body use="encoded" namespace="https://www.sgda.cmt.es/webservices/upload"/> </input> <output> <soap:header message="u:respuestainiciarvolumen" part="sessionheader" use="encoded" namespace="https://www.sgda.cmt.es/webservices/upload"/> <soap:body use="encoded" namespace="https://www.sgda.cmt.es/webservices/upload"/> </output> <fault name="error"> <soap:fault name="error" use="encoded" namespace="https://www.sgda.cmt.es/webservices/upload"/> </fault> <operation name="enviardatos"> <soap:operation style="rpc"/> <input> <soap:header message="u:solicitudenviardatos" part="sessionheader" use="encoded" namespace="https://www.sgda.cmt.es/webservices/upload"/> <soap:body use="encoded" namespace="https://www.sgda.cmt.es/webservices/upload"/> </input> <output> <soap:header message="u:respuestaenviardatos" part="sessionheader" use="encoded" namespace="https://www.sgda.cmt.es/webservices/upload"/> <soap:body use="encoded" namespace="https://www.sgda.cmt.es/webservices/upload"/> </output> <fault name="error"> <soap:fault name="error" use="encoded" namespace="https://www.sgda.cmt.es/webservices/upload"/> </fault> <operation name="continuarvolumen"> <soap:operation style="rpc"/> <input> <soap:header message="u:solicitudcontinuarvolumen" part="sessionheader" use="encoded" namespace="https://www.sgda.cmt.es/webservices/upload"/> <soap:body use="encoded" namespace="https://www.sgda.cmt.es/webservices/upload"/> </input> <output> <soap:header message="u:respuestacontinuarvolumen" part="sessionheader" use="encoded" namespace="https://www.sgda.cmt.es/webservices/upload"/> <soap:body use="encoded" namespace="https://www.sgda.cmt.es/webservices/upload"/> </output> <fault name="error"> <soap:fault name="error" use="encoded" namespace="https://www.sgda.cmt.es/webservices/upload"/> </fault> Pág. 14 de 49
<operation name="anularvolumen"> <soap:operation style="rpc"/> <input> <soap:header message="u:solicitudanularvolumen" part="sessionheader" use="encoded" namespace="https://www.sgda.cmt.es/webservices/upload"/> <soap:body use="encoded" namespace="https://www.sgda.cmt.es/webservices/upload"/> </input> <output> <soap:header message="u:respuestaanularvolumen" part="sessionheader" use="encoded" namespace="https://www.sgda.cmt.es/webservices/upload"/> <soap:body use="encoded" namespace="https://www.sgda.cmt.es/webservices/upload"/> </output> <fault name="error"> <soap:fault name="error" use="encoded" namespace="https://www.sgda.cmt.es/webservices/upload"/> </fault> <operation name="anularentrega"> <soap:operation style="rpc"/> <input> <soap:header message="u:solicitudanularentrega" part="sessionheader" use="encoded" namespace="https://www.sgda.cmt.es/webservices/upload"/> <soap:body use="encoded" namespace="https://www.sgda.cmt.es/webservices/upload"/> </input> <output> <soap:header message="u:respuestaanularentrega" part="sessionheader" use="encoded" namespace="https://www.sgda.cmt.es/webservices/upload"/> <soap:body use="encoded" namespace="https://www.sgda.cmt.es/webservices/upload"/> </output> <fault name="error"> <soap:fault name="error" use="encoded" namespace="https://www.sgda.cmt.es/webservices/upload"/> </fault> <operation name="estadoentrega"> <soap:operation style="rpc"/> <input> <soap:header message="u:solicitudestadoentrega" part="sessionheader" use="encoded" namespace="https://www.sgda.cmt.es/webservices/upload"/> <soap:body use="encoded" namespace="https://www.sgda.cmt.es/webservices/upload"/> </input> <output> <soap:header message="u:respuestaestadoentrega" part="sessionheader" use="encoded" namespace="https://www.sgda.cmt.es/webservices/upload"/> <soap:body use="encoded" namespace="https://www.sgda.cmt.es/webservices/upload"/> </output> <fault name="error"> <soap:fault name="error" use="encoded" Pág. 15 de 49
namespace="https://www.sgda.cmt.es/webservices/upload"/> </fault> </binding> <service name="uploadservice"> <port name="uploadservice" binding="u:uploadservicesoapbinding"> <soap:address location="https://www.sgda.cmt.es/webservices/services/uploadservice"/> </port> </service> </definitions> Tabla 2 upload.wsdl Pág. 16 de 49
2.3. Servicio Web: download Este servicio gestiona las operaciones de descargas de ficheros de Datos de Abonado, que las entidades tienen la obligación de incorporar al sistema. Del mismo modo que las cargas, los diferentes volúmenes que componen el archivo (entrega) se descargan por partes, de manera que la interrupción de la transmisión no suponga que el archivo se comience a descargar desde el principio. Esto deberá ser tenido en cuenta por el cliente, siendo responsabilidad suya almacenar los datos correctamente en su archivo. Por su parte, el servidor controla el último bloque que se ha entregado al cliente, siendo responsabilidad del cliente en cualquier caso saber si lo ha consolidado bien o no. Por lo tanto, las operaciones de descarga están dirigidas por el cliente, que pide un bloque concreto al servidor. La filosofía consiste en el que el cliente puede solicitar al Web Service cualquier bloque, hasta que considere que finalmente tiene el archivo completo. Será responsabilidad del cliente el planificar la política de reintentos en caso de error en la descarga y la consolidación completa del archivo, de forma que minimize el tráfico con el servidor y el tiempo de descarga. Al final, cuando el cliente considere que dispone del archivo completo, calculará el hash y se lo entregará al servidor para que este disponga de la prueba definitiva de la descarga completa, y pueda modificar el estado del archivo de forma concluyente. Aporta las siguientes funcionalidades: Conocer las operaciones de descargas pendientes dado el día en que se accede al sistema. Recibir porciones de datos de un determinado archivo. Obtener el estado de una descarga. Validar la recepcion de la entrega. En general, la mayoría de las operaciones reciben entradas y devuelven respuestas de un tipo de datos a medida de la función. Alternativamente, podrían devolver un elemento de tipo ERROR si el servidor detectase un error durante la ejecución de las mismas. Las restricciones de autenticidad y no repudio obligan a que un mismo volumen sólo pueda ser descargado por un mismo usuario. Si otro representante iniciase la descarga, deberá hacerlos desde el bloque inicial. Indicar también que todas las operaciones que se realicen contra este servicio web estarán firmadas. Por parte del servidor, los mensajes SOAP que se envien estarán firmados con el certificado digital de que dispone SGDA y por parte del cliente los mensajes SOAP que envíe deberan estar firmados con el certificado digital usado para la comunicación SSL con el servidor. Pág. 17 de 49
2.3.1. Función: operacionespendientes 2.3.1.1. Descripción Permite que una entidad conozca las descargas que tiene que bajar del sistema, y el estado de las mismas. Estas se ordenarán de la siguiente forma: Una entidad al menos tendrá un servicio, aunque opcionalmente podría dar los tres servicios que se consideran en el sistema (emergencias, guías o directorio). Dentro de cada servicio, se incluirán todas las ventanas de descarga para las que la entidad puede descargar datos. El sistema impedirá que una entidad descargue datos de una ventana si tiene archivos pendientes de intervalos anteriores, para impedir que una entidad tenga datos inconsistentes. Por ejemplo, los archivos de una actualización de marzo sólo podrán obtenerse cuando se haya completado la descarga de los de la actualización de febrero. Dentro de cada ventana, los archivos se agrupan en ámbitos; serán los ámbitos territoriales en los que la entidad está habilitada. Dentro de cada ámbito, el sistema mostrará los archivos (entregas) junto con sus volúmenes y su estado. Esto incluye el último bloque que el sistema ha entregado al cliente y el número total de bloques del volumen. Por lo tanto, será responsabilidad del cliente mantener el control de los bloques que tiene que solicitar. El servidor además detectará si el sistema se encuentra en una ventana de carga; en este caso, no se podrá realizar ninguna descarga y en la respuesta no habría entradas de tipo ventana. Además, si una entidad se ha dado de alta recientemente, podrá obtener el último archivo de totales y todas las actualizaciones que haya hasta el momento. El servidor no muesra las ventanas de archivos que el cliente ya ha descargado. Conviene destacar que esta función permite al cliente conocer los identificadores de los archivos (entregas) y volúmenes que mantiene el sistema, tanto si ha comenzado o no ha descargarlos. Estos identificadores deberán usarse para la descarga y la consulta, siendo por tanto responsabilidad del cliente obtenerlos de la respuesta y almacenarlos de la forma que considere oportuna. 2.3.1.2. Entrada No recibe parámetros, salvo el identificador de la sesión. 2.3.1.3. Salida Un elemento del tipo RESPUESTA_OPERACIONES_PENDIENTES. Pág. 18 de 49
2.3.2. Función: descargardatos 2.3.2.1. Descripción Permite al cliente solicitar un bloque de datos en formato base64, pertenecientes a un archivo (entrega) y volumen. El cliente debe indicar el bloque que espera recibir, si bien el servidor conoce el último bloque que ha entregado. Es necesario resaltar que el numero del bloque almacenado por el servidor es meramente informativo y que el cliente puede solicitar cualquier bloque (no tienen por que realizarse la solicitud de bloques de forma consecutiva) en cualquier momento. Además, los indices de los bloques empiezan en 0 no en 1 por lo que hy dos formas de saber si se han descargado todos los bloques de una entrega: 1. por el estado de la entrega. 2. por que el último bloque solicitado es: numero_bloques_totales 1. Todos los bloques recibidos iran codificados en base64 lo cual significa que para obtener la información real sera necesario decodificarlos primero. Dicha operación de codificación en el servidor no se hace sobre todo el fichero y luego se recoge el bloque del tamaño indicado en la funcion de operaciones pendientes sino que recoge el bloque indicado y luego es codificado. Por tanto en el cliente será necesario primero decodificar el bloque y luego añadirlo al resto de bloques ya descargados del fichero que se esta descargando. 2.3.2.2. Entrada Un elemento del tipo SOLICITUD_DESCARGAR_DATOS 2.3.2.3. Salida Un elemento del tipo RESPUESTA_DESCARGA_DATOS 2.3.3. Función: obtenerestadodescarga 2.3.3.1. Descripción Permite al cliente conocer el estado de una descarga, a partir de un identificador de archivo. El servidor responde con la información del archivo y sus volúmenes, y el progreso de la descarga. 2.3.3.2. Entrada Un elemento de tipo SOLICITUD_ESTADO_DESCARGA 2.3.3.3. Salida Un elemento de tipo RESPUESTA_ESTADO_DESCARGA Pág. 19 de 49
2.3.4. Función: comprobardescarga 2.3.4.1. Descripción Permite al cliente comprobar que la descarga que ha realizado es correcta. Para ello debe enviar un resumen (HASH) de lo que considera que es la entrega al servidor. Alli se compara con el resumen (HASH) que envió la operadora que subió el fichero. En caso de ser iguales se responde al cliente con los datos de la entrega y si resultan diferentes se envia al cliente un mensaje de error. Esta función representa el mecanismo que el servidor tiene para averiguar cuando un cliente se ha descargado un archivo de forma completa y correcta. De esta manera, podrá cualificar el archivo en la base de datos como descargado. 2.3.4.2. Entrada Un elemento del tipo SOLICITUD_COMPROBAR_DESCARGA 2.3.4.3. Salida Un elemento del tipo RESPUESTA_COMPROBAR_DESCARGA 2.3.5. Definición WSDL A continuación se muestra el servicio download descrito en formato WSDL. <definitions xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:http="http://schemas.xmlsoap.org/wsdl/http/" xmlns:xs="http://www.w3.org/2001/xmlschema" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/" xmlns:d="https://www.sgda.cmt.es/webservices/download" xmlns:ut="https://www.sgda.cmt.es/webservices/utils" xmlns:er="https://www.sgda.cmt.es/webservices/error" xmlns:rop="https://www.sgda.cmt.es/webservices/download/operacionespendientes/respuesta" xmlns:sed="https://www.sgda.cmt.es/webservices/download/estadodescarga/solicitud" xmlns:red="https://www.sgda.cmt.es/webservices/download/estadodescarga/respuesta" xmlns:sdd="https://www.sgda.cmt.es/webservices/download/descargardatos/solicitud" xmlns:rdd="https://www.sgda.cmt.es/webservices/download/descargardatos/respuesta" targetnamespace="https://www.sgda.cmt.es/webservices/download" xmlns:scd="https://www.sgda.cmt.es/webservices/download/comprobardescarga/solicitud" xmlns:rcd="https://www.sgda.cmt.es/webservices/download/comprobardescarga/respuesta"> <types> <xs:schema> <xs:import namespace="https://www.sgda.cmt.es/webservices/utils" schemalocation="https://www.sgda.cmt.es/webservices/xsd/utils.xsd"/> <xs:import namespace="https://www.sgda.cmt.es/webservices/error" schemalocation="https://www.sgda.cmt.es/webservices/xsd/error.xsd"/> <xs:import namespace="https://www.sgda.cmt.es/webservices/download/operacionespendientes/respuesta" schemalocation="https://www.sgda.cmt.es/webservices/xsd/download/respuestaoperacionespendientes.xsd"/> <xs:import namespace="https://www.sgda.cmt.es/webservices/download/estadodescarga/solicitud" schemalocation="https://www.sgda.cmt.es/webservices/xsd/download/solicitudestadodescarga.xsd"/> <xs:import namespace="https://www.sgda.cmt.es/webservices/download/estadodescarga/respuesta" schemalocation="https://www.sgda.cmt.es/webservices/xsd/download/respuestaestadodescarga.xsd"/> Pág. 20 de 49
<xs:import namespace="https://www.sgda.cmt.es/webservices/download/descargardatos/solicitud" schemalocation="https://www.sgda.cmt.es/webservices/xsd/download/solicituddescargardatos.xsd"/> <xs:import namespace="https://www.sgda.cmt.es/webservices/download/descargardatos/respuesta" schemalocation="https://www.sgda.cmt.es/webservices/xsd/download/respuestadescargardatos.xsd"/> <xs:import namespace="https://www.sgda.cmt.es/webservices/download/comprobardescarga/solicitud" schemalocation="http://www.sgda.cmt.es/webservices/xsd/download/solicitudcomprobardescarga.xsd"/> <xs:import namespace="https://www.sgda.cmt.es/webservices/download/comprobardescarga/respuesta" schemalocation="http://www.sgda.cmt.es/webservices/xsd/download/respuestacomprobardescarga.xsd"/> </xs:schema> </types> <message name="respuestaerror"> <part name="respuesta" type="er:error"/> <message name="solicitudoperacionespendientes"> <part name="sessionheader" type="ut:sessionid"/> <message name="respuestaoperacionespendientes"> <part name="respuesta" type="rop:operacionespendientes"/> <part name="sessionheader" type="ut:sessionid"/> <message name="solicituddescargardatos"> <part name="solicitud" type="sdd:solicituddescargardatos"/> <part name="sessionheader" type="ut:sessionid"/> <message name="respuestadescargardatos"> <part name="respuesta" type="rdd:respuestadescargardatos"/> <part name="sessionheader" type="ut:sessionid"/> <message name="solicitudestadodescarga"> <part name="solicitud" type="sed:solicitudestadodescarga"/> <part name="sessionheader" type="ut:sessionid"/> <message name="respuestaestadodescarga"> <part name="respuesta" type="red:respuestaestadodescarga"/> <part name="sessionheader" type="ut:sessionid"/> <message name="solicitudcomprobardescarga"> <part name="solicitud" type="scd:solicitudcomprobardescarga"/> <part name="sessionheader" type="ut:sessionid"/> <message name="respuestacomprobardescarga"> <part name="respuesta" type="rcd:respuestacomprobardescarga"/> <part name="sessionheader" type="ut:sessionid"/> <porttype name="downloadservice"> <operation name="operacionespendientes"> <input message="d:solicitudoperacionespendientes"/> <output message="d:respuestaoperacionespendientes"/> <fault name="error" message="d:respuestaerror"/> <operation name="descargardatos"> <input message="d:solicituddescargardatos"/> <output message="d:respuestadescargardatos"/> <fault name="error" message="d:respuestaerror"/> <operation name="estadodescarga"> <input message="d:solicitudestadodescarga"/> <output message="d:respuestaestadodescarga"/> <fault name="error" message="d:respuestaerror"/> <operation name="comprobardescarga"> <input message="d:solicitudcomprobardescarga"/> <output message="d:respuestacomprobardescarga"/> Pág. 21 de 49
<fault name="error" message="d:respuestaerror"/> </porttype> <binding name="downloadservicesoapbinding" type="d:downloadservice"> <soap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http"/> <operation name="operacionespendientes"> <soap:operation style="rpc"/> <input> <soap:header message="d:solicitudoperacionespendientes" part="sessionheader" use="encoded" namespace="https://www.sgda.cmt.es/webservices/download"/> <soap:body use="encoded" namespace="https://www.sgda.cmt.es/webservices/download"/> </input> <output> <soap:header message="d:respuestaoperacionespendientes" part="sessionheader" use="encoded" namespace="https://www.sgda.cmt.es/webservices/download"/> <soap:body use="encoded" namespace="https://www.sgda.cmt.es/webservices/download"/> </output> <fault name="error"> <soap:fault name="error" use="encoded" namespace="https://www.sgda.cmt.es/webservices/download"/> </fault> <operation name="descargardatos"> <soap:operation style="rpc"/> <input> <soap:header message="d:solicituddescargardatos" part="sessionheader" use="encoded" namespace="https://www.sgda.cmt.es/webservices/download"/> <soap:body use="encoded" namespace="https://www.sgda.cmt.es/webservices/download"/> </input> <output> <soap:header message="d:respuestadescargardatos" part="sessionheader" use="encoded" namespace="https://www.sgda.cmt.es/webservices/download"/> <soap:body use="encoded" namespace="https://www.sgda.cmt.es/webservices/download"/> </output> <fault name="error"> <soap:fault name="error" use="encoded" namespace="https://www.sgda.cmt.es/webservices/download"/> </fault> <operation name="estadodescarga"> <soap:operation style="rpc"/> <input> <soap:header message="d:solicitudestadodescarga" part="sessionheader" use="encoded" namespace="https://www.sgda.cmt.es/webservices/download"/> <soap:body use="encoded" namespace="https://www.sgda.cmt.es/webservices/download"/> </input> <output> <soap:header message="d:respuestaestadodescarga" part="sessionheader" use="encoded" namespace="https://www.sgda.cmt.es/webservices/download"/> <soap:body use="encoded" Pág. 22 de 49
namespace="https://www.sgda.cmt.es/webservices/download"/> </output> <fault name="error"> <soap:fault name="error" use="encoded" namespace="https://www.sgda.cmt.es/webservices/download"/> </fault> <operation name="comprobardescarga"> <soap:operation style="rpc"/> <input> <soap:header message="d:solicitudcomprobardescarga" part="sessionheader" use="encoded" namespace="https://www.sgda.cmt.es/webservices/download"/> <soap:body use="encoded" namespace="https://www.sgda.cmt.es/webservices/download"/> </input> <output> <soap:header message="d:respuestacomprobardescarga" part="sessionheader" use="encoded" namespace="https://www.sgda.cmt.es/webservices/download"/> <soap:body use="encoded" namespace="https://www.sgda.cmt.es/webservices/download"/> </output> <fault name="error"> <soap:fault name="error" use="encoded" namespace="https://www.sgda.cmt.es/webservices/download"/> </fault> </binding> <service name="downloadservice"> <port name="downloadservice" binding="d:downloadservicesoapbinding"> <soap:address location="https://www.sgda.cmt.es/webservices/services/downloadservice"/> </port> </service> </definitions> Tabla 3 download.wsdl 2.4. Servicio web: Operaciones Pendientes para cargas Este servicio proporciona otra forma de obtener la lista de operaciones pendientes de carga. El servicio web se encarga de proporcionar la misma información que la función operacionespendientes del servicio web Upload solo que en vez de realizar una sola llamada para obtener toda la información de operaciones pendientes, es necesario hacer sucesivas llamadas a las funciones definidas en el mismo. La razón de proporcionar este nuevo servicio es proporcionar un mecanismo a las operadores que deben cargar muchos ficheros para obtener la informacion de operaciones pendientes de carga de forma escalonada evitando asi tener que procesar un mensaje SOAP que puede llegar a ser excesivamente largo. Pág. 23 de 49
La operativa de este servicio web sería: 1. invocar la función solicitudfranjas. Dicha funcion, como se verá en su descripción, proporciona las ventanas de cargas disponibles para las diferentes operadoras representadas por el usuario. 2. Por cada una de las ventanas obtenidas en el paso anterior invocar la función solicitudarchivos que devolverá los archivos a cargar para la ventana especificada. El servicio web se ha implementado de forma que a pesar de tener que invocar a más funciones, la información obtenida sea la misma que si se invocara la función operacionespendientes del servicio web Upload por lo que a este servicio se le pueden aplicar las mismas restricciones y caracteristicas que a dicha función. Como es lógico, tras obtener la infomacion de operaciones pendientes de carga el usuario debera cargar los ficheros especificados usando las funciones que para ello proporciona el servicio web Upload. Las operaciones del servicio web reciben entradas y devuelven respuestas de un tipo de datos a medida de la función pudiendo devolver un elemento de tipo ERROR si el servidor detectase un error durante la ejecución de las mismas. Indicar también que todas las operaciones que se realicen contra este servicio web estarán firmadas. Por parte del servidor, los mensajes SOAP que se envien estarán firmados con el certificado digital de que dispone SGDA y por parte del cliente los mensajes SOAP que envíe deberan estar firmados con el certificado digital usado para la comunicación SSL con el servidor. 2.4.1. Funcion: solicitudfranjas 2.4.1.1. Descripción Permite al usuario obtener la lista de ventanas de cargas por cada ambito de las diferentes operadoras representadas por el usuario. Asi el usuario obtendra una estructura de datos como sigue: La lista de operadoras representadas por el usuario. Por cada operadora recibira la lista de ambitos para los que tiene habilitaciones. Por cada ambito recibira las fechas de referencia de cada una de las ventanas en las que tenga un archivo que cargar. Ademas, en el mensaje SOAP de entrada de la función el usuario disponde de un flag que le permite indicar al servidor si desea que le proporciones la lista de todas las ventanas en las que puede cargar ficheros (en caso de que existieran ventanas anteriores) o solo la última de dichas ventanas. Pág. 24 de 49
2.4.1.2. Entrada Un elemento de tipo SOLICITUD_FRANJAS. 2.4.1.3. Salida Un elemento de tipo RESPUESTA_FRANJAS_UPLOAD. 2.4.2. Funcion: solicitudarchivos 2.4.2.1. Descripción A partir de los datos obtenidos con la invocación a la funcion anterior el usuario debe invocar esta funcion para obtener la lista de ficheros que puede cargar para una ventana, ambito y operadora determinada. Esta función se deberá invocar tantas veces como operadoras, ambitos y ventanas se hayan obtenido en la invocación de la función anterior para obtener la misma información que se obtenía con la invocación de la función operacionespendientes del servicio web Upload. Como se ha explicado en la descripción del servicio web, las estructuras de datos devueltas por esta función coinciden con las devueltas por la función operacionespendientes del servicio web Upload y tiene las mismas caractaristicas y restricciones. 2.4.2.2. Entrada Un elemento de tipo SOLICTUD_ARCHIVOS_UPLOAD 2.4.2.3. Salida Un elemento de tipo RESPUESTA_ARCHIVOS_UPLOAD Pág. 25 de 49
2.4.3. DefinicionWSDL A continuación se muestran los servicios operacionespendientes para cargas y descargas descritos en formato WSDL. Se presentan ambos por que estan definidos en el mismo fichero. <definitions xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:http="http://schemas.xmlsoap.org/wsdl/http/" xmlns:xs="http://www.w3.org/2001/xmlschema" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/" xmlns:u="https://www.sgda.cmt.es/webservices/operacionespendientes2" xmlns:uop="https://www.sgda.cmt.es/webservices/upload/operacionespendientes" xmlns:dop="https://www.sgda.cmt.es/webservices/download/operacionespendientes" xmlns:ut="https://www.sgda.cmt.es/webservices/utils" xmlns:er="https://www.sgda.cmt.es/webservices/error" targetnamespace="https://www.sgda.cmt.es/webservices/operacionespendientes2"> <types> <xs:schema> <xs:import namespace="https://www.sgda.cmt.es/webservices/error" schemalocation="file:///d:/proyectos/sgdabis/web/xsd/error.xsd"/> <xs:import namespace="https://www.sgda.cmt.es/webservices/utils" schemalocation="file:///d:/proyectos/sgdabis/web/xsd/utils.xsd"/> <xs:import namespace="https://www.sgda.cmt.es/webservices/upload/operacionespendientes" schemalocation="file:///d:/proyectos/sgdabis/web/xsd/upload/operacionespendientes.xsd"/> <xs:import namespace="https://www.sgda.cmt.es/webservices/download/operacionespendientes" schemalocation="file:///d:/proyectos/sgdabis/web/xsd/download/operacionespendientes.xsd"/> <xs:import namespace="http://schemas.xmlsoap.org/soap/encoding/"/> </xs:schema> </types> <message name="respuestaerror"> <part name="respuesta" type="er:error"/> <message name="uploadsolicitudarchivos"> <part name="solicitud" type="uop:solicitudarchivosupload"/> <message name="uploadrespuestaarchivos"> <part name="respuesta" type="uop:respuestaarchivosupload"/> <message name="uploadsolicitudfranjas"> <part name="solicitud" type="ut:solicitudfranjas"/> <message name="uploadrespuestafranjas"> <part name="respuesta" type="uop:respuestafranjasupload"/> <message name="downloadsolicitudarchivos"> <part name="solicitud" type="dop:solicitudarchivosdownload"/> <message name="downloadrespuestaarchivos"> <part name="respuesta" type="dop:respuestaarchivosdownload"/> <message name="downloadsolicitudoperadores"> <part name="solicitud" type="dop:solicitudoperadores"/> <message name="downloadrespuestaoperadores"> <part name="respuesta" type="dop:respuestaoperadores"/> <message name="downloadsolicitudfranjas"> <part name="solicitud" type="ut:solicitudfranjas"/> <message name="downloadrespuestafranjas"> <part name="respuesta" type="dop:respuestafranjasdownload"/> <porttype name="uploadservice2"> Pág. 26 de 49
<operation name="solicitudfranjas"> <input message="u:uploadsolicitudfranjas"/> <output message="u:uploadrespuestafranjas"/> <fault name="error" message="u:respuestaerror"/> <operation name="solicitudarchivos"> <input message="u:uploadsolicitudarchivos"/> <output message="u:uploadrespuestaarchivos"/> <fault name="error" message="u:respuestaerror"/> </porttype> <porttype name="downloadservice2"> <operation name="solicitudfranjas"> <input message="u:downloadsolicitudfranjas"/> <output message="u:downloadrespuestafranjas"/> <fault name="error" message="u:respuestaerror"/> <operation name="solicitudoperadores"> <input message="u:downloadsolicitudoperadores"/> <output message="u:downloadrespuestaoperadores"/> <fault name="error" message="u:respuestaerror"/> <operation name="solicitudarchivos"> <input message="u:downloadsolicitudarchivos"/> <output message="u:downloadrespuestaarchivos"/> <fault name="error" message="u:respuestaerror"/> </porttype> <binding name="uploadservicesoapbinding2" type="u:uploadservice2"> <soap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http"/> <operation name="solicitudfranjas"> <soap:operation style="rpc"/> <input> <soap:body use="encoded" namespace="https://www.sgda.cmt.es/webservices/operacionespendientes2"/> </input> <output> <soap:body use="encoded" namespace="https://www.sgda.cmt.es/webservices/operacionespendientes2"/> </output> <fault name="error"> <soap:fault name="error" use="encoded" namespace="https://www.sgda.cmt.es/webservices/operacionespendientes2"/> </fault> <operation name="solicitudarchivos"> <soap:operation style="rpc"/> <input> <soap:body use="encoded" namespace="https://www.sgda.cmt.es/webservices/operacionespendientes2"/> </input> <output> <soap:body use="encoded" namespace="https://www.sgda.cmt.es/webservices/operacionespendientes2"/> </output> <fault name="error"> <soap:fault name="error" use="encoded" namespace="https://www.sgda.cmt.es/webservices/operacionespendientes2"/> </fault> </binding> <binding name="downloadservicesoapbinding2" type="u:downloadservice2"> <soap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http"/> Pág. 27 de 49
<operation name="solicitudfranjas"> <soap:operation style="rpc"/> <input> <soap:body use="encoded" namespace="https://www.sgda.cmt.es/webservices/operacionespendientes2"/> </input> <output> <soap:body use="encoded" namespace="https://www.sgda.cmt.es/webservices/operacionespendientes2"/> </output> <fault name="error"> <soap:fault name="error" use="encoded" namespace="https://www.sgda.cmt.es/webservices/operacionespendientes2"/> </fault> <operation name="solicitudoperadores"> <soap:operation style="rpc"/> <input> <soap:body use="encoded" namespace="https://www.sgda.cmt.es/webservices/operacionespendientes2"/> </input> <output> <soap:body use="encoded" namespace="https://www.sgda.cmt.es/webservices/operacionespendientes2"/> </output> <fault name="error"> <soap:fault name="error" use="encoded" namespace="https://www.sgda.cmt.es/webservices/operacionespendientes2"/> </fault> <operation name="solicitudarchivos"> <soap:operation style="rpc"/> <input> <soap:body use="encoded" namespace="https://www.sgda.cmt.es/webservices/operacionespendientes2"/> </input> <output> <soap:body use="encoded" namespace="https://www.sgda.cmt.es/webservices/operacionespendientes2"/> </output> <fault name="error"> <soap:fault name="error" use="encoded" namespace="https://www.sgda.cmt.es/webservices/operacionespendientes2"/> </fault> </binding> <service name="operacionespendientes"> <port name="uploadservice2" binding="u:uploadservicesoapbinding2"> <soap:address location="https://www.sgda.cmt.es/webservices/services/uploadservice2"/> </port> <port name="downloadservice2" binding="u:downloadservicesoapbinding2"> <soap:address location="https://www.sgda.cmt.es/webservices/services/downloadservice2"/> </port> </service> </definitions> Tabla 4 operacionespendientes.wsdl Pág. 28 de 49
2.5. Servicio web: Operaciones Pendientes para descargas Este servicio proporciona otra forma de obtener la lista de operaciones pendientes de descarga. El servicio web se encarga de proporcionar la misma información que la función operacionespendientes del servicio web Download solo que en vez de realizar una sola llamada para obtener toda la información de operaciones pendientes, es necesario hacer sucesivas llamadas a las funciones definidas en el mismo. La razón de proporcionar este nuevo servicio es proporcionar un mecanismo a las entidades que deben descargar muchos ficheros para obtener la informacion de operaciones pendientes de descarga de forma escalonada evitando asi tener que procesar un mensaje SOAP que puede llegar a ser excesivamente largo. La operativa de este servicio web sería: 3. invocar la función solicitudfranjas. Dicha funcion, como se verá en su descripción, proporciona las ventanas de descargas disponibles para las diferentes entidades representadas por el usuario. 4. Por cada una de las ventanas obtenidas en el paso anterior invocar la función solicitudoperadores que devolverá la lista de operadoras que subieron ficheros para la ventana y servicio especificado. 5. Finalmente, invocar la función solicitudarchivos que devolvera la lista de ficheros que la entidad se debe descargar para cada servicio, franja y operador. El servicio web se ha implementado de forma que a pesar de tener que invocar a más funciones, la información obtenida sea la misma que si se invocara la función operacionespendientes del servicio web Download por lo que a este servicio se le pueden aplicar las mismas restricciones y caracteristicas que a dicha función. Como es lógico, tras obtener la infomacion de operaciones pendientes de descarga el usuario debera descargar los ficheros especificados usando las funciones que para ello proporciona el servicio web Download. Las operaciones del servicio web reciben entradas y devuelven respuestas de un tipo de datos a medida de la función pudiendo devolver un elemento de tipo ERROR si el servidor detectase un error durante la ejecución de las mismas. Indicar también que todas las operaciones que se realicen contra este servicio web estarán firmadas. Por parte del servidor, los mensajes SOAP que se envien estarán firmados con el certificado digital de que dispone SGDA y por parte del cliente los mensajes SOAP que envíe deberan estar firmados con el certificado digital usado para la comunicación SSL con el servidor. Pág. 29 de 49
2.5.1. Funcion: solicitudfranjas 2.5.1.1. Descripción Permite al usuario obtener la lista de ventanas de descargas por cada sevicio de las diferentes entidades representadas por el usuario. Asi el usuario obtendra una estructura de datos como sigue: La lista de entidades representadas por el usuario. Por cada entidad recibira la lista de servicios para los que tiene habilitaciones. Por cada servicio recibira las fechas de referencia de cada una de las ventanas en las que tenga un archivo que descargar. Ademas, en el mensaje SOAP de entrada de la función el usuario disponde de un flag que le permite indicar al servidor si desea que le proporciones la lista de todas las ventanas en las que puede descargar ficheros (en caso de que existieran ventanas anteriores) o solo la última de dichas ventanas. 2.5.1.2. Entrada Un elemento de tipo SOLICITUD_FRANJAS. 2.5.1.3. Salida Un elemento de tipo RESPUESTA_FRANJAS_DOWNLOAD. 2.5.2. Funcion: solicitudoperadores 2.5.2.1. Descripción Esta funcion es invocada por el usuario por cada entidad, servicio y venta recibidos tras la invocación de la función solicitudfranjas antes descrita. Proporciona la lista de operadoras que subieron archivos en la ventana indicada y que tengan habilitaciones para el servicio también proporcionado. 2.5.2.2. Entrada Un elemento de tipo SOLICITUD_OPERADORES 2.5.2.3. Salida Un elemento de tipo RESPUESTA_SOLICITUD_OPERADORES Pág. 30 de 49
2.5.3. Funcion: solicitudarchivos 2.5.3.1. Descripción Función que se debe invocar por cada entidad, servicio, ventana y operadora recibidos con las fuciones anteriores. Esta función se deberá invocar tantas veces como entidades, servicios, ventanas y operadoras se hayan obtenido en la invocación de la función anterior para obtener la misma información que se obtenía con la invocación de la función operacionespendientes del servicio web Download. Como se ha explicado en la descripción del servicio web, las estructuras de datos devueltas por esta función coinciden con las devueltas por la función operacionespendientes del servicio web Download y tiene las mismas caractaristicas y restricciones. 2.5.3.2. Entrada Un elemento de tipo SOLICTUD_ARCHIVOS_DOWNLOAD 2.5.3.3. Salida Un elemento de tipo RESPUESTA_ARCHIVOS_ DOWNLOAD Pág. 31 de 49
2.5.4. DefinicionWSDL A continuación se muestran los servicios operacionespendientes para descargas y cargas descritos en formato WSDL. Se presentan ambos por que estan definidos en el mismo fichero. <definitions xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:http="http://schemas.xmlsoap.org/wsdl/http/" xmlns:xs="http://www.w3.org/2001/xmlschema" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/" xmlns:u="https://www.sgda.cmt.es/webservices/operacionespendientes2" xmlns:uop="https://www.sgda.cmt.es/webservices/upload/operacionespendientes" xmlns:dop="https://www.sgda.cmt.es/webservices/download/operacionespendientes" xmlns:ut="https://www.sgda.cmt.es/webservices/utils" xmlns:er="https://www.sgda.cmt.es/webservices/error" targetnamespace="https://www.sgda.cmt.es/webservices/operacionespendientes2"> <types> <xs:schema> <xs:import namespace="https://www.sgda.cmt.es/webservices/error" schemalocation="file:///d:/proyectos/sgdabis/web/xsd/error.xsd"/> <xs:import namespace="https://www.sgda.cmt.es/webservices/utils" schemalocation="file:///d:/proyectos/sgdabis/web/xsd/utils.xsd"/> <xs:import namespace="https://www.sgda.cmt.es/webservices/upload/operacionespendientes" schemalocation="file:///d:/proyectos/sgdabis/web/xsd/upload/operacionespendientes.xsd"/> <xs:import namespace="https://www.sgda.cmt.es/webservices/download/operacionespendientes" schemalocation="file:///d:/proyectos/sgdabis/web/xsd/download/operacionespendientes.xsd"/> <xs:import namespace="http://schemas.xmlsoap.org/soap/encoding/"/> </xs:schema> </types> <message name="respuestaerror"> <part name="respuesta" type="er:error"/> <message name="uploadsolicitudarchivos"> <part name="solicitud" type="uop:solicitudarchivosupload"/> <message name="uploadrespuestaarchivos"> <part name="respuesta" type="uop:respuestaarchivosupload"/> <message name="uploadsolicitudfranjas"> <part name="solicitud" type="ut:solicitudfranjas"/> <message name="uploadrespuestafranjas"> <part name="respuesta" type="uop:respuestafranjasupload"/> <message name="downloadsolicitudarchivos"> <part name="solicitud" type="dop:solicitudarchivosdownload"/> <message name="downloadrespuestaarchivos"> <part name="respuesta" type="dop:respuestaarchivosdownload"/> <message name="downloadsolicitudoperadores"> <part name="solicitud" type="dop:solicitudoperadores"/> <message name="downloadrespuestaoperadores"> <part name="respuesta" type="dop:respuestaoperadores"/> <message name="downloadsolicitudfranjas"> <part name="solicitud" type="ut:solicitudfranjas"/> <message name="downloadrespuestafranjas"> <part name="respuesta" type="dop:respuestafranjasdownload"/> <porttype name="uploadservice2"> Pág. 32 de 49
<operation name="solicitudfranjas"> <input message="u:uploadsolicitudfranjas"/> <output message="u:uploadrespuestafranjas"/> <fault name="error" message="u:respuestaerror"/> <operation name="solicitudarchivos"> <input message="u:uploadsolicitudarchivos"/> <output message="u:uploadrespuestaarchivos"/> <fault name="error" message="u:respuestaerror"/> </porttype> <porttype name="downloadservice2"> <operation name="solicitudfranjas"> <input message="u:downloadsolicitudfranjas"/> <output message="u:downloadrespuestafranjas"/> <fault name="error" message="u:respuestaerror"/> <operation name="solicitudoperadores"> <input message="u:downloadsolicitudoperadores"/> <output message="u:downloadrespuestaoperadores"/> <fault name="error" message="u:respuestaerror"/> <operation name="solicitudarchivos"> <input message="u:downloadsolicitudarchivos"/> <output message="u:downloadrespuestaarchivos"/> <fault name="error" message="u:respuestaerror"/> </porttype> <binding name="uploadservicesoapbinding2" type="u:uploadservice2"> <soap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http"/> <operation name="solicitudfranjas"> <soap:operation style="rpc"/> <input> <soap:body use="encoded" namespace="https://www.sgda.cmt.es/webservices/operacionespendientes2"/> </input> <output> <soap:body use="encoded" namespace="https://www.sgda.cmt.es/webservices/operacionespendientes2"/> </output> <fault name="error"> <soap:fault name="error" use="encoded" namespace="https://www.sgda.cmt.es/webservices/operacionespendientes2"/> </fault> <operation name="solicitudarchivos"> <soap:operation style="rpc"/> <input> <soap:body use="encoded" namespace="https://www.sgda.cmt.es/webservices/operacionespendientes2"/> </input> <output> <soap:body use="encoded" namespace="https://www.sgda.cmt.es/webservices/operacionespendientes2"/> </output> <fault name="error"> <soap:fault name="error" use="encoded" namespace="https://www.sgda.cmt.es/webservices/operacionespendientes2"/> </fault> </binding> <binding name="downloadservicesoapbinding2" type="u:downloadservice2"> <soap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http"/> Pág. 33 de 49
<operation name="solicitudfranjas"> <soap:operation style="rpc"/> <input> <soap:body use="encoded" namespace="https://www.sgda.cmt.es/webservices/operacionespendientes2"/> </input> <output> <soap:body use="encoded" namespace="https://www.sgda.cmt.es/webservices/operacionespendientes2"/> </output> <fault name="error"> <soap:fault name="error" use="encoded" namespace="https://www.sgda.cmt.es/webservices/operacionespendientes2"/> </fault> <operation name="solicitudoperadores"> <soap:operation style="rpc"/> <input> <soap:body use="encoded" namespace="https://www.sgda.cmt.es/webservices/operacionespendientes2"/> </input> <output> <soap:body use="encoded" namespace="https://www.sgda.cmt.es/webservices/operacionespendientes2"/> </output> <fault name="error"> <soap:fault name="error" use="encoded" namespace="https://www.sgda.cmt.es/webservices/operacionespendientes2"/> </fault> <operation name="solicitudarchivos"> <soap:operation style="rpc"/> <input> <soap:body use="encoded" namespace="https://www.sgda.cmt.es/webservices/operacionespendientes2"/> </input> <output> <soap:body use="encoded" namespace="https://www.sgda.cmt.es/webservices/operacionespendientes2"/> </output> <fault name="error"> <soap:fault name="error" use="encoded" namespace="https://www.sgda.cmt.es/webservices/operacionespendientes2"/> </fault> </binding> <service name="operacionespendientes"> <port name="uploadservice2" binding="u:uploadservicesoapbinding2"> <soap:address location="https://www.sgda.cmt.es/webservices/services/uploadservice2"/> </port> <port name="downloadservice2" binding="u:downloadservicesoapbinding2"> <soap:address location="https://www.sgda.cmt.es/webservices/services/downloadservice2"/> </port> </service> </definitions> Tabla 5 operacionespendientes.wsdl Pág. 34 de 49
3. Protocolo de Intercambio Los siguientes diagramas representan casos de uso del sistema. Recogen el orden en que los clientes deberían realizar las invocaciones para interactuar con el sistema, propone ejemplos de la información que debe intercambiarse. 3.1. Upload 3.1.1. Subida de datos al sistema. El cliente hace login, y a continuación consulta las operaciones pendientes en el sistema. El servidor responderá con la lista de archivos que debe subir, y el estado de los mismos. En el ejemplo, se indica que debe entregar el archivo con identificador 134, que corresponde a la Actualización de un fichero de Guías de Madrid, que no ha sido caracterizado. El cliente solicita comenzar un envío, para lo que debe caracterizar el volumen. Lo hará enviando en un bloque de datos firmados la fecha de extracción, el número de entregas, el número total de volúmenes, la ruta en disco, etc. Utilizará el identificador de archivo que haya recibido. En el ejemplo, se indica que se desea comenzar la subida del primer volumen de un total de dos. También añade el resumen firmado del archivo. El servidor responde con el identificador de envío asociado, el tamaño de cada bloque que se espera recibir y el número total de bloques en que debe dividirse la entrega. En el ejemplo, se indica que el servidor ha creado el envio cuyo identificador es 8743, que espera recibir el primer bloque de un total de 16 y que cada uno de ellos de 1048576 bytes. El cliente comienza entonces un ciclo de transferencia; realizará tantas invocaciones a la función enviardatos como bloques deba subir. En cada invocación deberá indicar el identificador de envío, de archivo y de bloque, así como los datos en formato base64. El primer identificador de envio sera el cero y se ira incrementando hasta que su valor sea igual al número total de bloques menos uno. El servidor responderá con la confirmación de haber consolidado el bloque recibido. Cuando reciba el último bloque, enviará un resguardo de entrega, que servirá de justificante al Operador. Pág. 35 de 49
CLIENTE SERVIDOR login ( ) operacionespendientes() <fecha>2004-06-18</fecha> <num_vols>2</num_vols> RESPUESTA_OPERACIONES_PENDIENTES <volumen_actual>1</volumen_actual> <ruta>c:\entregas\...</ruta> <fichero>121_060604_g_a_28_01.zip</ fichero> empezarvolumen (SOLICITUD_INICIAR_VOLUMEN) <id_fichero>134</id_fichero> <hash_fichero>32fe </hash_fichero>... RESPUESTA_INICIAR_VOLUMEN <id_envio>8743</id_envio> <id_archivo>134</id_archivo> <id_bloque>1</id_bloque> <datos>a156bbff...</datos>... <id_envio>8743</id_envio> <id_archivo>134</id_archivo> <id_bloque>16</id_bloque> <datos>0a56be...</datos>... Sesion enviardatos (SOLICITUD_ENVIAR_DATOS) RESPUESTA_ENVIAR_DATOS... enviardatos (SOLICITUD_ENVIAR_DATOS) RESPUESTA_ENVIAR_DATOS. <ambito id=28> <archivo id=134> <categoria>a</categoria> <tipo>g</tipo> <estado>-1</estado> </archivo> </ambito>... <id_archivo>134</id_archivo> <id_envio>8743</id_envio> <tamano_bloque>1048576</ tamano_bloque> <total_bloques>16</total_bloques> <bloque_esperado>1</ bloque_esperado> <id_envio>8743</id_envio> <id_archivo>134</id_archivo> <id_bloque>1</id_bloque>... <id_envio>8743</id_envio> <id_archivo>134</id_archivo> <id_bloque>16</id_bloque> <resguardo> </resguardo>... Figura 1 Subida de un archivo al sistema Pág. 36 de 49
3.1.2. Continuar Volumen El cliente accede al sistema, y solicita las operaciones pendientes. El servidor responde con la lista de archivos que debe subir y el estado de los mismos. En concreto, indica que el archivo 134 tiene un volumen que se encuentra en carga. De los 16 bloques que se esperaban recibir, el servidor ha consolidado 12. El cliente solicita retomar la carga del volumen 1 del archivo 134. El servidor crea un envío, identificado por el número 9501. Informa al cliente que espera recibir el bloque 13, así como el tamaño que debe tener el bloque, etc. A partir de aquí, el proceso es análogo al descrito anteriormente. CLIENTE SERVIDOR login ( ) <id_archivo>134</id_archivo> <id_volumen>1</id_volumen>... Sesion operacionespendientes() RESPUESTA_OPERACIONES_PENDIENTES continuarvolumen (SOLICITUD_CONTINUAR_VOLUMEN) RESPUESTA_CONTINUAR_VOLUMEN... enviardatos (SOLICITUD_ENVIAR_DATOS). <ambito id=28> <archivo id=134> <categoria>a</categoria> <tipo>g</tipo> <estado>2</estado> <volumen id=1> <num_bloques>16<num_bloques> <bloque>12</bloque> <tam_bloque>1048576</ tam_bloque>... </volumen> </archivo> </ambito>... <id_archivo>134</id_archivo> <id_envio>9501</id_envio> <tamano_bloque>1048576</ tamano_bloque> <total_bloques>16</total_bloques> <bloque_esperado>13</ bloque_esperado> Figura 2 Continuar Volumen Pág. 37 de 49
3.1.3. Otras operaciones Para conocer el estado de una entrega, se debe usar el identificador de archivo. Para anular un volumen, se deberá usar el identificador de archivo y el identificador del volumen dentro del archivo. El servidor responde indicando que el estado del volumen anulado es no caracterizado. Sin embargo, esta operación no afecta al resto de volúmenes. Para anular una entrega, basta con el identificador de archivo. Esto elimina todos los volúmenes que se hubieran caracterizado, dejando el estado del archivo (entrega) en no caracterizado. CLIENTE SERVIDOR login ( ) <id_archivo>134</id_archivo>... <id_archivo>134</id_archivo> <id_volumen>1</id_volumen>... <id_archivo>134</id_archivo>... Sesion obtenerestadoentrega (SOLICITUD_ESTADO_ENTREGA) RESPUESTA_ESTADO_ENTREGA anularvolumen (SOLICITUD_ANULAR_VOLUMEN) RESPUESTA_ANULAR_VOLUMEN anularentrega (SOLICITUD_ANULAR_ENTREGA) RESPUESTA_ANULAR_ENTREGA. <archivo id=134> <categoria>a</categoria> <tipo>g</tipo> <estado>2</estado> <volumen id=1> <num_bloques>16<num_bloques> <bloque>12</bloque> <tam_bloque>1048576</ tam_bloque>... </volumen> </archivo>... <id_archivo>134</id_archivo> <id_volumen>1</id_volumen> <estado>-1</estado>... <id_archivo>134</id_archivo> <estado>-1</estado>... Figura 3 Otras operaciones Pág. 38 de 49
3.2. Download 3.2.1. Descarga de datos El cliente hace login, y solicita al sistema las operaciones pendientes. El servidor responde con la lista de servicios para los que está habilitada la entidad. Dentro de cada uno de ellos, muestra las ventanas de descarga que la entidad debe completar. Las ventas de descargas se ordenan en los ámbitos en los que presta servicio la entidad, y dentro de cada uno de ellos, se recogen los archivos (entregas) y los volúmenes de los mismos. De esta forma, la entidad podría conocer que para el servicio 0, hay archivos correspondientes a la ventana del 14 de Junio de 2004. En el ámbito 18 puede encontrar, entre otros, el archivo 134 usado en el ejemplo de subida anterior, y los volúmenes de los que se compone. Para cada volumen, el número de bloques, el último bloque entregado y el tamaño de los mismos. Además, el estado de archivos y volúmenes. De esta forma, el cliente sabría que tiene que empezar a descargar el bloque 1 (o el que considere oportuno según sus propias relgas de descarga) del volumen 1 del archivo 134. Además, deberá decir a qué entidad está representando, ya que el sistema necesita saber qué archivos ha descargado qué entidad. Con estos datos puede invocar al servidor para recibir los datos que correspondan. El servidor devuelve el bloque correspondiente. Cuando el cliente considera que ha terminado la descarga solicita al servidor una comprobación de la descarga enviando un resumen (HASH) codificado en hexadecimal del fichero que ha descargado. El servidor, al considerar que se ha realizado correctamente la descarga, contesta con los datos de la entrega ademas de con un resguardo de la misma. Pág. 39 de 49
CLIENTE SERVIDOR <archivo>134</archivo> <volumen>1</volumen> <bloque>1</bloque> <entidad>7</entidad>... <archivo>134</archivo> <volumen>1</volumen> <hash>213ac34...</hash>... login ( ) Sesion operacionespendientes RESPUESTA_OPERACIONES_PENDIENTES descargardatos (SOLICITUD_DESCARGAR_DATOS) RESPUESTA_DESCARGAR_DATOS... comprobardescarga(solicitud_comprobar_descarga) RESPUESTA_COMPROBAR_DESCARGA. <servicio id= 0> <ventana fechareferencia=2004-06-14> <ambito id=28> <archivo id=134> <categoria>a</categoria> <tipo>g</tipo> <estado>0</estado> <volumen id=1> </volumen>... </archivo>. </ambito>. <ventana>. </servicio>... <archivo>134</archivo> <volumen>1</volumen> <bloque>1</bloque> <datos>a156bbff...</datos> <archivo>134</archivo> <volumen>1</volumen> <resguardo>... </resguardo>... Figura 4 Descarga de datos Pág. 40 de 49
3.2.2. Otras operaciones La entidad podrá conocer el estado de una descarga. Para ello, invoca a la función obtenerestadodescarga a partir de un identificador de archivo. El servidor responde con los datos del archivo, así como con el estado de las descargas de sus volúmenes. CLIENTE SERVIDOR login ( ) <id_archivo>134</id_archivo>... Sesion obtenerestadodescarga (SOLICITUD_ESTADO_DESCARGA) RESPUESTA_ESTADO_DESCARGA <categoria>a</categoria> <tipo>g</tipo> <ccc>121</ccc> <ambito>28</ambito> <volumen> <bloque>7</bloque> <tam_bloque>1048576</tam_bloque> <num_bloques>16</num_bloques>... </volumen> <volumen>... Figura 5 Otras operaciones Pág. 41 de 49
4. Definiciones y Esquemas A continuación, se presentan los esquemas de tipos de datos. Se han agrupado en namespaces, y dentro de ellos, en las funciones definidas. 4.1. Login, Upload y Download ERROR Un error está compuesto de un código (un número identificativo de error) y un motivo (una descripción textual del mismo). <?xml version="1.0" encoding="utf-8"?> <xs:schema targetnamespace="https://www.sgda.cmt.es/webservices/error" xmlns:xs="http://www.w3.org/2001/xmlschema" xmlns="https://www.sgda.cmt.es/webservices/error" elementformdefault="qualified" attributeformdefault="unqualified"> <xs:complextype name="error"> <xs:element name="sesion" type="xs:int"/> <xs:element name="codigo" type="xs:int"/> <xs:element name="motivo" type="xs:string"/> <xs:element name="error" type="error"/> </xs:schema> Tabla 6 Login, Upload y Download ERROR Pág. 42 de 49
4.2. Upload y Download: Utilidades Se definen una serie de elementos comunes que podrán ser usados como integrantes de otros tipos y funciones, asi como vectores de elementos. Acontinuacion se detallan los tipos elementos comunes: Ambito. Contiene la información relativa a la lista de archivos de un ambito que el cliente debe cargar o descargar. ARCHIVO: Vector de archivos a cargar/descargar. Sigue la definición del tipo ARCHIVO. idambito: identificador del ambito. EstadoArchivo. Mantiene información sobre el estado de un archivo de datos de abonado desde el punto de vista del Operador. Podrá tomar los valores: -1, si el operador no lo ha caracterizado (es decir, si no ha proporcionado los datos previos a la carga del archivo en el sistema) 0, si el archivo está actualizado, y subido correctamente al sistema. Esto significa que están completos todos los volúmenes que componen la entrega. 1, si el archivo ha sido caracterizado, pero el operador no ha comenzado a enviar ningún bloque de ninguno de los volúmenes. 2, si el operador ha comenzado a subir bloques de volúmenes, y por tanto la carga está en proceso. Categoría. Representa la categoría de los archivos de datos de abonado, según define la Circular. Podrá ser T para los archivos de totales o A para las actualizaciones. Tipo. Representa el tipo de los archivos de datos de abonado por servicio, según define la Circular. Podrá ser E para servicios de emergencias, D para servicios de directorio y G para servicios de guías. VolumenRuta. Este tipo identifica un volumen, según la ruta en disco. Se utiliza para almacenar información sobre el estado de un volumen en el sistema. Contiene: idvolumen: identificador del volumen en el sistema RUTA: en el directorio del cliente donde se encuentra el volumen. BLOQUE: último bloque de datos consolidado en el sistema. Pág. 43 de 49
NUM_BLOQUES: número total de bloques de datos en que se divide el volumen. TAM_MENSAJE: tamaño en bytes del mensaje. TAM_BLOQUE: tamaño en bytes del bloque de datos que se intercambia entre el cliente y el servidor. Volumen. Este tipo identifica un volumen, según el identificador de archivo. Se utiliza para almacenar información sobre la transferencia de datos. Contiene: ID_ENVIO: identificador de la transferencia de datos en curso. TOTAL_BLOQUES: número total de bloques de datos en que se divide el volumen. TAMANO_BLOQUE: tamaño en bytes del bloque de datos que se intercambia entre el cliente y el servidor. BLOQUE_ESPERADO: siguiente bloque que debe enviarse al servidor. Archivo. Representa la información sobre un archivo en el sistema. Contiene: idarchivo: identificador del archivo en el sistema. CATEGORIA. Según la definición Categoría. TIPO. Según la definición Tipo. ESTADO. Según la definición EstadoArchivo. VOLUMEN. Vector de VolumenRuta. SessionId: identificador de la sesión que se esta utilizando. SolicitudFranjas: Rrepresenta una solicitud de franjas de cargas o descargas en los servicio web de operaciones pendientes. Pág. 44 de 49
<?xml version="1.0" encoding="utf-8"?> <xs:schema targetnamespace="https://www.sgda.cmt.es/webservices/utils" xmlns="https://www.sgda.cmt.es/webservices/utils" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:xs="http://www.w3.org/2001/xmlschema" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"> <xs:import namespace="http://schemas.xmlsoap.org/soap/encoding/"/> <xs:complextype name="arrayofarchivo"> <xs:complexcontent> <xs:restriction base="soapenc:array"> <xs:attribute ref="soapenc:arraytype" wsdl:arraytype="archivo[]"/> </xs:restriction> </xs:complexcontent> <xs:complextype name="arrayofvolumenruta"> <xs:complexcontent> <xs:restriction base="soapenc:array"> <xs:attribute ref="soapenc:arraytype" wsdl:arraytype="volumenruta[]"/> </xs:restriction> </xs:complexcontent> <xs:complextype name="ambito"> <xs:element name="archivo" type="arrayofarchivo"/> <xs:element name="idambito" type="xs:int"/> <xs:simpletype name="estadoarchivo"> <xs:restriction base="xs:string"> <xs:enumeration value="-1"/> <xs:enumeration value="0"/> <xs:enumeration value="1"/> <xs:enumeration value="2"/> </xs:restriction> </xs:simpletype> <xs:simpletype name="categoria"> <xs:restriction base="xs:string"> <xs:enumeration value="a"/> <xs:enumeration value="t"/> </xs:restriction> </xs:simpletype> <xs:simpletype name="tipo"> <xs:restriction base="xs:string"> <xs:enumeration value="e"/> <xs:enumeration value="g"/> <xs:enumeration value="d"/> </xs:restriction> </xs:simpletype> <xs:complextype name="volumenruta"> <xs:element name="ruta" type="xs:string"/> <xs:element name="bloque" type="xs:long"/> <xs:element name="num_bloques" type="xs:long"/> <xs:element name="tam_mensaje" type="xs:long"/> <xs:element name="tam_bloque" type="xs:long"/> <xs:element name="idvolumen" type="xs:int"/> <xs:complextype name="volumen"> <xs:element name="id_envio" type="xs:long"/> <xs:element name="tamano_bloque" type="xs:long"/> <xs:element name="total_bloques" type="xs:long"/> <xs:element name="bloque_esperado" type="xs:long"/> <xs:complextype name="archivo"> Pág. 45 de 49
<xs:element name="categoria" type="categoria"/> <xs:element name="tipo" type="tipo"/> <xs:element name="estado" type="estadoarchivo"/> <xs:element name="volumen" type="arrayofvolumenruta"/> <xs:element name="idarchivo" type="xs:int"/> <xs:complextype name="sessionid"> <xs:element name="sessionid" type="xs:int"/> <xs:complextype name="solicitudfranjas"> <xs:element name="sessionheader" type="sessionid"/> <!--Por defecto solo se envia la ultima franja a no ser que este elemento en la solicitud este a true--> <xs:element name="historico" type="xs:boolean" default="false"/> <xs:element name="archivo" type="archivo"/> </xs:schema> Tabla 7 Upload y Download: UTILIDADES 4.3. Upload, RESPUESTA_OPERACIONES_PENDIENTES Devuelve al cliente la lista de operadores a los que representa incluyendo las operaciones de carga pendientes, ordenadas de la siguiente manera: Por cada operador al que represente le proporcionará un conjunto de elementos de tipo Ámbito, identificados por el código según se define en la Circular. Estos serán los ámbitos para los que el Operador debe realizar entregas; en principio serán aquellos ámbitos geográficos en los que el Operador esté habilitado, y el ámbito nacional. Dentro de cada Ámbito, habrá elementos de tipo Archivo (definido en el esquema de utilidades). En principio, en el ámbito Nacional habrá un archivo para numeración de Directorio, y en el resto de ámbitos provinciales habrá un archivo para Emergencias y Guías. Además, para cada archivo se incluye su identificador único en el sistema. Si el operador no tuviese operaciones pendientes, por no encontrarse dentro de una ventana de carga, no devolvería entradas. También se obtiene de esta respuesta las fechas de inicio y finalizacion del periodo de carga en curso. Pág. 46 de 49
<?xml version="1.0" encoding="utf-8"?> <xs:schema targetnamespace="https://www.sgda.cmt.es/webservices/upload/operacionespendientes/respuesta" xmlns:u="https://www.sgda.cmt.es/webservices/utils" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns="https://www.sgda.cmt.es/webservices/upload/operacionespendientes/respuesta" xmlns:xs="http://www.w3.org/2001/xmlschema" elementformdefault="qualified" attributeformdefault="unqualified"> <xs:import namespace="https://www.sgda.cmt.es/webservices/utils" schemalocation="https://www.sgda.cmt.es/webservices/xsd/utils.xsd"/> <xs:complextype name="arrayofoperador"> <xs:complexcontent> <xs:restriction base="soapenc:array"> <xs:attribute ref="soapenc:arraytype" wsdl:arraytype="operador[]"/> </xs:restriction> </xs:complexcontent> <xs:complextype name="arrayofambito"> <xs:complexcontent> <xs:restriction base="soapenc:array"> <xs:attribute ref="soapenc:arraytype" wsdl:arraytype="u:ambito[]"/> </xs:restriction> </xs:complexcontent> <xs:complextype name="operador"> <xs:element name="ambito" type="arrayofambito"/> <xs:element name="idoperador" type="xs:int"/> <xs:complextype name="operacionespendientes"> <xs:element name="operador" type="arrayofoperador"/> <xs:element name="fechainicio" type="xs:datetime"/> <xs:element name="fechafinal" type="xs:datetime"/> <xs:element name="respuesta_operaciones_pendientes" type="operacionespendientes"/> </xs:schema> Tabla 8 Upload, RESPUESTA_OPERACIONES_PENDIENTES Pág. 47 de 49
4.4. Upload, SOLICITUD_INICIAR_VOLUMEN Permite al Operador realizar una solicitud para comenzar la carga de uno de los volúmenes que compone un archivo de datos de abonado. Incluirá: Fecha de extracción de los datos. Número de volúmenes que componen la entrega. Volumen que desea comenzar a subirse. El primer volumen de una entrega tendrá el número 1. Ruta en el equipo cliente donde se encuentra el archivo (para mantener la compatibilidad con el resto del sistema) Nombre del fichero que se desea subir. Identificador del fichero en el sistema, recibido en una respuesta a una solicitud de las operaciones pendientes. Resumen del archivo, un Hash, realizado con el algoritmo SHA con el certificado del usuario. Estará codificado en hexadecimal. El servidor lo usará para comprobar la integridad del archivo una vez que este haya sido subido al sistema. <?xml version="1.0" encoding="utf-8"?> <xs:schema targetnamespace="https://www.sgda.cmt.es/webservices/upload/iniciarvolumen/solicitud" xmlns="https://www.sgda.cmt.es/webservices/upload/iniciarvolumen/solicitud" xmlns:xs="http://www.w3.org/2001/xmlschema" elementformdefault="qualified" attributeformdefault="unqualified"> <xs:complextype name="iniciarvolumen"> <xs:element name="fecha" type="xs:datetime"/> <xs:element name="num_vols" type="xs:int"/> <xs:element name="volumen_actual" type="xs:int"/> <xs:element name="ruta" type="xs:string"/> <xs:element name="fichero" type="xs:string"/> <xs:element name="id_fichero" type="xs:int"/> <xs:element name="hash_fichero" type="xs:string"/> <xs:element name="tamano_fichero" type="xs:long"/> <xs:element name="solicitud_iniciar_volumen" type="iniciarvolumen"/> </xs:schema> Tabla 9 Upload, SOLICITUD_INICIAR_VOLUMEN Pág. 48 de 49
4.5. Upload, RESPUESTA_INICIAR_VOLUMEN El servidor responde al cliente con los datos del volumen, como un elemento del tipo Volumen definido en el esquema de utilidades. Es de especial importancia el campo donde el servidor devuelve el identificador que se ha asignado al envío (identificado en Volumen.ID_ENVIO). En efecto, el cliente deberá parsearlo y utilizarlo en los envíos de datos asociados, según el protocolo de transferencia citado anteriormente. <?xml version="1.0" encoding="utf-8"?> <xs:schema targetnamespace="https://www.sgda.cmt.es/webservices/upload/iniciarvolumen/respuesta" xmlns="https://www.sgda.cmt.es/webservices/upload/iniciarvolumen/respuesta" xmlns:u="https://www.sgda.cmt.es/webservices/utils" xmlns:xs="http://www.w3.org/2001/xmlschema" elementformdefault="qualified" attributeformdefault="unqualified"> <xs:import namespace="https://www.sgda.cmt.es/webservices/utils" schemalocation="https://www.sgda.cmt.es/webservices/xsd/utils.xsd"/> <xs:element name="respuesta_iniciar_volumen" type="u:volumen"/> </xs:schema> Tabla 10 Upload, RESPUESTA_INICIAR_VOLUMEN 4.6. Upload, SOLICITUD_ENVIAR_DATOS Esta definición permite al cliente transmitir bloques de datos al servidor. Para ello deberá identificar el archivo y el bloque con el que está operando, y el identificador de envió que le asignó el servidor. También deberá adjuntar los datos en formato base64, extraídos tal y como se ha descrito en el protocolo de transferencia citado anteriormente. <?xml version="1.0" encoding="utf-8"?> <xs:schema targetnamespace="https://www.sgda.cmt.es/webservices/upload/enviardatos/solicitud" xmlns="https://www.sgda.cmt.es/webservices/upload/enviardatos/solicitud" xmlns:xs="http://www.w3.org/2001/xmlschema" elementformdefault="qualified" attributeformdefault="unqualified"> <xs:complextype name="enviardatos"> <xs:element name="id_envio" type="xs:long"/> <xs:element name="id_bloque" type="xs:int"/> <xs:element name="datos" type="xs:string"/> <xs:element name="solicitud_enviar_datos" type="enviardatos"/> </xs:schema> Tabla 11 Upload, SOLICITUD_ENVIAR_DATOS Pág. 49 de 49
4.7. Upload, RESPUESTA_ENVIAR_DATOS Representa la respuesta que da el servidor a un envío de datos por parte del cliente. Contendrá: En cualquier caso, y a modo de confirmación, los mismos identificadores que envió el cliente. Es decir, los campos ID_ENVIO, ID_BLOQUE e ID_ARCHIVO que el cliente envió cuando hizo la solicitud de envío de datos. Cuando el bloque sea el último de un volumen, el resguardo de entrega del volumen en el servidor. Este resguardo contendrá un conjunto de datos con la caracterización del archivo y de la entrega (identificando al representante que la hizo y en qué momento la hizo). <?xml version="1.0" encoding="utf-8"?> <xs:schema targetnamespace="https://www.sgda.cmt.es/webservices/upload/enviardatos/respuesta" xmlns:xs="http://www.w3.org/2001/xmlschema" xmlns="https://www.sgda.cmt.es/webservices/upload/enviardatos/respuesta" elementformdefault="qualified" attributeformdefault="unqualified"> <xs:complextype name="archivoenvio"> <xs:element name="ccc" type="xs:int"/> <xs:element name="fecha" type="xs:datetime"/> <xs:element name="t" type="xs:int"/> <xs:element name="x" type="xs:int"/> <xs:element name="pp" type="xs:int"/> <xs:element name="nn" type="xs:int"/> <xs:element name="tamano" type="xs:int"/> <xs:element name="fecha_creacion" type="xs:datetime"/> <xs:element name="hash" type="xs:string"/> <xs:complextype name="resguardo"> <xs:element name="nombre_representante" type="xs:string"/> <xs:element name="nif_representante" type="xs:string"/> <xs:element name="id_transaccion" type="xs:int"/> <xs:element name="fecha" type="xs:datetime"/> <xs:element name="hora" type="xs:time"/> <xs:element name="archivo" type="archivoenvio"/> <xs:complextype name="envio"> <xs:element name="id_envio" type="xs:long"/> <xs:element name="id_archivo" type="xs:int"/> <xs:element name="id_bloque" type="xs:int"/> <xs:element name="resguardo" type="resguardo" minoccurs="0"/> <xs:element name="respuesta_enviar_datos" type="envio"/> </xs:schema> Tabla 12 Upload, RESPUESTA_ENVIAR_DATOS Pág. 50 de 49
4.8. Upload, SOLICITUD_CONTINUAR_VOLUMEN Utilizada por el cliente para reanudar la transferencia de un volumen que por cualquier motivo haya sido interrumpida. Debe indicar los identificadores de archivo y volumen para los que desea retomar la subida; habrán sido obtenidos en una llamada a la función obteneroperacionespendientes. <?xml version="1.0" encoding="utf-8"?> <xs:schema targetnamespace="https://www.sgda.cmt.es/webservices/upload/continuarvolumen/solicitud" xmlns:xs="http://www.w3.org/2001/xmlschema" xmlns="https://www.sgda.cmt.es/webservices/upload/continuarvolumen/solicitud" elementformdefault="qualified" attributeformdefault="unqualified"> <xs:complextype name="continuarvolumen"> <xs:element name="id_archivo" type="xs:int"/> <xs:element name="id_volumen" type="xs:int"/> <xs:element name="solicitud_continuar_volumen" type="continuarvolumen"/> </xs:schema> Tabla 13 Upload, SOLICITUD_CONTINUAR_VOLUMEN 4.9. Upload, RESPUESTA_CONTINUAR_VOLUMEN Devuelve una estructura de tipo Volumen, en la que el servidor indica el siguiente bloque que desea recibir. Al igual que en la respuesta a la operación de iniciar volumen, el identificador del envío forma parte de esta estructura Volumen, y deberá ser usado en las operaciones de transferencia de datos. <?xml version="1.0" encoding="utf-8"?> <xs:schema targetnamespace="https://www.sgda.cmt.es/webservices/upload/continuarvolumen/respuesta" xmlns:xs="http://www.w3.org/2001/xmlschema" xmlns:u="https://www.sgda.cmt.es/webservices/utils" xmlns="https://www.sgda.cmt.es/webservices/upload/continuarvolumen/respuesta" elementformdefault="qualified" attributeformdefault="unqualified"> <xs:import namespace="https://www.sgda.cmt.es/webservices/utils" schemalocation="https://www.sgda.cmt.es/webservices/xsd/utils.xsd"/> <xs:element name="respuesta_continuar_volumen" type="u:volumen"/> </xs:schema> Tabla 14 Upload, RESPUESTA_CONTINUAR_VOLUMEN Pág. 51 de 49
4.10. Upload, SOLICITUD_ESTADO_ENTREGA Permite al usuario conocer el estado de la carga de un archivo, a partir de su identificador en SGDA. <?xml version="1.0" encoding="utf-8"?> <xs:schema targetnamespace="https://www.sgda.cmt.es/webservices/upload/estadoentrega/solicitud" xmlns:xs="http://www.w3.org/2001/xmlschema" xmlns="https://www.sgda.cmt.es/webservices/upload/estadoentrega/solicitud" elementformdefault="qualified" attributeformdefault="unqualified"> <xs:complextype name="estadoentrega"> <xs:element name="id_archivo" type="xs:int"/> <xs:element name="solicitud_estado_entrega" type="estadoentrega"/> </xs:schema> Tabla 15 Upload, SOLICITUD_ESTADO_ENTREGA 4.11. Upload, RESPUESTA_ESTADO_ENTREGA Devuelve el estado de un archivo como una entrada del tipo Archivo definido anteriormente. <?xml version="1.0" encoding="utf-8"?> <xs:schema targetnamespace="https://www.sgda.cmt.es/webservices/upload/estadoentrega/respuesta" xmlns:xs="http://www.w3.org/2001/xmlschema" xmlns:u="https://www.sgda.cmt.es/webservices/utils" xmlns="https://www.sgda.cmt.es/webservices/upload/estadoentrega/respuesta" elementformdefault="qualified" attributeformdefault="unqualified"> <xs:import namespace="https://www.sgda.cmt.es/webservices/utils" schemalocation="https://www.sgda.cmt.es/webservices/xsd/utils.xsd"/> <xs:element name="respuesta_estado_entrega" type="u:archivo"/> </xs:schema> Tabla 16 Upload, RESPUESTA_ESTADO_ENTREGA Pág. 52 de 49
4.12. Upload, SOLICITUD_ANULAR_VOLUMEN Permite que un operador cancele la información almacenada en el sistema sobre un determinado volumen de un determinado archivo. <?xml version="1.0" encoding="utf-8"?> <xs:schema targetnamespace="https://www.sgda.cmt.es/webservices/upload/anularvolumen/solicitud" xmlns:xs="http://www.w3.org/2001/xmlschema" xmlns="https://www.sgda.cmt.es/webservices/upload/anularvolumen/solicitud" elementformdefault="qualified" attributeformdefault="unqualified"> <xs:complextype name="anularvolumen"> <xs:element name="id_archivo" type="xs:int"/> <xs:element name="id_volumen" type="xs:int"/> <xs:element name="solicitud_anular_volumen" type="anularvolumen"/> </xs:schema> Tabla 17 Upload, SOLICITUD_ANULAR_VOLUMEN 4.13. Upload, RESPUESTA_ANULAR_VOLUMEN Para los mismos identificadores que el cliente envió en la solicitud, devuelve el estado del volumen. Puesto que se borra toda la información introducida, el estado del volumen será el correspondiente a no caracterizado, es decir, -1. <?xml version="1.0" encoding="utf-8"?> <xs:schema targetnamespace="https://www.sgda.cmt.es/webservices/upload/anularvolumen/respuesta" xmlns:xs="http://www.w3.org/2001/xmlschema" xmlns:u="https://www.sgda.cmt.es/webservices/utils" xmlns="https://www.sgda.cmt.es/webservices/upload/anularvolumen/respuesta" elementformdefault="qualified" attributeformdefault="unqualified"> <xs:import namespace="https://www.sgda.cmt.es/webservices/utils" schemalocation="https://www.sgda.cmt.es/webservices/xsd/utils.xsd"/> <xs:complextype name="volumenarchivo"> <xs:element name="id_archivo" type="xs:int"/> <xs:element name="id_volumen" type="xs:int"/> <xs:element name="estado" type="u:estadoarchivo"/> <xs:element name="respuesta_anular_volumen" type="volumenarchivo"/> </xs:schema> Tabla 18 - Upload, RESPUESTA_ANULAR_VOLUMEN Pág. 53 de 49
4.14. Upload, SOLICITUD_ANULAR_ENTREGA Permite que el operador anule la información de todos los volúmenes de un determinado identificador de archivo. <?xml version="1.0" encoding="utf-8"?> <xs:schema targetnamespace="https://www.sgda.cmt.es/webservices/upload/anularentrega/solicitud" xmlns="https://www.sgda.cmt.es/webservices/upload/anularentrega/solicitud" xmlns:xs="http://www.w3.org/2001/xmlschema" elementformdefault="qualified" attributeformdefault="unqualified"> <xs:complextype name="anularentrega"> <xs:element name="id_archivo" type="xs:int"/> <xs:element name="solicitud_anular_entrega" type="anularentrega"/> </xs:schema> Tabla 19 - Upload, SOLICITUD_ANULAR_ENTREGA 4.15. Upload, RESPUESTA_ANULAR_ENTREGA Devuelve el estado del archivo, que será -1, es decir, no caracterizado. <?xml version="1.0" encoding="utf-8"?> <xs:schema targetnamespace="https://www.sgda.cmt.es/webservices/upload/anularentrega/respuesta" xmlns:xs="http://www.w3.org/2001/xmlschema" xmlns:u="https://www.sgda.cmt.es/webservices/utils" xmlns="https://www.sgda.cmt.es/webservices/upload/anularentrega/respuesta" elementformdefault="qualified" attributeformdefault="unqualified"> <xs:import namespace="https://www.sgda.cmt.es/webservices/utils" schemalocation="https://www.sgda.cmt.es/webservices/xsd/utils.xsd"/> <xs:complextype name="entrega"> <xs:element name="id_archivo" type="xs:int"/> <xs:element name="estado" type="u:estadoarchivo"/> <xs:element name="respuesta_anular_entrega" type="entrega"/> </xs:schema> Tabla 20 Upload, RESPUESTA_ANULAR_ENTREGA Pág. 54 de 49
4.16. Download, RESPUESTA_OPERACIONES_PENDIENTES Esta definición es similar a la respuesta que el servidor da a las operaciones pendientes que tiene el cliente que representa a varios operadores. En este caso, al referirse a una Entidad, muestra todos los archivos que el cliente puede puede descargar por ser representante de entidades, agrupados por las entidades, dentro de ellas por los servicios (los que preste la entidad) y dentro de estos, en ventanas (intervalos temporales de descarga). Así: Una entidad al menos tendrá un servicio, aunque opcionalmente podría dar los tres servicios que se consideran en el sistema (emergencias, guías o directorio). Dentro de cada servicio, se incluirán todas las ventanas de descarga para las que la entidad puede descargar datos. El sistema impedirá que una entidad descargue datos de una ventana si tiene archivos pendientes de intervalos anteriores, para impedir que una entidad tenga datos inconsistentes. Por ejemplo, los archivos de una actualización de marzo sólo podrán obtenerse cuando se haya completado la descarga de los de la actualización de febrero. Dentro de cada ventana, los archivos se agrupan en ámbitos; serán los ámbitos territoriales en los que la entidad está habilitada. Dentro de cada ámbito, el sistema mostrará los archivos (entregas) junto con sus volúmenes y su estado. Esto incluye el último bloque que el sistema ha entregado al cliente y el número total de bloques del volumen. Por lo tanto, será responsabilidad del cliente mantener el control de los bloques que tiene que solicitar. Conviene destacar, por tanto, que en esta respuesta el cliente obtiene los identificadores de archivo, volumen y bloque que necesita para el resto de operaciones. También se obtiene de esta respuesta las fechas de inicio y finalizacion del periodo de carga en curso. <?xml version="1.0" encoding="utf-8"?> <xs:schema targetnamespace="https://www.sgda.cmt.es/webservices/download/operacionespendientes/respuesta" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:u="https://www.sgda.cmt.es/webservices/utils" xmlns:xs="http://www.w3.org/2001/xmlschema" xmlns="https://www.sgda.cmt.es/webservices/download/operacionespendientes/respuesta" elementformdefault="qualified" attributeformdefault="unqualified"> <xs:import namespace="https://www.sgda.cmt.es/webservices/utils" schemalocation="https://www.sgda.cmt.es/webservices/xsd/utils.xsd"/> <xs:import namespace="http://schemas.xmlsoap.org/soap/encoding/"/> <xs:complextype name="arrayofambito"> <xs:complexcontent> <xs:restriction base="soapenc:array"> <xs:attribute ref="soapenc:arraytype" wsdl:arraytype="u:ambito[]"/> </xs:restriction> </xs:complexcontent> <xs:complextype name="arrayofventana"> <xs:complexcontent> <xs:restriction base="soapenc:array"> <xs:attribute ref="soapenc:arraytype" wsdl:arraytype="ventana[]"/> Pág. 55 de 49
</xs:restriction> </xs:complexcontent> <xs:complextype name="arrayofentidad"> <xs:complexcontent> <xs:restriction base="soapenc:array"> <xs:attribute ref="soapenc:arraytype" wsdl:arraytype="entidad[]"/> </xs:restriction> </xs:complexcontent> <xs:complextype name="arrayofservicio"> <xs:complexcontent> <xs:restriction base="soapenc:array"> <xs:attribute ref="soapenc:arraytype" wsdl:arraytype="servicio[]"/> </xs:restriction> </xs:complexcontent> <xs:complextype name="ventana"> <xs:element name="ambito" type="arrayofambito"/> <xs:element name="fechareferencia" type="xs:datetime"/> <xs:complextype name="servicio"> <xs:element name="ventana" type="arrayofventana"/> <xs:element name="idservicio" type="xs:int"/> <xs:complextype name="entidad"> <xs:element name="servicio" type="arrayofservicio"/> <xs:element name="identidad" type="xs:int"/> <xs:complextype name="operacionespendientes"> <xs:element name="entidad" type="arrayofentidad"/> <xs:element name="fechainicio" type="xs:datetime"/> <xs:element name="fechafinal" type="xs:datetime"/> <xs:element name="respuesta_operaciones_pendientes" type="operacionespendientes"/> </xs:schema> Tabla 21 Download, RESPUESTA_OPERACIONES_PENDIENTES Pág. 56 de 49
4.17. Download, SOLICITUD_DESCARGAR_DATOS Permite a la entidad solicitar datos de un archivo y volumen al sistema. Además, deberá indicar el número de bloque que desea recibir. En la funcion de operaciónes pendientes habrá recibido el último bloque solicitado a modo de recordatorio pero es obligación del cliente mantener de alguna forma los bloques que ha solicitado y los que le faltan por solicitar. <?xml version="1.0" encoding="utf-8"?> <xs:schema targetnamespace="https://www.sgda.cmt.es/webservices/download/descargardatos/solicitud" xmlns="https://www.sgda.cmt.es/webservices/download/descargardatos/solicitud" xmlns:xs="http://www.w3.org/2001/xmlschema" elementformdefault="qualified" attributeformdefault="unqualified"> <xs:complextype name="solicituddescargardatos"> <xs:element name="archivo" type="xs:long"/> <xs:element name="volumen" type="xs:long"/> <xs:element name="bloque" type="xs:long"/> <xs:element name="entidad" type="xs:long"/> <xs:element name="solicitud_descargar_datos" type="solicituddescargardatos"/> </xs:schema> Tabla 22 Download, SOLICITUD_DESCARGAR_DATOS 4.18. Download, RESPUESTA_DESCARGAR_DATOS Para los mismos identificadores de archivo, volumen y bloque, el servidor incluye además en esta respuesta el bloque de datos en formato base64. El cliente deberá recogerlos y añadirlos al archivo temporal que está almacenando en su equipo tras haberlos decodificado. <?xml version="1.0" encoding="utf-8"?> <xs:schema targetnamespace="https://www.sgda.cmt.es/webservices/download/descargardatos/respuesta" xmlns="https://www.sgda.cmt.es/webservices/download/descargardatos/respuesta" xmlns:xs="http://www.w3.org/2001/xmlschema" elementformdefault="qualified" attributeformdefault="unqualified"> <xs:complextype name="respuestadescargardatos"> <xs:element name="archivo" type="xs:long"/> <xs:element name="volumen" type="xs:long"/> <xs:element name="bloque" type="xs:long"/> <xs:element name="datos" type="xs:string"/> <xs:element name="respuesta_descarga_datos" type="respuestadescargardatos"/> </xs:schema> Tabla 23 Download, RESPUESTA_DESCARGA_DATOS Pág. 57 de 49
4.19. Download, SOLICITUD_ESTADO_DESCARGA Permite al usuario consultar el estado de una entrega a partir del identificador de archivo. <?xml version="1.0" encoding="utf-8"?> <xs:schema targetnamespace="https://www.sgda.cmt.es/webservices/download/estadodescarga/solicitud" xmlns:xs="http://www.w3.org/2001/xmlschema" xmlns="https://www.sgda.cmt.es/webservices/download/estadodescarga/solicitud" elementformdefault="qualified" attributeformdefault="unqualified"> <xs:complextype name="solicitudestadodescarga"> <xs:element name="id_archivo" type="xs:int"/> <xs:element name="id_entidad" type="xs:int"/> <xs:element name="solicitud_estado_descarga" type="solicitudestadodescarga"/> </xs:schema> Tabla 24 Download, SOLICITUD_ESTADO_DESCARGA 4.20. Download, RESPUESTA_ESTADO_DESCARGA Dado el identificador de archivo, presenta al cliente todos los datos que le pueden ser de interés, como la categoría y tipo del archivo (entrega), su ámbito, etc. También incluye una relación de todos sus volúmenes y el estado de descarga de los mismos. <?xml version="1.0" encoding="utf-8"?> <xs:schema targetnamespace="https://www.sgda.cmt.es/webservices/download/estadodescarga/respuesta" xmlns:xs="http://www.w3.org/2001/xmlschema" xmlns:u="https://www.sgda.cmt.es/webservices/utils" xmlns="https://www.sgda.cmt.es/webservices/download/estadodescarga/respuesta" elementformdefault="qualified" attributeformdefault="unqualified"> <xs:import namespace="https://www.sgda.cmt.es/webservices/utils" schemalocation="https://www.sgda.cmt.es/webservices/xsd/utils.xsd"/> <xs:complextype name="respuestaestadodescarga"> <xs:element name="id_archivo" type="xs:int"/> <xs:element name="categoria" type="u:categoria"/> <xs:element name="tipo" type="u:tipo"/> <xs:element name="estado" type="u:estadoarchivo"/> <xs:element name="ccc" type="xs:string"/> <xs:element name="ambito" type="xs:long"/> <xs:element name="volumen" type="u:arrayofvolumenruta"/> <xs:element name="respuesta_estado_descarga" type="respuestaestadodescarga"/> </xs:schema> Tabla 25 Download, RESPUESTA_ESTADO_DESCARGA Pág. 58 de 49
4.21. Download, SOLICITUD_COMPROBAR_DESCARGA Permite al cliente comprobar si la descarga realizada es correcta enviando un resumen (HASH) del volumen descargado. <?xml version="1.0" encoding="utf-8"?> <xs:schema targetnamespace="https://www.sgda.cmt.es/webservices/download/comprobardescarga/solicitud" xmlns:u="https://www.sgda.cmt.es/webservices/utils" xmlns:xs="http://www.w3.org/2001/xmlschema" xmlns="https://www.sgda.cmt.es/webservices/download/comprobardescarga/solicitud" elementformdefault="qualified" attributeformdefault="unqualified"> <xs:import namespace="https://www.sgda.cmt.es/webservices/utils" schemalocation="http://www.sgda.cmt.es/webservices/xsd/utils.xsd"/> <xs:complextype name="solicitudcomprobardescarga"> <xs:element name="archivo" type="xs:long"/> <xs:element name="volumen" type="xs:long"/> <xs:element name="hash" type="xs:string"/> <xs:element name="entidad" type="xs:long"/> <xs:element name="solicitud_comprobar_descarga" type="solicitudcomprobardescarga"/> </xs:schema> Tabla 26 Download, SOLICITUD_COMPROBAR_DESCARGA Pág. 59 de 49
4.22. Download, RESPUESTA_COMPROBAR_DESCARGA Presenta el resguardo de haber descargado correctamente el archivo identificado en la solicitud de la función <?xml version="1.0" encoding="utf-8"?> <xs:schema targetnamespace="https://www.sgda.cmt.es/webservices/download/comprobardescarga/respuesta" xmlns:u="https://www.sgda.cmt.es/webservices/utils" xmlns:xs="http://www.w3.org/2001/xmlschema" xmlns="https://www.sgda.cmt.es/webservices/download/comprobardescarga/respuesta" elementformdefault="qualified" attributeformdefault="unqualified"> <xs:import namespace="https://www.sgda.cmt.es/webservices/utils" schemalocation="http://www.sgda.cmt.es/webservices/xsd/utils.xsd"/> <xs:complextype name="archivodescargar"> <xs:element name="nombre" type="xs:string"/> <xs:element name="tamano" type="xs:int"/> <xs:element name="fecha_creacion" type="xs:datetime"/> <xs:element name="hash" type="xs:string"/> <xs:complextype name="resguardo"> <xs:element name="nombre_representante" type="xs:string"/> <xs:element name="nif_representante" type="xs:string"/> <xs:element name="id_transaccion" type="xs:int"/> <xs:element name="fecha" type="xs:datetime"/> <xs:element name="hora" type="xs:time"/> <xs:element name="archivo" type="archivodescargar"/> <xs:complextype name="respuestacomprobardescarga"> <xs:element name="archivo" type="xs:long"/> <xs:element name="volumen" type="xs:long"/> <xs:element name="resguardo" type="resguardo"/> <xs:element name="respuesta_comprobar_descarga" type="respuestacomprobardescarga"/> </xs:schema> Tabla 27 Download, RESPUESTA_ESTADO_DESCARGA Pág. 60 de 49
4.23. Operaciones Pendientes, SOLICITUD_FRANJAS Permite al cliente solicitar la lista de operaciones pendiente para cargas o descargas en los servicios web que no son los de Upload o Download. <xs:complextype name="solicitudfranjas"> <xs:element name="sessionheader" type="sessionid"/> <!--Por defecto solo se envia la ultima franja a no ser que este elemento en la solicitud este a true--> <xs:element name="historico" type="xs:boolean" default="false"/> Tabla 28 Operaciones Pendientes, SOLICITUD_FRANJAS 4.24. Operaciones Pendientes, RESPUESTA_FRANJAS_UPLOAD Presenta al cliente la información que necesita para invocar la función solicitudarchivos. <xs:complextype name="franjaupload"> <xs:element name="idfranja" type="xs:datetime"/> <xs:complextype name="arrayoffranja"> <xs:complexcontent> <xs:restriction base="soapenc:array"> <xs:attribute ref="soapenc:arraytype" wsdl:arraytype="franjaupload[]"/> </xs:restriction> </xs:complexcontent> <xs:complextype name="ambitoupload"> <xs:element name="franja" type="arrayoffranja"/> <xs:element name="idambito" type="xs:int"/> <xs:complextype name="arrayofambito"> <xs:complexcontent> <xs:restriction base="soapenc:array"> <xs:attribute ref="soapenc:arraytype" wsdl:arraytype="ambitoupload[]"/> </xs:restriction> </xs:complexcontent> <xs:complextype name="operadorupload"> <xs:element name="ambito" type="arrayofambito"/> <xs:element name="idoperador" type="xs:int"/> <xs:complextype name="arrayofoperadorupload"> <xs:complexcontent> <xs:restriction base="soapenc:array"> <xs:attribute ref="soapenc:arraytype" wsdl:arraytype="operadorupload[]"/> </xs:restriction> </xs:complexcontent> <xs:complextype name="respuestafranjasupload"> Pág. 61 de 49
<xs:element name="sessionheader" type="u:sessionid"/> <xs:element name="operador" type="arrayofoperadorupload"/> <xs:element name="fechainicio" type="xs:datetime"/> <xs:element name="fechafinal" type="xs:datetime"/> Tabla 29 Operaciones Pendientes, RESPUESTA_FRANJAS_UPLOAD 4.25. Operaciones Pendientes, SOLICITUD_ARCHIVOS_UPLOAD Permite al cliente solicitar la lista de archivos pendientes de cargar. <xs:complextype name="solicitudarchivosupload"> <xs:element name="sessionheader" type="u:sessionid"/> <xs:element name="idoperador" type="xs:int"/> <xs:element name="idambito" type="xs:int"/> <xs:element name="idfranja" type="xs:datetime"/> Tabla 30 Operaciones Pendientes, SOLICITUD_ARCHIVOS_UPLOAD 4.26. Operaciones Pendientes, RESPUESTA_ARCHIVOS_UPLOAD Proporciona al cliente solicitar la lista de archivos pendientes de cargar dados un operador, un ambito y una ventana de cargas. <xs:complextype name="respuestaarchivosupload"> <xs:element name="sessionheader" type="u:sessionid"/> <xs:element name="idoperador" type="xs:int"/> <xs:element name="idambito" type="xs:int"/> <xs:element name="idfranja" type="xs:datetime"/> <xs:element name="archivo_upload" type="u:arrayofarchivo"/> Tabla 31 Operaciones Pendientes, RESPUESTA_ARCHIVOS_UPLOAD 4.27. Operaciones Pendientes, RESPUESTA_FRANJAS_DOWNLOAD Presenta al cliente la información que necesita para invocar la función solicitudoperadores. <xs:complextype name="franjadownload"> <xs:element name="idfranja" type="xs:datetime"/> <xs:complextype name="arrayoffranja"> <xs:complexcontent> <xs:restriction base="soapenc:array"> <xs:attribute ref="soapenc:arraytype" wsdl:arraytype="franjadownload[]"/> </xs:restriction> Pág. 62 de 49
</xs:complexcontent> <xs:complextype name="servicio"> <xs:element name="franja" type="arrayoffranja"/> <xs:element name="idservicio" type="xs:int"/> <xs:complextype name="arrayofservicio"> <xs:complexcontent> <xs:restriction base="soapenc:array"> <xs:attribute ref="soapenc:arraytype" wsdl:arraytype="servicio[]"/> </xs:restriction> </xs:complexcontent> <xs:complextype name="entidad"> <xs:element name="servicio" type="arrayofservicio"/> <xs:element name="identidad" type="xs:int"/> <xs:complextype name="arrayofentidad"> <xs:complexcontent> <xs:restriction base="soapenc:array"> <xs:attribute ref="soapenc:arraytype" wsdl:arraytype="entidad[]"/> </xs:restriction> </xs:complexcontent> <xs:complextype name="respuestafranjasdownload"> <xs:element name="sessionheader" type="u:sessionid"/> <xs:element name="entidad" type="arrayofentidad"/> <xs:element name="fechainicio" type="xs:datetime"/> <xs:element name="fechafinal" type="xs:datetime"/> Tabla 32 Operaciones Pendientes, RESPUESTA_FRANJAS_DOWNLOAD 4.28. Operaciones Pendientes, SOLICITUD_OPERADORES Permite al cliente solicitar la lista de operadores que cargaron ficheros en la ventana y servicio especificados. <xs:complextype name="solicitudoperadores"> <xs:element name="sessionheader" type="u:sessionid"/> <xs:element name="identidad" type="xs:int"/> <xs:element name="idservicio" type="xs:int"/> <xs:element name="idfranja" type="xs:datetime"/> Tabla 33 Operaciones Pendientes, SOLICITUD_OPERADORES Pág. 63 de 49
4.29. Operaciones Pendientes, RESPUESTA_OPERADORES Proporciona al cliente la lista de operadores que cargaron ficheros en la ventana y servicio especificados. <xs:complextype name="operadordownload"> <xs:element name="idoperador" type="xs:int"/> <xs:complextype name="arrayofoperadordownload"> <xs:complexcontent> <xs:restriction base="soapenc:array"> <xs:attribute ref="soapenc:arraytype" wsdl:arraytype="operadordownload[]"/> </xs:restriction> </xs:complexcontent> <xs:element name="operador" type="arrayofoperadordownload"/> <xs:complextype name="respuestaoperadores"> <xs:element name="sessionheader" type="u:sessionid"/> <xs:element name="identidad" type="xs:int"/> <xs:element name="idservicio" type="xs:int"/> <xs:element name="idfranja" type="xs:datetime"/> <xs:element name="operadores" type="arrayofoperadordownload"/> Tabla 34 Operaciones Pendientes, RESPUESTA_OPERADORES 4.30. Operaciones Pendientes, SOLICITUD_ARCHIVOS_DOWNLOAD Permite al cliente solicitar la lista de archivos pendientes de descargar. <xs:complextype name="solicitudarchivosdownload"> <xs:element name="sessionheader" type="u:sessionid"/> <xs:element name="identidad" type="xs:int"/> <xs:element name="idservicio" type="xs:int"/> <xs:element name="idfranja" type="xs:datetime"/> <xs:element name="idoperador" type="xs:int"/> Tabla 35 Operaciones Pendientes, SOLICITUD_ARCHIVOS_DOWNLOAD Pág. 64 de 49
4.31. Operaciones Pendientes, RESPUESTA_ARCHIVOS_DOWNLOAD Proporciona al cliente solicitar la lista de archivos pendientes de descargar dados un operador, un servicio y una ventana. <xs:complextype name="respuestaarchivosdownload"> <xs:element name="sessionheader" type="u:sessionid"/> <xs:element name="identidad" type="xs:int"/> <xs:element name="idservicio" type="xs:int"/> <xs:element name="idfranja" type="xs:datetime"/> <xs:element name="idoperador" type="xs:int"/> <xs:element name="archivo_download" type="u:arrayofarchivo"/> Tabla 36 Operaciones Pendientes, RESPUESTA_ARCHIVOS_DOWNLOAD Pág. 65 de 49
Apéndice I. Referencias [PLIEGO] CMT, Dirección de Organización y Sistemas. Expediente AD 204/03 [CIRCULAR] CMT.Circular 2/2003 de 26 de Septiembre Pág. 66 de 49