REST API – DNS

WEDOS REST API est encore en développement. L’accès et les fonctionnalités peuvent changer sans préavis.

Cet article décrit l’endpoint DNS de WEDOS REST API. Pour WEDOS API (WAPI), voir WAPI – WEDOS DNS.

Vous trouverez les informations de base sur WEDOS REST API dans l’article Manuel WEDOS REST API.

Dans cet article, vous trouverez les informations suivantes :


Accès à l’endpoint DNS

WDNS HTTP REST API v2 sert à gérer les domaines DNS et leurs enregistrements DNS dans le service WEDOS DNS (WDNS). L’API suit les principes REST et communique en JSON.

URL de base et authentification

L’URL de base des endpoints DNS est : https://api.wedos.com/v2/dns

L’authentification repose uniquement sur un token OAuth2 Bearer envoyé dans l’en-tête Authorization: Bearer <TOKEN>. Le token doit disposer du scope wdns . Sans token valide, ou avec un token dépourvu du scope requis, l’API renvoie une erreur d’authentification.

Chaque endpoint prend en charge le mode ?example=1 (ou &example=1 si l’URL contient déjà d’autres paramètres de requête). Elle renvoie un exemple d’appel (une commande curl) pour cet endpoint, sans qu’il soit nécessaire de fournir de vrais paramètres. Un token Bearer valide est requis même dans ce mode.

Aperçu des endpoints

MéthodeEndpointDescription
GET/domainsListe des domaines de l’utilisateur connecté, avec recherche, filtrage, tri et pagination
GET/domains/{domain}Détail du domaine
GET/domains/{domain}/axfr-tsigInformations sur la clé TSIG AXFR du domaine
GET/domains/{domain}/rowsListe des enregistrements DNS du domaine
GET/domains/{domain}/rows/{row_id}Détail d’un enregistrement DNS
POST/domains/addCréation d’un nouveau domaine
POST/domains/{domain}/commitApplication des modifications en attente du domaine (commit)
POST/domains/{domain}/copyCréation d’une copie du domaine sous un nouveau nom
POST/domains/{domain}/axfr-runLancement immédiat d’un transfert AXFR (domaine secondaire)
POST/domains/{domain}/axfr-tsigCréation ou suppression de la clé TSIG AXFR du domaine
POST/domains/{domain}/rowsAjout d’un enregistrement DNS au domaine
POST/domains/{domain}/zone-importImport des enregistrements DNS du domaine (via AXFR ou en collant du texte au format BIND)
PATCH/domains/{domain}Modification des paramètres du domaine
PATCH/domains/{domain}/rows/{row_id}Modification d’un enregistrement DNS existant
DELETE/domains/{domain}Suppression d’un domaine
DELETE/domains/{domain}/rows/{row_id}Suppression d’un enregistrement DNS

Format de la réponse

Toutes les réponses, en cas de succès comme d’erreur, ont la même forme d’objet JSON avec ces clés : code (code de retour), msg (description textuelle du code), request_id (identifiant de la requête) et, facultativement, data (données de la réponse, uniquement si l’opération en renvoie).


GET /domains

Renvoie la liste des domaines de l’utilisateur connecté, avec prise en charge de la recherche, du filtrage, du tri et de la pagination.

Paramètres :

  • search – facultatif, chaîne – recherche dans le nom de domaine (IDN pris en charge)
  • status – facultatif, chaîne – filtre selon l’état du domaine (par ex. active, disabled, deleted)
  • type – facultatif, chaîne – filtre selon le type de domaine (primary, secondary)
  • page – facultatif, entier – numéro de page, 1 par défaut
  • page_limit – facultatif, entier – nombre d’enregistrements par page, 50 par défaut
  • orderby – facultatif, chaîne – tri sous la forme column [ASC|DESC]; les colonnes prises en charge sont domain et created_date; la valeur par défaut est domain ASC. Une colonne invalide est ignorée sans message et le tri par défaut est appliqué.

Codes de retour :

  • 1000 – OK
  • 5001 – erreur interne de connexion

Données de la réponse :

  • domain – tableau de domaines ; chaque élément contient name, status, type
  • total – nombre total de domaines correspondant au filtre
  • page – page courante
  • page_limit – nombre d’enregistrements par page

Exemple :

curl -X GET -H 'Authorization: Bearer <TOKEN>' \
  'https://api.wedos.com/v2/dns/domains?search=domain1&status=active&page=1&page_limit=50'
{
  "code": 1000,
  "msg": "OK",
  "request_id": "f3a9c1e2-7b44-4e21-9c2a-1d6e8a5f3b70",
  "data": {
    "domain": [
      {"name": "domain1.cz", "status": "active", "type": "primary"},
      {"name": "domain1.com", "status": "active", "type": "secondary"}
    ],
    "total": 2,
    "page": 1,
    "page_limit": 50
  }
}

GET /domains/{domain}

Renvoie des informations détaillées sur un domaine.

Paramètres :

  • domain – requis, chaîne (path) – nom de domaine

