Zum Inhalt springen

Znuny Web Services – REST API

In dieser detaillierten Anleitung erfahren Sie, wie Sie die Znuny REST API (Teil des Generic Interface) aktivieren, konfigurieren und in Ihre eigenen Anwendungen integrieren können.

Znuny stellt sein Generic Interface über REST- und SOAP-Webservices zur Verfügung. Die REST API kommuniziert über HTTP(S) mit JSON-Datenformat und ermöglicht:

  • Ticket-Verwaltung: Erstellen, Abrufen, Ändern, Löschen
  • Artikel-Verwaltung: Artikel hinzufügen, Anhänge verwalten
  • Historie & Suche: Ticket-Verlauf einsehen und komplexe Suchabfragen durchführen

Wichtiger Hinweis: Eine Standardinstallation enthält keine vorkonfigurierten Webservices – diese müssen im Admin-Bereich unter „Prozesse & Automation → Web Services” manuell angelegt werden.

  1. Navigieren Sie im Admin-Bereich zu SysConfigGenericInterface.Transport und wählen Sie REST (HTTP).
  2. Unter AdminGenericInterfaceTransportHTTPREST konfigurieren Sie Timeouts, Host-Header und Debug-Level.
  3. In GenericInterface.Operation legen Sie die gewünschten Operationen an (z. B. TicketCreate, TicketSearch, TicketGet, TicketUpdate, TicketDelete, TicketHistoryGet) und aktivieren diese.
  • Basis-URL TicketCreate
  • Authentifizierung
    • Znuny-Session-Cookies
    • API-Keys / Token (über SysConfig konfigurierbar)
    • Verwenden Sie immer HTTPS für sichere Übertragungen!

Für jeden Endpunkt finden Sie hier eine ausführliche Darstellung zu Parametern, möglichen Antworten und praxisnahen Beispielen.

URL: /Webservice/<ServiceName>/TicketCreate Methode: POST Beschreibung: Erstellt ein neues Ticket und legt gleichzeitig einen ersten Artikel an.

ParameterTypPflichtBeschreibung
SessionIDIntegerJa¹Session-ID oder UserLogin+Password
UserLoginStringJa²Agenten-Login (in Kombination mit Password)
PasswordStringJa²Passwort (in Kombination mit UserLogin)
Ticket.TitleStringJaBetreff des Tickets
Ticket.QueueStringJaWarteschlangen-Name oder Ticket.QueueID
Ticket.StateStringJaAnfangsstatus (z. B. new)
Ticket.PriorityStringJaPriorität (z. B. 3 normal)
Ticket.CustomerUserStringJaKunden-E-Mail oder Login
Article.SubjectStringJaBetreff des ersten Artikels
Article.BodyStringJaInhalt des ersten Artikels
Article.MimeTypeStringJatext/plain oder text/html
¹ Entweder SessionID ODER UserLogin+Password erforderlich.
² Wenn kein SessionID-Token vorliegt.
Beispiel Request:
TicketSearch
Beispiel Antwort:
TicketGet

URL: /Webservice/<ServiceName>/TicketSearch Methode: GET Beschreibung: Durchsucht Tickets anhand verschiedenster Filterkriterien.

ParameterTypPflichtBeschreibung
UserLogin, PasswordString,StringJa¹Agenten-Credentials oder SessionID²
SessionIDIntegerJa²Token für authentifizierte Sitzungen
TitleString/String[]NeinWildcard-Suche im Titel (%Bestellung%)
TicketNumberString/String[]NeinTicketnummer(n)
QueueIDsInteger[]NeinWarteschlangen-IDs
StatesString[]NeinStatus (new, open, …)
StateTypeString/String[]NeinOpen/Closed-Kategorie
DynamicField_Name.OpMixedNeinDynamische Felder mit Operator (Equals, Like, GreaterThan …)
¹ Entweder UserLogin+Password ODER SessionID.
² Wenn kein Login-Paar übergeben wird.
Beispiel Request:
TicketUpdate
Beispiel Antwort:
TicketDelete

URL: /Webservice/<ServiceName>/TicketGet Methode: GET Beschreibung: Ruft detaillierte Ticket-Daten inklusive Artikel, Anhängen und dynamischen Feldern ab.

