VPS.org API

وثائق REST API

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

إنشاء، تفتيش، الطاقة، إعادة الحجم، وحذف خادم VPS الخاص بك. الخوادم يتم تحديدها من خلال uuid.

نقاط النهاية 15
المسار الأساسي /api/v1/servers
يحصل /api/v1/servers/

عرض جميع الخوادم

يعيد الخوادم في حسابك، أحدث أولاً، 25 في كل صفحة. الخوادم التي يتم حذفها غير مدرجة.

الإذن المطلوب: servers:list

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

البارامترات يكتب مطلوب وصف المشروع
page integer لا رقم الصفحة، بدءا من ١
page_size integer لا النتائج في الصفحة (25 تلقائيا، 100 كحد أقصى)

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

cURL
Python
JavaScript
PHP
curl -X GET "https://admin.vps.org/api/v1/servers/" \
  -H "Authorization: Bearer YOUR_API_TOKEN"
import requests

url = "https://admin.vps.org/api/v1/servers/"
headers = {"Authorization": "Bearer YOUR_API_TOKEN"}

response = requests.get(url, headers=headers)
for server in response.json()["results"]:
    print(server["uuid"], server["hostname"], server["status"])
const response = await fetch('https://admin.vps.org/api/v1/servers/', {
  headers: { 'Authorization': 'Bearer YOUR_API_TOKEN' }
});

const data = await response.json();
console.log(data.results);
$ch = curl_init('https://admin.vps.org/api/v1/servers/');
curl_setopt($ch, CURLOPT_HTTPHEADER, ['Authorization: Bearer YOUR_API_TOKEN']);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

$data = json_decode(curl_exec($ch), true);
curl_close($ch);

foreach ($data['results'] as $server) {
    echo $server['hostname'] . ' ' . $server['status'] . "\n";
}

مثال على الاستجابة

{
  "count": 2,
  "next": null,
  "previous": null,
  "results": [
    {
      "uuid": "8c4f2a1e-5b3d-4e6f-9a7b-1c2d3e4f5a6b",
      "hostname": "web-01",
      "status": "on",
      "error_description": null,
      "location_name": "New Jersey",
      "plan_name": "1 vCPU / 2 GB RAM / 10 GB",
      "os_name": "Ubuntu",
      "ipv4_addresses": ["203.0.113.10"],
      "ipv6_addresses": ["2001:db8:2:dd::f9:6b"],
      "created_at": "2026-07-30T03:54:14.914364Z",
      "deployed": true
    },
    {
      "uuid": "2d7e9b40-6c1a-4f3e-8b5d-9a0c1e2f3b4d",
      "hostname": "db-01",
      "status": "queue",
      "error_description": null,
      "location_name": "New Jersey",
      "os_name": "Debian",
      "ipv4_addresses": [],
      "ipv6_addresses": [],
      "created_at": "2026-09-14T19:33:49.426508Z",
      "deployed": false
    }
  ]
}

حقول الاستجابة

الميدان يكتب وصف المشروع
uuid string هوية الخادم المستخدمة في كل نقطة طرفية أخرى من نقاط الخادم
hostname string اسم المضيف الذي اخترته عند إنشاء الخادم
status string الحالة الراهنة. انظر قيم حالة الخادم أدناه.
error_description string | null تفاصيل آخر فشل عندما تكون الحالة خطأ، وإلا فهي صفرية
location_name string اسم الموقع الذي يعمل فيه الخادم
os_name string اسم نظام التشغيل، بدون النسخة
plan_name string ملخص مقروء للخطة، مثال: 1 vCPU / 2 GB RAM / 10 GB
ipv4_addresses array عناوين IPv4 كسلسلة. فارغة حتى نشر الخادم، وفي الخطط بدون IPv4.
ipv6_addresses array عناوين IPv6 كسلسلة. فارغة حتى يتم نشر الخادم.
created_at datetime وقت الإنشاء (ISO 8601، UTC)
deployed boolean صحيح بعد انتهاء الإمداد

