Comfaca Créditos en Línea genera el documento contractual de cada solicitud de crédito a través de un microservicio externo denominado FlaskPDF. Este servicio recibe un payload estructurado con todos los datos de la solicitud, el solicitante, información laboral, económica y referencias, y produce un PDF firmable con el formato contractual de Comfaca. El flujo de generación consta de dos pasos: primero se genera el PDF (Documentation Index
Fetch the complete documentation index at: https://mintlify.com/elegroag/nuxt-credito-caja/llms.txt
Use this file to discover all available pages before exploring further.
POST /generar-pdf), que construye el payload, consulta catálogos de parámetros, llama al servicio FlaskPDF y almacena el resultado en storage/pdfs/{solicitud_id}/; luego se descarga (GET /descargar-pdf) el PDF ya generado.
El endpoint
POST /generar-pdf depende del servicio externo FlaskPDF. Si este servicio no está disponible o responde con error, la generación fallará con un 500 y el PDF no quedará almacenado. Verifica el estado del servicio FlaskPDF antes de reintentar.POST /api/solicitudes/:id/generar-pdf
Dispara el proceso de generación del contrato PDF para una solicitud. Internamente:- Carga la solicitud desde Prisma (incluyendo
solicitud_solicitante,firmantes_solicitudysolicitud_payload). - Consulta catálogos de parámetros del API de Sisuweb (ciudades, países, tipos de documento, niveles educativos, etc.).
- Construye el payload estructurado con
pdfPayloadService. - Envía el payload al servicio FlaskPDF y obtiene el PDF en base64.
- Guarda el PDF en storage y registra el archivo en la tabla
pdfs_generados.
Path Parameters
El
numero_solicitud de la solicitud para la que se generará el PDF contractual. Formato: "000001-202501-LI".Respuestas
true cuando el PDF fue generado y guardado exitosamente."PDF generado exitosamente".Información del PDF generado.
Tabla de errores
| Código HTTP | Causa | Descripción |
|---|---|---|
400 | ID ausente | No se proporcionó el parámetro id. |
401 | Sin sesión | No hay sesión activa. |
404 | No encontrada | No existe la solicitud con ese id. |
500 | Error de FlaskPDF | El servicio FlaskPDF retornó success: false o un error interno. |
502 | Conexión fallida | No se pudo conectar con el servicio FlaskPDF o con el backend de datos. |
Ejemplo — cURL
Ejemplo — Respuesta exitosa 200
Ejemplo — Error 500 (FlaskPDF falló)
GET /api/solicitudes/:id/descargar-pdf
Descarga el PDF contractual previamente generado para una solicitud. El archivo es enviado como un buffer binario con los headers adecuados para descarga directa en el navegador. El endpoint busca primero el PDF en el storage de documentos (documentoStorage.obtenerPdf); si no lo encuentra, intenta leerlo directamente desde la ruta registrada en pdfs_generados.path.
Autenticación: Requiere sesión activa.
Path Parameters
El
numero_solicitud de la solicitud cuyo PDF contractual se desea descargar.Headers de respuesta exitosa
Tabla de errores
| Código HTTP | Causa | Descripción |
|---|---|---|
400 | ID ausente | No se proporcionó el parámetro id. |
401 | Sin sesión | No hay sesión activa. |
404 | Solicitud no encontrada | No existe la solicitud con ese id. |
404 | PDF no generado | La solicitud no tiene un registro en pdfs_generados. Debes llamar primero a POST /generar-pdf. |
404 | Archivo no disponible | El contenido del PDF no pudo leerse ni desde storage ni desde la ruta en disco. |
Ejemplo — cURL
Ejemplo — Error 404 (PDF no generado aún)
Flujo Completo de Generación y Descarga
El proceso completo para obtener el PDF contractual de una solicitud es:Diagrama del proceso de generación
La generación del PDF es síncrona — el endpoint
POST /generar-pdf bloquea hasta que FlaskPDF responda. En solicitudes complejas, esto puede tomar entre 5 y 15 segundos. Asegúrate de configurar un timeout adecuado en tu cliente HTTP (mínimo 30 segundos recomendado).