L’API di lionbackup
Creare progetti, emettere e revocare token di backup, interrogare zone e organizzazioni: una REST API con JSON, specifica OpenAPI 3.1 aperta e provider Terraform. Applica gli stessi permessi del portale.
La prima chiamata in tre passi
Creare un service account e una chiave
Nel portale, alla voce Developer, create un service account e una chiave API associata. Il service account ha esattamente i permessi del vostro account utente; la chiave viene mostrata una sola volta.
Scambiare la chiave con un token di accesso
La chiave non è un bearer token. La scambiate con un token di accesso valido per 15 minuti:
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)
Inviare le richieste con il token
Tutti gli endpoint si trovano sotto
https://api.lionbackup.cloud/api/v1e richiedono il token nell’intestazioneAuthorization:API=https://api.lionbackup.cloud/api/v1 curl -s "$API/organizations" -H "Authorization: Bearer $ACCESS_TOKEN" # 200 {"organizations": [{ "id": "9b2e6c1a-…", "name": "Esempio S.r.l.", "status": "approved", "role": "owner" }]}
Esempio: creare un progetto ed emettere un token write
Un progetto richiede un nome e l’ID della sua zona di storage. Un token di backup appartiene a un solo progetto: con un token write il client esegue il backup, con un token read il ripristino.
# Scegliere la zona: utilizzabili solo le zone con status "active" ZONE_ID=$(curl -s "$API/zones" -H "Authorization: Bearer $ACCESS_TOKEN" \ | jq -r '.zones[] | select(.name == "de01-1") | .id') # Creare il progetto (ruolo owner o admin nell’organizzazione) 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, … }} # Emettere un token write per il 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" è il token di backup e compare solo in questa risposta {"token": {"id": "c4d1e8f2-…", "type": "write", "secret": "9f3e7b1c…"}}
Risposte e ID sono mostrati in forma abbreviata. Un progetto non viene eliminato ma chiuso con POST /projects/{projectId}/close: i token write vengono revocati subito, i token read restano validi per i ripristini durante il periodo di conservazione.
Tutti gli endpoint
Progetti
GET/organizations/{orgId}/projects
POST/organizations/{orgId}/projects
GET/projects/{projectId}
PATCH/projects/{projectId}
POST/projects/{projectId}/close
Elencare, creare, leggere, modificare nome, e-mail di allarme e riferimento di fatturazione, chiudere.
Token di backup
GET/projects/{projectId}/tokens
POST/projects/{projectId}/tokens
DELETE/projects/{projectId}/tokens/{tokenId}
Creare token read e write per Linux, Windows e macOS, elencarli (solo metadati) e revocarli.
Directory
GET/zones
GET/whoami
GET/organizations
GET/organizations/{orgId}
GET/openapi.yaml
Zone di storage con stato, il service account attivo, le vostre organizzazioni con il vostro ruolo e il metodo di pagamento, una singola organizzazione con il suo mandato di addebito diretto SEPA (IBAN mascherato) e la specifica della versione in esecuzione.
Buono a sapersi
Gli stessi permessi del portale
Un service account eredita i permessi del suo proprietario. Ciò che non potete vedere risponde con 404; un’azione non consentita dal vostro ruolo risponde con 403.
Il segreto compare una sola volta
Il segreto di un token di backup compare solo nella risposta alla sua creazione. La piattaforma ne conserva soltanto un hash.
Limite di richieste
60 richieste al minuto per service account e per indirizzo IP. Ogni risposta include le intestazioni X-RateLimit; oltre il limite l’API risponde con 429 e Retry-After.
Codici di errore stabili
Ogni errore è un oggetto JSON {"error":"<code>"}, ad esempio invalid_token, not_found o project_closed.
Chiudere invece di eliminare
La chiusura di un progetto revoca subito tutti i token write. I token read restano validi finché i backup sono nel periodo di conservazione, così potete ancora ripristinare.
Utenti e organizzazioni
Utenti, ruoli e organizzazioni si gestiscono nel portale. L’API copre progetti e token di backup; i backup veri e propri li esegue il client open source di lionbackup.
Specifica e Terraform
OpenAPI 3.1
La specifica completa come openapi.yaml, più un riferimento interattivo nella documentazione. L’API serve lo stesso file in /api/v1/openapi.yaml e descrive quindi sempre la versione in esecuzione.
Provider Terraform
Con il provider lionbackup gestite progetti e token di backup come infrastruttura come codice, per Terraform dalla 1.9 e per OpenTofu. Configurazione ed esempio nella documentazione.
Domande sull’API? Scriveteci tramite il modulo di contatto.