Bonnes pratiques techniques - API Eulerian Marketing Platform

Bonnes pratiques techniques - API Eulerian Marketing Platform




1. Authentification & sécurité

Token d'API

L'API Eulerian utilise un token Bearer transmis dans le header HTTP Authorization.
Authorization: Bearer <votre_token_api>
Bonnes pratiques :
  • Ne jamais embarquer le token en dur dans le code source. Utiliser une variable d'environnement ou un coffre-fort de secrets (Vault, AWS Secrets Manager, etc.).
  • Restreindre les tokens aux permissions strictement nécessaires (principe du moindre privilège).
  • Ne pas loguer les headers d'autorisation dans les fichiers de log applicatifs.

HTTPS obligatoire

Toutes les requêtes doivent transiter par HTTPS.


2. Principes généraux d'intégration

Structure des URLs

https://<votre_domaine_eulerian>/ea/v2/<endpoint>
Le domaine est propre à votre compte Eulerian (ex. dem.api.eulerian.com).

Headers standards

Content-Type: application/json
Accept: application/json
Authorization: Bearer <token>

Rate limiting

  • Respecter les limites de débit imposées par Eulerian (consulter la documentation de votre contrat).
  • Implémenter un mécanisme d'exponential backoff en cas de réponse 429 Too Many Requests.
  • Ne pas paralléliser abusivement les appels : préférer des files de traitement ordonnées.

Idempotence

  • Pour les requêtes de création de job, utiliser un identifiant métier (jobrun_id côté client) pour éviter les doublons en cas de retry.
  • Vérifier l'existence d'un job similaire avant d'en créer un nouveau.


3. Batch Reporting — Vue d'ensemble

Le Batch Reporting est le mécanisme principal pour extraire des volumes importants de données analytiques depuis la plateforme Eulerian. Contrairement aux requêtes synchrones (limitées à de petits volumes), le Batch fonctionne de manière asynchrone :
    Vous soumettez une requête de rapport → Eulerian crée un job et vous retourne un jobrun_id.
    Vous interrogez périodiquement le statut du job (polling).
    Une fois le job terminé (DONE), vous téléchargez le fichier de résultats.

Quand utiliser le Batch Reporting ?

Cas d'usage
Recommandation
Extraction de données sur plus de 7 jours
Batch obligatoire
Volume > 10 000 lignes attendues
Batch recommandé
Traitements planifiés / ETL nightly
Batch
Tableaux de bord temps réel (< 1 000 lignes)
API synchrone
Tests / exploration ad hoc
API synchrone


4. Cycle de vie d'un job Batch

[SUBMIT] → PENDING → RUNNING → DONE
↘ FAILED
↘ EXPIRED
Statut
Description
PENDING
Job en file d'attente, pas encore traité
RUNNING
Traitement en cours côté Eulerian
DONE
Rapport prêt au téléchargement
FAILED
Erreur lors du traitement (voir le champ error)
EXPIRED
Le fichier de résultats n'a pas été téléchargé dans les délais
Durée de rétention des résultats : Les fichiers générés par Eulerian sont disponibles pendant une durée limitée (généralement 24 à 72 heures). Télécharger et archiver les résultats dès que le statut est DONE.


5. Polling & gestion des statuts

Endpoint de statut

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

Stratégie de polling recommandée

Ne jamais effectuer un polling trop agressif : cela consomme inutilement votre quota d'appels API.
Intervalle suggéré :
Temps écoulé depuis soumission
Intervalle de polling
0 – 2 min
Toutes les 30 secondes
2 – 10 min
Toutes les 60 secondes
10 – 60 min
Toutes les 5 minutes
> 60 min
Toutes les 15 minutes
Timeout maximum : Définir un timeout global (ex. 4 heures). Au-delà, considérer le job comme en échec et alerter.
Implémentation :
  • Stocker le jobrun_id de façon persistante (base de données, fichier) pour pouvoir reprendre le polling après un redémarrage de votre application.
  • Ne pas relancer un nouveau job si un job identique est déjà en cours (PENDING ou RUNNING).

