You are not logged in.
Bonjour,
J'ai essayé plusieurs appels mais je ne comprends pas comment aller chercher la localisation depuis le nom d'ordinateur.
Je récupère le nom de l'ordinateur via un programme et je dois afficher la localisation et si possible proposer un update ...
Comment faire :
Il faut trouver l'id ? Il faut utiliser apirest.php#search-items mais comment faire ?
Peut-on trouver la localisation directement d'un ordinateur sans passer par l'id en utilisant l'ordinateur ?
J'ai essayé ceci sans succès :
apirest.php/search/Computer?&criteria[0][link]=AND&criteria[0][field]=1&criteria[0][searchtype]=equals&criteria[0][value]=7542&search=Rechercher&itemtype=Computer
Mais ici c'est l'id qui est passé en paramètres, moi j'ai besoin de passer le nom d'ordinateur
Merci pour votre aide ..
Last edited by falco2001 (2022-05-25 14:48:58)
Offline
si vous avez lD le mieux c'est d'appelr irectement l'item :
apirest.php/Computer/7542
pour rechercher à partir du nom :
apirest.php/search/Computer?&criteria[0][link]=AND&criteria[0][field]=1&criteria[0][searchtype]=contains&criteria[0][value]=^leNomDeMonPC$
mettez ^ au début et $ à la fin ça équivaut à "égal" mais pour du texte
pour forcer l'affichage de l'id du lieu dans la réponse ajoutez dans le search : &forcedisplay[0]=3
vous pouvez aussi tenter d'ajouter : expand_dropdowns=true pour récupérer le libellé plutôt que l'ID du lieu
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 bien
Il me faut bien le lieu à partir du nom du PC.
J'ai essayé
apirest.php/search/Computer?&criteria[0][link]=AND&criteria[0][field]=1&criteria[0][searchtype]=contains&forcedisplay[0]=3&criteria[0][value]=^l102731$
J'obtiens :
{
"totalcount": 0,
"count": 0,
"sort": "1",
"order": "ASC",
"content-range": "0--1/0"
}
LA machine l102731 existe bien .
Comment faire ? Merci
PS : avec apirest.php/Computer/7542 : je n'ai pas l'utilité de ceci car je récupère que le nom depuis un autre programme, mais j'ai pour ce cas précis : "vous n'avez pas les droits ..." J'ai changé alors id api en choisissant et en vérifiant via getprofiles je suis super admin de la racine et sous entité et j'ai ce message pour apirest.php/Computer/7542
Last edited by falco2001 (2022-05-09 09:18:37)
Offline
surprenant, sur ma version 9.4.6
http://localhost/glpi/apirest.php/search/Computer/?is_deleted=0&as_map=0&criteria[0][link]=AND&criteria[0][field]=1&criteria[0][searchtype]=contains&criteria[0][value]=^PO19006$&forcedisplay[0]=3&expand_dropdown=true
me renvoie bien 1 seul PC avec les libellés en clair.
idem pour :
http://localhost/glpi/apirest.php/Computer/4979/ j'ai bien mon PC.
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
ça marche aussi sur une version 9.5.5.
c'est bizarre votre histoire de droits.
avez vous vérifié apirest.php/getActiveProfile/ ? pour être sûr que le bon profil est activé
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
j'ai
{
"active_profile": {
"id": 4,
"name": "super-admin",
"interface": "central",
"is_default": 0,
"helpdesk_hardware": 3,
"helpdesk_item_type": [
"Computer",
"Monitor",
"NetworkEquipment",
"Peripheral",
"Phone",
"Printer",
"Software",
"PluginGenericobjectInventaire"
],
Pour l'accès
apirest.php/search/Computer?&criteria[0][link]=AND&criteria[0][field]=1&criteria[0][searchtype]=contains&criteria[0][value]=^l102731$&forcedisplay[0]=3&expand_dropdown=true
{
"totalcount": 0,
"count": 0,
"sort": "1",
"order": "ASC",
"content-range": "0--1/0"
}
Je n'y comprends plus rien.
Y-t-il un moyen de sortir une liste d'ordinateurs ou tous. Je verrai ainsi si ça marche !
Last edited by falco2001 (2022-05-09 10:53:05)
Offline
vous avez un & en trop après le ? de l'URL
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
eh oui mais avec :
apirest.php/search/Computer/?is_deleted=0&as_map=0&criteria[0][link]=AND&criteria[0][field]=1&criteria[0][searchtype]=contains&criteria[0][value]=^l102731$&forcedisplay[0]=3&expand_dropdown=true
idem !
Offline
Je n'y comprends plus rien.
Y-t-il un moyen de sortir une liste d'ordinateurs ou tous. Je verrai ainsi si ça marche !
apirest.php/Computer/
tout simplement
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
<Empty JSON content> avec apirest.php/Computer/
et rien
avec :
apirest.php/search/Computer/?is_deleted=0&as_map=0&criteria[0][link]=AND&criteria[0][field]=1&criteria[0][searchtype]=contains&criteria[0][value]=^l102731$&forcedisplay[0]=3&expand_dropdown=true
Help !
Offline
dans cette discussion https://forum.glpi-project.org/viewtopic.php?id=283120 ça a marché en utilisant &rawdata=true
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
idem rien en sortie !
Je n'y comprends plus rien. Si vous avez une autre idée .. Merci beaucoup
Je dois m'absenter une semaine.
Dommage que ça ne marche pas !
Offline
Hello,
j'ai refait un apirest.php/getActiveProfile/
J'ai :
"id": 4,
"name": "super-admin",
"interface": "central",
...
"entities": [ {
"id": 0,
"name": "Entité racine",
"is_recursive": 1
}],
et avec
<Empty JSON content> avec apirest.php/Computer/
et rien
avec :
apirest.php/search/Computer/?is_deleted=0&as_map=0&criteria[0][link]=AND&criteria[0][field]=1&criteria[0][searchtype]=contains&criteria[0][value]=^l102731$&forcedisplay[0]=3&expand_dropdown=true&rawdata=true
Help !
Bien sûr :
ceci fonctionne :
/apirest.php/Ticket/93753
{
"id": 93753,
"entities_id": 56,
"name": "Sortie",
"date": "2021-06-08 14:37:40",
"closedate": null,
"solvedate": null,
"date_mod": "2021-06-08 14:37:40",
"users_id_lastupdater": 9753,
"status": 2,
"users_id_recipient": 9753,
...
Mais je désire des informations de computer comme la localisation et plus ... mais rien ne fonctionne ! Merci
Dans les logs j'ai pour un appel Computer : 409 bizarre ...
[24/May/2022:14:16:03 +0200] "GET /apirest.php/Computer HTTP/1.1" 200 409 "-" "Apache-HttpClient/4.5.5 (Java/12.0.1)"
et via un id computer :
/apirest.php/Computer/7542
"ERROR_RIGHT_MISSING",
"Vous n'avez pas les droits requis pour réaliser cette action."
et dans les logs :
"GET /apirest.php/Computer/7542 HTTP/1.1" 403 474 "-" "Apache-HttpClient/4.5.5 (Java/12.0.1)"
Last edited by falco2001 (2022-05-24 16:30:14)
Offline
re,
je vais essayer d'être clair !
Je désire à partir du nom de l'ordinateur extraire la localisation et d'autres données ensuite.
Première question ?
- Quelle est la requête pour faire ceci ?
- FAut-il passer par l'ID ?
si je fais /apirest.php/Computer/7542 (ici l'id) pas les droits alors que vu plus haut je suis superadmin récursif ..
Si je lance :
apirest.php/search/Computer/?is_deleted=0&as_map=0&criteria[0][link]=AND&criteria[0][field]=1&criteria[0][searchtype]=contains&criteria[0][value]=^l102731$&forcedisplay[0]=3&expand_dropdown=true
il m'envoie vers le CAS ! ici 102731c'est le nom de l'ordinateur ?
et
/apirest.php/search/Computer/?is_deleted=0&as_map=0&criteria[0][link]=AND&criteria[0][field]=1&criteria[0][searchtype]=contains&criteria[0][value]=l102731&forcedisplay[0]=3&expand_dropdown=true&rawdata=true
renvoie :
"rawdata": {
"search": {
"criteria": [ {
"link": "AND",
"field": "1",
"searchtype": "contains",
"value": "l102731"
"sql": {
"count": [],
"search": "SELECT DISTINCT `glpi_computers`.`id` AS id, 'glpi-twimm' AS currentuser,\n `glpi_computers`.`entities_id`, `glpi_computers`.`is_recursive`, `glpi_computers`.`name` AS `ITEM_Computer_1`,\n `glpi_computers`.`id` AS `ITEM_Computer_1_id`,\n `glpi_entities`.`completename` AS `ITEM_Computer_80`, `glpi_locations`.`completename` AS `ITEM_Computer_3` FROM `glpi_computers`LEFT JOIN `glpi_entities` \n ON (`glpi_computers`.`entities_id` = `glpi_entities`.`id`\n )LEFT JOIN `glpi_locations` \n ON (`glpi_computers`.`locations_id` = `glpi_locations`.`id`\n ) WHERE `glpi_computers`.`is_deleted` = 0 AND `glpi_computers`.`is_template` = 0 AND ( `glpi_computers`.`entities_id` IN ('56') OR (`glpi_computers`.`is_recursive`='1' AND `glpi_computers`.`entities_id` IN (0)) ) AND ( (`glpi_computers`.`name` LIKE '%l102731%' ) ) ORDER BY `ITEM_Computer_1` ASC "
Si vous pouvez m'aider merci ?
Offline
avez vous des PC dans l'entité racine ?
WHERE `glpi_computers`.`is_deleted` = 0 AND `glpi_computers`.`is_template` = 0 AND ( `glpi_computers`.`entities_id` IN ('56') OR (`glpi_computers`.`is_recursive`='1' AND `glpi_computers`.`entities_id` IN (0)) )
cette requete ne renvoie que les PC de l'entité N°56 ou de la racine et avec sous entité=oui.
ça ne nous donne pas la solution mais un indice sur la cause.
avez vous des PC dans l'entité 56 ? avez vous essayé de vous mettre dans l'entité racine soit un post sur changeActiveEntities, soit en mettant votre entité par défaut sur la racine dans vos préférences ?
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
Oui c'est vrai j'avais vu dans la requête ... Merci
En changeant la valeur dans le profil du compte c'est pareil La requête va chercher à la racine et dans l'entité 56. Même en refaisant l'initSession ....
Il doit avoir un endroit autre que le profil utilisateur où est stockée cette valeur de l'entité par défaut?
Les ordinateurs sont dans l'entité 7.
Je ne sais pas comment faire ?
AVec :
/apirest.php/changeActiveProfile
et méthode Post et paramètre SOAPUI Media type Application/json:
"profiles_id": 7
J'ai
[
"ERROR_JSON_PAYLOAD_INVALID",
"JSON payload seems not valid"
]
Last edited by falco2001 (2022-05-25 13:10:49)
Offline
Bonjour,
La charge utile doit être enveloppée dans "{}" pour en faire un JSON valide. Exemple : '{"profiles_id": 7}'.
GLPI Collaborator and Plugin Developer.
My non-English comments are automated translations. Sorry for any confusion that causes.
Mes commentaires non anglais sont des traductions automatiques. Désolé pour toute confusion qui cause.
Mis comentarios que no están en inglés son traducciones automáticas. Perdón por cualquier confusión que cause.
Offline
MErci,
Je me suis trompé c'est /apirest.php/changeActiveEntities
avec {"entities_id": 7, "is_recursive": true}
J'ai
[
true
]
MAis ça ne change pas dans le profil du compte !
Comment faire ? MErci
et
PS : voir avant : En changeant la valeur dans le profil du compte c'est pareil La requête va chercher à la racine et dans l'entité 56. Même en refaisant l'initSession ....
Il doit avoir un endroit autre que le profil utilisateur où est stockée cette valeur de l'entité par défaut?
Last edited by falco2001 (2022-05-25 14:29:59)
Offline
ok.
Avec /apirest.php/changeActiveEntities
avec {"entities_id": 7}
Je positionne bien le compte utilisé par l'API dans l'entité 7 .. mais ça ne se voit pas dans GLPI !
Pour vérifier faire : apirest.php/getActiveEntities/
Pour obtenir donc le contenu de l'ordinateur : l102731
/apirest.php/search/Computer/?is_deleted=0&as_map=0&criteria[0][link]=AND&criteria[0][field]=1&criteria[0][searchtype]=contains&criteria[0][value]=l102731&forcedisplay[0]=3&expand_dropdown=true&rawdata=true
ou
/apirest.php/search/Computer/?is_deleted=0&as_map=0&criteria[0][link]=AND&criteria[0][field]=1&criteria[0][searchtype]=contains&criteria[0][value]=l102731&forcedisplay[0]=3&expand_dropdown=true
Je trouve bien une réponse ! avec la localisation.
à moi de traiter le json avec Talend ou Flutter/Dart
Merci beaucoup à LaDenrée .. et aussi à cconard96
Offline
Autre question :
En fait la requête retourne deux machines l102731 et vm-l102731
Comment faire pour avoir que la l102731!!
Merci d'avance ! où trouver la doc à part apirest.php#glossary
Comment obtenir la localisation d'un ordinateur directement ? (ici D4 019)
Faut-il passer par l'ID et utiliser apirest.php/Computer/id ? mais comment l'obtenir ?
C'est plus facile en SQL ..
J'obtiens :
{
"totalcount": 2,
"count": 2,
"sort": "1",
"order": "ASC",
"data": [
{
"1": "l102731",
"80": "Entité racine > Direction Systèmes Information",
"3": "DSC> D4 > DESC_D4_RDC > D4 019"
},
{
"1": "vm-l102731",
"80": "Entité racine > Direction Systèmes Information",
"3": null
}
],
"content-range": "0-1/2"
}
Remarque : avec equals à la place contains j'ai 0 résultat
Last edited by falco2001 (2022-05-25 15:53:24)
Offline
La seule documentation officielle de l'API disponible est la documentation en ligne disponible dans votre instance GLPI à "/apirest.php".
GLPI Collaborator and Plugin Developer.
My non-English comments are automated translations. Sorry for any confusion that causes.
Mes commentaires non anglais sont des traductions automatiques. Désolé pour toute confusion qui cause.
Mis comentarios que no están en inglés son traducciones automáticas. Perdón por cualquier confusión que cause.
Offline
Hello,
Quel est la façon la plus simple d'obtenir la localisation d'un ordinateur ?
Dans mon cas j'ai deux réponses pour le l102731 ! pourquoi avec equals à la place de contains ça ne marche pas il recherche par l'id et non par le nom de l’ordinateur ?
Il faudrait passer par l'ID ?
- récupérer l'id par une recherche sur le nom ? Comment faire ?
- puis lancer aprirest.php/Computer/id ?
Merci à vous
Offline
mettez ^ au début et $ à la fin ça équivaut à "égal" mais pour du texte
/apirest.php/search/Computer/?is_deleted=0&as_map=0&criteria[0][link]=AND&criteria[0][field]=1&criteria[0][searchtype]=contains&criteria[0][value]=^l102731$&forcedisplay[0]=3
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
eh j'avais essayé
/apirest.php/search/Computer/?is_deleted=0&as_map=0&criteria[0][link]=AND&criteria[0][field]=1&criteria[0][searchtype]=contains&criteria[0][value]=^l102731$&forcedisplay[0]=3
mais j'ai ceci :
The content you are trying to view cannot be viewed as JSON
Offline
Hello,
avez-vous une idée sur ma dernière erreur ?
Merci à vous
Offline