Codes de retour :

  • 1000 – OK
  • 2100 – paramètre requis manquant
  • 2101 – paramètre d’entrée invalide
  • 2201 – TLD non pris en charge
  • 2202 – nom de domaine invalide
  • 3222 – impossible d’ouvrir le domaine (il n’existe pas, par exemple)
  • 3223 – erreur d’autorisation (le domaine appartient à un autre utilisateur)
  • 3305 – le domaine est verrouillé
  • 3306 – le domaine est supprimé
  • 5001 – erreur interne de connexion

Données de la réponse :

  • domain – objet contenant les détails du domaine : name, status, type, tlock, autocommit, axfr_enabled, axfr_ips, changed, changed_date, commit_date, reload_pending, reload_pending_date, reload_date, disabled_date, enabled_date, add_date, rname, serial, refresh, retry, expire, minimum, rr_cnt, ns_out, ns

Exemple :

curl -X GET -H 'Authorization: Bearer <TOKEN>' \
  'https://api.wedos.com/v2/dns/domains/domain1.tld'
{
  "code": 1000,
  "msg": "OK",
  "request_id": "f3a9c1e2-7b44-4e21-9c2a-1d6e8a5f3b71",
  "data": {
    "domain": {
      "name": "domain1.tld",
      "status": "active",
      "type": "primary",
      "tlock": 0,
      "autocommit": 1,
      "axfr_enabled": 0,
      "axfr_ips": "",
      "changed": 0,
      "changed_date": null,
      "commit_date": "2026-09-30 12:00:00",
      "reload_pending": 0,
      "reload_pending_date": null,
      "reload_date": "2026-09-30 12:01:00",
      "disabled_date": null,
      "enabled_date": null,
      "add_date": "2026-01-15 09:30:00",
      "rname": "wedos.com",
      "serial": 2026093001,
      "refresh": 10800,
      "retry": 3600,
      "expire": 604800,
      "minimum": 3600,
      "rr_cnt": 12,
      "ns_out": 1,
      "ns": ["ns.wedos.cz", "ns.wedos.net", "ns.wedos.eu"]
    }
  }
}

GET /domains/{domain}/axfr-tsig

Renvoie des informations sur la clé TSIG AXFR du domaine (elle sert à authentifier les transferts DNS AXFR/IXFR). Si TSIG n’est pas configuré pour le domaine, l’endpoint renvoie l’erreur 2334.

Paramètres :

  • domain – requis, chaîne (path) – nom de domaine

Codes de retour :

  • 1000 – OK
  • 2334 – TSIG AXFR n’est pas configuré pour le domaine
  • 2337 – commande TSIG AXFR invalide
  • 2340 – nombre maximal de domaines dans une action groupée dépassé
  • autres codes d’erreur liés à l’ouverture du domaine – voir GET /domains/{domain} (par ex. 3222, 3223, 3305, 3306)

Données de la réponse :

  • name – nom de domaine
  • axfr_tsig_action – action effectuée, toujours info
  • axfr_tsig_name – nom de la clé TSIG
  • axfr_tsig_alg – algorithme de la clé TSIG
  • axfr_tsig_key – valeur de la clé TSIG (base64)

Exemple :

curl -X GET -H 'Authorization: Bearer <TOKEN>' \
  'https://api.wedos.com/v2/dns/domains/domain1.tld/axfr-tsig'
{
  "code": 1000,
  "msg": "OK",
  "request_id": "f3a9c1e2-7b44-4e21-9c2a-1d6e8a5f3b72",
  "data": {
    "name": "example.cz",
    "axfr_tsig_action": "info",
    "axfr_tsig_name": "domain1.tld.",
    "axfr_tsig_alg": "hmac-sha256",
    "axfr_tsig_key": "asdfghJKL1234567890."
  }
}

GET /domains/{domain}/rows

Renvoie la liste des enregistrements DNS du domaine. Cette opération ne peut pas être effectuée pour les domaines secondaires (leurs enregistrements sont gérés par le serveur primaire).

Paramètres :

  • domain – requis, chaîne (path) – nom de domaine

Codes de retour :

  • 1000 – OK
  • 2100 – paramètre requis manquant
  • 2101 – paramètre d’entrée invalide
  • 2201 – TLD non pris en charge
  • 2202 – nom de domaine invalide
  • 2318 – l’opération ne peut pas être effectuée sur un domaine secondaire
  • 3222 – impossible d’ouvrir le domaine
  • 3223 – erreur d’autorisation
  • 3305 – le domaine est verrouillé
  • 3306 – le domaine est supprimé
  • 5001 – erreur interne de connexion

Données de la réponse :

  • row – tableau d’enregistrements DNS, chacun avec les clés ID, name, ttl, rdtype, rdata, changed_date, author_comment

Exemple :

