Aller au contenu

Znuny Web Services – REST API

Dans ce guide détaillé, vous apprendrez comment activer, configurer et intégrer la Znuny REST API (partie du Generic Interface) dans vos propres applications.

Znuny met à disposition son Generic Interface via des Web Services REST et SOAP. La REST API communique via HTTP(S) avec le format de données JSON et permet :

  • Gestion des tickets : Créer, récupérer, modifier, supprimer
  • Gestion des articles : Ajouter des articles, gérer les pièces jointes
  • Historique & recherche : Consulter l’historique des tickets et effectuer des recherches complexes

Remarque importante : Une installation standard ne contient aucun Web Service préconfiguré – ceux-ci doivent être créés manuellement dans la zone d’administration sous « Processus & Automatisation → Web Services ».

  1. Naviguez dans la zone d’administration vers SysConfigGenericInterface.Transport et sélectionnez REST (HTTP).
  2. Sous AdminGenericInterfaceTransportHTTPREST, configurez les timeouts, les en-têtes d’hôte (Host-Header) et le niveau de débogage (Debug-Level).
  3. Dans GenericInterface.Operation, créez les opérations souhaitées (par ex. TicketCreate, TicketSearch, TicketGet, TicketUpdate, TicketDelete, TicketHistoryGet) et activez-les.
  • URL de base TicketCreate
  • Authentification
    • Cookies de session Znuny
    • API-Keys / Token (configurables via SysConfig)
    • Utilisez toujours HTTPS pour des transferts sécurisés !

3. Endpoints & méthodes HTTP (aperçu détaillé)

Section intitulée « 3. Endpoints & méthodes HTTP (aperçu détaillé) »

Pour chaque endpoint, vous trouverez ici une présentation détaillée des paramètres, des réponses possibles et des exemples pratiques.

URL: /Webservice/<ServiceName>/TicketCreate Méthode: POST Description: Crée un nouveau ticket et ajoute simultanément un premier article.

ParamètreTypeObligatoireDescription
SessionIDIntegerOui¹Session-ID ou UserLogin+Password
UserLoginStringOui²Login de l’agent (en combinaison avec Password)
PasswordStringOui²Mot de passe (en combinaison avec UserLogin)
Ticket.TitleStringOuiObjet du ticket
Ticket.QueueStringOuiNom de la file d’attente ou Ticket.QueueID
Ticket.StateStringOuiÉtat initial (par ex. new)
Ticket.PriorityStringOuiPriorité (par ex. 3 normal)
Ticket.CustomerUserStringOuiE-mail ou login du client
Article.SubjectStringOuiObjet du premier article
Article.BodyStringOuiContenu du premier article
Article.MimeTypeStringOuitext/plain ou text/html
¹ Soit SessionID OU UserLogin+Password requis.
² Si aucun token SessionID n’est présent.

Exemple de Request: TicketSearch Exemple de réponse: TicketGet

URL: /Webservice/<ServiceName>/TicketSearch Méthode: GET Description: Recherche des tickets selon divers critères de filtrage.

ParamètreTypeObligatoireDescription
UserLogin, PasswordString,StringOui¹Identifiants de l’agent ou SessionID²
SessionIDIntegerOui²Token pour les sessions authentifiées
TitleString/String[]NonRecherche par wildcard dans le titre (%Commande%)
TicketNumberString/String[]NonNuméro(s) de ticket
QueueIDsInteger[]NonIDs des files d’attente
StatesString[]NonÉtats (new, open, …)
StateTypeString/String[]NonCatégorie Open/Closed
DynamicField_Name.OpMixedNonChamps dynamiques avec opérateur (Equals, Like, GreaterThan …)
¹ Soit UserLogin+Password OU SessionID.
² Si aucun couple de login n’est transmis.

Exemple de Request: TicketUpdate Exemple de réponse: TicketDelete

URL: /Webservice/<ServiceName>/TicketGet Méthode: GET Description: Récupère les données détaillées d’un ticket, y compris les articles, les pièces jointes et les champs dynamiques.

