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 2021-04-14 12:25:00

loicd
Member
Registered: 2021-03-25
Posts: 11

Logiciels non renvoyés par l'API REST

Bonjour,

J'ai un programme qui récupère toutes les versions de logiciels via l'API Rest en utilisant "apirest.php/SoftwareVersion" avec la pagination,

pour éviter de suivre le lien Software à chaque fois pour avoir le nom du logiciel, j'ai également chargé au préalable l'ensemble des logiciels en utilisant l'URL "apirest.php/Software".

Pour la pagination je récupère 100 éléments à chaque fois, et j'avance jusqu'à la valeur max que j'obtiens dans le response header.

Je récupère ceci par exemple pour les logiciels : "content-range: 0-99/12919 ". Ensuite je récupère l'id de Software dans chaque version pour retrouver le Software téléchargé précédemment.

Je suis tombé sur un problème , certains versions référencent des id de logiciels qui existent bien dans GLPI mais qui ne sont pas renvoyés quand je récupère l'ensemble des logiciels.

J'ai compté et je récupère bien 12919  logiciels, ce qui correspond bien à ce que l'info content-range me donne.

Voici un exemple :


Je récupère les logiciels avec cette requête : apirest.php/Software?range=0-99 (en boucle jusqu'à 12900-12999)
Je fais la même opération pour les versions : apirest.php/SoftwareVersion?range=0-99 (en boucle jusqu'à 67400-67499)


J'ai une version comme ceci :

{
"id": 72511,
"entities_id": 0,
"is_recursive": 0,
"softwares_id": 26562,
"states_id": 0,
"name": "",
"comment": null,
"operatingsystems_id": 0,
"date_mod": null,
"date_creation": null,
"links": [
  {
"rel": "Entity",
"href": "apirest.php/Entity/0"
},
  {
"rel": "Software",
"href": "apirest.php/Software/26562"
}
],
}

Et dans la liste des 12919  logiciels que j'ai récupéré l'id 26562 n'est pas présent.
Par contre si je fais une requête sur cet id particulier, avec l'url apirest.php/Software/26562, ce logiciel existe bien.

Il y a-til une erreur dans ma manière d'effectuer les requêtes?

Merci,

Loïc

Last edited by loicd (2021-04-14 12:52:58)

Offline

#2 2021-04-14 15:19:57

loicd
Member
Registered: 2021-03-25
Posts: 11

Re: Logiciels non renvoyés par l'API REST

Je crois avoir compris : Il se pourrait que ces éléments existent mais uniquement dans la corbeille...

Offline

#3 2021-04-14 16:01:40

loicd
Member
Registered: 2021-03-25
Posts: 11

Re: Logiciels non renvoyés par l'API REST

Après vérification il semble donc que le endpoint apirest.php/SoftwareVersion renvoie des versions dont les logiciels sont dans la corbeille.
Est-il possible d'éviter ça , ou faut-il passer par la fonction search?

Merci

Offline

#4 2021-04-15 15:07:31

loicd
Member
Registered: 2021-03-25
Posts: 11

Re: Logiciels non renvoyés par l'API REST

Du coup j'ai changé mon fusil d'épaule :

j'essaie de faire une recherche pour obtenir toutes les versions dont le logiciel n'est pas supprimé.
Je pense que ça devrait ressembler à ça : apirest.php/search/SoftwareVersion?criteria[0][meta]=true&criteria[0][itemType]=Software&criteria[0][field]=X&criteria[0][searchtype]=equals&criteria[0][value]=0

Mais je ne sais pas comment trouver le bon nuémro de champ correspondant à "isDeleted" dans les Logiciels, je voudrais aussi forcer l'affichage des champs suivants (force display :

- nom de la version
- id du logiciel
- nom du logiciel
- statut de la version

mais là encore je ne comprend pas bien quelle syntaxe utiliser...


Merci d'avance

Last edited by loicd (2021-04-15 15:39:47)

Offline

#5 2021-04-15 16:13:48

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

Re: Logiciels non renvoyés par l'API REST

pour filter les logiciels supprimés il y a   is_deleted=0 à ajouter dans les critères du search.
mais votre requête porte sur softwareversion pas sur software  .

pour avoir la liste des champs et leur index vous avec apirest.php/listSearchOptions/SoftwareVersion

qui renvoie

{"common":{"name":"Caractéristiques"},
"2":{"name":"Nom","table":"glpi_softwareversions","field":"name","datatype":"string","nosearch":false,"nodisplay":false,"available_searchtypes":"contains","notcontains","equals","notequals"],"uid":"SoftwareVersion.name"},
"4":{"name":"Système d'exploitation","table":"glpi_operatingsystems","field":"name","datatype":"dropdown","nosearch":false,"nodisplay":false,"available_searchtypes":"contains","notcontains","equals","notequals"],"uid":"SoftwareVersion.OperatingSystem.name"},
"16":{"name":"Commentaires","table":"glpi_softwareversions","field":"comment","datatype":"text","nosearch":false,"nodisplay":false,"available_searchtypes":"contains","notcontains"],"uid":"SoftwareVersion.comment"},
"31":{"name":"Statut","table":"glpi_states","field":"completename","datatype":"dropdown","nosearch":false,"nodisplay":false,"available_searchtypes":"contains","notcontains","equals","notequals","under","notunder"],"uid":"SoftwareVersion.State.completename"},
"121":{"name":"Date de création","table":"glpi_softwareversions","field":"date_creation","datatype":"datetime","nosearch":false,"nodisplay":false,"available_searchtypes":"equals","notequals","lessthan","morethan","contains","notcontains"],"uid":"SoftwareVersion.date_creation"}}

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

#6 2021-04-15 16:17:03

loicd
Member
Registered: 2021-03-25
Posts: 11

Re: Logiciels non renvoyés par l'API REST

Merci pour votre réponse.
Désolé ma question n'était surement pas claire, je cherche en effet à chercher les versions rattachées à des logiciels qui ne sont pas supprimés.

Offline

#7 2021-04-15 16:50:23

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

Re: Logiciels non renvoyés par l'API REST

je vous propose les logiciels non supprimés avec leur version :

apirest.php/search/Software/?is_deleted=0&forcedisplay[0]=1&forcedisplay[1]=5&forcedisplay[2]=31&forcedisplay[3]=2";


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

#8 2021-04-15 17:00:51

loicd
Member
Registered: 2021-03-25
Posts: 11

Re: Logiciels non renvoyés par l'API REST

Merci beaucoup, ça correspond à une des premières choses que j'avais essayé de faire avant d'abandonner smile

J'ai juste un petit soucis , par exemple pour ce résultat :

  {
"1": "Logiciel 1",
"2": 24995,
"5": [
  "R21x",
  "R22x",
  "R23x"
],
"31": [
  "Interdite",
  "Préconisée"
],
},

J'ai 3 versions, qui ont respectivement les status Interdite , Interdite et Préconisée, mais il semble que les valeurs retournées soient dédupliquées (2 status retournés seulement), du coup est-il possible de savoir quel version a quel statut?

Merci encore

Last edited by loicd (2021-04-16 13:24:19)

Offline

Board footer

Powered by FluxBB