Intégration ISPmanager
NexDNS est entièrement compatible avec l’API DNSmanager, ce qui vous permet de connecter NexDNS à ISPmanager comme serveur DNS secondaire (slave). ISPmanager reste le serveur primaire et, une fois que vous autorisez le transfert de zone (AXFR) depuis l’IP source NexDNS, transfère chaque zone vers NexDNS, vous continuez donc à gérer les enregistrements dans ISPmanager. L’API DNSmanager complète des domaines et des enregistrements est également disponible pour une utilisation directe via un point de terminaison de compatibilité unique.
Point de terminaison
Tous les appels API de compatibilité sont acheminés via un point de terminaison unique :
https://api.nexdns.tech/dnsmgr
Authentification
L’API de compatibilité s’authentifie avec un identifiant et un secret d’intégration dédiés que vous générez dans NexDNS sous Compte → Intégrations (pas le mot de passe de votre compte). ISPmanager les envoie à chaque requête ; vous pouvez aussi ouvrir une session manuellement avec la fonction func=auth et réutiliser le jeton renvoyé.
curl -X POST "https://api.nexdns.tech/dnsmgr?func=auth" \
-d "username=your_integration_login" \
-d "password=your_integration_secret"
Réponse en cas de succès (XML) :
<doc><auth id="SESSION_ID"/></doc>
Vous pouvez demander une sortie JSON en ajoutant out=json à toute requête. Les tentatives de connexion échouées répétées sont temporairement limitées.
Fonctions prises en charge
L’API de compatibilité distribue les opérations en fonction du paramètre de requête func :
| Fonction | Description de la fonction |
|---|---|
auth |
Ouvrir une session avec l’identifiant et le secret d’intégration |
domain |
Lister tous les domaines du compte authentifié |
domain.edit |
Créer ou mettre à jour un domaine (avec sok=ok) ; lorsque ISPmanager envoie son IP primaire, NexDNS crée une zone secondaire qui se transfère depuis ISPmanager. Sans sok, renvoie les informations du domaine |
domain.delete |
Supprimer un domaine (passer elid=domain.name) |
domain.refresh |
Forcer une zone secondaire à se retransférer immédiatement depuis ISPmanager (passer elid=domain.name). ISPmanager appelle cette fonction après une modification des enregistrements |
domain.record |
Lister les enregistrements d’un domaine (passer elid=domain.name) |
domain.record.edit |
Créer ou mettre à jour un enregistrement (avec sok=ok) |
domain.record.delete |
Supprimer un enregistrement (passer elid et rkey) |
dnsparam |
Obtenir la configuration des serveurs de noms pour votre compte |
slaveserver |
Lister les serveurs de noms assignés à vos zones |
Connecter ISPmanager à NexDNS
Pour connecter ISPmanager à NexDNS :
- Créez un compte NexDNS sur nexdns.tech et choisissez un plan incluant l’intégration ISPmanager et le DNS secondaire.
- Configurez l’intégration dans NexDNS : ouvrez Compte → Intégrations, cliquez sur Générer un secret, puis activez l’accès ISPmanager (désactivé par défaut). Ce canal contourne l’authentification à deux facteurs : vous pouvez donc, si vous le souhaitez, le limiter à une adresse IP fixe.
- Dans ISPmanager, ajoutez NexDNS comme serveur DNS secondaire (slave) pour vos domaines (Noms de domaine → serveurs de noms secondaires).
-
Saisissez les détails de connexion :
- URL :
https://api.nexdns.tech/dnsmgr - Identifiant : votre identifiant d’intégration depuis Compte → Intégrations
- Secret : votre secret d’intégration
- URL :
- Autorisez le transfert de zone (AXFR) : sur votre serveur DNS primaire, autorisez le transfert de zone depuis l’IP source NexDNS affichée dans Compte → Intégrations. Sans cela, ISPmanager crée la zone secondaire mais elle reste vide.
ISPmanager reste le serveur primaire et vous continuez d'y gérer les enregistrements ; NexDNS récupère chaque zone en tant que secondaire via AXFR. Étape unique de votre côté : sur votre serveur DNS primaire, autorisez le transfert de zone (AXFR) depuis l'IP source NexDNS affichée dans Compte → Intégrations, sinon les zones restent vides. L'authentification utilise l'identifiant et le secret d'intégration de Compte → Intégrations ; assurez-vous que l'accès ISPmanager est activé et que votre offre inclut le DNS secondaire.
Paramètres des enregistrements
Lors de la création ou de la mise à jour d’enregistrements via domain.record.edit, les paramètres suivants sont utilisés selon le type d’enregistrement :
| Type de paramètre | Paramètres |
|---|---|
A / AAAA |
name, ip (or value), ttl |
CNAME / NS / PTR |
name, value, ttl |
MX |
name, value, priority, ttl |
SRV |
name, value, priority, weight, port, ttl |
TXT |
name, value, ttl |
CAA |
name, caa_value (or value), flag, tag, ttl |
Pour les mises à jour, passez rkey avec l’identifiant de l’enregistrement existant. Omettez rkey (ou envoyez vide) pour créer un nouvel enregistrement.
Format de sortie
Par défaut, toutes les réponses sont renvoyées en XML. Ajoutez out=json à toute requête pour recevoir des réponses JSON à la place.
Gestion des clés API
Les clés API sont utilisées pour authentifier les requêtes vers l’API REST NexDNS. Chaque clé est associée à des permissions spécifiques et peut optionnellement avoir une date d’expiration.
Créer une clé API
Vous pouvez créer des clés API de deux manières :
- Interface du panneau : accédez à Paramètres > Clés API et cliquez sur « Créer une clé API »
- API REST :
POST /v1/account/api-keys(nécessite une clé API existante)
Format de clé
Les clés API suivent le format nxd_ suivi de 40 caractères alphanumériques aléatoires. La clé complète n’est affichée qu’une seule fois lors de la création. NexDNS ne stocke qu’une forme hachée de la clé, elle ne peut donc pas être récupérée si elle est perdue.
nxd_aBcDeFgHiJkLmNoPqRsTuVwXyZ0123456789abcd
Permissions et portées
Chaque clé API doit avoir au moins une permission assignée. Permissions disponibles :
| Nom de la permission | Donne accès à |
|---|---|
zones.read |
Lister les zones, voir les détails des zones, exporter les zones, voir le statut DNSSEC |
zones.write |
Créer des zones, supprimer des zones, activer/désactiver DNSSEC |
records.read |
Lister les enregistrements, voir les enregistrements individuels |
records.write |
Créer, mettre à jour et supprimer des enregistrements |
webhooks.read |
Lister et voir les webhooks |
webhooks.write |
Créer, mettre à jour et supprimer des webhooks |
Nous recommandons de n’accorder à chaque clé que les permissions dont elle a besoin.
Durée et expiration
Les clés API peuvent optionnellement avoir une date d’expiration. Lorsqu’elle est définie, la clé cessera de fonctionner après la date spécifiée (vérifiée à minuit UTC). Les clés expirées renvoient une réponse 401 Unauthorized.
Révoquer une clé
Vous pouvez révoquer toute clé API à tout moment depuis la page Paramètres ou via l’API. La révocation est immédiate et permanente – la clé est supprimée, pas désactivée.
curl -X DELETE "https://api.nexdns.tech/v1/account/api-keys/{id}" \
-H "Authorization: Bearer nxd_your_api_key"
Exigences du plan
L’accès API nécessite un plan d’abonnement qui inclut la fonctionnalité api_access.
Limitation de débit
L’API NexDNS applique des limites de débit pour garantir une utilisation équitable et la stabilité du service. Les limites de débit sont appliquées par compte utilisateur (pas par clé API), donc l’utilisation de plusieurs clés API n’augmente pas votre limite.
Limites
| Portée | Limite | Fenêtre | Politique |
|---|---|---|---|
| Requêtes API | 60 |
1 min (60 s) | Fenêtre glissante |
Les requêtes non authentifiées (ou avec des clés invalides) sont limitées par adresse IP.
En-têtes de limitation de débit
Chaque réponse API inclut des en-têtes indiquant votre statut de limitation de débit actuel :
| En-tête | Description de l’en-tête |
|---|---|
X-RateLimit-Limit |
Nombre maximum de requêtes autorisées dans la fenêtre |
X-RateLimit-Remaining |
Nombre de requêtes restantes dans la fenêtre actuelle |
X-RateLimit-Reset |
Horodatage Unix de réinitialisation de la fenêtre de limitation de débit |
Retry-After |
Secondes à attendre avant de réessayer (présent uniquement sur les réponses 429) |
Dépassement de la limite
Lorsque la limite de débit est dépassée, l’API renvoie 429 Too Many Requests :
{
"status": "error",
"error": {
"code": "rate_limit_exceeded",
"message": "Too many requests. Please retry after {timestamp}."
}
}