ParamètreTypeObligatoireDescription
UserLogin, PasswordString,StringOui¹Identifiants de l’agent ou SessionID²
SessionIDIntegerOui²Token pour les sessions authentifiées
TicketIDString/String[]OuiUn ou plusieurs Ticket-IDs (séparés par virgule ou tableau)
DynamicFieldsBoolean (0/1)Non1 = Champs dynamiques dans le résultat, par défaut = 0
ExtendedBooleanNon1 = Métadonnées étendues (par ex. FirstResponse)
AllArticlesBooleanNon1 = Retourner tous les articles
ArticleLimitIntegerNonNombre max. d’articles retournés
AttachmentsBooleanNon1 = Intégrer les pièces jointes en Base64
GetAttachmentContentsBooleanNon1 = Charger également le contenu des pièces jointes
HTMLBodyAsAttachmentBooleanNon1 = Joindre la version HTML de l’article en pièce jointe
¹ Soit UserLogin+Password OU SessionID.
² Si aucun couple de login n’est transmis.

Exemple de Request: TicketHistoryGet Exemple de réponse (abrégé): /Webservice/<ServiceName>/TicketCreate

URL: /Webservice/<ServiceName>/TicketUpdate Méthode: PUT Description: Met à jour les champs d’un ticket existant et peut optionnellement créer un nouvel article.

ParamètreTypeObligatoireDescription
SessionIDIntegerOui¹Token ou UserLogin+Password²
TicketIDIntegerOuiID du ticket à mettre à jour
Ticket.TitleStringNonNouveau titre
Ticket.StateStringNonNouvel état
Ticket.OwnerString/IDNonNouveau propriétaire
Ticket.PendingTimeHash / DiffNonNouveau temps d’attente
Article.SubjectStringNonCrée un nouvel article
Article.BodyStringNonContenu du nouvel article
DynamicField…ArrayNonMettre à jour les champs dynamiques
Attachment…ArrayNonAjouter de nouvelles pièces jointes
¹ Soit SessionID OU UserLogin+Password.
² Si aucun token SessionID n’est présent.

Exemple de Request: POST Exemple de réponse: new

URL: /Webservice/<ServiceName>/TicketDelete Méthode: DELETE Description: Supprime définitivement un ou plusieurs tickets.

ParamètreTypeObligatoireDescription
SessionIDIntegerOui¹Token ou UserLogin+Password²
TicketIDString/ArrayOuiUn ou plusieurs Ticket-IDs
Exemple de Request:
3 normal
Exemple de réponse:
text/plain

URL: /Webservice/<ServiceName>/TicketHistoryGet Méthode: GET Description: Récupère l’historique d’un ou plusieurs tickets.

ParamètreTypeObligatoireDescription
SessionIDIntegerOui¹Token ou UserLogin+Password²
TicketIDString/ArrayOuiUn ou plusieurs Ticket-IDs
Exemple de Request:
text/html

Définir de nouvelles ressources dans le fichier WADL : /Webservice/<ServiceName>/TicketSearch

Alternativement, vous pouvez définir des opérations via YAML : GET


  • Indicateur de succès : Success: 0|1
  • Message d’erreur : ErrorMessage dans le JSON
  • Débogage : Dans la boîte de dialogue Transport, réglez Debug-Level sur Debug → les entrées de log deviennent visibles dans la base de données

ScénarioDescription
Automatisation inter-systèmesCréer des tickets à partir d’outils de monitoring (Nagios, Zabbix)
Synchronisation de donnéesMises à jour par lots des champs de tickets depuis un CRM externe
Portails Self-ServiceLes clients créent leurs propres tickets via REST
Applications mobilesLes applications natives iOS/Android communiquent via REST

La Znuny REST API est flexible, performante et hautement extensible grâce au Generic Interface. Qu’il s’agisse d’une simple création de ticket ou d’une automatisation de workflow complexe, vous pouvez réaliser des intégrations fluides dans n’importe quel environnement IT avec quelques étapes dans la zone d’administration et des requêtes JSON standard.


Pour les développeurs Python, le package officiel pyznuny est disponible, encapsulant toute la Znuny REST API dans une bibliothèque simple et typée. Vous n’avez pas besoin de formuler des requêtes HTTP manuellement – pyznuny gère l’authentification, la gestion de session et la sérialisation de tous les paramètres.

