You are not logged in.
Pages: 1
Bonjour à tous,
Comme expliqué sur d'autre post je test différentes solutions sous GLPI pour mon entreprise, je m'attarde en ce moment sur les webservices et l'API REST.
j'ai effectué des recherches dessus et utilisé la DOC API fourni. mes question sont les suivantes.
J'aimerais faire un test de l'API en local pour créer un ticket. j'ai vu les bout de code sur la documentation pour effectuer tout cela, notamment l'init session qui est si j'ai bien compris la première étape.
Cependant je ne comprend pas ce que c'est exactement, c'est un code HTML que je dois exécuter ? ce sont des lignes de commandes ?
J'aimerais effectuer juste un test en local sur la création d'un ticket mais je suis un peu perdu. Quelqu'un aurait un bout de code pour que je puisse voir et comprendre le fonctionnement ?
Merci d'avance pour vos réponses.
Cordialement,
Offline
Ce n'est pas un code HTML, ce sont des requêtes. Pour utiliser une API REST, on utilise des requêtes GET (pour lire), POST (pour créer), PUT (pour mettre à jour) ou DELETE (pour supprimer).
Ces requêtes peuvent être simulées avec un outil comme Postman (https://www.getpostman.com/docs/)
GLPI 9.1.4 API REST/Client JavaEE/fusionInventory/Debian 8 Jessie
Offline
Très bien, je vais aller voir du coté de PostMan pour simuler un client et envoyer des requêtes de créations de Ticket à GLPI.
Merci beaucoup !
Offline
Sinon il reste la possibilité d'utiliser curl comme indiqué dans la doc de l'API, en ligne de commande sur une machine Linux
GLPI 9.1.4 API REST/Client JavaEE/fusionInventory/Debian 8 Jessie
Offline
le serveur local est sous Windows, existe t'il une possibilité comme celle ci sous Windows ?
Offline
Oui, il faut installer cURL pour Windows (par exemple de https://curl.haxx.se/download.html)
GLPI 9.1.4 API REST/Client JavaEE/fusionInventory/Debian 8 Jessie
Offline
J'ai fait quelques tests sous PostMan.
J'ai réussi a me connecter avec InitSession et les Token. ça me renvoie un token session. cependant pour créer un ticket je suis un peu perdu..
j'effectue une action POST sur localhost/monServeur/apirest.php/:itemtype/
dans le header je place 2 composants : Session-Token et App-Token.
Ensuite je ne vois pas ce qu'il faut faire pour demander la création d'un ticket ?
merci d'avance.
Offline
Dans les headers, j'en place 3: il te manque le content type:
Content-Type:application/json
Sinon, pour ton POST il faut fournir les informations du ticket sous la forme d'un objet json input, tu pourras mettre ça dans le Body.
Par exemple (ici c'est un PUT et les données correspondent à un autre cas mais le principe est le même):
GLPI 9.1.4 API REST/Client JavaEE/fusionInventory/Debian 8 Jessie
Offline
$api_url="localhost/monServeur/apirest.php ";
$headers = array(
('Content-Type: application/json'),
('App-Token: ' . $app_token),
('Session-Token: '.$sess_token)
);
$ch = curl_init();
$url=$api_url . "/Ticket/";
$fields='{
"input": {
"name": "' .$titre. '","requesttypes_id": "1","content": "'.$description.'","type": "1"
}
}';
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);
$request_result = curl_exec($ch);
curl_close ($ch);
$obj = json_decode($request_result,true);
Trouver la panne avant de réparer...
GLPI10.0.16 (ubuntu 22.04 PHP8.1 Mariadb10.6 ) plugins : comportements 2.7.3 reports 1.16.0 formcreator 2.13.9, datainjection 2.13.5 fields 1.21.9
Offline
J'ai ajouté dans mon initSession le header Content-type.
puis pour ma requete POST itemtype, dans le body j'ai recopié ton code et il me renvoie :
Error_Upload_File_Too_Big_Post_Max_Size
The file seems to big
je ne comprend pas vraiment ?
Offline
je viens de le tester sur mon serveur de prod ça ne marche pas, sur mon serveur de test c'est OK.
ils sont tous les 2 en 9.1.4.
avec un peu plus de tests : je peux récupérer les infos en json mais dès qu'il faut un POST ou PUT ça ne marche plus.
le header egalement ne passe pas sous forme de tableau. mais dans l'url oui.
Trouver la panne avant de réparer...
GLPI10.0.16 (ubuntu 22.04 PHP8.1 Mariadb10.6 ) plugins : comportements 2.7.3 reports 1.16.0 formcreator 2.13.9, datainjection 2.13.5 fields 1.21.9
Offline
J'utilise une librairie Java pour créer le ticket donc mon code ne t'aidera pas.
En revanche dans Postman, la création avec les paramètres fournis par l'excellent LaDenrée fonctionne:
GLPI 9.1.4 API REST/Client JavaEE/fusionInventory/Debian 8 Jessie
Offline
Bonjour à tous,
je travaillais sur un autre projet, j'avais donc fait une pause sur GLPI et l'API rest. je me remet dessus en ce moment même.
après avoir essayé de créer un ticket via post man en passant par le "form-data" et par le "raw" je suis en erreur. Cependant je viens de réessayer le code fournis par Minou08 et étrangement cela fonctionne haha
Ainsi je te remercie
Avez vous une doc regroupant toutes les keys existantes pour la création d'un ticket ? je ne vois rien de ce genre dans la doc de l'API REST.
je veux dire, pour la création d'un ticket nous avons "name" et "content" correspondant au titre et à la description d'un ticket. mais connaissez vous les autres keys pour créer un ticket (par exemple la catégorie, le type, l'urgence, le lieu etc ?
Merci d'avance,
Bonne journée.
Offline
De rien
Pour ma part, j'utilise les champs suivants:
public class SimpleTicket {
private static final int NEW_TICKET = 1;
private int id; // Id
private String name; // Titre
private Date date; // Date ouverture
private Date date_creation; // Date creation
private Date closedate; // Date fermeture
private Date date_mod; // Date modification
private int users_id_lastupdater; // Modifié par
private int status; // Etat
private int users_id_recipient;
private String content; // Description
private int urgency; // Urgence
private int impact; // Impact
private int priority; // Priorité
private int type; // Type
private int locations_id; // Site
private int itilcategories_id;
...
et après la création du ticket je crée un ticket user, le demandeur. Exemple:
ticket = new SimpleTicket(typeId,itilCategoryId,impactLevelId,emergencyLevelId,locationId,name,content,new Date());
String result = client.add(ticket);
int ticketId = JSONParser.getCreationResultId(result);
if (ticketId > -1){
TicketUser ticketUser = new TicketUser(user.getId(),ticketId,TicketUserType.ORIGINATOR,1,"");
result = client.addTicketUser(ticketUser);
Avec un ticket user qui a cette structure:
public class TicketUser {
private int users_id;
private int tickets_id;
private TicketUserType type;
private int use_notification;// really a boolean but for json it'll be an int
private String alternative_email = "";
...
et le type de ticket user:
public enum TicketUserType {
//1 = demandeur, 2 = attribué, 3 = observateur
ORIGINATOR(1),
ASSIGNEE(2),
OBSERVER(3);
private int typeValue;
private TicketUserType(int typeValue){
setTypeValue(typeValue);
}
@JsonValue
public int getTypeValue() {
return typeValue;
}
public void setTypeValue(int typeValue) {
this.typeValue = typeValue;
}
}
GLPI 9.1.4 API REST/Client JavaEE/fusionInventory/Debian 8 Jessie
Offline
Bonjour,
Merci de tes informations
Si je comprend bien, tous les champs ticket de ta classe simpleTicket sont définis dans GLPI ? si j'envoie ces informations au serveur GLPI il comprendra ce que signifie la clé Urgency par exemple ?
Je vais tester tout cela avec PostMan. je ne suis pas en charge de coder le client qui interagira avec GLPI via REST, je m'occupe juste de tester la solution en locale, voir si elle est viable et correspond aux besoins de l'entreprise
Offline
Oui, en fait tu peux récupérer les données d'un ticket créé dans GLPI et utiliser ces infos. Les champs sont libellés en Anglais mais la plupart sont explicites.
GLPI 9.1.4 API REST/Client JavaEE/fusionInventory/Debian 8 Jessie
Offline
Très bien je comprend la démarche, merci beaucoup !
Offline
Bonjour,
Je reviens vers vous concernant l'API REST. Après avoir effectué quelques tests de créations de ticket, tout fonctionnait bien. J'aimerais savoir si il est également possible de joindre des fichiers en passant par REST ?
Bonne journée.
Offline
Bonjour à tous,
avez vous des informations sur l'envoi de document via API REST (Document en pièce jointe de ticket GLPI) ?
Offline
Pages: 1