ParameterTypPflichtBeschreibung
UserLogin, PasswordString,StringJa¹Agenten-Credentials oder SessionID²
SessionIDIntegerJa²Token für authentifizierte Sitzungen
TicketIDString/String[]JaEine oder mehrere Ticket-IDs (komma-getrennt oder Array)
DynamicFieldsBoolean (0/1)Nein1 = Dynamische Felder im Ergebnis, Standard = 0
ExtendedBooleanNein1 = Erweiterte Metadaten (z. B. FirstResponse)
AllArticlesBooleanNein1 = Alle Artikel zurückliefern
ArticleLimitIntegerNeinMax. Anzahl der zurückgegebenen Artikel
AttachmentsBooleanNein1 = Anhänge in Base64 einbetten
GetAttachmentContentsBooleanNein1 = Inhalte der Anhänge ebenfalls laden
HTMLBodyAsAttachmentBooleanNein1 = HTML-Version des Artikels als Attachment anfügen
¹ Entweder UserLogin+Password ODER SessionID.
² Wenn kein Login-Paar übergeben wird.
Beispiel Request:
TicketHistoryGet
Beispiel Antwort (gekürzt):
/Webservice/<ServiceName>/TicketCreate

URL: /Webservice/<ServiceName>/TicketUpdate Methode: PUT Beschreibung: Aktualisiert Felder eines bestehenden Tickets und kann optional einen neuen Artikel erstellen.

ParameterTypPflichtBeschreibung
SessionIDIntegerJa¹Token oder UserLogin+Password²
TicketIDIntegerJaID des zu aktualisierenden Tickets
Ticket.TitleStringNeinNeuer Titel
Ticket.StateStringNeinNeuer Status
Ticket.OwnerString/IDNeinNeuer Besitzer
Ticket.PendingTimeHash / DiffNeinNeue Pending-Zeit
Article.SubjectStringNeinErstellt einen neuen Artikel
Article.BodyStringNeinInhalt des neuen Artikels
DynamicField…ArrayNeinDynamische Felder aktualisieren
Attachment…ArrayNeinNeue Anhänge hinzufügen
¹ Entweder SessionID ODER UserLogin+Password.
² Wenn kein SessionID-Token vorliegt.
Beispiel Request:
POST
Beispiel Antwort:
new

URL: /Webservice/<ServiceName>/TicketDelete Methode: DELETE Beschreibung: Löscht ein oder mehrere Tickets endgültig.

ParameterTypPflichtBeschreibung
SessionIDIntegerJa¹Token oder UserLogin+Password²
TicketIDString/ArrayJaEin oder mehrere Ticket-IDs
Beispiel Request:
3 normal
Beispiel Antwort:
text/plain

URL: /Webservice/<ServiceName>/TicketHistoryGet Methode: GET Beschreibung: Ruft die Historie eines oder mehrerer Tickets ab.

ParameterTypPflichtBeschreibung
SessionIDIntegerJa¹Token oder UserLogin+Password²
TicketIDString/ArrayJaEin oder mehrere Ticket-IDs
Beispiel Request:
text/html

Neue Ressourcen in der WADL-Datei definieren: /Webservice/<ServiceName>/TicketSearch

Alternativ können Sie Operationen per YAML definieren: GET

Abschnitt betitelt „Alternativ können Sie Operationen per YAML definieren: GET“
  • Erfolgsindikator: Success: 0|1
  • Fehlermeldung: ErrorMessage im JSON
  • Debugging: Setzen Sie im Transport-Dialog Debug-Level auf Debug → Log-Einträge werden in der Datenbank sichtbar

SzenarioBeschreibung
Systemübergreifende AutomatisierungTickets aus Monitoring-Tools (Nagios, Zabbix) erstellen
DatensynchronisationBatch-Updates von Ticket-Feldern aus externem CRM
Self-Service-PortaleKunden legen eigene Tickets via REST an
Mobile AppsNative iOS/Android-Apps kommunizieren per REST

Die Znuny REST API ist flexibel, performant und dank Generic Interface hochgradig erweiterbar. Ob einfache Ticket-Erstellung oder komplexe Workflow-Automatisierung – mit wenigen Schritten im Admin-Bereich und Standard-JSON-Requests realisieren Sie nahtlose Integrationen in jede IT-Landschaft.


Für Python-Entwickler steht das offizielle Paket pyznuny zur Verfügung, das die gesamte Znuny REST API in einer einfachen, typisierten Bibliothek kapselt. Sie müssen keine HTTP-Requests von Hand formulieren – pyznuny übernimmt Authentifizierung, Session-Management und die Serialisierung aller Parameter.

