bytedream 81d1f6c82c
All checks were successful
deploy / build-and-deploy (push) Successful in 15s
fix selected menu item not updating correctly
2025-10-13 18:49:38 +02:00
2025-10-13 18:09:48 +02:00
2025-10-13 18:24:12 +02:00
2025-10-13 18:09:48 +02:00
2025-10-13 18:09:48 +02:00
2025-10-13 18:09:48 +02:00
2025-10-13 18:09:48 +02:00
2025-10-13 18:09:48 +02:00
2025-10-13 18:09:48 +02:00
2025-10-13 18:09:48 +02:00
2025-10-13 18:09:48 +02:00

API

Wenn die env variable API_SECRET gesetzt ist, muss jede API Request den HTTP Header Authorization: Basic <API_SECRET> haben.

POST /api/feedback (Erstellt Feedbackformulare)
Request Body
{
  // Interner Event Name (oder ID)
  "event": string,
  // Event Titel, wird über dem Feedbackformular angezeigt
  "title": string,
  // UUIDs aller Spieler, die das Feedback ausfüllen sollen
  "users": string[]
}
Response Codes
http code beschreibung
200 /
400 Der Request Body ist falsch
401 Es wurde ein falsches API Secret angegeben
Response Body
{
  "feedback": {
    // UUID eines Spieler
    "uuid": string
    // URL zum Feedbackformular
    "url": string
  }[]
}
POST /api/report (Erstellt einen Report)
Request Body
{
  // UUID des Report Erstellers
  "reporter": string,
  // UUID des Reporteten Spielers
  "reported": string | null,
  // Report Grund
  "reason": string
}
Response Codes
http code beschreibung
200 /
400 Der Request Body ist falsch
401 Es wurde ein falsches API Secret angegeben
404 Der Report Ersteller, oder der reportete Spieler, existiert nicht
Response Body
{
  // URL, wo der Ersteller den Report abschicken kann
  "url": string
}
PUT /api/report (Erstellt einen Abgeschlossenen Report)
Request Body
{
  // UUID des Reporters. Wenn `null`, wird der Reporter als System interpretiert
  "reporter": string | null,
  // UUID des Reporteten Spielers
  "reported": string,
  // Report Grund
  "reason": string,
  // Inhalt des Reports
  "body": string | null,
  // Interne Notiz
  "notice": string | null,
  // Öffentliches Statement
  "statement": string | null,
  // ID des Strikegrundes
  "strike_reason_id": number
}
http code beschreibung
200 /
400 Der Request Body ist falsch
401 Es wurde ein falsches API Secret angegeben
404 Der Report Ersteller, oder der reportete Spieler, existiert nicht
Response Body

/

GET /api/player (Status eines Spielers)
Request Body
{
  // UUID eines Spielers
  "user": string
}
http code beschreibung
200 /
400 Der Request Body ist falsch
401 Es wurde ein falsches API Secret angegeben
404 Der Spieler existiert nicht
Response Body
{
  // Liste aller Strikes, die der Spieler hat
  strikes: {
    // UTC Timestamp wann der Strike erstellt wurde
    "at": number,
    // Strike Gewichtung
    "weight": number,
  }[]
}

Webhook

Die env variable WEBHOOK_ENDPOINT muss gesetzt und eine valide HTTP URL sein.

Bei bestimmten Aktionen wird an den Webhook Endpoint ein Webhook gesendet. Die Art des Webhooks wird dabei durch den x-webhook-action HTTP Header angegeben und hat einen festgelegten JSON Body.

Das Webhook wir so oft gesendet, bis der angegebene Webhook Endpoint eine Response mit Status 200 zurücksendet.

Alle Webhooks:

Beschreibung HTTP Header Body
Ein neuer Nutzer hat sich registriert
x-webhook-action: signup
{
  // Vorname des Nutzers
  firstname: string,
  // Nachname des Nutzers
  lastname: string,
  //Geburtstag des Nutzers im YYYY-MM-DD format
  birthday: string,
  // Telefonnummer des Nutzers. null wenn keine angegeben wurde
  telephone: string | null,
  // Spielername des Nutzers
  username: string,
  // Minecraft-Edition des Nutzers
  edition: 'java' | 'bedrock'
Ein neuer Report wurde erstellt
x-webhook-action: report
{
  // Username des Reporters. null wenn der Report vom System gemacht wurde
  reporter: string | null,
  // Username des reporteten Spielers. null wenn Spieler unbekannt ist
  reported: string | null,
  // Grund des Reports
  reason: string
}
Ein Team hat ein Strike bekommen
x-webhook-action: strike
{
  // UUIDs aller Nutzer des Teams, das einen Strike bekommen hat
  "users": string[],
  // Gewichtung aller Strikes, die das Team insgesamt bekommen hat
  "totalWeight": number
}
Languages
TypeScript 40.3%
Svelte 34.8%
Astro 23%
JavaScript 1.4%
CSS 0.5%