API Dokumentation

Umfassende Dokumentation für alle verfügbaren API-Endpunkte

Übersicht

API Base URL: https://www.craftingstudiopro.de

Die CraftingStudio Pro API bietet eine RESTful-Schnittstelle für die Integration mit verschiedenen Systemen. Alle API-Anfragen müssen im JSON-Format erfolgen.

Authentifizierung

Die meisten Endpunkte erfordern eine Authentifizierung über Session-Cookies. Einige Endpunkte erfordern zusätzlich Admin-Berechtigungen.

Response-Formate

Alle API-Antworten werden im JSON-Format zurückgegeben:

{
  "success": true,
  "data": {}
}

Fehlercodes

400 Bad Request - Ungültige Anfrage
401 Unauthorized - Nicht authentifiziert
403 Forbidden - Keine Berechtigung
404 Not Found - Ressource nicht gefunden
500 Internal Server Error - Serverfehler
Server Hosting

Unser Hosting-Dienst ist vollständig funktionstüchtig!

Du kannst Python-, Node.js- und Minecraft-Server hosten – alle 24/7 online.

Free-Server Limits

Free-Server bekommen bis zu:

6 GB RAM
RAM
6 Cores
CPU Cores
6 GB Speicher
Storage

Max-Werte, auch weniger möglich

Unterstützte Server-Typen

Minecraft Server
Paper, Spigot, Bukkit
Python Server
Python 3.x
Node.js Server
Node.js

Server erstellen

So erstellst du einen neuen Server:

1. Website öffnen → einloggen / Account erstellen
2. Oben Profil → Meine Server → Server erstellen

Admin-Freischaltung: Hinweis: Jeder Server muss von einem Admin freigeschaltet werden. Das kann bis zu 24 Stunden dauern.

Lizenz-Key System

Validiert einen Lizenz-Key für ein bestimmtes Plugin.

Lizenz-Key validieren

Validiert einen Lizenz-Key für ein bestimmtes Plugin.

POST /api/license/validate Öffentlich

Request Body

{
  "licenseKey": "PLUGIN-XXXX-XXXX-XXXX",
  "pluginId": "plugin-id"
}

Response (Erfolgreich)

{
  "valid": true,
  "purchase": {
    "id": "purchase-id",
    "userId": "user-id",
    "pluginId": "plugin-id",
    "createdAt": "2024-01-01T00:00:00.000Z"
  }
}

Response (Ungültig)

{
  "valid": false,
  "message": "Ungültiger Lizenz-Key"
}

Beispiel (JavaScript)

const response = await fetch('https://www.craftingstudiopro.de/api/license/validate', {
  method: 'POST',
  headers: {
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    licenseKey: 'PLUGIN-XXXX-XXXX-XXXX',
    pluginId: 'plugin-id'
  })
});

const result = await response.json();
if (result.valid) {
  console.log('Lizenz gültig:', result.purchase);
} else {
  console.log('Lizenz ungültig:', result.message);
}
Plugins

Erstellt ein neues Plugin. Erfordert Authentifizierung.

Plugin erstellen

Erstellt ein neues Plugin. Erfordert Authentifizierung.

POST /api/plugins/create Auth erforderlich

Request Body

{
  "name": "Mein Plugin",
  "description": "Plugin-Beschreibung in Markdown",
  "version": "1.0.0",
  "mcVersions": ["1.20.1", "1.20.2"],
  "category": "Economy",
  "tags": "economy,money",
  "downloadUrl": "https://example.com/plugin.jar",
  "sourceUrl": "https://github.com/user/plugin",
  "iconUrl": "https://example.com/icon.png",
  "donationUrl": "https://paypal.me/user",
  "languages": "de,en",
  "isPremium": false,
  "price": null,
  "useLicenseKey": false
}

Hinweis: Für Premium-Plugins ist 2FA erforderlich. Das Plugin wird nach der Erstellung auf "pending" gesetzt und muss von einem Moderator genehmigt werden.

Pflichtfelder

  • name - Name des Plugins
  • description - Beschreibung (Markdown unterstützt)
  • version - Version (semantische Versionierung, z.B. "1.0.0")
  • mcVersions - Array oder String mit unterstützten Minecraft-Versionen
Payments

Erstellt eine Stripe Checkout-Session für den Kauf eines Premium-Plugins. Erfordert Authentifizierung und 2FA.

Checkout Session erstellen

Erstellt eine Stripe Checkout-Session für den Kauf eines Premium-Plugins. Erfordert Authentifizierung und 2FA.

POST /api/payments/checkout Auth + 2FA erforderlich

Request Body

{
  "pluginId": "plugin-id"
}

Response

{
  "sessionId": "cs_test_...",
  "url": "https://checkout.stripe.com/...",
  "purchaseId": "purchase-id"
}

Webhook

Stripe sendet Webhooks an: POST /api/payments/webhook

Nach erfolgreicher Zahlung wird automatisch ein Lizenz-Key generiert (falls das Plugin useLicenseKey: true hat).

Status API

Ruft alle verfügbaren System-Metriken ab.

Metriken abrufen

Ruft alle verfügbaren System-Metriken ab.

GET /api/metric Öffentlich

Response

[
  {
    "id": "metric-id",
    "name": "API Response Time",
    "description": "Response-Zeit der API",
    "type": "api_response_time",
    "url": "/api/metric",
    "unit": "ms",
    "color": "#3b82f6",
    "createdAt": "2024-01-01T00:00:00.000Z"
  }
]

Metrik-Sammlung auslösen

Löst die automatische Sammlung von Metriken aus. Sollte von einem Cron-Job aufgerufen werden.

POST /api/metric/collect Öffentlich

Response

{
  "success": true,
  "message": "Metriken erfolgreich gesammelt"
}
Authentifizierung

Meldet einen Benutzer an. Gibt einen 2FA-Token zurück, wenn 2FA aktiviert ist.

Login

Meldet einen Benutzer an. Gibt einen 2FA-Token zurück, wenn 2FA aktiviert ist.

POST /api/login Öffentlich

Request Body

{
  "email": "user@example.com",
  "password": "password"
}

Response (Ohne 2FA)

{
  "success": true,
  "requires2FA": false,
  "user": {
    "id": "user-id",
    "email": "user@example.com",
    "name": "Username"
  }
}

Response (Mit 2FA)

{
  "requires2FA": true,
  "loginToken": "login-token",
  "message": "2FA-Code erforderlich"
}

2FA verifizieren

Verifiziert den 2FA-Code nach dem Login.

POST /api/login/verify-2fa Öffentlich

Request Body

{
  "loginToken": "login-token",
  "code": "123456"
}