رموز حالة الاستجابة

200 تم استرداد قائمة الخوادم بنجاح
403 رمز API مفقود أو غير صحيح، أو يفتقر الرمز إلى الإذن المطلوب
الوظائف /api/v1/servers/

إنشاء خادم جديد

يصفّح خادم جديد للنشر ويعيده فوراً مع صف الحالة. يستمر الإعداد في الخلفية: استفتاء نقطة نهاية الحالة حتى يكون النشر صحيحاً. عندما يكون الخادم جاهزاً، يتم إرسال تفاصيل الدخول إلى مالك الحساب بالبريد الإلكتروني.

يحتاج حسابك إلى وسيلة دفع محفوظة. بحسب سجل حسابك، قد يتم وضع حجز مؤقت (pre-authorization) على بطاقتك بقيمة تعادل حوالي أسبوع واحد من سعر الخطة (بحد أدنى 1 USD) قبل إنشاء الخادم.

الإذن المطلوب: servers:create

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

البارامترات يكتب مطلوب وصف المشروع
hostname string نعم 3 علامات على الأقل، أحرف، أرقام، شرائط ونقاط فقط.
location_id integer نعم هوية الموقع النشط من API المواقع
plan_uuid string نعم uuid خطة نشطة من API الخطط
operating_system_version_uuid string نعم uuid لمدخل نشط في قائمة إصدارات نظام التشغيل
ssh_key_uuids array لا UUIDs المفاتيح SSH من SSH Keys API لتركيب على الخادم
ssh_key_ids array لا هوية عدد كامل لمفاتيح SSH، كبديل لـ ssh_key_uuids. إذا تم إرسال كلاهما، يتم استخدام ssh_key_ids.
ssh_key_uuid, ssh_key_id string, integer لا اختصار لمفتاح SSH واحد
auth_method string لا password, ssh_key أو كلاهما. الافتراض هو كلمة المرور، أو كلاهما عندما يتم تقديم مفاتيح SSH.

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

cURL
Python
JavaScript
PHP
curl -X POST "https://admin.vps.org/api/v1/servers/" \
  -H "Authorization: Bearer YOUR_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "hostname": "web-01",
    "location_id": 1,
    "plan_uuid": "3bc2faf6-8f8b-4978-b62d-b52ed3f858e9",
    "operating_system_version_uuid": "c3418f90-80a0-4e00-a7e1-d0ab1822b941",
    "ssh_key_uuids": ["YOUR_SSH_KEY_UUID"]
  }'
import requests

url = "https://admin.vps.org/api/v1/servers/"
headers = {"Authorization": "Bearer YOUR_API_TOKEN"}
data = {
    "hostname": "web-01",
    "location_id": 1,
    "plan_uuid": "3bc2faf6-8f8b-4978-b62d-b52ed3f858e9",
    "operating_system_version_uuid": "c3418f90-80a0-4e00-a7e1-d0ab1822b941",
    "ssh_key_uuids": ["YOUR_SSH_KEY_UUID"],
}

response = requests.post(url, headers=headers, json=data)
server = response.json()
print(response.status_code, server["uuid"], server["status"])
const response = await fetch('https://admin.vps.org/api/v1/servers/', {
  method: 'POST',
  headers: {
    'Authorization': 'Bearer YOUR_API_TOKEN',
    'Content-Type': 'application/json'
  },
  body: JSON.stringify({
    hostname: 'web-01',
    location_id: 1,
    plan_uuid: '3bc2faf6-8f8b-4978-b62d-b52ed3f858e9',
    operating_system_version_uuid: 'c3418f90-80a0-4e00-a7e1-d0ab1822b941',
    ssh_key_uuids: ['YOUR_SSH_KEY_UUID']
  })
});

const server = await response.json();
console.log(server.uuid, server.status);
$data = [
    'hostname' => 'web-01',
    'location_id' => 1,
    'plan_uuid' => '3bc2faf6-8f8b-4978-b62d-b52ed3f858e9',
    'operating_system_version_uuid' => 'c3418f90-80a0-4e00-a7e1-d0ab1822b941',
    'ssh_key_uuids' => ['YOUR_SSH_KEY_UUID']
];

