Primeiros passos

Autenticação

O IVGraph usa dois métodos de autenticação: tokens JWT (para usuários da web via OAuth do Notion) e tokens de serviço (para agentes LLM e automação).

OAuth do Notion (JWT)

O IVGraph autentica usuários pelo fluxo OAuth2 do Notion. Não há cadastro com nome de usuário e senha.

Fluxo

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

Tokens JWT

Token Validade Finalidade
Token de acesso 4 horas Autenticação na API
Token de renovação 7 dias Obter um novo token de acesso

Como usar o token de acesso:

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

Como renovar um token expirado:

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

Resposta:

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

Sair (adicionar o token de renovação à lista de bloqueio):

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

Endpoints de autenticação

Método Endpoint Descrição
GET /api/integrations/auth/notion/ Iniciar o fluxo OAuth do Notion
GET /api/integrations/auth/notion/callback Callback OAuth (interno)
GET /api/integrations/auth/notion/status Verificar o status do OAuth
POST /api/auth/refresh/ Renovar o token de acesso
POST /api/auth/logout/ Adicionar o token de renovação à lista de bloqueio
GET /api/auth/validate/ Verificar se o token é válido
GET /api/auth/me/ Obter informações do usuário atual

Tokens de serviço (para agentes LLM)

Os tokens de serviço oferecem acesso de longa duração, com escopos definidos, à API V1 de somente leitura. São projetados para agentes LLM, scripts de automação e pipelines de CI/CD.

Formato do token

  • Prefixo: ivg_ (por exemplo, ivg_a1b2c3d4e5f6...)
  • Comprimento: 32 caracteres aleatórios após o prefixo
  • Armazenamento: apenas o hash SHA-256 é armazenado no banco de dados — o token em texto puro é exibido uma única vez, na criação

Criar um token

Via API (requer autenticação JWT):

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

Resposta (o token é exibido apenas uma vez!):

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

Escopos

Escopo Permite
graph:search Buscar nós pelo título
graph:read Ler os detalhes do nó e o conteúdo da página
graph:neighbors Obter nós vizinhos e percorrer caminhos

Limites

  • Máximo de 10 tokens por usuário
  • Cada token deve ter pelo menos um escopo
  • Cada token deve ter pelo menos um workspace_id (acesso negado por padrão)
  • Expiração opcional (expires_in_days) — omita para que não expire

Gerenciamento de tokens

Método Endpoint Descrição
GET /api/tokens/ Listar seus tokens (sem os valores em texto puro)
POST /api/tokens/ Criar um novo token
DELETE /api/tokens/<id>/ Revogar o token (permanentemente)