Web API
Über die LOGINventory Web API lassen sich mittels HTTP Requests Daten aus der LOGINventory-Datenbank abfragen und in die Datenbank schreiben. Diese Art der Schnittstelle ist für verschiedene Anwendungsszenarien geeignet, z.B. um einzelne Live-Daten mit einem anderen System direkt aus LOGINventory zu holen, um Massen-Exporte in Drittsysteme vorzunehmen, oder Daten aus anderen Systemen direkt in LOGINventory zu schreiben. Mögliche Szenarien werden unten genauer beschrieben.
Von der Web API gibt es dabei zwei verschiedene Varianten:
- die Allgemeine REST API (Allgemeine Web API) ermöglicht den Voll-Zugriff auf alle Daten aus LOGINventory. Wenn diese API aktiviert wurde, kann von einem Nutzer, der über die LOGINventory-Berechtigungsstufe Administrator verfügt, auf alle Daten zugegriffen werden, ohne dass dafür Endpunkte definiert werden müssen.
- über explizit anzulegende Web API Endpunkte kann genau definiert werden, welche Nutzer auf welche Daten lesend über den jeweiligen Endpunkt zugreifen dürfen. Damit kann der Zugriff z.B. auf bestimmte Geräte oder bestimmte Eigenschaften dieser Geräte beschränkt werden.
Wichtig
Die unterstützen Befehle zum Abrufen / Schreiben von Daten über die Allgemeine Web API inklusive Beispiel-Requests und Beispiel-Antworten finden Sie in unserer Postman Collection.
Voraussetzungen
Damit der Zugriff auf die Web API möglich ist, muss zunächst der Web Viewer veröffentlicht sein. Falls der Web Viewer bereits in einer Version veröffentlicht war, in der die Web API Funktionalität noch nicht enthalten war, kann ein erneutes Veröffentlichen des Web Viewers notwendig sein. Dies wird jedoch auch beim Aktivieren eines Web API Endpunkts geprüft.
Aktivieren der Allgemeinen Web API
Nur, wenn in den Anwendungsspezifischen Einstellungen der Haken zum Aktivieren der Allgemeinen Web API gesetzt wurde, ist ein Zugriff auf diese möglich. Der Haken ist standardmäßig nicht gesetzt.
Einrichtung von Web API Endpunkten
Nur Nutzer, die über die LOGINventory-Berechtigungsstufe Administrator verfügen, können Endpunkte anlegen oder bearbeiten.
Um den Zugriff über die Web API zu ermöglichen, muss ein Web API Endpunkt veröffentlicht werden.
Wichtig
Ein Web API Endpunkt definiert den "Einsprungspunkt" für Zugriffe. Die Abfrage, auf der der Endpunkt definiert wird, bestimmt damit welche Daten über die API abgefragt werden können. Ebenso sind durch den Endpunkt auch die Ergebnismengen der Abfragen unterhalb des Einsprungspunkts erreichbar, sodass auch Daten zu mehrere 1:n-Beziehungen aus der Datenbank abgerufen werden können.
Aktivieren eines Web API Endpunkts
Web API Endpunkte können auf allen Abfragen in der Baumstruktur positioniert werden. Die Ergebnismenge der Abfrage bestimmt dabei, welche Daten über den Endpunkt erreichbar sind.
Um den Endpunkt auf einer Abfrage einzurichten, kann über das Ribbon-Menü Knoten-Eigenschaften zum Reiter Web API navigiert werden.
In diesem Menü stehen dann die Optionen zur Verfügung, den Endpunkt zu aktivieren, einen eindeutigen Namen zu vergeben und optional einen Filter-Pfad zu spezifizieren.
Der vergebene Name findet sich dann auch in der Web API URL wieder, unter welcher die Daten abgerufen werden können. Die URL kann über einen entsprechenden Button in die Zwischenablage kopiert werden.
Info
Optional besteht in diesem Dialog auch die Möglichkeit mit Hilfe des Filter Pattern Generators eine URL zu erstellen, die einen Filter enthält. So kann mit Hilfe des Generators eine Filterbedingung erstellt werden, die dann in die URL "übersetzt" wird. Diese Funktion kann hilfreich zu sein, um Drittsysteme anzubinden, die nicht die komplette Ergebnismenge abrufen sollen, sondern z.B. nur die Daten zu einem bestimmten Gerät.Der Filter Pattern Generator muss jedoch nicht verwendet werden, um eine gefilterte URL zu erstellen. Wenn Ihnen die Syntax bekannt ist, können Sie beim Abruf der Daten ebenso Filter an die URL hinzufügen, ohne dass diese vorher im Generator erstellt wurden.
Definition der Datenstruktur
Wie bereits eingangs erwähnt, stehen über den Web API Endpunkt die Daten zur Verfügung, die in der Ergebnismenge der Abfrage enthalten sind. Das bedeutet, dass sowohl die Spalten-Auswahl der Abfrage, als auch im Abfrage-Editor definierte Filterbedingungen beachtet werden.
Info
Vom Nutzer definierte Anpassungen des Layouts, wie Spaltenreihenfolgen, Ausblenden von Spalten oder Filter in der Datenansicht, haben keinen Einfluss auf die über den Endpunkt zur Verfügung stehenden Daten.
Wenn unterhalb der Abfrage, auf der der Endpunkt eingerichtet wurde, sich andere Abfragen befinden, dann sind die Ergebnismengen dieser Abfragen ebenso über den Endpunkt abrufbar. Auf diese Weise können also auch mehrere 1:n-Beziehungen zur Basistabelle der Abfrage über den Endpunkt abgerufen werden, also z.B. zu einem Gerät sowohl Geräte-Detail (1:1-Beziehung) als auch Informationen zu den dort vorhandenen Softwarepaketen (1:n-Beziehung) und den verbauten Arbeitsspeicher-Riegeln (1:n-Beziehung).
Wichtig
Unterhalb von Device-Abfragen können nur Abfragen verwendet werden, deren Basistabelle eine direkte Navigation zur Entität Device hat. Dies sind meistens Abfragen, deren Basistabelle auf Info
endet, z.B. SoftwarePackageInfo
oder MemoryModuleInfo
. Alle Abfragen, die sich in der Baumstruktur unterhalb von Software, Hardware oder Konfiguration im Unterordner "Abfrage-Listen" befinden, erfüllen dieses Kriterium. Daher können bei Bedarf diese Abfragen unter den Abfrage-Knoten mit dem Endpunkt kopiert werden.
Andere Abfragen, zu denen keine direkte Navigation besteht, z.B. mit Basistabelle SoftwarePackage
lassen sich zwar in der Baumstruktur unterhalb eines Knotens mit Endpunkt einfügen, ein JSON-Export ist jedoch nicht möglich. Ob der Export funktioniert, kann in LOGINventory getestet weren, indem auf dem Knoten mit dem Endpunkt im Ribbon-Menü Schnell-Export die Option Json Export gewählt wird und der Export ohne Fehlermeldung durchläuft.
Übersicht der aktivierten Endpunkte
Alle aktivierten Endpunkte werden unterhalb des Knotens Web API Endpunkte aufgelistet. Von hier aus ist es auch möglich, die Endpunkte zu bearbeiten oder wieder zu deaktivieren, wenn kein Zugriff darüber mehr möglich sein soll.
Zugriff auf die Web API
Mittels HTTP Requests können von der allgemeinen Web API oder einem aktivierten Web API Endpunkt (nur GET-Requests) Daten abgerufen werden. Die Antwort im JSON-Format sieht z.B. wie folgt aus:
[
{
"DeviceInfo": {
"ChassisType": "Rack Mount Chassis"
},
"LastInventory": {
"Ip": "192.168.200.26",
"Timestamp": "2022-06-02T10:56:28.763"
},
"Name": "DEKAN",
"Software-Pakete": [
{
"Name": "HP Officejet Pro 8620 Basic Device Software",
"Version": "32.3.198.49673"
},
{
"Name": "HP Officejet Pro 8620 Help",
"Version": "32.0.0"
}
],
"RAM-Module": [
{
"Name": "PROC 1 DIMM 2A",
"SerialNumber": "61FF05E6",
"Size": 16384,
"Speed": "1333"
},
{
"Name": "PROC 1 DIMM 1D",
"SerialNumber": "CC176230",
"Size": 2048,
"Speed": "1333"
}
]
},
...
Test der Verbindung mittels Web Browser
Mittels eines Web-Browsers kann die entsprechende Endpunkt-URL auch aufgerufen werden, falls der verwendete Nutzer (bzw. der im Falle von Windows-Authentifizierung eingeloggte Nutzer) dazu autorisiert ist.
Authentifizierung
Achtung
Nach Veröffentlichen des Web Viewers sind standardmäßig nur "ASP.NET-Identitätswechsel" und "Windows-Authentifizierung" aktiviert. Wenn der verwendete Client keine Windows-Authentifizierung unterstützt, muss ggf. die "Standardauthentifizierung" in den IIS-Einstellungen (Ausführen von inetmgr
) noch für die LOGINventory-Seite aktiviert werden.
Mittels Standardauthentifizierung (Basic Authentication) - also Benutzername und Passwort - (Achtung: nur wenn vorher aktiviert!) oder integrierter Windows-Authentifizierung kann der Zugriff auf die Web API autorisiert werden. Der verwendete User muss auf der Abfrage in LOGINventory selbst berechtigt sein (= die Abfrage muss für den Nutzer freigegeben sein), damit die Daten abgerufen werden können.
Info
Falls keine Rollen in LOGINventory vergeben wurden, kann jeder Nutzer auf alle Daten in LOGINventory zugreifen und somit auch Daten über die allgemeine Web API oder einen Web API Endpunkt abrufen.
Ein Nutzer, der nicht für einen Zugriff auf die entsprechende Abfrage berechtigt ist, kann keine Daten über den Endpunkt abrufen und erhält eine Fehlermeldung.
Um die Verbindung auch ohne Benutzername und Passwort zu erlauben, kann in den IIS-Einstellungen (Ausführen von inetmgr
) die Anonyme Authentifizierung aktiviert werden.
Allgemeine Web API: Syntax und Beispiele
Um auf die Allgemeine Web API zuzugreifen wird eine URL wie http://my-loginventory-server/LOGINventory9/api/v1/
verwendet, wohingegen der Zugriff auf Endpunkte immer noch zusätzlich die Strings data/endpoint-name
enthält, also z.B. http://my-loginventory-server/LOGINventory9/api/data/endpoint1
.
Wie bei Abfragen, muss ein Request zur Allgemeinen Web API auch eine Basistabelle beinhalten. Häufig verwendete Basistabellen sind
- Device zur Abfrage von gescannten Geräten
- PeripheralDevice zur Abfragen von Peripherie-Geräten
- HardwareAsset zur Abfrage von sowohl Devices als auch PeripheralDevices (siehe Klassenhierarchie "HardwareAsset")
- User zur Abfrage von Daten zu Nutzern
- SoftwarePackage zur Abfragen von Daten zu Software-Paketen
- UserAccount zur Abfragen von Daten zu Nutzer-Konten laut Active Directory
Die Basistabelle wird an die URL angefügt.
Zusätzlich können
- nur bestimmte Einträge gewählt werden, indem deren ID mit einem
/
angefügt wird. - Filterbedingungen hinzugefügt werden, indem als Parameter
filter={BEDINGUNG}
angefügt wird. - nur bestimmte Eigenschaften gewählt werden, indem als Parameter
select=EIGENSCHAFT(EN)
angefügt wird. - Pfade angegeben werden, falls es zwischen zwei Entitäten mehrere Pfade gibt, indem an die Navigation
(Path=PFADNAME)
angefügt wird.
Tipp
Anstatt sich die URL selbst zusammenzubauen, ist es häufig deutlich einfacher zu einer entsprechenden Abfrage in LOGINventory zu navigieren: In den Knoten-Eigenschaften (zu erreichen über das Ribbon-Menü Knoten-Eigenschaften im Reiter Web API) kann dort direkt eine URL kopiert werden, die die Auswahl der Eigenschaften, Filter und Pfade beachtet:
Für einen API-Request, der die gleiche Ergebnismenge wie die Abfrage "Windows Clients" zurückliefert, lautet die URL also http://VT-WINDOWS10/LOGINventory9/api/v1/Device?filter={"Device":"[OperatingSystem.OperatingSystem.Platform] = 'Windows' And [OperatingSystem.OperatingSystem.Name] Not Like '%Server%' And [LastInventory.Method] <> 'EAS'"}&select=Archived,DeviceInfo.ChassisType,LastInventory.Ip,DeviceInfo.MemorySizeGB,Meta.Modified,Name,Cpu.Cpu.Name,HardwareProduct.HardwareProduct.Name,OperatingSystem.OperatingSystem.Name,Owner.Name,OperatingSystem.ReleaseID,SerialNumber,LastInventory.Timestamp,DeviceInfo.VmRunsOnHost
Wichtig
Die unterstützen Befehle zum Abrufen / Schreiben von Daten über die Allgemeine Web API inklusive Beispiel-Requests und Beispiel-Antworten finden Sie in unserer Postman Collection als auch in der folgenden API Definition.
Anwendungsszenarien
Massen-Export in andere Systeme
Um in einem Drittsystem (z.B. einer CMDB zur Modellierung von Abhängigkeiten zwischen den System) die Daten aus LOGINventory zu nutzen, stehen verschiedene Export-Mechanismen zur Verfügung. Gegenüber dem csv-Export bietet der Export via Web API Endpunkt die Möglichkeit auch mehrere 1:n-Beziehungen in einem Datensatz zu exportieren, sodass also zu einem Gerät z.B. auch die Daten zu allen installierten Software-Pakten, angeschlossenen Monitoren und Partitionsbelegungen abgefragt werden können. Weiterhin ist somit nicht nur ein Zeitplan-gesteuerter Push der Daten, sondern ein Pull der Daten möglich. Um einen solchen Export vorzubereiten kann z.B. wie folgt vorgegangen werden:
- In LOGINventory wird eine neue Abfrage-Struktur definiert, die genau die Spalten enthält, die ins Drittsystem exportiert werden sollen. Wenn mehrere 1:n-Beziehungen zu einem Gerät exportiert werden sollen, werden entsprechende Abfragen unterhalb der ersten Abfrage erstellt (siehe Definition der Datenstruktur).
- Auf der neuen Abfrage wird über die Knoten-Eigenschaften ein neuer Web API Endpunkt eingerichtet.
- Das Drittsystem importiert die Daten regelmäßig mittels HTTP GET Request und aktualisiert so bei Bedarf den internen Datenbestand.
Live-Anbindung einzelner Datensätze
Um in einem Drittsystem (z.B. einem Helpdesk), das ebenfalls wie LOGINventory, Daten zu Computern anzeigt, weitere Informationen aus der Inventarisierung abzurufen eignet sich die Anbindung mittels HTTP Requests. Dazu bieten sich beide Varianten der Web API an:
Verwendung der Allgemeinen Web API
Über die Allgemeine Web API kann auf alle Datensätze zugegriffen werden, ohne dass vorher ein Endpunkt in LOGINventory definiert werden muss. So könnten z.B. zu einem Geräte-Namen weitere Eigenschaften, wie Modell, Seriennummer, Betriebssystem-Name, etc. abgerufen und in einem Drittsystem weiterverarbeitet werden.
Ebenso können Daten aus Drittsystem direkt nach LOGINventory geschrieben werden, z.B.
- wenn ein neues Gerät bestellt wurde, kann dieses direkt in LOGINventory angelegt und die Rechnung hinterlegt werden.
- wenn in einem Ticket-System ein Ticket erstellt / bearbeitet wird, können relevante Informationen zum Ticket in einem Lifecycle-Eintrag in LOGINventory hinterlegt werden.
- wenn der Status eines Geräts in einem anderen System aktualisiert wird, kann dieser direkt in eine Eigene Eigenschaft geschrieben werden.
- wenn ein Gerät in einem anderen System gelöscht oder archiviert wird, kann dies ebenso automatisch in LOGINventory geschehen.
Verwendung eines Web API Endpunkts
- In LOGINventory wird eine neue Abfrage definiert, die genau die Spalten enthält, die im Drittsystem angezeigt werden sollen, z.B. Name des Geräts (Device.Name), Betriebssystem (OperatingSystem.Name), IP-Adresse (LastInventory.IP), Standort (Eigene Eigenschaft Custom.Standort) und Datum des letzten Boots (OperatingSystem.LastBoot). Eine Filterung in der Abfrage selbst ist nicht nötig.
- Auf dieser Abfrage wird über die Knoten-Eigenschaften ein neuer Web API Endpunkt eingerichtet.
- Im Helpdesk ist bereits der Name des betroffenen Geräts bekannt; die anderen Werte sollen dynamisch "live" aus LOGINventory abgefragt werden. Es sollen also nicht die Ergebnisse aller Geräte abgefragt werden, sondern nur jeweils die eines bestimmten Geräts. Dazu kann über den Filter Pattern Generator eine URL generiert werden, die exemplarisch auf ein bestimmtest Gerät filter (z.B.
Device.Name = PC123
). Die entstandene URL kann vom Drittsystem verwendet werden, um die Daten des Geräts "PC123" abzurufen. - Um die Daten eines anderen Geräts abzurufen muss in der URL der Text "PC123" durch den Namen des jeweiligen Geräts ersetzt werden.
Direkte Anbindung an andere Systeme
In Ihrem Unternehmen wird eine Software eingesetzt, die auf ähnliche Weise wir hier beschrieben angebunden werden soll? Kontaktieren Sie gerne die Hersteller der Software und stellen den Kontakt zu uns her. Wir sind gerne bereit, bei der Anbindung unterstützend zur Seite zu stehen.