Aller au contenu

Versions et journal des changements

L’API publique est versionnée dans son chemin (/v1). Une version publiée ne casse jamais vos intégrations : elle ne reçoit que des évolutions compatibles, listées ci-dessous.

Ce qui peut évoluer sans prévenir

  • Nouvelles routes, nouveaux événements de webhook, nouveaux droits de clé.
  • Nouveaux champs dans les réponses, nouveaux paramètres facultatifs dans les requêtes.
  • Nouvelles valeurs dans une liste de valeurs (statut d’un envoi, type d’événement) et nouveaux codes d’erreur pour de nouveaux cas.

Votre intégration doit donc ignorer les champs qu’elle ne connaît pas et traiter une valeur inconnue comme un cas générique (par exemple, un statut inconnu comme « en cours »). Branchez votre logique sur le code des erreurs, jamais sur leur message.

Ce qui ne change jamais dans une version

  • Une route, un champ ou un droit ne disparaît pas et ne change pas de nom ni de type.
  • Un paramètre facultatif ne devient pas obligatoire ; une validation existante ne se durcit pas.
  • Un code d’erreur ou un statut garde son sens.

Nouvelle version majeure

Si une rupture devient nécessaire, elle arrive dans une nouvelle version (/v2) qui coexiste au moins 12 mois avec la précédente. Les routes concernées renvoient alors les en-têtes Deprecation et Sunset (date d’arrêt) et un lien vers le guide de migration ; les comptes qui les utilisent encore sont prévenus par e-mail 90, 30 et 7 jours avant l’arrêt.

Journal des changements

1.2.0 · 1er octobre 2026

  • Nouvelles routes au pluriel, même contrat : GET /v1/geo/addresses, GET /v1/geo/cities, GET /v1/routes, POST /v1/ai/letters. Les anciennes (/v1/geo/address, /v1/geo/city, /v1/route, /v1/ai/letter) sont dépréciées : toujours servies jusqu’au 1er octobre 2027 au moins, avec les en-têtes Deprecation, Sunset et Link.
  • Itinéraire introuvable : 404 not_found avec details.reason = route_not_found (au lieu du code route_not_found).
  • Idempotency-Key accepté aussi par le serveur MCP avec une clé (un calcul rejoué n’est pas facturé deux fois).
  • Messages de validation (details.issues[].message) en français ; une erreur 502 ne renvoie plus que le nom du prestataire dans details.
  • Dates renvoyées en UTC avec le suffixe Z (jusqu’ici +00:00 pour certaines) ; version de l’API dans /health.
  • Clé vf_test_ : une demande de service (POST /v1/requests) n’envoie plus d’e-mail à l’équipe ; limite par adresse IP en amont de la vérification de la clé.
  • Guide des erreurs complété (liste des codes).

1.1.0 · 1er octobre 2026

  • Webhooks : renouvellement du secret depuis l’espace développeur ; pendant 24 h, l’en-tête Vitef-Signature porte deux signatures (v1= nouveau et ancien secret) : acceptez l’une ou l’autre (guide).
  • Webhooks : un point de terminaison est désactivé automatiquement après 5 livraisons abandonnées de suite, avec un e-mail ; vous le réactivez depuis l’espace développeur.

1.0.0 · 1er octobre 2026

  • Première version stable de /v1 : contrat figé, toute évolution ultérieure reste compatible.
  • Idempotence : en-tête Idempotency-Key sur tous les POST (guide).
  • Pagination par curseur et nouvelle liste des envois GET /v1/mailings (guide).
  • Droits des clés (scopes) : chaque route exige un droit, refus en 403 insufficient_scope (guide).
  • Envoi au dépôt incertain : réponse 201 au statut paid, dépôt terminé automatiquement, sans doublon ni double facturation.
  • Documentation publique limitée à /v1 ; l’API ne répond plus aux appels faits depuis un navigateur (CORS) : appelez-la depuis votre serveur.