Stoat API
Die Stoat API ist ein pre-built Docker Image und kann nicht direkt modifiziert werden.
Für Custom-Funktionen → eigene Microservices erstellen (wie Profile API).
API-Basis
Intern: http://api:14702
Extern: https://chat.dreylo.com/api
Authentifizierung
# Session Token Header
X-Session-Token: SESSION_TOKEN
Bot Token Header
X-Bot-Token: BOT_TOKEN
Wichtige Endpunkte
Users
GET /users/@me → Eigenes Profil
PATCH /users/@me → Profil aktualisieren
GET /users/:id → User-Infos
GET /users/:id/profile → Profil-Daten (Bio, Banner)
Sessions
POST /auth/session/login → Einloggen (Email + Password)
GET /auth/session → Aktive Sessions
DELETE /auth/session/:id → Session löschen
Server
GET /servers/:id → Server-Infos
GET /servers/:id/members → Member-Liste
PATCH /servers/:id → Server bearbeiten (Owner)
Channels
GET /channels/:id → Channel-Infos
GET /channels/:id/messages → Nachrichten
POST /channels/:id/messages → Nachricht senden
DELETE /channels/:id/messages/:mid → Nachricht löschen
User-Profil aktualisieren (PATCH /users/@me)
const body = {};
// Felder nach Bedarf setzen:
// Anzeigename
body.display_name = "Neuer Name";
// Bio
body.profile = { content: "Meine Bio" };
// Felder entfernen (remove-Array):
body.remove = ["Avatar"]; // Avatar entfernen
body.remove = ["ProfileContent"]; // Bio entfernen
body.remove = ["ProfileBackground"]; // Banner entfernen
// ACHTUNG: Leeres remove-Array [] kann 500 verursachen!
// Besser: remove weglassen wenn nichts zu entfernen ist
// Korrekte Implementierung:
if (changes.remove?.length === 0) delete changes.remove;
await user.edit(changes);
DataEditUser TypeScript Interface
interface DataEditUser {
display_name?: string;
avatar?: string; // Autumn-File-ID
profile?: {
content?: string; // Bio Text
background?: string; // Autumn-File-ID
};
status?: {
text?: string;
presence?: "Online" | "Idle" | "Focus" | "Busy" | "Invisible";
};
remove?: FieldsUser[]; // Felder die entfernt werden sollen
}
type FieldsUser =
| "Avatar"
| "StatusText"
| "StatusPresence"
| "ProfileContent"
| "ProfileBackground"
| "DisplayName";
Curl-Beispiele
# Eigenes Profil abrufen
curl -H "X-Session-Token: TOKEN" https://chat.dreylo.com/api/users/@me
Profil aktualisieren
curl -X PATCH \
-H "X-Session-Token: TOKEN" \
-H "Content-Type: application/json" \
-d ""{"display_name": "Sylexo"}"" \
https://chat.dreylo.com/api/users/@me