· 11 min de lectura
Automatizar archivo y envío email de informes vía API
Workflow completo: datos → PDF → carpeta cloud → email con adjunto, solo con REST (generate-document, folders, send-document).
En las aplicaciones enterprise y las plataformas SaaS, la generación de un documento PDF es solo la primera pieza del puzzle. Una vez que el informe, la factura o el albarán de entrega están listos, se activa una cadena de acciones obligatorias: el archivo debe guardarse de forma segura en una estructura de carpetas organizada, debe quedar accesible para descargas futuras y, a menudo, debe enviarse de inmediato por email al cliente o al departamento administrativo.
Implementar este flujo completo desde cero significa escribir código para:
- Interfazarse con librerías gráficas para el renderizado del PDF.
- Configurar y gestionar un almacenamiento (local o bucket AWS S3) controlando permisos y rutas.
- Configurar servidores SMTP, gestionar las colas de envío y asegurarse de que los emails con adjuntos pesados no acaben en spam.
En esta guía veremos cómo automatizar el archivado y el envío por email de informes vía API: reducir todo el proceso a una secuencia de llamadas Web API REST — generación, archivado organizado y envío — sin almacenamiento local ni SMTP dedicado en tu gestional.
La arquitectura del flujo: genera → archiva → envía
En lugar de sobrecargar el backend de tu software con hilos separados para archivos y SMTP, el enfoque moderno de microservicios usa endpoints API especializados que trabajan en secuencia.
Los tres pasos clave:
-
generate-document: toma los datos de la aplicación en JSON, los inyecta en la plantilla gráfica preconfigurada y produce el PDF. -
folders: organiza el archivo en una estructura lógica en el portal (p. ej. Informes clientes / Julio 2026). PasasfolderIden generate-document. -
send-document: toma eldocumentIdrecién creado y envía el email con adjunto (SMTP en la API key o el predeterminado de la plataforma).
Guía práctica: implementación del workflow en Node.js
Veamos cómo traducir esta automatización en código. Objetivo: generar un informe mensual de actividades, archivarlo en la carpeta del cliente y enviárselo por email. Documentación: Web API.
const axios = require('axios');
const API_BASE = 'https://backend.quartzapi.com/index.php?r=api';
const API_KEY = 'TUO_API_KEY_SEGRETA';
const headers = {
Authorization: `Bearer ${API_KEY}`,
'Content-Type': 'application/json'
};
async function eseguiAutomazioneReport() {
try {
// FASE 0 (opcional): crea la carpeta del periodo
const folderRes = await axios.post(
`${API_BASE}/v1-folders/create`,
{ name: 'Clienti — Luglio 2026' },
{ headers }
);
const folderId = folderRes.data.folderId;
// FASE 1: generación PDF + archivado en la carpeta
console.log('1. Generación del PDF en curso...');
const genResponse = await axios.post(
`${API_BASE}/v1-jobs/generate-document`,
{
templateCode: 'REPORT_ATTIVITA',
folderId,
externalId: 'RPT-TECH-2026-07',
outputFormat: 'pdf',
data: {
cliente: 'Tech Solutions S.r.l.',
mese: 'Luglio 2026',
ore_totali: 45,
dettaglio_attivita: [
{
data: '05/07/2026',
descrizione: 'Refactoring database e indici SQL',
ore: 5
},
{
data: '12/07/2026',
descrizione: 'Sviluppo nuove API di integrazione',
ore: 40
}
]
}
},
{ headers }
);
const documentId = genResponse.data.result.documentId;
const downloadUrl = genResponse.data.result.downloadUrl;
console.log(`→ PDF archivado. documentId: ${documentId}`);
console.log(`→ Descarga: ${downloadUrl}`);
// FASE 2: envío email con adjunto
console.log('2. Envío del PDF por email...');
await axios.post(
`${API_BASE}/v1-jobs/send-document`,
{
documentId,
to: ['amministrazione@clientetech.it'],
subject: 'Report Attività Mensile - Luglio 2026',
body:
'Gentile cliente, in allegato trova il report delle attività di Luglio 2026.'
},
{ headers }
);
console.log('→ ¡Email enviado con éxito!');
} catch (error) {
console.error(
'Error en el workflow:',
error.response ? error.response.data : error.message
);
}
}
eseguiAutomazioneReport();
Equivalente cURL (generate + send)
# 1) Crea carpeta (guarda folderId de la respuesta)
curl -X POST "https://backend.quartzapi.com/index.php?r=api/v1-folders/create" \
-H "Authorization: Bearer TUO_API_KEY_SEGRETA" \
-H "Content-Type: application/json" \
-d '{"name":"Clienti — Luglio 2026"}'
# 2) Genera y archiva
curl -X POST "https://backend.quartzapi.com/index.php?r=api/v1-jobs/generate-document" \
-H "Authorization: Bearer TUO_API_KEY_SEGRETA" \
-H "Content-Type: application/json" \
-d '{"templateCode":"REPORT_ATTIVITA","folderId":"fld_...","data":{...}}'
# 3) Envía email
curl -X POST "https://backend.quartzapi.com/index.php?r=api/v1-jobs/send-document" \
-H "Authorization: Bearer TUO_API_KEY_SEGRETA" \
-H "Content-Type: application/json" \
-d '{"documentId":"doc_...","to":["amministrazione@clientetech.it"],"subject":"Report Luglio 2026"}'
¿Por qué eliminar el almacenamiento local y los servidores SMTP dedicados?
Trasladar este proceso a una infraestructura API especializada ofrece tres ventajas inmediatas a las software houses:
-
Cero problemas de espacio en disco (almacenamiento desacoplado): los PDF no residen en el servidor
de tu aplicación. Sin discos llenos ni backups ad hoc: permanecen en la nube, descargables con
GET api/v1-documents/download&uid={documentId}. -
Entregabilidad de los emails: configurar SMTP con SPF, DKIM y DMARC es complejo.
Con
send-documentusas el SMTP de la plataforma o el configurado en la API key (portal → Email/SMTP), sin mailer personalizado en el gestional. -
Trazabilidad total: con un
documentIdúnico puedes recuperar el archivo, reenviarlo o descargarlo sin reprocesar los datos de origen.
Conclusiones
La automatización de los procesos documentales no debe ser sinónimo de código pesado e infraestructuras complejas. Aislar la lógica de negocio y dejar a las API el formateo gráfico, el guardado y el enrutado de los emails hace las aplicaciones SaaS más ágiles, rápidas y fáciles de escalar — ideal si buscas cómo generar y enviar informes vía API o guardar PDF en carpeta cloud.
¿Quieres automatizar los informes de tu aplicación? QuartzAPI nace para simplificar la vida de las software houses. Con la beta pública configuras plantillas y carpetas cloud y pruebas el flujo completo de generación y envío vía API sin costes iniciales.
Snippets listos
v1-folders/create·v1-folders/index(tambiéntree=1)v1-jobs/generate-documentconfolderIdv1-jobs/send-document·v1-documents/download- Referencia: Documentación Web API