Skip to main content

Connect Webservice

KIX als Provider - Spezifische Endpunkte

Neben der universellen REST-API von KIX können mit dem Add-on Connect Webservice spezifische Endpunkte mit konkreten Funktionen oder, im Gegensatz zur REST-API, mit erweiterten Funktionen eingerichtet werden. Dies erfolgt im Menü Connect > Endpoints.

Anwendungsszenarien können sein:

  • Schnittstelle für die Aktualisierung von Kontakt-/Organisationen

    Das auslösende System hat keine Kenntnis über die KIX-internen Identifikatoren oder darf nur ausgewählte Informationen bereit stellen. So kann beispielsweise nur die E-Mail-Adresse eines Kontaktes oder die Nummer der Organisation bekannt sein, jedoch soll eine geänderte Anschrift, Telefonnummer oder Nachname erfasst werden.

    Die Aufgabe des Endpunktes ist es, zum übermittelten Kenner den passenden Eintrag zu ermitteln und zu aktualisieren.

  • Schnittstelle für die Aktualisierung von Asset-Daten

    Die Meldung von freiem Speicher oder dem zuletzt angemeldeten Benutzer kann direkt an KIX erfolgen, ohne dass auf eine Synchronisation der Daten durch KIX gewartet werden muss. Kritische Informationen können damit schneller und einfach am Asset bereit gestellt werden.

  • Schnittstelle für das Monitoring von Meldungen

    IT-Monitoring-Services können Störungen direkt an KIX melden. Die Meldung beinhaltet bspw. einen Geräte-Identifikator und den aktuellen Fehlerzustand.

    Mit den erweiterten Makro Actions von Connect Webservice kann nicht nur ein Ticket erstellt, sondern bei wiederholten Meldungen auch aktuelle Informationen zu einem bestehenden, offenen Ticket ergänzt werden. Eine Anbindung per Mail ist nicht erforderlich.

  • Schnittstelle für Gerätedaten bzw. Erstellung von Tickets aus unvollständigen Eingaben

    Technische Monitoring-Tools oder Geräte können Fehlerzustände an eine definierte URL melden. Übermittelt werden in der Regel nur die Gerätenummer und ein Fehlercode.

    Die Aufgabe des Endpunktes ist es, die übermittelten Daten zu vervollständigen, sodass ein Ticket mit allen notwendigen Informationen erstellt oder ein bereits bestehender Vorgang zum Gerät aktualisiert werden kann.

  • Ergänzung von Informationen an Tickets

    Mittels einer einfachen URL kann direkt eine Information ("Flag") an einem Ticket gesetzt werden. Der Klick auf die URL setzt ohne Aufruf des Self Service oder Agentenportals eine Rückmeldung ab.

    Ein konkretes Beispiel sind niedrigschwellige Genehmigungen oder Ablehnungen. Der Empfänger einer E-Mail mit einer solchen URL kann diese anklicken und somit einen Antrag direkt ablehnen oder freigeben.

    Achtung

    Der Versand der URL in einer E-Mail birgt Unsicherheiten. Jeder mit Zugriff auf die URL könnte eine Zustimmung auslösen. Daher sollte dieses Verfahren nur bei begrenzten Risiken eingesetzt werden.

Eine Übersicht aller konfigurierten Endpunkte finden Sie im Admin Modul unter Connect > Endpoints. Die Übersicht enthält zudem den Zugriff auf das jeweilige endpunktspezifische Log.

KCWS_Endpoints.png

Abb.: Übersicht der in KIX Connect eingerichteten Endpunkte

Das Log kann in der Oberfläche eingesehen oder heruntergeladen werden:

KCWS_Endpoints_Log.png

Abb.: Geöffnete Ansicht des Logfiles für einen Endpunkt

Eigene Endpunkte können Sie im Admin Modul unter Connect > Endpoints > New Endpoint einrichten. Die Einrichtung erfolgt schrittweise:

  1. Definition des Endpunktes

  2. Definition der auszuführenden Aktionen

  3. Zugriff auf die erhaltenen Parameter