$ch = curl_init('https://admin.vps.org/api/v1/servers/');
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));
curl_setopt($ch, CURLOPT_HTTPHEADER, [
    'Authorization: Bearer YOUR_API_TOKEN',
    'Content-Type: application/json'
]);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

$server = json_decode(curl_exec($ch), true);
curl_close($ch);

مثال على الاستجابة

201 أنشئ مع كائن الخادم الكامل الموصوف في إطار الحصول على تفاصيل الخادم.

{
  "uuid": "5f0c8e2a-6b1d-4c3e-9a7f-2d4b6c8e0a1f",
  "hostname": "web-01",
  "vmid": null,
  "status": "queue",
  "error_description": null,
  "location": {
    "id": 1,
    "name": "New Jersey",
    "country_name": "United States",
    "is_active": true
  },
  "plan": {
    "uuid": "3bc2faf6-8f8b-4978-b62d-b52ed3f858e9",
    "cpu": 1,
    "ram": 2,
    "ram_unit": "GB",
    "disk_space": 10,
    "disk_space_total": 10240,
    "transfer": 500,
    "price": "3.50",
    "cpu_type_name": "Shared",
    "is_active": true,
    "hourly_price": "0.005",
    "monthly_price": "3.50",
    "is_gpu": false,
    "gpu_count": 0,
    "gpu_model": ""
  },
  "operating_system": {
    "id": 1,
    "name": "Ubuntu",
    "svg_icon": "<svg ...>",
    "versions": [ ... ]
  },
  "operating_system_version": {
    "uuid": "c3418f90-80a0-4e00-a7e1-d0ab1822b941",
    "name": "24.04 LTS x64",
    "os_name": "Ubuntu",
    "os_svg_icon": "<svg ...>",
    "is_active": true
  },
  "ipv4_addresses": [],
  "ipv6_addresses": [],
  "deployed": false,
  "created_at": "2026-09-14T21:02:11.402113Z",
  "recent_actions": []
}

رموز حالة الاستجابة

201 حاسوب خدمة أنشئ ووضع في صفوف الانتظار للنشر
400 خطأ في التحقق، مثل موقع غير نشط أو خطة غير نشطة أو نسخة غير نشطة من نظام التشغيل
402 لم ترفض أي طريقة دفع في الملف، أو فواتير غير مدفوعة، أو إذن مسبق بالبطاقات
403 رمز API مفقود أو غير صحيح، أو يفتقر الرمز إلى الإذن المطلوب
429 وصل حسابك إلى حد إنشاء الخادم
يحصل /api/v1/servers/{uuid}/

احصل على تفاصيل الخادم

يعيد حاسوب خدمة واحد مع موقعه، وخطة، ونظام التشغيل، وعناوين بروتوكول الإنترنت، والإجراءات الخمسة الأخيرة.

الإذن المطلوب: servers:list

curl -X GET "https://admin.vps.org/api/v1/servers/8c4f2a1e-5b3d-4e6f-9a7b-1c2d3e4f5a6b/" \
  -H "Authorization: Bearer YOUR_API_TOKEN"

مثال على الاستجابة

