L'API est sortie de bêta le deux juillet. Elle a été livrée dans la révision 5.4 de la plateforme en juin, a fonctionné en bêta sur invitation à partir de février avec un peu plus de quatre cents comptes, et n'a pas changé de forme depuis avril. Versionnée, documentée et couverte par le même engagement de disponibilité que le panneau.
Dire qu'elle est en retard serait généreux. La raison n'est pas mystérieuse : une interface posée sur un système de provisionnement qui avait besoin de trois minutes et demie pour construire un serveur aurait été une interface pour interroger un spinner. Nous avons réécrit la file d'attente d'abord, en 2025, et l'ordre était délibéré plutôt que chanceux.
Ce qu'elle fait
| Groupe | Ce que vous pouvez faire | Notes |
|---|---|---|
| Instances | Créer, redimensionner, reconstruire, effectuer un snapshot, restaurer, détruire | Le redimensionnement à la hausse est en direct, le redimensionnement à la baisse nécessite un redémarrage |
| Images | Lister le catalogue d'OS, enregistrer une ISO personnalisée par URL | Les installations d'ISO personnalisées sont toujours manuelles et toujours lentes |
| Réseau | Ajouter IPv4, modifier le DNS inversé, demander un IPv6 /48 | Délégué, jamais procuré |
| Filtrage | Lire les événements d'attaque, pousser des règles de couche 7 sur DDoS Pro | Le filtrage de base n'a rien à configurer |
| Facturation | Lire le solde, lister les factures, ouvrir une facture de recharge | Pas de champs de carte, parce qu'il n'y a pas de cartes |
| Événements | Interroger le journal des événements ou enregistrer un webhook | Signé avec un secret par compte |
Tout est en JSON sur HTTPS, et chaque objet que le panneau peut afficher est un objet que l'API peut renvoyer. Il n'y a pas de niveau de fonctionnalité réservé à l'interface web, ce qui est une promesse qui nous coûte quelque chose : le panneau consomme maintenant les mêmes points de terminaison publics que vous, donc une API cassée est un panneau cassé et nous le découvrons immédiatement.
Authentification
Les jetons sont créés dans le panneau, avec des autorisations, et affichés exactement une fois. Pas d'authentification par mot de passe, pas de cookies de session, pas de redirection vers un fournisseur d'identité à qui nous devrions ensuite faire confiance avec quelque chose que nous avons pris soin de ne pas collecter.
Un jeton porte une autorisation de lecture, d'écriture ou de facturation, une restriction facultative à un seul site, une restriction facultative à une liste d'instances, et une expiration que vous définissez. Soixante jours est la valeur par défaut. Les jetons peuvent être révoqués individuellement et la révocation est effective à la périphérie en moins de deux secondes, ce qui compte plus que ce que cela semble quand un serveur de build est reconstruit par quelqu'un qui ne savait pas ce qu'il y avait dessus.
Parce qu'un compte ici est une adresse e-mail et un hash de mot de passe, il n'y a pas d'objet client à récupérer. L'API n'a pas de champ de nom, pas de champ d'adresse, pas de champ d'entreprise et pas de champ de taxe, exactement pour la raison le formulaire d'inscription n'en a pas.
Limites de débit, idempotence, erreurs
Six cents lectures par minute et soixante écritures, comptées par jeton plutôt que par compte, donc un script bruyant ne peut pas affamer le reste de votre automatisation. Les limites sont renvoyées dans les en-têtes de chaque réponse, y compris les réponses réussies.
Chaque écriture accepte une clé d'idempotence. Réessayez une création avec la même clé et vous récupérez l'instance d'origine plutôt qu'une seconde facturée en parallèle. C'est la fonctionnalité que les bêta-testeurs nous ont la plus remerciés pour, ce qui en dit long sur la façon dont le reste de l'industrie gère un délai d'attente pendant le provisionnement.
Les erreurs sont un code machine documenté, une phrase qu'un humain peut lire, et un identifiant de requête. Collez l'identifiant dans un ticket et le support peut voir la même requête que vous avez vue, sans vous demander de la reproduire.
Ce qu'elle ne fait délibérément pas
- Jamais de monnaie fiduciaire. Les points de terminaison de facturation lisent votre solde et ouvrent une facture de recharge. Le règlement reste avec OxaPay et la chaîne que vous avez choisie, exactement comme décrit sur la page de paiement.
- Pas de sous-comptes ou de rôles. Demandé constamment. Pas construit, parce que l'implémentation évidente signifie détenir une structure de qui-travaille-pour-qui, et nous préférons livrer des jetons à autorisations qui expirent et vous laisser garder votre organigramme pour vous.
- Pas d'auto-scaling. Les instances sont des cœurs dédiés sur du vrai silicium, pas un pool que nous pouvons invoquer. Vous pouvez créer et détruire selon votre propre calendrier ; nous n'allons pas prétendre qu'une abstraction élastique se trouve en dessous.
- Pas de matrice de SDK. Un client de référence, et du HTTP simple comme contrat. Six liaisons de langage à moitié maintenues vieilliraient moins bien que la documentation.
Ce que nous aimerions voir cassé
La bêta a trouvé neuf bugs valant la peine d'être corrigés, dont trois étaient les nôtres d'une manière intéressante et six étaient le fait que la documentation mentait. Si vous en trouvez un dixième, l'abus d'une limite de débit est acceptable et attendu pendant les tests, et le support préférerait avoir l'identifiant de requête plutôt qu'une capture d'écran.
La référence est sur la documentation. Le journal des modifications pour la révision 5.4 liste les sept points de terminaison qui ont changé de forme entre février et avril, et ce sont les seuls changements de rupture qu'il y aura dans la version un.