Tenuto da ottobre 2019

L'API pubblica, e perché ci sono voluti sette anni

La revisione 5.4 della piattaforma ha rilasciato un'API autenticata con token a giugno. Ecco cosa fa, cosa si rifiuta deliberatamente di fare e perché abbiamo aspettato così a lungo.

L'API è uscita dalla beta il due luglio. È stata inclusa nella revisione 5.4 della piattaforma a giugno, è rimasta in beta su invito da febbraio con poco più di quattrocento account, e non ha cambiato forma da aprile. Versionata, documentata e coperta dallo stesso impegno di disponibilità del pannello.

Definirla in ritardo sarebbe generoso. Il motivo non è misterioso: un'interfaccia sopra un sistema di provisioning che impiegava tre minuti e mezzo per creare un server sarebbe stata un'interfaccia per interrogare uno spinner. Abbiamo prima riscritto la coda, nel 2025, e l'ordine è stato deliberato, non frutto di fortuna.

Cosa fa

GruppoCosa puoi fareNote
IstanzeCrea, ridimensiona, ricostruisci, snapshot, ripristina, distruggiIl ridimensionamento in aumento è live, quello in diminuzione richiede un riavvio
ImmaginiElenca il catalogo dei sistemi operativi, registra un'ISO personalizzata tramite URLLe installazioni ISO personalizzate sono ancora manuali e ancora lente
ReteAggiungi IPv4, modifica il reverse DNS, richiedi un IPv6 /48Delegata, mai in proxy
FiltraggioLeggi gli eventi di attacco, invia regole layer-7 su DDoS ProIl filtraggio di base non ha nulla da configurare
FatturazioneLeggi il saldo, elenca le fatture, apri una fattura di ricaricaNessun campo per carta, perché non ci sono carte
EventiInterroga il registro eventi o registra un webhookFirmato con un segreto per account

Tutto è JSON su HTTPS, e ogni oggetto che il pannello può mostrarti è un oggetto che l'API può restituire. Non esiste un livello di funzionalità riservato all'interfaccia web, ed è una promessa che ci costa qualcosa: il pannello ora consuma gli stessi endpoint pubblici che usi tu, quindi un'API rotta è un pannello rotto e lo scopriamo subito.

Autenticazione

I token vengono creati nel pannello, con ambito limitato e mostrati esattamente una volta. Nessuna autenticazione con password, nessun cookie di sessione, nessun redirect a un provider di identità a cui dovremmo poi affidarci per qualcosa che abbiamo faticosamente evitato di raccogliere.

Un token ha un ambito di lettura, scrittura o fatturazione, una restrizione facoltativa a un singolo sito, una restrizione facoltativa a una lista di istanze e una scadenza che imposti tu. Sessanta giorni è il predefinito. I token possono essere revocati singolarmente e la revoca è effettiva perifericamente entro due secondi, il che conta più di quanto sembri quando un server di build viene ricostruito da qualcuno che non sapeva cosa ci fosse sopra.

Poiché un account qui è un indirizzo email e un hash della password, non esiste un oggetto cliente da recuperare. L'API non ha un campo nome, né un campo indirizzo, né un campo azienda né un campo fiscale, esattamente per lo stesso motivo per cui il modulo di registrazione non li ha.

Limiti di velocità, idempotenza, errori

Seicento letture al minuto e sessanta scritture, conteggiate per token piuttosto che per account, così uno script rumoroso non può affamare il resto della tua automazione. I limiti vengono restituiti negli header di ogni risposta, incluse quelle riuscite.

Ogni scrittura accetta una chiave di idempotenza. Riprova una creazione con la stessa chiave e ottieni l'istanza originale invece di una seconda fatturata insieme. Questa è l'unica funzionalità per cui i beta tester ci hanno ringraziato di più, il che dice qualcosa su come il resto del settore gestisce un timeout durante il provisioning.

Gli errori sono un codice macchina documentato, una frase leggibile da un umano e un identificatore di richiesta. Incolla l'identificatore in un ticket e il supporto può vedere la stessa richiesta che hai visto tu, senza chiederti di riprodurla.

Cosa deliberatamente non fa

  • Niente valuta fiat, mai. Gli endpoint di fatturazione leggono il tuo saldo e aprono una fattura di ricarica. Il regolamento resta con OxaPay e la chain che hai scelto, esattamente come descritto in la pagina dei pagamenti.
  • Niente sotto-account o ruoli. Richiesto costantemente. Non costruito, perché l'implementazione ovvia implica tenere una struttura di chi-lavora-per-chi, e preferiamo pubblicare token con ambito limitato che scadono e lasciare a te il tuo organigramma.
  • Niente autoscaling. Le istanze sono core dedicati su silicio reale, non un pool che possiamo evocare dal nulla. Puoi creare e distruggere secondo il tuo programma; non fingeremo che ci sia un'astrazione elastica sotto.
  • Niente matrice SDK. Un client di riferimento e semplice HTTP come contratto. Sei binding di linguaggio mantenuti a metà invecchierebbero peggio della documentazione.

Cosa vorremmo venisse trovato rotto

La beta ha trovato nove bug degni di una correzione, di cui tre erano nostri in modo interessante e sei erano bugie nella documentazione. Se trovi un decimo, l'abuso di un limite di velocità è consentito e previsto durante i test, e il supporto preferirebbe l'identificatore di richiesta a uno screenshot.

Il riferimento è in la documentazione. Il changelog per la revisione 5.4 elenca i sette endpoint che hanno cambiato forma tra febbraio e aprile, e quelli sono le uniche modifiche sostanziali che ci saranno nella versione uno.

Pronto quando lo sei

Scegli una città. Scegli una dimensione. Paga in criptovaluta.

Nessun modulo su chi sei, nessuna attesa per l'approvazione di una persona, nessuna chiamata per verificare nulla. La fattura viene saldata e le credenziali arrivano nella tua casella di posta.