4.- Servicios de SRT

INDICE


1.- Registro Electrónico General (servicios SOAP)


1.1.- Servicio EntryService

En los siguientes apartados se especifican tanto los tipos de datos utilizados, como los métodos que la componen, detallando los parámetros y mostrando ejemplos de uso.

1.1.1- Método 'listEntry'

Devuelve el listado con los datos de los asientos registrales que se corresponden a los criterios de búsqueda especificados.

 Más detalles...

1.1.1.1- Signatura

ResultListEntries listEntry(String idApplication, ParamListEntries param) throws RemoteException, SRTException

1.1.1.2.- Parámetros de invocación

NombreTipoLongitud máximaDescripciónObligatorio
infoInfo-Filtro de búsqueda en función de la información básica del asiento. Son obligatorios los campos organism, requestType y register.
consolidatedValueInt-Filtro para seleccionar los asientos consolidados (en Registro Físico), los no consolidados ó indistinto
INDISTINTO = 0
NO CONSOLIDADOS = 1
CONSOLIDADOS = 2
No
senderActor-Interesado que envía el asientoNo
senderAgentActor-Aportador (Agente emisor)No
receiverActor-Destinatario al que va dirigido el asientoNo
receiverAgentActor-Representante del destinatario al que va dirigido el asientoNo
dateStartDate-Fecha (y hora) de presentación a partir de la cual se desea listar los asientosNo
dateEndDate-Fecha (y hora) de presentación hasta la que se desea listar los asientosNo
specificDataData[]-Datos específicos asociadosNo
sortColumnString-Ordenación por el nombre de la columna
ascendingBoolean-

Ordenación de las columnas

ASCENDENTE = true

DESCENDENTE = false

fromIndexInt-Valor desde el cual se busca
toIndexInt-Valor de búsqueda

El emisor (Sender), representante del emisor (SenderAgent), receptor/es (Receivers) y representante del receptor(ReceiverAgent) pueden ser de tipo Person, Organism, Company y UndefinedActor

Solamente se debería utilizar UndefinedActor para el Sender.

Person extends ActorTipoLongitud máximaDescripciónObligatorio
NifString255 caracteres
NameString255 caracteresNombreNo
Surname1String255 caracteresPrimer apellidoNo
Surname2String255 caracteresSegundo apellidoNo
MailString255 caracteresCorreoNo
AddressString255 caracteresDirecciónNo


Organism extends ActorTipoLongitud máximaDescripciónObligatorio
CodeString255 caracteresCódigo del organismo
NameString255 caracteresDescripción del organismo


Company extends ActorTipoLongitud máximaDescripciónObligatorio
CifString255 caracteresCif
NameString255 caracteresNombre
UndefinedActor extends ActorTipoLongitud máximaDescripciónObligatorio
NOTA: En métodos en los que se cree un asiento registral, solamente se debería utilizar este tipo UndefinedActor para el Sender. Por ejemplo, en un caso en el que el interesado es menor, el Sender (el menor) sería de tipo UndefinedActor y el representante del menor  (SenderAgent) que presenta el documento sería de tipo Person.
codeString255 caracteresCódigo
nameString255 caracteresNombre

1.1.1.3.- Parámetros de respuesta

NombreTipoDescripción
entriesEntry[]Listado de asientos que cumplen los filtros de búsqueda establecidos.

1.1.1.4.- Validaciones

NombreDescripción
InternalCoreExceptionSe agrupan todos aquellos errores internos de funcionamiento del SRT.

1.1.1.5.- Códigos error

TipoDescripción
SRTExceptionError en la operación.
RemoteExceptionError remoto.

1.1.1.6.- Ejemplo de invocación

Ejemplo de invocación
ParamListEntries paramListEntries = new ParamListEntries();
ResultListEntries entries = new ResultListEntries();
Info info = new Info();
// Código de organismo, es un atributo que el integrador deberá pedir
al responsable funcional que le ha solicitado la aplicación
info.setOrganism("ORGXXXXX");
//Código de Libro de registro
info.setRegister("REG_XXX");
// Código de procedimiento, es un atributo que el integrador deberá
pedir al responsable funcional que le ha solicitado la aplicación
info.setProcessType("xxx");
//Tipo de Entry (Entrada(0), Salida(1))
info.setRequestType(SRTClientConstants.REQUEST_TYPE_INPUT);
//Fecha de creación del Entry
Calendar requestTime = Calendar.getInstance();
info.setRequestTime(requestTime);
paramListEntries.setInfo(info);
entries = entryClient.listEntry(paramListEntries);

1.1.2.- Método 'getEntryDetails'

Obtiene los datos sobre un asiento registral, a partir del identificador de su libro de registro y del número de asiento registral.

 Más detalles...

1.1.2.1.- Signatura

ResultGetEntryDetails getEntryDetails(String idApplication, ParamGetEntryDetails param) throws RemoteException, SRTException

1.1.2.2.- Parámetros de invocación

NombreTipoLongitud máximaDescripciónObligatorio
registerIdString-Identificador del libro de registro en el que se va a realizar la consolidación de los asientos.
requestTypeInt-Tipo de asiento
ENTRADA = 0
SALIDA = 1
entryIdString-Nº de registro del asiento asociado al sistema telemático
consolidatedIdString-Nº de registro del asiento asociado al sistema físico con el que se consolidaNo
invokingIdString-Identificador (NIF) de la persona que origina la petición desde la aplicación invocante. Si se trata de una aplicación web será la persona autenticada en el mismo.No

1.1.2.3.- Parámetros de respuesta

NombreTipoDescripción
entryEntryInformación general del asiento y datos específicos en 'specificdata'
requestStringContenido del documento de solicitud de alta de asiento (fichero PDF, XML, etc.) codificado en Base64
receiptStringContenido del documento de justificante de asiento (fichero PDF, XML, etc.) codificado en Base64 y firmado electrónicamente por el sistema telemático
attachmentsAttachmentInfo[]Datos generales de los documentos adjuntos

1.1.2.4.- Validaciones

NombreDescripción
idApplicationSe valida que existe una aplicación dada de alta con ese código.

1.1.2.5.- Códigos error

TipoDescripción
SRTExceptionError en la operación.
RemoteExceptionError remoto.

1.1.2.6.- Ejemplo de invocación

Ejemplo de invocación
ParamGetEntryDetails paramGetEntryDetails = new
ParamGetEntryDetails();
ResultGetEntryDetails resultGetEntryDetails = new
ResultGetEntryDetails();
//Identificador de Libro de Registro
paramGetEntryDetails.setRegisterId("REG_XXX");
//Código del Asiento Registral
paramGetEntryDetails.setEntryId("PREF_XXXXXXXXXX/SUF");
//Tipo de Entry (Entrada(0), Salida(1))
paramGetEntryDetails.setRequestType(SRTClientConstants.REQUEST_TYPE_INPUT);
//paramGetEntryDetails.setInvokginId(null);
paramGetEntryDetails.setInvokginId("NIF"));
resultGetEntryDetails = entryClient.getEntryDetails(paramGetEntryDetails);

1.1.3.- Método 'getEntryAttachmentByFileRef'

 Más detalles...

1.1.3.1.- Signatura

String getEntryAttachmentByFileRef(String idApplication,ParamGetEntryAttachment param) throws RemoteException, SRTException

1.1.3.2.- Parámetros de invocación

NombreTipoLongitud máximaDescripciónObligatorio
registerIdString-Identificador del libro de registro en el que se va a realizar la consolidación de los asientos.
requestTypeint-Tipo de la solicitud
Entrada = 0
Salida = 1
entryIdString-Identificador del tramite
idAttachmentString-Identificador del documento adjunto
invokingIdString-Identificador (NIF) de la persona que origina la petición desde la aplicación invocante. Si se trata de una aplicación web será la persona autenticada en el mismo.No

1.1.3.3.- Parámetros de respuesta

NombreTipoDescripción
idRefStringIdentificador (“id”) del contenido del fichero dentro de la petición SOAP de invocación

1.1.3.4.- Validaciones

NombreDescripción
idApplicationSe valida que existe una aplicación dada de alta con ese código.

1.1.3.5.- Códigos error

TipoDescripción
SRTExceptionError en la operación.
RemoteExceptionError remoto.

1.1.3.6.- Ejemplo de invocación

