Vue d’ensemble

L’enregistrement de domaines débite votre wallet (live ou sandbox). Le prix est reseller_price du plan domaine, ou price si reseller_price est null. En mode sandbox : prix fixe de 5 000 XAF par domaine, aucun enregistrement réel. Scope requis : reseller:domains

Vérifier la disponibilité

GET /api/v1/reseller/domains/check?domain={domain}
curl "https://kennhosting.com/api/v1/reseller/domains/check?domain=mon-client.cm" \
  -H "Authorization: Bearer kh_live_YOUR_TOKEN" \
  -H "Accept: application/json"
Réponse :
{
  "success": true,
  "data": {
    "domain": "mon-client.cm",
    "available": true,
    "price": 5000.0,
    "currency": "XAF"
  }
}
price peut être null si l’extension n’est pas prise en charge par KennHosting.

Enregistrer un domaine

POST /api/v1/reseller/clients/{client_id}/domains
Corps de la requête :
ChampTypeRequisDescription
domainstringOuiNom de domaine à enregistrer
yearsintegerNonDurée en années (défaut : 1)
auto_renewbooleanNonRenouvellement automatique (défaut : true)
curl -X POST "https://kennhosting.com/api/v1/reseller/clients/1/domains" \
  -H "Authorization: Bearer kh_live_YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "domain": "jean-site.cm",
    "years": 1,
    "auto_renew": true
  }'
Réponse live (201) :
{
  "success": true,
  "data": {
    "sandbox": false,
    "domain": "jean-site.cm",
    "years": 1,
    "expires_at": "2027-06-12",
    "amount_debited": 5000
  }
}
Réponse sandbox (201) :
{
  "success": true,
  "data": {
    "sandbox": true,
    "domain": "jean-test.cm",
    "years": 1,
    "expires_at": "2027-06-12",
    "amount_debited": 5000,
    "message": "Domaine sandbox simulé — aucune ressource réelle créée."
  }
}

Lister les domaines d’un client

GET /api/v1/reseller/clients/{client_id}/domains
{
  "success": true,
  "data": [
    {
      "domain": "jean-site.cm",
      "expires_at": "2027-06-12",
      "auto_renew": true,
      "status": "active"
    }
  ]
}

Erreurs spécifiques

CodeDescription
domain_unavailableDomaine non disponible (déjà pris)
insufficient_balanceSolde wallet insuffisant