Développement

API : faire évoluer sans casser vos intégrations

Le jour où un partenaire consomme votre API, sa forme cesse de vous appartenir. La question n’est plus « comment la rendre meilleure ? » mais « comment la faire évoluer sans casser ce qui tourne ailleurs ? ».

Équipe RGAIX · · 7 min de lecture

Schéma d’échanges entre une API métier et ses intégrations partenaires
DéveloppementAPI : faire évoluer sans casser vos intégrations

Distinguer les changements compatibles des autres

La règle est simple à énoncer : ajouter est compatible, retirer et renommer ne le sont pas. Ce qui la rend difficile à appliquer, ce sont les cas intermédiaires que l’on croit inoffensifs.

ChangementCompatible ?Pourquoi
Ajouter un champ optionnelOuiLes clients ignorent ce qu’ils ne connaissent pas
Rendre un champ obligatoireNonCasse les appels existants
Ajouter une valeur d’énumérationRarementLes clients stricts rejettent l’inconnu
Élargir un type numériqueAttentionDébordements côté client
Changer l’ordre d’une listeAttentionCertains clients s’appuient dessus

La troisième ligne est la plus sous-estimée : ajouter un nouveau statut à une énumération casse tous les clients qui valident strictement les valeurs reçues. C’est un ajout, et pourtant c’est une rupture.

Documenter ce qui n’est pas garanti

Un contrat d’API doit dire ce sur quoi on peut s’appuyer, mais surtout ce sur quoi on ne peut pas : l’ordre des champs, la forme exacte des identifiants, la présence de champs non documentés, la stabilité des messages d’erreur en langage naturel.

Sans cette liste, chaque détail observé devient une garantie implicite. Les intégrateurs s’appuient sur ce qu’ils voient, pas sur ce que vous aviez l’intention de promettre.

Versionner le moins possible

Une nouvelle version majeure double le coût de maintenance et oblige chaque partenaire à planifier une migration. Réservez-la aux ruptures inévitables, et préférez l’ajout de champs, la dépréciation progressive et les valeurs par défaut.

  1. Ajouter le nouveau champ à côté de l’ancien, sans rien supprimer.
  2. Annoncer la dépréciation avec une date, dans la documentation et dans un en-tête de réponse.
  3. Mesurer qui utilise encore l’ancien champ, en journalisant les appels.
  4. Prévenir individuellement les derniers utilisateurs avant le retrait.

Rendre les erreurs exploitables

Une intégration se casse plus souvent sur la gestion des erreurs que sur le cas nominal. Un code stable et lisible par une machine, un message en langage naturel pour l’humain, et un identifiant de corrélation pour retrouver l’appel dans vos journaux : ces trois éléments évitent la plupart des allers-retours.

Précisez aussi ce qui est rejouable. Un partenaire qui ne sait pas si sa requête a été prise en compte réessaiera — et créera un doublon si vous n’avez pas prévu de clé d’idempotence.

Une API est une promesse tenue dans le temps. Ce qui la rend fiable n’est pas son élégance, mais la prévisibilité de ses changements.

Parlons de ce qui vous bloque.

Une urgence, un profil à trouver ou un projet à structurer : commençons par votre besoin.

Échanger avec RGAIX