GLPI avec l’API REST
[toch_toc]
🔹 1. Utiliser l’API REST de GLPI
L’API permet de récupérer les informations des équipements, tickets, utilisateurs, etc.
➤ Activation de l’API
- Se connecter à GLPI en admin
- Aller dans Configuration → API
- Activer l’API en cochant Activer les API externes
- Ajouter une clé d’API pour s’authentifier
➤ Exemples de requêtes API
🟢 1. Obtenir un jeton de session
Avant de récupérer des informations, il faut un jeton de session.
curl -X GET "http://glpi.example.com/apirest.php/initSession"
-H "Content-Type: application/json"
-H "Authorization: user_token VOTRE_CLE_UTILISATEUR"
👉 Réponse :
{
"session_token": "abcdefgh12345678"
}
🟢 2. Lister les ordinateurs
curl -X GET "http://glpi.example.com/apirest.php/Computer"
-H "Content-Type: application/json"
-H "Session-Token: abcdefgh12345678"
-H "Authorization: user_token VOTRE_CLE_UTILISATEUR"
👉 Réponse :
[
{"id": 1, "name": "PC-001"},
{"id": 2, "name": "PC-002"}
]
🟢 3. Détails d’un ordinateur (ex: ID = 1)
curl -X GET "http://glpi.example.com/apirest.php/Computer/1"
-H "Content-Type: application/json"
-H "Session-Token: abcdefgh12345678"
-H "Authorization: user_token VOTRE_CLE_UTILISATEUR"
👉 Réponse :
{
"id": 1,
"name": "PC-001",
"serial": "1234-5678-91011",
"entities_id": 0,
"date_mod": "2024-02-09 12:34:56"
}
🔹 2. Interroger la base en SSH
Si tu as un accès SSH au serveur GLPI avec MySQL/MariaDB, tu peux récupérer les données directement.
➤ Se connecter en SSH
ssh user@glpi.example.com
➤ Accéder à la base MySQL/MariaDB
mysql -u glpi_user -p glpi_database
➤ Requêtes SQL
- Liste des ordinateurs :
SELECT id, name, serial FROM glpi_computers; - Liste des tickets :
SELECT id, name, status FROM glpi_tickets; - Détails d’un ordinateur :
SELECT * FROM glpi_computers WHERE id = 1;
🔹 3. Affichage des données dans une page Web indépendante
➤ Exemple en PHP utilisant l’API
<?php
$api_url = "http://glpi.example.com/apirest.php/Computer";
$user_token = "VOTRE_CLE_UTILISATEUR";
// Init session
$session = json_decode(file_get_contents("http://glpi.example.com/apirest.php/initSession", false, stream_context_create([
"http" => ["header" => "Authorization: user_token $user_token"]
])));
$session_token = $session->session_token;
// Requête pour obtenir la liste des ordinateurs
$options = [
"http" => [
"header" => "Session-Token: $session_tokenrnAuthorization: user_token $user_token"
]
];
$context = stream_context_create($options);
$data = file_get_contents($api_url, false, $context);
$computers = json_decode($data);
// Affichage HTML
echo "<h1>Liste des Ordinateurs</h1><ul>";
foreach ($computers as $computer) {
echo "<li>{$computer->name}</li>";
}
echo "</ul>";
?>
Ce script récupère la liste des ordinateurs via l’API et l’affiche en HTML.
➤ Exemple avec JavaScript (Fetch API)
On peux récupérer les données directement côté client (⚠️ attention aux permissions CORS):
fetch("http://glpi.example.com/apirest.php/Computer", {
headers: {
"Authorization": "user_token VOTRE_CLE_UTILISATEUR",
"Session-Token": "abcdef123456"
}
})
.then(response => response.json())
.then(data => {
let list = document.getElementById("computers");
data.forEach(computer => {
let li = document.createElement("li");
li.textContent = computer.name;
list.appendChild(li);
});
});
✅ Conclusion
- API REST : propre et sécurisé, idéal pour récupérer des données dynamiquement
- SSH + SQL : utile si l’API est inaccessible ou pour récupérer des données brutes
- Page Web indépendante : possible avec PHP, JavaScript, ou tout autre langage