VPS.org API

REST API Documentation

API στιγμιότυπων

Διαχειριστείτε στιγμιότυπα διακομιστή για γρήγορη αποκατάσταση σε συγκεκριμένο χρονικό σημείο. Τα στιγμιότυπα καταγράφουν την πλήρη κατάσταση του διακομιστή σας.

Τελικά σημεία 4 endpoints
Βασική διαδρομή /api/v1/snapshots
ΠΑΙΡΝΩ /api/v1/snapshots/

Λίστα όλων των στιγμιότυπων

Ανακτήστε μια λίστα με όλα τα στιγμιότυπα σε όλους τους διακομιστές σας.

Παράμετροι ερωτήματος

Parameter Τύπος Υποχρεούμαι Description
server_id integer No Φιλτράρισμα στιγμιότυπων κατά ID διακομιστή

Παράδειγμα Αιτήματος

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

Παράδειγμα απάντησης

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

Κωδικοί κατάστασης απόκρισης

200 Η λίστα στιγμιότυπων ανακτήθηκε με επιτυχία
401 Μη εξουσιοδοτημένο - Μη έγκυρο ή λείπει το διακριτικό ελέγχου ταυτότητας
POST /api/v1/snapshots/

Δημιουργία στιγμιότυπου

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

Παράμετροι σώματος αιτήματος

Parameter Τύπος Υποχρεούμαι Description
server_id integer Ναί Αναγνωριστικό διακομιστή για λήψη στιγμιότυπου
name string Ναί Όνομα για το στιγμιότυπο (αλφαριθμητικό, παύλες, υπογράμμιση)
description string No Προαιρετική περιγραφή για το στιγμιότυπο

Παράδειγμα Αιτήματος

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

Παράδειγμα απάντησης

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

Κωδικοί κατάστασης απόκρισης

201 Η δημιουργία στιγμιότυπου ξεκίνησε με επιτυχία
400 Bad Request - Invalid parameters or snapshot limit reached
401 Μη εξουσιοδοτημένο - Μη έγκυρο ή λείπει το διακριτικό ελέγχου ταυτότητας
404 Not Found - Server does not exist
Note: 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/

Επαναφορά από στιγμιότυπο

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

Παράμετροι διαδρομής

Parameter Τύπος Υποχρεούμαι Description
snapshot_id integer Ναί Μοναδικό αναγνωριστικό στιγμιότυπου

Παράδειγμα Αιτήματος

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

Παράδειγμα απάντησης

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

Κωδικοί κατάστασης απόκρισης

200 Η επαναφορά ξεκίνησε με επιτυχία.
400 Bad Request - Server is not in a valid state for restoration
401 Μη εξουσιοδοτημένο - Μη έγκυρο ή λείπει το διακριτικό ελέγχου ταυτότητας
404 Δεν βρέθηκε - Το στιγμιότυπο δεν υπάρχει
Προειδοποίηση: 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.
ΔΙΑΓΡΑΦΩ /api/v1/snapshots/{snapshot_id}/

Διαγραφή στιγμιότυπου

Μόνιμη διαγραφή ενός στιγμιότυπου. Αυτή η ενέργεια δεν μπορεί να αναιρεθεί.

Παράμετροι διαδρομής

Parameter Τύπος Υποχρεούμαι Description
snapshot_id integer Ναί Μοναδικό αναγνωριστικό στιγμιότυπου

Παράδειγμα Αιτήματος

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)

Κωδικοί κατάστασης απόκρισης

204 Το στιγμιότυπο διαγράφηκε με επιτυχία.
401 Μη εξουσιοδοτημένο - Μη έγκυρο ή λείπει το διακριτικό ελέγχου ταυτότητας
404 Δεν βρέθηκε - Το στιγμιότυπο δεν υπάρχει

Snapshots vs Backups

Understanding when to use snapshots versus backups:

API στιγμιότυπων

  • Σκοπός: Quick point-in-time recovery
  • Ταχύτητα: Faster to create and restore (3-15 min)
  • Περίπτωση χρήσης: Before risky operations (updates, config changes)
  • Αποθήκευση: Stored on same infrastructure
  • Limit: 5 snapshots per server
  • Ιδανικό για: Short-term rollback capability

API αντιγράφων ασφαλείας

  • Σκοπός: Long-term data protection
  • Ταχύτητα: Slower to create and restore (varies)
  • Περίπτωση χρήσης: Regular automated data protection
  • Αποθήκευση: Separate backup storage
  • Limit: 10 manual + automatic backups
  • Ιδανικό για: Disaster recovery and compliance

Best Practices