Zum Hauptinhalt springen

Inventarverwaltung

Das Inventar ist die zentrale Datenbank aller von IDIAL verwalteten Endpoints. Es speichert Verbindungsparameter, Zugangsdaten, Zertifikatsstatus und PKI-Zuweisung für jedes verwaltete Gerät.

hinweis

Das Inventar enthält zwischengespeicherte Informationen aus dem letzten Monitoring-Lauf — keine Live-Daten der Endpoints. Um die Daten zu aktualisieren, einen Monitoring-Lauf über POST /gds/monitor/crt auslösen.

Das Feld service identifiziert das Verbindungsprotokoll für jeden Eintrag:

  • gds-push-<identifier> — OPC UA GDS Push Protokoll. Der <identifier> ist geräte- und firmwarespezifisch.
  • ssh-<identifier> — SSH-basiertes Zertifikatsmanagement.
  • rest-<identifier> — REST API-basiertes Zertifikatsmanagement.

GET /inventory

Gibt die vollständige Liste aller Inventareinträge über alle Service-Typen zurück (GDS, SSH usw.). Inaktive Geräte werden ausgeschlossen, sofern show_inactive_devices nicht über POST /systeminfo aktiviert wurde.

Authentifizierung: X-API-Key erforderlich

Anfrage

curl -X GET http://localhost:5000/inventory \
-H "X-API-Key: your-api-key"

Antwort 200

[
{
"id": 1,
"name": "PLC Line 1",
"url": "opc.tcp://192.168.1.10:4840",
"service": "gds-push-siemens",
"server": "192.168.1.10",
"port": 4840,
"device_status": 1,
"device_status_name": "active",
"pki_endpoint": "est-production",
"username": "admin",
"cert_subjectdn": "CN=plc-line1,O=ExampleCorp,C=DE",
"cert_issuerdn": "CN=Issuing CA,O=ExampleCorp,C=DE",
"cert_validfrom": "2025-01-01 00:00:00",
"cert_validto": "2026-01-01 00:00:00",
"cert_base64": "MIIDxDCC...",
"cert_expdays": 241,
"cert_revoked": false,
"renewal_days": 30,
"security_policy": 8,
"security_mode": 2,
"security_policys": ["Basic256Sha256"],
"security_modes": ["SignAndEncrypt"]
}
]

Antwortfelder

FeldTypBeschreibung
idintegerInterner Datenbankbezeichner.
namestring | nullAnzeigename des Endpoints.
urlstringVollständige Verbindungs-URL (z. B. opc.tcp://host:port).
servicestringService-Typ-Bezeichner.
serverstringIP-Adresse oder DNS-Hostname des Endpoints.
portintegerNetzwerkport des Endpoints.
device_statusinteger | null0 = inaktiv, 1 = aktiv, 2 = gelöscht. Siehe Parameter-Referenz.
device_status_namestring | nullMenschenlesbarer Statusname.
pki_endpointstring | nullKonfigurierte PKI-Endpoint-ID für die Zertifikatsausstellung.
usernamestring | nullKonfigurierter Benutzername für die Endpoint-Authentifizierung.
cert_subjectdnstring | nullSubject DN des aktuell am Endpoint aktiven Zertifikats.
cert_issuerdnstring | nullIssuer DN des aktuell am Endpoint aktiven Zertifikats.
cert_validfromstring | nullBeginn der Zertifikatsgültigkeit.
cert_validtostring | nullEnde der Zertifikatsgültigkeit.
cert_base64string | nullDER-kodiertes Zertifikat als Base64.
cert_expdaysinteger | nullTage bis zum Ablauf des Zertifikats.
cert_revokedboolean | nullGibt an, ob das Zertifikat widerrufen wurde.
renewal_daysinteger | nullTage vor Ablauf, ab denen eine Erneuerung ausgelöst wird.
security_policyinteger | nullSecurity-Policy-Bitmaske. Siehe Parameter-Referenz.
security_modeinteger | nullSecurity-Mode-Bitmaske. Siehe Parameter-Referenz.
security_policysstring[]Menschenlesbare Security-Policy-Namen.
security_modesstring[]Menschenlesbare Security-Mode-Namen.

POST /inventory

Fügt einen rohen Eintrag über einen Low-Level-db_connect.py-Payload in die Datenbank ein. Für fortgeschrittene oder Legacy-Anwendungsfälle. Erzwingt das Lizenz-Endpoint-Limit für GDS-, OPC- und SSH-Tabellen.

Authentifizierung: X-API-Key erforderlich

Anfragefelder

FeldTypPflichtBeschreibung
tablestringJaZieltabellenname. Muss gds, opc, ssh, pki oder ca enthalten.
addstringJaJSON- oder String-Payload zum Hinzufügen.

Antwort 200

{"success": true, "execution": "ok", "error": "", "result": null}

PATCH /inventory

Aktualisiert einen rohen Eintrag in der Datenbank über einen Low-Level-db_connect.py-Payload.

Authentifizierung: X-API-Key erforderlich

Anfragefelder

Identisch mit POST /inventory.

Antwort 200

Identisch mit POST /inventory.


GET /gds/inventory

Gibt alle GDS (OPC UA) Inventareinträge zurück. Inaktive Geräte werden ausgeschlossen, sofern show_inactive_devices nicht aktiviert wurde.

Authentifizierung: X-API-Key erforderlich

Anfrage

curl -X GET http://localhost:5000/gds/inventory \
-H "X-API-Key: your-api-key"

Antwort 200

Array von Inventarobjekten. Format entspricht GET /inventory.


POST /gds/inventory

Legt einen neuen GDS-Inventareintrag an. Erzwingt das Lizenz-Endpoint-Limit.

Authentifizierung: X-API-Key erforderlich

Anfrage

curl -X POST http://localhost:5000/gds/inventory \
-H "X-API-Key: your-api-key" \
-H "Content-Type: application/json" \
-d '{
"server": "192.168.1.10",
"port": 4840,
"name": "PLC Line 1",
"security_policy": 8,
"security_mode": 2,
"renewal_days": 30
}'

