Aller au contenu
ecdsa.com

Journal des modifications

Les modifications de l’API publique, de la plus récente à la plus ancienne. La version de l’API figure dans le chemin ; des changements incompatibles seraient publiés sous /api/v2 : les réponses v1 peuvent s’enrichir de champs et de codes, mais aucun champ ni code existant ne sera supprimé ni modifié.

  1. Avec les clés d’API

    Pas encore publiée

    Fusionnées, pas encore publiées : ces modifications seront livrées à l’arrivée des clés d’API, en même temps que les comptes ecdsa.com. Les appels sans clé restent exactement les mêmes.

    • Modifié

      Une clé bien formée mais inconnue, révoquée ou expirée est refusée avec 401 unauthorized et un challenge WWW-Authenticate, au lieu que l’appel soit traité de façon anonyme.

      Codes :unauthorized

      En-têtes :WWW-Authenticate

    • Ajouté

      403 forbidden_scope : la clé est valide, mais il lui manque un scope requis par l’opération ; le message le nomme. L’appel est refusé avant que la moindre limite de requêtes ou le moindre quota ne soit consommé.

      Codes :forbidden_scope

    • Ajouté

      429 quota_exceeded : un quota quotidien ou mensuel du compte de la clé est épuisé. Retry-After court jusqu’à la remise à zéro du quota ; les SDK ne retentent jamais cette erreur.

      Codes :quota_exceeded

    • Ajouté

      Chaque réponse à un appel avec une clé indique le quota qui s’épuisera le premier ; les navigateurs peuvent aussi lire ces en-têtes.

      En-têtes :X-Quota-LimitX-Quota-RemainingX-Quota-Reset

    • Ajouté

      503 service_unavailable : les clés ne peuvent pas être vérifiées pour le moment. Un appel avec une clé n’est jamais traité de façon anonyme : réessayez sous peu.

      Codes :service_unavailable

    • Modifié

      Les appels avec une clé sont limités par clé et non plus par IP : 120 par minute avec l’offre gratuite, 600 avec l’offre Pro. Les clés de test relèvent toujours de l’offre gratuite.

      Codes :rate_limited

    • Modifié

      Le champ auth de l’index de l’API indique que les clés sont facultatives, ce qu’une clé change et quelles opérations en exigent une, au lieu de « no API keys ».

      Opérations :GET /v1

    • Ajouté

      Webhooks : /api/v1/webhooks liste (GET) et crée (POST) les points de terminaison du compte de la clé, /api/v1/webhooks/delete en supprime un et /api/v1/webhooks/test envoie un événement de test. Ces opérations exigent une clé dotée du scope webhooks et ne sont proposées qu’en REST, ni comme outils MCP ni dans les SDK.

      Opérations :GET /v1/webhooksPOST /v1/webhooksPOST /v1/webhooks/deletePOST /v1/webhooks/test

    • Ajouté

      Les envois sont signés avec ECDSA P-256 : ECDSA-Signature porte l’horodatage, l’identifiant de clé et la signature, et les clés publiques sont celles du JWKS publié à /.well-known/ecdsa-webhook-keys.json ; deux identifiants de clé coexistent pendant une rotation. Chaque SDK vérifie un envoi avec verifyWebhook().

    • Ajouté

      Nouveaux codes pour les webhooks : webhook_url_refused (400), webhook_limit_reached (403), webhook_not_found (404) et webhooks_unavailable (503).

      Codes :webhook_url_refusedwebhook_limit_reachedwebhook_not_foundwebhooks_unavailable

  2. v1.1.0

    Publiée le 22 octobre 2026

    Le cœur de l’API a été reconstruit sur des opérations déclaratives, et les analyses d’un domaine partagent désormais un budget par hôte vérifié. Changement additif pour les clients existants : chaque requête v1.0 obtient le même statut et le même corps, plus les nouveaux champs. La plupart de ces modifications sont en ligne depuis le 20 octobre 2026 ; l’index indique 1.1.0 à partir de cette version.

    • Ajouté

      Les analyses réelles d’un domaine puisent dans des budgets partagés par tous les clients : un même hôte au plus 6 fois toutes les 10 minutes, l’ensemble des analyses au plus 300 par minute. Une analyse au-delà d’un budget reçoit la réponse 429 rate_limited avec Retry-After ; les réponses servies depuis le cache d’une heure ne consomment rien.

      Codes :rate_limited

      Opérations :GET /v1/health/{domain}

    • Ajouté

      Les corps d’erreur gagnent requestId (à mentionner quand vous signalez un problème) et docs, un lien vers les codes d’erreur. code et message ne changent pas.

      Champs :error.requestIderror.docs

    • Ajouté

      Chaque réponse porte X-Request-Id. Envoyez le vôtre (de 1 à 128 lettres, chiffres, points, tirets bas, deux-points ou traits d’union) pour corréler les requêtes : il vous est renvoyé tel quel.

      En-têtes :X-Request-Id

    • Modifié

      Les chemins inconnus renvoient 404 not_found et les méthodes incorrectes 405 method_not_allowed avec un en-tête Allow : des enveloppes JSON avec CORS au lieu de pages HTML.

      Codes :not_foundmethod_not_allowed

      En-têtes :Allow

    • Corrigé

      Un JSON imbriqué sur plus de 64 niveaux (y compris le JSON contenu dans des champs de type chaîne) reçoit la réponse 400 invalid_json dans l’enveloppe JSON. Auparavant, il provoquait une erreur 500 qui n’était pas du JSON.

      Codes :invalid_json

    • Ajouté

      Les réponses de santé des domaines gagnent certificate : l’expiration du certificat feuille, le nombre de jours restants, l’algorithme et la courbe de la clé.

      Champs :certificate

      Opérations :GET /v1/health/{domain}

    • Ajouté

      Un en-tête Authorization ou X-API-Key mal formé est refusé avec 401 unauthorized au lieu d’être ignoré, pour qu’un client qui voulait s’authentifier découvre la faute de frappe. Les appels avec une clé bien formée restent traités de façon anonyme jusqu’à l’arrivée des clés d’API.

      Codes :unauthorized

    • Ajouté

      Une opération qui ne se termine pas dans son délai imparti de 10 secondes renvoie 504 timeout.

      Codes :timeout

    • Modifié

      Les navigateurs peuvent envoyer Authorization, X-API-Key, X-Request-Id et Idempotency-Key depuis une autre origine, et lire X-Request-Id.

    • Modifié

      Le document OpenAPI est généré à partir des schémas propres à l’API : chaque opération liste ses codes d’erreur par statut, ses exemples et les scopes dont une clé d’API a besoin.

      Opérations :GET /v1/openapi.json

  3. v1.0.0

    Publiée le 20 août 2026

    L’API de signature gratuite devient publique.