Skip to content

api

API REST

Accès programmatique à votre compte Restore Hub, aux serveurs, aux membres, aux sauvegardes, aux extractions, au pare-feu, à la liste blanche, à la liste noire, à l'analyse, à la place de marché, etc. Référence complète des points de terminaison avec des exemples de demandes/réponses.

Vue d'ensemble

L'API REST de Restore Hub vous donne un accès programmatique à toutes les fonctionnalités de la plateforme. Utilisez-la pour créer des tableaux de bord personnalisés, intégrer d'autres outils, automatiser des flux de travail ou créer votre propre interface.

L'URL de base de l'API est https://restorehub.net/api/v1. Tous les points d'extrémité nécessitent une authentification et sont limités par plan.

Authentification

Toutes les demandes d'API doivent inclure votre clé d'API dans l'en-tête Authorization en tant que jeton Bearer. Votre clé API est un UUID généré lors de la création de votre compte. Vous pouvez la trouver dans le tableau de bord sous Paramètres → Clé API.

Autorisation : Bearer rh_your_api_key_here

Conseil : votre clé API dispose des mêmes autorisations que votre compte. Toute personne possédant votre clé API peut effectuer toutes les actions que vous pouvez effectuer. Gardez-la secrète et ne l'exposez jamais dans du code côté client ou dans des dépôts publics.

Limites de taux

Les demandes d'API sont limitées par une fenêtre de 10 secondes. La limite dépend de votre plan. Lorsque vous dépassez la limite, l'API renvoie le message HTTP 429 Too Many Requests.

Les informations relatives à la limite de débit sont incluses dans chaque réponse par le biais d'en-têtes :

| Plan d'action - Requêtes par 10 secondes - Plan d'action
|---|---|
| Gratuit - 20 $ - 50
| Premium - 50
| Business | 100 |
| Entreprise | 200 |
X-RateLimit-Limite : 50
X-RateLimit-Remaining : 47
X-RateLimit-Reset : 1680000010

Format de la réponse

Toutes les réponses réussies sont des JSON avec un champ de données. Les points de terminaison paginés incluent également un objet de pagination. Les réponses d'erreur comprennent une chaîne d'erreur et éventuellement un objet de détails pour les erreurs de validation.

// Succès
{
  "data" : { ... },
  "pagination" : {
    "page" : 1,
    "limite" : 25,
    "total" : 142,
    "totalPages" : 6
  }
}

// Erreur
{
  "error" : "Server not found"
}

// Erreur de validation
{
  "error" : "Validation failed",
  "details" : {
    "fieldErrors" : { "roleId" : ["Invalid Discord snowflake"] },
    "formErrors" : []
  }
}

Compte

Retrouvez les informations relatives à votre compte, les détails de votre plan, l'état de votre abonnement et vos limites actuelles.

GET /api/v1/account

Réponse :
{
  "data" : {
    "id" : "uuid",
    "discordId" : "123456789012345678",
    "username" : "johndoe",
    "displayName" : "John Doe",
    "avatar" : "https://cdn.discordapp.com/...",
    "plan" : "PREMIUM",
    "mfaEnabled" : true,
    "createdAt" : "2024-01-15T00:00:00Z",
    "_count" : {
      "servers" : 3,
      "customBots" : 2,
      "teams" : 1
    },
    "abonnement" : {
      "plan" : "PREMIUM",
      "status" : "ACTIVE",
      "currentPeriodEnd" : "2025-02-15T00:00:00Z",
      "isTrial" : faux,
      "trialEndsAt" : null,
      "cancelledAt" : null
    },
    "limits" : {
      "maxServers" : 10,
      "maxBots" : 5,
      "maxBackups" : 10,
      "maxStorageBytes" : 5368709120,
      "pullCooldownMs" : 3600000,
      "marketplaceFeePercent" : 12,
      "apiRatePerTenSeconds" : 50,
      "hasVpnDetection" : true,
      "hasAltDetection" : true,
      "hasFirewall" : true
    }
  }
}

Bots personnalisés

