Hızlı başlangıç

KernelHost API

1. API anahtarı oluşturun

Müşteri panelindeki "KernelHost API" bölümüne giriş yapın ve bir anahtar oluşturun. Yalnızca gerçekten ihtiyacınız olan kapsam/izinleri seçin (varsayılan: salt okunur). Gizli anahtar yalnızca bir kez gösterilir; onu gizli anahtar yöneticinizde güvenle saklayın.

2. Erişim bilgilerini saklayın

API anahtarını ve gizli anahtarı ortam değişkeni olarak saklayın, asla kodun içinde, asla depoda tutmayın.

# .env veya kabuk profili
export KH_KEY="kh_live_XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
export KH_SECRET="XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"

3. İlk isteğinizi gönderin

Mevcut ürünlerin listesini çekin. İmza metot, yol, zaman damgası, nonce ve gövde hash'i üzerinden oluşturulur.

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. Sipariş verin

Önemli: POST /v1/orders bir Idempotency-Key ve bir hostname gerektirir. Bir ağ hatasından sonra isteği aynı anahtarla tekrarlarsanız ikinci bir sipariş yerine aynı yanıtı geri alırsınız. Belirtmediğiniz yapılandırma seçenekleri (örneğin konum veya işletim sistemi) mağazada sunulan ilk değeri alır.

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. Durumu kontrol edin ve erişim bilgilerini alın

Sipariş yanıtında service_ids listelenir. Durumu, status değeri active olana ve bir IP adresi atanana kadar GET /v1/services/{id} ile sorgulayın; kurulum genellikle birkaç saniye ile birkaç dakika arasında sürer. Ardından GET /v1/services/{id}/credentials (read:credentials kapsam/izni) hostname, IP adresleri, kullanıcı adı ve parolayı döndürür; bunları örneğin Ansible envanterinizde kullanabilirsiniz.

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. Webhook URL'si tanımlayın (isteğe bağlı)

Anahtar başına bir HTTPS URL'si şimdiden tanımlayabilirsiniz. Olay gönderimi hazırlık aşamasındadır; o zamana kadar 5. adımdaki durum sorgularını kullanın.