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 comomultipart/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
GET /api/solicitudes/:id/documentos/:documentoId/descargar
Descarga un documento adjunto a una solicitud como un stream de archivo. La respuesta incluye los headersContent-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").