Anfragefelder

FeldTypPflichtBeschreibung
serverstringJaHostname oder IP-Adresse des Endpoints.
portinteger (1–65535)NeinOPC UA Port (Standard: 4840).
namestringNeinAnzeigename.
userinfo_namestringNeinAuthentifizierungsbenutzername. Muss mit userinfo_password kombiniert werden.
userinfo_passwordstringNeinAuthentifizierungspasswort (nur schreiben).
userinfo_pkcs12_base64string (≥ 160 Zeichen)NeinBase64-kodiertes PKCS#12 für Zertifikatsauthentifizierung (nur schreiben).
userinfo_pkcs12_passwordstring (≤ 1024 Zeichen)NeinPasswort für die PKCS#12-Datei (nur schreiben).
device_statusinteger (0/1/2)NeinGerätestatus.
pkiinteger ≥ 0NeinID des zugeordneten PKI-Inventareintrags.
security_policyintegerNeinSecurity-Policy-Bitmaske. Siehe Parameter-Referenz.
security_modeintegerNeinSecurity-Mode-Bitmaske. Siehe Parameter-Referenz.
renewal_daysinteger ≥ 0NeinTage vor Ablauf, ab denen eine Erneuerung ausgelöst wird.

Antwort 200

Angelegter Inventareintrag. Format entspricht GET /inventory.


PATCH /gds/inventory

Aktualisiert einen vorhandenen GDS-Inventareintrag. Der Eintrag wird über server + port identifiziert.

Authentifizierung: X-API-Key erforderlich

Anfragefelder

Identisch mit POST /gds/inventory. Alle Felder sind optional, außer server.

Antwort 200

Aktualisierter Inventareintrag. Format entspricht GET /inventory.


GET /gds/inventory/{host_or_url}

Gibt einen einzelnen GDS-Inventareintrag anhand von Host oder URL zurück.

Authentifizierung: X-API-Key erforderlich

Pfadparameter

Der Parameter {host_or_url} akzeptiert:

  • Hostname oder IP: 192.168.1.10
  • Host und Port: 192.168.1.10:4840
  • Vollständige OPC UA URL: opc.tcp://192.168.1.10:4840

Antwort 200

Einzelner Inventareintrag. Format entspricht GET /inventory.


DELETE /gds/inventory/{host_or_url}

Löscht einen GDS-Inventareintrag und alle zugehörigen Zugangsdaten.

Authentifizierung: X-API-Key erforderlich

Antwort 200

Gelöschter Inventareintrag. Format entspricht GET /inventory.


POST /gds/inventory/user

Schreibt Benutzerzugangsdaten (Benutzername/Passwort oder PKCS#12) für einen GDS-Inventareintrag. Erstellt den Eintrag, falls er noch nicht existiert.

Authentifizierung: X-API-Key erforderlich

Anfragefelder

FeldTypPflichtBeschreibung
serverstringJaHostname oder IP-Adresse.
portinteger (1–65535)NeinPort (Standard: 4840).
userinfo_namestringNeinAuthentifizierungsbenutzername.
userinfo_passwordstringNeinAuthentifizierungspasswort (nur schreiben).
userinfo_pkcs12_base64string (≥ 160 Zeichen)NeinBase64-kodiertes PKCS#12 (nur schreiben).
userinfo_pkcs12_passwordstring (≤ 1024 Zeichen)NeinPKCS#12-Passwort (nur schreiben).

Antwort 200

Inventareintrag. Format entspricht GET /inventory.


PATCH /gds/inventory/user

Aktualisiert Benutzerzugangsdaten für einen vorhandenen GDS-Inventareintrag.

Authentifizierung: X-API-Key erforderlich

Anfragefelder

Identisch mit POST /gds/inventory/user.

Antwort 200

Aktualisierter Inventareintrag. Format entspricht GET /inventory.


GET /gds/inventory/trustlist

Gibt die im Inventar gespeicherten GDS-Trust-List-Daten für alle verwalteten Endpoints zurück.

Authentifizierung: X-API-Key erforderlich

Anfrage

curl -X GET http://localhost:5000/gds/inventory/trustlist \
-H "X-API-Key: your-api-key"

Antwort 200

[
{
"url": "opc.tcp://192.168.1.10:4840",
"trustlist_trusted_ca": ["MIIBxDCC..."],
"trustlist_trusted_crl": [],
"trustlist_issuer_ca": ["MIIBxDCC..."],
"trustlist_issuer_crl": []
}
]

Antwortfelder

FeldTypBeschreibung
urlstringOPC UA Verbindungs-URL des Endpoints.
trustlist_trusted_castring[]Vertrauenswürdige Endpoint-Zertifikate.
trustlist_trusted_crlstring[]CRLs für vertrauenswürdige Zertifikate.
trustlist_issuer_castring[]Aussteller-CA-Zertifikate.
trustlist_issuer_crlstring[]CRLs für CA-Zertifikate.

GET /ssh/inventory

Gibt alle SSH-Inventareinträge zurück.

Authentifizierung: X-API-Key erforderlich

Antwort 200

Array von Inventarobjekten. Format entspricht GET /inventory.