You are not logged in.
Pages: 1
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
Je crois avoir compris : Il se pourrait que ces éléments existent mais uniquement dans la corbeille...
Offline
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
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
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
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
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
Merci beaucoup, ça correspond à une des premières choses que j'avais essayé de faire avant d'abandonner
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
Pages: 1