Mantenido desde octubre de 2019

La API pública y por qué tardó siete años

La revisión 5.4 de la plataforma incluyó una API autenticada por token en junio. Esto es lo que hace, lo que deliberadamente se niega a hacer y por qué esperamos tanto.

La API salió de la versión beta el dos de julio. Se incluyó en la revisión 5.4 de la plataforma en junio, funcionó como beta por invitación desde febrero con poco más de cuatrocientas cuentas, y no ha cambiado de forma desde abril. Versionada, documentada y cubierta por el mismo compromiso de disponibilidad que el panel.

Llamarla tarde sería generoso. La razón no es misteriosa: una interfaz sobre un sistema de aprovisionamiento que necesitaba tres minutos y medio para construir un servidor habría sido una interfaz para sondear un spinner. Primero reescribimos la cola, en 2025, y el orden fue deliberado, no suerte.

Qué hace

GrupoQué puedes hacerNotas
InstanciasCrear, redimensionar, reconstruir, instantánea, restaurar, destruirRedimensionar hacia arriba es en vivo, hacia abajo requiere un reinicio
ImágenesListar el catálogo de SO, registrar una ISO personalizada por URLLas instalaciones con ISO personalizada siguen siendo manuales y lentas
RedesAñadir IPv4, editar DNS inverso, solicitar un IPv6 /48Delegado, nunca proxy
FiltradoLeer eventos de ataque, enviar reglas de capa 7 en DDoS ProEl filtrado base no tiene nada que configurar
FacturaciónLeer saldo, listar facturas, abrir una factura de recargaSin campos de tarjeta, porque no hay tarjetas
EventosConsultar el registro de eventos o registrar un webhookFirmado con un secreto por cuenta

Todo es JSON sobre HTTPS, y todo objeto que el panel puede mostrarte es un objeto que la API puede devolver. No hay ninguna capa de funcionalidad reservada para la interfaz web, lo cual nos cuesta algo: el panel ahora consume los mismos endpoints públicos que tú, así que una API rota es un panel roto y nos enteramos de inmediato.

Autenticación

Los tokens se crean en el panel, con ámbito, y se muestran exactamente una vez. Sin autenticación por contraseña, sin cookies de sesión, sin redirección a un proveedor de identidad en el que tendríamos que confiar con algo que hemos ido a considerable esfuerzo por no recopilar.

Un token lleva un ámbito de lectura, escritura o facturación, una restricción opcional a un solo sitio, una restricción opcional a una lista de instancias, y una caducidad que tú estableces. Sesenta días es el valor por defecto. Los tokens pueden revocarse individualmente y la revocación es efectiva en el borde en menos de dos segundos, lo cual importa más de lo que parece cuando un servidor de compilación es reconstruido por alguien que no sabía lo que había en él.

Debido a que una cuenta aquí es una dirección de correo electrónico y un hash de contraseña, no hay objeto de cliente que obtener. La API no tiene campo de nombre, ni de dirección, ni de empresa, ni fiscal, por exactamente la misma razón que el formulario de registro no los tiene.

Límites de tasa, idempotencia, errores

Seiscientas lecturas por minuto y sesenta escrituras, contadas por token en lugar de por cuenta, así que un script ruidoso no puede dejar sin recursos al resto de tu automatización. Los límites se devuelven en cabeceras en cada respuesta, incluidas las exitosas.

Cada escritura acepta una clave de idempotencia. Reintenta una creación con la misma clave y obtienes la instancia original en lugar de una segunda facturada junto a ella. Esta es la característica que los evaluadores beta más agradecieron, lo cual dice algo sobre cómo el resto de la industria maneja un tiempo de espera durante el aprovisionamiento.

Los errores son un código de máquina documentado, una frase que un humano puede leer, y un identificador de solicitud. Pega el identificador en un ticket y el soporte puede ver la misma solicitud que viste, sin pedirte que la reproduzcas.

Lo que deliberadamente no hace

  • Sin dinero fiduciario, nunca. Los endpoints de facturación leen tu saldo y abren una factura de recarga. La liquidación permanece con OxaPay y la cadena que elegiste, exactamente como se describe en la página de pagos.
  • Sin subcuentas ni roles. Solicitado constantemente. No construido, porque la implementación obvia significa mantener una estructura de quién-trabaja-para-quién, y preferimos enviar tokens con ámbito que caducan y dejar que mantengas tu organigrama para ti.
  • Sin autoescalado. Las instancias son núcleos dedicados en silicio real, no un grupo que podamos conjurar. Puedes crear y destruir según tu propio horario; no vamos a fingir que hay una abstracción elástica debajo.
  • Sin matriz de SDK. Un cliente de referencia, y HTTP puro como contrato. Seis enlaces de lenguaje a medio mantener envejecerían peor que la documentación.

Lo que nos gustaría que rompieras

La beta encontró nueve errores que valía la pena arreglar, tres de los cuales fueron nuestros de manera interesante y seis fueron mentiras de la documentación. Si encuentras un décimo, el abuso de un límite de tasa está bien y se espera durante las pruebas, y el soporte preferiría tener el identificador de solicitud antes que una captura de pantalla.

La referencia está en la documentación. El changelog de la revisión 5.4 lista los siete endpoints que cambiaron de forma entre febrero y abril, y esos son los únicos cambios importantes que habrá dentro de la versión uno.

Listo cuando tú lo estés

Elige una ciudad. Elige un tamaño. Paga con monedas.

Sin fórmulas sobre quién eres, sin esperar a que un humano te apruebe, sin llamada telefónica para verificar nada. La factura se liquida y las credenciales llegan a tu bandeja de entrada.