Skip to content

api

REST-API

Programmatischer Zugriff auf Ihr Restore Hub Konto, Server, Mitglieder, Backups, Pulls, Firewall, Whitelist, Blacklist, Analysen, Marktplatz und mehr. Vollständige Endpunktreferenz mit Beispielen für Anfrage/Antwort.

Übersicht

Die Restore Hub REST API bietet Ihnen programmatischen Zugriff auf alle Funktionen der Plattform. Verwenden Sie sie, um benutzerdefinierte Dashboards zu erstellen, mit anderen Tools zu integrieren, Workflows zu automatisieren oder Ihr eigenes Frontend zu erstellen.

Die API-Basis-URL lautet https://restorehub.net/api/v1. Alle Endpunkte erfordern eine Authentifizierung und sind pro Plan gebührenbegrenzt.

Authentifizierung

Alle API-Anforderungen müssen Ihren API-Schlüssel im Authorization-Header als Bearer-Token enthalten. Ihr API-Schlüssel ist eine UUID, die bei der Erstellung Ihres Kontos generiert wird. Sie können ihn im Dashboard unter Einstellungen → API-Schlüssel finden.

Autorisierung: Überbringer rh_Ihr_api_Schlüssel_hier

Tipp: Ihr API-Schlüssel hat die gleichen Berechtigungen wie Ihr Konto. Jeder, der über Ihren API-Schlüssel verfügt, kann jede Aktion ausführen, die Sie ausführen können. Halten Sie ihn geheim und geben Sie ihn niemals in clientseitigem Code oder öffentlichen Repositories preis.

Raten-Grenzwerte

API-Anfragen sind pro 10-Sekunden-Fenster begrenzt. Das Limit hängt von Ihrem Tarif ab. Wenn Sie das Limit überschreiten, gibt die API HTTP 429 Too Many Requests zurück.

Die Informationen zur Ratenbegrenzung sind in jeder Antwort über Kopfzeilen enthalten:

| Plan | Anfragen pro 10 Sekunden |
|---|---|
| Kostenlos | 20 |
| Premium | 50 |
| Business | 100 |
| Unternehmen | 200 |
X-RateLimit-Grenze: 50
X-RateLimit-Remaining: 47
X-RateLimit-Reset: 1680000010

Antwortformat

Alle erfolgreichen Antworten sind JSON mit einem Datenfeld. Paginierte Endpunkte enthalten auch ein Paginierungsobjekt. Fehlerantworten enthalten eine Fehlerzeichenfolge und optional ein Detailobjekt für Validierungsfehler.

// Erfolg
{
  "Daten": { ... },
  "pagination": {
    "Seite": 1,
    "Grenze": 25,
    "gesamt": 142,
    "totalPages": 6
  }
}

// Fehler
{
  "Fehler": "Server nicht gefunden"
}

// Validierungsfehler
{
  "error": "Validierung fehlgeschlagen",
  "details": {
    "fieldErrors": { "roleId": ["Ungültige Discord-Schneeflocke"] },
    "formErrors": []
  }
}

Konto

Rufen Sie Ihre Kontoinformationen, Tarifdetails, den Abonnementstatus und die aktuellen Limits ab.

GET /api/v1/account

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

Benutzerdefinierte Bots

Listen Sie Ihre benutzerdefinierten Bots auf oder erstellen Sie einen neuen. Bot-Tokens und Client-Geheimnisse werden im Ruhezustand verschlüsselt und niemals in API-Antworten zurückgegeben.

GET /api/v1/bots

Antwort:
{
  "data": [
    {
      "id": "uuid",
      "clientId": "123456789012345678",
      "name": "Mein Verifizierungsbot",
      "avatar": "https://cdn.discordapp.com/...",
      "Status": "ONLINE",
      "activityType": "ÜBERWACHEND",
      "activityText": "restorehub.net",
      "isActive": wahr,
      "createdAt": "2024-01-15T00:00:00Z",
      "updatedAt": "2024-06-01T00:00:00Z"
    }
  ]
}

---

POST /api/v1/bots

Anfragekörper:
{
  "botToken": "MTIz...",
  "clientId": "123456789012345678",
  "clientSecret": "abc123...",
  "publicKey": "def456...",
  "redirectUri": "https://restorehub.net/api/callback",
  "name": "My Verify Bot"
}

Antwort (201):
{
  "Daten": {
    "id": "uuid",
    "clientId": "123456789012345678",
    "name": "Mein Überprüfungsbot",
    "isActive": wahr,
    "createdAt": "2024-01-15T00:00:00Z"
  }
}

Server - Auflisten & Erstellen

Alle Server auf Ihrem Konto auflisten (paginiert) oder einen neuen Server erstellen.

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

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

---

POST /api/v1/server

Anfragekörper:
{
  "discordGuildId": "123456789012345678",
  "customBotId": "uuid-of-your-bot",
  "name": "Meine Gemeinschaft",
  "verifiedRoleId": "987654321098765432",
  "logChannelId": "111222333444555666"
}

Antwort (201):
{
  "data": { "id": "uuid", ... }
}

Server-Details - Abrufen, Aktualisieren, Löschen

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

Warnung: Die Löschung eines Servers ist dauerhaft. Alle verifizierten Mitglieder, Backups, Firewall-Regeln und Analysedaten für diesen Server werden dauerhaft gelöscht.

