Zum Inhalt

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

Beispiel docker-compose.yml
  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:

sudo dnf install ingrid-api

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

mv build/libs/ingrid-api-all.jar /opt/ingrid/ingrid-api
cd /opt/ingrid/ingrid-api

InGrid-API starten

java -jar ingrid-api-all.jar

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.