{
  "uuid": "8c4f2a1e-5b3d-4e6f-9a7b-1c2d3e4f5a6b",
  "hostname": "web-01",
  "vmid": 1042,
  "status": "on",
  "error_description": null,
  "location": {
    "id": 1,
    "name": "New Jersey",
    "country_name": "United States",
    "is_active": true
  },
  "plan": {
    "uuid": "14186969-fbaf-43e1-9ab2-b1f1aeb66674",
    "cpu": 1,
    "ram": 2,
    "ram_unit": "GB",
    "disk_space": 25,
    "disk_space_total": 25600,
    "transfer": 1,
    "price": "5.00",
    "cpu_type_name": "Shared",
    "is_active": true,
    "hourly_price": "0.007",
    "monthly_price": "5.00",
    "is_gpu": false,
    "gpu_count": 0,
    "gpu_model": ""
  },
  "operating_system": {
    "id": 1,
    "name": "Ubuntu",
    "svg_icon": "<svg ...>",
    "versions": [ ... ]
  },
  "operating_system_version": {
    "uuid": "c3418f90-80a0-4e00-a7e1-d0ab1822b941",
    "name": "24.04 LTS x64",
    "os_name": "Ubuntu",
    "os_svg_icon": "<svg ...>",
    "is_active": true
  },
  "ipv4_addresses": [
    {
      "ip": "203.0.113.10",
      "gateway": "203.0.113.1",
      "subnet": "203.0.113.0",
      "rdns": "web-01.example.com"
    }
  ],
  "ipv6_addresses": [
    {
      "ip": "2001:db8:2:dd::f9:6b",
      "gateway": "2001:db8:2:dd::f9:1",
      "subnet": "2001:db8:2:dd::f9:0",
      "rdns": "web-01.example.com"
    }
  ],
  "deployed": true,
  "created_at": "2026-07-30T03:54:14.914364Z",
  "recent_actions": [
    {
      "id": 17028,
      "action": "create",
      "action_display": "Create",
      "description": "Server deployed with VMID 1042",
      "user_email": "you@example.com",
      "created_at": "2026-07-30T03:54:32.860854Z"
    }
  ]
}

SVG icon markup وقائمة الإصدارات مقتضبة هنا.

حقول الاستجابة

الميدان يكتب وصف المشروع
vmid integer | null رقم الآلة الافتراضية، المحدد أثناء النشر
location object كائن الموقع، كما يرد من API المواقع
plan object كائن الخطة، كما يرد من رابط التكامل البرمجي للخطط
operating_system, operating_system_version object نظام التشغيل والنسخة المركبة، كما يرد من API لنظم التشغيل
ipv4_addresses, ipv6_addresses array كائن واحد لكل عنوان مع IP، البوابة، الشبكة الفرعية و rdns (الدليل العكسي DNS اسم المضيف)
recent_actions array ما يصل إلى خمسة إجراءات أخيرة: id، action، action_display، description، user_email، created_at

رموز حالة الاستجابة

200 تم استرداد تفاصيل الخادم بنجاح
404 لم يُعثر عليها، أو أنها تنتمي إلى حساب آخر
يحصل /api/v1/servers/{uuid}/status/

احصل على حالة الخادم

نداء خفيف للاستفتاء بعد أن تقوم بإنشاء، أو إعادة تشغيل أو إعادة قياس الخادم.

curl -X GET "https://admin.vps.org/api/v1/servers/8c4f2a1e-5b3d-4e6f-9a7b-1c2d3e4f5a6b/status/" \
  -H "Authorization: Bearer YOUR_API_TOKEN"
{
  "status": "on",
  "deployed": true,
  "resizing": false
}

قيم حالة الخادم

القيمة وصف المشروع
queue إجراء (نشر، طاقة، إعادة الحجم، استعادة) في صف أو قيد التنفيذ
deploying قيد الإعداد - تستخدم الخوادم التي أنشئت من لوحة التحكم هذه الحالة؛ وتظل الخوادم التي أنشئت من خلال API في صف حتى تكون جاهزة.
on التشغيل
off طاقة منقطعة
error فشل الإجراء الأخير. انظر error_description.
suspended_payment تعليق التنفيذ بسبب الفواتير غير المسددة
الوظائف /api/v1/servers/{uuid}/power/

تحكم في طاقة الخادم

تقوم بتصفيف إجراء طاقة. تتغير حالة الخادم إلى صف حتى يتم إنجاز الإجراء.

الإذن المطلوب: servers:power

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

