VPS.org API

REST API Documentation

API διαχείρισης DNS

Οι ζώνες που εξυπηρετούνται από ns1.vps.org, ns2.zqx0qz και ns3.zqx0qqz.

Τελικά σημεία 13
Βασική διαδρομή /api/v1/dns-zones, /api/v1/dns-records

Επισκόπηση

Μια ζώνη κατέχει τα αρχεία για ένα τομέα. Κάθε αλλαγή που κάνετε μέσω του API σπρώχνεται στους nameservers VPS.org αμέσως. Για να εξυπηρετήσει ένα τομέα από αυτές τις ζώνες, ρυθμίστε τους nameservers του στο ns1.zqx1qz, ns2.vps.org και ns3.vps.org.

Οι αλλαγές αποθηκεύονται και δημοσιεύονται σε ένα βήμα: εάν οι marineservers αρνούνται μια αλλαγή, η αίτηση επιστρέφει 502 και δεν σώζεται τίποτα. Μια ζώνη δεν μπορεί να δημιουργηθεί για έναν τομέα άλλο λογαριασμό που διαχειρίζεται ήδη, ένας γονιός ή παιδί της ζώνης ενός άλλου λογαριασμού, ή ένα όνομα που κρατάει VPS.org.

Απαιτείται άδεια: dns:list (GET), dns:create (POST), dns:update (PUT, PATCH, sync), dns:delete (DELETE), dns:*

ΠΑΙΡΝΩ /api/v1/dns-zones/

Λίστα όλων των ζωνών DNS

Επιστρέφει τις ζώνες σας, νεότερη πρώτη, 25 ανά σελίδα. Τα αρχεία δεν περιλαμβάνονται εδώ?

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

Parameter Τύπος Υποχρεούμαι Description
domain string No Επιστρέψτε μόνο τη ζώνη με ακριβώς αυτό το domain name
page integer No Αριθμός σελίδας, ξεκινώντας από το 1

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

cURL
Python
JavaScript
curl -X GET "https://admin.vps.org/api/v1/dns-zones/?domain=example.com" \
  -H "Authorization: Bearer YOUR_API_TOKEN"
import requests

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

response = requests.get(url, headers=headers, params={"domain": "example.com"})
for zone in response.json()["results"]:
    print(zone["uuid"], zone["domain"], zone["record_count"])
const response = await fetch('https://admin.vps.org/api/v1/dns-zones/?domain=example.com', {
  headers: { 'Authorization': 'Bearer YOUR_API_TOKEN' }
});

const data = await response.json();
console.log(data.results);

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

{
  "count": 1,
  "next": null,
  "previous": null,
  "results": [
    {
      "uuid": "c7a1e3f0-2b4d-4e6a-9c8b-0d1f2e3a4b5c",
      "domain": "example.com",
      "created_at": "2026-09-06T03:11:48.829693Z",
      "record_count": 5
    }
  ]
}

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

Πεδίο Τύπος Description
uuid string Κωδικός ζώνης
domain string Όνομα τομέα, αποθηκευμένο σε χαμηλότερη περίπτωση
created_at datetime Χρόνος δημιουργίας (ISO 8601, UTC)
record_count integer Αριθμός αρχείων στη ζώνη, συμπεριλαμβανομένων των τριών αρχείων NS

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

200 Επιτυχία
403 Λείπει ή άκυρο API, ή το σύμβολο στερείται της απαιτούμενης άδειας
POST /api/v1/dns-zones/

Δημιουργία ζώνης DNS

Δημιουργεί μια ζώνη και την δημοσιεύει. Η ζώνη ξεκινά με τρεις εγγραφές NS για ns1, ns2 και ns3.vps.org, οι οποίες είναι αρχεία συστήματος και δεν μπορούν να επεξεργαστούν ή να διαγραφούν.

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

Parameter Τύπος Υποχρεούμαι Description
domain string Ναί The domain name, for example example.com
curl -X POST "https://admin.vps.org/api/v1/dns-zones/" \
  -H "Authorization: Bearer YOUR_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"domain": "example.com"}'

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

{
  "uuid": "c7a1e3f0-2b4d-4e6a-9c8b-0d1f2e3a4b5c",
  "domain": "example.com",
  "created_at": "2026-09-14T21:02:11.402113Z",
  "records": [
    {
      "uuid": "1f2e3d4c-5b6a-4978-8a9b-0c1d2e3f4a5b",
      "record_type": "NS",
      "name": "@",
      "value": "ns1.vps.org",
      "ttl": 86400,
      "priority": null,
      "created_at": "2026-09-14"
    },
    ...
  ],
  "record_count": 3
}

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

