This commit is contained in:
1 parent
3fe7a12481
commit
0259aad7fd
2 files changed
+96
-4
No files matched your search
@@ -153,6 +153,50 @@
|
|||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
|
||||||
|
<details>
|
||||||
|
<summary><code>PUT</code> <code>/api/users</code> (Erstellt einen neuen Spieler)</summary>
|
||||||
|
|
||||||
|
##### 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,
|
||||||
|
// Minecraft-Username
|
||||||
|
"username": string,
|
||||||
|
// Minecraft-UUID mit Bindestrichen
|
||||||
|
"uuid": string,
|
||||||
|
// Minecraft-Edition
|
||||||
|
"edition": "java" | "bedrock"
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
##### Response Codes
|
||||||
|
|
||||||
|
| http code | beschreibung |
|
||||||
|
| --------- | ------------------------------------------ |
|
||||||
|
| 201 | Der User wurde erstellt |
|
||||||
|
| 400 | Der Request Body ist falsch |
|
||||||
|
| 401 | Es wurde ein falsches API Secret angegeben |
|
||||||
|
| 409 | Username oder UUID existiert bereits |
|
||||||
|
|
||||||
|
##### Response Body
|
||||||
|
|
||||||
|
```
|
||||||
|
{
|
||||||
|
// ID des neuen Users
|
||||||
|
"id": number
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
</details>
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
<summary><code>GET</code> <code>/api/users/{uuid}</code> (Status eines Spielers)</summary>
|
<summary><code>GET</code> <code>/api/users/{uuid}</code> (Status eines Spielers)</summary>
|
||||||
|
|
||||||
@@ -260,8 +304,8 @@ Das Webhook wir so oft gesendet, bis der angegebene Webhook Endpoint eine Respon
|
|||||||
|
|
||||||
Alle Webhooks:
|
Alle Webhooks:
|
||||||
|
|
||||||
| Beschreibung | HTTP Header | Body |
|
| 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> // IP-Adresse des Users<br> ip: string<br>}</pre> |
|
| 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> // IP-Adresse des Users<br> ip: string<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 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> |
|
| Ein neuer Strike wurde erstellt | <pre>x-webhook-action: strike</pre> | <pre>{<br> // UUID des Spielers, der gestriked wurde</br> uuid: string<br>}</pre> |
|
||||||
@@ -0,0 +1,48 @@
|
|||||||
|
import { z } from 'astro:schema';
|
||||||
|
import { db } from '@db/database.ts';
|
||||||
|
import { externalApi } from '../_api.ts';
|
||||||
|
|
||||||
|
export const PUT = externalApi({
|
||||||
|
auth: true,
|
||||||
|
input: z.object({
|
||||||
|
firstname: z.string().trim().min(1),
|
||||||
|
lastname: z.string().trim().min(1),
|
||||||
|
birthday: z.string().date(),
|
||||||
|
phone: z.string().trim(),
|
||||||
|
username: z.string().trim().min(1),
|
||||||
|
uuid: z.string().uuid(),
|
||||||
|
edition: z.enum(['java', 'bedrock'])
|
||||||
|
}),
|
||||||
|
handler: async ({ input }) => {
|
||||||
|
const existing = await db.existsUser({
|
||||||
|
username: input.username,
|
||||||
|
uuid: input.uuid
|
||||||
|
});
|
||||||
|
|
||||||
|
if (existing) {
|
||||||
|
return new Response(JSON.stringify({ error: 'User with this username or uuid already exists' }), {
|
||||||
|
status: 409,
|
||||||
|
headers: {
|
||||||
|
'Content-Type': 'application/json'
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
const user = await db.addUser({
|
||||||
|
firstname: input.firstname,
|
||||||
|
lastname: input.lastname,
|
||||||
|
birthday: input.birthday,
|
||||||
|
telephone: input.phone || null,
|
||||||
|
username: input.username,
|
||||||
|
edition: input.edition,
|
||||||
|
uuid: input.uuid
|
||||||
|
});
|
||||||
|
|
||||||
|
return new Response(JSON.stringify({ id: user.id }), {
|
||||||
|
status: 201,
|
||||||
|
headers: {
|
||||||
|
'Content-Type': 'application/json'
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
Reference in new issue
Block a user