Ressourcen

Fehler & Anfragelimits

Fehlerformat

Bei allen API-Fehlern wird JSON mit dieser Struktur zurückgegeben:

{
  "error": "Short error description",
  "detail": "Extended description (optional)"
}

Einige Endpunkte (mit den Standardeinstellungen des Django REST Framework) können auch Folgendes zurückgeben:

{
  "detail": "Error message"
}

HTTP-Statuscodes

Status Bedeutung Wann
200 OK Anfrage erfolgreich
400 Ungültige Anfrage Fehlende oder ungültige Parameter
401 Nicht authentifiziert Authentifizierungstoken fehlt, ist abgelaufen oder ungültig
403 Zugriff verweigert Token hat nicht den erforderlichen Berechtigungsumfang oder keinen Zugriff auf den Workspace
404 Nicht gefunden Ressource existiert nicht oder der Workspace enthält keine synchronisierten Daten
405 Methode nicht erlaubt Falsche HTTP-Methode für den Endpunkt
422 Nicht verarbeitbare Entität Validierung des Anfrageinhalts fehlgeschlagen
429 Zu viele Anfragen Anfragelimit überschritten
500 Interner Serverfehler Unerwarteter Serverfehler
503 Dienst nicht verfügbar Elasticsearch oder eine andere Abhängigkeit ist ausgefallen

Anfragelimits

V1-API (Service-Tokens)

Kategorie Limit Geltungsbereich
Kurzzeitlimit 20 Anfragen / 10 Sekunden Pro Token
Zeitfenster 600 Anfragen / 15 Minuten Pro Token

Benutzer-API (JWT)

Kategorie Limit Geltungsbereich
Authentifiziert 100 Anfragen / Minute Pro Benutzer
Anonym 20 Anfragen / Minute Pro IP

Header für Anfragelimits

Wenn eine Anfrage aufgrund eines Anfragelimits begrenzt wird, enthält die Antwort Folgendes:

HTTP/1.1 429 Too Many Requests
Retry-After: 30

Umgang mit Anfragelimits: Warte die in Retry-After angegebene Zeit (in Sekunden) ab, bevor du es erneut versuchst. Implementiere bei wiederholten 429-Antworten exponentiell steigende Wartezeiten.

Häufige Fehlerszenarien

Authentifizierungsfehler

// Missing Authorization header
{"detail": "Authentication credentials were not provided."}

// Invalid or expired JWT
{"detail": "Given token not valid for any token type", "code": "token_not_valid"}

// Invalid service token
{"error": "Invalid or revoked service token."}

// Expired service token
{"error": "Token has expired."}

Berechtigungsfehler

// Token missing required scope
{"error": "Token does not have the required scope: graph:search"}

// Workspace not in token's allowed list
{"error": "Workspace not allowed for this token."}

Validierungsfehler

// Missing required parameter
{"error": "workspace_id is required."}

// Invalid UUID format
{"error": "Invalid node_id format."}

// Query too long (V1 API)
{"error": "Query too long (max 256 characters)."}

// Disallowed characters in query
{"error": "Query contains disallowed characters."}

Ressourcenfehler

// Workspace not synced
{"error": "No synced data found for this workspace."}

// Node not found
{"error": "Node not found."}

// Elasticsearch unavailable
{"error": "Search service unavailable."}