API DNS

Cet article vous aidera à utiliser notre API DNS.

 

Qu'est-ce que l'API DNS ?

L'API de gestion DNS de BrandShelter, basée sur GraphQL, est une interface de programmation applicative qui permet aux utilisateurs d'automatiser les mises à jour et la gestion des enregistrements DNS pour tous leurs domaines, réduisant ainsi la complexité et les erreurs.

GraphQL est un langage de requête et un runtime pour les API qui offre une approche flexible et efficace pour interroger, mettre à jour et s'abonner aux données. 
Les systèmes basés sur GraphQL communiquent généralement via HTTP et utilisent un point de terminaison unique pour toutes les requêtes et mutations. GraphQL permet aux utilisateurs de ne demander que les données dont ils ont besoin et définit un système de types pour garantir que les données demandées sont au bon format.

L'accès à l'API respecte les permissions de l'utilisateur dont le jeton est utilisé. Les mêmes permissions que pour le portail s'appliquent. Ainsi, chaque utilisateur n'aura pas accès à d'autres domaines / zones / divisions, etc., simplement en utilisant l'API.

 

Sommaire

  • Introduction

    • Point de terminaison API GraphQL
       

  • Autorisation

    • Jetons d'accès

    • JWT (JSON Web Token)

    • HTTP Authentification du Porteur

    • Introspection & Auto Documentation
       

  • Exemples

  • Documentation

 

Introduction

Point de terminaison API GraphQL

Nous proposons un point de terminaison GraphQL pour interagir avec l'API DNS pour nos clients (inscription & connexion requises).

Pour l'environnement de production :

https://secure.brandshelter.com/graphql


Pour l'environnement de démonstration (OTE) :

https://demo.brandshelter.com/graphql

 

Voici une excellente solution pour en savoir plus sur GraphQL :  

 

 

Autorisation

Jetons d'accès

Vous pouvez gérer vos jetons d'accès dans l'application frontend de BrandShelter. La clé d’API (ou clé d’accès) liée au jeton est requise pour générer un JWT valide, utilisé ensuite pour accéder à l’API DNS.

https://secure.brandshelter.com/access_tokens

Cliquez sur le bouton "Créer un nouveau token/jeton d’accès"

  • Saisissez un nom et une date d'expiration pour créer votre token

 

JWT (JSON Web Token) (à générer sur le portail BrandShelter)

Pour obtenir un JWT adapté à l'accès à l'API GraphQL, vous avez besoin d'un utilisateur avec un token/jeton d'accès valide et non expiré. Une fois le token créé, vous pouvez ensuite créer un JWT directement sur votre portail client BrandShelter : https://secure.brandshelter.com/access_tokens

Une fois le token créé, clic droit sur le token ou bien cliquez sur l'icône des 3 barres horizontales pour ouvrir le menu, puis cliquez sur "Générer JWT".

 

Information complémentaire

Le JWT est signé avec le contenu suivant :

  • jti en tant qu'identifiant « globalement unique ».

  • iss et sub en tant que nom d’utilisateur (login).

  • aud la chaîne de caractères « BrandShelter ».

  • nbf doit être un horodatage dans le passé. La revendication "nbf" (not before) identifie le moment avant lequel le JWT n'est pas valide.

  • iat doit être un horodatage dans le passé. La revendication "iat" (issued at) identifie le moment où le JWT a été émis.

  • exp doit être un horodatage dans le futur. La revendication "exp" (expiration time) identifie le moment d'expiration à partir duquel le JWT n'est plus valide.

Ce JWT est signé en utilisant la clé du jeton d'accès avec l'algorithme « HS512 » (HMAC avec SHA-512). 

Certains en-têtes JWT sont définis comme suit :

  • kid doit être le nom de connexion de l'utilisateur et le nom du jeton d'accès séparés par une barre oblique, par exemple, "john.doe@brandshelter.com/ExampleToken".

  • alg doit être « HS512 ».
     

Exemple d'en-tête JWT :

{ "kid": "john.doe@brandshelter.com/ExampleToken", "alg": "HS512" }

 

Exemple de chargement (payload) JWT :

{ "iss": "john.doe@brandshelter.com", "sub": "john.doe@brandshelter.com", "aud": "BrandShelter", "nbf": 1680522050, "exp": 1712102400, "iat": 1680594434, "jti": "BrandShelter-7a589414-d004-46b4-a95f-50b763f678d3" }

 

Vous pouvez utiliser pour créer ou vérifier les JWT.

 

HTTP Authentification du Porteur

Pour l'authentification, vous devez envoyer le JWT dans l'en-tête Authorization lors des requêtes à l'API DNS :

Authorization: Bearer <JWT>

 

Introspection & Auto Documentation

Le système d'introspection GraphQL permet d'interroger des informations sur le schéma disponible. Il existe divers outils et clients capables de générer une documentation API à partir du point de terminaison en direct en utilisant une requête d'introspection. Vous pouvez par exemple utiliser Altair GraphQL Client pour générer et parcourir facilement la documentation de l'API.

 

 

Exemples

query CurrentUser { currentUser { firstname lastname email } }

query DnsZone { dnsZone(domainName: "test-domain-1001.net") { id name zoneType } }

query DnsZones { dnsZones { nodes { id name zoneType } } }

query DnsRecordsByZone { dnsRecordsByZone(domainName: "test-domain-1001.net") { bindSyntax errors fqdn host id locked rdata ttl type } }

query DnsRecordsByZone { dnsRecordsByZone(domainName: "test-domain-1002.net", filters: { recordTypes: ["X-WEB-FWD", "A", "AAAA"] }) { host id locked rdata ttl type } }

mutation CreateDnsRecord { createDnsRecord( input: { type: "MX", dnsZoneId: 2, rdata: "6 mail.foo-1.com." } ) { id bindSyntax } }

mutation UpdateDnsRecord { updateDnsRecord( input: { id: 54, type: "MX", dnsZoneId: 2, rdata: "6 mail.foo-1.com." } ) { id bindSyntax } }

mutation DeleteDnsRecord { deleteDnsRecord(id: 2076) { ids } }

mutation PublishDnsZone { publishDnsZone(domainName: "test-domain-1001.net") { name } }

mutation {
createSecondaryDnsZone(input: {
domainName: "example.com",
managedNameserverSetId: "1",
primaryNameserverIps: ["127.0.0.1"]
}) {
id
name
zoneType
}
}

 

 

Documentation

Vous pouvez télécharger et utiliser la documentation suivante pour l'API DNS :

240813_EN_DNS API Guide.pdf

40627_FR_Premium DNS.pdf

 

 

More articles in this section