Mejores prácticas técnicas - API de la plataforma de marketing euleriana

Mejores prácticas técnicas - API de la plataforma de marketing euleriana




1. Autenticación y seguridad

token de API

La API de Eulerian utiliza un token Bearer que se pasa en el encabezado Authorization HTTP.
Mejores prácticas:
Authorization: Bearer <votre_token_api>

  • Nunca incluyas el token directamente en el código fuente. Utiliza una variable de entorno o un almacén de secretos (Vault, AWS Secrets Manager, etc.).
  • Restringir los tokens a los permisos estrictamente necesarios (principio de mínimo privilegio).
  • No registre los encabezados de autorización en los archivos de registro de la aplicación.

Se requiere HTTPS

Todas las solicitudes deben enviarse a través de HTTPS.


2. Principios generales de integración

Estructura de URL

El dominio es específico de su cuenta euleriana (por ejemplo,
https://<votre_domaine_eulerian>/ea/v2/<endpoint>
dem.api.eulerian.com ).

Encabezados estándar

Content-Type: application/json
Accept: application/json
limitación de velocidad
Authorization: Bearer <token>



  • Respete los límites de velocidad impuestos por Eulerian (consulte la documentación de su contrato).
  • Implementar un mecanismo de retroceso exponencial en caso de una respuesta 429 Too Many Requests .
  • Evite la paralelización excesiva de las llamadas: prefiera las colas de procesamiento ordenadas.

Idempotencia

  • Para las solicitudes de creación de trabajos, utilice un identificador de negocio ( jobrun_id en el lado del cliente) para evitar duplicados en caso de reintento.
  • Comprueba si ya existe un trabajo similar antes de crear uno nuevo.


3. Informes por lotes: descripción general

La generación de informes por lotes es el mecanismo principal para extraer grandes volúmenes de datos analíticos de la plataforma Euleriana. A diferencia de las consultas síncronas (limitadas a pequeños volúmenes), la generación de informes por lotes funciona de forma asíncrona :
    Usted envía una solicitud de informe → Eulerian crea un trabajo y devuelve un jobrun_id .
    Usted revisa periódicamente el estado del trabajo ( sondeo ).
    Una vez que el trabajo esté terminado ( DONE ), descargue el archivo de resultados.

¿Cuándo utilizar los informes por lotes?

Cas d'usage
Recommandation
Extracción de datos durante más de 7 días
Se requiere lote
Volumen esperado > 10.000 líneas
Lote recomendado
Tratamientos programados / ETL nocturno
Lote
Paneles de control en tiempo real (< 1000 filas)
API síncrona
Pruebas/exploración ad hoc
API síncrona


4. Ciclo de vida de los trabajos por lotes

[SUBMIT]PENDINGRUNNINGDONE
FAILED

EXPIRED
Statut
Description
PENDING
Trabajo en cola, aún no procesado.
RUNNING
El procesamiento está en marcha por parte de Euleriano.
DONE
Informe listo para descargar.
FAILED
Error durante el procesamiento (ver el campo error )
EXPIRED
El archivo de resultados no se cargó a tiempo.
Periodo de retención de resultados: Los archivos generados por Eulerian están disponibles durante un tiempo limitado (normalmente de 24 a 72 horas). Descargue y archive los resultados tan pronto como el estado sea DONE .


5. Sondeos y gestión del estado

Punto final de estado

Estrategia de sondeo recomendada
GET /ea/v2/report/batch/status.json?jobrun-id={jobrun_id}



Nunca realice sondeos excesivamente agresivos: esto consume innecesariamente su cuota de llamadas a la API.
Intervalo sugerido:
Temps écoulé depuis soumission
Intervalle de polling
0-2 min
Cada 30 segundos
2 – 10 min
Cada 60 segundos
10–60 min
Cada 5 minutos
> 60 min
Cada 15 minutos
Tiempo de espera máximo: Defina un tiempo de espera general (por ejemplo, 4 horas). Transcurrido este tiempo, considere que la tarea ha fallado y alerte al sistema.
Implementación:
  • Almacene el jobrun_id de forma persistente (en una base de datos o un archivo) para que el sondeo pueda reanudarse después de reiniciar la aplicación.
  • No inicie un nuevo trabajo si ya hay un trabajo idéntico en curso ( PENDING o RUNNING ).

Ejemplo de un bucle de sondeo (pseudocódigo)