Ejemplo de invocación
ParamGetEntryAttachment paramGetEntryAttachment = new
ParamGetEntryAttachment();
//Identificador de Libro de Registro
paramGetEntryAttachment.setRegisterId("REG_XXX");
//Código del Asiento Registral
paramGetEntryAttachment.setEntryId("PREF_XXXXXXXXX/SUF");
//Identificador del adjunto
paramGetEntryAttachment.setIdAttachment("idAttachment");
//Tipo de Entry (Entrada(0), Salida(1))
paramGetEntryAttachment.setRequestType(SRTClientConstants.REQUEST_TYPE_INPUT);
paramGetEntryAttachment.setInvokingId(null);
InputStream inputStream = entryClient.getEntryAttachmentByFileRef(paramGetEntryAttachment);

1.1.4.- Método 'getEntrySpecificData'

Información general del asiento y datos específicos en 'specificdata'

 Más detalles...

1.1.4.1.- Signatura

ResultGetEntrySpecificData getEntrySpecificData(String idApplication, ParamGetEntryDetails param)throws RemoteException, SRTException

1.1.4.2.- Parámetros de invocación

NombreTipoLongitud máximaDescripciónObligatorio
registerIdString-Identificador del libro de registro en el que se va a realizar la consolidación de los asientos.
requestTypeint-Tipo de la solicitud
Entrada = 0
Salida = 1
entryIdString-Identificador del tramite
consolidatedIdString-Nº de registro del asiento asociado al sistema físico con el que se consolidaNo
invokingIdString-Identificador (NIF) de la persona que origina la petición desde la aplicación invocante. Si se trata de una aplicación web será la persona
autenticada en el mismo.
No

1.1.4.3.- Parámetros de respuesta

NombreTipoDescripción
EntryEntryInformación general del asiento y datos específicos en 'specificdata'

1.1.4.4.- Validaciones

NombreDescripción
idApplicationSe valida que existe una aplicación dada de alta con ese código.

1.1.4.5.- Códigos error

TipoDescripción
SRTExceptionError en la operación.
RemoteExceptionError remoto.

1.1.4.6.- Ejemplo de invocación

Ejemplo de invocación
ResultGetEntrySpecificData result = new ResultGetEntrySpecificData();
ParamGetEntryDetails param = new ParamGetEntryDetails();
//Identificador de Libro de Registro
paramGetEntryAttachment.setRegisterId("REG_xxx");
//Código del Asiento Registral
paramGetEntryAttachment.setEntryId("PREF_XXXXXXXXX/SUF");
//Tipo de Entry (Entrada(0), Salida(1))
paramGetEntryAttachment.setRequestType(SRTClientConstants.REQUEST_TYPE_INPUT);
result = entryClient.getEntrySpecificData(param);

1.1.5.- Método 'sendFullEntry'

Alta de asiento registral. Permite hacerlo tanto con ficheros adjuntos (bytes), que es la forma no recomendada, como mediante la integración a través de CCSV (la recomendada) Mediante la integración con CCSV, SRT recibe un documento almacenado en CCSV. Para almacenar un documento en CCSV, es necesario integrarse con el método createDocument. CCSV asocia un identificador único a cada documento y el cual debe indicarse a SRT en la petición. Además, también es posible recuperar datos del documento almacenado (hash, algoritmo...) a través del método getDocument de CCSV. La integración tanto con el método createDocument como con el método getDocument de CCSV puede verse en Servicios para la gestión de documentos

 Más detalles...

1.1.5.1.- Signatura

ResultSendFullEntry sendFullEntry(String idApplication,ParamSendFullEntry param, FileInfo fileInfo, DataHandler file) throws RemoteException, SRTException

1.1.5.2.- Parámetros de invocación

NombreTipoLongitud máximaDescripciónObligatorio
infoInfo-Información básica y común
requestPromoterRequestPromoter-Datos del PromotorNo
senderActor-Interesado que envía el asiento
senderAgentActor-Aportador (Agente emisor). Si se indica para asientos de salida, debe ser de tipo Person.No
receiverActor-Destinatario al que va dirigido el asiento
receiverAgentActor-Representante del destinatario al que va dirigido el asientoNo
specificDataData[]

Clave → 255 caracteres

Valor → 255 caracteres

Datos específicos asociadosNo
invokingIdString255 caracteresIdentificador (NIF) de la persona que origina la petición desde la aplicación invocante. Si se trata de una aplicación web será la persona autenticada en el mismo.No
fileInfoFileInfo-Datos del fichero adjunto. Nos permite enviar un documento adjunto sin necesidad de indicar código CCSV.No
fileDataHandler (no es propio de SRT. forma parte de la librería javax.activation)-Flujo de datos (bytes) para la transmisión de forma eficiente del fichero adjunto desde la aplicación invocante al sistema telemático. SRT obtiene los bytes del documento adjunto a través de este objeto.  SRT asignará un código CCSV a este documento adjunto y lo guardará en la tabla de datos específicos junto a los otros documentos adjuntos.No
InfoTipoLongitud máximaDescripciónObligatorio
subjectString255 caracteresAsunto
reportCodeString255 caracteresCódigo de informeNo
requestTypeInteger1Tipo de petición (0 = entrada y 1 = salida)
requestTimeCalendar-Fecha de presentaciónNo
processTimeCalendar-Fecha de registroNo
organismString255 caracteresCódigo de organismo
register (No se usa, se debe indicar en datos específicos con clave TypeRegister y valor I (interno) o E (externo). Si no se indica, será por defecto externo) String255 caracteresTipo de registro (I = Interno y E = externo). Si no se indica, el valor por defecto es nulo.No
processTypeString255 caracteresCódigo de procedimiento
RequestPromoter (opcional): Si el documento principal CSV_Request indicado en datos específicos no existe en CCSV, SRT creará el documento de solicitud con los datos proporcionados en el RequestPromoter.TipoLongitud máximaDescripciónObligatorio
requestString-Bytes del documento principal en base 64
fileNameString255 caracteresNombre del documento principal
detachedSignatureString-Firma del documento en base 64
formatSignatureLong19Formato de la firma
mimeTypeString255 caracteresTipo de archivo
Promoter: Se utiliza para crear una relación de metadatos para el documento de solicitud en CCSV.
Promoter/identifierNumberString255 caracteresNúmero de identificación
Promoter/nameString255 caracteresNombre
Promoter/surname1String255 caracteresPrimer apellidoNo
Promoter/surname2String255 caracteresSegundo apellidoNo
FileInfoTipoLongitud máximaDescripciónObligatorio
nameString255 caracteresNombre del archivo
fileSizeLong19 dígitosTamaño del archivoNo
descriptionString255 caracteresDescripción del archivo
detachedSignatureString-Firma del archivo en base64
formatSignatureLong19 dígitosFormato de la firma
mimeTypeString255 caracteresTipo de archivo

El emisor (Sender), representante del emisor (SenderAgent), receptor/es (Receivers) y representante del receptor(ReceiverAgent) pueden ser de tipo Person, Organism, Company y UndefinedActor

Solamente se debería utilizar UndefinedActor para el Sender.

Person extends ActorTipoLongitud máximaDescripciónObligatorio
nifString255 caracteresNif 
givenNameString255 caracteresNombreNo
surname1String255 caracteresPrimer apellidoNo
surname2String255 caracteresSegundo apellidoNo
mailString255 caracteresCorreoNo
addressString255 caracteresDirecciónNo


Organism extends ActorTipoLongitud máximaDescripciónObligatorio
codeString255 caracteresCódigo del organismo
nameString255 caracteresDescripción del organismo


Company extends ActorTipoLongitud máximaDescripciónObligatorio
cifString255 caracteresCif
nameString255 caracteresNombre
UndefinedActor extends ActorTipoLongitud máximaDescripciónObligatorio
NOTA: En métodos en los que se cree un asiento registral, solamente se debería utilizar este tipo UndefinedActor para el Sender. Por ejemplo, en un caso en el que el interesado es menor, el Sender (el menor) sería de tipo UndefinedActor y el representante del menor  (SenderAgent) que presenta el documento sería de tipo Person.
codeString255 caracteresCódigo
nameString255 caracteresNombre
AuthorizedOfficer extends ActorTipoLongitud máximaDescripciónObligatorio

NOTA:

En asientos de entrada (requestType = 0), debe utilizarse solamente para el SenderAgent y el tipo de registro debe ser externo (registerType = E). Si se intenta utilizar para otro actor y/o se indica registro interno (registerType = I), se obtendrá error.