Terminal-Fenster
pip install pyznuny
from pyznuny import ZnunyClient
client = ZnunyClient(
url="https://znuny.example.com",
username="admin",
password="geheim"
)
# Ticket erstellen
ticket_id = client.ticket_create(
title="Server nicht erreichbar",
queue="Support",
state="new",
priority="3 normal",
customer_user="kunde@example.com",
article_subject="Initialer Bericht",
article_body="Der Server antwortet seit 08:00 Uhr nicht mehr.",
mime_type="text/plain"
)
print(f"Neues Ticket erstellt: #{ticket_id}")
# Ticket abrufen
ticket = client.ticket_get(ticket_id=ticket_id, all_articles=True)
print(ticket)
# Ticket aktualisieren
client.ticket_update(ticket_id=ticket_id, state="open", owner="max.muster")
MethodeBeschreibung
ticket_create()Neues Ticket mit erstem Artikel anlegen
ticket_get()Ticket-Details inkl. Artikeln & Anhängen abrufen
ticket_search()Tickets nach Filtern durchsuchen
ticket_update()Felder, Status, Owner und Artikel aktualisieren
ticket_delete()Ticket endgültig löschen
ticket_history_get()Vollständige Historie eines Tickets laden

Hinweis: pyznuny ist auf PyPI verfügbar und wird aktiv von Softoft gepflegt.


Wer die Znuny REST API nicht nur nutzen, sondern intelligent automatisieren möchte, setzt auf die OpenTicketAI Runtime – eine On-Premise-KI-Plattform, die eingehende Tickets vollautomatisch klassifiziert, priorisiert und weiterleitet.

┌─────────────────────────┐
Eingehende E-Mails ────► │ Znuny (Generic Interface / REST API) │
└────────────┬────────────┘
│ Webhook / Polling
┌─────────────────────────┐
│ OpenTicketAI Runtime │
│ (Docker, On-Premise) │
│ ┌───────────────────┐ │
│ │ KI-Modell (NLP) │ │
│ └───────────────────┘ │
└────────────┬────────────┘
│ otai-znuny-znuny Connector
┌─────────────────────────┐
│ Znuny REST API │
│ TicketUpdate / Routing │
└─────────────────────────┘

Die Runtime läuft vollständig lokal in Ihrem Rechenzentrum – keine Ticketdaten verlassen Ihre Infrastruktur.

Installieren Sie die OpenTicketAI-Kernbibliothek zusammen mit dem Znuny-spezifischen Connector-Paket otai-znuny-znuny:

Terminal-Fenster
pip install open-ticket-ai otai-hf-local otai-znuny-znuny
PaketFunktion
open-ticket-aiOpenTicketAI-Kern: Orchestrierung, Pipelines, Config
otai-hf-localLokale KI-Modelle via Hugging Face (On-Premise)
otai-znuny-znunyConnector: liest & schreibt Tickets via Znuny REST

Legen Sie eine config.yaml an und verbinden Sie die Runtime mit Ihrer Znuny-Instanz:

connector:
type: znuny
url: https://znuny.example.com
username: otai-bot
password: "${ZNUNY_PASSWORD}"
model:
provider: hf-local
model_name: softoft/ticket-classifier-de
routing:
default_queue: "Unclassified"
rules:
- category: "Netzwerk"
queue: "IT-Infrastruktur"
priority: "4 high"
- category: "Abrechnung"
queue: "Buchhaltung"
priority: "3 normal"

8.4 Ablauf einer automatischen Ticket-Verarbeitung

Abschnitt betitelt „8.4 Ablauf einer automatischen Ticket-Verarbeitung“
  1. Ticket eingeht in Znuny (via E-Mail oder REST TicketCreate)
  2. Connector pollt per TicketSearch nach neuen Tickets im konfigurierten Intervall
  3. KI-Modell analysiert Betreff und Artikeltext mit Natural Language Processing
  4. Klassifizierungsergebnis (Kategorie, Priorität, vorgeschlagene Queue) wird bestimmt
  5. TicketUpdate via REST setzt Queue, Priorität und optionalen internen Artikel
  6. Ticket landet vollautomatisch beim richtigen Team – ohne manuelle Triage

8.5 Vorteile gegenüber manueller REST-Integration

Abschnitt betitelt „8.5 Vorteile gegenüber manueller REST-Integration“
MerkmalManuelle REST-IntegrationOpenTicketAI + Connector
Klassifizierung❌ Manuell✅ Vollautomatisch (KI)
Datenschutz✅ Lokal✅ 100 % On-Premise
Regelbasiertes Routing✅ Möglich✅ Inklusive
Lernfähigkeit❌ Starre Regeln✅ Modell trainierbar
EinrichtungsaufwandHochGering (YAML-Config)

Mehr erfahren: Besuchen Sie openticketai.com/de/solutions/znuny/ oder kontaktieren Sie Softoft für eine individuelle Demo.