Authentifizierung
Alle Anwendungs-Endpunkte unter /api sind geschützt. Anfragen müssen ein
gültiges JSON Web Token (JWT) im Authorization-Header nach dem
Bearer-Schema enthalten:
Authorization: Bearer <your_jwt_token>
Der project_id-Claim
Zyles ist mandantenfähig. Jedes JWT enthält einen project_id-Claim, und das
Backend beschränkt jeden Datenzugriff auf dieses Projekt:
- Leads, Jobs, Anrufe und andere Ressourcen sind nur innerhalb ihres Projekts sichtbar.
- Die Übergabe einer ID, die zu einem anderen Projekt gehört, liefert 401 Unauthorized zurück, nicht 404 — die API gibt nicht preis, ob die Ressource anderswo existiert.
Da das Projekt aus dem Token entnommen wird, übergeben Sie project_id niemals
in Request-Bodies — es wird serverseitig abgeleitet.
Ein Token erhalten
Tokens werden von den Authentifizierungs-Endpunkten ausgestellt (z. B. Login / Projektauswahl). Ein typischer Ablauf:
- Anmelden mit Benutzeranmeldedaten, um eine Benutzersitzung zu erhalten.
- Ein Projekt auswählen — dies liefert ein JWT zurück, das auf diese
project_idbeschränkt ist. - Verwenden Sie dieses JWT als
Bearer-Token für alle nachfolgenden API-Aufrufe.
Für lokale Tests gibt es im Backend-Repo einen mint_token-Helfer
(mint_token.py), der ein signiertes JWT für ein bestimmtes Projekt ausstellt.
Verwenden Sie ihn nur gegen Nicht-Produktionsumgebungen.
Beispiel-Anfrage
curl -X POST https://backend.zyles.ai/api/leads/add \
-H "Authorization: Bearer $ZYLES_JWT" \
-H "Content-Type: application/json" \
-d '[{"first_name":"John","last_name":"Doe","phone_number":"+49123456789"}]'
Fehlendes oder ungültiges Token
Wenn der Header fehlt, fehlerhaft ist oder das Token abgelaufen ist, liefert der
Endpunkt einen Fehler-Umschlag mit success: false zurück:
{
"success": false,
"message": "Authorization header missing"
}
{
"success": false,
"message": "Invalid or expired authentication token"
}
Das vollständige Fehlermodell finden Sie unter Fehler & Konventionen.