KernelHost Reseller API

Co umożliwia Reseller API

KernelHost Reseller API odwzorowuje dokładnie te same akcje zamawiania i zarządzania, które w innym wypadku wykonują Państwo poprzez kliknięcia w panelu klienta. Pozwala zautomatyzować Państwa działalność reselerską, zintegrować produkty KernelHost z własnym frontendem lub systemem rozliczeń oraz zachować pełną kontrolę nad zakresami uprawnień, limitami szybkości i białą listą IP dla każdego klucza.

Każde wywołanie jest podpisane HMAC-SHA256, chronione przed atakiem powtórzenia, przetwarzane idempotentnie (obowiązkowo dla zamówień), zapisywane w odpornym na manipulacje dzienniku audytu i opcjonalnie potwierdzane przez webhook. Płatności są pobierane najpierw z salda kredytowego, następnie z zapisanej karty. Nowe karty można dodawać wyłącznie w panelu klienta (wymuszone 3-D Secure 2).

Bazowy URL
https://www.kernelhost.com/cp/kh_reseller_api/v1

Spis treści

Co można zrobić

  • Przeglądać produkty i ceny (serwery KVM root, dedykowane, webspace, Minecraft, VPN, ruch bez limitu).
  • Składać zamówienia (nagłówek Idempotency-Key chroni przed podwójnymi obciążeniami przy ponownych próbach sieciowych).
  • Wyświetlać własne usługi, sprawdzać status, wykonywać akcje (start, stop, restart, reinstalacja, zawieszenie, terminacja).
  • Odczytywać dane dostępowe wyłącznie własnych usług (oddzielny zakres uprawnień, wpis w audycie, opcjonalny e-mail potwierdzający przy każdym dostępie).
  • Pobierać faktury, sprawdzać saldo kredytowe, ściągać PDF faktur.
  • Rejestrować webhook dla każdego klucza dla zdarzeń zamówień, usług i faktur (schemat podpisu zgodny ze Stripe).

Projekt o maksymalnym poziomie bezpieczeństwa

API zostało zaprojektowane przy założeniu, że każde wywołanie ma bezpośredni wpływ finansowy i może udostępniać poufne dane dostępowe do serwerów. Wymagania bezpieczeństwa leżą zatem znacznie powyżej zwykłego standardu REST.

  • Podpis żądania HMAC-SHA256 obejmuje metodę, ścieżkę, znacznik czasu, nonce i skrót treści. Porównanie w czasie stałym.
  • Ochrona przed powtórzeniem: okno tolerancji znacznika czasu +-300s, jednorazowa pamięć podręczna nonce przez 600s.
  • Tajne klucze są utrwalane wyłącznie jako szyfrogramy AES-256-GCM. Tekst jawny istnieje przejściowo w pamięci tylko podczas weryfikacji podpisu. Klucz główny znajduje się poza bazą danych.
  • Szczegółowe zakresy uprawnień dla każdego klucza. Niebezpieczne zakresy (read:credentials, write:orders) muszą być włączone w sposób jawny. Domyślnie tylko do odczytu.
  • Izolacja danych na poziomie bazy danych: każde zapytanie filtruje w sposób twardy po identyfikatorze Państwa konta. Dostęp międzylokatorski jest niemożliwy z założenia.

Przykład: zapytanie o własne konto

Żądanie jest podpisywane w całości Państwa tajnym kluczem. Tajny klucz nigdy nie opuszcza pamięci klienta; przesyłany jest wyłącznie podpis.

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

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

Najczęściej zadawane pytania

Kto może korzystać z Reseller API?

Każdy istniejący klient KernelHost może w sekcji "Moje konto → Reseller API" utworzyć klucz z własną etykietą, zakresami uprawnień i białą listą IP. Osobna umowa partnerska nie jest wymagana: każdy publicznie oferowany produkt jest dostępny przez API.

W jaki sposób opłacane są zamówienia?

Kolejność: najpierw saldo kredytowe, następnie zapisana metoda płatności (karta kredytowa z 3-D Secure 2). Jeżeli płatność zostanie odrzucona lub żadna karta nie jest zapisana, API zwraca HTTP 402 "Payment Required" z konkretnym powodem (insufficient_credit_and_no_card, card_declined, card_expired). Zamówienie pozostaje przez 24h w stanie "pending payment", a następnie zostaje automatycznie anulowane.

Czy mogę odczytywać hasła usług przez API?

Tak, ale wyłącznie dla własnych usług i wyłącznie z jawnym zakresem read:credentials, który należy włączyć podczas tworzenia klucza. Każdy dostęp generuje wpis w dzienniku audytu credentials.read; na życzenie mogą Państwo dodatkowo otrzymywać e-mail potwierdzający na adres konta, dzięki czemu ciche nadużycie jest niemożliwe.

Co się stanie, jeśli mój tajny klucz zostanie skompromitowany?

Tajny klucz mogą Państwo zrotować jednym kliknięciem w panelu klienta. Stary klucz zostaje natychmiast unieważniony, wszystkie aktywne sesje są wycofywane. Przy podejrzanych nieudanych uwierzytelnieniach (5 w ciągu 10 minut) system automatycznie blokuje klucz na 15 minut i informuje Państwa pocztą elektroniczną.

Gotowi do startu?

Proszę utworzyć pierwszy klucz API w panelu klienta w sekcji "Reseller API" i postępować zgodnie z przewodnikiem szybkiego startu.