Die neue API von GLPI 11 in der Praxis: OAuth2, vom Token zum ersten Ticket

Wir haben die API v2 von GLPI 11 durchgängig getestet: OAuth-Client, Token, Ticket erstellen, aktualisieren und verfolgen, RSQL-Filter und GraphQL. Die drei Details, die trotz gültigem Token zu 403 führen, und die getestete Postman-Collection zum Herunterladen.

In diesem Artikel7 Abschnitte

GLPI 11 hat zwei APIs: die alte, die GLPI selbst jetzt „Legacy-API“ nennt, und eine neue mit OAuth2, GraphQL und interaktiver Dokumentation. Wir haben die neue durchgängig getestet: vom Token bis zum erstellten, aktualisierten und mit einer Folgeaktion versehenen Ticket. Der erste Stolperstein kam noch vor dem ersten Ticket: GLPI lieferte den Token ganz normal aus und lehnte danach alles mit „The High-Level API is disabled“ ab. Dieser Leitfaden zeigt den Weg, der funktioniert hat, mit der getesteten Postman-Collection zum Herunterladen.

Die Legacy-API funktioniert weiterhin und ist diejenige, die wir im MCP-Server, der Claude mit GLPI verbindet, verwenden. Für neue Integrationen empfiehlt GLPI selbst die neue.

Die zwei APIs von GLPI 11

Legacy-API (v1) Neue API (v2)
Adresse /apirest.php oder /api.php/v1 /api.php/v2.3 (aktuelle Version)
Authentifizierung App-Token + Benutzer-Token, danach Session-Token OAuth2 (Bearer-Token)
Format GLPI-Elemente so, wie sie in der Datenbank liegen Strukturierte Ressourcen (/Assistance/Ticket, /Assistance/Ticket/{id}/Timeline)
Suche Suchkriterien von GLPI RSQL-Filter (name=like=*toner*) und Paginierung im Header
Extras — GraphQL und interaktive Dokumentation unter /doc
Status GLPI weist darauf hin: „Es wird empfohlen, wenn möglich nur die neue API zu verwenden“ Empfohlen für alles Neue

Schritt 1: Die neue API einschalten

Aktivieren Sie unter Einstellungen > Allgemein > API die Option API aktivieren. Dieser Schalter ist ein anderer als der, mit dem die Legacy-API eingeschaltet wird.

In unserem Test funktionierte die Token-Anforderung auch bei ausgeschaltetem Schalter: GLPI lieferte einen Token mit einer Stunde Gültigkeit. Erst beim ersten Aufruf kam der Fehler „The High-Level API is disabled“. Wenn der Token ausgegeben wird und alles mit 403 antwortet, beginnen Sie hier.

Schritt 2: Der Dienstbenutzer und der OAuth-Client

  1. Dienstbenutzer: ein Konto nur für die Integration, mit dem minimalen Profil, welches sie benötigt, in der richtigen Einheit. Niemals ein Administrator.
  2. OAuth-Client (unter Einstellungen > OAuth-Clients):
  3. Grants: password für System-zu-System mit dem Dienstbenutzer; authorization_code, wenn die Anwendung im Namen jeder Person handelt, die sich anmeldet; client_credentials wird von den Inventar-Agenten verwendet.
  4. Scopes: api für die API, graphql für GraphQL, user und email für die Daten des Benutzers selbst, inventory und status für spezielle Zwecke. Vergeben Sie nur, was die Integration nutzt.
  5. Erlaubte IPs: Beschränken Sie den Zugriff auf den Server, der die API aufrufen wird.

GLPI erzeugt die Kennung und das Secret des Clients. Bewahren Sie beides in einem Tresor auf, nicht im Code.

Schritt 3: Vom Token zum Ticket

Token anfordern (1 Stunde gültig, mit Refresh-Token):

curl -X POST https://glpi.suaempresa.com.br/api.php/token \
  -d grant_type=password -d client_id=$CLIENT_ID -d client_secret=$CLIENT_SECRET \
  -d username=$USUARIO -d password=$SENHA -d scope="api graphql"

Ein Ticket erstellen:

curl -X POST https://glpi.suaempresa.com.br/api.php/v2.3/Assistance/Ticket \
  -H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json" \
  -d '{"name": "Impressora do 2o andar sem toner", "content": "Aberto pela API v2.", "urgency": 3, "type": 1}'

Der Rest des Weges, den wir getestet haben:

