L'URL de base du Rest API est:
https://api.planethoster.net/reseller-api/
Voici certains exemples de requêtes utilisant : cURL:
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: Jan 25 2021 17:28:17 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 noms de champs et valeurs peuvent être encodés à `+` ou `%20`. Les deux sont acceptés.
Pour les réponses, qui sont en JSON, toutes les dates sont retournés 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és en tant que strings formatés comme ceci: "9.99".
Notre Panel Revendeur sera votre portail pour la gestion de vos domaines qui auront été revendus 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.
Notre module WHMCS offre la possibilité pour nos revendeurs de noms de domaine d'utiliser WHMCS pour enregistrer, renouveler, transférer et gérer des noms de domaine avec PlanetHoster. La première étape pour commencer est de devenir un revendeur de noms de domaine 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 domaine. Si vous n'avez pas un compte PlanetHoster existant, Vous pouvez créer un nouveau compte ici. Après que votre compte soit créé et que vous y soyez connecté, vous pouvez suivre les étapes précédentes pour activer votre compte revendeur.
Caractéristiques:
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
Notre module WHMCS est disponible en ligne ici ou ici.
PlanetHoster a fait repository publiques pour le moment avec la librairie Golang & le module registrar WHMCS
Comme mentionné dans notre survol, quand vous enregistrez comme un revendeur avec PlanetHoster, vous recevrez une 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'
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'
{
"available": true,
"message": "Available",
"is_premium": true,
"premium_register_price": "80.00",
"premium_renew_price": "80.00"
}
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 coûter 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'
{
"message": "Account information successfully obtained",
"credit_remaining": "150.00",
"credit_currency": USD,
"num_active_orders": 2,
"num_active_domains": 2
}
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®istrant_address1=123+Cherry+Hill®istrant_city=Laval®istrant_company_name=®istrant_country_code=CA®istrant_email=john%40hancock.com®istrant_first_name=John®istrant_last_name=Hancock®istrant_phone==%2B1.5145555555®istrant_postal_code=11111®istrant_state=Quebec®ister_if_premium=1&sld=testingplanethoster&tld=com&api_key=XXXXX&api_user=XXXXX' 'https://api.planethoster.net/reseller-api/register-domain'
{
"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.
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'
{
"message": "Lock status successfully saved (Locked)",
"is_locked": true
}
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 pour 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'
{
"message": "Successfully updated DNS record(s)",
}
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'
{
"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 disponibles qui couvrent une variété d'opérations. Je vous suggère de lire leur documentation pour avoir une meilleure idée de quoi notre API peut faire pour vous.
Go (Souvent désigné comme golang) est un langage de programmation open source créé par Google en 2007 par Robert Griesemer , Rob Pike et Ken Thompson. Il est 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 .
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)) */ }
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 responsablesRegistrar 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 domaines 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 où 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 a 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édiatement, Cela peut prendre jusqu'à 5 jours pour être approuvé ou refusé.Verrouillage de domaine
: Les nom de domaines verrouillé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éverrouillé au registrar source. Certains TLDs ont besoin de champs additionnels pour être envoyés à l'API lors de l'enregistrement du domaine. Les noms des champs ont besoin d'être URL-encoded, ainsi que la valeur des champs. Par exemple, si vous enregistrez un nom de domaine avec le TLD .us, le champ 'Nexus Category' avec la valeur 'C11':
/register-domain?addtl_fields[Nexus Category]=C11devient:
/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 belowEnglish versionVersion 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. |
L'URL de base du Rest API est:
https://api.planethoster.net/world-api/
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 de leur valeur qui sont envoyées comme paramètres via l'URL (GET) ou le corps (POST). 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".