You are not logged in.
Bonjour,
Je chercher à faire des requêtes API REST sur les plugins WEBAPPLICATION et BASE DE DONNEES.
Pour le moment, je n'ai pas réussi à le faire.
Est-ce qu'il y a une limitation à l'utilisation de l'API REST ?
(j'ai vu plusieurs TOPICs parlant de ce sujet mais restant sans réponse à ce jour).
Merci d'avance pour votre aide les amis
Bonne journée
Offline
plugin+Nomduplugin+classe
par exemple pour récupérer une webapplication :
$url="[...]/glpi/apirest.php/pluginWebapplicationswebapplication/1/";
par exemple pour récupérer une Database:
$url="[...]/glpi/apirest.php/pluginDatabasesdatabase/1/";
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 LaDenrée !
Réponse au top.
Donc, l'API REST est fonctionnelle avec les plugins WebApplication et Database, je confirme
Me reste juste à trouver comment rechercher une web application qui comporte le mot clé dans son nom... mais je vais chercher et si je ne trouve pas, je reviendrais faire un tour ici.
Encore merci.
Offline
Je reviens sur ce topic car je ne parviens pas à faire de recherche sur le plugin.
Je m'explique.
L'affichage fonctionne très bien lorsqu'on connait l'ID de l'objet du plugin WebApplication mais lorsqu'on veut faire une recherche avec un mot clé, l'API ne retour pas le résultat attendu.
Voici les commandes que j'ai utilisées :
$url="[...]/glpi/apirest.php/search/pluginWebapplicationswebapplication?criteria[0][field]=1&criteria[0][searchtype]=contains&criteria[0][value]=$motcle";
Résultat de la requête :
totalcount :
count : 0
sort : 1
order : ASC
content-range : 0--1/
J'ai également testé la requête suivante pour voir si ça me retournait mes WebApplications mais sans succès :
$url="[...]/glpi/apirest.php/pluginWebapplicationswebapplication?range=0-1000"
Résultat de la requête : aucun retour
Si quelqu'un a une idée, je suis preneur.
J'ai trouvé une parade en faisant une recherche sur chaque ID mais ça prend énormément de temps :
for($i=0; $i -lt 10000; $i++)
{
$resultReq = ($(Invoke-RestMethod "$($global:GLPI_api)pluginWebapplicationswebapplication/$i/" -Method Get -Headers $global:HeadersRequest) | select * | where name -LIKE "*$motcle*").address
if ($resultReq)
{
write-host "Résultat recherche URL : $resultReq"
if ($resultatURL)
{
$resultatURL=$resultReq
$count=1
}
else
{
$resultatURL=$resultatURL+"°"+$resultReq
$count=$count+1
}
}
}
Merci
Offline
Pour le mot clé c est ^motcle$
Accent circonflexe avant et dollars après
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 encore LaDenrée.
Malheureusement, ça ne fonctionne pas.
Mon code est en PowerShell.
$motcle correspond à ma variable en fait. Effectivement, tu as raison, je pourrais rechercher le mot clé qui pourrait correspondre au nom de mon application mais je préfère avoir un mot clé qui pourrait matcher avec plusieurs noms de webapplication.
J'ai testé ceci :
PS C:\WINDOWS\system32> $(Invoke-RestMethod "https://monglpi/glpi/apirest.php/search/pluginWebapplicationswebapplication?criteria[0][field]=1&criteria[0][searchtype]=contains&criteria[0][value]=MOTCLE" -Method Get -Headers $global:HeadersRequest)
Le résultat de cette requête est le suivant :
totalcount :
count : 0
sort : 1
order : ASC
content-range : 0--1/
J'ai testé la même requête sur les groupes et celle ci fonctionne bien :
PS C:\WINDOWS\system32> $(Invoke-RestMethod "https://monglpi/glpi/apirest.php/search/group?criteria[0][field]=14&criteria[0][searchtype]=0&criteria[0][value]=MOTCLE" -Method Get -Headers $global:HeadersRequest)
totalcount : 1
count : 1
sort : 1
order : ASC
data : {@{1=GROUPE - MOTCLE; 16=groupe de test; 14=MOTCLE}}
content-range : 0-0/1
J'ai également vérifié la liste des SearchOptions pour le plugin et c'est pourtant bien le champ 1 sur lequel je dois rechercher.
PS C:\WINDOWS\system32> $(Invoke-RestMethod "https://monglpi/glpi/apirest.php/listSearchOptions/pluginWebapplicationswebapplication" -Method Get -Headers $global:HeadersRequest)
common : @{name=Applications Web}
1 : @{name=Nom; table=glpi_plugin_webapplications_webapplications; field=name; datatype=itemlink; nosearch=False; nodisplay=False; available_searchtypes=System.Object[];
uid=PluginWebapplicationswebapplication.PluginWebapplicationsWebapplication.name}
2 : @{name=Catégorie; table=glpi_plugin_webapplications_webapplicationtypes; field=name; datatype=dropdown; nosearch=False; nodisplay=False; available_searchtypes=System.Object[];
uid=PluginWebapplicationswebapplication.PluginWebapplicationsWebapplicationType.name}
Si tu as une autre idée sur la raison pourquoi le résultat de ma requête ne s'affiche pas, je suis preneur.
Merci
Offline
Pour faire plus simple sur ma demande, pourquoi cette différence entre une recherche sur les groupes et sur les webapplications ? Sur les groupes, j'obtiens le nombre d’occurrence en faisant une simple recherche alors que pour les webapplications, je n'ai pas ce total. J'ai l'impression que la recherche sur le plugin WebApplication ne fonctionne pas :
PS C:\WINDOWS\system32> $(Invoke-RestMethod ""https://monglpi/glpi/apirest.php/search/group" -Method Get -Headers $HeadersRequest)
totalcount : 824
count : 15
sort : 1
order : ASC
data : {@{1=Groupe1}, @{1=Groupe2}, @{1=Groupe2}, @{1=Groupe3}...}
content-range : 0-15/824
Et sur les WebApplications, ça donne ceci :
PS C:\WINDOWS\system32> $(Invoke-RestMethod "https://monglpi/glpi/apirest.php/search/pluginWebapplicationswebapplication" -Method Get -Headers $HeadersRequest)
totalcount :
count : 0
sort : 1
order : ASC
content-range : 0--1/
J'ai testé également sur les plugins : pluginDatabasesdatabase et pluginAccountsaccount et j'obtiens un résultat similaire, à savoir, pas de nombre total d'occurrence.
Si quelqu'un a réussi à faire fonctionner la recherche via API REST sur un plugin GLPI, merci de partager votre expérience.
Offline
Hello,
Je fais ça sur le plugin Fusioninventory et ça fonctionne.
Si je cherche les "PluginFusioninventoryIPRange" ou les "PluginFusioninventoryAgent", par exemple, j'ai bien une réponse.
Je vois que tu fais du Powershell, tu devrais regarder dans le forum, je viens de poster un lien vers un module powershell pour faire tout ça.
Offline
Merci Jean-Christophe !
Voici le lien vers le topic dont parle Jean-Christophe : https://forum.glpi-project.org/viewtopic.php?id=169938
Je vais tester ça.
Offline
Merci pour ton aide. Le script est super !
En ce qui concerne mon problème, il s'agissait d'une faute de frappe dans le nom du plugin car c'est "case sensitive" !
Du coup, pour faire une recherche sur les webapplications, il faut utiliser la requête :
PS C:\WINDOWS\system32> $(Invoke-RestMethod "https://monglpi/glpi/apirest.php/search/pluginWebapplicationsWebapplication" -Method Get -Headers $HeadersRequest)
au lieu de :
PS C:\WINDOWS\system32> $(Invoke-RestMethod "https://monglpi/glpi/apirest.php/search/pluginWebapplicationswebapplication" -Method Get -Headers $HeadersRequest)
Les 2 "w" du nom du plugin doivent être en majuscule sinon ça ne fonctionne pas.
Un grand merci à Jean-Christophe et à LaDenrée pour votre aide précieuse.
Offline