InGrid-API
Allgemeines¶
Die InGrid-API dient als zentrale Schnittstelle für die InGrid-Datensätze. Sie befindet sich noch in der Entwicklung und wird derzeit nur vom InGrid Portal verwendet.
Die InGrid-API liefert die Ergebnisse aus verschiedenen Datenquellen aufgearbeitet zurück, so dass diese vom Portal dargestellt werden können. Den kompletten Funktionsumfang erfahren Sie weiter unten.
Systemvoraussetzungen¶
| Systembestandteil | Anforderung | |
|---|---|---|
| Hardware | Arbeitsspeicher | 128 MB RAM |
| Festplattenspeicher | 80 MB frei | |
| Prozessor | Dual Core CPU | |
| Software | Java | Java 25 |
| Elasticsearch | Version 9.x | |
| Keycloak | Version 26.x |
Installation¶
Info
Neben der InGrid-API muss zusätzlich Elasticsearch eingerichtet werden.
Die Installation der InGrid-API kann mit Docker, RPM oder direkt aus dem GitHub-Repository erfolgen. Im Folgenden sind Beispiele und Anleitungen dazu aufgelistet.
Docker¶
-
Docker-Image
Zur Installation kann das folgende Docker-Image verwendet werden:
ingrid-api:
image: registry.opencode.de/informationgrid/ingrid-api
restart: unless-stopped
environment:
- ES_HOST=elastic
- ES_USERNAME=elastic
- ES_PASSWORD=admin
RPM¶
Info
Schauen Sie sich auch die allgemeinen Informationen für das Installieren von RPMs hier an: Link
Installieren Sie das RPM über den folgenden Befehl:
Bearbeiten Sie die Datei application.yaml im Verzeichnis /opt/ingrid/ingrid-api und konfigurieren Sie die Einträge für ktor.deployment.port, ktor.elasticsearch und ktor.keycloak. Starten Sie danach die InGrid API über den folgenden Befehl:
sudo systemctl start ingrid-api
# wenn automatisch gestartet werden soll beim Neustart des Systems
sudo systemctl enable ingrid-api
From Source¶
Um die InGrid-API direkt auf einem System zu installieren, müssen folgende Vorbedingungen erfüllt sein:
- Elasticsearch 9.x
- Gradle 8.x
- Java 25
Die Installation der InGrid-API (z.B. nach /opt/ingrid/ingrid-api) erfolgt dann mit diesen Schritten:
InGrid-API klonen und bauen¶
git clone https://github.com/informationgrid/ingrid-api
cd ingrid-api
./gradlew clean buildFatJar -x test
InGrid-API installieren¶
InGrid-API starten¶
Konfiguration¶
Umgebungsvariablen¶
Alle Umgebungsvariablen im Überblick
| Variable | Hinweis | Defaultwert |
|---|---|---|
| AUTH_DISABLED | Login für die Adminseite deaktivieren | false |
| CONTEXT_PATH | Der Kontextpfad unter dem die API laufen soll | / |
| DEVELOPMENT | Startet die Anwendung im Entwicklungsmodus | false |
| ES_HOST | Die IP/URL zur Elasticsearch Instanz | localhost |
| ES_PORT | Der Port, unter dem Elasticsearch erreichbar ist | 9200 |
| ES_HTTPS | Wenn Elasticsearch unter HTTPS erreichbar ist, dann muss diese Option gesetzt werden | false |
| ES_USERNAME | Wenn abgesichert, dann kann hier der Benutzername definiert werden | |
| ES_PASSWORD | Wenn abgesichert, dann kann hier das Passwort definiert werden | |
| INDEX_PREFIX | Definiere einen Präfix für Elasticsearch Indizes, um diese vorzufiltern. | |
| KEYCLOAK_CLIENT_ID | Die Client-ID für die InGrid-API in Keycloak. | ingrid-api |
| KEYCLOAK_CLIENT_SECRET | Das Client-Secret für die Verbindung der InGrid-API zu Keycloak. | |
| KEYCLOAK_REALM | Der Realm der in Keycloak verwendet werden soll. | InGrid |
| SESSION_SECURE | Speichern des Session-Cookies als Secure | true |
| KEYCLOAK_SERVER_URL | Die URL zu Keycloak | http://localhost:8080 |
| SESSION_SIGN_KEY | Ein Schlüssel für die Signatur des Session-Cookies |
REST-API¶
Es folgt eine Auflistung mit den möglichen REST-Anfragen für das Codelist-Repository. Über die Swagger-UI kann die aktuelle API ebenfalls abgerufen werden. Diese ist erreichbar unter http(s)://<ingrid-api>/portal
| Typ | Anfrage | Beschreibung |
|---|---|---|
| GET | /portal/catalogs | Alle Katalog, die mindestens einen Datensatz beinhalten |
| GET | /portal/catalogs/{id}/hierarchy | Hierarchische Struktur der Datensatzes eines Katalogs mit der angegebenen id |
| POST | /portal/search | Enthält eine Elasticsearch-Suchanfrage im Body und gibt dessen Ergebnis zurück. Es wird automatisch auf den aktivierten Indizes gesucht. |