You are not logged in.

Announcement

 Téléchargez la dernière version stable de GLPI      -     Et vous, que pouvez vous faire pour le projet GLPI ? :  Contribuer
 Download last stable version of GLPI                      -     What can you do for GLPI ? :  Contribute

#1 2017-06-16 10:02:55

Pierre goudat
Member
Registered: 2017-06-12
Posts: 34

Test API REST GLPI 9.1.3

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

#2 2017-06-16 11:20:20

Minou08
Member
Registered: 2017-05-17
Posts: 26

Re: Test API REST GLPI 9.1.3

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

#3 2017-06-16 12:09:19

Pierre goudat
Member
Registered: 2017-06-12
Posts: 34

Re: Test API REST GLPI 9.1.3

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

#4 2017-06-16 12:42:31

Minou08
Member
Registered: 2017-05-17
Posts: 26

Re: Test API REST GLPI 9.1.3

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

#5 2017-06-16 13:25:24

Pierre goudat
Member
Registered: 2017-06-12
Posts: 34

Re: Test API REST GLPI 9.1.3

le serveur local est sous Windows, existe t'il une possibilité comme celle ci sous Windows ?

Offline

#6 2017-06-16 13:29:58

Minou08
Member
Registered: 2017-05-17
Posts: 26

Re: Test API REST GLPI 9.1.3

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

#7 2017-06-16 15:43:45

Pierre goudat
Member
Registered: 2017-06-12
Posts: 34

Re: Test API REST GLPI 9.1.3

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

#8 2017-06-16 16:21:41

Minou08
Member
Registered: 2017-05-17
Posts: 26

Re: Test API REST GLPI 9.1.3

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):

postma10.png


GLPI 9.1.4 API REST/Client JavaEE/fusionInventory/Debian 8 Jessie

Offline

#9 2017-06-16 16:22:53

LaDenrée
HELPER
Registered: 2012-11-19
Posts: 6,146

Re: Test API REST GLPI 9.1.3

$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.10 (ubuntu 22.04 PHP8.1  Mariadb10.6 ) plugins : comportements 2.7.2 reports 1.16.0 formcreator 2.13.8, datainjection 2.13.4 fields 1.21.6

Offline

#10 2017-06-16 16:43:51

Pierre goudat
Member
Registered: 2017-06-12
Posts: 34

Re: Test API REST GLPI 9.1.3

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

#11 2017-06-16 16:52:25

LaDenrée
HELPER
Registered: 2012-11-19
Posts: 6,146

Re: Test API REST GLPI 9.1.3

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.10 (ubuntu 22.04 PHP8.1  Mariadb10.6 ) plugins : comportements 2.7.2 reports 1.16.0 formcreator 2.13.8, datainjection 2.13.4 fields 1.21.6

Offline

#12 2017-06-16 16:58:57

Minou08
Member
Registered: 2017-05-17
Posts: 26

Re: Test API REST GLPI 9.1.3

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:

postma11.png


GLPI 9.1.4 API REST/Client JavaEE/fusionInventory/Debian 8 Jessie

Offline

#13 2017-06-26 14:39:58

Pierre goudat
Member
Registered: 2017-06-12
Posts: 34

Re: Test API REST GLPI 9.1.3

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 wink

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

#14 2017-06-27 10:34:22

Minou08
Member
Registered: 2017-05-17
Posts: 26

Re: Test API REST GLPI 9.1.3

De rien wink

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

#15 2017-06-27 10:58:05

Pierre goudat
Member
Registered: 2017-06-12
Posts: 34

Re: Test API REST GLPI 9.1.3

Bonjour,

Merci de tes informations smile

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 wink

Offline

#16 2017-06-27 17:34:51

Minou08
Member
Registered: 2017-05-17
Posts: 26

Re: Test API REST GLPI 9.1.3

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

#17 2017-06-28 08:58:42

Pierre goudat
Member
Registered: 2017-06-12
Posts: 34

Re: Test API REST GLPI 9.1.3

Très bien je comprend la démarche, merci beaucoup !

Offline

#18 2017-07-26 17:20:55

Pierre goudat
Member
Registered: 2017-06-12
Posts: 34

Re: Test API REST GLPI 9.1.3

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

#19 2017-07-28 17:09:25

Pierre goudat
Member
Registered: 2017-06-12
Posts: 34

Re: Test API REST GLPI 9.1.3

Bonjour à tous,

avez vous des informations sur l'envoi de document via API REST (Document en pièce jointe de ticket GLPI) ?

Offline

Board footer

Powered by FluxBB