GLPI avec l’API REST


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

  1. Se connecter à GLPI en admin
  2. Aller dans Configuration → API
  3. Activer l’API en cochant Activer les API externes
  4. 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