البارامترات يكتب مطلوب وصف المشروع
action string نعم start: تشغيل الطاقة
shutdown: إغلاق رائع، يُقبض عليه إذا لم يتوقف الضيف
restart: دورة الطاقة الشديدة (التوقّف ثم البدء)
stop: يقوم حالياً بنفس دورة الطاقة كإعادة الإطلاق. استخدم shutdown لترك الخادم مطفأً.

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

cURL
Python
curl -X POST "https://admin.vps.org/api/v1/servers/8c4f2a1e-5b3d-4e6f-9a7b-1c2d3e4f5a6b/power/" \
  -H "Authorization: Bearer YOUR_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"action": "restart"}'
import requests

server_uuid = "8c4f2a1e-5b3d-4e6f-9a7b-1c2d3e4f5a6b"
url = f"https://admin.vps.org/api/v1/servers/{server_uuid}/power/"
headers = {"Authorization": "Bearer YOUR_API_TOKEN"}

response = requests.post(url, headers=headers, json={"action": "restart"})
print(response.json())

مثال على الاستجابة

{
  "message": "Server restart queued"
}

رموز حالة الاستجابة

200 تم وضع العمل في صف
400 الإجراءات المفقودة أو غير المدعومة
402 رفض البدء لأن الحساب يتضمن فواتير غير مسددة
404 لم يُعثر عليها، أو أنها تنتمي إلى حساب آخر
الوظائف /api/v1/servers/{uuid}/resize/

إعادة حجم الخادم

ينقل الخادم إلى خطة نشطة أخرى. لا يمكن أن يكون للخطة الجديدة مساحة أقل على القرص من الخطة الحالية، ويجب أن يتضمن جسد الطلب إجراء محدد لإعادة الحجم. يتم التحقق من قدرة الهيدروفيسور للخطة الجديدة قبل أي شيء يتم صفه، لذلك يترك الطلب المرفوض الخادم دون تغيير.

الخادم يوقف أثناء تغيير حجمه ويبدأ مرة أخرى بعد ذلك. إذا فشل إعادة الحجم، يوضع الخادم مرة أخرى على خطته السابقة ويبدأ مرة أخرى إذا كان يعمل. لا يمكن إلغاء نمو القرص.

الإذن المطلوب: servers:resize

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

البارامترات يكتب مطلوب وصف المشروع
action string نعم يجب أن يعاد حجمها
new_plan_uuid string نعم رمز الخطة التي ينبغي الانتقال إليها
curl -X POST "https://admin.vps.org/api/v1/servers/8c4f2a1e-5b3d-4e6f-9a7b-1c2d3e4f5a6b/resize/" \
  -H "Authorization: Bearer YOUR_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"action": "resize", "new_plan_uuid": "5e26a4a6-bd0c-467c-abca-da036c811c3f"}'
{
  "message": "Resize queued successfully"
}

مثال على رفض إعادة الحجم (409):

{
  "error": "Not enough hypervisor capacity for the selected plan; the server was not changed"
}

رموز حالة الاستجابة

200 تم وضع العمل في صف
400 العمل المفقود أو new_plan_uuid، خطة غير صحيحة أو غير نشطة، خطة مع مساحة أقل على القرص، أو خطة وحدة المعالجة الرسومية (خطط وحدة المعالجة الرسومية لا يمكن تغيير حجمها من خلال API)
404 لم يُعثر عليها، أو أنها تنتمي إلى حساب آخر
409 يجري بالفعل إعادة الحجم أو تغيير التخزين، أو لا توجد قدرة كافية على الإدارة الفعالة للخطة الجديدة
503 لم يكن من الممكن التحقق من السعة الآن، لم يتغير الخادم، حاول مرة أخرى لاحقاً.
الوظائف /api/v1/servers/{uuid}/reset-password/

إعادة كلمة السر

يولد كلمة مرور جديدة لـ root ، ويعيدها في الاستجابة ويضع التغيير في صف على الخادم. كلمة المرور الجديدة ترسل إليك أيضاً بالبريد الإلكتروني. يجب نشر الخادم. لا يلزم وجود جسد طلب.

