173 lines
7.8 KiB
Markdown
173 lines
7.8 KiB
Markdown
## API
|
|
|
|
> Wenn die env variable `API_SECRET` gesetzt ist, muss jede API Request den HTTP Header `Authorization: Basic <"api:<API_SECRET>" as base64>` 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
|
|
}
|
|
```
|
|
|
|
##### 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
|
|
|
|
`/`
|
|
|
|
</details>
|
|
|
|
<details>
|
|
<summary><code>POST</code> <code>/api/player</code> (Status eines Spielers)</summary>
|
|
|
|
##### Request Body
|
|
|
|
```
|
|
{
|
|
// UUID eines Spielers
|
|
"uuid": string
|
|
}
|
|
```
|
|
|
|
##### 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
|
|
|
|
```
|
|
{
|
|
// 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.
|
|
> 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 | <pre>x-webhook-action: signup</pre> | <pre>{<br> // Vorname des Nutzers<br> firstname: string,<br> // Nachname des Nutzers<br> lastname: string,<br> //Geburtstag des Nutzers im YYYY-MM-DD format<br> birthday: string,<br> // Telefonnummer des Nutzers. `null` wenn keine angegeben wurde<br> telephone: string \| null,<br> // Spielername des Nutzers<br> username: string,<br> // Minecraft-Edition des Nutzers<br> edition: 'java' \| 'bedrock'<br> //UUID des Nutzers. null wenn keine UUID ermittelt werden konnte<br> uuid: string \| null<br>}</pre> |
|
|
| Ein neuer Report wurde erstellt | <pre>x-webhook-action: report</pre> | <pre>{<br> // Username des Reporters. `null` wenn der Report vom System gemacht wurde<br> reporter: string \| null,<br> // Username des reporteten Spielers. `null` wenn Spieler unbekannt ist<br> reported: string \| null,<br> // Grund des Reports<br> reason: string<br>}</pre> |
|
|
| Ein neuer Strike wurde erstellt | <pre>x-webhook-action: strike</pre> | <pre>{<br> // UUID des Spielers, der gestriked wurde</br> uuid: string<br>}</pre> |
|