varo-website/README.md
bytedream 201829a523
All checks were successful
deploy / build-and-deploy (push) Successful in 28s
update team get endpoint
2025-05-18 21:11:09 +02:00

205 lines
5.8 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>GET</code> <code>/api/team</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,
// UTC timestamp wann das Team zuletzt gejoined ist
"lastJoined": number | null,
// Gewichtung aller Strikes
"strikeWeight": number,
// Spieler 1 des Teams
"memberOne": {
// UUID des Spielers
"uuid": string,
// Ob der Spieler Tot ist
"dead": boolean
} | null,
// Spieler 2 des Teams
"memberTwo": {
// UUID des Spielers
"uuid": string,
// Ob der Spieler Tot ist
"dead": boolean
} | 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>&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> |