VPS.org API

Dokumentimi i API REST

API-ja e Menaxhimit të DNS-së

Krijo zona DNS dhe menazho regjistrat e tyre. Zonat shërbehen nga ns1.vps.org, ns2.vps.org dhe ns3.vps.org.

Pikat fundore 13
Shtegu Bazë /api/v1/dns-zones, /api/v1/dns-records

Përmbledhje

Një zonë mban regjistrat për një domene. Çdo ndryshim që bën nëpërmjet API shtyhet drejt serverëve të emrave VPS.org menjëherë. Për të shërbyer një domene nga këto zona, vendos serverët e emrave në regjistrin tënd në ns1.vps.org, ns2.vps.org dhe ns3.vps.org.

Ndryshimet ruhen dhe publikohen në një hap: nëse serverat e emrave refuzojnë një ndryshim, kërkesa kthen 502 dhe asgjë nuk ruhet. Një zonë nuk mund të krijohet për një domeni që menaxhohet tashmë nga një llogari tjetër, një prindër ose fëmijë i zonës së një llogarie tjetër, ose një emër i rezervuar VPS.org.

Të drejta të nevojshme: dns:list (GET), dns:create (POST), dns:update (PUT, PATCH, sync), dns:delete (DELETE), dns:*

MERR /api/v1/dns-zones/

Listo të gjitha zonat DNS

Kthen zonat tuaja, më të reja në fillim, 25 për faqe. Regjistrimet nuk përfshihen këtu; merr një zonë të vetme për t'i marrë ato.

Parametrat e pyetjes

Parametrat Lloji E detyrueshme Përshkrimi
domain string Jo. Kthe vetëm zonën me saktësisht këtë emër domeni
page integer Jo. Numri i faqes, duke filluar nga 1

Shembull Kërkese

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

Shembull Përgjigjeje

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

Fushat e Përgjigjes

Fusha Lloji Përshkrimi
uuid string Identifikuesi i zonës
domain string Emri i domain, i ruajtur me shkronja të vogla
created_at datetime Ora e krijimit (ISO 8601, UTC)
record_count integer Numri i regjistrave në zonë, duke përfshirë tre regjistrat NS

Kodet e Statusit të Përgjigjes

200 Suksesi
403 Token i munguar apo i pavlefshëm API, ose token nuk ka të drejtat e kërkuara
POST /api/v1/dns-zones/

Krijo zonën DNS

Krijon një zonë dhe e publikon atë. Zona fillon me tre regjistra NS për ns1, ns2 dhe ns3.vps.org, të cilët janë regjistra të sistemit dhe nuk mund të ndryshohen apo eleminohen.

Parametrat e Trupit të Kërkesës

Parametrat Lloji E detyrueshme Përshkrimi
domain string Po Emri i domain, për shembull 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"}'

Shembull Përgjigjeje

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

Kodet e Statusit të Përgjigjes

201 Zonë e krijuar
400 Mungon ose është i pavlefshëm emri i domain
MERR /api/v1/dns-zones/{uuid}/

Merr hollësitë e zonës DNS

Kthen një zonë me të gjitha regjistrat e saj në një array regjistrash. Përgjigjia ka të njëjtën formë si përgjigjia e krijimit më lart.

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

Kodet e Statusit të Përgjigjes

200 Suksesi
404 Nuk u gjet ose i përket një llogarie tjetër
FSHIR /api/v1/dns-zones/{uuid}/

Elemino zonën DNS

Hiq zonën nga të tre serverët e emrave, kontrollo që asnjëri prej tyre nuk i shërben ende, dhe pastaj elemino zonën dhe regjistrat e saj. Nëse një server emri ende përgjigjet për zonën, kërkesa dështon dhe zona mbahet në mënyrë që të mund të provosh përsëri.

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

Kodet e Statusit të Përgjigjes

204 Përgjigja nuk ka trup.
400 Një server emri ende i shërben zonës. Zona nuk është eleminuar; fusha e hollësishme liston gabimet.
404 Nuk u gjet ose i përket një llogarie tjetër
MERR POST /api/v1/dns-zones/{uuid}/records/

Lista ose Shto rregjistra në një zonë

GET kthen çdo rekord në zonë si një array të thjeshtë (jo të faqesuar), të renditur sipas llojit dhe emrit. POST shton një rekord në zonë dhe e publikon atë.

Parametrat e Trupit të Kërkesës (POST)

