VPS.org API

REST API 文件

DNS 管理 API

创建 DNS 区域和管理记录。 区域由 ns1. vps.org、 ns2. vps.org 和 ns3. vps.org 服务。

终点 13
基本路径 /api/v1/dns-zones, /api/v1/dns-records

概述

A区拥有一个域的记录。 通过 API 所做的每处更改都会被直接推到 VPS.org 命名器上。 要为这些域域的域服务, 请将其命名器设置在您的登记员上, 地址是 ns1. vps.org, ns2. vps.org 和 ns3. vps.org 。

更改会保存并公布在一个步骤中:如果命名者拒绝更改, 请求返回 502, 并且没有保存。 无法为已经管理的另一个域账户、 其它账户区域的父母或子账户、 或 VPS.org 保留的名称创建区域 。

所需许可: dns:list (GET), dns:create (POST), dns:update (PUT, PATCH, sync), dns:delete (DELETE), dns:*

得到 /api/v1/dns-zones/

列出所有 DNS 区域

返回您所在的区域, 最新的首页, 每页25个。 记录不在此列; 获取单个区域以获取它们 。

查询参数

参数 类型 必需的 说明
domain string 否 无 只返回这个域名的区
page integer 否 无 页码,从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
    }
  ]
}

响应字段

外地 类型 说明
uuid string 区标识符
domain string 域名, 存储在小写
created_at datetime 创建时间(ISO 8601,世界协调时)
record_count integer 临时安全区内的记录数量,包括三个NS记录

响应状态码

200 成功
403 遗失或无效 API 牌标牌, 或者该牌牌缺少必需的许可
邮 /api/v1/dns-zones/

创建 DNS 区

创建并公布一个区域。区域以 Ns1、 ns2 和 ns3.vps.org 的三份NS记录开始,它们是系统记录,不能编辑或删除。

请求体参数

参数 类型 必需的 说明
domain string 是的 域名, 例如. 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 区

从所有三个命名器中删除此区,检查它们中没有一个仍然使用此区,然后删除此区及其记录。如果一个命名器仍然回答此区,请求失败,保留此区,以便您重新尝试。

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 未找到, 或属于另一个账户
得到 邮 /api/v1/dns-zones/{uuid}/records/

区域中的列表或添加记录

获得区域内的每个记录都返回平坦阵列( 不作总结), 按类型和名称分类 。 POST 添加一个记录并发布 。

请求体参数 (POST)

参数 类型 必需的 说明
record_type string 是的 A, AAAA, CNAME, MX, NS, TXT, SRV, PTR, SOA, CAA
name string 是的 @ for the round self, 或贴有www等标签。
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"
}

响应字段

外地 类型 说明
uuid string 记录标识符,用于/api/v1/dns- records/ 终点
priority integer | null 优先使用MX和SRV记录,否则无效
created_at date 仅创建日期(Y-MM-MM-DD),无时间

响应状态码

200 区域记录
201 POST: 创建记录
400 校验错误,例如未知记录类型、缺失的ttl、或无优先权的 MX 或SRV 记录
404 未找到, 或属于另一个账户
邮 /api/v1/dns-zones/{uuid}/sync/

重新宣布一个区

将区域及其所有记录再次推至命名器。 记录更改会自动发布, 但发布是最佳努力, 失败不会让原始请求失败, 所以当更改在 DNS 的搜索中未显示时使用此选项 。 不需要请求机构 。

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"
}
得到 邮 /api/v1/dns-records/

列表或创建跨区的记录

获取您所有区域的记录, 每页25个, 按域名、 类型和名称排序 。 POST 创建了像区记录端点一样的记录, 但将身体中的区域作为区域区 。

查询参数

参数 类型 必需的 说明
zone string 否 无 只有带此区域的记录
record_type string 否 无 只有这种类型的记录,例如 MX( 大小写不敏感)
page integer 否 无 页码,从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 机会:成功
201 POST: 创建记录
400 校验错误, 或区域_ uuid 缺失或不属于您的区域之一
得到 PUT PATCH 删除 /api/v1/dns-records/{uuid}/

Get、更新或删除录音

获取一个记录。 PUT 将替换它, 并需要记录类型、 名称、 值和 ttl。 匹配程序只更改您发送的字段。 DELET 将删除记录, 返回 204, 没有物体。 更改会立即发布。 使用此区域创建的NS 记录是系统记录: 更新或删除它们返回 403。

当您在使用 MX 或SRV 记录时,在同一请求中发送记录类型。一个优先但无记录类型的倾斜体会清除优先级。
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 录音记录
204 删除。 答复没有机构。
400 校验错误
403 记录是系统记录,或没有获得许可
404 未找到, 或属于另一个账户

错误处理

校验错误返回400, 问题由字段名键入 :

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

测试 DNS 变化

直接询问VPS.org 命名器以确认更改,

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