80% de code d’intégration en moins grâce au SDK développé
<1h pour onboarder un nouveau développer à l’API ERP TEMPO
<1% de taux d’erreurs API avec le retry/pagination
L'entreprise
Enso Groupe édite le logiciel TEMPO ERP intérim pour la gestion des fiches intérimaires, contrats, paie, DPAE, facturation, marges etc. Ce logiciel fait partie de la suite Enso. L’intégration via son web service API est simplifiée grâce à notre SDK Python.
Challenges
Une API sans SDK bloque l’adoption par les développeurs et leur intégration. Les challenges rencontrés étaient :
- Une API complexe : entités complexes, pagination, gestion des erreurs
- Entités hétérogènes : Intérimaires, Contrats, Documents, Clients, Interlocuteurs, Marges, Relevés Heures etc
- Maintenance coûteuse des scripts ad hoc
Objectifs
Autour de l’API TEMPO ERP intérim, l’objectif est clair :
- Standardiser les intégrations avec TEMPO ERP intérim via un SDK Python
- Gestion de l’authentification au web service pour garantir une sécurité optimale
- Fiabiliser les échanges avec gestion automatisée des erreurs (retry/pagination)
- Accélérer le time-to-integration pour les projets internes et partenaires
- Ouvrir la voie à un écosystème de développeurs pour l’implémentation de solutions métiers tierces
Retour
« Le SDK a transformé l’API TEMPO en un outil simple et robuste. Moins de code, moins d’erreurs, plus vite en prod. Et surtout plus flexible. Permettant de collaborer plus facilement et de limiter la maintenance. »
— Développeur intégrateur de l’API ERP TEMPO
Stratégie mise en place
Architecture de la solution
Le SDK agit comme une couche intelligente qui simplifie l’API de TEMPO (web service) et permet de bâtir rapidement des applications métiers (portails, reporting, ATS) fiables et extensibles avec :
- Requêtes robustes : authentification basique, construction d’URL, retries, pagination, normalisation des erreurs
- ORM : création de modèles par entité avec des attributs typés permettant une conversion et validation optimal
- Modèles métier : Interimaire, Contrat, Client, Document, Marges, Relevés Heures etc
- Utilitaires : formats date propriétaires, découpe paramètres, calculs simples (durée, segmentation) prêts pour analytics
Fonctionnalités clés
Les fonctionnalités disponibles incluent :
- ORM déclaratif des entités (Intérimaires, Contrats, Clients, Marges etc)
- Pagination et limite d’URL résolues
- Retry automatique lors d’erreurs serveur
- Création/mise à jour unifiée des entités, validation métier
Exemples de code
Création des entités
Model.create()
.
from datetime import date
from pldtempo.models.interimaire import Interimaire
from pldtempo.models.client import Client
from pldtempo.models.contrat import Contrat
DOSSIER = "DOSSIER"
client = Client(dossier=DOSSIER, siret="12345678900011", raison_sociale="ACME", ...)
client.create()
print("Client créé : ", client)
# >>> Client créé :
interimaire = Interimaire(dossier=DOSSIER, nom="DUPONT", prenom="Jean", dob=date(1970, 1, 1), ...)
interimaire.create()
print("Intérimaire créé :", interimaire)
# >>> Intérimaire créé :
contrat = Contrat(dossier=DOSSIER, id_client=client.id, id_interimaire=interimaire.id, date_debut=date(2025, 9, 1), date_fin=date(2025, 9, 30), profession="Manutention", ...)
contrat.create()
print("Contrat créé", contrat)
# >>> Contrat créé :
Contrats actifs par dossier
Calculer le nombre de contrats en cours pour un dossier TEMPO à une date.
from typing import List
from pldtempo.models.contrat import Contrat
date = "20250901" # Format YYYYMMDD
c: List[Contrat] = Contrat.now(dossier="DOSSIER", params={"DateEncours": date})
print(f"Nombre de contrats au {date}: {len(c)}")
Contrats d'un intérimaire
from pldtempo.models.interimaire import Interimaire
from pldtempo.models.contrat import Contrat
i = Interimaire.get(dossier="DOSSIER", params={"ID": 123})
# Récupère les contrats passés, en cours et futurs de l'intérimaire
past, now, future = Contrat.split(contrats=i.contrats())
print(f"Intérimaire {i.dossier}/{i.id} {i.nom} {i.prenom}")
print(f"Contrats: passés={len(past)} en cours={len(now)} futurs={len(future)}")
Batch processing
Récupération massive et fiable de l’ensemble des contrats pour un dossier en précisant les membres à récupérer. Il est également possible d’appliquer d’autres filtres dans les params
(selon la spécification de l’API).
from typing import List
from pldtempo.models.contrat import Contrat
dossier = "DOSSIER"
membres = ["IdContrat","DateDebut","DateFin","RaisonSociale"]
contrats: List[Contrat] = Contrat.all(
dossier=dossier,
params={"Membres": membres}
)
print(f"Nombre de contrats dans le dossier {dossier} : {len(contrats)}")
Résultats
Développé pour TEMPO ERP intérim, le SDK apporte :
- 70–80 % de code en moins, réduisant drastiquement l’intégration
- Un onboarding simplifié (<1h) pour tout nouveau développeur
- Une fiabilité accrue, avec moins d’erreurs dans les échanges de données
- Un ORM unifié, offrant une base solide pour connecter de nouveaux outils
- Une maintenance allégée, limitant la dette technique et les coûts
Apprentissages
La mise en place de ce SDK autour de TEMPO ERP intérim démontre que :
- Standardiser les intégrations via SDK accélère les résultats
- Un SDK métier implémenté autour d’une API brute offre un avantage concurrentiel considérable
- La maintenance est grandement réduite, permettant à une équipe de développeurs de collaborer plus facilement
Grâce au SDK, un ATS centralié a été déployé pour simplifier et transformer la gestion intérim multi-agences (étude de cas).