curl -X POST "https://admin.vps.org/api/v1/servers/8c4f2a1e-5b3d-4e6f-9a7b-1c2d3e4f5a6b/reset-password/" \
  -H "Authorization: Bearer YOUR_API_TOKEN"
{
  "message": "Password reset queued. New password will also be emailed to you.",
  "password": "generated-password",
  "job_id": "b6f1c7e2-3a4d-4f5e-8b9c-0d1e2f3a4b5c"
}

رموز حالة الاستجابة

200 تم وضع العمل في صف
400 لم ينشر حاسوب خدمة الشبكة بعد
404 لم يُعثر عليها، أو أنها تنتمي إلى حساب آخر
يحصل الوظائف /api/v1/servers/{uuid}/rdns/

DNS العكسي (PTR)

GET يعرض اسم المضيف DNS العكسي لكل عنوان IPv4 و IPv6 على الخادم. POST يحدده لعنوان واحد. إرسال اسم مضيف فارغ يعيد العنوان إلى اسم DNS العكسي الافتراضي.

الإذن المطلوب: servers:update

معلمات نص الطلب (POST)

البارامترات يكتب مطلوب وصف المشروع
ip string نعم عنوان IPv4 أو IPv6 مخصص لهذا الخادم
hostname string لا اسم مضيف PTR. اتركه فارغا لإعادة الوضع إلى الافتراضي.
curl -X POST "https://admin.vps.org/api/v1/servers/8c4f2a1e-5b3d-4e6f-9a7b-1c2d3e4f5a6b/rdns/" \
  -H "Authorization: Bearer YOUR_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"ip": "203.0.113.10", "hostname": "mail.example.com"}'
{
  "message": "Reverse DNS for 203.0.113.10 set to mail.example.com",
  "ip": "203.0.113.10",
  "hostname": "mail.example.com"
}

رد GET:

{
  "rdns": [
    {"ip": "203.0.113.10", "hostname": "mail.example.com"},
    {"ip": "2001:db8:2:dd::f9:6b", "hostname": "mail.example.com"}
  ]
}

رموز حالة الاستجابة

400 العنوان IP مفقود، أو لم يكن من الممكن تحديد اسم المضيف
404 لم يخصص عنوان بروتوكول الإنترنت لهذا الخادم
الوظائف /api/v1/servers/{uuid}/exec/

تشغيل أمر على خادم

يقوم بتشغيل أمر قشرة داخل الخادم من خلال وكيل ضيف QEMU وينتظر حتى ينتهي. يجب أن يكون الخادم موزعاً وعاملاً، ويجب أن يكون وكيل زائر qemu مركّباً وعاملاً في الضيف.

الإذن المطلوب: servers:exec

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

البارامترات يكتب مطلوب وصف المشروع
command string نعم تشغيل خط الأوامر مع /bin/sh -c، حتى 2000 رمز
timeout integer لا ثانية الانتظار للأمر، 1 إلى 300 (القيمة الافتراضية 30)
curl -X POST "https://admin.vps.org/api/v1/servers/8c4f2a1e-5b3d-4e6f-9a7b-1c2d3e4f5a6b/exec/" \
  -H "Authorization: Bearer YOUR_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"command": "uptime", "timeout": 30}'
{
  "stdout": " 21:14:03 up 46 days,  2:10,  0 users,  load average: 0.08, 0.03, 0.01\n",
  "stderr": "",
  "exit_code": 0,
  "timed_out": false
}

إذا كان الأمر لا يزال ينفذ عندما ينتهي الوقت المحدد، فإن الاستجابة لديها timed_out محددة إلى true و exit_code محددة إلى null.

رموز حالة الاستجابة

200 انتهت الأوامر أو انتهى الوقت المحدد لها
400 الخادوم غير منشور أو غير عامل، أو البارامترات غير صحيحة
409 لا يعمل وكيل ضيف QEMU على الخادم
503 مشكلة اتصال مؤقتة. أعيد المحاولة بعد رأس إعادة المحاولة بعد.
يمسح /api/v1/servers/{uuid}/