Parametrat Lloji E detyrueshme Përshkrimi
record_type string Po A, AAAA, CNAME, MX, NS, TXT, SRV, PTR, SOA, CAA
name string Po @ për domenin vetë, ose një etiketë si www. Emrat ruhen me shkronja të vogla.
value string Po Të dhënat e regjistrit, për shembull një adresë IP ose emri i host. Emrat e host nuk kanë nevojë për një pikë pas tyre dhe vlerat TXT nuk kanë nevojë për cot; të dyja shtohen kur regjistri publikohet.
ttl integer Po Koha për të jetuar në sekonda
priority integer Vetëm MX dhe SRV E nevojshme për të dhënat MX dhe SRV dhe injorohet për çdo lloj tjetër. Për SRV, vendos peshën, portën dhe objektivin në vlerë.

Shembull Kërkese

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

Shembull Përgjigjeje

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

Fushat e Përgjigjes

Fusha Lloji Përshkrimi
uuid string Identifikuesi i regjistrit, përdorur nga /api/v1/dns-records/ endpoints
priority integer | null Prioriteti për rekordet MX dhe SRV, përndryshe null
created_at date Vetëm data e krijimit (Y-MM-DD), pa kohë

Kodet e Statusit të Përgjigjes

200 GET: regjistrat e zonës
201 POST: rekordi u krijua
400 Gabim validimi, për shembull një lloj i panjohur rekordi, një ttl që mungon, ose një rekord MX ose SRV pa përparësi
404 Nuk u gjet ose i përket një llogarie tjetër
POST /api/v1/dns-zones/{uuid}/sync/

Ripubliko një zonë

Shpie zonën dhe të gjitha regjistrat e saj tek serverat e emrave përsëri. Ndryshimet në regjistrat publikohen automatikisht, por publikimi është përpjekja më e mirë dhe një dështim nuk dështon kërkesën fillestare, kështu që përdoret kjo kur një ndryshim nuk shfaqet në kërkimet DNS. Nuk nevojitet trup kërkese.

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"
}
MERR POST /api/v1/dns-records/

Lista ose krijo rekorde në zona

GET kthen regjistrat e të gjitha zonave tuaja, 25 për faqe, të renditura sipas domenit, llojit dhe emrit. POST krijon një regjistrim si përfundimi i regjistrave të zonës, por merr zonën në trup si zone_uuid.

Parametrat e pyetjes

Parametrat Lloji E detyrueshme Përshkrimi
zone string Jo. Vetëm regjistrat e zonës me këtë uuid
record_type string Jo. Vetëm të dhënat e këtij lloji, për shembull MX (nuk i dallojnë gërmat e mëdha e të vogla)
page integer Jo. Numri i faqes, duke filluar nga 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"
    }
  ]
}

Kodet e Statusit të Përgjigjes

200 GET: sukses
201 POST: rekordi u krijua
400 Gabim validimi, ose zone_uuid mungon ose nuk është një nga zonat tuaja
MERR PUT PATCH FSHIR /api/v1/dns-records/{uuid}/

Merr, përditëso ose elemino një rekord

GET kthen një rekord. PUT e zëvendëson atë dhe kërkon record_type, emri, vlera dhe ttl. PATCH ndryshon vetëm fushat që dërgoni. DELETE heq rekordin dhe kthen 204 pa trup. Ndryshimet publikohen menjëherë. Regjistrimet NS të krijuara me zonën janë regjistra të sistemit: përditësimi apo eleminimi i tyre kthen 403.

Kur PATCH përparësinë e një rekordi MX ose SRV, dërgo record_type në të njëjtën kërkesë. Një trup PATCH me përparësi por pa record_type pastroi përparësinë.
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}'

Kodet e Statusit të Përgjigjes

200 GET, PUT ose PATCH: rekordi
204 Përgjigja nuk ka trup.
400 Gabim validimi
403 Regjistri është një regjistër sistemi ose token nuk ka të drejtat e kërkuara
404 Nuk u gjet ose i përket një llogarie tjetër

Manipulimi i gabimeve

Gabimet e validimit kthejnë 400 me problemin e kyçur nga emri i fushës:

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

Duke testuar ndryshimet DNS

Kërko serverat e emrave VPS.org drejtpërsëdrejti për të konfirmuar një ndryshim para se të delegohet registrari apo cache e zgjidhjes të arrijë:

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