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 2024-04-05 12:13:48

Faxouille
Member
Registered: 2024-04-05
Posts: 6

Filtrage requête API

Bonjour a tous,
Pour vous mettre dans le contexte je cherche a mettre en place un système qui va intercepter la différence qu'il y a entre les moniteurs branché a un poste et ceux initialement branché lors de l'exécution de l'agent GLPI en utilisant les ST des postes et des écrans. Cependant je bloque sur un point, en effet je n'arrive pas a faire de requêtes a l'API pour n'obtenir que les moniteurs du poste dont le ST = $ST.
Je n'arrive même pas a filtrer uniquement les PC qui ont un ST = $ST.

Sauriez vous m'indiquer la requête a effectué pour que ces filtres soit pris en compte ?
Merci a ceux qui prendront le temps de m'aider.

Last edited by Faxouille (2024-04-05 12:16:04)

Offline

#2 2024-04-05 13:39:13

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

Re: Filtrage requête API

c'est quoi un  ST ?

arrivez vous à faire la requête avec l'interface graphique ?


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

#3 2024-04-05 13:41:20

Faxouille
Member
Registered: 2024-04-05
Posts: 6

Re: Filtrage requête API

Par ST je veux dire Serial Tag / Service Tag. Le numéro de série de l'appareil..
Je n'ai pas tout les accès a l'interface du GLPI je teste toutes mes requêtes via POSTMAN puis python

Offline

#4 2024-04-05 14:03:23

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

Re: Filtrage requête API

avec cette url vous pouvez filtrer soit par N° de série di PC soit par N° de série du moniteur ( supprimez le critère 0 ou 1 )
attention pour filtrez avec "contains" pensez à encadrer la valeur du N° de série par un ^ au début et un $ à la fin 

.../apirest.php/search/Computer/?is_deleted=0&as_map=0
&criteria[0][link]=AND&criteria[0][field]=5&criteria[0][searchtype]=contains&criteria[0][value]=STduPC
&criteria[1][link]=AND&criteria[1][itemtype]=Monitor&criteria[1][meta]=1&criteria[1][field]=5&criteria[1][searchtype]=contains&criteria[1][value]=STduMoniteur

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

#5 2024-04-05 14:57:21

Faxouille
Member
Registered: 2024-04-05
Posts: 6

Re: Filtrage requête API

Effectivement cela fonctionne ! Merci beaucoup !
Savez vous comment je pourrais obtenir le N° de série des écrans qui sont relié a l'ordinateur que je cherche avec le N° de série du PC ? s'il vous plait ?

Offline

#6 2024-04-05 17:33:14

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

Re: Filtrage requête API

je n'ai pas trouvé comment afficher directement  le N° de série

cette requête renvoie la liste des écrans avec leurs ID  (key=2)

.../apirest.php/search/Monitor/?is_deleted=0&as_map=0&criteria[0][link]=AND&criteria[0][itemtype]=Computer&criteria[0][meta]=1&criteria[0][field]=5&criteria[0][searchtype]=contains&criteria[0][value]=^STduPC$

il faut ensuite demander   pour récupérer le N° de série de chaque moniteur :  ( le N° de série renvoyé dans l'appel ci dessus est celui du PC)

.../apirest.php/Monitor/$ID


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

#7 2024-04-08 12:00:51

Faxouille
Member
Registered: 2024-04-05
Posts: 6

Re: Filtrage requête API

Je crois malheureusement qu'il y a une erreur :'(
La requête :

.../apirest.php/search/Monitor/?is_deleted=0&as_map=0&criteria[0][link]=AND&criteria[0][itemtype]=Computer&criteria[0][meta]=1&criteria[0][field]=5&criteria[0][searchtype]=contains&criteria[0][value]=^STduPC$

Ne me renvoie pas l'id du moniteur, mais me renvoie d'autres data :
(example)
{
    "totalcount": 1,
    "count": 1,
    "sort": "1",
    "order": "ASC",
    "data": [
        {
            "1": "Model",
            "31": null,
            "23": "Marque",
            "3": "LILLE > Collaborateur",
            "4": null,
            "40": "Nom de l'écran",
            "19": "2024-01-08 16:29:56",
            "7": null,
            "5": "STduPC"
        }
    ],
    "content-range": "0-0/1"
}

Offline

#8 2024-04-08 12:08:44

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

Re: Filtrage requête API

ajoutez "&forcedisplay[0]=2" en fin de requête pour forcer le retour de ID

.../apirest.php/search/Monitor/?is_deleted=0&as_map=0&criteria[0][link]=AND&criteria[0][itemtype]=Computer&criteria[0][meta]=1&criteria[0][field]=5&criteria[0][searchtype]=contains&criteria[0][value]=^STduPC$&forcedisplay[0]=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

#9 2024-04-09 14:58:08

Faxouille
Member
Registered: 2024-04-05
Posts: 6

Re: Filtrage requête API

Bonjour a vous,
Merci énormément pour votre assistance j'ai su avancer et développer mon projet.
Mais maintenant j'aimerais pouvoir forcer l'ajout d'un écran.  Sauriez vous quelle requête pourrais-je effectuer pour créer un nouveau écran dans GLPI avec son ST = STdeEcran et l'ajouter au connexion du poste dont le ST = STduPC              ?
Merci d'avance pour votre temps et votre assistance

Offline

#10 2024-04-09 16:04:51

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

Re: Filtrage requête API

pour creer un écran
utilisez la methode POST
vous pouvez retirer quelques lignes

$url="...apirest.php/Monitor/";
$payload="{"input":
{"is_recursive":0,
"entities_id":2,
"name": "MonEcran",
"contact":"MonContact",
"contact_num":null,
"users_id_tech":0,
"groups_id_tech":0,
"comment":"demo creation par API",
"serial":"MonTS",
"otherserial":null,
"size":"0.00",
"have_micro":0,
"have_speaker":0,
"have_subd":0,
"have_bnc":0,
"have_dvi":0,
"have_pivot":0,
"have_hdmi":0,
"have_displayport":0,
"locations_id":0,
"monitortypes_id":0,
"monitormodels_id":0,
"manufacturers_id":2144,
"is_global":0,
"is_deleted":0,
"is_template":0,
"template_name":null,
"users_id":4136,
"groups_id":0,
"states_id":1,
"ticket_tco":"0.0000",
"is_dynamic":0
}}";

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

#11 2024-04-09 16:34:06

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

Re: Filtrage requête API

pour creer un lien entre un computer et monitor


utilisez la methode POST

$url="/Computer_Item/";
$payload='{"input":
{"is_deleted":0,
"is_dynamic":0,
"computers_id": 11801,
"itemtype":"Monitor",
"items_id":10969
}}';

items_id etant l'id du moniteur, vous l'aurez deviné...


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

Board footer

Powered by FluxBB