KernelHost API

O que a KernelHost API (API de Revenda) faz

A API de Revenda da KernelHost expõe exatamente as ações de pedido e gestão que você executaria clicando no portal do cliente. Permite automatizar o seu negócio de revenda, integrar produtos KernelHost no seu próprio frontend ou sistema de faturamento, e manter controle total sobre escopos, limites de taxa e lista de IPs permitidos por chave API.

Cada chamada é assinada com HMAC-SHA256, protegida contra replay, processada de forma idempotente (obrigatório para encomendas) e registada num log de auditoria à prova de adulteração. Os pagamentos são debitados primeiro do seu saldo de crédito e depois do cartão guardado. Por motivos de segurança, só é possível adicionar novos cartões no portal do cliente (3-D Secure 2).

URL base
https://www.kernelhost.com/cp/kernelhost_api/v1

Sumário

O que você pode fazer

  • Consultar produtos e preços (rootservers KVM, dedicados, webspace, Minecraft, VPN, tráfego ilimitado).
  • Realizar pedidos (Idempotency-Key protege contra cobranças duplicadas em retentativas de rede).
  • Listar os seus próprios serviços, verificar o respetivo estado e executar ações: start, stop, reboot, cancelamento no fim do período de faturação e revogação desse cancelamento.
  • Ler credenciais apenas dos seus próprios serviços (escopo separado, auditado, e-mail de confirmação opcional por acesso).
  • Obter faturas, consultar saldo de crédito, baixar PDFs de faturas.
  • Guardar um URL de webhook por chave. O envio de eventos (encomendas, serviços e faturas) está em preparação; até lá, consulte o estado através de GET /v1/orders/{id} e GET /v1/services/{id}.

Design de segurança máxima

A API foi projetada partindo do pressuposto de que cada chamada tem impacto financeiro direto e pode expor credenciais sensíveis de servidor. A linha de base de segurança está, portanto, bem acima dos padrões REST habituais.

  • Assinatura HMAC-SHA256 da requisição sobre método, caminho, timestamp, nonce e hash do corpo. Comparação em tempo constante.
  • Proteção contra replay: janela de timestamp +-300s, cache de nonce de uso único por 600s.
  • Segredos são persistidos exclusivamente como texto cifrado AES-256-GCM. O texto claro existe transitoriamente em memória apenas para verificação da assinatura. A chave mestra fica fora do banco de dados.
  • Escopos granulares por chave API. Escopos perigosos (read:credentials, write:orders) precisam ser ativados explicitamente. O padrão é somente leitura.
  • Isolamento de dados no nível do banco: cada consulta filtra rigidamente pelo id da sua conta. Acesso entre tenants é impossível por design.

Exemplo: consultar sua própria conta

A requisição é assinada por completo com o seu segredo. O segredo nunca sai da memória do cliente; apenas a assinatura é transmitida.

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/kernelhost_api/v1/me \
  -H "KH-Key: $KH_KEY" \
  -H "KH-Timestamp: $TS" \
  -H "KH-Nonce: $NONCE" \
  -H "KH-Signature: $SIG"

Perguntas frequentes

Quem pode usar a API de Revenda?

Qualquer cliente existente da KernelHost pode criar chaves no portal do cliente, através da opção de menu "KernelHost API", cada uma com o seu próprio rótulo, escopos e lista de IPs permitidos. Apenas o titular da conta pode criar, rodar ou revogar chaves. Não é necessário nenhum contrato de revenda à parte: todos os produtos listados publicamente podem ser encomendados através da API.

Como os pedidos são pagos?

O pagamento segue esta ordem: primeiro o seu saldo de crédito, depois o seu método de pagamento guardado. Se o pagamento falhar ou não houver nenhum cartão registado, a API devolve HTTP 402 "Payment Required" com o motivo exato (insufficient_credit_and_no_card, card_declined, credit_apply_failed) e cancela a encomenda de imediato, pelo que não fica nenhuma encomenda por pagar.

Posso ler senhas de serviços pela API?

Sim, apenas para os seus próprios serviços e apenas com o escopo explícito read:credentials, que tem de ser ativado à parte ao criar a chave. A resposta contém o hostname, os endereços IP, o nome de utilizador e a palavra-passe. Cada acesso gera uma entrada credentials.read no log de auditoria e um e-mail de confirmação para o endereço da conta, pelo que um abuso silencioso não passa despercebido.

O que acontece se meu segredo for comprometido?

Pode rodar o secret com um único clique na área de cliente e o secret anterior deixa de ser válido de imediato. As tentativas de autenticação falhadas são registadas e limitadas por IP de origem, mas nunca bloqueiam a sua chave, pelo que ninguém consegue bloquear a sua integração apenas por conhecer o ID público da chave.

Pronto para começar?

Crie a sua primeira chave API no portal do cliente, em "KernelHost API", e siga o guia de início rápido.