Empezar gratis

· 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.

Flujo: JSON, generate-document, archivo en carpetas, email
Workflow automatizado: datos JSON → PDF en carpeta cloud → email con adjunto.
[Datos JSON] │ ├─► 1. v1-folders/create (opcional: crea / reutiliza la carpeta) │ ├─► 2. v1-jobs/generate-document (+ folderId) → PDF archivado │ │ │ └─ documentId │ └─► 3. v1-jobs/send-document (documentId + to[]) → Email al usuario

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). Pasas folderId en generate-document.
  • send-document: toma el documentId recié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-document usas 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.

👉 Regístrate en la Beta de QuartzAPI y automatiza tus PDF

Snippets listos

  • v1-folders/create · v1-folders/index (también tree=1)
  • v1-jobs/generate-document con folderId
  • v1-jobs/send-document · v1-documents/download
  • Referencia: Documentación Web API