L lionbackup CLOUD
S'INSCRIRE LOGIN
Disponible dès maintenant

L’API lionbackup

Créer des projets, émettre et révoquer des jetons de sauvegarde, interroger zones et organisations : une API REST en JSON, avec spécification OpenAPI 3.1 ouverte et provider Terraform. Elle applique les mêmes droits que le portail.

Votre premier appel en trois étapes

  1. Créer un compte de service et une clé

    Dans le portail, sous Developer, vous créez un compte de service et une clé d’API associée. Le compte de service a exactement les droits de votre compte utilisateur ; la clé n’est affichée qu’une seule fois.

  2. Échanger la clé contre un jeton d’accès

    La clé n’est pas un bearer token. Vous l’échangez contre un jeton d’accès valable 15 minutes :

    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. Envoyer les requêtes avec le jeton

    Tous les endpoints se trouvent sous https://api.lionbackup.cloud/api/v1 et attendent le jeton dans l’en-tête Authorization :

    API=https://api.lionbackup.cloud/api/v1
    
    curl -s "$API/organizations" -H "Authorization: Bearer $ACCESS_TOKEN"
    
    # 200
    {"organizations": [{
      "id": "9b2e6c1a-…", "name": "Exemple SARL",
      "status": "approved", "role": "owner"
    }]}

Exemple : créer un projet et émettre un jeton write

Un projet a besoin d’un nom et de l’identifiant de sa zone de stockage. Un jeton de sauvegarde appartient à un seul projet : avec un jeton write, le client sauvegarde ; avec un jeton read, il restaure.

# Choisir la zone : seules les zones avec status "active" sont utilisables
ZONE_ID=$(curl -s "$API/zones" -H "Authorization: Bearer $ACCESS_TOKEN" \
  | jq -r '.zones[] | select(.name == "de01-1") | .id')

# Créer le projet (rôle owner ou admin dans l’organisation)
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, …
}}

# Émettre un jeton write pour le client
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" est le jeton de sauvegarde et n’apparaît que dans cette réponse
{"token": {"id": "c4d1e8f2-…", "type": "write", "secret": "9f3e7b1c…"}}

Les réponses et les identifiants sont abrégés. Un projet n’est pas supprimé mais fermé avec POST /projects/{projectId}/close : les jetons write sont révoqués immédiatement, les jetons read restent valables pour les restaurations pendant la durée de rétention.

Tous les endpoints

Projets

GET/organizations/{orgId}/projects POST/organizations/{orgId}/projects GET/projects/{projectId} PATCH/projects/{projectId} POST/projects/{projectId}/close

Lister, créer, lire, modifier le nom, l’e-mail d’alerte et la référence de facturation, fermer.

Jetons de sauvegarde

GET/projects/{projectId}/tokens POST/projects/{projectId}/tokens DELETE/projects/{projectId}/tokens/{tokenId}

Créer des jetons read et write pour Linux, Windows et macOS, les lister (métadonnées uniquement) et les révoquer.

Annuaire

GET/zones GET/whoami GET/organizations GET/organizations/{orgId} GET/openapi.yaml

Zones de stockage avec leur état, le compte de service actif, vos organisations avec votre rôle et leur mode de paiement, une organisation précise avec son mandat de prélèvement SEPA (IBAN masqué) et la spécification de la version en cours d’exécution.

Bon à savoir

Les mêmes droits que le portail

Un compte de service hérite des droits de son propriétaire. Ce que vous ne pouvez pas voir répond 404 ; une action que votre rôle n’autorise pas répond 403.

Le secret n’apparaît qu’une fois

Le secret d’un jeton de sauvegarde n’apparaît que dans la réponse à sa création. La plateforme n’en conserve qu’un hachage.

Limitation de débit

60 requêtes par minute par compte de service et par adresse IP. Chaque réponse porte des en-têtes X-RateLimit ; au-delà de la limite, l’API répond 429 avec Retry-After.

Codes d’erreur stables

Chaque erreur est un objet JSON {"error":"<code>"}, par exemple invalid_token, not_found ou project_closed.

Fermer plutôt que supprimer

La fermeture d’un projet révoque immédiatement tous les jetons write. Les jetons read restent valables tant que des sauvegardes sont dans leur durée de rétention, pour que vous puissiez encore restaurer.

Utilisateurs et organisations

Les utilisateurs, rôles et organisations se gèrent dans le portail. L’API couvre les projets et les jetons de sauvegarde ; les sauvegardes elles-mêmes sont réalisées par le client open source lionbackup.

Spécification et Terraform

OpenAPI 3.1

La spécification complète au format openapi.yaml, ainsi qu’une référence interactive dans la documentation. L’API sert le même fichier sous /api/v1/openapi.yaml et décrit donc toujours la version en cours d’exécution.

Provider Terraform

Avec le provider lionbackup, vous gérez projets et jetons de sauvegarde en infrastructure as code, pour Terraform à partir de la 1.9 et pour OpenTofu. Installation et exemple dans la documentation.

Des questions sur l’API ? Écrivez-nous via le formulaire de contact.