82224a769f95884362ef961d34a3dacab0cfc0bb
deploy / build-and-deploy (push) Successful in 21s
API
Wenn die env variable
API_SECRETgesetzt ist, muss jede API Request den HTTP HeaderAuthorization: Basic <"api:<API_SECRET>" as base64>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
}[]
}
GET /api/reports (Alle Reports)
Path Parameters
/
Response Codes
| http code | beschreibung |
|---|---|
| 200 | / |
| 401 | Es wurde ein falsches API Secret angegeben |
Response Body
{
"reports": {
// Die UUID des Report Erstellers
"reporter": string,
// Die UUID des reporteten Spielers oder null falls ein unbekannter Spieler reportet wurde
"reported": string | null,
// Grund des Reports
"reason": string,
// Wann der Report abgeschickt wurde als UTC Millisekunden oder null falls der Report noch nicht abgeschickt wurde (=> kann noch bearbeitet werden)
"created": number | null,
// Status des Reports, "open" wenn er gerade bearbeitet wird, "closed" falls er bearbeitet wurde, null wenn nichts von beidem
"status": "open" | "closed" | null,
// Url zum Report auf der Website
"url": string
}[]
}
POST /api/reports (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/reports (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
}
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
/
POST /api/users (Erstellt einen neuen Spieler)
Request Body
{
// Vorname des Spielers
"firstname": string,
// Nachname des Spielers
"lastname": string,
// Geburtstag im YYYY-MM-DD Format
"birthday": string,
// Telefonnummer des Spielers
"phone": string | null,
// Minecraft-Username
"username": string,
// Minecraft-UUID mit Bindestrichen
"uuid": string,
// Minecraft-Edition
"edition": "java" | "bedrock",
// Einladungscode einer direkten Einladung (optional)
"code": string | null | undefined
}
Response Codes
| http code | beschreibung |
|---|---|
| 201 | Der User wurde erstellt |
| 400 | Der Request Body ist falsch |
| 401 | Es wurde ein falsches API Secret angegeben |
| 404 | Der Einladungscode existiert nicht |
| 409 | Der Einladungscode wurde bereits verwendet oder der User (Username oder UUID) existiert bereits |
GET /api/users/{uuid} (Status eines Spielers)
Path Parameters
| parameter | beschreibung |
|---|---|
uuid |
UUID eines Spielers |
Response Codes
| 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
{
// Vorname des Spielers
firstname: string,
// Nachname des Spielers
lastname: string,
// Nutzername des Spielers
username: string,
// UUID des Spielers
uuid: string,
// Liste aller Strikes, die der Spieler hat
strikes: {
// UTC Timestamp wann der Strike erstellt wurde
"at": number,
// Strike Gewichtung
"weight": number,
}[]
}
GET /api/users/{uuid}/reports (Reports eines Spielers)
Path Parameters
| parameter | beschreibung |
|---|---|
uuid |
UUID eines Spielers |
Response Codes
| 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
{
// Alle Reports, die der Spieler selber erstellt hat
"from_self": {
// Die UUID des reporteten Spielers oder null falls ein unbekannter Spieler reportet wurde
"reported": string | null,
// Grund des Reports
"reason": string,
// Wann der Report abgeschickt wurde als UTC Millisekunden oder null falls der Report noch nicht abgeschickt wurde (=> kann noch bearbeitet werden)
"created": number | null,
// Status des Reports, "open" wenn er gerade bearbeitet wird, "closed" falls er bearbeitet wurde, null wenn nichts von beidem
"status": "open" | "closed" | null,
// Url zum Report auf der Website
"url": string
}[],
// Alle Reports, die gegen den Spieler erstellt wurden
"to_self": {
// Die UUID des Spielers, der den Report erstellt hat oder null falls der Report vom System kommt
"reporter": string | null,
// Grund des Reports
"reason": string,
// Wann der Report abgeschickt wurde als UTC Millisekunden oder null falls der Report noch nicht abgeschickt wurde (=> kann noch bearbeitet werden)
"created": number | null,
// Status des Reports, "open" wenn er gerade bearbeitet wird, "closed" falls er bearbeitet wurde, null wenn nichts von beidem
"status": "open" | "closed" | null,
// Url zum Report auf der Website
"url": string
}[]
}
Webhook
Die env variable
WEBHOOK_ENDPOINTmuss gesetzt und eine valide HTTP URL sein. Es können auch mehrere Endpoints gesetzt sein, dafür müssen die URLs mit einem komma getrennt 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 |
{ |
| Ein neuer Report wurde erstellt | x-webhook-action: report |
{ |
| Ein neuer Strike wurde erstellt | x-webhook-action: strike |
{ |
Environment Variables
| Name | Default | Beschreibung |
|---|---|---|
HOST |
0.0.0.0 |
Bind-Adresse des Webservers |
PORT |
8080 |
Port des Webservers |
ROOT_URL |
http://localhost:4321 |
Vollständige öffentliche URL inklusive Subpath |
DATABASE_URI |
- | MariaDB URI. Muss gesetzt sein. |
API_SECRET |
- | Basic-Auth-Passwort für externe API-Endpunkte. Ohne Wert ist die API-Authentifizierung deaktiviert |
ADMIN_USER |
- | Benutzername für den default Admin User. Ohne Wert ist der Admin User deaktiviert |
ADMIN_PASSWORD |
- | Passwort für den default Admin User. Ohne Wert ist der Admin User deaktiviert |
ADMIN_COOKIE |
muelleel |
Name des Admin-Session-Cookies |
UPLOAD_PATH |
- | Verzeichnis für Report-Anhänge. Ohne Wert sind Uploads deaktiviert |
VIDEO_PATH |
- | Verzeichnis für Videos. Ohne Wert sind die Video-Routen deaktiviert |
HOMEPAGE_TRAILER_URL |
- | URL des Trailers, der auf der Startseite per Iframe eingebettet wird |
CACHE_PATH |
OS-Temp-Verzeichnis | Verzeichnis für generierte Caches, z.B. Video Thumbnails |
MAX_UPLOAD_BYTES |
20971520 |
Maximale Gesamtgröße aller Report-Anhänge eines Reports in Bytes |
START_DATE |
1970-01-01 |
Startdatum/Startzeit für Countdown und Anmeldung |
WEBHOOK_ENDPOINT |
- | Kommaseparierte Liste von Webhook-URLs |
STATISTICS_ENDPOINT |
- | Endpoint für Live-Statistiken. Ohne Wert werden keine Statistiken geladen |
STATISTICS_INTERVAL |
1800 |
Abfrageintervall für Live-Statistiken in Sekunden |
TEAMSPEAK_LINK |
http://example.com |
Link zum TeamSpeak-Server |
DISCORD_LINK |
http://example.com |
Link zum Discord-Server |
PAYPAL_LINK |
http://example.com |
Link für PayPal Spenden |
SERVER_IP |
http://example.com |
Öffentliche Minecraft-Server-Adresse |
OPENXBL_API_KEY |
- | API-Key für die Xbox-/Bedrock-UUID-Suche. Ohne Key schlägt die Bedrock-UUID-Ermittlung fehl |
LOG_LEVEL |
Dev: debug, Prod: warn |
Log-Level, als trace, debug, info, warn oder error |
Languages
TypeScript
39.4%
Svelte
36%
Astro
21.1%
Nix
1.5%
JavaScript
1.3%
Other
0.7%