Skip to content

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_aqui

Dica: 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: 1680000010

Formato 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/:id

Aviso: 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=true

Backups - Listar e criar

GET /api/v1/servers/:id/backups?page=1&limit=25
POST /api/v1/servers/:id/backups

Dica: 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/restore

Aviso: 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/:id

Regras de firewall

GET /api/v1/servers/:id/firewall
POST /api/v1/servers/:id/firewall
DELETE /api/v1/servers/:id/firewall?ruleId=uuid

Dica: 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=uuid

Lista negra

POST /api/v1/servers/:id/blacklist

As 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=30d

O 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/:id

Referê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 atendimento

Có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
API REST — Restore Hub Docs | Restore Hub