Hinweis

Nachfolgend wird anhand eines vereinfachten Beispiels ein Endpunkt eingerichtet.

Im Anwendungsszenario wird ein Ticket aus unvollständigen Angaben erstellt. Die von einem Monitoring-Tool oder Gerät übermittelten Informationen wie Gerätenummer und Fehlercode werden genutzt, um aus diesen unvollständigen Angaben ein Ticket zu generieren und dabei die fehlenden Angaben zu ergänzen.

Das Beispiel dient lediglich der Veranschaulichung und erhebt keinen Anspruch auf produktive Einsatzfähigkeit.

KCWS_Endpoint-einrichten.png

Abb.: Definition des Beispiel-Endpunkts "Simple Ticket Creation"

Folgende Angaben werden in der Definition des Endpunktes hinterlegt:

Parameter

Beschreibung

Name

Name des Endpunkts

Z. B.: Simple Ticket Creation

Route

Der Endpunkt als Unterpunkt zur REST-API /api/v1/ webservices/<EndpointRoute>

Z. B.: simpleticket/:DeviceName

Mittels des Platzhalters :DeviceName kann ein Parameterwert innerhalb der URL und ohne Angabe eines Parameternamens übermittelt werden.

Im Beispiel wird der Parameter DeviceName für die Erstellung des Tickets verwendet. Sonstige Parameter werden beim Übermitteln der URL wie üblich abgetrennt. Das heißt, mit Fragezeichen, gefolgt vom Parametername und dem Wert (z. B.: ...webservices/simpleticket/0815ABC? ErrorCode=3001701;)

Authentication

Definiert, ob der Endpunkt eine Authentifizierung verlangt (aktuell noch keine verfügbar).

z. B.: none

Als Workaround kann dies über Parameterauswertung in der Macro-Verarbeitung realisiert werden.

Request Methode

Soll ein Proxy-Server angesprochen werden? Wenn ja, mit welcher Methode?

Mögliche Werte: GET | POST | PUT | PATCH | DELETE | OPTIONS | HEAD

Log Level

Detailtiefe des Logs

Mögliche Werte: error | notice | info | debug

Comment

Kurzbeschreibung des Endpunktes

z.B. Verwendungszweck, Prozesszuordnung oder relevante Gegenseite.

Gültigkeit

De-/Aktivieren des Endpunktes

Endpunktaktionen sind grundsätzlich wie Macros in Jobs aufgebaut und offerieren die gleichen Möglichkeiten.

Um auf die Inhalte eines Requests wie URL-Parameter oder den Inhalt eines POST-Requests zuzugreifen, wird die Macro-Variable ${Request} bereit gestellt. Diese beinhaltet alle Angaben des erhaltenen Requests.

Ein einfacher Endpunkt ist ein (erweitertes) Echo. Dazu verwendet das Endpunkt-Macro ausschließlich die Aktion Set Response. Diese Macro Action erlaubt die Definition des HTTP-Status Codes, der HTTP-Header sowie des zu übermittelnden Inhaltes. Die einfachste Ausprägung ist, mit einen Statuscode ohne weitere Angaben zu antworten.

KCWS_Endpoint_macro.png

Abb.: Konfiguration des "Simple Ticket Creation"-Endpunkts als Echo

Bei Verwendung des Endpunkts wird somit die vollständige Anfrage als Antwort zurück geliefert:

shell>$ curl --request GET \
--url 'http://yourkix-api.kix.cloud/api/v1/webservices/simpleticket/0815ABC?ErrorCode=3001701' \
--header 'Content-Type: application/json' \
| jq
{
  "Parameters": {
    "ErrorCode": "3001701;",
    "DeviceName": "0815ABC"
  },
  "RequestMethod": "GET",
  "ContentType": "application/json",
  "HttpUserAgent": "curl/8.1.2",
  "RequestUri": "/webservices/simpleticket/0815ABC?ErrorCode=3001701",
  "ContentLength": null,
  "Headers": {
    "Accept": "*/*"
  },
  "RemoteAddr": "::ffff:10.255.0.2",
  "RemotePort": "63873",
  "QueryString": "ErrorCode=3001701%3B"
}