curl -X GET -H 'Authorization: Bearer <TOKEN>' \
  'https://api.wedos.com/v2/dns/domains/domain1.tld/rows'
{
  "code": 1000,
  "msg": "OK",
  "request_id": "1d6e8a5f3b73",
  "data": {
    "row": [
      {
        "ID": 123,
        "name": "www",
        "ttl": 1800,
        "rdtype": "A",
        "rdata": "46.28.105.2",
        "changed_date": "2026-09-30 12:00:00",
        "author_comment": "production server"
      },
      {
        "ID": 124,
        "name": "",
        "ttl": 3600,
        "rdtype": "MX",
        "rdata": "10 mail.wedos.com.",
        "changed_date": "2026-09-30 12:00:00",
        "author_comment": ""
      }
    ]
  }
}

GET /domains/{domain}/rows/{row_id}

Renvoie le détail d’un seul enregistrement DNS du domaine.

Paramètres :

  • domain – requis, chaîne (path) – nom de domaine
  • row_id – requis, entier (path) – ID de l’enregistrement DNS

Codes de retour :

  • 1000 – OK
  • 2100 – paramètre requis manquant
  • 2101 – paramètre d’entrée invalide
  • 2201 – TLD non pris en charge
  • 2202 – nom de domaine invalide
  • 2318 – l’opération ne peut pas être effectuée sur un domaine secondaire
  • 3222 – impossible d’ouvrir le domaine
  • 3223 – erreur d’autorisation
  • 3305 – le domaine est verrouillé
  • 3306 – le domaine est supprimé
  • 3309 – aucun enregistrement ne porte cet ID
  • 5001 – erreur interne de connexion

Données de la réponse :

  • row – objet contenant les détails de l’enregistrement : ID, name, ttl, rdtype, rdata, changed_date, author_comment

Exemple :

curl -X GET -H 'Authorization: Bearer <TOKEN>' \
  'https://api.wedos.com/v2/dns/domains/domain1.tld/rows/123'
{
  "code": 1000,
  "msg": "OK",
  "request_id": "f3a9c1e2",
  "data": {
    "row": {
      "ID": 123,
      "name": "www",
      "ttl": 1800,
      "rdtype": "A",
      "rdata": "46.28.105.2",
      "changed_date": "2026-09-30 12:00:00",
      "author_comment": "production server"
    }
  }
}

POST /domains/add

Crée un nouveau domaine dans WDNS, soit comme domaine primaire (les enregistrements DNS sont gérés par WEDOS), soit comme domaine secondaire (les enregistrements sont transférés via AXFR depuis un serveur primaire externe).

Paramètres :

  • name – requis, chaîne – nom de domaine
  • type – facultatif, chaîne – primary ou secondary, par défaut primary
  • axfr_enabled – facultatif, booléen (0/1) – AXFR sortant autorisé, 0 par défaut
  • axfr_ips – facultatif, chaîne ou tableau de chaînes – adresses IP autorisées pour l’AXFR sortant (une chaîne d’adresses séparées par des espaces, ou un tableau JSON d’adresses) ; requis si axfr_enabled=1
  • primary_ip – facultatif (requis pour type=secondary), chaîne – adresse IPv4 du serveur primaire depuis lequel les enregistrements sont transférés
  • primary_tsig_enabled – facultatif, booléen – exige l’authentification TSIG de l’AXFR entrant (uniquement pour type=secondary)
  • primary_tsig_name – facultatif (requis si primary_tsig_enabled=1), chaîne – nom de la clé TSIG
  • primary_tsig_alg – facultatif (requis si primary_tsig_enabled=1), chaîne – algorithme de la clé TSIG ; valeurs prises en charge : hmac-md5, hmac-sha1, hmac-sha224, hmac-sha256, hmac-sha384, hmac-sha512
  • primary_tsig_key – facultatif (requis si primary_tsig_enabled=1), chaîne – valeur de la clé TSIG encodée en base64 (longueur minimale de la clé décodée : 8 octets)
  • template_id – facultatif, entier – ID du modèle utilisé pour créer le domaine ; s’applique uniquement à type=primary

Codes de retour :

  • 1000 – OK
  • 2100 – paramètre requis manquant
  • 2101 – paramètre d’entrée invalide
  • 2201 – TLD non pris en charge
  • 2202 – nom de domaine invalide
  • 2301 – format invalide du paramètre type
  • 2302 – le paramètre primary_ip est manquant
  • 2303 – format invalide du paramètre primary_ip
  • 2304 – format invalide du paramètre axfr_enabled
  • 2305 – le paramètre requis axfr_ips est manquant
  • 2306 – format invalide du paramètre axfr_ips
  • 2322 – limite de domaines WDNS dépassée pour ce compte
  • 2323 – modèle introuvable
  • 2324 – le modèle ne peut servir qu’à créer un domaine primaire
  • 2325 – aucun modèle n’est défini
  • 2330–2333 – configuration TSIG invalide (globalement, nom, algorithme, clé)
  • 2355 – l’adresse IP AXFR n’est pas valide
  • 2366 – axfr_ips chaîne de plus de 255 caractères
  • 2367 – aucune adresse IP n’est indiquée pour l’AXFR sortant
  • 3302 – l’ajout du domaine à WDNS a échoué
  • 3303 – le domaine existe déjà dans WDNS
  • 5001 – erreur interne d’autorisation

