Skip to main content
La gestión documental es un paso crítico en el proceso de aprobación de una solicitud de crédito en Comfaca Créditos. Cada solicitud requiere que el afiliado adjunte un conjunto de documentos específicos (cédula, desprendibles de nómina, certificados, etc.) antes de poder avanzar al estado ENVIADO_VALIDACION. Los archivos son almacenados en el sistema de archivos del servidor bajo storage/uploads/{solicitud_id}/ y registrados en la tabla solicitud_documentos de la base de datos Prisma con sus metadatos: nombre original, nombre guardado (UUID), tipo MIME, tamaño en bytes y ruta de acceso. Todos los endpoints de esta sección requieren que el usuario autenticado sea el propietario de la solicitud (solicitud.owner_username === session.user.username). Los administradores pueden descargar documentos de cualquier solicitud.

GET /api/solicitudes/:id/documentos

Lista todos los documentos activos adjuntos a una solicitud, ordenados de más reciente a más antiguo. Autenticación: Requiere sesión activa. Solo el propietario puede listar los documentos.

Path Parameters

string
required
El numero_solicitud de la solicitud cuyos documentos se desean listar. Formato: "000001-202501-LI".

Respuesta exitosa 200

array
Lista de documentos activos adjuntos a la solicitud.
integer
Número total de documentos activos retornados.

Tabla de errores

Ejemplo — cURL

Ejemplo — Respuesta 200


POST /api/solicitudes/:id/documentos

Sube un nuevo documento adjunto a una solicitud. La petición debe enviarse como multipart/form-data con el archivo y el identificador del tipo de documento requerido. El archivo es guardado en disco con un nombre UUID único y registrado en la base de datos. Formatos de archivo soportados: jpg, jpeg, png, gif, webp, pdf, doc, docx, xls, xlsx. Autenticación: Requiere sesión activa. Solo el propietario puede subir documentos.

Path Parameters

string
required
El numero_solicitud de la solicitud a la que se adjuntará el documento.

Cuerpo de la petición (multipart/form-data)

file
required
El archivo a subir. Debe ser uno de los formatos soportados: PDF, imágenes (JPG, PNG, GIF, WEBP) o documentos Office (DOC, DOCX, XLS, XLSX). Si el tipo MIME no puede ser determinado, se usa application/pdf por defecto.
string
required
ID del tipo de documento requerido al que corresponde este archivo. Identifica qué tipo de documento se está cargando (ej. "cedula_ciudadania", "desprendible_nomina", "carta_laboral").

Respuesta exitosa 200

array
Lista completa y actualizada de todos los documentos activos de la solicitud después de la subida, con los mismos campos descritos en GET /documentos.

Tabla de errores

Ejemplo — cURL (subir un PDF)

Ejemplo — cURL (subir una imagen JPG)

Ejemplo — Respuesta exitosa 200

La respuesta del upload incluye la lista completa actualizada de documentos (no solo el recién subido). Esto permite al frontend sincronizar el estado local con un solo round-trip.

GET /api/solicitudes/:id/documentos/:documentoId/descargar

Descarga un documento adjunto a una solicitud como un stream de archivo. La respuesta incluye los headers Content-Type y Content-Disposition para que el navegador la trate como una descarga directa con el nombre original del archivo. Los administradores pueden descargar documentos de cualquier solicitud, independientemente de la propiedad. Autenticación: Requiere sesión activa. El propietario de la solicitud o un administrador pueden descargar.

Path Parameters

string
required
El numero_solicitud de la solicitud.
string
required
El id numérico del documento a descargar (el campo id retornado por el endpoint de listado, ej. "42").

Headers de respuesta exitosa

Tabla de errores

Ejemplo — cURL

La bandera -o cedula_frente.pdf guarda el stream de respuesta directamente en un archivo local. Si el archivo no existe en el sistema de archivos del servidor (fue eliminado manualmente), el endpoint responde con 404 El archivo no existe en el servidor.

DELETE /api/solicitudes/:id/documentos/:documentoId

Elimina permanentemente un documento de la base de datos. Solo el propietario de la solicitud puede eliminar sus documentos. Autenticación: Requiere sesión activa. Solo el propietario puede eliminar documentos.

Path Parameters

string
required
El numero_solicitud de la solicitud.
string
required
El id numérico del documento a eliminar (ej. "42").

Respuesta exitosa 200

Tabla de errores

Ejemplo — cURL

La eliminación del documento es permanente — el registro se borra físicamente de la tabla solicitud_documentos. El archivo físico en el servidor no es eliminado automáticamente en esta operación; se gestiona por separado en procesos de limpieza de storage.