Auf die Inhalte des Requests kann mit der Macro-Variable ${Request} zugegriffen werden. Ist in der Anfrage ein Parameter XYZ enthalten, so wird dieser mittels ${Request.Parameters.XYZ} abgerufen. Gleiches gilt für Inhalte des Bodys eines POST-/PUT-/PATCH-Requests.

Im folgenden Beispiel soll ein Ticket erstellt und dabei die Angaben aus dem Request genutzt werden. Dazu wird die Macro-Definition angepasst. Die erste Action ist nun der Aufruf eines Macros vom Typ Ticket, welches wiederum die TicketCreate-Aktion benutzt und deren Rückgabewert als Antwort auf den Endpunkt-Aufruf liefert.

Konfiguration der Macro:

  1. Aktion: Execute Macro

    • Macro: Ticket

    • 1. Aktion: Ticket erstellen

      • NewTicketID: NewSimpleTicketID

      • Title:

        Fehler Bericht für ${Request.Parameters.DeviceName} ${Request.Parameters.ErrorCode})

      • Artikeltext:

        Geräte Name: ${Request.Parameters.DeviceName} Fehler Code: ${Request.Parameters.ErrorCode}

      • Kontakt: admin

      • Kanal: note

      • Sender Typ: external

      • Priorität: 2 high

      • Team: Service Desk

      • Typ: Incident

  2. Aktion: Set Response

    • Status Code: 200

    • Headers: Content-Type: application/json

    • Content: {"ID": ${NewSimpleTicketID}}

KCWS_Endpoint_Zugriff_auf_Parameter.png

Abb.: Konfiguration Endpunkt-Makro mit Parameterzugriff (Teil 1)

(Für eine bessere Übersicht wurden nicht relevante Parameter der Macro-Action "Ticket Create" ausgeblendet.)

KCWS_Endpoint_Zugriff_auf_Parameter.png

Abb.: Konfiguration Endpunkt-Makro mit Parameterzugriff (Teil 2)

Ein zuvor eingerichteter Endpunkt kann über die REST-API unter /api/v1/webservices/<EndpointRoute> aufgerufen werden.

Ist die REST-API bspw. unter https://yourkix-api.kix.cloud erreichbar und wurde ein Endpunkt mit der Route /simpleticket eingerichtet, so kann dieser unter der URL https://yourkixapi.kix.cloud/api/v1/webservices/simpleticket aufgerufen werden. Dabei muss die HTTP-Methode verwendet werden, die der Endpunkt-Konfiguration entspricht.

Tipp

In Verbindung mit den Möglichkeiten weiterer Macro Actions wie ObjectGet, XSLTransform, Set Dynamic Field, CreateOrUpdateAsset, CreateOrUpdateContact, CreateOrUpdateOrganisation, usw. können Sie die Funktionen der Schnittstelle weiter spezialisieren und auf den konkreten Anwendungsfall anpassen.

Beispiel: Aufruf des Simple-Ticket-Endpunkts (Verwendung jq für Formatierung)

Der Aufruf GET https://yourkix-api.kix.cloud/api/v1/webservices/simpleticket/0815ABC?ErrorCode=3001701 soll ein Ticket zum Gerät "0815ABC" mit dem Fehlercode "3001701" erstellen.

shell> curl --request GET \
  --url 'http://yourkix-api.kix.cloud/api/v1/webservices/simpleticket/0815ABC?ErrorCode=3001701' \
  --header 'Content-Type: application/json' \
  | jq
{
  "ID": 3
}

Das Ergebnis ist des Aufrufs ist ein neues Ticket:

KCWS_Endpoint_Verwendung.png

Abb.: Neues Ticket, welches durch den Endpunkt erstellt wurde

KIX als Requester - Verwendung von Webhooks

