VPS.org API

Documentazione API REST

API degli snapshot

Gestisci gli snapshot del server per un rapido ripristino in un determinato momento. Gli snapshot catturano lo stato completo del tuo server.

Punti finali 4 endpoints
Percorso di base /api/v1/snapshots
OTTENERE /api/v1/snapshots/

Elenca tutte le istantanee

Recupera un elenco di tutti gli snapshot sui tuoi server.

Parametri di query

Parametro Tipo Necessario Descrizione
server_id integer NO Filtra gli snapshot in base all'ID del server

Richiesta di esempio

cURL
Python
JavaScript
curl -X GET "https://admin.vps.org/api/v1/snapshots/?server_id=12345" \
  -H "Authorization: Bearer YOUR_API_TOKEN" \
  -H "Content-Type: application/json"
import requests

url = "https://admin.vps.org/api/v1/snapshots/"
headers = {
    "Authorization": "Bearer YOUR_API_TOKEN",
    "Content-Type": "application/json"
}
params = {"server_id": 12345}

response = requests.get(url, headers=headers, params=params)
print(response.json())
const response = await fetch('https://admin.vps.org/api/v1/snapshots/?server_id=12345', {
  method: 'GET',
  headers: {
    'Authorization': 'Bearer YOUR_API_TOKEN',
    'Content-Type': 'application/json'
  }
});

const snapshots = await response.json();
console.log(snapshots);

Esempio di risposta

{
  "count": 2,
  "results": [
    {
      "id": 801,
      "server": {
        "id": 12345,
        "name": "web-server-01"
      },
      "name": "pre-migration-snapshot",
      "status": "completed",
      "size_mb": 5120,
      "created_at": "2025-01-15T18:30:00Z",
      "description": "Before major migration"
    },
    {
      "id": 798,
      "server": {
        "id": 12345,
        "name": "web-server-01"
      },
      "name": "weekly-snapshot-2025-01-08",
      "status": "completed",
      "size_mb": 4856,
      "created_at": "2025-01-08T12:00:00Z",
      "description": "Weekly snapshot"
    }
  ]
}

Codici di stato della risposta

200 Elenco snapshot recuperato correttamente
401 Non autorizzato - Token di autenticazione non valido o mancante
INVIARE /api/v1/snapshots/

Crea istantanea

Create a snapshot of a server's current state. Snapshots are point-in-time copies of the entire server.

Parametri del corpo della richiesta

Parametro Tipo Necessario Descrizione
server_id integer ID del server da cui effettuare lo snapshot
name string Nome per lo snapshot (alfanumerico, trattini, caratteri di sottolineatura)
description string NO Descrizione facoltativa per l'istantanea

Richiesta di esempio

cURL
Python
JavaScript
curl -X POST "https://admin.vps.org/api/v1/snapshots/" \
  -H "Authorization: Bearer YOUR_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "server_id": 12345,
    "name": "before-update-snapshot",
    "description": "Snapshot before system update"
  }'
import requests

url = "https://admin.vps.org/api/v1/snapshots/"
headers = {
    "Authorization": "Bearer YOUR_API_TOKEN",
    "Content-Type": "application/json"
}
data = {
    "server_id": 12345,
    "name": "before-update-snapshot",
    "description": "Snapshot before system update"
}

response = requests.post(url, headers=headers, json=data)
print(response.json())
const response = await fetch('https://admin.vps.org/api/v1/snapshots/', {
  method: 'POST',
  headers: {
    'Authorization': 'Bearer YOUR_API_TOKEN',
    'Content-Type': 'application/json'
  },
  body: JSON.stringify({
    server_id: 12345,
    name: 'before-update-snapshot',
    description: 'Snapshot before system update'
  })
});

const snapshot = await response.json();
console.log(snapshot);

Esempio di risposta

{
  "id": 802,
  "server": {
    "id": 12345,
    "name": "web-server-01"
  },
  "name": "before-update-snapshot",
  "status": "in_progress",
  "size_mb": null,
  "created_at": "2025-01-16T16:15:00Z",
  "description": "Snapshot before system update",
  "message": "Snapshot is being created. This may take 3-10 minutes depending on server size."
}