Données de la réponse :

  • domain_id – ID interne du domaine nouvellement créé
  • name – nom de domaine

Exemple :

curl -X POST -H 'Authorization: Bearer <TOKEN>' -H 'Content-Type: application/json' \
  'https://api.wedos.com/v2/dns/domains/add' \
  --data '{"name":"domain1.tld","type":"primary"}'

Corps de la requête :

{
  "name": "domain1.tld",
  "type": "primary"
}

Réponse :

{
  "code": 1000,
  "msg": "OK",
  "request_id": "f3a9c1e2-7b44-4e21-9c2a-1d6e8a5f3b75",
  "data": {
    "domain_id": 48213,
    "name": "domain1.tld"
  }
}

POST /domains/{domain}/commit

Applique les modifications en attente du domaine (commit) et les propage aux serveurs DNS de production.

Paramètres :

  • domain – requis, chaîne (path) – nom de domaine

Codes de retour :

  • 1000 – OK
  • 2100 – paramètre requis manquant
  • 2101 – paramètre d’entrée invalide
  • 2201 – TLD non pris en charge
  • 2202 – nom de domaine invalide
  • 3222 – impossible d’ouvrir le domaine
  • 3223 – erreur d’autorisation
  • 3305 – le domaine est verrouillé
  • 3306 – le domaine est supprimé
  • 5001 – erreur interne d’autorisation

Données de la réponse : L’endpoint ne renvoie aucune donnée ; le succès est indiqué par le code 1000.

Exemple :

curl -X POST -H 'Authorization: Bearer <TOKEN>' \
  'https://api.wedos.com/v2/dns/domains/domain1.tld/commit'
{
  "code": 1000,
  "msg": "OK",
  "request_id": "f3a9c1e2-7b44-4e21-9c2a-1d6e8a5f3b76"
}

POST /domains/{domain}/copy

Crée une copie d’un domaine existant (y compris ses enregistrements DNS) sous un nouveau nom.

Paramètres :

  • domain – requis, chaîne (path) – nom du domaine source
  • name_new – requis, chaîne (corps de la requête) – nom du nouveau domaine

Codes de retour :

  • 1000 – OK
  • 2100 – paramètre requis manquant
  • 2101 – paramètre d’entrée invalide
  • 2201 – TLD non pris en charge
  • 2202 – nom de domaine invalide
  • 2320 – nom du nouveau domaine invalide ou non pris en charge
  • 2321 – TLD du nouveau nom de domaine non pris en charge
  • 2322 – limite d’enregistrements DNS par utilisateur dépassée
  • 3222 – impossible d’ouvrir le domaine
  • 3223 – erreur d’autorisation
  • 3305 – le domaine est verrouillé
  • 3306 – le domaine est supprimé
  • 3311 – la copie a échoué
  • 3312 – un domaine portant ce nom existe déjà
  • 5001 – erreur interne d’autorisation

Données de la réponse : L’endpoint ne renvoie aucune donnée ; le succès est indiqué par le code 1000.

Exemple :

curl -X POST -H 'Authorization: Bearer <TOKEN>' -H 'Content-Type: application/json' \
  'https://api.wedos.com/v2/dns/domains/domain1.tld/copy' \
  --data '{"name_new":"domain2.tld"}'

Corps de la requête :

{
  "name_new": "domain2.tld"
}

Réponse :

{
  "code": 1000,
  "msg": "OK",
  "request_id": "f3a9c1e2-7b44-4e21-9c2a-1d6e8a5f3b77"
}

POST /domains/{domain}/axfr-run

Lance immédiatement un transfert AXFR des enregistrements DNS pour un domaine secondaire (en dehors du calendrier habituel).

Paramètres :

  • domain – requis, chaîne (path) – nom de domaine

Codes de retour :

  • 1000 – OK
  • 2100 – paramètre requis manquant
  • 2101 – paramètre d’entrée invalide
  • 2201 – TLD non pris en charge
  • 2202 – nom de domaine invalide
  • 2319 – ne peut être effectué que sur un domaine secondaire
  • 3222 – impossible d’ouvrir le domaine
  • 3223 – erreur d’autorisation
  • 3305 – le domaine est verrouillé
  • 3306 – le domaine est supprimé
  • 5001 – erreur interne d’autorisation

Données de la réponse :

  • next_run – heure de la prochaine mise à jour planifiée

Exemple :

curl -X POST -H 'Authorization: Bearer <TOKEN>' \
  'https://api.wedos.com/v2/dns/domains/domain1.tld/axfr-run'
{
  "code": 1000,
  "msg": "OK",
  "request_id": "f3a9c1e2-7b44-4e21-9c2a-1d6e8a5f3b78",
  "data": {
    "next_run": "2026-10-01 09:15:00"
  }
}

POST /domains/{domain}/axfr-tsig

