PlanetHoster API Logo EN

Documentation de l'API de PlanetHoster

Crédit à Luke, Jean-Philippe, Quentin, Gabriel et Jérémie

  • Cette documentation est séparée en commandes GET et POST. Toutes les méthodes API disponibles sont listées sous chaque catégorie.
  • SSL seulement: Nous demandons à ce que toutes les requêtes soients faites avec des connexions encryptées SSL/TLS afin de garantire l'intégraté des données confidentiels.
  • Verbes HTTP supportés sont GET et POST. Si votre client ne supporte pas tous les verbes HTTP vous pouvez passez outre le verbe avec le X-HTTP-Verb header HTTP.
  • Sauf si spécifié de façon différente dans la documentation de la méthode, tous les appels API réussis vont retourner un code HTTP avec un objet JSON.
  • Les erreurs sont retournées avec un code HTTP 4XX ou 5XX, un objet JSON avec les propriétés "error" (un message d'erreur) and "error_code" (optionnel, un integer).
  • Chaque string passé à/depuis l'API à besoin d'être encodé en UTF-8. Pour compatibilité maximum, vérifiez la normalisation UNF avant d'encoder en UTF-8.
  • L'API envoie des headers ETag et supporte le header If-None-Match
  • Sauf si spécifié autrement, Toutes les méthodes API requièrent une authentification avec un api_user et une api_key
  • Quand vous voulez utiliser l'API, Vous devez spécifier une ou plusieurs IPs qui seront autorisées à accéder à l'API.

L'URL de base du Rest API est:

https://api.planethoster.net/reseller-api/

Compte/Informations

GET /test-connection

Testez la connexion API

GET /tld-prices

Montrez les prix des TLD.

GET /account-info

Informations du compte

GET /check-availability

Vérifier la disponibilité du domaine

GET /domain-info

Information du domaine

Obtenir les informations d'un domaine

GET /get-contact-details

Chercher les informations du contact

GET /get-nameservers

Afficher les nameservers du domaine

GET /get-ph-dns-records

Montrez les enregistrements DNS PlanetHoster

GET /get-registrar-lock

Montrez l'état du status de verrouillage

Sauvegarder/modifier les informations d'un domaine

POST /save-contact-details

Changez les informations de contact

POST /save-nameservers

Faire la mise-à-jour des NameServers

POST /save-ph-dns-records

Faire la mise-à-jour de la zone DNS PlanetHoster

POST /save-registrar-lock

Faire la mise-à-jour du statut de vérouillage du domaine

Autres

POST /email-epp-code

Obtenir l'Authinfo

POST /register-domain

Enregistrer nouveau domaine

POST /renew-domain

Renouvellement d'un domaine existant

POST /transfer-domain

Lancer le transfert d'un nom de domaine

POST /delete-ph-dns-zone

Supprimer la zone DNS PlanetHoster

Voici certains exemples de requêtes utilisant : cURL:

Recevoir informations d'utilisateur :

Show/hide example

curl -X GET \
     -d 'api_key=XXXXX&api_user=XXXXX' \
     "https://api.planethoster.net/reseller-api/test-connection"
HTTP/1.1 200 OK
Content-Type: application/json
date: Dec 14 2018 01:21:09 GMT
---
{
    "message""Connection successful",
    "successful_connection""true",
}

Notre API Web est organisée de telle sorte que l'intégration avec elle est aussi simple que possible. Chaque requête HTTP est soit un GET ou POST, chaque requête nécessite une ` api_key` et un ` api_user`, qui vous sont fournis sur inscription, et la réponse HTTP est toujours formatée en tant que JSON. Des erreurs peuvent survenir, et quand elles surviennent, nous retournons les clés:

error_code: (integer), an error code

et:

error: (string), an error message

Pour chaque commande API qui est décrite ici, Nous vous ferons savoir pour chaque erreur ou condition de succès.

Note: Si ces champs ne sont pas présents dans le JSON retourné, la commande API a réussi. La réussite veut bien sur dire différentes choses pour différentes commandes: pour l'enregistrement des domaines cela veut dire que le domaine à été enregistré avec succès, pour le transfert du domaine cela veut dire que la requête de transfert à été envoyé au bon registraire et pour le renouvellement de domaine, cela veut dire que le domaine à été renouvelé pour le nombre d'années spécifié dans la commande. Une requête `get-nameservers` va simplement retourner les nameservers associé avec le domaine, etc.

Les demandes de l'API consistent de champs (noms paramètres) et leur valeur qui sont envoyées dans soit les paramètres de requête de l'URL ou le corps POST de la requête (pour requêtes GET et POST respectivement). Chaque champ pour chaque commande API est documentée comme ayant un «type», soit comme un string, un integer, un boolean, une date, ou un hashmap (tableau associatif).

Pour les champs string, ce sont simplement les strings eux-mêmes. 
Exemple: "https://api.planethoster.net/domain-reseller/register-domain?sld=mydomain&tld=com"
--
Pour les champs integer, ce sont la représentation en string de l'integer.
Exemple: "https://api.planethoster.net/domain-reseller/register-domain?period=1"
---
Pour les champs boolean, '1' est toujours traité comme 'true', et "" (string vide) est traité comme 'false'.
Exemple: "https://api.planethoster.net/domain-reseller/register-domain?id_protection="
--
Pour les champs 'date', ils sont représentés comme ceci : "YYYY-MM-DD".
Exemple: "https://api.planethoster.net/domain-reseller/register-domain?somedatefield=2017-01-01"
---
Pour les hashmaps, Ils sont représentés comme ceci:
"https://api.planethoster.net/domain-reseller/register-domain?fieldname[key1]=val1&fieldname[key2]=val2"

Notez que tous les noms de champs et leurs valeurs doivent être URL-encoded. Par exemple, en PHP, utilisez les fonctions `urlencode` ou `http_build_query`. Les espaces dans les nom de champs et valeurs peuvent être encodées à `+` ou `%20`. Les deux sont acceptés.

Pour les réponses, qui sont en JSON, toutes les dates sont retournées dans le même format ("YYYY-MM-DD"), en strings. Les booleans sont retournés en JSON `true` et `false`, et les montants monétaires sont retournées en tant que strings formatés comme ceci: "9.99".

Panel revendeur

Notre Panel Revendeur sera votre portail pour la gestion de vos domaines qui auront été revendu avec nous. Depuis le site du Panel Revendeur, vous pourrez renouveler et gérer le cycle de vie des domaines que vous avez avec nous.

Module Registrar WHMCS

Notre module WHMCS offre la possibilité pour nos revendeurs de noms de domaines d'utiliser WHMCS pour enregistrer, renouveler, transférer et gérer des noms de domaines avec PlanetHoster. La première étape pour commencer est de devenir un revendeur de noms de domaines enregistré avec PlanetHoster. Ceci est gratuit, et peut être fait en se connectant à votre compte existant et en cliquant sur l'onglet "Revendeur" dans votre espace membre et en activant votre compte de revendeur de noms de domaines. Si vous n'avez pas un compte PlanetHoster existant, Vous pouvez créer un nouveau compte ici. Àpres que votre compte soit crée et que vous y soyez connecté, vous pouvez suivre les étapes précédentes pour activer votre compte revendeur.

Features:

  • Enregistrement/transfert/renouvellement de domaines
  • Synchronization de domaine automatique (sync)
  • Modifications DNS
  • Modifications de contacts WHOIS
  • Enregistrements privés (Protection ID)
  • Vérouillage/déverruillage du registraire
  • Requête de Auth Code/EPP
  • Gestion DNS (A, AAAA, CNAME, MX, TXT) si les NameServers sont ceux de PlanetHoster (nsa.planethoster.net, nsb.planethoster.net, nsc.planethoster.net)

Développement continu: Ce module est open-source et vous pouvez y contribuer pour le rendre meilleur. Ajoutez une requête de fonctionnalité ou créer une requête pull ici

Installation

Notre module WHMCS est disponible en ligne ici ou ici.

  1. Pour l'installer, simplement bouger ou copier le dossier "planethoster" sous le dossier "(whmcs)/modules/registrars/".
  2. Après cela, dans l'administration WHMCS, cliquez sur "Setup" >> "Products/Services" >> "Domain Registrars" dans le menu déroulant.
  3. Cherchez pour "Planethoster" et cliquez sur le bouton "Activate".
  4. Copiez et coller l' API_User et la API_Key dans le champ text correspondant.
  5. Une fois fait, cliquez sur "Save Changes".
  6. Après cela, dans WHMCS, cliquez sur "Setup" >> "Products/Services" >> "Domain Pricing" dans le menu déroulant.
  7. Ajoutez un nouveau TLD, et configurez Auto Registration à "Planethoster" >> Save Changes.
How-to Setup WHMCS?

Librairies de Langages/GitHub

PlanetHoster à fait repository publiques pour le moment avec la librairie Golang & le module registrar WHMCS

Exemples débutants/QuickStart

  1. Comme mentionné dans notre survol, quand vous enregistrez comme un revendeur avec PlanetHoster, vous recevrez un clé API et un code utilisateur API. Ces deux clés sont essentielles car elles sont requises pour chaque commande que vous envoyez à l'API. Toutes les commandes suivantes seront sous la forme :

    curl -XGET (or POST) -d 'key1=X&key2=Y&key3=Z&api_key=XXXXX&api_user=XXXXX' 'API_URL'
    Ici je vais utiliser XXXXX comme wildcard pour la vraie clé et id.

    Donc, disons que je souhaite enregistrer le domaine testingplanethoster.com. Je voudrais tout d'abord savoir si le domaine est disponible ou non:

    curl -XGET -d 'sld=testingplanethoster&tld=com&api_key=XXXXX&api_user=XXXXX' 'https://api.planethoster.net/reseller-api/check-availability'
    l'API retourne:
    {
        "available"true,
        "message""Available",
        "is_premium"true,
        "premium_register_price""80.00",
        "premium_renew_price""80.00"
    }
    
  2. Heureusement, notre nouveau domaine est disponible, mais il est aussi un domaine premium, qui est plus cher qu'un .com régulier. Étant donné que cela va couter plus que prévu, ce serait une bonne idée de vérifier si nous avons assez de crédit dans notre compte en premier avant de continuer avec l'enregistrement:

    curl -XGET -d 'api_key=XXXXX&api_user=XXXXX' 'https://api.planethoster.net/reseller-api/account-info'
    l'API retourne:
    {
        "message""Account information successfully obtained",
        "credit_remaining""150.00",
        "credit_currency"USD,
        "num_active_orders"2,
        "num_active_domains"2
    }
    
  3. Maintenant que nous savons que nous avons assez de fonds, nous pouvons procéder avec l'enregistrement. Nous devrons entrer l'information du propriétaire du domaine dans la requête et aussi pour combien de temps nous allons enregistrer ce domaine et les NameServers que nous voulons pour utiliser le nouveau domaine. Comme vous pouvez voir, cela fait une requête curl POST assez longue.

    curl -XPOST -d 'id_protection=1&ns1=nsa.planethoster.net&ns2=nsb.planethoster.net&period=1&registrant_address1=123+Cherry+Hill&registrant_city=Laval&registrant_company_name=&registrant_country_code=CA&registrant_email=john%40hancock.com&registrant_first_name=John&registrant_last_name=Hancock&registrant_phone==%2B1.5145555555&registrant_postal_code=11111&registrant_state=Quebec®ister_if_premium=1&sld=testingplanethoster&tld=com&api_key=XXXXX&api_user=XXXXX' 'https://api.planethoster.net/reseller-api/register-domain'
    l'API retourne:
    {
        "message""Domain registration order successfully created",
        "order_id""1112",
        "order_total""80.00",
        "expiry_date""2017-06-14"
    }
    

    Comme vous pouvez le remarquer, J'ai aussi activé la protection ID whois et j'ai eu à spécifier que cela est ok à enregistrer même si cela est un domaine premium.

  4. Nous avons maintenant un nom de domaine enregistré, mias ce n'est pas terminé. Parce que nous voulons se sentir plus sécurisé, nous voulons vérouiller notre domaine en place de telle façon qu'il ne peut être transféré. Pour ce faire, nous émetterons la requête suivante:

    curl -XPOST -d 'lock_action=Lock&sld=testingplanethoster&tld=com&api_key=XXXXX&api_user=XXXXX' 'https://api.planethoster.net/reseller-api/save-registrar-lock'
    l'API retourne:
    {
        "message""Lock status successfully saved (Locked)",
        "is_locked"true
    }
    
  5. Comme vous avez peut-être déjà remarqué, quand on enregistre le domaine, nous configurons les NameServers à nsa et nsb.planethoster.net . Ceci nous laisse contrôler enregistrements de zone DNS à travers l'API, comme ce l'est sur les nameservers PlanetHoster. Nous allons créer un enregistrement A et un enregistrement MX, qui devraient être un besoin basique pour un site avec des mails..

    curl -XPOST -d 'hostname1=testingplanethoster.com&address1=192.168.0.1&type1=A&hostname2=testingplanethoster.com&address2=mail.testingplanethoster.com&priority3=0&type3=MX&sld=mydomainname&tld=com&api_key=XXXXX&api_user=XXXXX'
    l'API retourne:
    {
        "message""Successfully updated DNS record(s)",
    }
    
  6. Avançons dans le temps un peu, un an plus tard. vous voudrez renouveler le domaine pour, disons, 2 ans. Voici la requête qui va nous laisser faire ceci.

    curl -XPOST -d 'sld=testingplanethoster&tld=com&period=2&api_key=XXXXX&api_user=XXXXX' 'https://api.planethoster.net/reseller-api/renew-domain'
    l'API retourne:
    {
        "message""Domain renewal order created successfully",
        "order_id""1212"
        "order_total""160.00"
    }
    

    Ceci devrait couvrir les bases de l'utilisation de l'API. Il y a toutefois plusieurs autres méthodes de disponibles qui couvrent une variété d'opérations.Je vous suggère de lire leur documentations pour avoir une meilleure idée de quoi notre API peut faire pour vous.

Libriaire Golang pour l'API

Go (Souvent désigné comme golang) est un langage de programmation open source créé Google en 2007 par Robert Griesemer , Rob Pike et Ken Thompson. Il est une compilé , statiquement écrit dans la tradition de Algol et C, avec la collecte des ordures, écriture structurelle limitée , sécurité de la mémoire et caractéristiques de programmation de style CSP .

Exemple main.go:

package main

import (
	"log"
	"github.com/PlanetHoster/api_Golang/phapi"
)

const (
	APIKEY  = "mykey"
	APIUSER = "myuser"
)

func main() {
	sld := "exemple"
	tld := "com"
	//Aucune validation n'est faite à ce point
	api := phapi.New(APIKEY, APIUSER)

	//Vérifie si la connexion est valide
	if err := api.Test(); err != nil {
		log.Fatalln("Erreur de connexion", err)
	} else {
		log.Println("Connexion réussi")
	}

	//Retrouve les informations de votre compte revendeur
	log.Println(api.AccountInfo())

	//Vérifie la disponibiltié d'un domain
	log.Println(api.DomainAvailable(sld, tld))

	//Plus d'information sur un domaine
	log.Println(api.DomainInfo(sld, tld))

	//Retourne les informations du WHOIS du domaine
	log.Println(api.Whois(sld, tld))

	//Retourne les nameservers du domaine
	log.Println(api.Nameservers(sld, tld))

	//Si les DNS sont avec PlanetHoster, les retournes
	log.Println(api.DNSRecords(sld, tld))

	//Listes toutes les extensions disponibles
	log.Println(api.TLDPrices())

	//Enregistre un domaine (commenté pour éviter les erreurs)

	/*	domain := phapi.NewDomainData(&phapi.ContactDomain{
			FirstName:   "Gabriel",
			LastName:    "PlanetHoster",
			Email:       "test@monmail.com",
			CompanyName: "",
			Address1:    "123 Chemin des Planètes",
			Address2:    "",
			City:        "Paris",
			PostalCode:  "1234567",
			State:       "Paris",
			CountryCode: "FR",
			Phone:       "0176604143",
		}, "nsa.planethoster.net", "nsb.planethoster.net")
		domain.NS3 = "nsc.planethoster.net"
		fmt.Println(api.RegisterDomain(sld, tld, 1, domain))
	*/
}

Glossaire des termes

    • TLD: Top-level domain, comme '.com', '.ca', '.fr', '.co.uk', etc.
    • SLD: Domaine sans le TLD, comme 'google', 'example', 'mydomain', etc.
    • Opérateur de registraire de nom de domaines: Souvent appelés "registraires", ce sont les organisations qui sont responsables du maintien des données administratives et la gestion de l'enregistrement des noms de domaine pour les TLDs pour lesquels ils sont responsables
    • Registrar de nom de domaine: Souvent appelés "registrars", ce sont des organisations qui permettent aux clients d'enregistrer , de renouveler, de transférer et de gérer les noms de domaine pour divers TLDs. PlanetHoster est un registrar de nom de domaines..
    • Revendeur de nom de domaine: Ce sont des organisations qui utilisent d'autres registrars (au lieu des registres directement) pour leurs enregistrements de domaine , les renouvellements, les transferts et la gestion. Ils achètent des domaines d'un registrar, puis les revendent à leurs clients.
    • Domaines Premium: Ce sont les domaine qui, selon les registraires, sont plus précieux, et donc plus chers pour l'enregistrement, le renouvellement et le transfert.
    • Code EPP: Aussi appelé "Auth Info", c'est le code secret qui est nécessaire afin de transférer votre domaine à un autre registrar. Ce n'est pas tous les TLDs qui ont besoin d'un code pour le transfert, mais la plupart oui.
    • WHOIS: L'information WHOIS est l'Information qui est publique suite à l'enregistrement d'un domaine. Il comprend le nom , l'email, l'adresse physique de la personne inscrite, le registrar , etc.
    • Protection ID: Aussi appelé WHOIS ID Protection, ou similaire, ceci est un service que vous pouvez commander chez un registrar qui remplace vos informations WHOIS avec d'autres informations valides, généralement pour éviter le spam.
    • Nameserver: Les nameservers sont associés à un nom de domaine au niveau du registre, et ils disent aux DNS (Domain Name System) quel serveur DNS à utiliser pour chercher l'adresse IP à lequel votre domaine est associé, entre autres.
    • Zone DNS: Une zone DNS est crée sur les nameserver(s) pour votre domaine pour dire aux clients DNS qui recherchent votre domaine (comme un fureteur web) d'utiliser ce NameServer comme autorité pour savoir ou trouver l'adresse IP associée à votre nom de domaine, entre autres.
    • Requête de transfert de nom de domaine: Une fois qu'une requête de transfert de nom de domaine est faite avec PlanetHoster, le registrant du domaine doit approuver le transfert en vérifiant le mail qu'il ont inscrit dans 'Registrant Email' et suivre les étapes dans ce mail. Une fois cela fait, une requête de transfert est faite depuis PlanetHoster au registre correspondant. La requête n'est pas approuvée imméediatement, Cela peut prendre jusqu'a 5 jours pour être approuvé ou refusé.
    • Verrouillage de domaine: Les nom de domaines verouillés ne peuvent être transférer vers un autre registrar. Ceci est principalement une mesure de précaution pour le registrant, pour que personne ne puisse tenter de transférer leur domaine vers un autre registrar ou sous leur nom. Avant qu'un transfert soit fait, le domaine doit être déverouillé au registrar source.

Champs additionels/TLD

Certains TLDs ont besoin de champs additionels pour être envoyés à l'API lors de l'enregistrement du domaine. Les nom des champs ont besoin d'être URL-encoded, ainsi que la valeur des champs. Par exemple, si vous enregitrez un nom de domaine avec le TLD .us, le champ 'Nexus Category' avec la valeur 'C11':

/register-domain?addtl_fields[Nexus Category]=C11
devient:
/register-domain?addtl_fields[Nexus&20Category]=C11
== .us ==

* Field Name: "Nexus Category"
    - Type: Choice
    - Valid Values: "C11", "C12", "C21", "C31", "C32"
    - Value Descriptions: see https://www.a2hosting.com/kb/getting-started-guide/registering-a-domain1/nexus-codes-and-us-domain-registration
    - Required: False

* Field Name: "Nexus Country"
    - Type: Text
    - Required: True

* Field Name: "Application Purpose"
    - Type: Choice
    - Valid Values: "Business use for profit", "Non-profit business", "Club", "Association", "Religious Organization", "Personal Use", "Educational purposes", "Government purposes"
    - Required: False

== .co.uk ==

* Field Name: "Legal Type"
    - Type: Choice
    - Valid Values: "IND", "FIND", "LTD", "PLC", "PTNR", "LLP", "STRA", "RCHAR", "IP", "SCH", "FOTHER", "GOV", "CRC", "STAT", "OTHER", "FOTHER", "FCORP"
    - Value Descriptions: "UK Individual", "Non-UK Individual (representing self)", "UK Limited Company", "UK Public Limited Company", "UK Partnership", "UK LLP", "UK Sole Trader", "UK Registered Charity", "UK Industrial/Provident Registered Company", "UK School", "Other Foreign", "UK Government Body", "UK Corporation by Royal Charter", "UK Statutory Body", "UK Entity (other)", "Non-UK Organization (other)", "Non-UK Corporation"
    - Required: False

* Field Name: "Company ID Number"
    - Type: Text
    - Required: False

* Field Name: "Registrant Name"
    - Type: Text
    - Required: True

* Field Name: "WHOIS Opt-out"
    - Type: Boolean
    - Valid Values: '1', ''

== .net.uk ==

* Field Name: "Legal Type"
    - Type: Choice
    - Valid Values: "IND", "FIND", "LTD", "PLC", "PTNR", "LLP", "STRA", "RCHAR", "IP", "SCH", "FOTHER", "GOV", "CRC", "STAT", "OTHER", "FOTHER", "FCORP"
    - Value Descriptions: "UK Individual", "Non-UK Individual (representing self)", "UK Limited Company", "UK Public Limited Company", "UK Partnership", "UK LLP", "UK Sole Trader", "UK Registered Charity", "UK Industrial/Provident Registered Company", "UK School", "Other Foreign", "UK Government Body", "UK Corporation by Royal Charter", "UK Statutory Body", "UK Entity (other)", "Non-UK Organization (other)", "Non-UK Corporation"
    - Required: False

* Field Name: "Company ID Number"
    - Type: Text
    - Required: False

* Field Name: "Registrant Name"
    - Type: Text
    - Required: True

== .org.uk ==

* Field Name: "Legal Type"
    - Type: Choice
    - Valid Values: "IND", "FIND", "LTD", "PLC", "PTNR", "LLP", "STRA", "RCHAR", "IP", "SCH", "FOTHER", "GOV", "CRC", "STAT", "OTHER", "FOTHER", "FCORP"
    - Value Descriptions: "UK Individual", "Non-UK Individual (representing self)", "UK Limited Company", "UK Public Limited Company", "UK Partnership", "UK LLP", "UK Sole Trader", "UK Registered Charity", "UK Industrial/Provident Registered Company", "UK School", "Other Foreign", "UK Government Body", "UK Corporation by Royal Charter", "UK Statutory Body", "UK Entity (other)", "Non-UK Organization (other)", "Non-UK Corporation"
    - Required: False

* Field Name: "Company ID Number"
    - Type: Text
    - Required: False

* Field Name: "Registrant Name"
    - Type: Text
    - Required: True

== me.uk ==

* Field Name: "Legal Type"
    - Type: Choice
    - Valid Values: "IND", "FIND", "LTD", "PLC", "PTNR", "LLP", "STRA", "RCHAR", "IP", "SCH", "FOTHER", "GOV", "CRC", "STAT", "OTHER", "FOTHER", "FCORP"
    - Value Descriptions: "UK Individual", "Non-UK Individual (representing self)", "UK Limited Company", "UK Public Limited Company", "UK Partnership", "UK LLP", "UK Sole Trader", "UK Registered Charity", "UK Industrial/Provident Registered Company", "UK School", "Other Foreign", "UK Government Body", "UK Corporation by Royal Charter", "UK Statutory Body", "UK Entity (other)", "Non-UK Organization (other)", "Non-UK Corporation"
    - Required: False

* Field Name: "Company ID Number"
    - Type: Text
    - Required: False

* Field Name: "Registrant Name"
    - Type: Text
    - Required: True

== .plc.uk ==

* Field Name: "Legal Type"
    - Type: Choice
    - Valid Values: "IND", "FIND", "LTD", "PLC", "PTNR", "LLP", "STRA", "RCHAR", "IP", "SCH", "FOTHER", "GOV", "CRC", "STAT", "OTHER", "FOTHER", "FCORP"
    - Value Descriptions: "UK Individual", "Non-UK Individual (representing self)", "UK Limited Company", "UK Public Limited Company", "UK Partnership", "UK LLP", "UK Sole Trader", "UK Registered Charity", "UK Industrial/Provident Registered Company", "UK School", "Other Foreign", "UK Government Body", "UK Corporation by Royal Charter", "UK Statutory Body", "UK Entity (other)", "Non-UK Organization (other)", "Non-UK Corporation"
    - Required: False

* Field Name: "Company ID Number"
    - Type: Text
    - Required: False

* Field Name: "Registrant Name"
    - Type: Text
    - Required: True

== .ltd.uk ==

* Field Name: "Legal Type"
    - Type: Choice
    - Valid Values: "IND", "FIND", "LTD", "PLC", "PTNR", "LLP", "STRA", "RCHAR", "IP", "SCH", "FOTHER", "GOV", "CRC", "STAT", "OTHER", "FOTHER", "FCORP"
    - Value Descriptions: "UK Individual", "Non-UK Individual (representing self)", "UK Limited Company", "UK Public Limited Company", "UK Partnership", "UK LLP", "UK Sole Trader", "UK Registered Charity", "UK Industrial/Provident Registered Company", "UK School", "Other Foreign", "UK Government Body", "UK Corporation by Royal Charter", "UK Statutory Body", "UK Entity (other)", "Non-UK Organization (other)", "Non-UK Corporation"
    - Required: False

* Field Name: "Company ID Number"
    - Type: Text
    - Required: False

* Field Name: "Registrant Name"
    - Type: Text
    - Required: True

== .uk ==

* Field Name: "Legal Type"
    - Type: Choice
    - Valid Values: "IND", "FIND", "LTD", "PLC", "PTNR", "LLP", "STRA", "RCHAR", "IP", "SCH", "FOTHER", "GOV", "CRC", "STAT", "OTHER", "FOTHER", "FCORP"
    - Value Descriptions: "UK Individual", "Non-UK Individual (representing self)", "UK Limited Company", "UK Public Limited Company", "UK Partnership", "UK LLP", "UK Sole Trader", "UK Registered Charity", "UK Industrial/Provident Registered Company", "UK School", "Other Foreign", "UK Government Body", "UK Corporation by Royal Charter", "UK Statutory Body", "UK Entity (other)", "Non-UK Organization (other)", "Non-UK Corporation"
    - Required: False

* Field Name: "Company ID Number"
    - Type: Text
    - Required: False

* Field Name: "Registrant Name"
    - Type: Text
    - Required: True

== .ca ==

* Field Name: "Legal Type"
    - Type: Choice
    - Valid Values: "CCO", "CCT", "RES", "GOV", "EDU", "ASS", "HOP", "PRT", "TDM", "TRD", "PLT", "LAM", "TRS", "ABO", "INB", "LGR", "OMK", "MAJ"
    - Value Descriptions: "Corporation (Canada or Canadian province or territory)", "Canadian citizen", "Permanent Resident of Canada", "Government or government entity in Canada", "Canadian Educational institution", "Canadian Unincorporated Association", "Canadian Hospital", "Partnership Registered in Canada", "Trade-mark registered in Canada (by a non-Canadian owner)", "Canadian Trade union", "Canadian Political party", "Canadian Library Archive or Museum", "Trust established in Canada", "Aboriginal Peoples (individuals or groups) indigenous to Canada", "Indian Band recognized by the Indian Act of Canada", "Legal Representative of a Canadian Citizen or Permanent Resident", "Official mark registered in Canada", "Her Majesty the Queen"
    - Description: Legal type of registrant contact
    - Required: False

* Field Name: "CIRA Agreement"
    - Type: Boolean
    - Valid Values: '1', ''
    - Description: Tick to confirm you agree to the CIRA Registration Agreement shown below
English version
Version française
- Required: True * Field Name: "WHOIS Opt-out" - Type: Boolean - Valid Values: '1', '' - Description: Tick to hide your contact information in CIRA WHOIS (only available to individuals) == .quebec == * Field Name: "Intended use" - Type: Text - Required: True * Field Name: "Variants" - Type: Text - Required: False == .es == * Field Name: "ID Form Type" - Type: Choice - Valid Values: "0", "1", "3" - Value Descriptions: "Generic ID", "VAT ID", "Resident alien ID" - Required: False * Field Name: "ID Form Number" - Type: Text - Required: True * Field Name: "Legal Form" - Type: Choice - Valid Values: "1", "39", "47", "59", "68", "124", "150", "152", "164", "181", "197", "203", "229", "269", "286", "365", "434", "436", "439", "476", "510", "524", "525", "554", "560", "562", "566", "608", "612", "713", "717", "744", "745", "746", "747", "877", "878", "879" - Value Descriptions: "Individual", "Economic Interest Group", "Association", "Sports Association", "Professional Association", "Savings Bank", "Community Property", "Community of Owners", "Order or Religious Institution", "Consulate", "Public Law Association", "Embassy", "Local Authority", "Sports Federation", "Foundation", "Mutual Insurance Company", "Regional Government Body", "Central Government Body", "Political Party", "Trade Union", "Farm Partnership", "Public Limited Company", "Sports Association", "Civil Society", "General Partnership", "General and Limited Partnership", "Cooperative", "Worker-owned Company", "Limited Company", "Spanish Office", "Temporary Alliance of Enterprises", "Worker-owned Limited Company", "Regional Public Entity", "National Public Entity", "Local Public Entity", "Others", "Designation of Origin Supervisory Council", "Entity Managing Natural Areas" - Required: True * Field Name: "Admin Id" - Type: Text - Required: True * Field Name: "Admin Id Type" - Type: Choice - Valid Values: "0", "1", "3" - Value Descriptions: "Generic ID", "National Identity", "Resident alien ID" - Required: True * Field Name: "Terms and Conditions" - Type: Choice - Valid Values: "", "1" - Value Descriptions: "Please Select", "I agree to the terms and conditions" - Required: True == .sg == * Field Name: "RCB Singapore ID" - Type: Text - Description: RCB/Singapore ID - Required: True * Field Name: "Registrant Type" - Type: Choice - Valid Values: "Individual", "Organisation" - Required: False == .com.sg == * Field Name: "RCB Singapore ID" - Type: Text - Description: RCB/Singapore ID - Required: True * Field Name: "Registrant Type" - Type: Choice - Valid Values: "Individual", "Organisation" - Required: False == .edu.sg == * Field Name: "RCB Singapore ID" - Type: Text - Description: RCB/Singapore ID - Required: True * Field Name: "Registrant Type" - Type: Choice - Valid Values: "Individual", "Organisation" - Required: False == .net.sg == * Field Name: "RCB Singapore ID" - Type: Text - Description: RCB/Singapore ID - Required: True * Field Name: "Registrant Type" - Type: Choice - Valid Values: "Individual", "Organisation" - Required: False == .org.sg == * Field Name: "RCB Singapore ID" - Type: Text - Description: RCB/Singapore ID - Required: True * Field Name: "Registrant Type" - Type: Choice - Valid Values: "Individual", "Organisation" - Required: False == .per.sg == * Field Name: "RCB Singapore ID" - Type: Text - Description: RCB/Singapore ID - Required: True * Field Name: "Registrant Type" - Type: Choice - Valid Values: "Individual", "Organisation" - Required: False == .tel == * Field Name: "Legal Type" - Type: Choice - Valid Values: "Natural Person", "Legal Person" - Required: False * Field Name: "WHOIS Opt-out" - Type: Boolean - Valid Values: '1', '' == .it == * Field Name: "Type of Registrant Entity" - Type: Choice - Valid Values: "1", "2", "3", "4", "5", "6", "7" - Value Descriptions: "Italian and foreign natural persons", "Companies/one man companies", "Freelance workers/professionals", "non-profit organizations", "public organizations", "other subjects", "non natural foreigners" - Description: Legal type of registrant - Required: False * Field Name: "Tax ID" - Type: Text - Required: True * Field Name: "Publish Personal Data" - Type: Boolean - Valid Values: '1', '' * Field Name: "Accept Section 3 of .IT registrar contract" - Type: Boolean - Valid Values: '1', '' * Field Name: "Consent for Processing of Information" - Type: Boolean - Valid Values: '1', '' * Field Name: "Consent for Dissemination and Accessibility via the Internet" - Type: Boolean - Valid Values: '1', '' * Field Name: "Explicit Acceptance of Registry Terms" - Type: Boolean - Valid Values: '1', '' == .de == * Field Name: "Tax ID" - Type: Text - Required: True * Field Name: "Address Confirmation" - Type: Boolean - Valid Values: '1', '' - Description: Please tick to confirm you have a valid German address == .com.au == * Field Name: "Registrant Name" - Type: Text - Required: True * Field Name: "Registrant ID" - Type: Text - Required: True * Field Name: "Registrant ID Type" - Type: Choice - Valid Values: "ABN", "ACN", "Business Registration Number" - Required: False * Field Name: "Eligibility Name" - Type: Text - Required: False * Field Name: "Eligibility ID" - Type: Text - Required: False * Field Name: "Eligibility ID Type" - Type: Choice - Valid Values: "Australian Company Number (ACN)", "ACT Business Number", "NSW Business Number", "NT Business Number", "QLD Business Number", "SA Business Number", "TAS Business Number", "VIC Business Number", "WA Business Number", "Trademark (TM)", "Other - Used to record an Incorporated Association number", "Australian Business Number (ABN)" - Required: False * Field Name: "Eligibility Type" - Type: Choice - Valid Values: "Charity", "Citizen/Resident", "Club", "Commercial Statutory Body", "Company", "Incorporated Association", "Industry Body", "Non-profit Organisation", "Other", "Partnership", "Pending TM Owner ", "Political Party", "Registered Business", "Religious/Church Group", "Sole Trader", "Trade Union", "Trademark Owner", "Child Care Centre", "Government School", "Higher Education Institution", "National Body", "Non-Government School", "Pre-school", "Research Organisation", "Training Organisation" - Required: False * Field Name: "Eligibility Reason" - Type: Choice - Valid Values: "Domain name is an Exact Match Abbreviation or Acronym of your Entity or Trading Name.", "Close and substantial connection between the domain name and the operations of your Entity." == .net.au == * Field Name: "Registrant Name" - Type: Text - Required: True * Field Name: "Registrant ID" - Type: Text - Required: True * Field Name: "Registrant ID Type" - Type: Choice - Valid Values: "ABN", "ACN", "Business Registration Number" - Required: False * Field Name: "Eligibility Name" - Type: Text - Required: False * Field Name: "Eligibility ID" - Type: Text - Required: False * Field Name: "Eligibility ID Type" - Type: Choice - Valid Values: "Australian Company Number (ACN)", "ACT Business Number", "NSW Business Number", "NT Business Number", "QLD Business Number", "SA Business Number", "TAS Business Number", "VIC Business Number", "WA Business Number", "Trademark (TM)", "Other - Used to record an Incorporated Association number", "Australian Business Number (ABN)" - Required: False * Field Name: "Eligibility Type" - Type: Choice - Valid Values: "Charity", "Citizen/Resident", "Club", "Commercial Statutory Body", "Company", "Incorporated Association", "Industry Body", "Non-profit Organisation", "Other", "Partnership", "Pending TM Owner ", "Political Party", "Registered Business", "Religious/Church Group", "Sole Trader", "Trade Union", "Trademark Owner", "Child Care Centre", "Government School", "Higher Education Institution", "National Body", "Non-Government School", "Pre-school", "Research Organisation", "Training Organisation" - Required: False * Field Name: "Eligibility Reason" - Type: Choice - Valid Values: "Domain name is an Exact Match Abbreviation or Acronym of your Entity or Trading Name.", "Close and substantial connection between the domain name and the operations of your Entity." == .org.au == * Field Name: "Registrant Name" - Type: Text - Required: True * Field Name: "Registrant ID" - Type: Text - Required: True * Field Name: "Registrant ID Type" - Type: Choice - Valid Values: "ABN", "ACN", "Business Registration Number" - Required: False * Field Name: "Eligibility Name" - Type: Text - Required: False * Field Name: "Eligibility ID" - Type: Text - Required: False * Field Name: "Eligibility ID Type" - Type: Choice - Valid Values: "Australian Company Number (ACN)", "ACT Business Number", "NSW Business Number", "NT Business Number", "QLD Business Number", "SA Business Number", "TAS Business Number", "VIC Business Number", "WA Business Number", "Trademark (TM)", "Other - Used to record an Incorporated Association number", "Australian Business Number (ABN)" - Required: False * Field Name: "Eligibility Type" - Type: Choice - Valid Values: "Charity", "Citizen/Resident", "Club", "Commercial Statutory Body", "Company", "Incorporated Association", "Industry Body", "Non-profit Organisation", "Other", "Partnership", "Pending TM Owner ", "Political Party", "Registered Business", "Religious/Church Group", "Sole Trader", "Trade Union", "Trademark Owner", "Child Care Centre", "Government School", "Higher Education Institution", "National Body", "Non-Government School", "Pre-school", "Research Organisation", "Training Organisation" - Required: False * Field Name: "Eligibility Reason" - Type: Choice - Valid Values: "Domain name is an Exact Match Abbreviation or Acronym of your Entity or Trading Name.", "Close and substantial connection between the domain name and the operations of your Entity." == .asn.au == * Field Name: "Registrant Name" - Type: Text - Required: True * Field Name: "Registrant ID" - Type: Text - Required: True * Field Name: "Registrant ID Type" - Type: Choice - Valid Values: "ABN", "ACN", "Business Registration Number" - Required: False * Field Name: "Eligibility Name" - Type: Text - Required: False * Field Name: "Eligibility ID" - Type: Text - Required: False * Field Name: "Eligibility ID Type" - Type: Choice - Valid Values: "Australian Company Number (ACN)", "ACT Business Number", "NSW Business Number", "NT Business Number", "QLD Business Number", "SA Business Number", "TAS Business Number", "VIC Business Number", "WA Business Number", "Trademark (TM)", "Other - Used to record an Incorporated Association number", "Australian Business Number (ABN)" - Required: False * Field Name: "Eligibility Type" - Type: Choice - Valid Values: "Charity", "Citizen/Resident", "Club", "Commercial Statutory Body", "Company", "Incorporated Association", "Industry Body", "Non-profit Organisation", "Other", "Partnership", "Pending TM Owner ", "Political Party", "Registered Business", "Religious/Church Group", "Sole Trader", "Trade Union", "Trademark Owner", "Child Care Centre", "Government School", "Higher Education Institution", "National Body", "Non-Government School", "Pre-school", "Research Organisation", "Training Organisation" - Required: False * Field Name: "Eligibility Reason" - Type: Choice - Valid Values: "Domain name is an Exact Match Abbreviation or Acronym of your Entity or Trading Name.", "Close and substantial connection between the domain name and the operations of your Entity." == .id.au == * Field Name: "Registrant Name" - Type: Text - Required: True * Field Name: "Registrant ID" - Type: Text - Required: True * Field Name: "Registrant ID Type" - Type: Choice - Valid Values: "ABN", "ACN", "Business Registration Number" - Required: False * Field Name: "Eligibility Name" - Type: Text - Required: False * Field Name: "Eligibility ID" - Type: Text - Required: False * Field Name: "Eligibility ID Type" - Type: Choice - Valid Values: "Australian Company Number (ACN)", "ACT Business Number", "NSW Business Number", "NT Business Number", "QLD Business Number", "SA Business Number", "TAS Business Number", "VIC Business Number", "WA Business Number", "Trademark (TM)", "Other - Used to record an Incorporated Association number", "Australian Business Number (ABN)" - Required: False * Field Name: "Eligibility Type" - Type: Choice - Valid Values: "Charity", "Citizen/Resident", "Club", "Commercial Statutory Body", "Company", "Incorporated Association", "Industry Body", "Non-profit Organisation", "Other", "Partnership", "Pending TM Owner ", "Political Party", "Registered Business", "Religious/Church Group", "Sole Trader", "Trade Union", "Trademark Owner", "Child Care Centre", "Government School", "Higher Education Institution", "National Body", "Non-Government School", "Pre-school", "Research Organisation", "Training Organisation" - Required: False * Field Name: "Eligibility Reason" - Type: Choice - Valid Values: "Domain name is an Exact Match Abbreviation or Acronym of your Entity or Trading Name.", "Close and substantial connection between the domain name and the operations of your Entity." == .asia == * Field Name: "Legal Type" - Type: Choice - Valid Values: "naturalPerson", "corporation", "cooperative", "partnership", "government", "politicalParty", "society", "institution" - Required: False * Field Name: "Identity Form" - Type: Choice - Valid Values: "passport", "certificate", "legislation", "societyRegistry", "politicalPartyRegistry" - Required: False * Field Name: "Identity Number" - Type: Text - Required: True == .pro == * Field Name: "Profession" - Type: Text - Description: Indicated professional association recognized by government body - Required: True == .coop == * Field Name: "Contact Name" - Type: Text - Description: A sponsor is required to register .coop domains. Please enter the information here - Required: True * Field Name: "Contact Company" - Type: Text - Required: True * Field Name: "Contact Email" - Type: Text - Required: True * Field Name: "Address 1" - Type: Text - Required: True * Field Name: "Address 2" - Type: Text - Required: False * Field Name: "City" - Type: Text - Required: True * Field Name: "State" - Type: Text - Required: False * Field Name: "ZIP Code" - Type: Text - Required: True * Field Name: "Country" - Type: Text - Description: 2 Letter Country Code - Required: True * Field Name: "Phone CC" - Type: Text - Description: Phone Country Code eg 1 for US & Canada, 44 for UK - Required: True * Field Name: "Phone" - Type: Text - Required: True == .be == * Field Name: "VATNO" - Type: Text - Description: VAT number - Required: False == .fr == * Field Name: "Siren" - Type: Text - Required: False - Must Match Regular Expression: \d{3} \d{3} \d{3} == .re == * Field Name: "Siren" - Type: Text - Required: False - Must Match Regular Expression: \d{3} \d{3} \d{3} == .pm == * Field Name: "Siren" - Type: Text - Required: False - Must Match Regular Expression: \d{3} \d{3} \d{3} == .tf == * Field Name: "Siren" - Type: Text - Required: False - Must Match Regular Expression: \d{3} \d{3} \d{3} == .wf == * Field Name: "Siren" - Type: Text - Required: False - Must Match Regular Expression: \d{3} \d{3} \d{3} == .yt == * Field Name: "Siren" - Type: Text - Required: False - Must Match Regular Expression: \d{3} \d{3} \d{3}

En addition avec les codes d'erreur JSON, les erreurs viennent avec un message (error parameter) et un code numérique (error_code parameter). Le message d'erreur est fait pour être lu par un humain, alors que les codes numériques doivent être lu par votre application.

5000 General error
5001 Network issues
5002 Internal error occured
5003 Error authenticating to our API
5004 Not authorized to access our API, or just this API method.
5005 Domain is unavailable for registration or transfer.
5006 Domain doesn't exist in our database.
5007 PlanetHoster doesn't sell this TLD.
5008 Domain is cancelled in PlanetHoster's system.
Retrouvez PlanetHoster sur Google+ et @PlanetHoster et trouvez de la lecture ici et ici TOS