Saltar al contenido principal

ShoriClient

Punto de entrada principal del SDK de Shori.

Proporciona acceso a todos los módulos de la plataforma Shori a través de una API fluida, tipada y thread-safe. La instancia debe ser creada usando el builder estático y puede ser reutilizada de forma segura entre múltiples hilos.

Inicialización

ShoriClient client = ShoriClient.builder()
.environment(ShoriEnvironment.PROD)
.portalId("mi-portal-id")
.tenantId("mi-tenant-id")
.apiKey("mi-api-key")
.timeoutSeconds(30)
.build();

Uso de Módulos

// Módulo de Casos
CasoResponse caso = client.caso().findById("documentId-del-caso");
CasoCreateResponse creado = client.caso().create(request);
List casos = client.caso().search(
CaseFilter.builder()
.casoTypeId(FilterOperator.EQ, "tipo-documentId")
.pageSize(20)
);

// Sub-módulos de Casos
client.caso().files().search("casoId");
client.caso().state().next(request);
client.caso().comment().add(request);
client.caso().casoType().findById("tipo-documentId");

// Módulo de Repositorio
File documento = client.repo().getDocumentById(request);
UploadResponse subida = client.repo().upload(request);

// Módulo de Identificación
UserSearchResponse usuario = client.identify().getUserById("user-documentId");

Thread Safety

Esta clase es completamente thread-safe. La misma instancia puede ser compartida entre múltiples hilos sin necesidad de sincronización externa. El token de autenticación se renueva automáticamente cuando expira.

Manejo de Errores

try {
CasoResponse caso = client.caso().findById("documentId");
} catch (ResourceNotFoundException e) {
// 404 - El caso no existe
} catch (ApiException e) {
// 400, 500, etc - Error del API
int statusCode = e.getStatusCode();
} catch (AuthenticationException e) {
// Error de autenticación
}

Ciclo de vida — try-with-resources (scripts y tests)

// El cliente se cierra automáticamente al salir del bloque,
// incluso si ocurre una excepción.
try (ShoriClient client = ShoriClient.builder()
.environment(ShoriEnvironment.UAT)
.portalId("portal-id")
.tenantId("tenant-id")
.apiKey("api-key")
.build()) {

List casos = client.caso().searchAll(filter);
}
// close() se llama aquí automáticamente

Ciclo de vida — Spring Boot (servidores)

@Bean(destroyMethod = "close")
public ShoriClient shoriClient() {
return ShoriClient.builder()...build();
}
// Spring llama close() al apagar el servidor

Campos

CampoTipoRestriccionesDescripción
configShoriConfigOpcionalConfiguración activa del cliente.

Metodos

builder()

Crea un nuevo builder para configurar e instanciar el ShoriClient.

ShoriClient client = ShoriClient.builder()
.environment(ShoriEnvironment.UAT)
.portalId("portal-id")
.tenantId("tenant-id")
.apiKey("api-key")
.build();

Retorna: Nueva instancia de ShoriClientBuilder


caso()

Accede al módulo principal de Casos.

Permite realizar operaciones CRUD sobre casos y acceder a sub-módulos especializados para archivos, estados, comentarios y tipos de caso.

// Operaciones básicas
client.caso().findById("documentId");
client.caso().create(request);
client.caso().update(request);
client.caso().search(CaseFilter.builder()...);
client.caso().searchAll(CaseFilter.builder()...);

// Sub-módulos
client.caso().files()Gestión de archivos adjuntos
client.caso().state()Cambio de estados
client.caso().comment()Comentarios
client.caso().casoType()Tipos de caso

Retorna: CaseModule con todos los métodos de gestión de casos


form()

Accede al módulo de Formularios.

Permite realizar operaciones CRUD sobre formularios y búsquedas paginadas.

Retorna: FormModule con métodos de gestión de formularios


repo()

Accede al módulo de Repositorio de Documentos.

Permite subir y descargar documentos del repositorio de Shori.

// Descargar documento
File doc = client.repo().getById(
GetDocumentByIdRequest.builder()
.documentId("doc-documentId")
.fileName("mi-documento.pdf")
.build()
);

// Subir documento
UploadResponse resultado = client.repo().upload(
UploadDocumentRequest.builder()
.file(miArchivo)
.casoId("caso-documentId")
.build()
);

Retorna: RepoModule con métodos para gestión de documentos


identify()

Accede al módulo de Identificación de Usuarios.

Permite buscar usuarios registrados en la plataforma Shori por su identificador interno. Los usuarios encontrados pueden ser asignados a casos o usados para validar participantes dentro de los procesos.

// Buscar usuario por su ID interno en Shori
UserSearchResponse usuario = client.identify().getUserById("user-documentId");

System.out.println("Nombre: " + usuario.getName());
System.out.println("Email: " + usuario.getEmail());

Retorna: IdentifyService con métodos de búsqueda de usuarios


close()

Libera los recursos HTTP asociados al cliente.

Recomendado para scripts, pruebas o aplicaciones que crean instancias temporales de ShoriClient.

En aplicaciones de larga duración (Spring Boot, JavaFX, servidores de aplicaciones, etc.), normalmente se crea una única instancia del cliente y se reutiliza durante toda la vida del proceso. En esos escenarios, el cierre puede delegarse al contenedor o realizarse durante el apagado de la aplicación.

// Scripts y pruebas
try (ShoriClient client = ShoriClient.builder()...build()) {
client.caso().searchAll(filter);
}

// Spring Boot
@Bean(destroyMethod = "close")
public ShoriClient shoriClient() {
return ShoriClient.builder()...build();
}

// JavaFX
@Override
public void stop() {
client.close();
}