Erste Schritte

Authentifizierung

IVGraph nutzt zwei Authentifizierungsmethoden: JWT-Tokens (für Nutzer der Webanwendung über Notion OAuth) und Service-Tokens (für LLM-Agenten und Automatisierung).

Notion OAuth (JWT)

IVGraph authentifiziert Nutzer über den OAuth2-Ablauf von Notion. Eine Registrierung mit Benutzername und Passwort gibt es nicht.

Ablauf

User clicks "Sign in with Notion"
        |
        v
GET /api/integrations/auth/notion/
        |  -> Redirects to Notion consent screen
        v
User authorizes IVGraph in Notion
        |
        v
Notion redirects to /api/integrations/auth/notion/callback?code=...
        |  -> Backend exchanges code for Notion token
        |  -> Creates/updates Django user
        |  -> Issues JWT tokens
        v
Redirect to dashboard with tokens in URL fragment

JWT-Tokens

Token Gültigkeitsdauer Zweck
Access-Token 4 Stunden API-Authentifizierung
Refresh-Token 7 Tage Neues Access-Token abrufen

Access-Token verwenden:

curl -H "Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9..." \
  "https://ivgraph.com/api/notion-graph/"

Abgelaufenes Token erneuern:

curl -X POST "https://ivgraph.com/api/auth/refresh/" \
  -H "Content-Type: application/json" \
  -d '{"refresh": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9..."}'

Antwort:

{"access": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9..."}

Abmelden (Refresh-Token sperren):

curl -X POST "https://ivgraph.com/api/auth/logout/" \
  -H "Authorization: Bearer <access_token>" \
  -H "Content-Type: application/json" \
  -d '{"refresh": "<refresh_token>"}'

Authentifizierungsendpunkte

Methode Endpunkt Beschreibung
GET /api/integrations/auth/notion/ Notion-OAuth-Ablauf starten
GET /api/integrations/auth/notion/callback OAuth-Callback (intern)
GET /api/integrations/auth/notion/status OAuth-Status prüfen
POST /api/auth/refresh/ Access-Token erneuern
POST /api/auth/logout/ Refresh-Token sperren
GET /api/auth/validate/ Gültigkeit des Tokens prüfen
GET /api/auth/me/ Informationen zum aktuellen Nutzer abrufen

Service-Tokens (für LLM-Agenten)

Service-Tokens ermöglichen langfristigen Zugriff auf die schreibgeschützte V1-API mit festgelegten Berechtigungsbereichen. Sie sind für LLM-Agenten, Automatisierungsskripte und CI/CD-Pipelines konzipiert.

Token-Format

  • Präfix: ivg_ (z. B. ivg_a1b2c3d4e5f6...)
  • Länge: 32 zufällige Zeichen nach dem Präfix
  • Speicherung: In der Datenbank wird nur der SHA-256-Hash gespeichert – das Token im Klartext wird nur einmal beim Erstellen angezeigt

Token erstellen

Über die API (JWT-Authentifizierung erforderlich):

curl -X POST "https://ivgraph.com/api/tokens/" \
  -H "Authorization: Bearer <jwt_access_token>" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "My LLM Agent",
    "scopes": ["graph:search", "graph:read", "graph:neighbors"],
    "workspace_ids": ["your-workspace-uuid"],
    "expires_in_days": 90
  }'

Antwort (das Token wird nur einmal angezeigt!):

{
  "id": 1,
  "name": "My LLM Agent",
  "token": "ivg_a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6",
  "prefix": "ivg_a1b2c3",
  "scopes": ["graph:search", "graph:read", "graph:neighbors"],
  "workspace_ids": ["your-workspace-uuid"],
  "is_active": true,
  "created_at": "2026-04-10T12:00:00Z",
  "expires_at": "2026-07-09T12:00:00Z"
}

Berechtigungsbereiche

Berechtigungsbereich Erlaubt
graph:search Knoten nach Titel suchen
graph:read Knotendetails und Seiteninhalte lesen
graph:neighbors Benachbarte Knoten abrufen und Pfade durchlaufen

Limits

  • Maximal 10 Tokens pro Nutzer
  • Jedes Token muss mindestens einen Berechtigungsbereich haben
  • Jedes Token muss mindestens eine workspace_id haben (Zugriff standardmäßig verweigert)
  • Optionales Ablaufdatum (expires_in_days) – für unbegrenzte Gültigkeit weglassen

Tokens verwalten

Methode Endpunkt Beschreibung
GET /api/tokens/ Deine Tokens auflisten (ohne Klartextwerte)
POST /api/tokens/ Neues Token erstellen
DELETE /api/tokens/<id>/ Token widerrufen (dauerhaft)