ATTENDRE 30 secondes
TANT QUE timeout non atteint :
statut = GET /batch/status.json?jobrun-id{jobrun_id}
SI statut == DONE → télécharger résultat → FIN
SI statut == FAILED → logger erreur → FIN
SI statut == EXPIRED → relancer job → FIN
ATTENDRE intervalle_adaptatif()
7. Recuperación y procesamiento de resultados
SINON → alerter équipe ops




Punto final de descarga

La respuesta contiene el archivo directamente para su reproducción en streaming o una URL de descarga temporal.
GET /ea/v2/report/batch/download.json?jobrun-id={jobrun_id}


Descarga de mejores prácticas

  • Reproduce la descarga en streaming en lugar de cargar el archivo completo en la memoria (los archivos pueden alcanzar varios cientos de MB).
  • Archive el archivo original antes de cualquier procesamiento (principio de idempotencia del procesamiento).

Procesamiento de CSV

  • Siempre especifique la codificación UTF-8 al abrir el archivo.
  • Gestiona las filas de encabezado de forma dinámica (las columnas pueden cambiar).
  • Verifique el número de columnas en cada fila antes de insertarla en la base de datos.
  • Maneje explícitamente los valores nulos / cadenas vacías (no los confunda con 0 ).

Gestión de grandes volúmenes

Para archivos de más de 100 MB:
  • Procesar línea por línea en modo de transmisión continua (nunca cargar todo en la RAM).
  • Insertar datos en la base de datos en lotes de 1.000 a 5.000 filas (inserción masiva).
  • Implementar la recuperación de errores marcando la última línea procesada.


8. Manejo de errores

Códigos HTTP para procesar

Code
Signification
Action recommandée
200
Éxito
Tratamiento normal
400
Solicitud no válida
Registra la respuesta, corrige la configuración.
401
Token no válido/caducado
Renovar token, alerta
403
Permisos insuficientes
Verificar los derechos del token
404
No se encontró trabajo
El trabajo ha caducado o el ID es incorrecto.
429
Se ha alcanzado el límite de velocidad.
Retroceso exponencial (mínimo 60 s)
500
Error del servidor euleriano
Inténtelo de nuevo después de un breve lapso; póngase en contacto con el servicio de asistencia si el problema persiste.
503
Servicio No Disponible
Reintentar con retroceso, monitorear el estado euleriano

Estrategia de reintento

Tentative 1 : immédiate
Tentative 2 : +5 secondes
Tentative 3 : +15 secondes
Tentative 4 : +60 secondes
Tentative 5 : +300 secondes
Nunca vuelvas a intentarlo si cometes errores.
Au-delà : alerter et abandonner
400 , 401 , 403 (errores del cliente: corrija el problema primero).

Explotación florestal

  • Registra sistemáticamente: marca de tiempo, punto final llamado, código HTTP recibido, job_id , duración de la solicitud.
  • Nunca registres el token de la API ni los datos personales del usuario final.
  • Conserve los registros de errores durante al menos 30 días para facilitar la depuración.


9. Lista de verificación para la implementación en producción

Seguridad

  • El token de la API se almacena en una variable de entorno (nunca se incluye directamente en el código).
  • HTTPS forzado en todas las llamadas
  • Los registros no contienen el token ni los datos personales.

Robustez

  • Reintentar con retroceso exponencial implementado
  • Tiempo de espera global para el sondeo definido (recomendado: 4 horas)
  • jobrun_id se mantuvo para la recuperación después del fallo.
  • Comprobar el estado antes de reiniciar el mismo trabajo.

Actuación

  • Rangos de fechas divididos en ventanas de ≤ 90 días
  • La selección de columnas se limita al mínimo indispensable.
  • Descarga en streaming (sin carga completa de memoria)
  • Inserción en la base de datos por lotes (inserción masiva)

Escucha

  • Alertas sobre trabajos que FAILED o KILLED
  • Alertas de error para 401 / 403 (token caducado)
  • Panel de control para el seguimiento del tiempo de procesamiento de trabajos
  • Archivar archivos sin procesar antes de su procesamiento.

Pruebas

  • Pruebas con intervalos de tiempo cortos antes de entrar en producción.
  • Validación del formato CSV de salida (número de columnas, codificación)
  • Comportamiento de prueba en caso de un 429 (limitación de velocidad)
  • Prueba de reanudación tras interrupción durante el sondeo.