Versionado semántico. Los cambios incompatibles (campos renombrados, endpoints eliminados, esquema de autenticación modificado) solo se publican en una nueva versión mayor bajo un nuevo prefijo de URL /v2/. Dentro de /v1/ solo se producen cambios aditivos (nuevos campos opcionales, nuevos endpoints).
v1.1.0 (2026-09-23)
- POST /v1/orders: config_options solo acepta opciones y valores visibles en la tienda, y cantidades dentro de sus límites. Las opciones visibles que omita reciben el primer valor de la lista, exactamente como en la tienda. GET /v1/products/{id} solo lista opciones que se pueden pedir y devuelve quantity.min y quantity.max.
- Nuevo estado de pedido awaiting_setup con el campo awaiting_setup para productos que el equipo de KernelHost configura manualmente. Los servicios aprovisionados automáticamente se aprovisionan exactamente una vez.
- El cuerpo de las solicitudes está limitado a 64 KB (HTTP 413). Se aplica un límite por cuenta de 120 solicitudes por minuto entre todas las claves, y una cuenta puede tener hasta 20 claves activas. Un fallo de autenticación ya no bloquea ninguna clave y el Idempotency-Key queda vinculado al método y a la ruta.
- Las peticiones con más de un parámetro en la query string (por ejemplo GET /v1/services?limit=10&offset=0) se rechazaban con HTTP 401. Ahora la firma cubre la query string exactamente como está documentado.
v1.0.0 (2026-05-14)
- Versión inicial. Los 15 endpoints, autenticación HMAC, almacenamiento de secretos AES-GCM, límites de tasa, idempotencia, registro de auditoría.
- GET
/v1/me,/v1/products,/v1/products/{id} - POST
/v1/orders, GET/v1/orders/{id} - GET
/v1/services,/v1/services/{id},/v1/services/{id}/credentials - POST
/v1/services/{id}/actions - GET
/v1/billing/balance,/v1/billing/invoices,/v1/billing/invoices/{id}/pdf - GET/PUT
/v1/webhooks - HMAC-SHA256 signing, AES-256-GCM secret storage, replay protection, idempotency.

