VPS.org API

وثائق واجهة برمجة تطبيقات REST

واجهة برمجة تطبيقات اللقطات

قم بإدارة لقطات الخادم لاستعادة سريعة إلى نقطة زمنية محددة. تلتقط اللقطات الحالة الكاملة لخادمك.

نقاط النهاية 4 endpoints
المسار الأساسي /api/v1/snapshots
يحصل /api/v1/snapshots/

عرض جميع اللقطات

استرجع قائمة بجميع اللقطات عبر خوادمك.

معلمات الاستعلام

المعلمة يكتب مطلوب وصف
server_id integer لا تصفية اللقطات حسب معرّف الخادم

مثال على الطلب

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 غير مصرح به - رمز مصادقة غير صالح أو مفقود
بريد /api/v1/snapshots/

إنشاء لقطة

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

معلمات نص الطلب

المعلمة يكتب مطلوب وصف
server_id integer نعم معرّف الخادم المراد أخذ لقطة منه
name string نعم اسم اللقطة (أبجدي رقمي، شرطات، شرطات سفلية)
description string لا وصف اختياري للقطة

مثال على الطلب

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
ملحوظة: 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.
بريد /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.

معلمات المسار

المعلمة يكتب مطلوب وصف
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}/

حذف اللقطة

حذف لقطة بشكل نهائي. لا يمكن التراجع عن هذا الإجراء.

معلمات المسار

المعلمة يكتب مطلوب وصف
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:

واجهة برمجة تطبيقات اللقطات

  • غاية: Quick point-in-time recovery
  • سرعة: Faster to create and restore (3-15 min)
  • حالة الاستخدام: Before risky operations (updates, config changes)
  • تخزين: Stored on same infrastructure
  • حد: 5 snapshots per server
  • الأفضل لـ: Short-term rollback capability

واجهة برمجة تطبيقات النسخ الاحتياطي

  • غاية: Long-term data protection
  • سرعة: Slower to create and restore (varies)
  • حالة الاستخدام: Regular automated data protection
  • تخزين: Separate backup storage
  • حد: 10 manual + automatic backups
  • الأفضل لـ: Disaster recovery and compliance

Best Practices