VPS.org API

REST API Documentation

API διακομιστών

Δημιουργήστε, επιθεωρήστε, δύναμη, αλλαγή μεγέθους και διαγράψτε τους διακομιστές VPS σας. Οι εξυπηρετητές προσδιορίζονται με το uuid τους.

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

Λίστα όλων των διακομιστών

Επιστρέφει τους διακομιστές στο λογαριασμό σας, νεότερο πρώτα, 25 ανά σελίδα. Οι εξυπηρετητές που διαγράφονται δεν περιλαμβάνονται.

Απαιτείται άδεια: servers:list

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

Parameter Τύπος Υποχρεούμαι Description
page integer No Αριθμός σελίδας, ξεκινώντας από το 1
page_size integer No Αποτελέσματα ανά σελίδα (προκαθορισμένα 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
    }
  ]
}

Πεδία απόκρισης

Πεδίο Τύπος Description
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.
ipv6_addresses array IPv6 addresses as strings. Empty until the server is deployed.
created_at datetime Χρόνος δημιουργίας (ISO 8601, UTC)
deployed boolean Είναι αλήθεια ότι μόλις τελειώσει η προμήθεια

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

200 Η λίστα διακομιστών ανακτήθηκε με επιτυχία
403 Λείπει ή άκυρο API, ή το σύμβολο στερείται της απαιτούμενης άδειας
POST /api/v1/servers/

Δημιουργία νέου διακομιστή

Παρακολουθεί έναν νέο διακομιστή για την ανάπτυξη και τον επιστρέφει αμέσως με την ουρά κατάστασης. Η παροχή συνεχίζεται στο παρασκήνιο: δημοσκοπήστε το τελικό σημείο μέχρι να αναπτυχθεί είναι αληθινό. Όταν ο διακομιστής είναι έτοιμος, οι λεπτομέρειες σύνδεσης του αποστέλλονται με email στον ιδιοκτήτη του λογαριασμού.

Ανάλογα με το ιστορικό του λογαριασμού σας, μπορεί να τοποθετηθεί στην κάρτα σας μια προσωρινή βάση προεγκρίνισης περίπου μιας εβδομάδας της τιμής του προγράμματος (τουλάχιστον 1 USD) πριν δημιουργηθεί ο διακομιστής.

Απαιτείται άδεια: servers:create

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

Parameter Τύπος Υποχρεούμαι Description
hostname string Ναί Τουλάχιστον 3 χαρακτήρες, γράμματα, ψηφία, παύλες και περίοδοι μόνο.
location_id integer Ναί Η ταυτότητα μιας ενεργού τοποθεσίας από τις τοποθεσίες API
plan_uuid string Ναί Η εφαρμογή ενός ενεργού σχεδίου από το σχέδιο API
operating_system_version_uuid string Ναί Η εφαρμογή μιας ενεργού εισόδου στον κατάλογο εκδόσεων ενός λειτουργικού συστήματος
ssh_key_uuids array No UUIDs των πλήκτρων SSH από το API SSH Keys για την εγκατάσταση στον εξυπηρετητή
ssh_key_ids array No Integer ids of SSH keys, as an alternative to ssh_key_uids. Εάν αποστέλλονται και τα δύο, ssh_key_ids is used.
ssh_key_uuid, ssh_key_id string, integer No Σύντομη χρήση για ένα μόνο κλειδί SSH
auth_method string No Προκαθορισμένα στον κωδικό πρόσβασης, ή και στα δύο όταν παρέχονται τα πλήκτρα 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 Δημιουργήθηκε με το πλήρες αντικείμενο του διακομιστή που περιγράφεται στο Get Server Λεπτομέρειες. Οι διευθύνσεις και vmid συμπληρώνονται μόλις ολοκληρωθεί η ανάπτυξη.

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

Λήψη λεπτομερειών διακομιστή

Επιστρέφει έναν διακομιστή με την τοποθεσία, το σχέδιο, το λειτουργικό σύστημα, τις διευθύνσεις IP και τις πέντε πιο πρόσφατες ενέργειες.

