Référence de l’API

API de recherche

IVGraph propose plusieurs modes de recherche reposant sur Elasticsearch : plein texte (BM25), autocomplétion, sémantique (vectorielle), hybride (BM25 + vectorielle) et par similarité.

Authentification : un JWT est requis pour tous les points de terminaison.

Prérequis : Elasticsearch doit être en cours d’exécution et l’espace de travail doit être indexé (l’indexation s’effectue automatiquement après la synchronisation).

Recherche plein texte

GET /api/search/

Recherchez des nœuds par titre et par contenu avec le classement BM25.

Paramètres :

Paramètre Type Obligatoire Par défaut Description
q string oui — Requête de recherche
connection_id UUID non première connexion de l’utilisateur Connexion spécifique dans laquelle effectuer la recherche
size int non 50 Nombre maximal de résultats
highlight bool non true Inclure les extraits avec surlignage
type string non all Filtre : page, database ou user

Exemple :

curl -H "Authorization: Bearer <jwt_token>" \
  "https://ivgraph.com/api/search/?q=project+planning&size=10"
import requests

resp = requests.get(
    "https://ivgraph.com/api/search/",
    headers={"Authorization": "Bearer <jwt_token>"},
    params={"q": "project planning", "size": 10}
)
results = resp.json()["results"]
const resp = await fetch(
  "https://ivgraph.com/api/search/?q=project+planning&size=10",
  { headers: { Authorization: "Bearer <jwt_token>" } }
);
const { results } = await resp.json();

Réponse :

{
  "query": "project planning",
  "total": 8,
  "results": [
    {
      "id": "550e8400-e29b-41d4-a716-446655440001",
      "type": "page",
      "title": "Project Planning Guide",
      "score": 12.5,
      "highlight": "...comprehensive <em>project</em> <em>planning</em> methodology..."
    }
  ]
}

Autocomplétion

GET /api/search/suggest/

Autocomplétion par préfixe pour une recherche au fil de la saisie.

Paramètres :

Paramètre Type Obligatoire Par défaut Description
q string oui — Préfixe (2 caractères minimum)
size int non 10 Nombre maximal de suggestions

Exemple :

curl -H "Authorization: Bearer <jwt_token>" \
  "https://ivgraph.com/api/search/suggest/?q=pro"

Réponse :

{
  "prefix": "pro",
  "suggestions": [
    {"id": "uuid-1", "title": "Project Alpha", "type": "page"},
    {"id": "uuid-2", "title": "Product Roadmap", "type": "page"},
    {"id": "uuid-3", "title": "Projects Tracker", "type": "database"}
  ]
}

Recherche sémantique

GET /api/search/semantic/

Recherche par similarité vectorielle à l’aide de plongements vectoriels. Trouve des contenus similaires sur le plan conceptuel, au-delà des simples correspondances de mots-clés.

Paramètres :

Paramètre Type Obligatoire Par défaut Description
q string oui — Requête en langage naturel
connection_id UUID non première connexion de l’utilisateur Connexion dans laquelle effectuer la recherche
size int non 10 Nombre maximal de résultats

Exemple :

curl -H "Authorization: Bearer <jwt_token>" \
  "https://ivgraph.com/api/search/semantic/?q=how+do+we+handle+user+onboarding"

Réponse :

{
  "query": "how do we handle user onboarding",
  "total": 5,
  "search_type": "semantic",
  "results": [
    {"id": "uuid-1", "type": "page", "title": "New User Welcome Flow", "score": 0.89},
    {"id": "uuid-2", "type": "page", "title": "Onboarding Checklist", "score": 0.82}
  ]
}

Recherche hybride

GET /api/search/hybrid/

Combine la recherche par mots-clés BM25 et la recherche sémantique vectorielle pour tirer le meilleur des deux approches.

Paramètres : identiques à ceux de la recherche sémantique.

Exemple :

curl -H "Authorization: Bearer <jwt_token>" \
  "https://ivgraph.com/api/search/hybrid/?q=authentication+flow"

Nœuds similaires

GET /api/search/similar/{node_id}/

Trouvez des nœuds similaires à un nœud donné à partir de plongements vectoriels.

Paramètres :

Paramètre Type Obligatoire Par défaut Description
node_id UUID oui — Identifiant du nœud source (dans le chemin de l’URL)
connection_id UUID non première connexion de l’utilisateur Connexion dans laquelle effectuer la recherche
size int non 10 Nombre maximal de résultats

Exemple :

curl -H "Authorization: Bearer <jwt_token>" \
  "https://ivgraph.com/api/search/similar/550e8400-e29b-41d4-a716-446655440001/"

Contenu d’une page

GET /api/search/content/{page_id}/

Récupérez le contenu d’une page au format Markdown et en texte brut.

Paramètres :

Paramètre Type Obligatoire Description
page_id UUID oui Identifiant de la page (dans le chemin de l’URL)

Exemple :

curl -H "Authorization: Bearer <jwt_token>" \
  "https://ivgraph.com/api/search/content/550e8400-e29b-41d4-a716-446655440001/"

Réponse :

{
  "page_id": "550e8400-e29b-41d4-a716-446655440001",
  "title": "Project Alpha",
  "markdown": "# Project Alpha\n\nMain project page...",
  "plain_text": "Project Alpha\nMain project page...",
  "has_content": true
}

Gestion des index

POST /api/search/index/

Déclenchez la réindexation de l’index Elasticsearch pour la connexion de l’utilisateur.

curl -X POST -H "Authorization: Bearer <jwt_token>" \
  "https://ivgraph.com/api/search/index/"

Réponse :

{"message": "Indexing complete", "index_name": "ivg_conn-uuid", "indexed_count": 342}

DELETE /api/search/index/

Supprimez l’index de recherche de la connexion de l’utilisateur.

curl -X DELETE -H "Authorization: Bearer <jwt_token>" \
  "https://ivgraph.com/api/search/index/"

GET /api/search/connections/

Listez tous les index de recherche de l’utilisateur.

curl -H "Authorization: Bearer <jwt_token>" \
  "https://ivgraph.com/api/search/connections/"

Réponse :

{
  "user": "username",
  "connections": [
    {
      "connection_id": "conn-uuid",
      "schema_name": "airbyte_conn_uuid",
      "index_name": "ivg_conn-uuid",
      "document_count": 342,
      "last_sync": "2026-04-10T10:00:00Z"
    }
  ]
}

Erreurs

Statut Signification
400 Paramètres de requête manquants ou non valides
401 Non authentifié
404 Connexion ou page introuvable
503 Elasticsearch indisponible