Das Add-on Connect Webservice ermöglicht die Einbindung, d. h. Nutzung von HTTP/s-Webservices in KIX. Dabei können die Webservices sowohl Datenquelle als auch Ziel für die aktive Datenübermittlung sein.

Gängige Synonyme für diese Funktionen sind auch "ausgehende Webhooks" oder "Invoker".

In Unterscheidung zu Connect Database wird kein direkter Datenbankzugriff genutzt, sondern der Zugriff auf eine Webschnittstelle via HTTP/s. Darüber hinaus kann Connect Webservice auch Informationen an die angebundenen Webservices übermitteln, statt diese nur zu konsumieren. Typische Szenarien sind:

  • Übermittlung von Informationen an dritte Vorgangs-/Ticketsysteme, wie bspw. Jira, Redmine, Trello, BMC, etc.

  • Auslösen von Softwareauslieferungen durch Endpoint-Managementsysteme wie Baramundi, ido-IT, OPSI, etc.

  • Übermittlung von Abrechnungsdaten aus Tickets an CRP- oder ERP-Systeme wie Navision, Axapta, Sugar CRM etc.

Die technische Voraussetzung ist das Vorhandensein einer HTTP/S-Verbindung vom KIX-Backend zum Zielsystem einschließlich der Zugangsdaten (falls erforderlich) mit entsprechenden Berechtigungen.

Das Add-on Connect Webservice enthält zusätzliche Macro Actions für die Kommunikation mit anderen Webservices.

Die Macro Action ermöglicht die aktive Kommunikation mit einem anderem Webservice.

Mögliche Auslöser der Macro Action können spezifische Änderungen an einem Ticket oder Asset sein. Mittels periodischer Jobs können auch Listen von Einträgen abgerufen und verarbeitet werden.

Konkrete Anwendungen sind bspw. die Inventarisierung der Asset-Datenbank von KIX oder die proaktive Erstellung von Tickets.

Die Macro Action funktioniert ähnlich der im Basisprodukt enthaltenen Macro Action Webhook. Sie unterscheidet sich darin, dass komplexe, mehrstufige Datenstrukturen als Nutzlast im Aufruf (Request) übergeben werden können. Zudem kann die Antwort (Response) des aufgerufenen Webservices entgegen genommen und für weitere Macro Actions (z. B. XSL Transformation oder Get Object Data) weiterverwendet werden.

Achtung

Die Parameter Client Certificate, Client Key, Client Key Password, CA Certificate und CA Directory dienen der Authentifizierung mittels SSL-Zertifikaten.

Die Angaben für Client Certificate, Client Key, CA Certificate und CA Directory sind Pfandangaben auf dem Backend-Container.

Nur verwenden, wenn Know-How zu diesem Authentifizierungsverfahren besteht!

Alle relevanten Zertifikate sind vom Administrator auf dem Backend-Container einzubinden und zu pflegen! Keine Pflege über das Frontend!

Parameter

Beschreibung

Response

Variablenname für die Ergebnisstruktur des Webrequests.

Es wird ein strukturiertes Objekt zurückgegeben, welches HTTPCode, Status, Content, Header (Key-Value-Paare) und Result mit dem Ergebnis als JSON-Objekt enthält.

URL

Die aufzurufende URL. Es werden KIX- Platzhalter unterstützt.

Method

die Aufrufmethode (HTTP-Verb)

Mögliche Werte: GET | POST | PUT | PATCH | DELETE | OPTIONS | HEAD

Use Proxy

Soll ein Proxy-Server angesprochen werden?

Mögliche Werte: yes | no

Proxy

Welcher Proxy Server soll angesprochen werden?

Z. B.: http://proxy.example.com:3128

Ist nichts angegeben, wird die allgemeine Proxy-Einstellung aus dem SysConfig-Schlüssel WebuserAgent::Proxy verwendet.

Headers

zu übermittelnde HTTP-Header

Z. B.: Content-Type: application/json

Content

Der zu übermittelnde Inhalt ("payload").

