api
API REST
Acesso programático à sua conta do Restore Hub, servidores, membros, backups, pulls, firewall, lista branca, lista negra, análises, marketplace e muito mais. Referência completa de endpoint com exemplos de solicitação/resposta.
Visão geral
A API REST do Restore Hub oferece acesso programático a todos os recursos da plataforma. Use-a para criar painéis personalizados, integrar-se a outras ferramentas, automatizar fluxos de trabalho ou criar seu próprio front-end.
O URL básico da API é https://restorehub.net/api/v1. Todos os pontos de extremidade exigem autenticação e têm taxa limitada por plano.
Autenticação
Todas as solicitações de API devem incluir sua chave de API no cabeçalho de autorização como um token de portador. Sua chave de API é um UUID gerado quando sua conta é criada. Você pode encontrá-la no painel em Settings → API Key.
Autorização: Portador rh_seu_api_chave_aquiDica: sua chave de API tem as mesmas permissões que sua conta. Qualquer pessoa com sua chave de API pode executar qualquer ação que você possa fazer. Mantenha-a em segredo e nunca a exponha no código do lado do cliente ou em repositórios públicos.
Limites de taxas
As solicitações de API são limitadas por uma janela de 10 segundos. O limite depende de seu plano. Quando você excede o limite, a API retorna HTTP 429 Too Many Requests.
As informações de limite de taxa são incluídas em todas as respostas por meio de cabeçalhos:
| Plano | Solicitações por 10 segundos |
|---|---|
| Free | 20 |
| Premium | 50 |
| Business | 100 |
| Enterprise | 200 |X-RateLimit-Limit: 50
X-RateLimit-Remaining (Limite de taxa restante): 47
X-RateLimit-Reset: 1680000010Formato da resposta
Todas as respostas bem-sucedidas são JSON com um campo de dados. Os pontos de extremidade paginados também incluem um objeto de paginação. As respostas de erro incluem uma string de erro e, opcionalmente, um objeto de detalhes para erros de validação.
// Sucesso
{
"data": { ... },
"pagination" (paginação): {
"page": 1,
"limit": 25,
"total": 142,
"totalPages": 6
}
}
// Erro
{
"error": "Servidor não encontrado"
}
// Erro de validação
{
"error": "Falha na validação",
"details": {
"fieldErrors": { "roleId": ["Invalid Discord snowflake"] },
"formErrors": []
}
}Conta
Recupere as informações de sua conta, detalhes do plano, status da assinatura e limites atuais.
GET /api/v1/account
Resposta:
{
"data": {
"id": "uuid",
"discordId": "123456789012345678",
"username" (nome de usuário): "johndoe",
"displayName": "John Doe",
"avatar": "https://cdn.discordapp.com/...",
"plan" (plano): "PREMIUM",
"mfaEnabled": true,
"createdAt": "2024-01-15T00:00:00Z",
"_count": {
"servers": 3,
"customBots": 2,
"equipes": 1
},
"subscription" (assinatura): {
"plan" (plano): "PREMIUM",
"status": "ACTIVE" (ATIVO),
"currentPeriodEnd": "2025-02-15T00:00:00Z",
"isTrial": falso,
"trialEndsAt": nulo,
"cancelledAt": null
},
"limits": {
"maxServers": 10,
"maxBots": 5,
"maxBackups": 10,
"maxStorageBytes": 5368709120,
"pullCooldownMs": 3600000,
"marketplaceFeePercent": 12,
"apiRatePerTenSeconds": 50,
"hasVpnDetection": true,
"hasAltDetection": true,
"hasFirewall": true
}
}
}Bots personalizados
Liste seus bots personalizados ou crie um novo. Os tokens de bot e os segredos do cliente são criptografados em repouso e nunca são retornados nas respostas da API.
GET /api/v1/bots
Response:
{
"data": [
{
"id": "uuid",
"clientId": "123456789012345678",
"name": "My Verify Bot",
"avatar": "https://cdn.discordapp.com/...",
"status": "ONLINE",
"activityType": "WATCHING",
"activityText": "restorehub.net",
"isActive": true,
"createdAt": "2024-01-15T00:00:00Z",
"updatedAt": "2024-06-01T00:00:00Z"
}
]
}
---
POST /api/v1/bots
Corpo da solicitação:
{
"botToken": "MTIz...",
"clientId": "123456789012345678",
"clientSecret": "abc123...",
"publicKey": "def456...",
"redirectUri": "https://restorehub.net/api/callback",
"name": "My Verify Bot"
}
Resposta (201):
{
"data": {
"id": "uuid",
"clientId": "123456789012345678",
"name": "My Verify Bot",
"isActive": true,
"createdAt": "2024-01-15T00:00:00Z"
}
}Servidores - Listar e criar
Liste todos os servidores em sua conta (paginado) ou crie um novo servidor.
GET /api/v1/servers?page=1&limit=25
Resposta:
{
"data": [
{
"id": "uuid",
"discordGuildId": "123456789012345678",
"name" (nome): "Minha comunidade",
"icon": "https://cdn.discordapp.com/...",
"memberCount": 5420,
"verifiedRoleId": "987654321098765432",
"logChannelId": "111222333444555666",
"captchaType": "TURNSTILE",
"vpnBlockEnabled": true,
"altDetectEnabled": true,
"firewallEnabled": verdadeiro,
"antiNukeEnabled": falso,
"antiRaidEnabled": falso,
"createdAt": "2024-01-15T00:00:00Z",
"updatedAt": "2024-06-01T00:00:00Z"
}
],
"pagination" (paginação): { "page": 1, "limit": 25, "total": 3, "totalPages": 1 }
}
---
POST /api/v1/servidores
Corpo da solicitação:
{
"discordGuildId": "123456789012345678",
"customBotId": "uuid-of-your-bot",
"name" (nome): "My Community" (Minha comunidade),
"verifiedRoleId": "987654321098765432",
"logChannelId": "111222333444555666"
}
Resposta (201):
{
"data": { "id": "uuid", ... }
}Detalhes do servidor - Obter, atualizar, excluir
GET /api/v1/servers/:id
PUT /api/v1/servers/:id
DELETE /api/v1/servers/:idAviso: A exclusão de um servidor é permanente. Todos os membros verificados, backups, regras de firewall e dados de análise desse servidor são permanentemente excluídos.
Membros verificados
Lista de membros verificados de um servidor com paginação, pesquisa e filtro extraível.
GET /api/v1/servers/:id/members?page=1&limit=25&search=john&pullable=trueBackups - Listar e criar
GET /api/v1/servers/:id/backups?page=1&limit=25
POST /api/v1/servers/:id/backupsDica: a criação de backup é assíncrona. O POST retorna imediatamente com o status "enfileirado". Consulte o ponto de extremidade GET para verificar quando o backup está pronto.
Restaurar um backup
POST /api/v1/servers/:id/backups/:backupId/restoreAviso: A restauração de canais exclui todos os canais existentes no servidor de destino. Isso é irreversível.
Puxada de membros
POST /api/v1/servers/:id/pull
GET /api/v1/pulls/:idRegras de firewall
GET /api/v1/servers/:id/firewall
POST /api/v1/servers/:id/firewall
DELETE /api/v1/servers/:id/firewall?ruleId=uuidDica: Tipos de regras: IP, COUNTRY, ASN, FINGERPRINT, USER_ID, SERVER_ID, REGION. Regras duplicadas (mesmo tipo + valor) retornam HTTP 409.
Regras de lista branca
GET /api/v1/servers/:id/whitelist
POST /api/v1/servers/:id/whitelist
DELETE /api/v1/servers/:id/whitelist?ruleId=uuidLista negra
POST /api/v1/servers/:id/blacklistAs listas negras são por usuário (não por servidor). Quando você coloca um ID de usuário do Discord na lista negra, ele é impedido de verificar em TODOS os seus servidores.
Análises
GET /api/v1/servers/:id/analytics?period=30dO objeto do funil mostra quantas tentativas de verificação atingiram cada estágio. Use isso para identificar onde os membros estão caindo.
Listagens do Marketplace
GET /api/v1/marketplace/listings?category=GAMING&sort=rating&page=1&limit=25
POST /api/v1/marketplace/orders
GET /api/v1/marketplace/orders/:idReferência completa do ponto de extremidade
método | Ponto de extremidade | Descrição | Método | Ponto de extremidade | Descrição
|---|---|---|
| GET | /api/v1/account | Obter informações, plano e limites da conta do usuário autenticado
| GET | /api/v1/bots | Lista seus bots personalizados
| POST | /api/v1/bots | Criar um novo bot personalizado
gET | /api/v1/servers | Lista seus servidores (paginado) | GET | /api/v1/servers | Lista seus servidores (paginado)
pOST | /api/v1/servers | Criar um novo servidor | GET | /api/v1/servers | Listar seus servidores (paginado)
gET | /api/v1/servers/:id | Obter detalhes do servidor com contagens | PUT | /api/v1/servers/:id
pUT | /api/v1/servers/:id | Atualizar as configurações do servidor (parcial) | PUT | /api/v1/servers/:id | Atualizar as configurações do servidor (parcial)
| DELETE | /api/v1/servers/:id | Excluir um servidor e todos os seus dados
gET | /api/v1/servers/:id/members | Listar membros verificados (paginado, pesquisável, filtrável) | GET | /api/v1/servers/:id/members
gET | /api/v1/servers/:id/backups | Listar backups de um servidor (paginado) | GET | /api/v1/servers/:id/backups | Listar backups de um servidor (paginado)
pOST | /api/v1/servers/:id/backups | Criar um novo backup (assíncrono) | POST | /api/v1/servers/:id/backups | Criar um novo backup (assíncrono)
pOST | /api/v1/servers/:id/backups/:backupId/restore | Restaurar um backup (assíncrono) | POST | /api/v1/servers/:id/backups/:backupId/restore | Restaurar um backup (assíncrono)
pOST | /api/v1/servers/:id/pull | Iniciar um trabalho de extração de membro (assíncrono) | GET | /api/v1/servers/:id/pull | Iniciar um trabalho de extração de membro (assíncrono)
| GET | /api/v1/pulls/:id | Obter status e progresso do trabalho pull
gET | /api/v1/servers/:id/firewall | Listar regras de firewall | POST | /api/v1/servers/:id
pOST | /api/v1/servers/:id/firewall | Adicionar uma regra de firewall | DELETE | /api/v1/servers/:id/firewall
| DELETE | /api/v1/servers/:id/firewall?ruleId=x | Excluir uma regra de firewall
| GET | /api/v1/servers/:id/whitelist | Listar regras da lista branca
| POST | /api/v1/servers/:id/whitelist | Adicionar uma regra da lista branca |
| DELETE | /api/v1/servers/:id/whitelist?ruleId=x | Excluir uma regra da lista branca
pOST | /api/v1/servers/:id/blacklist | Colocar um usuário do Discord na lista negra | GET | /api/v1/servers/:id/blacklist
gET | /api/v1/servers/:id/analytics | Obter análises do servidor e funil de verificação | GET | /api/v1/servers/:id/analytics
| GET | /api/v1/marketplace/listings | Navegar pelas listagens do marketplace (paginadas, filtráveis)
| POST | /api/v1/marketplace/orders | Criar um pedido no marketplace
| GET | /api/v1/marketplace/orders/:id | Obter status do pedido e progresso do atendimentoCódigos de status HTTP
| Código | Significado |
|---|---|
| 200 | Success - recurso retornado
| 201 | Criado - recurso criado com êxito
| 202 | Accepted - trabalho assíncrono enfileirado (backup, restauração, pull)
| 400 | Bad Request - entrada inválida ou erro de validação
| 401 | Unauthorized - chave de API ausente ou inválida
| 403 | Forbidden - o plano não inclui esse recurso ou o limite foi excedido
| 404 | Não encontrado - o recurso não existe ou não é de sua propriedade
| 409 | Conflito - recurso duplicado (por exemplo, regra de firewall já existente)
| 429 | Rate Limited - muitas solicitações ou pull cooldown não decorrido
| 500 | Erro interno do servidor - falha inesperada