En asientos de salida (requestType = 1), debe utilizarse solamente para el ReceiverAgent y el tipo de registro debe ser externo (registerType = E). Si se intenta utilizar para otro actor y/o se indica registro interno (registerType = I), se obtendrá error.

nameString255 caracteresNombre del funcionario habilitado
surname1String255 caracteresPrimer apellido del funcionario habilitado
surname2String255 caracteresSegundo apellido del funconario habilitadoNo
nifString9 caracteresNif del funcionario habilitado
rptString10 caracteresCódigo RPT del funcinario habilitado
organismCode (código organismo de SIU)String10 caracteresCódigo organismo SIU del funcionario habilitado
organismNameString255 caracteresNombre de organismo SIU del funcionario habilitado
departmentCode (código departamento de SIU)String10 caracteresCódigo de departamento del funcionario habilitado
departmentNameString255 caracteresNombre de departamento SIU del funcionario habilitado
roleString255 caracteresRol del funcionario habilitado
mailString255 caracteresDirección de correo electrónico del funcionario habilitado

El SenderAgent pasa a ser opcional en asientos de salida. En caso de indicarlo, deberá ser obligatoriamente de tipo Person.

1.1.5.3.- Parámetros de respuesta

NombreTipoDescripción
idStringNúmero de registro correspondiente al asiento registral realizado
receiptReceiptContenido del documento de justificante de asiento (fichero PDF, XML, etc.) codificado en Base64 y firmado electrónicamente por el sistema telemático
processTimeDateFecha y hora de proceso, primer día hábil desde el alta (pudiendo coincidir), en Registro Telemático
CSVReceiptStringCSV del recibo (justificante) de alta de asiento registral


Información

Para obtener la fecha efectiva de registro, revisar los casos de uso.


1.1.5.4.- Validaciones

NombreDescripción
idApplicationSe valida que existe una aplicación dada de alta con ese código.
senderSi el asiento es de Salida, el sender debe ser de tipo Organism y su valor estar en info.organism
senderAgentPara realizar un registro de salida es necesario identificar al aportador (Agente emisor)
receiverSi el asiento es de Entrada, el receiver debe ser de tipo Organism y su valor estar en info.organism
info.organismSe valida que exista el organismo en SIU, debe coincidir con el receiver en los de entrada y con el sender en los de salida
info.registerNo es obligatorio ni se tiene en cuenta, será eliminado en un futuro
info.processTypeSe valida que exista el tipo de procedimiento y que se pueda registrar en el organismo indicado
specificData[SRTClientConstants.SPECIFIC_DATA_NAME_TYPE_REGISTER]El código de registro debe ser verificable. Puede tener los valores “I” para registro interno o “E” para registro externo. Para crear un asiento en un libro de registro interno es necesario que el organismo asociado al asiento tenga como dato extendido "InternalRegister" igual a libro de registro usado para hacer los asientos internos.
specificData[SRTClientConstants.SPECIFIC_DATA_NAME_CSV_REQUEST]El estado de la solicitud enviada debe ser de tipo original o copia, no se permite registrar si el estado del documento en CCSV es de otro tipo.
specificData[SRTClientConstants.SPECIFIC_DATA_NAME_CSV_ATTACHED]El estado de los adjuntos enviados debe ser de tipo original o copia, no se permite registrar si el estado de alguno de los documentos en CCSV es de otro tipo
org_code_list_reg_inEs un alfanumérico, código de registro , son los organismos de registro de entrada asociados al procedimiento.
Si no aparece no esta ligado a ningún organismo en concreto este caso se permite registrar en cualquier organismo.
Si aparece el atributo y esta ligado a un organismo concreto de la estructura de organismos se comprueba que el organismo indicado en el atributo coincida con el organismo contra el que se quiere registrar.
org_code_list_reg_outEs un alfanumérico, código de registro , son los organismos de registro de salida asociados al procedimiento.
Si no aparece no esta ligado a ningún organismo en concreto este caso se permite registrar en cualquier organismo.
Si aparece el atributo y esta ligado a un organismo concreto de la estructura de organismos se comprueba que el organismo indicado en el atributo coincida con el organismo contra el que se quiere registrar.

1.1.5.5.- Códigos error

TipoDescripción
SRTExceptionError en la operación.
RemoteExceptionError remoto.

1.1.5.6.- Ejemplo de invocación

Ejemplo de invocación
// IMPORTANTE: Para más información ver anexo I
ParamSendFullEntry paramSendFullEntry = new ParamSendFullEntry();
         
//InvokingId
paramSendFullEntry.setInvokingId("00000000T");
         
//Info
Info info = new Info();
// Asunto
info.setSubject("Prueba");
// Organismo. Atributo que el integrador deberá pedir al responsable funcional que le ha solicitado la aplicación
info.setOrganism("ORG07458");
// Tipo de asiento (entrada o salida)
info.setRequestType(SRTClientConstants.REQUEST_TYPE_INPUT);
// Procedimiento. Atributo que el integrador deberá pedir al responsable funcional que le ha solicitado la aplicación
info.setProcessType("1");
paramSendFullEntry.setInfo(info);
         
//Sender (datos emisor)
Organism sender = new Organism();
sender.setCode("ORG14668");
sender.setName("SERVICIO DE ADMINISTRACIÓN ELECTRÓNICA");
paramSendFullEntry.setSender(sender);
         
//SenderAgent (aportador)
Person senderAgent = new Person();
senderAgent.setGivenName("NOMBRE");
senderAgent.setSurname1("APELLIDO");
senderAgent.setAddress("DIRECCION");
senderAgent.setNif("00000000T");
senderAgent.setMail("cotal@oesia.com");
paramSendFullEntry.setSenderAgent(senderAgent);
         
//Receiver (datos destinatario)
Actor[] receivers = new Actor[1];
Organism receiver = new Organism();
receiver.setCode("ORG07458");
receiver.setName("VICEPRESIDENCIA");
receivers[0] = receiver;
paramSendFullEntry.setReceiver(receivers);
         
//SpecificData
Data[] specificData = new Data[8];
Data data1 = new Data("Asunto","Prueba");
specificData[0] = data1;
// Código CSV del documento principal
Data data2 = new Data("CSV_Request","CSVDD1X36L2V6A200SRT");
specificData[1] = data2;
// Hash del documento principal
Data data3 = new Data("CSV_hash_Request","/QzejY7NqZu8uZXDH9Y3D3Fbwb8=");
specificData[2] = data3;
// Algoritmo del documento principal
Data data4 = new Data("CSV_algorithm_Request","SHA-1");
specificData[3] = data4;
// Código CSV del adjunto 1
Data data5 = new Data("CSV_Attached_1","CSVI281DXS57F1H0BENT");
specificData[4] = data5;
// Hash del adjunto 1
Data data6 = new Data("CSV_hash_Attached_1","o2CgxBb1DLKk+i5rF4YnOYmM7v4=");
specificData[5] = data6;
// Algoritmo del adjunto 1
Data data7 = new Data("CSV_algorithm_Attached_1","SHA-1");
specificData[6] = data7;
Data data8 = new Data("TypeRegister", "E");
specificData[7] = data8;
paramSendFullEntry.setSpecificData(specificData);
 