Kann als JSON-Zeichenkette oder als Macro-Variable angegeben werden.

Es werden KIX-Platzhalter unterstützt.

Beispielsweise:

{
  "issue": {
    "project_id": 1,
    "subject": "<KIX_TICKET_Title>",
    "description": "Lorem ipsum..."
  }
}

oder

${SomeMacroVariable}

JSON-Quotierung bei Platzhalterinhalten

Bei der Verwendung von Platzhaltern im Content ist darauf zu achten, dass deren Inhalte bereits JSON-quotiert vorliegen. Das ist insbesondere bei mehrzeiligen Inhalten nicht der Fall.

Sollte solch ein Platzhalter benutzt werden, kann dieser zunächst einer Macro-Variablen zugewiesen und diese nachgehend JSON-quotiert eingefügt werden.

  1. Macro Action: Variable setzen

    • Variable: ArticleBody

    • Wert: <KIX_FIRST_Body>

  2. Maco Action: Webhook Extended

     {
          "issue": {
            "project_id": 1,
            "subject": "<KIX_TICKET_Title>",
            "description": "${ArticleBody|JSON}"
          }
        }

Client Certificate

Vollständiger Pfad und Name der SSL-Client-Zertifikatsdatei. Unterstützte Formate: PEM, DER, PKCS#12

Client Key

Vollständiger Pfad und Name der SSL-Key-Zertifikatsdatei

Client Key Password

Das Passwort der SSL-Key-Zertifikatsdatei, falls diese verschlüsselt ist

CA Certificate

Vollständiger Pfad und Name der Certification-Authority-Zertifikatsdatei zur Validierung der SSL-Zertifikatsdatei

CA Directory

Vollständiger Pfad zum Ordner in dem die relevanten Certification-Authority-Zertifikatsdateien im System abgelegt sind

Disable SSL-Verification

Deaktiviert die Prüfung von SSL-Zertifikaten bei HTTPS-Verbindungen

debug

Erweitertes Logging für den Aufruf de-/ aktivieren.

Mögliche Werte: yes | no

Tipp: Debug-Informationen können auch der Job-Historie entnommen werden.

Beispiele für die Verwendung der Macro Action finden Sie unter:

Diese Macro Action ermöglicht das Übermitteln von Anhängen an andere Webservices, die Multipart/FormData empfangen können.

Beispielsweise, um aus einem Ticket oder bei Anlage eines Tickets ein Jira-Issue zu erstellen, welches auch die Anhänge enthält, die am Artikel hinterlegt sind.

Parameter

Beschreibung

Response

Variablenname für die Ergebnisstruktur des Webrequests.

Z. B.: MyAttachmentResponse

Es wird ein strukturiertes Objekt zurückgegeben, welches HTTPCode, Status, Content, Header (Key-Value-Paare) und Result mit dem Ergebnis als JSON- Objekt enthält.

URL

Die aufzurufende URL. Es werden KIX- Platzhalter unterstützt.

Z. B.: http://192.168.188.48:3001/rest/ api/2/issue/KIX-123/attachments

Use Proxy

Soll ein Proxy-Server angesprochen werden?

Mögliche Werte: yes | no

Proxy

Welcher Proxy Server soll angesprochen werden?

Z. B.: http://proxy.example.com:3128

Ist nichts angegeben, wird die allgemeine Proxy-Einstellung aus dem SysConfig-Schlüssel WebuserAgent::Proxy verwendet.

Headers

zu übermittelnde HTTP-Header

Beispielsweise:

  • X-Atlassian-Token: nocheck

  • Authorization: Basic VXNlck5hbWU6UGFzc3dvcmQ=

Attachment Data

Der zu übermittelnde Inhalt.

Z. B.: ${SomeMacroVariableWithStructure}

Hier wird i.d.R. eine Macro Variable verwendet, die ein Objekt mit den Strukturen Content, ContentType und Filename enthalten muss, z.B.:

SomeMacroVariableWithStructure = {
    "Content": "<base64 encoded content here>",
    "ContentType": "image/png",
    "Filename": "sample.png"
}