201 Ζώνη που δημιουργήθηκε
400 Έλλειψη ή μη έγκυρο όνομα τομέα
ΠΑΙΡΝΩ /api/v1/dns-zones/{uuid}/

Λήψη λεπτομερειών DNS ζώνης

Επιστρέφει μια ζώνη με όλα τα αρχεία της σε μια σειρά αρχείων. Η απάντηση έχει το ίδιο σχήμα με την παραπάνω απόκριση δημιουργίας.

curl -X GET "https://admin.vps.org/api/v1/dns-zones/c7a1e3f0-2b4d-4e6a-9c8b-0d1f2e3a4b5c/" \
  -H "Authorization: Bearer YOUR_API_TOKEN"

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

200 Επιτυχία
404 Δεν βρέθηκε ή ανήκει σε άλλο λογαριασμό
ΔΙΑΓΡΑΦΩ /api/v1/dns-zones/{uuid}/

Διαγραφή ζώνης DNS

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

curl -X DELETE "https://admin.vps.org/api/v1/dns-zones/c7a1e3f0-2b4d-4e6a-9c8b-0d1f2e3a4b5c/" \
  -H "Authorization: Bearer YOUR_API_TOKEN"

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

204 Η απάντηση δεν έχει πτώμα.
400 Ένας εξυπηρετητής ονομάτων εξακολουθεί να εξυπηρετεί τη ζώνη. Η ζώνη δεν έχει διαγραφεί· το πεδίο λεπτομερειών απαριθμεί τα λάθη.
404 Δεν βρέθηκε ή ανήκει σε άλλο λογαριασμό
ΠΑΙΡΝΩ POST /api/v1/dns-zones/{uuid}/records/

Κατάλογος ή προσθήκη αρχείων σε μια ζώνη

Το GET επιστρέφει κάθε εγγραφή στη ζώνη ως απλή σειρά (δεν έχει σφηνωθεί), ταξινομείται ανά τύπο και όνομα.

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

Parameter Τύπος Υποχρεούμαι Description
record_type string Ναί A, AAAA, CNAME, MX, NS, TXT, SRV, PTR, SOA, CAA
name string Ναί @ για τον ίδιο τον τομέα, ή μια ετικέτα όπως ο www. Names αποθηκεύονται σε χαμηλότερη περίπτωση.
value string Ναί Τα δεδομένα καταγραφής, για παράδειγμα μια διεύθυνση IP ή ένα όνομα υπολογιστή. Τα ονόματα του υπολογιστή δεν χρειάζονται μια τελεία παρακολούθησης και οι τιμές TXT δεν χρειάζονται εισαγωγικά.
ttl integer Ναί Ώρα να ζήσεις σε δευτερόλεπτα
priority integer Μόνο MX και SRV Απαιτείται για MX και SRV αρχεία και αγνοείται για κάθε άλλο τύπο. Για SRV, τοποθετήστε βάρος, θύρα και στόχο στην αξία.

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

cURL
Python
curl -X POST "https://admin.vps.org/api/v1/dns-zones/c7a1e3f0-2b4d-4e6a-9c8b-0d1f2e3a4b5c/records/" \
  -H "Authorization: Bearer YOUR_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"record_type": "MX", "name": "@", "value": "mail.example.com", "ttl": 3600, "priority": 10}'
import requests

zone_uuid = "c7a1e3f0-2b4d-4e6a-9c8b-0d1f2e3a4b5c"
url = f"https://admin.vps.org/api/v1/dns-zones/{zone_uuid}/records/"
headers = {"Authorization": "Bearer YOUR_API_TOKEN"}
data = {"record_type": "A", "name": "www", "value": "203.0.113.10", "ttl": 3600}

response = requests.post(url, headers=headers, json=data)
print(response.status_code, response.json())

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

{
  "uuid": "9d430082-5562-42b4-a0b2-12a6f6c862f9",
  "record_type": "MX",
  "name": "@",
  "value": "mail.example.com",
  "ttl": 3600,
  "priority": 10,
  "created_at": "2026-09-14"
}

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

Πεδίο Τύπος Description
uuid string Κωδικός μητρώου, που χρησιμοποιείται από τα αρχεία /api/v1/dns/ τελικά σημεία
priority integer | null Προτεραιότητα για αρχεία MX και SRV, διαφορετικά μηδενικά
created_at date Μόνον ημερομηνία δημιουργίας (Ε-MM-ΗΗ), χωρίς χρονικό διάστημα

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

200 GET: τα αρχεία της ζώνης
201 POST: δημιουργία ρεκόρ
400 Σφάλμα επικύρωσης, για παράδειγμα άγνωστος τύπος εγγραφής, λείπει ttl, ή αρχείο MX ή SRV χωρίς προτεραιότητα
404 Δεν βρέθηκε ή ανήκει σε άλλο λογαριασμό
POST /api/v1/dns-zones/{uuid}/sync/

