VPS.org API

Documentation de l'API REST

API de gestion DNS

Gérez les zones et les enregistrements DNS de vos domaines par programmation.

Points d'extrémité 4 points d'extrémité
Chemin de base /api/v1/dns-zones
Authentification Jeton de porteur requis

Aperçu

L'API DNS assure la gestion complète des zones et des enregistrements DNS. Toutes les zones sont hébergées sur les serveurs de noms autorisés de VPS.org avec la génération et le déploiement automatique de fichiers de zone BIND9.

Infrastructure de serveur de noms

Principales caractéristiques

Authentification

Toutes les requêtes d'API DNS nécessitent l'authentification de jeton Bearer. Générer des jetons d'API à partir de votre tableau de bord de compte à /account/developers/ avec les permissions suivantes:

Exemple

Authorization: Bearer vps_abc123def456...
Important: Les jetons API ne sont affichés qu'une seule fois pendant la création. Conservez-les en toute sécurité. Si vous perdez un jeton, vous devez en générer un nouveau.
OBTENIR /api/v1/dns-zones/

Lister toutes les zones DNS

Récupérer une liste paginée de toutes les zones DNS appartenant à l'utilisateur authentifié. Prend en charge le filtrage par nom de domaine.

Paramètres de requête

Paramètre Taper Requis Désignation des marchandises
domain string Numéro Filter zones by exact domain name (e.g., example.com)

Exemple de requête

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

Exemple de réponse

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

Champs de réponse

Champ Taper Désignation des marchandises
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

Codes d'état de réponse

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

Obtenir les détails de la zone DNS

Récupérer des informations détaillées sur une zone DNS spécifique, y compris tous les enregistrements.

Paramètres de chemin

Paramètre Taper Requis Désignation des marchandises
uuid string Oui Unique zone identifier

Exemple de réponse

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

Codes d'état de réponse

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

Créer une zone DNS

Créez une nouvelle zone DNS pour un domaine. La zone sera immédiatement déployée sur VPS.org serveurs de noms.

Paramètres du corps de la requête

Paramètre Taper Requis Désignation des marchandises
domain string Oui Domain name (e.g., example.com)

Exemple de requête

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

Exemple de réponse

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

Codes d'état de réponse

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

Supprimer la zone DNS

Supprimer définitivement une zone DNS et tous les enregistrements associés. Cette action ne peut pas être annulée.

Paramètres de chemin

Paramètre Taper Requis Désignation des marchandises
uuid string Oui Unique zone identifier

Codes d'état de réponse

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

Liste des enregistrements DNS dans la zone

Récupérer tous les enregistrements DNS pour une zone spécifique (voie de neutralisation).

Paramètres de chemin

Paramètre Taper Requis Désignation des marchandises
uuid string Oui Zone UUID

Exemple de requête

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

Exemple de réponse

[
  {
    "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"
  }
]
POSTE /api/v1/dns-zones/{uuid}/records/

Créer un enregistrement DNS dans la zone

Ajouter un nouvel enregistrement DNS à une zone spécifique (route de neige).

Paramètres du corps de la requête

Paramètre Taper Requis Désignation des marchandises
record_type string Oui Record type: A, AAAA, CNAME, MX, TXT, NS, SRV, CAA
name string Oui Record name (@ for root, subdomain, or FQDN)
value string Oui 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)

Exemple de requête

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

Codes d'état de réponse

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

Gérer les dossiers DNS (Accès direct)

Opérations CRUD complètes sur des enregistrements DNS individuels à l'aide d'un enregistrement UUID.

Opérations disponibles

Paramètres de requête (pour GET /api/v1/dns-records/)

Parameter Taper Désignation des marchandises
zone string Filter records by zone UUID
record_type string Filter by record type (A, AAAA, MX, etc.)

Exemple : Mettre à jour le TTL d'un enregistrement

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

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

Meilleures pratiques

Configuration TTL

Dessins communs

Sécurité

Gestion des erreurs

Erreurs courantes

Code d'état Erreur Solution
400 Nom de domaine non valide S'assurer que le domaine suit les conventions de nommage DNS
400 L'enregistrement MX nécessite une priorité Inclure priority champ pour les enregistrements MX et SRV
401 Jeton API non valide Vérifier le format du jeton (doit commencer par vps_)
403 Manque d'autorisation Générer un nouveau jeton avec le nécessaire dns:* les autorisations
404 Zone/enregistrement non trouvé Vérifiez UUID et assurez-vous que la ressource appartient à votre compte

Exemple de réponse d'erreur

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

Essais des modifications du DNS

Vérifier la propagation des enregistrements

# 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

Utilisation des outils en ligne