VPS.org API

REST APIドキュメント

DNS管理API

ドメインの DNS ゾーンとレコードをプログラムで管理します。

エンドポイント 4つのエンドポイント
ベースパス /api/v1/dns-zones
認証 ベイヤートークンが必要

概要

すべてのゾーンはVPS.orgの権威あるネームサーバにホストされ,自動的にBIND9ゾーンファイルを生成し,配置する。

ネームサーバインフラストラクチャ

主要な特徴

認証

すべての DNS API 要求には Bearer トークン認証が必要です。アカウントのダッシュボードから API トークンを生成してください。 /account/developers/ 次の権限を持って:

Authorization: Bearer vps_abc123def456...
重要: API トークンは作成中に一度だけ表示されます。安全に保管してください。トークンを失った場合は、新しいものを作成してください。
得る /api/v1/dns-zones/

すべてのDNSゾーンを一覧表示する

認証されたユーザが所有するすべての DNS ゾーンのページリストを取得します。ドメイン名でフィルタリングをサポートします。

クエリパラメータ

パラメータ タイプ 必須 説明
domain string いや Filter zones by exact domain name (e.g., example.com)

リクエスト例

cURL
Python
JavaScript
curl -X GET "https://admin.vps.org/api/v1/dns-zones/" \
  -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)
print(response.json())
const response = await fetch('https://admin.vps.org/api/v1/dns-zones/', {
  headers: {'Authorization': 'Bearer YOUR_API_TOKEN'}
});

const zones = await response.json();
console.log(zones);

回答例

[
  {
    "uuid": "abc123-def456-ghi789",
    "domain": "example.com",
    "created_at": "2024-01-15T10:30:00Z",
    "record_count": 12
  },
  {
    "uuid": "xyz789-uvw456-rst123",
    "domain": "myapp.io",
    "created_at": "2024-06-20T14:15:00Z",
    "record_count": 8
  }
]

応答フィールド

フィールド タイプ 説明
uuid string Unique zone identifier (used in API requests)
domain string Domain name for this DNS zone
created_at datetime Zone creation timestamp (ISO 8601 format)
record_count integer Total number of DNS records in this zone

応答ステータスコード

200 Successfully retrieved DNS zones list
401 Unauthorized - Invalid or missing API token
403 Forbidden - Token lacks dns:list permission
得る /api/v1/dns-zones/{uuid}/

DNS ゾーンの詳細を取得

特定のDNSゾーンに関する詳細な情報を取得します。すべてのレコードを含む。

パスパラメータ

パラメータ タイプ 必須 説明
uuid string はい Unique zone identifier

回答例

{
  "uuid": "abc123-def456-ghi789",
  "domain": "example.com",
  "created_at": "2024-01-15T10:30:00Z",
  "record_count": 5,
  "records": [
    {
      "uuid": "rec-001",
      "record_type": "A",
      "name": "@",
      "value": "192.0.2.1",
      "ttl": 3600,
      "priority": null,
      "created_at": "2024-01-15T10:30:00Z"
    },
    {
      "uuid": "rec-002",
      "record_type": "MX",
      "name": "@",
      "value": "mail.example.com",
      "ttl": 3600,
      "priority": 10,
      "created_at": "2024-01-15T10:32:00Z"
    }
  ]
}

応答ステータスコード

200 Successfully retrieved zone details
404 Zone not found or not owned by user
ポスト /api/v1/dns-zones/

DNS ゾーンを作成

ドメインのための新しい DNS ゾーンを作成します。ゾーンは直ちに VPS.org のネームサーバに展開されます。

リクエストボディパラメータ

パラメータ タイプ 必須 説明
domain string はい Domain name (e.g., example.com)

リクエスト例

cURL
Python
JavaScript
curl -X POST "https://admin.vps.org/api/v1/dns-zones/" \
  -H "Authorization: Bearer YOUR_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"domain": "newdomain.com"}'
import requests

url = "https://admin.vps.org/api/v1/dns-zones/"
headers = {
    "Authorization": "Bearer YOUR_API_TOKEN",
    "Content-Type": "application/json"
}
data = {"domain": "newdomain.com"}

response = requests.post(url, headers=headers, json=data)
print(response.json())
const response = await fetch('https://admin.vps.org/api/v1/dns-zones/', {
  method: 'POST',
  headers: {
    'Authorization': 'Bearer YOUR_API_TOKEN',
    'Content-Type': 'application/json'
  },
  body: JSON.stringify({domain: 'newdomain.com'})
});

const zone = await response.json();
console.log(zone);

回答例

{
  "uuid": "new-zone-uuid",
  "domain": "newdomain.com",
  "created_at": "2026-01-18T16:45:00Z",
  "record_count": 0,
  "records": []
}

応答ステータスコード

201 DNS zone created successfully
400 Bad Request - Invalid domain name or zone already exists
403 Forbidden - Token lacks dns:create permission
消去 /api/v1/dns-zones/{uuid}/