Geprüfte Mitglieder

Liste verifizierter Mitglieder für einen Server mit Paginierung, Suche und Pull-Filter.

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

Backups - Auflisten & Erstellen

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

Tipp: Die Erstellung eines Backups erfolgt asynchron. Der POST kehrt sofort mit dem Status "in der Warteschlange" zurück. Rufen Sie den GET-Endpunkt ab, um zu prüfen, wann die Sicherung fertig ist.

Wiederherstellen einer Sicherung

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

Warnung: Bei der Wiederherstellung von Kanälen werden alle vorhandenen Kanäle auf dem Zielserver gelöscht. Dies ist nicht umkehrbar.

Mitglied Pulling

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

Firewall-Regeln

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

Tipp: Regeltypen: IP, COUNTRY, ASN, FINGERPRINT, USER_ID, SERVER_ID, REGION. Doppelte Regeln (gleicher Typ + Wert) geben HTTP 409 zurück.

Whitelist-Regeln

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

Schwarze Liste

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

Sperrlisten gelten pro Benutzer (nicht pro Server). Wenn Sie eine Discord-Benutzer-ID auf eine schwarze Liste setzen, wird sie für die Verifizierung auf ALLEN Ihren Servern gesperrt.

Analytik

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

Das Trichterobjekt zeigt an, wie viele Überprüfungsversuche jede Stufe erreicht haben. Verwenden Sie dies, um zu erkennen, wo die Mitglieder abfallen.

Marktplatz-Inserate

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

Vollständige Endpunkt-Referenz

| Methode | Endpunkt | Beschreibung |
|---|---|---|
| GET | /api/v1/account | Abrufen der Kontoinformationen, des Plans und der Limits eines authentifizierten Benutzers |
| GET | /api/v1/bots | Auflistung Ihrer benutzerdefinierten Bots |
| POST | /api/v1/bots | Erstellen eines neuen benutzerdefinierten Bots |
| GET | /api/v1/servers | Auflisten Ihrer Server (paginiert) |
| POST | /api/v1/servers | Einen neuen Server erstellen |
| GET | /api/v1/servers/:id | Serverdetails mit Zählungen abrufen |
| PUT | /api/v1/servers/:id | Servereinstellungen aktualisieren (teilweise) |
| DELETE | /api/v1/servers/:id | Löschen eines Servers und aller seiner Daten |
| GET | /api/v1/servers/:id/members | Verifizierte Mitglieder auflisten (paginiert, durchsuchbar, filterbar) |
| GET | /api/v1/servers/:id/backups | Auflistung von Backups für einen Server (paginiert) |
| POST | /api/v1/servers/:id/backups | Erstellen einer neuen Sicherung (asynchron) |
| POST | /api/v1/servers/:id/backups/:backupId/restore | Wiederherstellen einer Sicherung (asynchron) |
| POST | /api/v1/servers/:id/pull | Starten eines Pull-Auftrags für Mitglieder (asynchron) |
| GET | /api/v1/pulls/:id | Status und Fortschritt eines Pull-Jobs abfragen |
| GET | /api/v1/servers/:id/firewall | Firewall-Regeln auflisten |
| POST | /api/v1/servers/:id/firewall | Hinzufügen einer Firewall-Regel |
| DELETE | /api/v1/servers/:id/firewall?ruleId=x | Löschen einer Firewall-Regel |
| GET | /api/v1/servers/:id/whitelist | Whitelist-Regeln auflisten |
| POST | /api/v1/servers/:id/whitelist | Hinzufügen einer Whitelist-Regel |
| DELETE | /api/v1/servers/:id/whitelist?ruleId=x | Löschen einer Whitelist-Regel |
| POST | /api/v1/servers/:id/blacklist | Einen Discord-Benutzer auf die schwarze Liste setzen |
| GET | /api/v1/servers/:id/analytics | Server-Analysen und Verifizierungstrichter abrufen |
| GET | /api/v1/marketplace/listings | Marktplatz-Angebote durchsuchen (paginiert, filterbar) |
| POST | /api/v1/marketplace/orders | Erstellen einer Marktplatzbestellung |
| GET | /api/v1/marketplace/orders/:id | Bestellstatus und Erfüllungsfortschritt abfragen |

HTTP Status Codes

| Code | Bedeutung |
|---|---|
| 200 | Erfolg - Ressource zurückgegeben |
| 201 | Erstellt - Ressource erfolgreich erstellt |
| 202 | Akzeptiert - Asynchroner Auftrag in der Warteschlange (Sicherung, Wiederherstellung, Pull) |
| 400 | Bad Request - ungültige Eingabe oder Validierungsfehler |
| 401 | Nicht autorisiert - fehlender oder ungültiger API-Schlüssel |
| 403 | Verboten - Plan enthält diese Funktion nicht oder Limit überschritten |
| 404 | Nicht gefunden - Ressource existiert nicht oder gehört nicht zu Ihnen |
| 409 | Konflikt - doppelte Ressource (z. B. Firewall-Regel existiert bereits) |
| 429 | Rate Limited - zu viele Anfragen oder Abklingzeit nicht abgelaufen |
| 500 | Interner Serverfehler - unerwarteter Fehler |
REST-API — Restore Hub Docs | Restore Hub