GLPI má REST API, ktoré sprístupňuje takmer každý objekt v systéme — tikety, aktíva, používateľov, entity, zmluvy, články knowledge base. Ak iný systém potrebuje čítať alebo zapisovať dáta do GLPI, API je spôsob, ako to urobiť. Tento článok prejde autentifikáciu, základné operácie, vyhľadávanie a kedy zvoliť webhooks namiesto pollingu.
Čo API sprístupňuje
GLPI REST API podporuje plné CRUD operácie nad všetkými hlavnými typmi objektov. Praktické integrácie:
- Monitoring → GLPI — Zabbix alebo Nagios detekuje výpadok servera, zavolá GLPI API a vytvorí P1 incident s prepojeným aktívom
- GLPI → projektové nástroje — po schválení zmeny v GLPI webhook vytvorí úlohu v Jira alebo Trello pre implementačný tím
- HR systém → GLPI — nový zamestnanec automaticky spustí priradenie aktív a tikety na vytvorenie prístupov
- GLPI → BI nástroje — naplánované API volania sťahujú dáta o tiketoch a aktívach do Metabase alebo Power BI
Autentifikácia: dva tokeny, jedna session
GLPI rozlišuje dva typy tokenov, čo nových integrátorov často mätie:
- App-Token — identifikuje aplikáciu, ktorá API volá. Vytvorí sa v Setup → General → API a posiela sa v hlavičke každej požiadavky. Je voliteľný, pokým administrátor nezaviedol obmedzenia podľa zdrojovej IP alebo aplikácie — ale dobrá prax je vždy ho nastaviť.
- User-Token — identifikuje konkrétneho používateľa, ktorého oprávnenia sa použijú. Generuje sa v profile používateľa.
Životný cyklus volania začína initSession, ktorý vráti Session-Token. Ten potom posielate v hlavičke každého ďalšieho volania, kým neskončíte volaním killSession:
# 1. Začiatok session
curl -X GET "https://glpi.example.com/apirest.php/initSession" \
-H "App-Token: <app-token>" \
-H "Authorization: user_token <user-token>"
# → {"session_token":"abc123..."}
# 2. Akékoľvek volanie s touto session
curl -X GET "https://glpi.example.com/apirest.php/Ticket/42" \
-H "App-Token: <app-token>" \
-H "Session-Token: abc123..."
# 3. Koniec session
curl -X GET "https://glpi.example.com/apirest.php/killSession" \
-H "App-Token: <app-token>" \
-H "Session-Token: abc123..."
Session-Token expiruje po nečinnosti — pri dlhotrvajúcich integráciách musíte rátať s opätovným prihlásením.
CRUD: vytvorenie tiketu
Vytvorenie tiketu z monitoringu je najčastejší vzor. POST na /apirest.php/Ticket s JSON payloadom:
curl -X POST "https://glpi.example.com/apirest.php/Ticket" \
-H "App-Token: <app-token>" \
-H "Session-Token: <session-token>" \
-H "Content-Type: application/json" \
-d '{
"input": {
"name": "Server SRV-05 nedostupný",
"content": "Monitorovací alert: ping timeout od 14:32",
"urgency": 5,
"type": 1,
"entities_id": 1
}
}'
# → {"id":12345,"message":""}
Odpoveď vráti ID nového tiketu, ktoré môžete použiť na pridanie follow-upov, priloženie súborov alebo prepojenie aktív v ďalších volaniach. Pri vytváraní tiketov vždy nastavte entities_id — bez neho sa tiket vytvorí v root entite a nemusí byť viditeľný pre cieľové helpdesk skupiny.
Vyhľadávanie: searchOptions a criteria
Najčastejšia API požiadavka nie je vytvorenie objektu, ale vyhľadávanie podľa filtra. Search endpoint používa očíslované searchOptions, ktorých zoznam získate z /apirest.php/listSearchOptions/Ticket:
# Otvorené tikety za posledných 7 dní
GET /apirest.php/search/Ticket
?criteria[0][field]=12
&criteria[0][searchtype]=equals
&criteria[0][value]=notold
&criteria[1][link]=AND
&criteria[1][field]=15
&criteria[1][searchtype]=morethan
&criteria[1][value]=2026-04-21
&forcedisplay[0]=2
&forcedisplay[1]=1
&forcedisplay[2]=12
Pole field je číselné ID search option (napríklad 12 = status, 15 = dátum vytvorenia). Endpoint vracia stránkovaný výsledok — hlavička Content-Range v odpovedi a Range: 0-49 v požiadavke riadia paginatovanie. Pri väčších množinách musíte iterovať.
Webhooks vs polling: GLPI 11
Pre toky z GLPI von ste historicky museli polovať — periodicky volať API a kontrolovať, či sa niečo zmenilo. GLPI 11 priniesol natívne webhooks: definujete URL endpoint, vyberiete typ udalosti (vytvorenie tiketu, zmena stavu, priradenie technika) a GLPI pri jej výskyte pošle POST request s JSON payloadom.
Webhooks sú vždy lepšie ako polling, pokiaľ sú dostupné — menej zaťažujú GLPI server, znižujú latenciu reakcie a nepotrebujú dedikovaný cron job. Pre staršie verzie (10.x) zostáva polling jediná cesta; vtedy nastavte rozumný interval (5–15 minút) a vždy filtrujte podľa časovej značky poslednej kontroly, nie celý dataset.
Kedy API a kedy plugin
API je správna voľba, keď integrácia je s externým systémom — monitoring, HR, ERP, projektové nástroje. Dáta prúdia medzi dvoma samostatnými platformami a rozhraním je sieť.
Plugin je správna voľba, keď potrebujete rozšíriť interné správanie GLPI — nové typy objektov, vlastné workflow, úpravy rozhrania, hlboké automatizácie cez hooks. Pluginy bežia vo vnútri GLPI procesu; API integrácie bežia mimo neho.
Väčšina reálnych nasadení používa oboje. API prepája GLPI s ekosystémom. Pluginy rozširujú, čo GLPI robí interne.