Documentação da API de Revenda v2
Integre os serviços de domínios da AngoHost diretamente na sua aplicação ou WHMCS.
Esta documentação descreve os endpoints disponíveis na API de Revenda v2 da AngoHost. Todos os endpoints retornam dados em formato JSON.
Autenticação
X-API-Key: Sua chave de API pública.X-API-Secret: Sua chave secreta de API.
1. Consultar Saldo
/api/reseller_v2/account-balance.php
Retorna o saldo atual da conta de revendedor.
Exemplo de Resposta:
{
"success": true,
"balance": 15000.00,
"currency": "Kz",
"status": "active"
}
2. Verificar Disponibilidade de Domínio
/api/reseller_v2/check-domain.php
Verifica se um domínio está disponível para registo.
Parâmetros (JSON)
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
domain |
String | Sim | O nome de domínio completo a verificar (ex: empresa.ao). |
Body (JSON):
{
"domain": "exemplo.ao"
}
Exemplo de Resposta:
{
"success": true,
"domain": "exemplo.ao",
"available": true,
"price": 20000.00,
"currency": "Kz"
}
3. Obter Informações do Domínio
/api/reseller_v2/domain-info.php
Obtém detalhes de um domínio registado (WHOIS).
Parâmetros (Query String)
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
domain |
String | Sim | O nome do domínio para consulta. |
Exemplo de Resposta:
{
"success": true,
"domain": "exemplo.ao",
"info": {
"domain": "exemplo.ao",
"roid": "D12345-AO",
"status": "ok",
"registrant": "C12345-AO",
"admin": "C12345-AO",
"tech": "C12345-AO",
"nsset": "NS-EXEMPLO",
"clID": "ANGOHOST",
"crID": "ANGOHOST",
"crDate": "2023-01-01T12:00:00Z",
"exDate": "2024-01-01T12:00:00Z",
"nameservers": [
"ns1.angohost.ao",
"ns2.angohost.ao"
]
}
}
4. Gestão de Contactos
/api/reseller_v2/contacts-manage.php
Cria um novo contacto ou obtém informações de um existente.
Criar Contacto (POST) - Parâmetros
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
name |
String | Sim | Nome completo do titular. |
email |
String | Sim | Endereço de email válido. |
phone |
String | Sim | Telefone em formato internacional (ex: +244.923000000). |
address |
String | Sim | Endereço físico completo. |
city |
String | Sim | Cidade. |
country |
String | Sim | Código do país ISO 3166-1 alpha-2 (ex: AO, PT). |
org |
String | Não | Nome da organização/empresa (opcional). |
Body Exemplo (POST):
{
"name": "João da Silva",
"org": "Empresa Lda",
"email": "joao@exemplo.com",
"phone": "+244.923456789",
"address": "Rua Exemplo, 123",
"city": "Luanda",
"state": "Luanda",
"zip": "1000",
"country": "AO"
}
Exemplo de Resposta (Sucesso):
{
"success": true,
"message": "Contato criado com sucesso",
"id": 150,
"contactId": "RSL-10-1707812345",
"data": { ... }
}
5. Registar Domínio
/api/reseller_v2/register-domain.php
Regista um novo domínio. O valor será debitado do saldo do revendedor.
Parâmetros (JSON)
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
domain |
String | Sim | Domínio a registar. |
period |
Inteiro | Não | Anos de registo (Padrão: 1, Máximo: 5). |
contacts |
Objeto | Sim | Objeto contendo registrant, admin, tech (IDs).
|
nameservers |
Array | Não | Array de strings com os hostnames dos NS (Min: 2). |
Body (JSON):
{
"domain": "novodominio.ao",
"period": 1,
"contacts": {
"registrant": 150,
"admin": 150,
"tech": 150
},
"nameservers": [
"ns1.angohost.ao",
"ns2.angohost.ao"
]
}
Nota: Os IDs em contacts podem ser IDs numéricos internos
(obtidos via API) ou IDs de contacto EPP (strings).
Exemplo de Resposta:
{
"success": true,
"message": "Domínio registrado com sucesso",
"domain": "novodominio.ao",
"expiresAt": "2025-02-13",
"cost": 10000.00,
"balance_remaining": 5000.00,
"invoiceId": 1234,
"invoiceNumber": "FAT-2024-001"
}
6. Renovar Domínio
/api/reseller_v2/renew-domain.php
Renova um domínio existente.
Parâmetros (JSON)
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
domain |
String | Sim | Domínio a renovar. |
period |
Inteiro | Não | Anos de renovação (Padrão: 1). |
Body (JSON):
{
"domain": "exemplo.ao",
"period": 1
}
Exemplo de Resposta:
{
"success": true,
"message": "Domínio renovado com sucesso",
"domain": "exemplo.ao",
"new_expires_at": "2026-02-13",
"cost": 10000.00,
"balance_remaining": 4000.00
}
7. Transferir Domínio
/api/reseller_v2/transfer-domain.php
Inicia, aprova, cancela ou consulta uma transferência de domínio.
Parâmetros (JSON)
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
domain |
String | Sim | Domínio a transferir. |
authCode |
String | Depende | Código de autorização (obrigatório para request). |
operation |
String | Sim | Ação: request, query, approve,
cancel, reject.
|
Body (JSON) - Solicitar Transferência:
{
"domain": "exemplo.ao",
"authCode": "A1b2C3d4",
"operation": "request"
}
Exemplo de Resposta:
{
"success": true,
"message": "Pedido de transferência iniciado com sucesso",
"domain": "exemplo.ao",
"cost": 10000.00,
"result": { ... }
}
8. Atualizar Nameservers
/api/reseller_v2/update-nameservers.php
Atualiza os servidores de nome (DNS) de um domínio.
Parâmetros (JSON)
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
domain |
String | Sim | Domínio para atualizar. |
nameservers |
Array | Sim | Lista dos novos servidores de nome (Min: 2, Max: 6). |
Body (JSON):
{
"domain": "exemplo.ao",
"nameservers": [
"ns1.novoservidor.com",
"ns2.novoservidor.com"
]
}
Exemplo de Resposta:
{
"success": true,
"message": "Nameservers atualizados com sucesso",
"domain": "exemplo.ao",
"nameservers": [ ... ]
}
9. Carregamento de Saldo (Top-up)
/api/reseller_v2/create-topup.php
Gera uma referência de pagamento para carregar o saldo da conta.
Parâmetros (JSON)
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
amount |
Numeric | Sim | Valor a carregar em Kwanzas (Kz). |
gateway |
String | Sim | Método: APPY_PAY_REF ou GPO_MULTICAIXA. |
Body (JSON):
{
"amount": 50000,
"gateway": "APPY_PAY_REF"
}
Exemplo de Resposta:
{
"success": true,
"message": "Pagamento gerado com sucesso",
"redirectUrl": "https://angohost.ao/fatura.php?q=..."
}
Tratamento de Erros
Em caso de erro, a API retornará um código HTTP apropriado (4xx ou 5xx) e um JSON no seguinte formato:
{
"success": false,
"error": "Descrição do erro"
}