خادم البيانات

يضع الخادم في صف للمحذوف الدائم. يختفي الخادم من القائمة فوراً ولا يمكن استعادته.

الإذن المطلوب: servers:delete

curl -X DELETE "https://admin.vps.org/api/v1/servers/8c4f2a1e-5b3d-4e6f-9a7b-1c2d3e4f5a6b/" \
  -H "Authorization: Bearer YOUR_API_TOKEN"
{
  "message": "Server deletion queued"
}

رموز حالة الاستجابة

202 مقبول: وضع الطلب في قائمة الانتظار
404 لم يُعثر عليها، أو أنها تنتمي إلى حساب آخر
يحصل الوظائف /api/v1/ssh-keys/

مفاتيح SSH

تخزين المفاتيح العامة SSH في حسابك، ثم تسليمها uuids ك ssh_key_uuids عندما تقوم بإنشاء خادم. GET قائمة مفاتيحك (25 لكل صفحة)؛ POST إضافة واحدة.

الإذن المطلوب: ssh-keys:list (GET), ssh-keys:create (POST)

معلمات نص الطلب (POST)

البارامترات يكتب مطلوب وصف المشروع
name string نعم اسم لتحديد المفتاح، حتى 100 حرف
public_key string نعم المفتاح العام في شكل OpenSSH، على سبيل المثال محتويات id_ed25519.pub

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

cURL
Python
curl -X POST "https://admin.vps.org/api/v1/ssh-keys/" \
  -H "Authorization: Bearer YOUR_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"name": "laptop", "public_key": "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAI... you@laptop"}'
import requests

url = "https://admin.vps.org/api/v1/ssh-keys/"
headers = {"Authorization": "Bearer YOUR_API_TOKEN"}

with open("/home/you/.ssh/id_ed25519.pub") as f:
    data = {"name": "laptop", "public_key": f.read().strip()}

response = requests.post(url, headers=headers, json=data)
print(response.status_code, response.json()["uuid"])

مثال على الاستجابة

{
  "id": 19,
  "uuid": "6e1b9c52-3f8a-4d7e-a2c4-5b9d0e1f2a3c",
  "name": "laptop",
  "public_key": "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAI... you@laptop",
  "fingerprint": "0b:4c:9b:48:76:e7:1d:07:b9:ac:71:90:70:f7:9a:69",
  "created_at": "2026-08-23T19:16:11.547183Z",
  "last_used_at": null
}

حقول الاستجابة

الميدان يكتب وصف المشروع
id, uuid integer, string هويات المفاتيح. استخدم uuid في ssh_key_uuids وفي العنوان URL أدناه؛ id يعمل في ssh_key_ids.
fingerprint string بصمة المفتاح MD5، المحسوبة بواسطة المنصة
last_used_at datetime | null تاريخ آخر تثبيت للمفتاح على خادوم جديد

رموز حالة الاستجابة

201 مفتاح أضيف
400 الاسم المفقود، أو المفتاح العام ليس مفتاحاً عاماً صالحاً لـ SSH
يحصل يمسح /api/v1/ssh-keys/{uuid}/

احصل على مفتاح SSH أو حذفه

GET يعيد مفتاح واحد مع الحقول أعلاه. DELETE يزيلها من حسابك ويعيد 204 بدون جسد. حذف مفتاح لا يزيلها من الخوادم التي كانت قد تم تركيبها على. المفاتيح لا يمكن تعديلها: حذف وإضافة مرة أخرى.

الإذن المطلوب: ssh-keys:list (GET), ssh-keys:delete (DELETE)

curl -X DELETE "https://admin.vps.org/api/v1/ssh-keys/6e1b9c52-3f8a-4d7e-a2c4-5b9d0e1f2a3c/" \
  -H "Authorization: Bearer YOUR_API_TOKEN"

النسخ الاحتياطية والنسخ الفوري

إنشاء نسخة احتياطية أو لقطة هو أيضا إجراء الخادم: