Zum Inhalt

API-Referenz

Übersicht

Das Admin Panel bietet 22 API-Routen, alle unter app/api/. Authentifizierung erfolgt via JWT-Cookie (siehe Authentifizierung).

Authentifizierung

Route Methode Beschreibung
/api/auth/login POST Login mit Username/Password, setzt JWT-Cookie
/api/auth/logout POST Löscht Auth-Cookie

Login-Request:

{ "username": "admin", "password": "..." }

Login-Response:

{ "success": true }

Dashboard

Route Methode Beschreibung
/api/dashboard/stats GET Aggregierte Dashboard-Statistiken

Response-Felder: totalUsers, totalRevenue, failedIntents, activeVouchers, activeIntents, settlementStatus, recentIntents (20)

Benutzer

Route Methode Beschreibung
/api/users GET Paginierte Benutzerliste
/api/users/[wallet] GET User-Detail mit Tickets, Vouchers, Affiliates

Query-Parameter (users): - page (default: 1) - limit (default: 50, max: 100) - search (Wallet/E-Mail/Name)

Settlements

Route Methode Beschreibung
/api/settlements GET Paginierte Settlement-Historie

Query-Parameter: page, limit

Buy Intents

Route Methode Beschreibung
/api/intents GET Paginierte Kaufabsichten

Query-Parameter: page, limit, status (CREATED/SIGNED/EXECUTING/CONFIRMED/FAILED), buyer

Gutscheine

Route Methode Beschreibung
/api/vouchers GET Paginierte Voucher-Liste
/api/vouchers POST Bonus-Gutschein erstellen
/api/vouchers/stats GET Voucher-Statistiken nach Typ

POST-Body:

{
  "buyer": "0x...",
  "amount": 10,
  "type": "marketing_bonus",
  "reason": "Re-Engagement Kampagne"
}

Validierung: - Amount: 1-100 - Marketing-Bonus: Max. 3 aktive pro Spieler (konfigurierbar) - Marketing-Bonus: Automatisch 30 Tage Ablauf

Affiliates

Route Methode Beschreibung
/api/affiliates GET Paginierte Affiliate-Beziehungen

Query-Parameter: page, limit

Winners

Route Methode Beschreibung
/api/winners GET Paginierte Gewinner-Auszahlungen

Query-Parameter: page, limit, player, dayId, claimed (true/false), minAmount

Response enthält zusätzlich: Summary mit total_winners, unique_players, total_payouts, claimed/unclaimed counts

Errors

Route Methode Beschreibung
/api/errors GET Fehler-Übersicht mit Aggregation

Query-Parameter: page, limit, type (intents/userlogs)

Contracts

Route Methode Beschreibung
/api/contracts GET Echtzeit-Contract-Balances (On-Chain)

Keine Query-Parameter — liefert immer alle 12 Contracts mit aktuellen Balances.

Watchdog

Route Methode Beschreibung
/api/watchdog GET System-Health, Alerts, Check-Historie

Response-Struktur:

{
  "runs": [...],      // Letzte 20 Watchdog-Runs
  "openAlerts": [...], // Ungelöste Alerts
  "recentAlerts": [...], // Letzte 50 Alerts
  "checks": [...]     // 9 statische System-Checks
}

Workers

Route Methode Beschreibung
/api/workers GET Cron-Job-Status und Logs

Query-Parameter: worker (einzelner Worker-Name für Detail-Log)

Seeds

Route Methode Beschreibung
/api/seeds GET VRF/Drand-Seed-Status und Historie

Response: Current seeds (on-chain), ticket counter, threshold, worker status, letzte 20 Updates

Maintenance

Route Methode Beschreibung
/api/maintenance GET Maintenance-Mode-Status
/api/maintenance PUT Maintenance-Mode umschalten

Konfiguration

Route Methode Beschreibung
/api/config GET Alle Konfigurationsschlüssel
/api/config POST Neuen Key anlegen
/api/config PUT Key aktualisieren
/api/config DELETE Key löschen

Charity

Route Methode Beschreibung
/api/charity/rounds GET Alle Voting-Runden
/api/charity/rounds POST Neue Runde erstellen
/api/charity/rounds/[id] GET Runden-Detail mit Votes
/api/charity/rounds/[id] PUT Rundenstatus ändern
/api/charity/projects GET Projekte einer Runde
/api/charity/projects POST Projekt hinzufügen
/api/charity/projects DELETE Projekt löschen

Test Players

Route Methode Beschreibung
/api/testplayers GET Test-Player-Logs

Query-Parameter: type (alerts/runlog)

Standard-Pagination

Alle paginierten Endpoints folgen diesem Schema:

// Request
GET /api/endpoint?page=1&limit=50

// Response
{
  "data": [...],
  "total": 234,
  "page": 1,
  "limit": 50
}
  • page: Min. 1 (default: 1)
  • limit: Min. 1, max. 100 (default: 50)
  • offset: Berechnet als (page - 1) * limit

Fehlerbehandlung

Alle Endpoints verwenden einheitliches Error-Format:

{ "error": "Beschreibung des Fehlers" }
Status Bedeutung
400 Ungültige Parameter
401 Nicht authentifiziert
404 Ressource nicht gefunden
409 Konflikt (z.B. Marketing-Bonus-Limit)
500 Interner Serverfehler