VPS.org API

REST API dokumentacija

Momentinių kopijų API

Tvarkykite serverio momentines kopijas, kad galėtumėte greitai atkurti duomenis tam tikru momentu. Momentinės kopijos užfiksuoja visą jūsų serverio būseną.

Galutiniai taškai 4 endpoints
Bazinis kelias /api/v1/snapshots
GAUTI /api/v1/snapshots/

Išvardinti visas momentines nuotraukas

Gaukite visų jūsų serverių momentinių kopijų sąrašą.

Užklausos parametrai

Parametras Tipas Privaloma Aprašymas
server_id integer Ne Filtruoti momentines kopijas pagal serverio ID

Prašymo pavyzdys

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

Atsakymo pavyzdys

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

Atsakymo būsenos kodai

200 Sėkmingai gautas momentinių kopijų sąrašas
401 Neautorizuota – neteisingas arba trūksta autentifikavimo prieigos rakto
PAŠTAS /api/v1/snapshots/

Sukurti momentinę kopiją

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

Užklausos turinio parametrai

Parametras Tipas Privaloma Aprašymas
server_id integer Taip Serverio, kurio norite momentinę kopiją, ID
name string Taip Momentinės kopijos pavadinimas (raidinės ir skaitmeninės eilutės, brūkšneliai, pabraukimai)
description string Ne Pasirinktinai momentinės kopijos aprašymas

Prašymo pavyzdys

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

Atsakymo pavyzdys

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

Atsakymo būsenos kodai

201 Momentinės kopijos kūrimas sėkmingai pradėtas
400 Bad Request - Invalid parameters or snapshot limit reached
401 Neautorizuota – neteisingas arba trūksta autentifikavimo prieigos rakto
404 Not Found - Server does not exist
Pastaba: 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.
PAŠTAS /api/v1/snapshots/{snapshot_id}/restore/

Atkurti iš momentinės kopijos

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

Kelio parametrai

Parametras Tipas Privaloma Aprašymas
snapshot_id integer Taip Unikalus momentinės kopijos ID

Prašymo pavyzdys

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

Atsakymo pavyzdys

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

Atsakymo būsenos kodai

200 Atkūrimas sėkmingai pradėtas
400 Bad Request - Server is not in a valid state for restoration
401 Neautorizuota – neteisingas arba trūksta autentifikavimo prieigos rakto
404 Nerasta – momentinės kopijos nėra
Įspėjimas: 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.
IŠTRINTI /api/v1/snapshots/{snapshot_id}/

Ištrinti momentinę kopiją

Visam laikui ištrinti momentinę kopiją. Šio veiksmo negalima atšaukti.

Kelio parametrai

Parametras Tipas Privaloma Aprašymas
snapshot_id integer Taip Unikalus momentinės kopijos ID

Prašymo pavyzdys

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)

Atsakymo būsenos kodai

204 Momentinė nuotrauka sėkmingai ištrinta
401 Neautorizuota – neteisingas arba trūksta autentifikavimo prieigos rakto
404 Nerasta – momentinės kopijos nėra

Snapshots vs Backups

Understanding when to use snapshots versus backups:

Momentinių kopijų API

  • Paskirtis: Quick point-in-time recovery
  • Greitis: Faster to create and restore (3-15 min)
  • Naudojimo atvejis: Before risky operations (updates, config changes)
  • Sandėliavimas: Stored on same infrastructure
  • Riba: 5 snapshots per server
  • Geriausiai tinka: Short-term rollback capability

Atsarginių kopijų API

  • Paskirtis: Long-term data protection
  • Greitis: Slower to create and restore (varies)
  • Naudojimo atvejis: Regular automated data protection
  • Sandėliavimas: Separate backup storage
  • Riba: 10 manual + automatic backups
  • Geriausiai tinka: Disaster recovery and compliance

Best Practices