Fenêtre de terminal
pip install pyznuny
from pyznuny import ZnunyClient
client = ZnunyClient(
url="https://znuny.example.com",
username="admin",
password="geheim"
)
# Créer un ticket
ticket_id = client.ticket_create(
title="Serveur inaccessible",
queue="Support",
state="new",
priority="3 normal",
customer_user="client@example.com",
article_subject="Rapport initial",
article_body="Le serveur ne répond plus depuis 08:00.",
mime_type="text/plain"
)
print(f"Nouveau ticket créé : #{ticket_id}")
# Récupérer un ticket
ticket = client.ticket_get(ticket_id=ticket_id, all_articles=True)
print(ticket)
# Mettre à jour un ticket
client.ticket_update(ticket_id=ticket_id, state="open", owner="max.muster")
MéthodeDescription
ticket_create()Créer un nouveau ticket avec un premier article
ticket_get()Récupérer les détails du ticket, articles & pièces jointes
ticket_search()Rechercher des tickets selon des filtres
ticket_update()Mettre à jour les champs, l’état, le propriétaire et les articles
ticket_delete()Supprimer définitivement un ticket
ticket_history_get()Charger l’historique complet d’un ticket

Remarque : pyznuny est disponible sur PyPI et est activement maintenu par Softoft.


Pour ceux qui souhaitent non seulement utiliser la Znuny REST API, mais aussi l’automatiser intelligemment, la solution est la OpenTicketAI Runtime – une plateforme IA on-premise qui classifie, priorise et redirige automatiquement les tickets entrants.

┌─────────────────────────┐
E-mails entrants ────► │ Znuny (Generic Interface / REST API) │
└────────────┬────────────┘
│ Webhook / Polling
┌─────────────────────────┐
│ OpenTicketAI Runtime │
│ (Docker, On-Premise) │
│ ┌───────────────────┐ │
│ │ Modèle IA (NLP) │ │
│ └───────────────────┘ │
└────────────┬────────────┘
│ Connecteur otai-znuny-znuny
┌─────────────────────────┐
│ Znuny REST API │
│ TicketUpdate / Routing │
└─────────────────────────┘

La Runtime s’exécute entièrement localement dans votre centre de données – aucune donnée de ticket ne quitte votre infrastructure.

Installez la bibliothèque principale OpenTicketAI avec le package de connecteur spécifique à Znuny otai-znuny-znuny :

Fenêtre de terminal
pip install open-ticket-ai otai-hf-local otai-znuny-znuny
PackageFonction
open-ticket-aiNoyau OpenTicketAI : orchestration, pipelines, config
otai-hf-localModèles IA locaux via Hugging Face (On-Premise)
otai-znuny-znunyConnecteur : lit & écrit des tickets via Znuny REST

Créez un fichier config.yaml et connectez la Runtime à votre instance Znuny :

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: "Non classifié"
rules:
- category: "Réseau"
queue: "Infrastructure IT"
priority: "4 high"
- category: "Facturation"
queue: "Comptabilité"
priority: "3 normal"

8.4 Déroulement d’un traitement automatique de ticket

Section intitulée « 8.4 Déroulement d’un traitement automatique de ticket »
  1. Le ticket arrive dans Znuny (via e-mail ou REST TicketCreate)
  2. Le connecteur interroge via TicketSearch les nouveaux tickets à l’intervalle configuré
  3. Le modèle IA analyse l’objet et le texte de l’article avec le traitement du langage naturel (NLP)
  4. Le résultat de la classification (catégorie, priorité, file d’attente suggérée) est déterminé
  5. TicketUpdate via REST définit la file d’attente, la priorité et un article interne optionnel
  6. Le ticket arrive automatiquement dans la bonne équipe – sans triage manuel

8.5 Avantages par rapport à une intégration REST manuelle

Section intitulée « 8.5 Avantages par rapport à une intégration REST manuelle »
CaractéristiqueIntégration REST manuelleOpenTicketAI + Connecteur
Classification❌ Manuelle✅ Entièrement automatique (IA)
Protection des données✅ Locale✅ 100 % On-Premise
Routage basé sur des règles✅ Possible✅ Inclus
Capacité d’apprentissage❌ Règles rigides✅ Modèle entraînable
Effort de mise en placeÉlevéFaible (Config YAML)

En savoir plus : Visitez openticketai.com ou contactez Softoft pour une démo personnalisée.