API fournies par Fess
Ce document décrit les API Web (v2) fournies par Fess. En utilisant ces API, vous pouvez intégrer Fess comme serveur de recherche dans vos systèmes Web existants ou dans des applications monopage (SPA).
Note
Dans Fess 15.7, l’API a été remaniée en v2. L’ancienne API de recherche JSON /api/v1 et l’API de chat ont été supprimées et fusionnées dans /api/v2. Les clients utilisant /api/v1 doivent migrer vers /api/v2.
URL de base
Les points de terminaison de l’API v2 de Fess sont fournis à l’URL de base suivante.
Par exemple, dans un environnement local :
Enveloppe de réponse
Toutes les réponses JSON de la v2 sont retournées dans une structure d’enveloppe commune.
response.status indique le résultat du traitement, en reprenant la convention de la v1.
Tableau : Valeurs de status
Notez que response.status >= 1 correspond toujours à un code de statut HTTP 400 ou supérieur.
Noms des champs
Toutes les clés JSON — corps de requête, corps de réponse et données d’événements SSE inclus — utilisent le format snake_case.
Réponse d’erreur
En cas d’erreur, un objet error est ajouté à l’enveloppe.
Tableau : Éléments de error
Codes d’erreur et codes de statut HTTP
Le code de statut HTTP par défaut est déterminé en fonction de error.code.
Tableau : Liste des codes d’erreur
Note
La réponse method_not_allowed est accompagnée d’un en-tête Allow listant les méthodes HTTP acceptées.
Authentification et session
L’API v2 utilise une authentification basée sur les sessions. La connexion s’effectue via POST /auth/login ; en cas de succès, une session est établie et un jeton CSRF est émis. L’état d’authentification actuel peut être consulté via GET /auth/me. Pour plus de détails, voir API d’authentification et de session.
Les points de terminaison qui ne nécessitent pas de connexion, comme la recherche, peuvent être utilisés de manière anonyme (selon la configuration app.login.required, etc.).
Jeton CSRF
Les requêtes modifiant l’état (POST / PUT / DELETE) nécessitent l’en-tête X-Fess-CSRF-Token. Le jeton CSRF peut être obtenu de la manière suivante.
Champ
csrf_tokendans la réponse dePOST /auth/loginRéponse de
GET /ui/config(champcsrf_tokenlorsquecsrf_required=true)
Le jeton est renouvelé à chaque connexion, déconnexion ou changement de mot de passe.
Note
La vérification CSRF est effectuée avant l’authentification. Par conséquent, une requête de modification d’état sans session valide ni jeton CSRF valide recevra 403 forbidden plutôt que 401 auth_required. /auth/login est exclu de la vérification CSRF car aucun jeton n’existe avant la connexion.
Format de streaming
Certains points de terminaison retournent des réponses en format de streaming plutôt qu’en JSON ordinaire.
| Point de terminaison | Content-Type | Description |
/chat/stream | text/event-stream | Server-Sent Events (SSE). Pour plus de détails, voir Chat API. |
/documents/all | application/x-ndjson | NDJSON (chaque ligne est un document au format {"data":{...}}. En cas d’échec en cours de stream, la dernière ligne sera {"error":{...}}). Pour plus de détails, voir API de recherche. |
Tableau : Formats de streaming
Types d’API
Fess fournit les API v2 suivantes.
| search | API de recherche de documents, de liste d’étiquettes et de récupération complète (défilement). |
| suggest | API de récupération des mots suggérés. |
| popularword | API de récupération des mots populaires. |
| related | API de récupération des requêtes associées et du contenu associé. |
| monitor | API de récupération de l’état du serveur (cluster du moteur de recherche). |
| auth | API d’authentification et de gestion de session (connexion, déconnexion, récupération de l’état d’authentification, changement de mot de passe). |
| ui | API de récupération de la configuration initiale (paramètres d’interface) pour les SPA. |
| favorite | API de gestion des documents favoris. |
| click | API d’enregistrement des clics sur les résultats de recherche. |
| cache | API de récupération du contenu en cache d’un document. |
| chat | API d’accès à la fonctionnalité de mode de recherche IA (chat RAG). |
Tableau : Types d’API