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
- Détails de l’endpoint DNS :
- GET /domains
- GET /domains/{domain}
- GET /domains/{domain}/axfr-tsig
- GET /domains/{domain}/rows
- GET /domains/{domain}/rows/{row_id}
- POST /domains/add
- POST /domains/{domain}/commit
- POST /domains/{domain}/copy
- POST /domains/{domain}/axfr-run
- POST /domains/{domain}/axfr-tsig
- POST /domains/{domain}/rows
- POST /domains/{domain}/zone-import
- PATCH /domains/{domain}
- PATCH /domains/{domain}/rows/{row_id}
- DELETE /domains/{domain}
- DELETE /domains/{domain}/rows/{row_id}
- Remarques
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éthode | Endpoint | Description |
|---|---|---|
| GET | /domains | Liste des domaines de l’utilisateur connecté, avec recherche, filtrage, tri et pagination |
| GET | /domains/{domain} | Détail du domaine |
| GET | /domains/{domain}/axfr-tsig | Informations sur la clé TSIG AXFR du domaine |
| GET | /domains/{domain}/rows | Liste des enregistrements DNS du domaine |
| GET | /domains/{domain}/rows/{row_id} | Détail d’un enregistrement DNS |
| POST | /domains/add | Création d’un nouveau domaine |
| POST | /domains/{domain}/commit | Application des modifications en attente du domaine (commit) |
| POST | /domains/{domain}/copy | Création d’une copie du domaine sous un nouveau nom |
| POST | /domains/{domain}/axfr-run | Lancement immédiat d’un transfert AXFR (domaine secondaire) |
| POST | /domains/{domain}/axfr-tsig | Création ou suppression de la clé TSIG AXFR du domaine |
| POST | /domains/{domain}/rows | Ajout d’un enregistrement DNS au domaine |
| POST | /domains/{domain}/zone-import | Import 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éfautpage_limit– facultatif, entier – nombre d’enregistrements par page, 50 par défautorderby– facultatif, chaîne – tri sous la formecolumn [ASC|DESC]; les colonnes prises en charge sontdomainetcreated_date; la valeur par défaut estdomain ASC. Une colonne invalide est ignorée sans message et le tri par défaut est appliqué.
Codes de retour :
1000– OK5001– erreur interne de connexion
Données de la réponse :
domain– tableau de domaines ; chaque élément contientname,status,typetotal– nombre total de domaines correspondant au filtrepage– page courantepage_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– OK2100– paramètre requis manquant2101– paramètre d’entrée invalide2201– TLD non pris en charge2202– nom de domaine invalide3222– 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– OK2334– TSIG AXFR n’est pas configuré pour le domaine2337– commande TSIG AXFR invalide2340– 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 domaineaxfr_tsig_action– action effectuée, toujoursinfoaxfr_tsig_name– nom de la clé TSIGaxfr_tsig_alg– algorithme de la clé TSIGaxfr_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– OK2100– paramètre requis manquant2101– paramètre d’entrée invalide2201– TLD non pris en charge2202– nom de domaine invalide2318– l’opération ne peut pas être effectuée sur un domaine secondaire3222– impossible d’ouvrir le domaine3223– erreur d’autorisation3305– 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ésID,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 domainerow_id– requis, entier (path) – ID de l’enregistrement DNS
Codes de retour :
1000– OK2100– paramètre requis manquant2101– paramètre d’entrée invalide2201– TLD non pris en charge2202– nom de domaine invalide2318– l’opération ne peut pas être effectuée sur un domaine secondaire3222– impossible d’ouvrir le domaine3223– erreur d’autorisation3305– le domaine est verrouillé3306– le domaine est supprimé3309– aucun enregistrement ne porte cet ID5001– 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 domainetype– facultatif, chaîne –primaryousecondary, par défautprimaryaxfr_enabled– facultatif, booléen (0/1) – AXFR sortant autorisé, 0 par défautaxfr_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 siaxfr_enabled=1primary_ip– facultatif (requis pourtype=secondary), chaîne – adresse IPv4 du serveur primaire depuis lequel les enregistrements sont transférésprimary_tsig_enabled– facultatif, booléen – exige l’authentification TSIG de l’AXFR entrant (uniquement pourtype=secondary)primary_tsig_name– facultatif (requis siprimary_tsig_enabled=1), chaîne – nom de la clé TSIGprimary_tsig_alg– facultatif (requis siprimary_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-sha512primary_tsig_key– facultatif (requis siprimary_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– OK2100– paramètre requis manquant2101– paramètre d’entrée invalide2201– TLD non pris en charge2202– nom de domaine invalide2301– format invalide du paramètretype2302– le paramètreprimary_ipest manquant2303– format invalide du paramètreprimary_ip2304– format invalide du paramètreaxfr_enabled2305– le paramètre requisaxfr_ipsest manquant2306– format invalide du paramètreaxfr_ips2322– limite de domaines WDNS dépassée pour ce compte2323– modèle introuvable2324– le modèle ne peut servir qu’à créer un domaine primaire2325– aucun modèle n’est défini2330–2333– configuration TSIG invalide (globalement, nom, algorithme, clé)2355– l’adresse IP AXFR n’est pas valide2366–axfr_ipschaîne de plus de 255 caractères2367– aucune adresse IP n’est indiquée pour l’AXFR sortant3302– l’ajout du domaine à WDNS a échoué3303– le domaine existe déjà dans WDNS5001– 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– OK2100– paramètre requis manquant2101– paramètre d’entrée invalide2201– TLD non pris en charge2202– nom de domaine invalide3222– impossible d’ouvrir le domaine3223– erreur d’autorisation3305– 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 sourcename_new– requis, chaîne (corps de la requête) – nom du nouveau domaine
Codes de retour :
1000– OK2100– paramètre requis manquant2101– paramètre d’entrée invalide2201– TLD non pris en charge2202– nom de domaine invalide2320– nom du nouveau domaine invalide ou non pris en charge2321– TLD du nouveau nom de domaine non pris en charge2322– limite d’enregistrements DNS par utilisateur dépassée3222– impossible d’ouvrir le domaine3223– erreur d’autorisation3305– 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– OK2100– paramètre requis manquant2101– paramètre d’entrée invalide2201– TLD non pris en charge2202– nom de domaine invalide2319– ne peut être effectué que sur un domaine secondaire3222– impossible d’ouvrir le domaine3223– erreur d’autorisation3305– 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 domaineaction– facultatif, chaîne (corps de la requête) –create(création/mise à jour) oucancel, par défautcreate; la valeur est mappée en interne sur le paramètre WAPIaxfr_tsig_action
Codes de retour :
1000– OK2335– TSIG AXFR n’a pas été créé pour le domaine2336– TSIG AXFR n’a pas été supprimé pour le domaine2337– commande TSIG AXFR invalide2340– 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 domaineaxfr_tsig_action– action effectuée (create/cancel)axfr_tsig_name– nom de la clé TSIG (uniquement pourcreate)axfr_tsig_alg– algorithme de la clé TSIG (uniquement pourcreate)axfr_tsig_key– valeur de la clé TSIG, base64 (uniquement pourcreate)
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 domainename– 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 nulletype– 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,TXTrdata– 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 placeauth_comment(alias équivalent)
Codes de retour :
1000– OK2100– paramètre requis manquant2101– paramètre d’entrée invalide2201– TLD non pris en charge2202– nom de domaine invalide2298– le paramètreauthor_commentcontient des caractères invalides2309– type d’enregistrement invalide2310– impossible d’ajouter un enregistrement de plus au domaine (limite d’enregistrements atteinte)2311– nom d’enregistrement invalide2312– nom invalide pour ce type d’enregistrement2313– CNAME invalide pour ce nom2314– données d’enregistrement invalides2315– TLD invalide2316– cet enregistrement existe déjà2317– TTL invalide2318– l’opération ne peut pas être effectuée sur un domaine secondaire3222– impossible d’ouvrir le domaine3223– erreur d’autorisation3305– 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 domainerow_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 avecimport_type=text.text– les enregistrements transmis au format BIND dans le paramètrerowssont 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 domaineimport_type– requis, chaîne (corps de la requête) –axfroutextaxfr_ip– requis pourimport_type=axfr, chaîne (corps de la requête) – adresse IPv4 du serveur DNS depuis lequel télécharger les enregistrements via AXFRrows– requis pourimport_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– OK2338– vous n’avez pas le droit de modifier ce domaine2350– valeur du type d’import invalide2351– liste des enregistrements DNS manquante (rowsn’a pas été indiqué avecimport_type=text)2352– impossible d’obtenir des données à importer depuis l’IP indiquée2353– la liste DNS importée contient un enregistrement invalide ; l’import n’a pas été effectué2354– adresse IP AXFR manquante2355– l’adresse IP AXFR n’est pas valide2357– impossible d’obtenir des données à importer depuis le texte2358– 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 nom2363– les enregistrements du même type doivent avoir le même TTL2364– les enregistrements DNS n’ont pas été importés (erreur interne d’import)2365– l’adresse IP AXFR doit être au format IPv42368– 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 avecimport_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 domaineaxfr_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églageaxfr_enabled=1primary_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é TSIGprimary_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– OK2007– taille maximale de la requête dépassée2100– paramètre d’entrée manquant2101– paramètres d’entrée invalides2201– TLD non pris en charge2202– nom de domaine invalide ou non pris en charge2303– format invalide du paramètreprimary_ip2304– format invalide du paramètreaxfr_enabled2305– le paramètre requisaxfr_ipsest manquant2306– format invalide du paramètreaxfr_ips2330–2333– configuration TSIG invalide (globalement, nom, algorithme, clé)3222– impossible d’ouvrir le domaine3223– erreur d’autorisation3304– 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 domainerow_id– requis, entier (path) – ID de l’enregistrement DNSttl– requis, entier (corps de la requête) – nouvelle valeur de TTL en secondesrdata– requis, chaîne (corps de la requête) – nouvelles données de l’enregistrementauthor_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 placeauth_comment.
Codes de retour :
1000– OK2100– paramètre requis manquant2101– paramètre d’entrée invalide2201– TLD non pris en charge2202– nom de domaine invalide2298– le paramètreauthor_commentcontient des caractères invalides2314– données d’enregistrement invalides2316– cet enregistrement existe déjà2317– TTL invalide2318– l’opération ne peut pas être effectuée sur un domaine secondaire3222– impossible d’ouvrir le domaine3223– erreur d’autorisation3305– le domaine est verrouillé3306– le domaine est supprimé3309– aucun enregistrement ne porte cet ID3310– 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– OK2100– paramètre requis manquant2101– paramètre d’entrée invalide2201– TLD non pris en charge2202– nom de domaine invalide ou non pris en charge3222– impossible d’ouvrir le domaine3223– 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 domainerow_id– requis, entier (path) – ID de l’enregistrement DNS
Codes de retour :
1000– OK2100– paramètre requis manquant2101– paramètre d’entrée invalide2201– TLD non pris en charge2202– nom de domaine invalide ou non pris en charge2318– l’opération ne peut pas être effectuée sur un domaine secondaire3222– impossible d’ouvrir le domaine3223– 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 ID5001– 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) et6000(erreur interne d’initialisation de la couche WAPI). Pour les méthodes PATCH/DELETE, si le segment{domain}est absent de l’URL, l’erreur6001est renvoyée (le paramètre requisdomainest manquant). - Une combinaison non reconnue de segments d’URL (par ex.
/domains/{domain}/rowssans{row_id}pour PATCH/DELETE) renvoie toujours4000. 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_ipssoit 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_ipetprimary_tsig_*ne prennent effet que pour les domaines de typesecondary. template_idne s’applique, lors de la création d’un domaine (POST /domains/add), qu’à un domaine primaire (type=primaryou non indiqué). Pour un domaine secondaire, il renvoie l’erreur2324.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:axfrse 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 quetextécrit les enregistrements dans le domaine directement après validation. La procédure habituelle consiste donc à appeler d’abordimport_type=axfr, à vérifier le texte renvoyé et seulement ensuite à l’envoyer commeimport_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ètreauth_commentde même signification.- Le
nameet letyped’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
3223est renvoyée.