Εκ νέου έκδοση μιας ζώνης

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

curl -X POST "https://admin.vps.org/api/v1/dns-zones/c7a1e3f0-2b4d-4e6a-9c8b-0d1f2e3a4b5c/sync/" \
  -H "Authorization: Bearer YOUR_API_TOKEN"
{
  "detail": "Zone example.com synced to PowerDNS"
}
ΠΑΙΡΝΩ POST /api/v1/dns-records/

Κατάλογος ή δημιουργία αρχείων σε όλες τις ζώνες

Το GET επιστρέφει τα αρχεία όλων των ζωνών σας, 25 ανά σελίδα, που παραγγέλθηκαν ανά τομέα, τύπο και όνομα. Το POST δημιουργεί ένα αρχείο όπως το τελικό σημείο καταγραφής ζώνης, αλλά παίρνει τη ζώνη στο σώμα ως ζώνη_uid.

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

Parameter Τύπος Υποχρεούμαι Description
zone string No Μόνο αρχεία της ζώνης με αυτό το uuid
record_type string No Μόνο αρχεία αυτού του τύπου, για παράδειγμα MX (περιπτωση αναίσθητη)
page integer No Αριθμός σελίδας, ξεκινώντας από το 1
curl -X GET "https://admin.vps.org/api/v1/dns-records/?zone=c7a1e3f0-2b4d-4e6a-9c8b-0d1f2e3a4b5c&record_type=A" \
  -H "Authorization: Bearer YOUR_API_TOKEN"

curl -X POST "https://admin.vps.org/api/v1/dns-records/" \
  -H "Authorization: Bearer YOUR_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"zone_uuid": "c7a1e3f0-2b4d-4e6a-9c8b-0d1f2e3a4b5c", "record_type": "TXT", "name": "@", "value": "v=spf1 mx -all", "ttl": 3600}'
{
  "count": 1,
  "next": null,
  "previous": null,
  "results": [
    {
      "uuid": "4b8e2c10-7d3f-4a5b-9e6c-1a2b3c4d5e6f",
      "record_type": "A",
      "name": "www",
      "value": "203.0.113.10",
      "ttl": 3600,
      "priority": null,
      "created_at": "2026-09-14"
    }
  ]
}

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

200 GET: επιτυχία
201 POST: δημιουργία ρεκόρ
400 Σφάλμα επικύρωσης ή Zone_uid λείπει ή δεν λείπει κάποια από τις ζώνες σας
ΠΑΙΡΝΩ PUT PATCH ΔΙΑΓΡΑΦΩ /api/v1/dns-records/{uuid}/

Λήψη, ενημέρωση ή διαγραφή αρχείου

Το GET επιστρέφει ένα ρεκόρ. Το PUT αντικαθιστά και χρειάζεται το αρχείο, το όνομα, την αξία και την ttl. Το PATCH αλλάζει μόνο τα πεδία που στέλνετε. Το DELETE αφαιρεί την εγγραφή και επιστρέφει 204 χωρίς σώμα. Οι αλλαγές δημοσιεύονται αμέσως. Τα αρχεία NS που δημιουργούνται με τη ζώνη είναι αρχεία συστήματος: ενημέρωση ή διαγραφή τους επιστρέφει 403.

Όταν PATCH την προτεραιότητα ενός αρχείου MX ή SRV, στείλετε το αρχείο_type στο ίδιο αίτημα.
curl -X PATCH "https://admin.vps.org/api/v1/dns-records/4b8e2c10-7d3f-4a5b-9e6c-1a2b3c4d5e6f/" \
  -H "Authorization: Bearer YOUR_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"ttl": 300}'

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

200 GET, PUT ή PATCH: το αρχείο
204 Η απάντηση δεν έχει πτώμα.
400 Σφάλμα επικύρωσης
403 Η εγγραφή είναι ένα αρχείο συστήματος, ή το σύμβολο στερείται της απαιτούμενης άδειας
404 Δεν βρέθηκε ή ανήκει σε άλλο λογαριασμό

Χειρισμός λάθους

Τα σφάλματα επικύρωσης επιστρέφουν 400 με το πρόβλημα που κλειδώνεται με το όνομα πεδίου:

{
  "priority": ["MX records require a priority value"]
}

Έλεγχος αλλαγών DNS

Ερώτηση οι marineservers VPS.org άμεσα για να επιβεβαιώσετε μια αλλαγή είναι απευθείας ζωντανά πριν από την αντιπροσωπεία εγγραφής ή cructer σας caches προφθάσει:

dig @ns1.vps.org example.com A
dig @ns2.vps.org example.com MX
dig @ns3.vps.org www.example.com