Von Fess bereitgestellte APIs
Dieses Dokument beschreibt die Web-API (v2), die von Fess bereitgestellt wird. Durch die Verwendung der API kann Fess auch in bestehenden Websystemen und Single-Page-Anwendungen (SPA) als Suchserver genutzt werden.
Bemerkung
In Fess 15.7 wurde die API auf v2 erneuert. Die bisherige JSON-Such-API und die Chat-API unter /api/v1 wurden abgekündigt und in /api/v2 zusammengeführt. Clients, die /api/v1 verwenden, sollten auf /api/v2 migrieren.
Basis-URL
Die v2-API-Endpunkte von Fess sind unter folgender Basis-URL erreichbar:
Beispielsweise sieht die URL in einer lokalen Umgebung wie folgt aus:
Antwort-Envelope
Alle JSON-Antworten von v2 werden in einer gemeinsamen Envelope-Struktur zurückgegeben.
response.status gibt das Verarbeitungsergebnis an und folgt der Konvention von v1.
Tabelle: Werte von status
Es gilt stets: response.status >= 1 entspricht einem HTTP-Statuscode von 400 oder höher.
Feldnamen
Alle JSON-Schlüssel – einschließlich Request-Body, Response-Body und SSE-Ereignisdaten – werden einheitlich in snake_case geschrieben.
Fehlerantwort
Im Fehlerfall wird dem Envelope ein error-Objekt hinzugefügt.
Tabelle: Elemente von error
Fehlercodes und HTTP-Statuscodes
Abhängig von error.code wird ein standardmäßiger HTTP-Statuscode zurückgegeben.
Tabelle: Liste der Fehlercodes
Bemerkung
Bei einer method_not_allowed-Antwort wird ein Allow-Header beigefügt, der die unterstützten HTTP-Methoden auflistet.
Authentifizierung und Sitzung
Die v2-API verwendet sitzungsbasierte Authentifizierung. Die Anmeldung erfolgt über POST /auth/login. Bei Erfolg wird eine Sitzung aufgebaut und ein CSRF-Token ausgestellt. Den aktuellen Authentifizierungsstatus kann man mit GET /auth/me abfragen. Details siehe Authentifizierungs- und Sitzungs-API.
Endpunkte wie die Suche, für die keine Anmeldung erforderlich ist, können anonym genutzt werden (abhängig von Einstellungen wie app.login.required).
CSRF-Token
Für zustandsändernde Anfragen (POST / PUT / DELETE) ist der X-Fess-CSRF-Token-Header erforderlich. Der CSRF-Token kann auf folgende Weise abgerufen werden:
Feld
csrf_tokenin der Antwort vonPOST /auth/loginAntwort von
GET /ui/config(Feldcsrf_token, wenncsrf_required=true)
Der Token wird bei jedem Anmelde-, Abmelde- oder Passwortänderungsvorgang rotiert.
Bemerkung
Die CSRF-Überprüfung erfolgt vor der Authentifizierung. Daher erhalten zustandsändernde Anfragen ohne gültige Sitzung und ohne gültigen CSRF-Token den Fehler 403 forbidden statt 401 auth_required. /auth/login ist von der CSRF-Überprüfung ausgenommen, da vor dem Anmelden noch kein Token vorhanden ist.
Streaming-Format
Einige Endpunkte geben Antworten im Streaming-Format statt als gewöhnliches JSON zurück.
| Endpunkt | Content-Type | Beschreibung |
/chat/stream | text/event-stream | Server-Sent Events (SSE). Details siehe Chat-API. |
/documents/all | application/x-ndjson | NDJSON (jede Zeile ist ein Dokument im Format {"data":{...}}. Nur bei einem Fehler mitten im Stream ist die letzte Zeile {"error":{...}}). Details siehe Such-API. |
Tabelle: Streaming-Formate
API-Typen
Fess stellt folgende v2-APIs bereit:
| search | API zum Suchen von Dokumenten, Abrufen von Label-Listen und vollständigem Abruf (Scroll). |
| suggest | API zum Abrufen von Vorschlagswörtern. |
| popularword | API zum Abrufen beliebter Suchbegriffe. |
| related | API zum Abrufen verwandter Abfragen und verwandter Inhalte. |
| monitor | API zum Abrufen des Status des Servers (Suchmaschinenclusters). |
| auth | API für Authentifizierungs- und Sitzungsoperationen (Anmelden, Abmelden, Authentifizierungsstatus abrufen, Passwort ändern). |
| ui | API zum Abrufen von Anfangskonfigurationen (UI-Einstellungen) für SPAs. |
| favorite | API zum Verwalten von favorisierten Dokumenten. |
| click | API zum Protokollieren von Klicks auf Suchergebnisse. |
| cache | API zum Abrufen des gecachten Dokument-Texts. |
| chat | API zur Nutzung des KI-Suchmodus (RAG-Chat). |
Tabelle: API-Typen