Listez vos bots personnalisés ou créez-en un nouveau. Les tokens des bots et les secrets des clients sont cryptés au repos et ne sont jamais renvoyés dans les réponses de l'API.

GET /api/v1/bots

Réponse :
{
  "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

Le corps de la requête :
{
  "botToken" : "MTIz...",
  "clientId" : "123456789012345678",
  "clientSecret" : "abc123...",
  "publicKey" : "def456...",
  "redirectUri" : "https://restorehub.net/api/callback",
  "name" : "My Verify Bot"
}

Réponse (201) :
{
  "data" : {
    "id" : "uuid",
    "clientId" : "123456789012345678",
    "name" : "My Verify Bot",
    "isActive" : true,
    "createdAt" : "2024-01-15T00:00:00Z"
  }
}

Serveurs - Liste et création

Liste de tous les serveurs de votre compte (paginé) ou création d'un nouveau serveur.

GET /api/v1/servers?page=1&limit=25

Réponse :
{
  "data" : [
    {
      "id" : "uuid",
      "discordGuildId" : "123456789012345678",
      "name" : "Ma communauté",
      "icon" : "https://cdn.discordapp.com/...",
      "memberCount" : 5420,
      "verifiedRoleId" : "987654321098765432",
      "logChannelId" : "111222333444555666",
      "captchaType" : "TURNSTILE",
      "vpnBlockEnabled" : true,
      "altDetectEnabled" : true,
      "firewallEnabled" : true,
      "antiNukeEnabled" : faux,
      "antiRaidEnabled" : faux,
      "createdAt" : "2024-01-15T00:00:00Z",
      "updatedAt" : "2024-06-01T00:00:00Z"
    }
  ],
  "pagination" : { "page" : 1, "limit" : 25, "total" : 3, "totalPages" : 1 }
}

---

POST /api/v1/servers

Le corps de la requête :
{
  "discordGuildId" : "123456789012345678",
  "customBotId" : "uuid-of-your-bot",
  "name" : "Ma communauté",
  "verifiedRoleId" : "987654321098765432",
  "logChannelId" : "111222333444555666"
}

Réponse (201) :
{
  "data" : { "id" : "uuid", ... }
}

Détails du serveur - Obtenir, mettre à jour, supprimer

GET /api/v1/servers/:id
PUT /api/v1/servers/:id
DELETE /api/v1/servers/:id

Avertissement : La suppression d'un serveur est permanente. Tous les membres vérifiés, les sauvegardes, les règles de pare-feu et les données analytiques de ce serveur sont définitivement supprimés.

Membres vérifiés

Liste des membres vérifiés d'un serveur avec pagination, recherche et filtre extractible.

GET /api/v1/servers/:id/members?page=1&limit=25&search=john&pullable=true

Sauvegardes - Liste et création

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

Conseil : la création d'une sauvegarde est asynchrone. Le POST revient immédiatement avec le statut "en attente". Interrogez le point de terminaison GET pour vérifier si la sauvegarde est prête.

Restaurer une sauvegarde

POST /api/v1/servers/:id/backups/:backupId/restore

Attention : La restauration des canaux supprime tous les canaux existants dans le serveur cible. Cette opération est irréversible.

Tirer sur les membres

POST /api/v1/servers/:id/pull
GET /api/v1/pulls/:id

Règles de pare-feu

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

Conseil : Types de règles : IP, COUNTRY, ASN, FINGERPRINT, USER_ID, SERVER_ID, REGION. Les règles dupliquées (même type + valeur) renvoient HTTP 409.

Règles de liste blanche

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

Liste noire

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

Les listes noires sont établies par utilisateur (et non par serveur). Lorsque vous mettez un ID d'utilisateur Discord sur liste noire, il ne peut plus être vérifié sur TOUS vos serveurs.

Analyse

GET /api/v1/servers/:id/analytics?period=30d

L'objet entonnoir indique le nombre de tentatives de vérification à chaque étape. Il permet d'identifier les points de chute des membres.

Listes du marché

GET /api/v1/marketplace/listings?category=GAMING&sort=rating&page=1&limit=25
POST /api/v1/marketplace/orders
GET /api/v1/marketplace/orders/:id

Référence complète du point final

| Méthode | Point d'arrivée | Description
|---|---|---|
| GET | /api/v1/account | Obtenir les informations sur le compte de l'utilisateur authentifié, son plan, ses limites, etc
| GET | /api/v1/bots | Liste de vos bots personnalisés
| POST | /api/v1/bots | Créer un nouveau bot personnalisé
gET | /api/v1/servers | Liste de vos serveurs (paginés) | POST | /api/v1/bots
| POST | /api/v1/servers | Créer un nouveau serveur
| GET | /api/v1/servers/:id | Obtenir les détails d'un serveur avec le nombre d'utilisateurs
| PUT | /api/v1/servers/:id | Mise à jour des paramètres du serveur (partielle) |
| DELETE | /api/v1/servers/:id | Supprimer un serveur et toutes ses données |
gET | /api/v1/servers/:id/members | Liste des membres vérifiés (paginée, consultable, filtrable) | GET | /api/v1/servers/:id/:id/members
gET | /api/v1/servers/:id/backups | Liste des sauvegardes d'un serveur (paginée) | POST | /api/v1/servers/:id/backups
| POST | /api/v1/servers/:id/backups | Créer une nouvelle sauvegarde (asynchrone) |
pOST | /api/v1/servers/:id/backups/:backupId/restore | Restauration d'une sauvegarde (asynchrone) | POST | /api/v1/servers/:id/backups/:backupId/restore
pOST | /api/v1/servers/:id/pull | Démarrage d'une tâche de traction de membres (asynchrone) | GET | /api/v1/servers/:id/pull
| GET | /api/v1/pulls/:id | Obtenir l'état et la progression d'une tâche de traction
| GET | /api/v1/servers/:id/firewall | Liste des règles de pare-feu
| POST | /api/v1/servers/:id/firewall | Ajouter une règle de pare-feu |
| DELETE | /api/v1/servers/:id/firewall?ruleId=x | Supprimer une règle de pare-feu
gET | /api/v1/servers/:id/whitelist | Liste des règles de la liste blanche | POST | /api/v1/servers/:id/whitelist
| POST | /api/v1/servers/:id/whitelist | Ajouter une règle de liste blanche |
| DELETE | /api/v1/servers/:id/whitelist?ruleId=x | Supprimer une règle de liste blanche
| POST | /api/v1/servers/:id/blacklist | Mettre un utilisateur Discord sur liste noire | GET | /api/v1/servers/:id/blacklist
| GET | /api/v1/servers/:id/analytics | Obtenir l'analyse du serveur et l'entonnoir de vérification
| GET | /api/v1/marketplace/listings | Parcourir les listes de la place de marché (paginées, filtrables)
| GET | /api/v1/marketplace/listings | Parcourir les listes de la place de marché (paginées et filtrables)
| GET | /api/v1/marketplace/orders/:id | Obtenir le statut de la commande et l'état d'avancement de l'exécution |

Codes d'état HTTP

| Code de conduite - Signification
|---|---|
| 200 | Succès - ressource renvoyée
| 201 | Créé - ressource créée avec succès | 202 | Accepté - tâche asynchrone mise en file d'attente (sauvegarde, restauration, extraction)
| 202 | Accepté - tâche asynchrone en file d'attente (sauvegarde, restauration, extraction) | 400 | Mauvaise requête - erreur de saisie et de validation non valide
| 400 | Mauvaise demande - entrée non valide ou erreur de validation |
| 401 | Non autorisé - clé API manquante ou non valide |
| 403 | Interdit - le plan n'inclut pas cette fonctionnalité ou la limite a été dépassée | 404 | Non trouvé - la ressource n'est pas disponible
| 404 | Non trouvé - la ressource n'existe pas ou n'est pas votre propriété
| 409 | Conflit - ressource dupliquée (par exemple, règle de pare-feu déjà existante) | 429 | Taux limité - trop de ressources disponibles
| 429 - Taux limité - trop de requêtes ou délai d'attente non écoulé
| Erreur de serveur interne - échec inattendu
API REST — Restore Hub Docs | Restore Hub