VPS.org API

REST API dokumentacija

API za snimke

Upravljajte snimcima servera za brzo vraćanje u prvobitno stanje u određenom trenutku. Snimci prikazuju kompletno stanje vašeg servera.

Krajnje tačke 4 endpoints
Osnovni put /api/v1/snapshots
DOBITI /api/v1/snapshots/

Prikaži sve snimke

Preuzmite listu svih snimaka na vašim serverima.

Parametri upita

Parametar Tip Obavezno Opis
server_id integer Ne, ne, ne. Filtriranje snimaka po ID-u servera

Primjer zahtjeva

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

Primjer odgovora

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

Kodovi statusa odgovora

200 Uspješno preuzeta lista snimaka
401 Neovlašteno - Nevažeći ili nedostajući token za autentifikaciju
POST /api/v1/snapshots/

Napravi snimak

Napravi snimku trenutnog stanja servera. Snimke su trenutne kopije cijelog servera.

Zahtjev za parametre tijela

Parametar Tip Obavezno Opis
server_id integer Da ID servera za snimanje
name string Da Naziv za snimak (alfanumerički, crtice, podvlake)
description string Ne, ne, ne. Opcionalni opis za snimak

Primjer zahtjeva

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

Primjer odgovora

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

Kodovi statusa odgovora

201 Kreiranje snimka uspješno je započeto
400 Bad Request - Invalid parameters or snapshot limit reached
401 Neovlašteno - Nevažeći ili nedostajući token za autentifikaciju
404 Not Found - Server does not exist
Napomena: 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.
POST /api/v1/snapshots/{snapshot_id}/restore/

Vrati iz snimka

Obnovi server u stanje snimljeno u snimku. Ovo će prepisati sve trenutne podatke na serveru.

Parametri puta

Parametar Tip Obavezno Opis
snapshot_id integer Da Jedinstveni ID snimka

Primjer zahtjeva

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

Primjer odgovora

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

Kodovi statusa odgovora

200 Vraćanje je uspješno pokrenuto
400 Bad Request - Server is not in a valid state for restoration
401 Neovlašteno - Nevažeći ili nedostajući token za autentifikaciju
404 Nije pronađeno - Snimak ne postoji
Upozorenje: 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.
IZBRIŠI /api/v1/snapshots/{snapshot_id}/

Izbriši snimak

Trajno izbrišite snimak. Ova radnja se ne može poništiti.

Parametri puta

Parametar Tip Obavezno Opis
snapshot_id integer Da Jedinstveni ID snimka

Primjer zahtjeva

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)

Kodovi statusa odgovora

204 Snimak uspješno izbrisan
401 Neovlašteno - Nevažeći ili nedostajući token za autentifikaciju
404 Nije pronađeno - Snimak ne postoji

Snapshots vs Backups

Razumijevanje kada koristiti snimke u odnosu na sigurnosne kopije:

API za snimke

  • Namjena: Quick point-in-time recovery
  • Brzina: Faster to create and restore (3-15 min)
  • Primjer upotrebe: Before risky operations (updates, config changes)
  • Skladištenje: Stored on same infrastructure
  • Ograničenje: 5 snapshots per server
  • Najbolje za: Short-term rollback capability

API za sigurnosne kopije

  • Namjena: Long-term data protection
  • Brzina: Slower to create and restore (varies)
  • Primjer upotrebe: Regular automated data protection
  • Skladištenje: Separate backup storage
  • Ograničenje: 10 manual + automatic backups
  • Najbolje za: Disaster recovery and compliance

Najbolje prakse