Crée ou supprime la clé TSIG AXFR du domaine (authentification des transferts AXFR/IXFR sortants).

Paramètres :

  • domain – requis, chaîne (path) – nom de domaine
  • action – facultatif, chaîne (corps de la requête) – create (création/mise à jour) ou cancel, par défaut create; la valeur est mappée en interne sur le paramètre WAPI axfr_tsig_action

Codes de retour :

  • 1000 – OK
  • 2335 – TSIG AXFR n’a pas été créé pour le domaine
  • 2336 – TSIG AXFR n’a pas été supprimé pour le domaine
  • 2337 – commande TSIG AXFR invalide
  • 2340 – nombre maximal de domaines dans une action groupée dépassé
  • autres codes d’erreur liés à l’ouverture du domaine – voir GET /domains/{domain} (par ex. 3222, 3223, 3305, 3306)

Données de la réponse :

  • name – nom de domaine
  • axfr_tsig_action – action effectuée (create/cancel)
  • axfr_tsig_name – nom de la clé TSIG (uniquement pour create)
  • axfr_tsig_alg – algorithme de la clé TSIG (uniquement pour create)
  • axfr_tsig_key – valeur de la clé TSIG, base64 (uniquement pour create)

Exemple :

curl -X POST -H 'Authorization: Bearer <TOKEN>' -H 'Content-Type: application/json' \
  'https://api.wedos.com/v2/dns/domains/domain1.tld/axfr-tsig' \
  --data '{"action":"create"}'

Corps de la requête :

{
  "action": "create"
}

Réponse :

{
  "code": 1000,
  "msg": "OK",
  "request_id": "f3a9c1e2-7b44-4e21-9c2a-1d6e8a5f3b79",
  "data": {
    "name": "example.cz",
    "axfr_tsig_action": "create",
    "axfr_tsig_name": "example.cz.",
    "axfr_tsig_alg": "hmac-sha256",
    "axfr_tsig_key": "asdfghJKL1234567890"
  }
}

POST /domains/{domain}/rows

Ajoute un nouvel enregistrement DNS au domaine.

Paramètres :

  • domain – requis, chaîne (path) – nom de domaine
  • name – requis, chaîne (corps de la requête) – nom de l’enregistrement ; une chaîne vide désigne un enregistrement au niveau du domaine lui-même (apex)
  • ttl – requis, entier (corps de la requête) – TTL de l’enregistrement en secondes, valeur non nulle
  • type – requis, chaîne (corps de la requête) – type d’enregistrement ; valeurs prises en charge : A, AAAA, ALIAS, CAA, CNAME, DNAME, HTTPS, MX, NAPTR, NS, SRV, SSHFP, TLSA, TXT
  • rdata – requis, chaîne (corps de la requête) – données de l’enregistrement (le format dépend du type d’enregistrement)
  • author_comment – facultatif, chaîne (corps de la requête) – commentaire de l’auteur ; seuls les lettres sans diacritiques, les chiffres et les espaces sont autorisés ; les clients plus anciens peuvent envoyer à la place auth_comment (alias équivalent)

Codes de retour :

  • 1000 – OK
  • 2100 – paramètre requis manquant
  • 2101 – paramètre d’entrée invalide
  • 2201 – TLD non pris en charge
  • 2202 – nom de domaine invalide
  • 2298 – le paramètre author_comment contient des caractères invalides
  • 2309 – type d’enregistrement invalide
  • 2310 – impossible d’ajouter un enregistrement de plus au domaine (limite d’enregistrements atteinte)
  • 2311 – nom d’enregistrement invalide
  • 2312 – nom invalide pour ce type d’enregistrement
  • 2313 – CNAME invalide pour ce nom
  • 2314 – données d’enregistrement invalides
  • 2315 – TLD invalide
  • 2316 – cet enregistrement existe déjà
  • 2317 – TTL invalide
  • 2318 – l’opération ne peut pas être effectuée sur un domaine secondaire
  • 3222 – impossible d’ouvrir le domaine
  • 3223 – erreur d’autorisation
  • 3305 – le domaine est verrouillé
  • 3306 – le domaine est supprimé
  • 3307 – l’ajout de l’enregistrement du domaine a échoué
  • 5001 – erreur interne d’autorisation

Données de la réponse :

  • domain – nom de domaine
  • row_id – ID de l’enregistrement nouvellement créé

Exemple :

curl -X POST -H 'Authorization: Bearer <TOKEN>' -H 'Content-Type: application/json' \
  'https://api.wedos.com/v2/dns/domains/domain1.tld/rows' \
  --data '{"name":"www","ttl":1800,"type":"A","rdata":"46.28.105.2"}'

Corps de la requête :

{
  "name": "www",
  "ttl": 1800,
  "type": "A",
  "rdata": "46.28.105.2"
}

Réponse :

{
  "code": 1000,
  "msg": "OK",
  "request_id": "f3a9c1e2-7b44-4e21-9c2a-1d6e8a5f3b80",
  "data": {
    "domain": "domain1.tld",
    "row_id": 125
  }
}

