La API de lionbackup
Crear proyectos, emitir y revocar tokens de backup, consultar zonas y organizaciones: una REST API con JSON, especificación OpenAPI 3.1 abierta y proveedor de Terraform. Aplica los mismos permisos que el portal.
Su primera llamada en tres pasos
Crear una cuenta de servicio y una clave
En el portal, en Developer, cree una cuenta de servicio y una clave de API para ella. La cuenta de servicio tiene exactamente los permisos de su cuenta de usuario; la clave se muestra una sola vez.
Canjear la clave por un token de acceso
La clave no es un bearer token. La canjea por un token de acceso válido durante 15 minutos:
ACCESS_TOKEN=$(curl -s https://authentik.prod.lionbackup.cloud/application/o/token/ \ -d grant_type=client_credentials \ -d client_id=lionbackup-api \ -d client_secret="$LIONBACKUP_API_KEY" \ -d scope="profile lionbackup_api" | jq -r .access_token)
Enviar las peticiones con el token
Todos los endpoints están bajo
https://api.lionbackup.cloud/api/v1y esperan el token en la cabeceraAuthorization:API=https://api.lionbackup.cloud/api/v1 curl -s "$API/organizations" -H "Authorization: Bearer $ACCESS_TOKEN" # 200 {"organizations": [{ "id": "9b2e6c1a-…", "name": "Ejemplo S.L.", "status": "approved", "role": "owner" }]}
Ejemplo: crear un proyecto y emitir un token write
Un proyecto necesita un nombre y el ID de su zona de almacenamiento. Un token de backup pertenece a un único proyecto: con un token write el cliente hace la copia, con un token read la restaura.
# Elegir la zona: solo se pueden usar zonas con status "active" ZONE_ID=$(curl -s "$API/zones" -H "Authorization: Bearer $ACCESS_TOKEN" \ | jq -r '.zones[] | select(.name == "de01-1") | .id') # Crear el proyecto (rol owner o admin en la organización) curl -s -X POST "$API/organizations/$ORG_ID/projects" \ -H "Authorization: Bearer $ACCESS_TOKEN" \ -H "Content-Type: application/json" \ -d "{\"name\":\"web-servers\",\"availability_zone_id\":\"$ZONE_ID\"}" # 201 {"project": { "id": "ea1296ad-…", "name": "web-servers", "status": "active", "availability_zone_id": "b0000001-…", "alert_email": null, … }} # Emitir un token write para el cliente curl -s -X POST "$API/projects/$PROJECT_ID/tokens" \ -H "Authorization: Bearer $ACCESS_TOKEN" \ -H "Content-Type: application/json" \ -d '{"type":"write","operating_system":"Linux"}' # 201: "secret" es el token de backup y solo aparece en esta respuesta {"token": {"id": "c4d1e8f2-…", "type": "write", "secret": "9f3e7b1c…"}}
Las respuestas y los ID se muestran abreviados. Un proyecto no se elimina, sino que se cierra con POST /projects/{projectId}/close: los tokens write se revocan de inmediato y los tokens read siguen siendo válidos para restauraciones durante el periodo de retención.
Todos los endpoints
Proyectos
GET/organizations/{orgId}/projects
POST/organizations/{orgId}/projects
GET/projects/{projectId}
PATCH/projects/{projectId}
POST/projects/{projectId}/close
Listar, crear, leer, cambiar nombre, correo de alerta y referencia de facturación, cerrar.
Tokens de backup
GET/projects/{projectId}/tokens
POST/projects/{projectId}/tokens
DELETE/projects/{projectId}/tokens/{tokenId}
Crear tokens read y write para Linux, Windows y macOS, listarlos (solo metadatos) y revocarlos.
Directorio
GET/zones
GET/whoami
GET/organizations
GET/organizations/{orgId}
GET/openapi.yaml
Zonas de almacenamiento con su estado, la cuenta de servicio activa, sus organizaciones con su rol y su forma de pago, una organización concreta con su mandato de adeudo directo SEPA (IBAN enmascarado) y la especificación de la versión en ejecución.
Conviene saber
Los mismos permisos que el portal
Una cuenta de servicio hereda los permisos de su propietario. Lo que no puede ver responde con 404; una acción que su rol no permite responde con 403.
El secreto aparece una sola vez
El secreto de un token de backup solo aparece en la respuesta a su creación. La plataforma guarda únicamente un hash.
Límite de peticiones
60 peticiones por minuto por cuenta de servicio y por dirección IP. Cada respuesta incluye cabeceras X-RateLimit; por encima del límite la API responde con 429 y Retry-After.
Códigos de error estables
Cada error es un objeto JSON {"error":"<code>"}, por ejemplo invalid_token, not_found o project_closed.
Cerrar en lugar de eliminar
Cerrar un proyecto revoca de inmediato todos los tokens write. Los tokens read siguen siendo válidos mientras haya copias dentro del periodo de retención, para que pueda seguir restaurando.
Usuarios y organizaciones
Los usuarios, roles y organizaciones se gestionan en el portal. La API cubre proyectos y tokens de backup; las copias en sí las realiza el cliente de código abierto de lionbackup.
Especificación y Terraform
OpenAPI 3.1
La especificación completa como openapi.yaml, además de una referencia interactiva en la documentación. La API sirve el mismo archivo en /api/v1/openapi.yaml, por lo que siempre describe la versión en ejecución.
Proveedor de Terraform
Con el proveedor lionbackup gestiona proyectos y tokens de backup como infraestructura como código, para Terraform a partir de la 1.9 y para OpenTofu. Configuración y ejemplo en la documentación.
¿Preguntas sobre la API? Escríbanos a través del formulario de contacto.