189 lines
5.4 KiB
Markdown
189 lines
5.4 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/player/death</code> (Registriert einen Spielertod)</summary>
|
|
|
|
##### Request Body
|
|
|
|
```
|
|
{
|
|
// UUID des getöteten Spielers
|
|
"user": string,
|
|
// UUID des Spielers, der den Kill gemacht hat
|
|
"killer": string | null,
|
|
// Todesnachricht
|
|
"message": string
|
|
}
|
|
```
|
|
|
|
##### Response Codes
|
|
|
|
| http code | beschreibung |
|
|
| --------- | -------------------------------------------------------------------------------- |
|
|
| 200 | / |
|
|
| 400 | Der Request Body ist falsch |
|
|
| 401 | Es wurde ein falsches API Secret angegeben |
|
|
| 404 | Der getötete Spieler, oder der Spieler der den Kill gemacht hat, existiert nicht |
|
|
|
|
##### Response Body
|
|
|
|
`/`
|
|
|
|
</details>
|
|
|
|
<details>
|
|
<summary><code>POST</code> <code>/api/player/status</code> (Status eines Spielers)</summary>
|
|
|
|
##### Request Body
|
|
|
|
```
|
|
{
|
|
// UUID eines Spielers
|
|
"user": 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 oder ist in keinem Team |
|
|
|
|
##### Response Body
|
|
|
|
```
|
|
{
|
|
"team": {
|
|
// Teamname
|
|
"name": string,
|
|
// Teamfarbe in HEX
|
|
"color": string
|
|
},
|
|
// Ob der Spieler Tot ist
|
|
"dead": boolean,
|
|
// Gewichtung aller Strikes
|
|
"strikeWeight": number,
|
|
// UTC timestamp wann das Team zuletzt gejoined ist
|
|
"lastJoined": number | null
|
|
}
|
|
```
|
|
|
|
</details>
|
|
|
|
<details>
|
|
<summary><code>PUT</code> <code>/api/player/status</code> (Updatet den Status eines Spielers)</summary>
|
|
|
|
##### Request Body
|
|
|
|
```
|
|
{
|
|
// UUID eines Spieler
|
|
"user": string,
|
|
// Registriert einen neuen UTC timestamp an dem das Team zuletzt gejoined ist
|
|
"lastJoined": number
|
|
}
|
|
```
|
|
|
|
##### Response Codes
|
|
|
|
| http code | beschreibung |
|
|
| --------- | ------------------------------------------ |
|
|
| 200 | / |
|
|
| 400 | Der Request Body ist falsch |
|
|
| 401 | Es wurde ein falsches API Secret angegeben |
|
|
|
|
##### Response Body
|
|
|
|
`/`
|
|
|
|
</details>
|
|
|
|
<details>
|
|
<summary><code>POST</code> <code>/api/teams</code> (Liste aller Teams)</summary>
|
|
|
|
##### Request Body
|
|
|
|
`/`
|
|
|
|
##### Response Codes
|
|
|
|
| http code | beschreibung |
|
|
| --------- | ------------------------------------------ |
|
|
| 200 | / |
|
|
| 400 | Der Request Body ist falsch |
|
|
| 401 | Es wurde ein falsches API Secret angegeben |
|
|
|
|
##### Response Body
|
|
|
|
```
|
|
{
|
|
// Teamname
|
|
"name": string,
|
|
// Teamfarbe in HEX
|
|
"color": string,
|
|
// UUIDs aller Teammitglieder
|
|
"users": (string | null)[]
|
|
}
|
|
```
|
|
|
|
</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 Team hat ein Strike bekommen | <pre>x-webhook-action: strike</pre> | <pre>{<br> // UUIDs aller Nutzer des Teams, das einen Strike bekommen hat<br> "users": string[],<br> // Gewichtung aller Strikes, die das Team insgesamt bekommen hat<br> "totalWeight": number<br>}</pre> |
|