Ergebnis jedes Schritts im Test der neuen API: Bei ausgeschaltetem API aktivieren wird der Token ausgegeben und die Aufrufe liefern 403; Token, Erstellung, Lesen, PATCH und Folgeaktion funktionieren; ein nicht erlaubter Scope führt auf der Route zu 403
Wenn der Token funktioniert und alles mit 403 antwortet, prüfen Sie den Schalter API aktivieren und die Scopes des OAuth-Clients. Test von NexTool, 4.10.2026.
Aktion Aufruf Ergebnis im Test
Token POST /api.php/token Bearer, 1 Stunde, mit Refresh, in 0,3 bis 0,4 s
Ticket erstellen POST /v2.3/Assistance/Ticket 200, liefert die ID zurück
Lesen GET /v2.3/Assistance/Ticket/{id} Status kommt bereits mit Namen („Neu“)
Dringlichkeit ändern PATCH /v2.3/Assistance/Ticket/{id} 200, die Priorität wird neu berechnet
Folgeaktion POST /v2.3/Assistance/Ticket/{id}/Timeline/Followup 200
Zeitleiste GET /v2.3/Assistance/Ticket/{id}/Timeline Liste mit der Folgeaktion
Suchen GET /v2.3/Assistance/Ticket?filter=name=like=*toner* Gesamtzahl im Header Content-Range
GraphQL POST /v2.3/GraphQL Nur die angeforderten Felder, mit Paginierung
Erneuern POST /api.php/token mit refresh_token Neuer Token, ohne erneut nach dem Passwort zu fragen
Ohne Token beliebige Route 401

Drei Details, die Sie stolpern lassen

  1. Der Schalter „API aktivieren“ ist von der Legacy-API getrennt, und der Token wird auch bei ausgeschalteter API ausgegeben. Der Fehler zeigt sich erst danach.
  2. Ein angeforderter, aber nicht erlaubter Scope führt nicht sofort zu einem Fehler. Wir haben den Scope user bei einem Client angefordert, der ihn nicht hatte: Der Token kam trotzdem, ohne diesen Scope, und die Benutzer-Route antwortete mit 403. Wenn eine Route trotz gültigem Token 403 liefert, prüfen Sie die Scopes des Clients.
  3. Der Status kommt als Objekt ({"id": 1, "name": "Novo"}), nicht als Zahl. Wer von der Legacy-API migriert, muss den Code anpassen, der den Status ausgelesen hat.

Wann Sie welche verwenden

  • Neue Integration: neue API. OAuth ist der Marktstandard, die Ressourcen sind klarer, und die Dokumentation steht direkt in GLPI zur Verfügung.
  • Integration, die bereits mit der Legacy-API funktioniert: Es gibt keine Eile, aber planen Sie die Migration. GLPI zeigt bereits den Hinweis, die neue zu verwenden.
  • Anwendung, die im Namen mehrerer Personen handelt (ein Portal, eine App): authorization_code, damit jede Person mit ihrem eigenen Login autorisiert.
  • Serverroutine (n8n, ERP, Skript): password mit Dienstbenutzer und eingeschränkter IP.

Laden Sie die getestete Collection herunter

Die Postman-Collection für die API von GLPI 11 enthält die neun Aufrufe aus der Tabelle, wobei Token und Ticket-ID automatisch von einem Aufruf zum nächsten gespeichert werden. Tragen Sie die Adresse Ihres GLPI, den OAuth-Client und den Dienstbenutzer ein.


Test von NexTool am 4. Oktober 2026 in einer GLPI-11.0.7-Testumgebung (API v2.3), mit einem Dienstbenutzer und einem OAuth-Client, die für den Test angelegt und anschließend gelöscht wurden. Die Routen und Scopes wurden zusätzlich im Quellcode von GLPI 11 überprüft.

Häufig gestellte Fragen

Ja. Neben der Legacy-API (v1) hat GLPI 11 eine neue API unter /api.php/v2.3, mit OAuth2, strukturierten Ressourcen, RSQL-Filter, GraphQL und interaktiver Dokumentation unter /doc.

Die häufigsten Ursachen sind die ausgeschaltete Option API aktivieren unter Einstellungen > Allgemein > API (der Token wird trotzdem ausgegeben) und ein OAuth-Client ohne den Scope, den die Route verlangt.

Legen Sie unter Einstellungen > OAuth-Clients einen OAuth-Client mit dem Grant password und dem Scope api an und senden Sie einen POST an /api.php/token mit client_id, client_secret, Benutzername und Passwort des Dienstbenutzers. Der Bearer-Token gilt 1 Stunde und kann erneuert werden.

Sie funktioniert in GLPI 11 weiterhin, aber GLPI selbst empfiehlt, wenn möglich nur die neue API zu verwenden. Nutzen Sie für neue Integrationen die v2; planen Sie für bereits funktionierende Integrationen die Migration.

password mit einem Dienstbenutzer für Server-Integrationen; authorization_code, wenn die Anwendung im Namen jeder einzelnen Person handelt; client_credentials wird von den Inventar-Agenten verwendet.

Kommentare

Die Kommentare zu diesem Beitrag stammen von GitHub (giscus). Beim Laden verbindet sich Ihr Browser mit GitHub; GitHub erhält dabei Ihre IP-Adresse und kann eigene Cookies setzen.

Um sie automatisch zu laden, aktivieren Sie funktionale Cookies

Brauchen Sie Hilfe?