VPS.org API

Dokumentasi API REST

API Gambaran Ringkas

Urus snapshot pelayan untuk pemulihan pantas pada masa yang ditetapkan. Snapshot merakam keadaan lengkap pelayan anda.

Titik akhir 4 endpoints
Laluan Asas /api/v1/snapshots
DAPATKAN /api/v1/snapshots/

Senaraikan Semua Gambaran Ringkas

Dapatkan senarai semua snapshot merentasi pelayan anda.

Parameter Pertanyaan

Parameter Jenis Diperlukan Penerangan
server_id integer Tidak Tapis snapshot mengikut ID pelayan

Contoh Permintaan

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

Contoh Respons

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

Kod Status Respons

200 Berjaya mendapatkan senarai snapshot
401 Tidak Dibenarkan - Token pengesahan tidak sah atau tiada
POS /api/v1/snapshots/

Cipta Gambaran Keseluruhan

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

Minta Parameter Badan

Parameter Jenis Diperlukan Penerangan
server_id integer Ya ID pelayan untuk snapshot
name string Ya Nama untuk petikan (alfanumerik, tanda sempang, garis bawah)
description string Tidak Huraian pilihan untuk snapshot

Contoh Permintaan

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

Contoh Respons

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

Kod Status Respons

201 Penciptaan snapshot berjaya dimulakan
400 Bad Request - Invalid parameters or snapshot limit reached
401 Tidak Dibenarkan - Token pengesahan tidak sah atau tiada
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.
POS /api/v1/snapshots/{snapshot_id}/restore/

Pulihkan daripada Gambaran Ringkas

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

Parameter Laluan

Parameter Jenis Diperlukan Penerangan
snapshot_id integer Ya ID petikan unik

Contoh Permintaan

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

Contoh Respons

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

Kod Status Respons

200 Pemulihan dimulakan dengan jayanya
400 Bad Request - Server is not in a valid state for restoration
401 Tidak Dibenarkan - Token pengesahan tidak sah atau tiada
404 Tidak Dijumpai - Gambaran ringkas tidak wujud
Amaran: 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.
PADAM /api/v1/snapshots/{snapshot_id}/

Padam Gambaran Keseluruhan

Padamkan snapshot secara kekal. Tindakan ini tidak boleh dibuat asal.

Parameter Laluan

Parameter Jenis Diperlukan Penerangan
snapshot_id integer Ya ID petikan unik

Contoh Permintaan

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)

Kod Status Respons

204 Gambaran ringkas berjaya dipadamkan
401 Tidak Dibenarkan - Token pengesahan tidak sah atau tiada
404 Tidak Dijumpai - Gambaran ringkas tidak wujud

Snapshots vs Backups

Understanding when to use snapshots versus backups:

API Gambaran Ringkas

  • Tujuan: Quick point-in-time recovery
  • Kelajuan: Faster to create and restore (3-15 min)
  • Kes Penggunaan: Before risky operations (updates, config changes)
  • Penyimpanan: Stored on same infrastructure
  • Had: 5 snapshots per server
  • Terbaik Untuk: Short-term rollback capability

API Sandaran

  • Tujuan: Long-term data protection
  • Kelajuan: Slower to create and restore (varies)
  • Kes Penggunaan: Regular automated data protection
  • Penyimpanan: Separate backup storage
  • Had: 10 manual + automatic backups
  • Terbaik Untuk: Disaster recovery and compliance

Best Practices