POST /domains/{domain}/zone-import

Importe les enregistrements DNS du domaine. Deux modes (import_type) sont pris en charge :

  • axfr – l’endpoint tente de télécharger les enregistrements via AXFR depuis l’adresse IP indiquée et les renvoie sous forme de texte au format BIND pour une vérification manuelle. Cet appel n’importe pas automatiquement les enregistrements. Pour les importer, copiez-les et envoyez-les dans un appel distinct avec import_type=text.
  • text – les enregistrements transmis au format BIND dans le paramètre rows sont validés et importés directement dans le domaine.

L’import n’est possible que pour un domaine primaire.

Paramètres :

  • domain – requis, chaîne (path) – nom de domaine
  • import_type – requis, chaîne (corps de la requête) – axfr ou text
  • axfr_ip – requis pour import_type=axfr, chaîne (corps de la requête) – adresse IPv4 du serveur DNS depuis lequel télécharger les enregistrements via AXFR
  • rows – requis pour import_type=text, chaîne (corps de la requête) – enregistrements DNS sous forme de texte au format BIND (pas un tableau JSON, mais une seule chaîne multiligne)

Codes de retour :

  • 1000 – OK
  • 2338 – vous n’avez pas le droit de modifier ce domaine
  • 2350 – valeur du type d’import invalide
  • 2351 – liste des enregistrements DNS manquante (rows n’a pas été indiqué avec import_type=text)
  • 2352 – impossible d’obtenir des données à importer depuis l’IP indiquée
  • 2353 – la liste DNS importée contient un enregistrement invalide ; l’import n’a pas été effectué
  • 2354 – adresse IP AXFR manquante
  • 2355 – l’adresse IP AXFR n’est pas valide
  • 2357 – impossible d’obtenir des données à importer depuis le texte
  • 2358 – impossible d’importer 2 enregistrements identiques (nom, type, données)
  • 2359 – nombre maximal d’enregistrements dépassé
  • 2360 – impossible d’importer un enregistrement CNAME s’il existe un autre enregistrement pour ce nom
  • 2363 – les enregistrements du même type doivent avoir le même TTL
  • 2364 – les enregistrements DNS n’ont pas été importés (erreur interne d’import)
  • 2365 – l’adresse IP AXFR doit être au format IPv4
  • 2368 – l’import n’est autorisé que pour un domaine primaire

Données de la réponse :

  • pour import_type=axfr: name, import_type, axfr_ip, desc (note descriptive), rows (enregistrements téléchargés au format BIND, encadrés par --- BEGIN ---/--- END ---, destinés à être copiés dans un appel suivant avec import_type=text)
  • pour import_type=text (import réussi) : name, import_type, source_rows (texte d’entrée), imported_rows (enregistrements réellement importés, au format BIND)

Exemple :

curl -X POST -H 'Authorization: Bearer <TOKEN>' -H 'Content-Type: application/json' \
  'https://api.wedos.com/v2/dns/domains/domain1.tld/zone-import' \
  --data '{"import_type":"text","rows":"www IN A 46.28.105.2\nmail IN A 46.28.105.3"}'

Corps de la requête :

{
  "import_type": "text",
  "rows": "www IN A 46.28.105.2\nmail IN A 46.28.105.3"
}

Réponse :

{
  "code": 1000,
  "msg": "OK",
  "request_id": "f3a9c1e2-7b44-4e21-9c2a-1d6e8a5f3b81",
  "data": {
    "name": "example.cz",
    "import_type": "text",
    "source_rows": "\n--- BEGIN ---\nwww IN A 46.28.105.2\nmail IN A 46.28.105.3\n--- END ---",
    "imported_rows": "\n--- BEGIN ---\nwww 3600 IN A 46.28.105.2\nmail 3600 IN A 46.28.105.3\n--- END ---"
  }
}

PATCH /domains/{domain}

Modifie les paramètres d’un domaine existant (paramètres AXFR et TSIG). Le nom et le type du domaine ne peuvent pas être modifiés par cette opération.

Paramètres :

  • domain – requis, chaîne (path) – nom de domaine
  • axfr_enabled – facultatif, booléen (0/1) – AXFR sortant autorisé
  • axfr_ips – facultatif, chaîne ou tableau de chaînes – adresses IP autorisées pour l’AXFR sortant (une chaîne d’adresses séparées par des espaces, ou un tableau JSON d’adresses) ; requis lors du réglage axfr_enabled=1
  • primary_ip – facultatif, chaîne – adresse IPv4 du serveur primaire (domaine secondaire uniquement)
  • primary_tsig_enabled – facultatif, booléen – exige l’authentification TSIG de l’AXFR entrant (domaine secondaire uniquement)
  • primary_tsig_name – facultatif, chaîne – nom de la clé TSIG
  • primary_tsig_alg – facultatif, chaîne – algorithme de la clé TSIG (hmac-md5, hmac-sha1, hmac-sha224, hmac-sha256, hmac-sha384, hmac-sha512)
  • primary_tsig_key – facultatif, chaîne – valeur de la clé TSIG, base64

