L lionbackup CLOUD
REGISTRARSE LOGIN
Disponible ahora

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

  1. 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.

  2. 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)
  3. Enviar las peticiones con el token

    Todos los endpoints están bajo https://api.lionbackup.cloud/api/v1 y esperan el token en la cabecera Authorization:

    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.