DNS ゾーンを削除

DNS ゾーンと関連付けられたすべてのレコードを永久に削除します。この操作は元に戻せません。

パスパラメータ

パラメータ タイプ 必須 説明
uuid string はい Unique zone identifier

応答ステータスコード

204 Zone deleted successfully (no response body)
403 Forbidden - Token lacks dns:delete permission
404 Zone not found
得る /api/v1/dns-zones/{uuid}/records/

ゾーンの DNS レコードをリスト

特定のゾーン (ネストされたルート) のすべての DNS レコードを検索します。

パスパラメータ

パラメータ タイプ 必須 説明
uuid string はい Zone UUID

リクエスト例

curl -X GET "https://admin.vps.org/api/v1/dns-zones/{uuid}/records/" \
  -H "Authorization: Bearer YOUR_API_TOKEN"

回答例

[
  {
    "uuid": "rec-001",
    "record_type": "A",
    "name": "@",
    "value": "192.0.2.1",
    "ttl": 3600,
    "priority": null,
    "created_at": "2024-01-15T10:30:00Z"
  },
  {
    "uuid": "rec-002",
    "record_type": "MX",
    "name": "@",
    "value": "mail.example.com",
    "ttl": 3600,
    "priority": 10,
    "created_at": "2024-01-15T10:32:00Z"
  }
]
ポスト /api/v1/dns-zones/{uuid}/records/

ゾーンで DNS レコードを作成

特定のゾーン (ネストされたルート) に新しい DNS レコードを追加します。

リクエストボディパラメータ

パラメータ タイプ 必須 説明
record_type string はい Record type: A, AAAA, CNAME, MX, TXT, NS, SRV, CAA
name string はい Record name (@ for root, subdomain, or FQDN)
value string はい Record value (IP address, hostname, text)
ttl integer No Time to live in seconds (default: 3600)
priority integer For MX/SRV Priority (required for MX and SRV records)

リクエスト例

cURL
Python
curl -X POST "https://admin.vps.org/api/v1/dns-zones/{uuid}/records/" \
  -H "Authorization: Bearer YOUR_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "record_type": "A",
    "name": "www",
    "value": "192.0.2.1",
    "ttl": 3600
  }'
import requests

url = f"https://admin.vps.org/api/v1/dns-zones/{zone_uuid}/records/"
headers = {
    "Authorization": "Bearer YOUR_API_TOKEN",
    "Content-Type": "application/json"
}
data = {
    "record_type": "A",
    "name": "www",
    "value": "192.0.2.1",
    "ttl": 3600
}

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

応答ステータスコード

201 DNS record created successfully
400 Bad Request - Invalid parameters or validation error (e.g., MX record missing priority)
GET PUT PATCH DELETE /api/v1/dns-records/{uuid}/

DNS レコードの管理 (直接アクセス)

個々のDNSレコードに対してレコードUUIDを使用してフル CRUD 操作を行う。

利用可能な操作

クエリパラメータ (GET /api/v1/dns-records/ の場合)

Parameter タイプ 説明
zone string Filter records by zone UUID
record_type string Filter by record type (A, AAAA, MX, etc.)

例: レコードの TTL を更新

curl -X PATCH "https://admin.vps.org/api/v1/dns-records/{rec-uuid}/" \
  -H "Authorization: Bearer YOUR_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"ttl": 1800}'

Supported DNS Record Types

タイプ Purpose Example Value Priority Required
A Maps domain to IPv4 address 192.0.2.1 いや
AAAA Maps domain to IPv6 address 2001:0db8::1 いや
CNAME Creates alias to another domain example.com いや
MX Mail server for domain mail.example.com はい
TXT Text record (SPF, DKIM, verification) v=spf1 include:_spf.google.com ~all いや
NS Nameserver delegation ns1.example.com いや
SRV Service location record 10 5060 sip.example.com はい
CAA Certificate authority authorization 0 issue "letsencrypt.org" いや

ベストプラクティス

TTL 設定

共通パターン

セキュリティ

エラーハンドリング

よくあるエラー

ステータスコード エラー 溶液
400 無効なドメイン名 ドメインが DNS 名前付け規約に従っているか確認
400 MX レコードには優先度が必要です 含む priority MXとSRVレコードのフィールド
401 無効な API トークン チェックトークンフォーマット (以下で始まる必要があります) vps_)
403 許可がない 必要なものを含む新しいトークンを生成 dns:* 権限
404 ゾーン/レコードが見つかりません UUID を確認し、リソースがあなたのアカウントに属していることを確認します

エラー応答の例

{
  "detail": "MX records require a priority value",
  "error_code": "validation_error",
  "field": "priority"
}

DNS 変更をテスト

レコードの拡散を確認

# Query A record
dig example.com A

# Query specific nameserver
dig @ns1.vps.org example.com

# Query MX records
dig example.com MX

# Check all records
dig example.com ANY

オンラインツールを使う