history Journal de l'API

/api/v1 — ce qui a changé

Le versionnement est basé sur l'URL. Les changements cassants partent sur /api/v2; tout ce qui est additif reste sur v1. Les dépréciations sont annoncées ici au moins 12 mois avant le retrait.

2026-05-25 · v1.0

Lancement public — API REST v1

  • Authentification Bearer avec des clés gg_<env>_pk_… , préfixe visible, texte en clair affiché une seule fois lors de la génération.
  • Enveloppe JSON à la Stripe sur chaque réponse. X-Request-Id sur chaque réponse.
  • Domaines — lister, enregistrer, chercher, disponibilité, afficher, patcher (serveurs de noms / auto_renew / customer_id), transférer, renouveler.
  • DNS — lister / créer / supprimer enregistrements (A, AAAA, CNAME, MX, TXT, NS, SRV, CAA).
  • SSL — lister, émettre (DV / OV / EV / caractère générique), afficher, renouveler, réémettre.
  • Hébergement — lister, provisionner, afficher, suspendre, lever la suspension, faire pivoter le mot de passe.
  • Facturation — lecture seule des commandes + factures avec lignes.
  • Webhooks — abonner, lister, patcher, supprimer, tester. Signature HMAC-SHA256, relance exponentielle.
  • Usage — compteurs de requêtes quotidiens sur 30 jours, taux d'erreur, latence.

À venir

Prévu pour v1 (additif — aucun changement client requis)

  • Curseurs de pagination signés (actuellement le curseur est un id de ligne opaque; les clients ne verront pas la différence).
  • En-têtes de limite de débit par tenant (X-RateLimit-Remaining, Retry-After).
  • Idempotency-Key honoré pendant 24 h via la table api_idempotency .
  • Séparation du mode test : les clés gg_test_pk_… n'atteignent jamais les systèmes externes, les webhooks portent "livemode": false.
  • SDK officiels : PHP, Node, Python, Go — générés depuis la spécification OpenAPI.

Politique de version

Ce qui compte comme cassant

Retirer un champ, changer le type d'un champ, renommer un chemin ou changer la sémantique d'un événement existant — ça part sur /api/v2. Ajouter un nouveau champ, un nouvel endpoint ou un nouveau nom d'événement, non. Traitez les clés JSON inconnues comme opaques (loi de Postel); on en ajoute souvent.