Απαιτείται άδεια: 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 εικονίδιο σήμανση και η λίστα εκδόσεων συντομεύονται εδώ.

Πεδία απόκρισης

Πεδίο Τύπος Description
vmid integer | null Εικονικός αριθμός μηχανών, που ορίζεται κατά τη διάρκεια της ανάπτυξης
location object Αντικείμενο τοποθεσίας, όπως επιστρέφεται από τις θέσεις API
plan object Αντικείμενο σχεδίου, όπως επιστρέφει το σχέδιο API
operating_system, operating_system_version object Λειτουργικό σύστημα και η εγκατεστημένη έκδοση, όπως επιστρέφεται από το λειτουργικό σύστημα API
ipv4_addresses, ipv6_addresses array Ένα αντικείμενο ανά διεύθυνση με ip, πύλη, υποδίκτυο και rdns (το όνομα του υπολογιστή του DNS)
recent_actions array Μέχρι πέντε τελευταίες δράσεις: id, action, action_display, περιγραφή, 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
}

Τιμές κατάστασης εξυπηρετητή

Τιμή Description
queue Μια δράση (ανάλυση, δύναμη, αλλαγή μεγέθους, αποκατάσταση) είναι σε σειρά αναμονής ή σε εξέλιξη
deploying Οι εξυπηρετητές που δημιουργούνται από τον πίνακα ελέγχου χρησιμοποιούν αυτή την κατάσταση; διακομιστές που δημιουργούνται μέσω του API παραμένουν στην ουρά μέχρι να είναι έτοιμοι.
on Τρέξιμο
off Εκφορτωθέντα
error Η τελευταία ενέργεια απέτυχε. Δείτε την περιγραφή λάθους.
suspended_payment Διατασσόμενα λόγω μη καταβληθέντων τιμολογίων
POST /api/v1/servers/{uuid}/power/

Δύναμη εξυπηρετητή ελέγχου

Ο διακομιστής αλλάζει σε σειρά μέχρι να ολοκληρωθεί η δράση.

Απαιτείται άδεια: servers:power

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

Parameter Τύπος Υποχρεούμαι Description
action string Ναί start: ισχύς
shutdown: Χαριτωμένο κλείσιμο, αναγκαστεί να φύγει αν ο επισκέπτης δεν σταματήσει
restart: σκληρό κύκλο ισχύος (στάση, στη συνέχεια, ξεκινήστε)
stop: Αυτή τη στιγμή εκτελεί τον ίδιο κύκλο ισχύος με την επανεκκίνηση. Χρησιμοποιήστε το κλείσιμο για να αφήσετε ένα διακομιστή εκτός.

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

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 Δεν βρέθηκε ή ανήκει σε άλλο λογαριασμό
POST /api/v1/servers/{uuid}/resize/

Αλλαγή μεγέθους εξυπηρετητή

Μετακινεί τον εξυπηρετητή σε άλλο ενεργό σχέδιο. Το νέο σχέδιο δεν μπορεί να έχει λιγότερο χώρο δίσκων από το τρέχον, και το σώμα αίτησης πρέπει να περιλαμβάνει δράση που έχει οριστεί για να αλλάξει μέγεθος.

Ο εξυπηρετητής κλείνει ενώ είναι αναδιπλούμενο και αρχίζει και πάλι μετά. Αν το μέγεθος αποτύχει, ο εξυπηρετητής τοποθετείται πίσω στο προηγούμενο σχέδιο του και ξεκινά πάλι αν λειτουργεί.

Απαιτείται άδεια: servers:resize

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

Parameter Τύπος Υποχρεούμαι Description
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 Λείπει δράση ή νέα_plan_uid, άκυρο ή ανενεργό σχέδιο, σχέδιο με λιγότερο χώρο δίσκων ή σχέδιο GPU (Δεν μπορεί να αναμειγνύεται μέσω του API)
404 Δεν βρέθηκε ή ανήκει σε άλλο λογαριασμό
409 Μια αλλαγή μεγέθους ή αποθήκευσης είναι ήδη σε εξέλιξη, ή δεν υπάρχει αρκετή ικανότητα υπεροψία για το νέο σχέδιο
503 Η χωρητικότητα δεν μπορούσε να ελεγχθεί τώρα. Ο διακομιστής δεν άλλαξε; ξαναπροσπαθήστε αργότερα.
POST /api/v1/servers/{uuid}/reset-password/

