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) |