// Fichero a enviar (fichero principal que se guardará en SRT en caso de que el documento CSV_Request indicado anteriormente no exista en CCSV)
byte[] arrayFile = FileCopyUtils.copyToByteArray(new File("URL
Fichero"));
String fileSoli = BASE64Encoder.encode(arrayFile);
// Firma del fichero a enviar
byte[] arraySign = FileCopyUtils.copyToByteArray(new File("URL
Firma"));
String detachedSignature = BASE64Encoder.encode(arraySign);
 
RequestPromoter request = new RequestPromoter();
//Formato del Documento
request.setMimeType("Formato");
//Documento
request.setRequest(fileSoli);
//Nombre del Documento
request.setFileName("Name");
//Firma
request.setDetachedSignature(detachedSignature);
//Formato de Firma
request.setFormatSignature(SRTClientConstants.SIGN_TYPE_xxx);
 
Promoter promoter = new Promoter();
promoter.setIdentifierNumber("00000000T");
promoter.setName("Nombre");
promoter.setSurname1("Apellido 1");
promoter.setSurname2("Apellido 2");
 
request.setPromoter(promoter);
 
// Adjunto Firmado
FileDataSource dataSource = new FileDataSource(new File("URLAdjunto"));
DataHandler file = new DataHandler(dataSource);
FileInfo fileInfo = new FileInfo();
// Nombre del Documento
fileInfo.setName("Nombre+"."+Extension");
// Descripción del Documento
fileInfo.setDescription ("Descripcion");
// Tamaño del Documento en bytes
fileInfo.setFileSize("Tamaño");
// Formato del Documento (mime-type)
fileInfo.setMimeType("Formato");
// Formato de Firma
fileInfo.setFormatSignature(SRTClientConstants.SIGN_TYPE_xxx);
 
// Realizar petición
ResultSendFullEntry resultSendFullEntry = client.sendFullEntry(paramSendFullEntry, fileInfo, file);
 
// Se recomienda enviar todos los adjuntos en datos específicos por lo que no se aconseja utilizar fileInfo ni file. La llamada quedaría de la siguiente forma:  ResultSendFullEntry resultSendFullEntry = client.sendFullEntry(paramSendFullEntry, null, null);

1.1.6.- Método 'sendEntryOnlySaveReceipt'

Alta de asiento registral, sin que se almacene la solicitud (bytes) ni sus posibles adjuntos en el Sistema de Registro Telemático. Sólo se almacena en CCSV el fichero del recibo de registro, devolviéndose su contenido a la aplicación invocante. Se describe la integración con este método en ANEXO II: PROCESO DE INTEGRACIÓN MEDIANTE SISTEMA EXTERNO

 Más detalles...

1.1.6.1.- Signatura

public ResultSendEntryOnlySaveReceipt sendEntryOnlySaveReceipt(String idApplication,ParamSendEntryOnlySaveReceipt param) throws SRTException

1.1.6.2.- Parámetros de invocación

NombreTipoLongitud máximaDescripciónObligatorio
infoInfo-Información básica y común
requestPromoterRequestPromoter-Datos del PromotorNo
senderActor-Interesado que envía el asiento
senderAgentActor-Aportador (Agente emisor). Si se indica para asientos de salida, debe ser de tipo Person.No
receiverActor-Destinatario al que va dirigido el asiento
receiverAgentActor-Representante del destinatario al que va dirigido el asientoNo
specificDataData[]

Clave → 255 caracteres

Valor → 255 caracteres


invokingIdString255 caracteresIdentificador (NIF) de la persona que origina la petición desde la aplicación invocante. Si se trata de una aplicación web será la persona autenticada en el mismo.No
InfoTipoLongitud máximaDescripciónObligatorio
subjectString255 caracteresAsunto
reportCodeString255 caracteresCódigo de informeNo
requestTypeInteger1Tipo de petición (0 = entrada y 1 = salida)
requestTimeCalendar-Fecha de presentaciónNo
processTimeCalendar-Fecha de registroNo
organismString255 caracteresCódigo de organismo
register (No se usa, se debe indicar en datos específicos con clave TypeRegister y valor I (interno) o E (externo). Si no se indica, será por defecto externo)String255 caracteresTipo de registro (I = Interno y E = externo). Si no se indica, el valor por defecto es nulo.No
processTypeString255 caracteresCódigo de procedimiento
RequestPromoterTipoLongitud máximaDescripciónObligatorio
Promoter
Promoter/identifierNumberString255 caracteresNúmero de identificación
Promoter/nameString255 caracteresNombre
Promoter/surname1String255 caracteresPrimer apellidoNo
Promoter/surname2String255 caracteresSegundo apellidoNo

El emisor (Sender), representante del emisor (SenderAgent), receptor/es (Receivers) y representante del receptor(ReceiverAgent) pueden ser de tipo Person, Organism, Company y UndefinedActor

Solamente se debería utilizar UndefinedActor para el Sender.

Person extends ActorTipoLongitud máximaDescripciónObligatorio
NifString255 caracteresNif 
NameString255 caracteresNombreNo
Surname1String255 caracteresPrimer apellidoNo
Surname2String255 caracteresSegundo apellidoNo
MailString255 caracteresCorreoNo
AddressString255 caracteresDirecciónNo


Organism extends ActorTipoLongitud máximaDescripciónObligatorio
CodeString255 caracteresCódigo del organismo
NameString255 caracteresDescripción del organismo


Company extends ActorTipoLongitud máximaDescripciónObligatorio
CifString255 caracteresCif
NameString255 caracteresNombre
UndefinedActor extends ActorTipoLongitud máximaDescripciónObligatorio
NOTA: En métodos en los que se cree un asiento registral, solamente se debería utilizar este tipo UndefinedActor para el Sender. Por ejemplo, en un caso en el que el interesado es menor, el Sender (el menor) sería de tipo UndefinedActor y el representante del menor  (SenderAgent) que presenta el documento sería de tipo Person.
codeString255 caracteresCódigo
nameString255 caracteresNombre
AuthorizedOfficer extends ActorTipoLongitud máximaDescripciónObligatorio

NOTA:

En asientos de entrada (requestType = 0), debe utilizarse solamente para el SenderAgent y el tipo de registro debe ser externo (registerType = E). Si se intenta utilizar para otro actor y/o se indica registro interno (registerType = I), se obtendrá error.

En asientos de salida (requestType = 1), debe utilizarse solamente para el ReceiverAgent y el tipo de registro debe ser externo (registerType = E). Si se intenta utilizar para otro actor y/o se indica registro interno (registerType = I), se obtendrá error.

nameString255 caracteresNombre del funcionario habilitado
surname1String255 caracteresPrimer apellido del funcionario habilitado
surname2String255 caracteresSegundo apellido del funconario habilitadoNo
nifString9 caracteresNif del funcionario habilitado
rptString10 caracteresCódigo RPT del funcinario habilitado
organismCode (código organismo de SIU)String10 caracteresCódigo organismo SIU del funcionario habilitado
organismNameString255 caracteresNombre de organismo SIU del funcionario habilitado
departmentCode (código departamento de SIU)String10 caracteresCódigo de departamento del funcionario habilitado
departmentNameString255 caracteresNombre de departamento SIU del funcionario habilitado
roleString255 caracteresRol del funcionario habilitado
mailString255 caracteresDirección de correo electrónico del funcionario habilitado

El SenderAgent pasa a ser opcional en asientos de salida. En caso de indicarlo, deberá ser obligatoriamente de tipo Person.

1.1.6.3.- Parámetros de respuesta

NombreTipoDescripción
idStringNúmero de registro correspondiente al asiento registral realizado
receiptReceiptContenido del documento de justificante de asiento (fichero PDF, XML, etc.) codificado en Base64 y firmado electrónicamente por el sistema telemático
processTimeDateFecha y hora de proceso, primer día hábil desde el alta (pudiendo coincidir), en Registro Telemático
CSVReceiptStringCSV del recibo (justificante) de alta de asiento registral

Información

Para obtener la fecha efectiva de registro, revisar los casos de uso.

1.1.6.4.- Validaciones

NombreDescripción
idApplicationSe valida que existe una aplicación dada de alta con ese código.
IdRequestSe valida para que este identificador nunca venga vacío
senderSi el asiento es de salida, el sender debe ser de tipo organism y valor param.info.organism
receiverSi el asiento es de entrada, el receiver debe ser de tipo organism y valor info.organism
info.organismSe valida que exista el organismo
info.registerNo es obligatorio ni se tiene en cuenta, será eliminado en un futuro
info.processTypeSe valida que exista el tipo de procedimiento.
specificData[SRTClientConstants.SPECIFIC_DATA_NAME_TYPE_REGISTER]El código de registro debe ser verificable. Puede tener los valores “I” para registro interno o “E” para registro externo. Para crear un asiento en un libro de registro interno es necesario que el organismo asociado al asiento tenga como dato extendido "InternalRegister" igual a libro de registro usado para hacer los asientos internos.
org_code_list_reg_inEs un alfanumérico, código de registro , son los organismos de registro de entrada asociados al procedimiento.
Si no aparece no esta ligado a ningún organismo en concreto este caso se permite registrar en cualquier organismo.
Si aparece el atributo y esta ligado a un organismo concreto de la estructura de organismos se comprueba que el organismo indicado en el atributo coincida con el organismo contra el que se quiere registrar.
org_code_list_reg_outEs un alfanumérico, código de registro , son los organismos de registro de salida asociados al procedimiento.
Si no aparece no esta ligado a ningún organismo en concreto este caso se permite registrar en cualquier organismo.
Si aparece el atributo y esta ligado a un organismo concreto de la estructura de organismos se comprueba que el organismo indicado en el atributo coincida con el organismo contra el que se quiere registrar.

1.1.6.5.- Códigos error

TipoDescripción
SRTExceptionError en la operación.

1.1.6.6.- Ejemplo de invocación

Ejemplo de invocación
ResultSendEntryOnlySaveReceipt resultSendEntryOnlySaveReceipt = new
ResultSendEntryOnlySaveReceipt ();
ParamSendEntryOnlySaveReceipt paramSendEntryOnlySaveReceipt = new
ParamSendEntryOnlySaveReceipt();
//Se rellena el 'Info'
Info info = new Info();
info.setSubject(“Asunto”);
// Código de organismo, es un atributo que el integrador deberá pedir al
responsable funcional que le ha solicitado la aplicación
info.setOrganism(“ORGXXXXX”);
// Tipo de Entry (Entrada(0)/Salida(1))
info.setRequestType(SRTClientConstants.REQUEST_TYPE_INPUT);
Calendar requestTime = Calendar.getInstance();
info.setRequestTime(requestTime);
// Código de procedimiento, es un atributo que el integrador deberá
pedir al responsable funcional que le ha solicitado la aplicación
info.setProcessType(“xxx”);
//Se rellena el 'sender'
Organism sender = new Organism(“ORGXXXXX”);
//Se rellena el 'senderAgent'
Actor senderAgent = new Actor();
senderAgent = new Person(“NIF/CIF”, “Name”, “surmane1”, “surname2”,“Email”, “Adress”);
//Se rellena el 'receiver'
Actor[] receiver = new Actor[1];
Person person = new Person();
person.setAddress (“Adress”);
person.setGivenName(“Name”);
person.setMail(“Email”);
person.setNif(“NIF/CIF”);
person.setSurname1(“surmane1”);
person.setSurname2(“surname2”);
receiver[0] = person;
//Se rellena el 'dataSpecific'
Data[] dataList = new Data[3];
dataList[0] = new Data("TypeRegister ", "E");
dataList[1] = new Data("Name2", "Value2");
dataList[2] = new Data(SRTClientConstants.SPECIFIC_DATA_NAME_XXX,"Value3");
//Se rellena el 'request'
RequestPromoter request = new RequestPromoter();
request.setMimeType (“Formato”);
request.setRequest (null);
request.setFileName (“Name”);
request.setDetachedSignature(null);
request.setFormatSignature (null);
paramSendEntryOnlySaveReceipt.setInfo(info);
paramSendEntryOnlySaveReceipt.setReceiver(receiver);
paramSendEntryOnlySaveReceipt.setSender(sender);
paramSendEntryOnlySaveReceipt.setSpecificData(dataList);
paramSendEntryOnlySaveReceipt.setInvokingId("NIF");
if(sendSenderAgent){
paramSendEntryOnlySaveReceipt.setSenderAgent(senderAgent);
}
paramSendEntryOnlySaveReceipt.setRequestPromoter(request);
resultSendEntryOnlySaveReceipt = entryClient.sendEntryOnlySaveReceipt(paramSendEntryOnlySaveReceipt);
return resultSendEntryOnlySaveReceipt;

1.2.- Servicio AdminService

Realiza la consolidación de los asientos registrales entre el sistema telemático y el sistema físico de registro externo y perteneciente a la organización. Para ello se asocian los números de libro de registro de ambos sistemas. En los siguientes apartados se especifican tanto los tipos de datos utilizados, como los métodos que la componen, detallando los parámetros y mostrando ejemplos de uso.

1.2.1.- Método 'consolidateEntries'

 Click here to expand...

1.2.1.1.- Signatura

ResultConsolidateEntries consolidateEntries(String idApplication, ParamConsolidateEntries param)throws RemoteException, SRTException

1.2.1.2.- Parámetros de invocación

NombreTipoLongitud máximaDescripciónObligatorio
registerIdString-Identificador del libro de registro en el que se va a realizar la consolidación de los asientos.
consolidationListEntryConsolidation[]-Listado de consolidaciones de los asientos.

1.2.1.3.- Parámetros de respuesta

NombreTipoDescripción
consolidationResultEntryConsolidatrionResult[]Listado de resultados de la consolidación de las entradas.

1.2.1.4.- Validaciones

NombreDescripción
idApplicationSe valida que existe una aplicación dada de alta con ese código.

1.2.1.5.- Códigos error

TipoDescripción
SRTExceptionError en la operación.
RemoteExceptionError remoto.

1.2.1.6.- Ejemplo de invocación

Ejemplo de invocación
ResultConsolidateEntries resultConsolidateEntries = new
ResultConsolidateEntries();
ParamConsolidateEntries param = new ParamConsolidateEntries();
EntryConsolidation[] consolidationList = new EntryConsolidation[1];
EntryConsolidation entryConsolidation = new EntryConsolidation();
// Identificador de consolidación
entryConsolidation.setConsolidatedId("PRE_XXXXXXXXX/SUF");
// Identificador de asiento
entryConsolidation.setId("PRE_XXXXXXXXX/SUF");
// Tipo: entrada(0), salida(1)
entryConsolidation.setRequestType("0");
consolidationList[0] = entryConsolidation;
param.setConsolidationList(consolidationList);
// Identificador del libro de registro
param.setRegisterId("REG_GA");
resultConsolidateEntries = adminClient.consolidateEntries(param);

1.3.- Servicio InfoService

1.3.1.- Método 'fullListRegisters'

Devuelve la información de los libros de registro sobre los que puede registrar para un organismo.

 Más detalles...

1.3.1.1.- Signatura

ResultFullListRegisters fullListRegisters(String idApplication, ParamFullListRegisters param) throws RemoteException, SRTException

1.3.1.2.- Parámetros de invocación

NombreTipoLongitud máximaDescripciónObligatorio
organismCodeString-Código administrativo del organismo que se recupera de SIU. Este código de Organismo puede cambiar en el futuro cuando cambie la
estructura de organismos.
No
enabledBoolean-Accesibilidad de los libros de registro
activado = true
desactivado = false
No
exteriorVisibleBoolean-Visibilidad de los libros de registro
visible exterior = true
no visible exterior = false
No

1.3.1.3.- Parámetros de respuesta

NombreTipoDescripción
fullRegistersFullRegister[]Listado de libros de registro(código, nombre, activado, visible exterior)

1.3.1.4.- Validaciones

NombreDescripción
idApplicationSe valida que existe una aplicación dada de alta con ese código.

1.3.1.5.- Códigos error

Tipo

Descripción
SRTExceptionError en la operación.
RemoteException

Error remoto.

1.3.1.6.- Ejemplo de invocación

Ejemplo de invocación
ParamFullListRegisters paramFullListRegisters = new ParamFullListRegisters();
ResultFullListRegisters resultFullListRegisters = new ResultFullListRegisters();
resultFullListRegisters = infoClient.fullListRegisters(paramFullListRegisters);

1.4.- Manejo de excepciones

Para obtener la información referente a la excepción, SRT incluye dos parámetros con la información del error.  

Ejemplo de captura de excepciones de los servicios SOAP de SRT.

Capturando excepciones de SRT
try {
	log.info("BEGIN SRT EntryClient.sendFullEntry");
	resultSendEntry = entryClient.sendFullEntry(paramSendFullEntry, null, null);
	log.info("END SRT EntryClient.sendFullEntry");
} catch (SRTException e) {
	String extraInfo = e.getCode() + ":" + e.getExtraInfo(); //Obtenemos el código y la información del error
} 


Ejemplo respuesta con error
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
   <soapenv:Body>
      <soapenv:Fault>
         <faultcode>soapenv:Server.userException</faultcode>
         <faultstring>com.tbsolutions.srt.webservice.exception.InternalCoreException</faultstring>
         <detail>
            <ns1:SRTExceptionElement xsi:type="ns1:InternalCoreException" xmlns:ns1="http://exception.webservice.srt.tbsolutions.com">
               <code xsi:type="xsd:int">704</code>
               <extraInfo xsi:type="soapenc:string" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/">El tamaño de la lista de asientos es mayor que uno, a causa de una codigo de asiento registral repetido,register=REG_GA,entry=RT_3001935003/2020,entryType=0</extraInfo>
            </ns1:SRTExceptionElement>
            <ns2:hostname xmlns:ns2="http://xml.apache.org/axis/">moz-ofm-03.aragon.local</ns2:hostname>
         </detail>
      </soapenv:Fault>
   </soapenv:Body>
</soapenv:Envelope>


2.- Registro Electrónico Ágil (servicios REST)


2.1.- sendEntry

 Click here to expand...

2.1.1.- Signatura

ParamOutSendEntry sendEntry(ParamInSendEntry params)

2.1.2.- Parámetros

Parámetro

Tipo

Descripción

Obligatorio

params

ParamInSendEntry

Parámetros de entrada para crear el asiento registral

El objeto ParamInSendEntry presenta la siguiente estructura:

ParámetroTipoLongitud máximaDescripciónObligatorio
Info
-Información general
Info/SubjectString255 caracteresAsunto
Info/RequestTypeenum (0 = Entrada y 1 = Salida)Tipo de entrada (entrada / salida)
Info/RegisterTypeenum (I = Interno y E = Externo)1Tipo de registro (interno / externo)
Info/OrganismCodeString255 caracteres Código de organismo
Info/ProcedureCodeString255 caracteresCódigo de procedimiento
Info/JustifyingRecipientJustifyingRecipient-Destinatario del justificante de registroSí (obligatorio al menos uno de los dos: correo o movil )
Info/JustifyingRecipient/MailString255 caracteresCorreo del destinatarioSí (si no se ha especificado teléfono)
Info/JustifyingRecipient/PhoneString9 dígitos Teléfono del destinatarioSí (si no se ha especificado correo)
SenderActor-Emisor
SenderAgentActor-Aportador (Agente emisor)Sí (solamente es obligatorio para asientos de entrada → requestType = 0)
ReceiversList<Actor>-Listado de destinatarios
ReceiverAgentActor-Destinatario
MainDocumentDocument-Documento principal
MainDocument/CsvString 255 caracteresCSV del documentoEl estado debe ser ORIGINAL o COPIA
MainDocument/DescriptionString255 caracteresDescripción del documento
MainDocument/HashString255 caracteresHash del documento
MainDocument/TypeString255 caracteresTipo de documento
MainDocument/HashAlgorithmString255 caracteresAlgoritmo utilizado para generar el hash del documento
AttachedDocumentsList<Document>-Listado de documentos adjuntos
InvokingIdString255 caracteresId de invocación
noComunicarBoolean-Parámetro para que el usuario decida si enviar o no comunicaciones al interesado. Por defecto el valor está falseNo

         El emisor (Sender), agente emisor (SenderAgent), receptor/es (Receivers) y agente receptor(ReceiverAgent) pueden ser de tipo Person, Organism, Company, UndefinedActor o ExternalOrganism.

Person extends ActorTipoLongitud máximaDescripciónObligatorio
NifString255 caracteresNif 
NameString255 caracteresNombreNo
Surname1String255 caracteresPrimer apellidoNo
Surname2String255 caracteresSegundo apellidoNo
MailString255 caracteresCorreoNo
AddressString255 caracteresDirecciónNo


Organism extends ActorTipoLongitud máximaDescripciónObligatorio
CodeString255 caracteresCódigo del organismo
NameString255 caracteresDescripción del organismo


Company extends ActorTipoLongitud máximaDescripciónObligatorio
CifString255 caracteresCif
NameString255 caracteresNombre
UndefinedActor extends ActorTipoLongitud máximaDescripciónObligatorio

En asientos de entrada (requestType = 0), solamente es posible utilizar este tipo para el Sender. Si se intenta utilizar para otro objeto, se obtendrá un error.

En asientos de salida (requestType = 1), solamente es posible utilizar este tipo para el Receiver. Si se intenta utilizar para otro objeto, se obtendrá un error.

NameString255 caracteresNombre
Surname1String255 caracteresPrimer Apellido
Surname2String255 caracteresSegundo ApellidoNo
ExternalOrganism extends ActorTipoLongitud máximaDescripciónObligatorio

En asientos de entrada (requestType = 0), debe utilizarse solamente para el Sender. Si se intenta utilizar para el Receiver, se obtendrá un error.

En asientos de salida (requestType = 1), debe utilizarse solamente para el Receiver/s. Si se intenta utilizar para el Sender, se obtendrá un error.

DIR3RootOrganismCodeString255 caracteresCódigo del organismo raíz
DIR3RootOrganismNameString255 caracteresNombre del organismo raíz
DIR3RootOrganismNIFString255 caracteresNIF del organismo raízNo
DIR3OrganismCodeString255 caracteresCódigo del organismo nivel 2
DIR3OrganismNameString255 caracteresNombre del organismo nivel 2
DIR3OrganismNIFString255 caracteresNIF del organismo nivel 2No
DIR3OrganismCodeLevel3String255 caracteresCódigo del organismo nivel 3No
DIR3OrganismNameLevel3String255 caracteresNombre del organismo nivel 3No
DIR3OrganismNIFLevel3String255 caracteresNIF del organismo nivel 3No
AuthorizedOfficer extends ActorTipoLongitud máximaDescripciónObligatorio

En asientos de entrada (requestType = 0), debe utilizarse solamente para el SenderAgent y el tipo de registro debe ser externo (registerType = E). Si se intenta utilizar para otro actor y/o se indica registro interno (registerType = I), se obtendrá error.

En asientos de salida (requestType = 1), debe utilizarse solamente para el ReceiverAgent y el tipo de registro debe ser externo (registerType = E). Si se intenta utilizar para otro actor y/o se indica registro interno (registerType = I), se obtendrá error.

NameString255 caracteresNombre del funcionario habilitado
Surname1String255 caracteresPrimer apellido del funcionario habilitado
Surname2String255 caracteresSegundo apellido del funconario habilitadoNo
NifString9 caracteresNif del funcionario habilitado
RptString10 caracteresCódigo RPT del funcinario habilitado
OrganismCode (código organismo de SIU)String10 caracteresCódigo organismo SIU del funcionario habilitado
OrganismNameString255 caracteresNombre de organismo SIU del funcionario habilitado
DepartmentCode (código departamento de SIU)String10 caracteresCódigo de departamento del funcionario habilitado
DepartmentNameString255 caracteresNombre de departamento SIU del funcionario habilitado
RoleString255 caracteresRol del funcionario habilitado
MailString255 caracteresDirección de correo electrónico del funcionario habilitado
Document
ParámetroTipoLongitud máximaDescripciónObligatorio
CsvString255 caracteresCSV del documento
El estado debe ser ORIGINAL o COPIA
DescriptionString255 caracteresDescripción del documento
HashString255 caracteresHash del documentoNo
TypeString255 caracteresTipo de documentoNo
HashAlgorithmString255 caracteresAlgoritmo utilizado para generar el hash del documentoNo

2.1.3.- Resultado

TipoDescripción

ParamOutSendEntry

Datos del asiento registral en formato JSON


El objeto ParamOutSendEntry presenta la siguiente estructura:

ParámetroTipoDescripción
ResultGeneralResultObjeto que contiene datos del asiento registral generado
Result/EntryCodeStringCódigo del asiento registral
Result/RequestTimeStringFecha en la que se ha creado el asiento
Result/RegisterTimeStringFecha real en la que comienza el asiento registral. Si se crea el asiento un domingo, la fecha de registro será a partir del lunes.
InvocationRequestParamInSendEntryObjeto que contiene los datos que se habían proporcionado en la petición inicial. Los parámetros que devuelve son los mismos que los parámetros utilizados para realizar la petición.

ParamInSendEntry/Info/RegisterBookLibro de registro utilizado. Por ejemplo: REG_GA. Este parámetro solamente forma parte de la respuesta.

2.1.5.- Ejemplo

Ejemplo de invocación
//Construimos los parámetros de entrada para crear el asiento registral
ParamInSendEntry paramInSendEntry = new ParamInSendEntry();
//ID Aplicación
paramInSendEntry.IdApplication = "SRT";
//Información
paramInSendEntry.Info = new Info();
//Asunto
paramInSendEntry.Info.Subject = "SUBJECT";
//Tipo de solicitud
paramInSendEntry.Info.RequestType = paramInSendEntry.Info.RequestType.SALIDA;
//Tipo de registro
paramInSendEntry.Info.RegisterType = paramInSendEntry.Info.RegisterType.EXTERNO;
//código de organismo
paramInSendEntry.Info.OrganismCode = "ORG09609";
//código del procedimiento
paramInSendEntry.Info.ProcedureCode = "CODIGO PROCEDIMIENTO";
//destinatario del justificante
paramInSendEntry.Info.JustifyingRecipient = new JustifyingRecipient();
paramInSendEntry.Info.JustifyingRecipient.Mail = "MAIL";
paramInSendEntry.Info.JustifyingRecipient.Phone = "TELEFONO";

//Comunicar
paramInSendEntry.Info.noComunicar = true;

//Emisor
Person person = new Person();
person.Nif = "NIF";
person.Name = "NOMBRE";
person.Surname1 = "APELLIDO 1";
person.Surname2 = "APELLIDO 2";
person.Mail = "MAIL";
person.Address = "DIRECCION";
		
//Asignamos persona emisora
paramInSendEntry.Sender = person;

// Representante del emisor
Organism organism = new Organism();
organism.Code = "CODIGO";
organism.Name = "NOMBRE";

//Asignamos organismo representante del emisor
paramInSendEntry.SenderAgent = organism;

//Destinatarios
List<Actor> receiversList = new ArrayList<Actor>();
Company company = new Company();
company.Cif = "CIF";
company.Name = "NOMBRE";
//Añadimos destinatario a la lista de destinatarios
receiversList.add(company);
//Asignamos lista de destinatarios
paramInSendEntry.Receivers = receiversList;
			
//Documento Principal
paramInSendEntry.MainDocument = new Document();
paramInSendEntry.MainDocument.Csv = "CSVDD1X36L2V6A200SRT";
paramInSendEntry.MainDocument.Description = "Descripción";
		
//Documentos Adjuntos
List<Document> attachedDocumentsList = new ArrayList<Document>();

Document attachedDocument = new Document();
attachedDocument.Csv = "CSVL916KYX34D1601PFI";
attachedDocument.Description = "prueba";

//Añadir documento adjunto a la lista de documentos adjuntos
attachedDocumentsList.add(attachedDocument);

attachedDocument = new Document();
attachedDocument.Csv = "CSVIW2QR9J65T1C01PFI";
attachedDocument.Description = "prueba gestor";

//Añadir documento adjunto a la lista de documentos adjuntos
attachedDocumentsList.add(attachedDocument);

//Asignamos la lista de documentos
paramInSendEntry.AttachedDocuments = attachedDocumentsList;
		
//Asignamos NIF del usuario que realiza la petición
paramInSendEntry.InvokingId = "11111111H";

//Lanzamos método del webservice para crear el asiento registral
client.sendEntry(paramInSendEntry);
		

2.1.6.- Códigos de error

 Click here to expand...


Aplicación que causa el error (SRT invoca también a otras aplicaciones)Código errorDescripción error
SRT0001El id de la aplicación invocante es obligatorio
SRT0002La información general es obligatoria
SRT0003El asunto es obligatorio
SRT0004El tipo de entrada es obligatorio y solamente admite los siguientes valores: [0,1]
SRT0005

El tipo de registro es obligatorio y solamente admite los siguientes valores: [I,E]

SRT0006El código de organismo de la información general es obligatorio
SRT0007El emisor es obligatorio
SRT0008El aportador del emisor es obligatorio
SRT0009Los destinatarios son obligatorios
SRT0010El organismo debe tener un código asociado
SRT0011El organismo debe tener un nombre asociado
SRT0012La persona debe tener un NIF/NIE asociado
SRT0013La compañía debe tener un CIF asociado
SRT0014La compañía debe tener un nombre asociado
SRT0015El tipo de actor no es válido. Valores admitidos: [Person,Organism,Company,UndefinedActor,ExternalOrganism,AuthorizedOfficer]
SRT0016El documento principal es obligatorio
SRT0017El id de invocación es obligatorio
SRT0018Registro duplicado {valor}
SRT0019Registro no encontrado {valor}
SRT0020Se ha encontrado más de un calendario para los parámetros de búsqueda establecidos
SRT0021No se ha encontrado ningún calendario para los parámetros de búsqueda establecidos
SRT0022RequestType: {valor} SenderType: {valor} ReceiverType: {valor}. No está permitido enviar de persona a persona.
SRT0023RequestType: {valor} SenderType: {valor} ReceiverType: {valor}. No está permitido enviar de persona a compañía.
SRT0024RequestType: {valor} SenderType: {valor} ReceiverType: {valor}. No está permitido enviar de compañía a compañía.
SRT0025RequestType: {valor} SenderType: {valor} ReceiverType: {valor}. No está permitido enviar de compañía a persona.
SRT0026RequestType: {valor} ReceiverType: {valor}. En asientos de entrada el receptor debe ser un organismo.
SRT0027RequestType: {valor} SenderType: {valor}. En asientos de salida el emisor debe ser un organismo.
SRT0028Error en la validación del organismo. Organismo Receptor = {valor} Organismo Info = {valor}. En asientos de entrada el código de organismo del receptor debe coincidir con el código de organismo de la información general.
SRT0029Error en la validación del organismo. Organismo Emisor = {valor} Organismo Info = {valor}. En asientos de salida el código de organismo del emisor debe coincidir con el código de organismo de la información general.
SRT0030En asientos de entrada solamente puede haber un destinatario. En este caso hay {valor}
SRT0031Para realizar un registro de salida es necesario identificar al representante del emisor
SRT0034

Organismo incorrecto. No se puede registrar para el procedimiento indicado

Error al obtener el organismo sobre el que registrar

SRT0035El correo del justifying recipient no es correcto
SRT0036El teléfono del justifying recipient no es correcto
SRT0037El código de procedimiento es obligatorio
SRT0038El destinatario del justificante de registro debe tener asignado un correo electrónico y/o un teléfono
SRT0039El tipo de actor es obligatorio y solamente admite los siguientes valores: [Person,Organism,Company,UndefinedActor,ExternalOrganism,AuthorizedOfficer]
SRT0040RequestType: {valor} SenderType: {valor} ReceiverType: {valor}. No está permitido enviar de persona a undefinedActor.
SRT0041RequestType: {valor} SenderType: {valor} ReceiverType: {valor}. No está permitido enviar de compañía a undefinedActor.
SRT0042RequestType: {valor} SenderType: {valor} ReceiverType: {valor}. No está permitido enviar de undefinedActor a undefinedActor.
SRT0043RequestType: {valor} SenderType: {valor} ReceiverType: {valor}. No está permitido enviar de undefinedActor a persona.
SRT0044RequestType: {valor} SenderType: {valor} ReceiverType: {valor}. No está permitido enviar de undefinedActor a compañía.
SRT0045El nombre del undefinedActor es obligatorio.
SRT0046El primer apellido del undefinedActor es obligatorio.
SRT0047En asientos de entrada, el tipo UndefinedActor solamente se permite para el Sender.
SRT0048En asientos de salida, el tipo UndefinedActor solamente se permite para el Receiver.
SRT
0049
El código del organismo raíz externo es obligatorio.
SRT0050El nombre del organismo raíz externo es obligatorio.
SRT0051El código del organismo externo (nivel 2) es obligatorio.
SRT0052El nombre del organismo externo (nivel 2) es obligatorio.
SRT0053El nif no puede tener más de 20 caracteres.
SRT0054El cif no puede tener más de 20 caracteres.

0055La persona debe tener un nombre asociado

0056La persona debe tener un apellido asociado

0057El campo name del AuthorizedOfficer es obligatorio.

0058El campo surname1 del AuthorizedOfficer es obligatorio.

0059El campo nif del AuthorizedOfficer es obligatorio.

0060El campo nif del AuthorizedOfficer no puede tener más de 9 caracteres.

0061El campo rpt del AuthorizedOfficer es obligatorio.

0062El campo rpt del AuthorizedOfficer no puede tener más de 10 caracteres.

0063El campo organismCode del AuthorizedOfficer es obligatorio.

0064El campo organismCode del AuthorizedOfficer no puede tener más de 10 caracteres.

0065El campo departmentCode del AuthorizedOfficer es obligatorio.

0066El campo departmentCode del AuthorizedOfficer no puede tener más de 10 caracteres.

0067El campo role del AuthorizedOfficer es obligatorio.

0068El campo mail del AuthorizedOfficer es obligatorio.

0069En asientos de entrada, el tipo AuthorizedOfficer solamente se permite para el SenderAgent.

0070El tipo AuthorizedOfficer solamente es válido para registros externos.

0071En asientos de salida, el tipo AuthorizedOfficer solamente se permite para el ReceiverAgent.

0072El campo organismName del AuthorizedOfficer es obligatorio.

0073El campo departmentName del AuthorizedOfficer es obligatorio.
CCSV1000Error en la llamada con CCSV:  'mensaje de error que devolvería CCSV'
CCSV1001Los parámetros contienen documentos que no existen en CCSV
CCSV1002El estado de {valor} debe ser ORIGINAL o COPIA
CCSV1003La descripción de {valor} no corresponde con el metadato de CCSV
CCSV1004Error al añadir los metadatos generales en CCSV
CCSV1005Error al guardar documento en CCSV
CCSV1006Error al obtener el documento de CCSV
SIFE3000Error en la llamada con SIFE
SIFE (timestamp)NO_ALG_RESTAMP_ERROREl valor del atributo timestampForm no es valido. Se trata de un resellado, únicamente se permite el valor 'XML'
SIFE (timestamp)NO_DIGEST_ALGORITHMEl valor del atributo digestAlgorithm del objeto TimestampParameters es nulo
SIFE (timestamp)NO_PREV_PARAMETERS_ERRORAlgunos de los parámetros para realizar el resellado es nulo
SIFE (timestamp)NO_DOCUMENT_ERROREl atributo document del objecto TimestampParameters es nulo
SIFE (timestamp)REQUIRED_DATA_ERRORDatos del contenido del documento son nulos
SIFE (timestamp)REQUIRED_HASH_ERRORFaltan datos para la realización de una firma a partir de HASH
SIFE (timestamp)NO_MATCH_DIGEST_ALGORITHMValor del atributo digestAlgorithm del objeto TimestampParameters no coincide con el del documento
SIFE (timestamp)NO_DOCUMENT_ERRORNo se ha podido recuperar el documento a firmar
PAU4000El método {valor} no tiene asociado un código en PAU
PAU4001Error al recuperar los atributos del procedimiento {valor}
PAU (authorizeApplication)AUTHORIZEAPPLICATION_00Error durante el proceso de autorización.
PAU (authorizeApplication)AUTHORIZEAPPLICATION_01El parámetro alias de la aplicación la aplicación A es nulo.
PAU (authorizeApplication)AUTHORIZEAPPLICATION_02El parámetro alias de la aplicación B es nulo.
PAU (authorizeApplication)AUTHORIZEAPPLICATION_03El parámetro methodCode es nulo.
PAU (authorizeApplication)AUTHORIZEAPPLICATION_04El parámetro Ip es nulo.
PAU (authorizeApplication)AUTHORIZEAPPLICATION_05No existe una relación entre aplicaciones.
PAU (authorizeApplication)AUTHORIZEAPPLICATION_06La ip no está en la lista de ip's permitidas.
PAU (methodApplicationList)METHODAPPLICATIONLIST_00Error durante el proceso de búsqueda
PAU (methodApplicationList)METHODAPPLICATIONLIST_01El objeto ParamMethodApplicationList es nulo
PAU (methodApplicationList) METHODAPPLICATIONLIST_02No hay Ips ni métodos asociados a la aplicación
PAU (methodApplicationList)METHODAPPLICATIONLIST_03Ha ocurrido algún error al realizar la búsqueda
PAU (methodApplicationList)METHODAPPLICATIONLIST_04El Alias de la Aplicación es nulo
PAU (procedureDetail)PROCEDUREDETAIL_00Error durante el proceso de búsqueda de procedure detail
PAU (procedureDetail)PROCEDUREDETAIL_01El objeto paramProcedureDetail es nulo
PAU (procedureDetail)PROCEDUREDETAIL_02No existe un procedimiento para esa signature
PAU (procedureDetail)PROCEDUREDETAIL_03La Signature es nula
PAU (getProcedureAttributes)PROCEDUREATTRIBUTES_00Error que proviene del webservices.
PAU (getProcedureAttributes)PROCEDUREATTRIBUTES_01El objeto paramGetProcedureAttributes es nulo.
PAU (getProcedureAttributes)PROCEDUREATTRIBUTES_02La signatura es nula.
PAU (getProcedureAttributes)PROCEDUREATTRIBUTES_03El idEntity es nulo.
SIU5000No se ha encontrado ningún libro de registro sobre el que se pueda registrar en toda la rama del organismo indicado.
SIU5001Error al recuperar información del organismo en SIU.
SIU5002

Error recuperando el organismo padre.

No se ha encontrado el dato extendido [codigo de identidad] para este organismo.

SIU5003

Se ha producido un error en la llamada a SIU, organismList

Error al recuperar la lista de organismos. El organismo {valor} no corresponde a ningún organismo ni de SIU ni de SRT.

Se ha pasado el organismo {valor}, que ha sido dado de baja, se ha intentado buscar un organismo válido y se ha llegado a que el organismo {valor} ha sido dado de baja pero no ha sido sustituido por otro. No se ha encontrado un organismo válido y es imposible continuar.

Error al recuperar la lista de organismos. El listado devuelto por SIU es nulo o vacío

SIU (organismList)ORGANISMLIST_00Error durante la consulta de los datos de organismos
SIU (organismList) ORGANISMLIST_01El objeto paramOrganismList es nulo
SIU (organismList)ORGANISMLIST_02No se han encontrado organismos para estos parámetros de búsqueda
SIU (organismList) ORGANISMLIST_03Ha ocurrido algún error al realizar la búsqueda
SIU (organismList)ORGANISMLIST_04No existe el organismo de entrada
SIU (rootFatherOrganismByOrganismCode)ORGANISMROOTFATHER_00Error durante la consulta de los datos del padre raíz del organismo
SIU (rootFatherOrganismByOrganismCode) ORGANISMROOTFATHER_01El objeto paramRootFatherOrganism es nulo
SIU (rootFatherOrganismByOrganismCode)ORGANISMROOTFATHER_02No existe el organismo del que se pretende averiguar la raíz
SIU (rootFatherOrganismByOrganismCode)ORGANISMROOTFATHER_03Ha ocurrido algún error al realizar la búsqueda
SIU (rootFatherOrganismByOrganismCode)5004Se ha producido un error en la llamada a SIU, rootFatherOrganismByOrganismCode: {mensaje del error}
SGA6001Error al enviar mail de organismo dado de baja al usuario.

IMPORTANTE: Los errores anteriores siempre irán acompañados de un código de error numérico en la cabecera (header) de la respuesta HTTP:

401 (UNAUTHORIZED) → Este código se devuelve cuando la aplicación que realiza la invocación no está autorizada en PAU para utilizar el servicio

400 (BAD REQUEST) → Este código se devuelve cuando el error producido al dar de alta el asiento registral se debe a datos incorrectos introducidos por parte del usuario

500 (INTERNAL SERVER ERROR) → Este código se devuelve cuando se produce un error inesperado al dar de alta el asiento registral

Si en la petición no se ha producido ningún error, se obtendrá el código de estado HTTP 200.




2.1.7.- Recepción del código del justificante de registro

Una vez que se ha realizado la parte asíncrona, se enviará un evento a través de SGA a la aplicación integradora.

  • Si el justificante de registro se ha generado correctamente, se enviará un evento con los siguientes datos
    • CSV_REGISTER → código del justificante generado
    • ENTRY_CODE → código del asiento registral para que la aplicación integradora pueda asociar el código CSV del justificante de registro al asiento registral obtenido en la petición síncrona
    • ERROR → 0
  • Si el justificante de registro no se ha podido generar (ha quedado KO al haberse agotado todos los reintentos), se enviará un evento con los siguientes datos
    • CSV_REGISTER → 0
    • ENTRY_CODE → código del asiento registral del cual no se ha podido generar el justificante
    • ERROR → ERROR GENERACIÓN RECIBO

La aplicación integradora debe estar dada de alta en SGA, debe estar suscrita al método "sendEntry" de SRT en SGA para poder recibir los eventos y además debe implementar un servicio REST para poder recibir los eventos y proporcionar la URL REST a SGA para que se de de alta y así, poderlos recibir.

En el manual de integración de la aplicación SGA, en el apartado "2. - Servicio IEventsService" se explica el proceso de integración para poder recibir los eventos.