Premiers pas

Authentification

IVGraph utilise deux méthodes d'authentification : les jetons JWT (pour les utilisateurs web via OAuth de Notion) et les jetons de service (pour les agents LLM et l'automatisation).

OAuth de Notion (JWT)

IVGraph authentifie les utilisateurs via le flux OAuth2 de Notion. Il n'y a pas d'inscription par nom d'utilisateur et mot de passe.

Déroulement

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

Jetons JWT

Jeton Durée de validité Utilisation
Jeton d'accès 4 heures Authentification auprès de l'API
Jeton de renouvellement 7 jours Obtenir un nouveau jeton d'accès

Utiliser le jeton d'accès :

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

Renouveler un jeton expiré :

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

Réponse :

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

Déconnexion (mise sur liste noire du jeton de renouvellement) :

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

Points de terminaison d'authentification

Méthode Point de terminaison Description
GET /api/integrations/auth/notion/ Démarrer le flux OAuth de Notion
GET /api/integrations/auth/notion/callback Rappel OAuth (interne)
GET /api/integrations/auth/notion/status Vérifier l'état OAuth
POST /api/auth/refresh/ Renouveler le jeton d'accès
POST /api/auth/logout/ Mettre le jeton de renouvellement sur liste noire
GET /api/auth/validate/ Vérifier la validité du jeton
GET /api/auth/me/ Obtenir les informations de l'utilisateur actuel

Jetons de service (pour les agents LLM)

Les jetons de service offrent un accès de longue durée, limité à des périmètres d'accès définis, à l'API V1 en lecture seule. Ils sont conçus pour les agents LLM, les scripts d'automatisation et les pipelines CI/CD.

Format des jetons

  • Préfixe : ivg_ (par exemple, ivg_a1b2c3d4e5f6...)
  • Longueur : 32 caractères aléatoires après le préfixe
  • Stockage : seul le hachage SHA-256 est stocké dans la base de données — le jeton brut n'est affiché qu'une fois, à sa création

Créer un jeton

Via l'API (authentification JWT requise) :

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
  }'

Réponse (le jeton n'est affiché qu'une seule fois !) :

{
  "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"
}

Périmètres d'accès

Périmètre d'accès Autorisations
graph:search Rechercher des nœuds par titre
graph:read Lire les détails des nœuds et le contenu des pages
graph:neighbors Obtenir les voisins et parcourir les chemins

Limites

  • Maximum de 10 jetons par utilisateur
  • Chaque jeton doit avoir au moins un périmètre d'accès
  • Chaque jeton doit avoir au moins un workspace_id (accès refusé par défaut)
  • Expiration facultative (expires_in_days) — omettez ce paramètre pour un jeton sans expiration

Gestion des jetons

Méthode Point de terminaison Description
GET /api/tokens/ Lister vos jetons (sans les valeurs brutes)
POST /api/tokens/ Créer un nouveau jeton
DELETE /api/tokens/<id>/ Révoquer un jeton (définitivement)