Files
website/README.md
bytedream ce01746dd7
All checks were successful
deploy / build-and-deploy (push) Successful in 13s
rewrite website
2025-10-13 17:22:49 +02:00

168 lines
7.1 KiB
Markdown

## API
> Wenn die env variable `API_SECRET` gesetzt ist, muss jede API Request den HTTP Header `Authorization: Basic <API_SECRET>` haben.
<details>
<summary><code>POST</code> <code>/api/feedback</code> (Erstellt Feedbackformulare)</summary>
##### 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
}[]
}
```
</details>
<details>
<summary><code>POST</code> <code>/api/report</code> (Erstellt einen Report)</summary>
##### 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
}
```
</details>
<details>
<summary><code>PUT</code> <code>/api/report</code> (Erstellt einen Abgeschlossenen Report)</summary>
##### 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
`/`
</details>
<details>
<summary><code>GET</code> <code>/api/player</code> (Status eines Spielers)</summary>
##### 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,
}[]
}
```
</details>
## 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 | <pre>x-webhook-action: signup</pre> | <pre>{<br>&nbsp;&nbsp;// Vorname des Nutzers<br>&nbsp;&nbsp;firstname: string,<br>&nbsp;&nbsp;// Nachname des Nutzers<br>&nbsp;&nbsp;lastname: string,<br>&nbsp;&nbsp;//Geburtstag des Nutzers im YYYY-MM-DD format<br>&nbsp;&nbsp;birthday: string,<br>&nbsp;&nbsp;// Telefonnummer des Nutzers. `null` wenn keine angegeben wurde<br>&nbsp;&nbsp;telephone: string \| null,<br>&nbsp;&nbsp;// Spielername des Nutzers<br>&nbsp;&nbsp;username: string,<br>&nbsp;&nbsp;// Minecraft-Edition des Nutzers<br>&nbsp;&nbsp;edition: 'java' \| 'bedrock'</pre> |
| Ein neuer Report wurde erstellt | <pre>x-webhook-action: report</pre> | <pre>{<br>&nbsp;&nbsp;// Username des Reporters. `null` wenn der Report vom System gemacht wurde<br>&nbsp;&nbsp;reporter: string \| null,<br>&nbsp;&nbsp;// Username des reporteten Spielers. `null` wenn Spieler unbekannt ist<br>&nbsp;&nbsp;reported: string \| null,<br>&nbsp;&nbsp;// Grund des Reports<br>&nbsp;&nbsp;reason: string<br>}</pre> | |
| Ein Team hat ein Strike bekommen | <pre>x-webhook-action: strike</pre> | <pre>{<br>&nbsp;&nbsp;// UUIDs aller Nutzer des Teams, das einen Strike bekommen hat<br>&nbsp;&nbsp;"users": string[],<br>&nbsp;&nbsp;// Gewichtung aller Strikes, die das Team insgesamt bekommen hat<br>&nbsp;&nbsp;"totalWeight": number<br>}</pre> |