Exemple de boucle de polling (pseudo-code)

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()
SINON → alerter équipe ops


7. Récupération et traitement des résultats

Endpoint de téléchargement

GET /ea/v2/report/batch/download.json?jobrun-id={jobrun_id}
La réponse contient soit le fichier directement en streaming, soit une URL de téléchargement temporaire.

Bonnes pratiques de téléchargement

  • Streamer le téléchargement plutôt que de charger le fichier entier en mémoire (les fichiers peuvent atteindre plusieurs centaines de Mo).
  • Archiver le fichier brut avant tout traitement (principe de l'idempotence du traitement).

Traitement du CSV

  • Toujours spécifier l'encodage UTF-8 à l'ouverture du fichier.
  • Gérer les lignes d'en-tête dynamiquement (les colonnes peuvent évoluer).
  • Valider le nombre de colonnes de chaque ligne avant insertion en base.
  • Gérer les valeurs nulles / chaînes vides explicitement (ne pas les confondre avec 0).

Gestion des gros volumes

Pour des fichiers > 100 Mo :
  • Traiter ligne par ligne en streaming (ne jamais tout charger en RAM).
  • Insérer en base par batches de 1 000 à 5 000 lignes (bulk insert).
  • Implémenter une reprise sur erreur avec marquage de la dernière ligne traitée.


8. Gestion des erreurs

Codes HTTP à traiter

Code
Signification
Action recommandée
200
Succès
Traitement normal
400
Requête invalide
Logger la réponse, corriger les paramètres
401
Token invalide/expiré
Renouveler le token, alerter
403
Permissions insuffisantes
Vérifier les droits du token
404
Job introuvable
Le job a expiré ou l'ID est erroné
429
Rate limit atteint
Backoff exponentiel (min. 60s)
500
Erreur serveur Eulerian
Retry après délai, contacter le support si persistant
503
Service indisponible
Retry avec backoff, surveiller le statut Eulerian

Stratégie de retry

Tentative 1 : immédiate
Tentative 2 : +5 secondes
Tentative 3 : +15 secondes
Tentative 4 : +60 secondes
Tentative 5 : +300 secondes
Au-delà : alerter et abandonner
Ne jamais retry sur les erreurs 400, 401, 403 (erreurs client — corriger d'abord le problème).

Logging

  • Logger systématiquement : timestamp, endpoint appelé, code HTTP reçu, job_id, durée de la requête.
  • Ne jamais logger le token d'API ni les données personnelles des utilisateurs finaux.
  • Conserver les logs d'erreur au moins 30 jours pour faciliter le débogage.


9. Checklist de mise en production

Sécurité

Token API stocké en variable d'environnement (jamais en dur dans le code)
HTTPS forcé sur tous les appels
Logs ne contiennent pas le token ni de données personnelles

Robustesse

Retry avec backoff exponentiel implémenté
Timeout global sur le polling défini (recommandé : 4 heures)
jobrun_id persisté pour reprise après crash
Vérification du statut avant de relancer un job identique

Performance

Plages de dates découpées en fenêtres ≤ 90 jours
Sélection des colonnes limitée au strict nécessaire
Téléchargement en streaming (pas de chargement en mémoire entière)
Insertion en base par batches (bulk insert)

Monitoring

Alertes sur les jobs en FAILED ou KILLED
Alertes sur les erreurs 401/403 (token expiré)
Dashboard de suivi des temps de traitement des jobs
Archivage des fichiers bruts avant traitement

Tests

Tests avec des plages de dates courtes avant passage en production
Validation du format CSV en sortie (nombre de colonnes, encodage)
Test du comportement en cas de 429 (rate limiting)
Test de reprise après interruption en cours de polling