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_hereConseil : 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 : 1680000010Format 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/:idAvertissement : 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=trueSauvegardes - Liste et création
GET /api/v1/servers/:id/backups?page=1&limit=25
POST /api/v1/servers/:id/backupsConseil : 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/restoreAttention : 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/:idRègles de pare-feu
GET /api/v1/servers/:id/firewall
POST /api/v1/servers/:id/firewall
DELETE /api/v1/servers/:id/firewall?ruleId=uuidConseil : 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=uuidListe noire
POST /api/v1/servers/:id/blacklistLes 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=30dL'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/:idRé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