Rychlý start

KernelHost API

1. Vytvořit API klíč

Přihlaste se do zákaznického portálu v sekci "KernelHost API" a vytvořte klíč. Zvolte pouze ta oprávnění, která skutečně potřebujete (výchozí nastavení: pouze pro čtení). Tajný klíč se zobrazí pouze jednou, proto si jej bezpečně uložte do svého správce tajných klíčů.

2. Uložit přístupové údaje

Uložte klíč a tajný klíč jako proměnné prostředí, nikdy ne v kódu, nikdy ne v repozitáři.

# .env nebo profil shellu
export KH_KEY="kh_live_XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
export KH_SECRET="XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"

3. Odeslat první požadavek

Načtěte seznam dostupných produktů. Podpis se tvoří z metody, cesty, časového razítka, nonce a hashe těla.

TS=$(date +%s)
NONCE=$(openssl rand -hex 16)
BODY_SHA256=$(printf '' | openssl dgst -sha256 -hex | awk '{print $NF}')
SIG_INPUT=$(printf 'GET\n/v1/products\n%s\n%s\n%s' "$TS" "$NONCE" "$BODY_SHA256")
SIG=$(printf '%s' "$SIG_INPUT" | openssl dgst -sha256 -hmac "$KH_SECRET" -hex | awk '{print $NF}')

curl https://www.kernelhost.com/cp/kernelhost_api/v1/products \
  -H "KH-Key: $KH_KEY" \
  -H "KH-Timestamp: $TS" \
  -H "KH-Nonce: $NONCE" \
  -H "KH-Signature: $SIG"

4. Zadat objednávku

Důležité: POST /v1/orders vyžaduje hlavičku Idempotency-Key a hostname. Pokud po síťové chybě zopakujete požadavek se stejným klíčem, dostanete zpět stejnou odpověď a druhá objednávka nevznikne. Konfigurační volby, které vynecháte (například lokalitu nebo operační systém), dostanou první hodnotu nabízenou v obchodě.

BODY='{"product_id":42,"billing_cycle":"monthly","hostname":"web01.example.com"}'
IDEM="order-web01-$(date +%Y%m%d)"
BODY_SHA256=$(printf '%s' "$BODY" | openssl dgst -sha256 -hex | awk '{print $NF}')
TS=$(date +%s)
NONCE=$(openssl rand -hex 16)
SIG_INPUT=$(printf 'POST\n/v1/orders\n%s\n%s\n%s' "$TS" "$NONCE" "$BODY_SHA256")
SIG=$(printf '%s' "$SIG_INPUT" | openssl dgst -sha256 -hmac "$KH_SECRET" -hex | awk '{print $NF}')

curl -X POST https://www.kernelhost.com/cp/kernelhost_api/v1/orders \
  -H "KH-Key: $KH_KEY" \
  -H "KH-Timestamp: $TS" \
  -H "KH-Nonce: $NONCE" \
  -H "KH-Signature: $SIG" \
  -H "Idempotency-Key: $IDEM" \
  -H "Content-Type: application/json" \
  --data "$BODY"

5. Zkontrolovat stav a načíst přístupové údaje

Odpověď na objednávku obsahuje service_ids. Opakovaně volejte GET /v1/services/{id}, dokud status nebude active a nebude nastavena IP adresa; zřízení obvykle trvá několik sekund až několik minut. Poté GET /v1/services/{id}/credentials (oprávnění read:credentials) vrátí hostname, IP adresy, uživatelské jméno a heslo, například pro Váš Ansible inventář.

kh_get() {
  TS=$(date +%s)
  NONCE=$(openssl rand -hex 16)
  BODY_SHA256=$(printf '' | openssl dgst -sha256 -hex | awk '{print $NF}')
  SIG_INPUT=$(printf 'GET\n%s\n%s\n%s\n%s' "$1" "$TS" "$NONCE" "$BODY_SHA256")
  SIG=$(printf '%s' "$SIG_INPUT" | openssl dgst -sha256 -hmac "$KH_SECRET" -hex | awk '{print $NF}')
  curl -s "https://www.kernelhost.com/cp/kernelhost_api$1" \
    -H "KH-Key: $KH_KEY" \
    -H "KH-Timestamp: $TS" \
    -H "KH-Nonce: $NONCE" \
    -H "KH-Signature: $SIG"
}

kh_get /v1/services/1234
kh_get /v1/services/1234/credentials

6. Uložit webhook URL (volitelné)

HTTPS URL pro každý klíč si můžete uložit už nyní. Doručování událostí je v přípravě; do té doby používejte dotazy na stav z kroku 5.