Επαναφορά κωδικού πρόσβασης ρίζας

Δημιουργεί ένα νέο κωδικό πρόσβασης ρίζας, τον επιστρέφει στην απάντηση και ουρές την αλλαγή στον εξυπηρετητή. Ο νέος κωδικός πρόσβασης είναι επίσης μέσω email σε σας. Ο διακομιστής πρέπει να αναπτυχθεί. Δεν απαιτείται σώμα αιτήματος.

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 Δεν βρέθηκε ή ανήκει σε άλλο λογαριασμό
ΠΑΙΡΝΩ POST /api/v1/servers/{uuid}/rdns/

Αντίστροφο DNS (PTR)

Το GET απαριθμεί το αντίστροφο όνομα υπολογιστή DNS κάθε διεύθυνσης IPv4 και IPv6 στον εξυπηρετητή. Η POST το θέτει για μία διεύθυνση. Η αποστολή ενός κενού ονόματος υπολογιστή επαναφέρει τη διεύθυνση στην προεπιλεγμένη του ονομασία DNS.

Απαιτείται άδεια: servers:update

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

Parameter Τύπος Υποχρεούμαι Description
ip string Ναί Διεύθυνση IPv4 ή IPv6 που έχει ανατεθεί σε αυτόν τον εξυπηρετητή
hostname string No Το όνομα υπολογιστή 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 Η διεύθυνση IP δεν έχει ανατεθεί σε αυτόν τον εξυπηρετητή
POST /api/v1/servers/{uuid}/exec/

Εκτέλεση εντολής σε έναν εξυπηρετητή

Λειτουργεί μια εντολή κέλυφος μέσα στον διακομιστή μέσω του guest agent QONFa και περιμένει να τελειώσει. Ο διακομιστής πρέπει να αναπτυχθεί και να λειτουργήσει, και Qemu-guest-agent πρέπει να εγκατασταθεί και να τρέχει στον επισκέπτη.

Απαιτείται άδεια: servers:exec

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

Parameter Τύπος Υποχρεούμαι Description
command string Ναί Γραμμή εντολών τρέχει με /bin/sh -c, μέχρι 2000 χαρακτήρες
timeout integer No Δευτερόλεπτα για να περιμένετε την εντολή, 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 που ορίζεται στην αλήθεια και έξοδος_κώδικας που ορίζεται σε μηδέν.

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

200 Η εντολή ολοκληρώθηκε ή έχει λήξει
400 Ο εξυπηρετητής δεν έχει αναπτυχθεί ή δεν λειτουργεί, ή μη διαθέσιμες παράμετροι
409 Ο καλεσμένος πράκτορας QONFa δεν τρέχει στον διακομιστή
503 Temporary connection problem. Retry after the Retry-After header.
ΔΙΑΓΡΑΦΩ /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 Δεν βρέθηκε ή ανήκει σε άλλο λογαριασμό
ΠΑΙΡΝΩ POST /api/v1/ssh-keys/

Κλειδιά SSH

Αποθηκεύστε τα κλειδιά του δημοσίου SSH στο λογαριασμό σας, στη συνέχεια, να περάσει τα uuids τους ως ssh_key_uids όταν δημιουργείτε έναν διακομιστή. GET λίστες τα κλειδιά σας (25 ανά σελίδα); POST προσθέτει ένα.

Απαιτείται άδεια: ssh-keys:list (GET), ssh-keys:create (POST)

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

Parameter Τύπος Υποχρεούμαι Description
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
}

Πεδία απόκρισης

Πεδίο Τύπος Description
id, uuid integer, string Βασικά αναγνωριστικά. Χρησιμοποιήστε uuid σε ssh_key_uids και στο 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"

Χειροκίνητα και φωτογραφισμένα

Η δημιουργία αντιγράφων ασφαλείας ή στιγμιότυπου είναι επίσης μια δράση διακομιστή: