Saltar al contenido principal

CaseFilesModule

Gestión de adjuntos de casos. Thread-safe.

Ejemplo General​

```python
files = client.caso().files()
meta = files.search(AttachmentFilesFilter.builder().caso_id("c1").build())
```

Métodos​

def __init__(config: ShoriConfig, http: HttpExecutor, repo_module: RepoModule, executor: Executor | None) -> None​

Parámetros:

  • config (ShoriConfig) —
  • http (HttpExecutor) —
  • repo_module (RepoModule) —
  • executor (Executor | None) —

def search(request: AttachmentFilesFilter) -> CaseFileSearchResult​

Obtiene los metadatos de los adjuntos de un caso, sin descargar el contenido.

Parámetros:

  • request (AttachmentFilesFilter) — AttachmentFilesFilter (caso_id obligatorio; page_size máximo 150).

Retorna: CaseFileSearchResult — CaseFileSearchResult con files, count y num_elements.

Ejemplo de uso:

```python
res = client.caso().files().search(
AttachmentFilesFilter.builder().caso_id("caso-uuid").page_size(50).build()
)
for f in res.files or []:
print(f.file_name, f.is_valid, f.file_category_name)
```

def get_attachments(request: AttachmentFilesFilter) -> list[CasoFileSearchResponse]​

Descarga los adjuntos de un caso (metadatos + file), paginando automáticamente.

Las descargas se hacen en paralelo. Cada elemento trae el contenido en file (un ShoriFile).

Parámetros:

  • request (AttachmentFilesFilter) — AttachmentFilesFilter.

Retorna: list[CasoFileSearchResponse] — Lista de CasoFileSearchResponse con file poblado.

Lanza:

  • ApiException — Si falla la descarga de algún adjunto (fail-fast).

Ejemplo de uso:

```python
import os
os.makedirs("descargas", exist_ok=True) # save() no crea carpetas
adjuntos = client.caso().files().get_attachments(
AttachmentFilesFilter.builder().caso_id("caso-uuid").build()
)
for a in adjuntos:
print(a.file_name, a.file.size)
a.file.save("descargas")
```

def collect_attachments(request: AttachmentFilesFilter, executor: Executor | None) -> list[CasoFileSearchResponse]​

Núcleo de get_attachments; público para que CaseModule reutilice un executor.

Parámetros:

  • request (AttachmentFilesFilter) — AttachmentFilesFilter.
  • executor (Executor | None) — Executor para las descargas en paralelo, o None para usar el propio.

Retorna: list[CasoFileSearchResponse] — Lista de CasoFileSearchResponse con file poblado.


def update(request: CasoFileUpdateRequest | Mapping[str, Any]) -> None​

Actualiza los metadatos de un adjunto (is_valid es False por defecto).

Parámetros:

  • request (CasoFileUpdateRequest | Mapping[str, Any]) — CasoFileUpdateRequest o dict con id y, opcionalmente,

Ejemplo de uso:

```python
client.caso().files().update(
{"id": "file-uuid", "isValid": True, "categoryId": "cat-uuid"}
)
```

def delete(document_id: str) -> None​

Elimina un documento adjunto de un caso.

Parámetros:

  • document_id (str) — ID del documento adjunto.

Lanza:

  • ResourceNotFoundException — Si el documento no existe.

Ejemplo de uso:

```python
client.caso().files().delete("document-uuid")
```