GLPI/Configuration/Générale/API/Exemple 1
Aller à la navigation
Aller à la recherche
Exemple de script PHP d'utilisation de l'API GLPI.
Source :
- forum GLPI : https://forum.glpi-project.org/
- membre : MrCraac
- https://forum.glpi-project.org/viewtopic.php?id=170219
Autre source identique :
Exemple
<?php
// * * * * * Début des fonctions * * * * *
function OpenSession() {
try {
$api_url = "http://localhost/glpi10/apirest.php";
// Jeton personnel (préférence du compte de l'utilisateur)
$user_token = "SITuxell3jzgeCLCAiwcEfGz7s92qryCt7REDyrr";
// Jeton d'API (préférence du compte de l'utilisateur)
$userapp_token = "eU5uFEuoa2r6LwxFvmp9FCSsNxCN4QwcWUmB8tEI";
// Jeton d'application (app_token) ; (Configuration > Général > API
$app_token = "My0pKoDQElYhBqOFzXhfzd3nrvury0ZphwAcYtll";
$ch = curl_init();
// ATTENTION, c'est bien le jeton d'application de l'utilisateur qui est utilisé pour un bon fonctionnement
$url = $api_url . "/initSession?Content-Type=%20application/json&app_token=" . $app_token . "&user_token=" . $userapp_token;
// ATTENTION, ne fonctionne pas (avec le jeton utilisateur)
// $url = $api_url . "/initSession?Content-Type=%20application/json&app_token=" . $app_token . "&user_token=" . $user_token;
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$json = curl_exec($ch);
echo ("json : " . $json);
curl_close($ch);
$obj = json_decode($json, true);
echo ("objet : " . $obj);
$sess_token = $obj['session_token'];
$headers = array(
'Content-Type: application/json',
'App-Token: ' . $app_token,
'Session-Token: ' . $sess_token
);
return $headers;
}
catch (Exception $e) {
echo "session opening error: $e->getMessage()";
}
}
function CreateUser($name, $realname = null, $firstname = null, $entities_id, $pwd, $headers){
try {
$data = [
'input' => [
'name' => $name,
"password" => $pwd,
'realname' => $realname,
'firstname' => $firstname,
'language' => 'fr_FR',
'is_active' => 1,
'entities_id' => $entities_id,
]
];
$input = json_encode($data);
$api_url = "http://localhost/glpi10/apirest.php";
$url = $api_url . "/User";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST');
curl_setopt($ch, CURLOPT_POSTFIELDS, $input);
$json = curl_exec($ch);
curl_close ($ch);
$res = json_decode($json, true);
if ($res[0] == "ERROR_GLPI_ADD") {
return ["status" => false, "message" => $res[1], "user" => $name];
}
else {
return ["status" => true];
}
}
catch (Exception $e) {echo "user creation error: $e->getMessage()";}
}
function AddEmail($name, $headers) {
// GET USER ID
try {
$api_url = "http://localhost/glpi10/apirest.php";
$url = $api_url . "/search/User?criteria[0][field]=1&criteria[0][searchtype]=contains&criteria[0][value]=^" . $name . "$&forcedisplay[0]=2";
//$url=$api_url . "/listSearchOptions/User";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'GET');
//curl_setopt($ch, CURLOPT_POSTFIELDS, $input);
$json = curl_exec($ch);
curl_close($ch);
}
catch (Exception $e) {
echo "get user id error: $e->getMessage()";
}
$obj = json_decode($json, true);
// ADD USER EMAIL
try {
$user_id = $obj['data']['0']['2'];
$api_url = "http://localhost/apirest.php";
$url = $api_url . "/User/" . $user_id . "/UserEmail/";
$fields = '{"input": {"users_id":' . $user_id . ', "is_default":1, "is_dynamic":0, "email":"' . $email . '"}}';
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_POSTFIELDS, $fields);
$json = curl_exec($ch);
curl_close($ch);
$res = json_decode($json, true);
//print_r($res);
return true;
}
catch (Exception $e) {
echo "email add error: $e->getMessage()";
}
}
// * * * * * Fin des fonctions * * * * *
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
// USER TEST
$name = "pagep2";
$realname = 'Page2';
$firstname = 'Philippe';
$email = 'philippe.page2@domaine.fr';
$entities_id = 0;
$pwd = sha1($name);
$headers = OpenSession();
$CreateUser = CreateUser($name, $realname, $firstname, $entities_id, $pwd, $headers);
if ($CreateUser['status']) {
$AddEmail = AddEmail($email, $headers);
if (!$AddEmail){ echo "error for user: $email while adding email";}
else {echo "user: $email added successfuly";}
}
else { echo "error: ". $CreateUser['message']. " User: ". $CreateUser['user'] ; }