Weiterführende Hinweise siehe Macro Actions:

Debug

Erweitertes Logging für den Aufruf de-/ aktivieren.

Mögliche Werte: yes | no

Tipp: Debug-Informationen können auch der Job-Historie entnommen werden.

Beispiel: 

Es wird ein spezifischer Endpoint konfiguriert, der ein Array von Assets, Kontakten, Organisationen oder Ticketdaten entgegen nimmt. Diese Daten werden in einer Macro Action Schleife verarbeitet um daraus jeweils das betreffende KIX-Objekt zu erstellen (Asset, Kontakt, Organisation oder Ticket).

Die IDs der innerhalb der Schleife zu erstellenden Objekte sollen gesammelt werden, um nach der Abarbeitung eine Sammelantwort/Response mit allen erzeugten IDs zurück zu geben. Zum Sammeln der IDs wird ein Array benötigt.

Anwendung in Macros

Macro-Variablen können mehrere Werte aufnehmen und somit nein Array bilden. Die einzelnen Werte werden dabei durch Komma getrennt (s. auch Variablen):

${Variable1,Variable2}

Ist einer der übergebenen Parameter bereits ein Array, so werden die beiden Arrays konkateniert:

Variable1 := ['Test1.1','Test1.2']
Variable2 := ['Test2.1','Test2.2']
${Variable1,Variable2} == ['Test1.1','Test1.2','Test2.1','Test2.2']

Erweiterte Operationen/Filter

Für erweiterte Array-Operationen werden mit KIX Connect Webservice zusätzliche Variablen-Filter bereit gestellt.

Hinweis

Die Funktionen verändern nicht die eigentliche Variable, sondern gelten nur für den entsprechenden Aufruf.

Soll das Ergebnis persistent sein, muss die Macro Action Variable setzen verwendet werden.

Parameter

Beschreibung

VariableUtil.Push

Wandelt die Variablen in ein Array (falls es noch keines ist)

Der übergebene Wert wird am Ende des Arrays angefügt.

Beispiel:

Variable1 := ['Test1.1','Test1.2']
Variable2 := ['Test2.1','Test2.2'] 
${Variable1|VariableUtil.Push(${Variable2})} == ['Test1.1','Test1.2',['Test2.1','Test2.2']]

VariableUtil.Pop

Wandelt die Variablen in ein Array (falls es noch keines ist)

Der übergebene Wert wird am Ende des Arrays entfernt.

Beispiel:

Variable1 := ['Test1.1','Test1.2']
${Variable1|VariableUtil.Pop} == ['Test1.1']

VariableUtil.Shift

Wandelt die Variablen in ein Array (falls es noch keines ist)

Der übergebene Wert wird am Anfang des Arrays entfernt.

Beispiel:

Variable1 := ['Test1.1','Test1.2']
${Variable1|VariableUtil.Shift} == ['Test1.2']

VariableUtil.Unshift

Wandelt die Variablen in ein Array (falls es noch keines ist)

Der übergebene Wert wird am Anfang des Arrays angefügt.

Beispiel:

Variable1 := ['Test1.1','Test1.2']
Variable1 := ['Test2.1','Test2.2']
${Variable1|VariableUtil.Unshift(${Variable2})} == [['Test2.1','Test2.2'],'Test1.1','Test1.2']

VariableUtil.InitialPush

Wandelt den Wert einer Variable in ein Array (falls es noch keines ist)

Ist der Variablenwert der leere String, wird ein leeres Array initialisiert

Der übergebene Wert wird am Ende des Arrays angefügt.

Beispiel:

Variable1 := ''
Variable2 := 'Test1' 
${Variable1|VariableUtil.InitialPush(${Variable2})} == ['Test1']

VariableUtil.AsArray

Wandelt den Wert einer Variable in ein Array (falls es noch keines ist)

Beispiel:

Variable1 := 'Test1'
${Variable1|VariableUtil.AsArray} == ['Test1']