Codes de retour :

  • 1000 – OK
  • 2007 – taille maximale de la requête dépassée
  • 2100 – paramètre d’entrée manquant
  • 2101 – paramètres d’entrée invalides
  • 2201 – TLD non pris en charge
  • 2202 – nom de domaine invalide ou non pris en charge
  • 2303 – format invalide du paramètre primary_ip
  • 2304 – format invalide du paramètre axfr_enabled
  • 2305 – le paramètre requis axfr_ips est manquant
  • 2306 – format invalide du paramètre axfr_ips
  • 2330–2333 – configuration TSIG invalide (globalement, nom, algorithme, clé)
  • 3222 – impossible d’ouvrir le domaine
  • 3223 – erreur d’autorisation
  • 3304 – la mise à jour de l’enregistrement du domaine a échoué
  • 3305 – le domaine est verrouillé
  • 3306 – le domaine est supprimé
  • 5001 – erreur interne d’authentification

Données de la réponse : L’endpoint ne renvoie aucune donnée ; le succès est indiqué par le code 1000.

Exemple :

curl -X PATCH -H 'Authorization: Bearer <TOKEN>' -H 'Content-Type: application/json' \
  'https://api.wedos.com/v2/dns/domains/domain1.tld' \
  --data '{"axfr_enabled":1,"axfr_ips":"46.28.105.2 46.28.105.3"}'

Corps de la requête :

{
  "axfr_enabled": 1,
  "axfr_ips": "46.28.105.2 46.28.105.3"
}

Réponse :

{
  "code": 1000,
  "msg": "OK",
  "request_id": "f3a9c1e2-7b44-4e21-9c2a-1d6e8a5f3b82"
}

PATCH /domains/{domain}/rows/{row_id}

Modifie un enregistrement DNS existant. Le nom et le type de l’enregistrement ne peuvent pas être modifiés par cette opération ; pour les changer, supprimez l’enregistrement d’origine et ajoutez-en un nouveau.

Paramètres :

  • domain – requis, chaîne (path) – nom de domaine
  • row_id – requis, entier (path) – ID de l’enregistrement DNS
  • ttl – requis, entier (corps de la requête) – nouvelle valeur de TTL en secondes
  • rdata – requis, chaîne (corps de la requête) – nouvelles données de l’enregistrement
  • author_comment – facultatif, chaîne (corps de la requête) – commentaire de l’auteur ; seuls les lettres sans diacritiques, les chiffres et les espaces sont autorisés ; les clients plus anciens peuvent envoyer à la place auth_comment .

Codes de retour :

  • 1000 – OK
  • 2100 – paramètre requis manquant
  • 2101 – paramètre d’entrée invalide
  • 2201 – TLD non pris en charge
  • 2202 – nom de domaine invalide
  • 2298 – le paramètre author_comment contient des caractères invalides
  • 2314 – données d’enregistrement invalides
  • 2316 – cet enregistrement existe déjà
  • 2317 – TTL invalide
  • 2318 – l’opération ne peut pas être effectuée sur un domaine secondaire
  • 3222 – impossible d’ouvrir le domaine
  • 3223 – erreur d’autorisation
  • 3305 – le domaine est verrouillé
  • 3306 – le domaine est supprimé
  • 3309 – aucun enregistrement ne porte cet ID
  • 3310 – la modification de l’enregistrement a échoué
  • 5001 – erreur interne d’autorisation

Données de la réponse : L’endpoint ne renvoie aucune donnée ; le succès est indiqué par le code 1000.

Exemple :

curl -X PATCH -H 'Authorization: Bearer <TOKEN>' -H 'Content-Type: application/json' \
  'https://api.wedos.com/v2/dns/domains/domain1.tld/rows/123' \
  --data '{"ttl":3600,"rdata":"46.28.105.3"}'

Corps de la requête :

{
  "ttl": 3600,
  "rdata": "46.28.105.3"
}

Réponse :

{
  "code": 1000,
  "msg": "OK",
  "request_id": "f3a9c1e2-7b44-4e21-9c2a-1d6e8a5f3b83"
}

DELETE /domains/{domain}

Supprime le domaine de WDNS.

Paramètres :

  • domain – requis, chaîne (path) – nom de domaine

Codes de retour :

  • 1000 – OK
  • 2100 – paramètre requis manquant
  • 2101 – paramètre d’entrée invalide
  • 2201 – TLD non pris en charge
  • 2202 – nom de domaine invalide ou non pris en charge
  • 3222 – impossible d’ouvrir le domaine
  • 3223 – accès refusé
  • 3301 – la suppression de l’enregistrement du domaine a échoué
  • 3305 – le domaine est verrouillé
  • 3306 – le domaine est déjà supprimé
  • 5001 – erreur interne d’autorisation

Données de la réponse : L’endpoint ne renvoie aucune donnée ; le succès est indiqué par le code 1000.