Codici di stato della risposta

201 Creazione dello snapshot avviata con successo
400 Bad Request - Invalid parameters or snapshot limit reached
401 Non autorizzato - Token di autenticazione non valido o mancante
404 Not Found - Server does not exist
Nota: You can have a maximum of 5 snapshots per server. Creating a snapshot while the server is running may result in filesystem inconsistencies. For best results, stop the server before creating a snapshot.
INVIARE /api/v1/snapshots/{snapshot_id}/restore/

Ripristina da snapshot

Restore a server to the state captured in a snapshot. This will overwrite all current data on the server.

Parametri del percorso

Parametro Tipo Necessario Descrizione
snapshot_id integer ID snapshot univoco

Richiesta di esempio

cURL
Python
JavaScript
curl -X POST "https://admin.vps.org/api/v1/snapshots/801/restore/" \
  -H "Authorization: Bearer YOUR_API_TOKEN" \
  -H "Content-Type: application/json"
import requests

snapshot_id = 801
url = f"https://admin.vps.org/api/v1/snapshots/{snapshot_id}/restore/"
headers = {
    "Authorization": "Bearer YOUR_API_TOKEN",
    "Content-Type": "application/json"
}

response = requests.post(url, headers=headers)
print(response.json())
const snapshotId = 801;
const response = await fetch(`https://admin.vps.org/api/v1/snapshots/${snapshotId}/restore/`, {
  method: 'POST',
  headers: {
    'Authorization': 'Bearer YOUR_API_TOKEN',
    'Content-Type': 'application/json'
  }
});

const result = await response.json();
console.log(result);

Esempio di risposta

{
  "status": "success",
  "message": "Server is being restored from snapshot. This may take 5-15 minutes.",
  "snapshot": {
    "id": 801,
    "name": "pre-migration-snapshot",
    "created_at": "2025-01-15T18:30:00Z"
  },
  "server": {
    "id": 12345,
    "name": "web-server-01",
    "status": "restoring"
  }
}

Codici di stato della risposta

200 Ripristino avviato con successo
400 Bad Request - Server is not in a valid state for restoration
401 Non autorizzato - Token di autenticazione non valido o mancante
404 Non trovato - Lo snapshot non esiste
Avvertimento: Restoring from a snapshot will overwrite all current data on the server. This action cannot be undone. The server will be automatically stopped before restoration begins.
ELIMINARE /api/v1/snapshots/{snapshot_id}/

Elimina istantanea

Elimina definitivamente uno snapshot. Questa azione non può essere annullata.

Parametri del percorso

Parametro Tipo Necessario Descrizione
snapshot_id integer ID snapshot univoco

Richiesta di esempio

cURL
Python
curl -X DELETE "https://admin.vps.org/api/v1/snapshots/801/" \
  -H "Authorization: Bearer YOUR_API_TOKEN" \
  -H "Content-Type: application/json"
import requests

snapshot_id = 801
url = f"https://admin.vps.org/api/v1/snapshots/{snapshot_id}/"
headers = {
    "Authorization": "Bearer YOUR_API_TOKEN",
    "Content-Type": "application/json"
}

response = requests.delete(url, headers=headers)
print(response.status_code)

Codici di stato della risposta

204 Snapshot eliminato correttamente
401 Non autorizzato - Token di autenticazione non valido o mancante
404 Non trovato - Lo snapshot non esiste

Snapshots vs Backups

Understanding when to use snapshots versus backups:

API degli snapshot

  • Scopo: Quick point-in-time recovery
  • Velocità: Faster to create and restore (3-15 min)
  • Caso d'uso: Before risky operations (updates, config changes)
  • Magazzinaggio: Stored on same infrastructure
  • Limite: 5 snapshots per server
  • Ideale per: Short-term rollback capability

API di backup

  • Scopo: Long-term data protection
  • Velocità: Slower to create and restore (varies)
  • Caso d'uso: Regular automated data protection
  • Magazzinaggio: Separate backup storage
  • Limite: 10 manual + automatic backups
  • Ideale per: Disaster recovery and compliance

Best Practices