You are not logged in.
Bonjour,
J'essaye d'effectuer une recherche via ticket_user
http://MON_GLPI/apirest.php/search/ticket_user/?criteria[0]field=3&criteria[0][searchtype]=0&criteria[0][value]=29
Mais j'obtiens à chaque fois une erreur 500.
Est-ce que quelqu'un a déjà essayé de faire ce type de recherche ?
L'idée est de rechercher les utilisateurs du ticket N°29
Merci par avance pour vos réponses
Offline
bonjour l'url ci dessous devrait repondre à votre demande
$url="http://MON_GLPI/apirest.php/Ticket/".$tickets_id."/Ticket_user" ;
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
Bonjour,
Tout d'abord merci pour vos contributions sur l'API REST !
J'ai utilisé la solution proposée par LaDenrée pour avancer, mais la logique m'échappe quelque peu.
Ma recherche est similaire (GLPI 9.2.2):
http://.../glpi/apirest.php/search/Ticket_User?criteria[0][field]=3&criteria[0][searchtype]=contains&criteria[0][value]="5"&rawdata=1
Pas d'erreur 500 mais résultat vide.
La raison est une requête SQL incorrecte :
{"totalcount":null,"count":0,"sort":1,"order":"ASC","rawdata":{"search":{"criteria":[{"field":3,"searchtype":"contains","value":"\"5\""}],"metacriteria":[],"sort":1,"order":"ASC","start":0,"is_deleted":0,"export_all":0,"target":"/glpi/front/ticket_user.php","display_type":0,"list_limit":50,"massiveactionparams":[],"rawdata":1,"session_token":"c1khsr9gl79q8ne3j23v12rso5","app_token":"oigO2jJXbpOI8SmdYq00fgATsG4WZE9UimcMqbLE","forcedisplay":[],"range":[0,50],"reset":"reset","all_search":false,"view_search":false,"no_search":false},"itemtype":"Ticket_User","item":{"auto_message_on_action":false,"no_form_page":true,"fields":{"id":"","tickets_id":"","users_id":"","type":"","use_notification":"","alternative_email":""},"dohistory":false,"history_blacklist":[],"additional_fields_for_dictionnary":[],"taborientation":"vertical","get_item_to_display_tab":true,"notificationqueueonaction":false,"showdebug":false},"display_type":0,"toview":[3],"tocompute":[3],"sql":{"count":[],"search":"SELECT 'admin' AS currentuser,\n `glpi_tickets`.`tickets_id` AS `ITEM_0`, `glpi_tickets_users`.`id` AS id FROM `glpi_tickets_users`LEFT JOIN `glpi_tickets` \n ON (`glpi_tickets_users`.`tickets_id` = `glpi_tickets`.`id`\n ) WHERE (`glpi_tickets`.`tickets_id` LIKE '%\"5\"%' ) ORDER BY `id` "},"data":{"execution_time":1.0001659393311}},"content-range":"0--1/"}
glpi_tickets.tickets_id n'existe pas dans cette table ; et en plus je ne comprends pas l'intérêt de la jointure avec glpi_tickets pour une recherche juste sur glpi_tickets_users.
Un bug à ouvrir ?
Offline
si vous utilisez ticket_users vous devez obligatoirement associer au ticket.
pour une recherche sur utilisateurs utilisez users.
quand vous avez le ticket ( dans la table glpi_tickets) vous pouvez y associer des acteurs des taches des suivis, des elements associés... pour les recherche vous devez commencer par le ticket.
et concernant votre demande initiale :
L'idée est de rechercher les utilisateurs du ticket N°29
dans l'absolu vous ne cherchez pas mais vous voulez les utilisateurs
vous devez récupérer le ticket 29 et les utilisateurs associés :
http://.../glpi/apirest.php/apirest.php/Ticket/29/Ticket_user
vous aurez un tableau avec tous les utilisateurs ( demandeurs, observateurs, techniciens, fournisseurs.
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
Bonjour,
Tout à fait d'accord, on commence avec un no (id) de ticket, dans mon cas le 5.
Ensuite on veut récupérer les utilisateurs associés à ce ticket :
soit avec (qui marche) :
http://.../glpi/apirest.php/apirest.php/Ticket/5/Ticket_user
soit avec (qui ne marche pas et qui pourtant devrait être équivalent) :
http://.../glpi/apirest.php/search/Ticket_User?criteria[0][field]=3&criteria[0][searchtype]=contains&criteria[0][value]="5"
avec [field]=3 qui correspond bien à ticket_id
Je m'interroge juste sur la raison de l'échec de la 2nde méthode (requête SQL incorrecte), car j'imagine que cet échec pourrait se reproduire avec d'autres recherches.
Questions complémentaires :
- mon besoin à l'origine était de modifier le users_id pour le ticket=5 et de user type=1 mais la liste retournée par listSearchOptions ne contient pas type : pas d'autre moyen que de récupérer un tableau de tous les utilisateurs et faire ensuite le tri à la main ?
- d'où sort "l'astuce" .../Ticket/<no ticket>/Ticket_user ? Je ne l'ai trouvée nulle part dans la doc : est-elle applicable à d'autres recherches pour d'autres Items ?
Merci encore.
Offline
l'astuce dans la doc est là : /apirest.php/#get-sub-items
j'ai mis un peu de temps à la trouver, j'ai pas mal tourné en rond avec ce même type de liaison incorrecte( surtout au début de la version 9.1 il n'y avait pas beaucoup de sujets sur le forum.)
et je ne vois pas comment faire une recherche directement dans ticket_user. (mais je ne vois pas tout)
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
Impeccable, merci pour l'info.
J'étais passé dessus ce paragraphe sans capter ce que signifiait "sub".
Pour la recherche dans Ticket_User, pareil pour moi, une recherche sans critère retourne un tableau de valeurs vide (mais le compte est bon !), avec l'option rawdata c'est un peu mieux on récupère les Id (mais rien d'autre ...).
Tant pis on fera avec ce qu'on a.
Offline