Exemple :

curl -X DELETE -H 'Authorization: Bearer <TOKEN>' \
  'https://api.wedos.com/v2/dns/domains/domain1.tld'
{
  "code": 1000,
  "msg": "OK",
  "request_id": "f3a9c1e2-7b44-4e21-9c2a-1d6e8a5f3b84"
}

DELETE /domains/{domain}/rows/{row_id}

Supprime un enregistrement DNS du domaine.

Paramètres :

  • domain – requis, chaîne (path) – nom de domaine
  • row_id – requis, entier (path) – ID de l’enregistrement DNS

Codes de retour :

  • 1000 – OK
  • 2100 – paramètre requis manquant
  • 2101 – paramètre d’entrée invalide
  • 2201 – TLD non pris en charge
  • 2202 – nom de domaine invalide ou non pris en charge
  • 2318 – l’opération ne peut pas être effectuée sur un domaine secondaire
  • 3222 – impossible d’ouvrir le domaine
  • 3223 – accès refusé
  • 3305 – le domaine est verrouillé
  • 3306 – le domaine est supprimé
  • 3308 – la suppression de l’enregistrement a échoué
  • 3309 – aucun enregistrement ne porte cet ID
  • 5001 – erreur interne d’autorisation

Données de la réponse : L’endpoint ne renvoie aucune donnée ; le succès est indiqué par le code 1000.

Exemple :

curl -X DELETE -H 'Authorization: Bearer <TOKEN>' \
  'https://api.wedos.com/v2/dns/domains/domain1.tld/rows/123'
{
  "code": 1000,
  "msg": "OK",
  "request_id": "f3a9c1e2-7b44-4e21-9c2a-1d6e8a5f3b85"
}

Remarques

  • Outre les codes d’erreur indiqués pour chaque endpoint, des erreurs générales de la couche REST, communes à tous les endpoints, peuvent survenir : 2000 (token OAuth2 Bearer manquant ou invalide), 2004 (taille maximale de la requête dépassée – URL/query string ou corps de la requête), 4000 (combinaison inconnue ou non prise en charge de chemin URL et de méthode HTTP), 4001 (la validation des données d’entrée a échoué), 4005 (aucun exemple n’est défini pour cet endpoint avec le mode ?example=1 ) et 6000 (erreur interne d’initialisation de la couche WAPI). Pour les méthodes PATCH/DELETE, si le segment {domain} est absent de l’URL, l’erreur 6001 est renvoyée (le paramètre requis domain est manquant).
  • Une combinaison non reconnue de segments d’URL (par ex. /domains/{domain}/rows sans {row_id} pour PATCH/DELETE) renvoie toujours 4000. Elle ne bascule jamais silencieusement vers une autre opération (par exemple au niveau du domaine entier).
  • La couche REST accepte le paramètre axfr_ips soit comme une chaîne d’adresses IP séparées par des espaces, soit comme un tableau JSON d’adresses. Avant d’appeler la commande WAPI sous-jacente, elle normalise les deux variantes vers un format interne. Une chaîne vide est considérée comme une valeur non renseignée.
  • Les paramètres primary_ip et primary_tsig_* ne prennent effet que pour les domaines de type secondary.
  • template_id ne s’applique, lors de la création d’un domaine (POST /domains/add), qu’à un domaine primaire (type=primary ou non indiqué). Pour un domaine secondaire, il renvoie l’erreur 2324.
  • rr_limit (nombre maximal d’enregistrements DNS pour un domaine) n’est pas un paramètre pris en charge par POST /domains/add. L’endpoint ne l’accepte pas ; la limite est déterminée par le compte ou le modèle.
  • Pour POST /domains/{domain}/zone-import, il est important de distinguer les deux modes du paramètre import_type : axfr se contente de télécharger les enregistrements et de les renvoyer sous forme de texte pour une vérification manuelle (rien n’est importé), tandis que text écrit les enregistrements dans le domaine directement après validation. La procédure habituelle consiste donc à appeler d’abord import_type=axfr , à vérifier le texte renvoyé et seulement ensuite à l’envoyer comme import_type=text.
  • author_comment (lors de l’ajout ou de la modification d’un enregistrement DNS) n’autorise que les lettres sans diacritiques, les chiffres et les espaces. Les clients plus anciens peuvent utiliser à la place le paramètre auth_comment de même signification.
  • Le name et le type d’un enregistrement DNS ne peuvent pas être modifiés via PATCH /domains/{domain}/rows/{row_id}. Pour les changer, supprimez l’enregistrement et ajoutez-le de nouveau.
  • La propriété du domaine est vérifiée dans chaque opération d’après l’utilisateur connecté (identifié à partir du token OAuth2). Si le domaine appartient à un autre utilisateur, l’erreur 3223 est renvoyée.

Cela vous a-t-il été utile ?

Merci pour votre retour !
Sélecteurs génériques
Correspondances exactes uniquement
Rechercher dans le titre
Rechercher dans le contenu
Sélecteurs de type de contenu