L’API GLPI est un outil puissant pour automatiser et intégrer votre gestion de parc et de services. Que vous souhaitiez créer des tickets, mettre à jour des actifs, récupérer des informations ou synchroniser des données, l’API offre une flexibilité incroyable. Et pour interagir avec cette API, curl
est votre meilleur ami en ligne de commande.
Dans cet article, nous allons explorer comment utiliser curl
pour effectuer différentes requêtes à l’API GLPI, en fournissant des exemples concrets pour vous aider à démarrer.
1.Creation d’un compte d’acces a l’API, et son App Token

Dans le menu Configuration/General/API de l’interface de GLPI…

Cliquer sur ‘Ajouter un client de l’API’

- Donner un nom explicite pour l’usage de ce client d’API
- Choisir eventuellement d’enregistrer les connexions pour garder une trace de ce que fera ce client.
- La connexion peut etre eventuellement restreinte a une plage d’IP
- Laisser coché ‘Regener’ pour, a la creation du client, generer un token.

Cliquer Ajouter

Dans la barre de navigation, revenir sur ‘Clients de l’API’

Cliquer sur le client crée

un token a été generé. l’App Token.
Un App token doit etre combiné a un user token pour obtenir un session token
2.Creation d’un user et de son user token
Ce sont les droits du user qui determine les droits lors de l’utilisation de l’API

Aller dans le menu Administration/Utilisateurs

Prenons l’exemple d’un utilisateur existant nommé Report qui n’a que des droits en lecture seule (Ref: onglet Habilitation)

En bas de la page est affiché son jeton d’API, le user token.
Il peut eventuellement etre regénéré en cochant la case puis sauvegarder.
3.Obtention d’un session token avec curl
Les exemples de codes sont effectués dans un shell Linux mais l’utilisation de curl est similaire sous Windows et est inclus a l’OS depuis Windows 10
Pour plus de détails sur curl: https://www.it-connect.fr/curl-loutil-testeur-des-protocoles-divers/
curl -X GET \
-H "Content-Type: application/json" \
-H "App-Token: VOTRE_APP_TOKEN" \
-H "Authorization: user_token VOTRE_USER_TOKEN" \
"http://votre-serveur-glpi/apirest.php/initSession"
Le code ci-dessus represente l’initialisation de la session pour l’obtention d’un session token
Ce qui dans notre exemple donne:
curl -X GET \
-H "Content-Type: application/json" \
-H "App-Token: uItt7yYToLPwBPwDUGyiAHzcF8sRnJjlXCgG1Uha" \
-H "Authorization: user_token pRDLA0otLAzgrr09KvavtIQMXop3lUmgTHPvNLYn" \
"https://myglpi.francecentral.cloudapp.azure.com/apirest.php/initSession"

La reponse doit etre un session token
4. Test de requete
La commande curl differe un peu maintenant puisque on utilise toujours l’App Token, mais on utilise le session token a la place du user token, de la manière suivante. Exemple pour recuperer la liste de toutes les machines (Computer) déclarés dans GLPI
curl -X GET \
-H "Content-Type: application/json" \
-H "App-Token: uItt7yYToLPwBPwDUGyiAHzcF8sRnJjlXCgG1Uha" \
-H "Session-Token: 5l9bose84th76leeq9s6u69ped" \
"https://myglpi.francecentral.cloudapp.azure.com/apirest.php/Computer"

L’api doit renvoyer un bloc qui contiens la liste de tout les ‘Computers’ et leur propriétés.
json serait un format plus pratique pour afficher cette sortie.
Si il n’est pas déja present, installer jq avec la commande suivante (exemple avec apt)
sudo apt-get install jq
curl -X GET \
-H "Content-Type: application/json" \
-H "App-Token: uItt7yYToLPwBPwDUGyiAHzcF8sRnJjlXCgG1Uha" \
-H "Session-Token: 5l9bose84th76leeq9s6u69ped" \
"https://myglpi.francecentral.cloudapp.azure.com/apirest.php/Computer" | jq
Relancer la requete en envoyant la sortie dans jq (| jq)

Le resultat est plus facile a exploiter.
Pour plus de détail sur l’API de GLPI:
https://glpi-user-documentation.readthedocs.io/fr/latest/modules/configuration/general/api.html
0 commentaires