VPS.org API

REST API Dokumentaro

API por Momentfotoj

Administru servilajn momentfotojn por rapida restarigo je ĝusta momento. Momentfotoj kaptas la kompletan staton de via servilo.

Finpunktoj 4 endpoints
Baza Pado /api/v1/snapshots
AKIRU /api/v1/snapshots/

Listigi Ĉiujn Momentfotojn

Akiri liston de ĉiuj momentfotoj tra viaj serviloj.

Demandparametroj

Parametro Tipo Bezonata Priskribo
server_id integer Ne Filtri momentfotojn laŭ servila ID

Ekzempla Peto

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);

Ekzempla Respondo

{
  "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"
    }
  ]
}

Respondaj Statusaj Kodoj

200 Sukcese prenita listo de momentfotoj
401 Neaŭtorizita - Malvalida aŭ mankanta aŭtentiga ĵetono
POŜTO /api/v1/snapshots/

Krei Momentfoton

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

Parametroj de la petokorpo

Parametro Tipo Bezonata Priskribo
server_id integer Jes ID de la servilo por fari momentfoton
name string Jes Nomo por la momentbildo (alfabetaj literoj, streketoj, substrekoj)
description string Ne Laŭvola priskribo por la momentfoto

Ekzempla Peto

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);

Ekzempla Respondo

{
  "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."
}

Respondaj Statusaj Kodoj

201 Kreado de momentfoto sukcese komencita
400 Bad Request - Invalid parameters or snapshot limit reached
401 Neaŭtorizita - Malvalida aŭ mankanta aŭtentiga ĵetono
404 Not Found - Server does not exist
Noto: 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.
POŜTO /api/v1/snapshots/{snapshot_id}/restore/

Restaŭri el Momentfoto

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

Padaj Parametroj

Parametro Tipo Bezonata Priskribo
snapshot_id integer Jes Unika momentfoto-identigilo

Ekzempla Peto

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);

Ekzempla Respondo

{
  "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"
  }
}

Respondaj Statusaj Kodoj

200 Restaŭrado sukcese komencita
400 Bad Request - Server is not in a valid state for restoration
401 Neaŭtorizita - Malvalida aŭ mankanta aŭtentiga ĵetono
404 Ne trovita - Momentfoto ne ekzistas
Averto: 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.
FORIGI /api/v1/snapshots/{snapshot_id}/

Forigi Momenteton

Forigi momentfoton por ĉiam. Ĉi tiu ago ne povas esti malfarita.

Padaj Parametroj

Parametro Tipo Bezonata Priskribo
snapshot_id integer Jes Unika momentfoto-identigilo

Ekzempla Peto

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)

Respondaj Statusaj Kodoj

204 Momentfoto sukcese forigita
401 Neaŭtorizita - Malvalida aŭ mankanta aŭtentiga ĵetono
404 Ne trovita - Momentfoto ne ekzistas

Snapshots vs Backups

Understanding when to use snapshots versus backups:

API por Momentfotoj

  • Celo: Quick point-in-time recovery
  • Rapido: Faster to create and restore (3-15 min)
  • Uzkazo: Before risky operations (updates, config changes)
  • Stokado: Stored on same infrastructure
  • Limo: 5 snapshots per server
  • Plej bona por: Short-term rollback capability

API por sekurkopioj

  • Celo: Long-term data protection
  • Rapido: Slower to create and restore (varies)
  • Uzkazo: Regular automated data protection
  • Stokado: Separate backup storage
  • Limo: 10 manual + automatic backups
  • Plej bona por: Disaster recovery and compliance

Best Practices