You are not logged in.
Bonjour,
Je cherche à créer de nouveaux tickets via les API mais chaque tentative retourne une erreur 400 avec le message suivant :
["ERROR_UPLOAD_FILE_TOO_BIG_POST_MAX_SIZE","The file seems too big"]
Sur d’autres besoins, j’arrive très bien à consulter les données GLPI via les API, seules les écritures ne semblent pas fonctionner.
Voici le résumé de l’appel (généré par Postman) :
<?php
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => '[•••]/glpi/apirest.php/Ticket/',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => '',
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 0,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => 'POST',
CURLOPT_POSTFIELDS => array('name' => 'Test','content' => 'Corps de texte','type' => '2','status' => '1'),
CURLOPT_HTTPHEADER => array(
'Session-Token: [•••]',
'App-Token: [•••]',
'Authorization: [•••]'
),
));
$response = curl_exec($curl);
curl_close($curl);
echo $response;
Par ailleurs, je manque de documentation quant aux options de création d’un nouveau ticket ; tout du moins, j’ignore s’il y a des champs obligatoires mais je me dis que le retour API me donnerait les informations à intégrer (comme c’est souvent le cas) mais lorsque je n’envoie aucun paramètre, l’API me retourne le message habituel :
["ERROR_BAD_ARRAY","Le paramètre input doit être un tableau d'objets; Afficher la documentation dans votre navigateur à [•••]/apirest.php/#ERROR_BAD_ARRAY"]
J’ai naturellement essayé plusieurs jeux de paramètres mais toujours la même erreur… avez-vous déjà rencontré ce problème, vous avez une idée de comment le résoudre ?
L’erreur ERROR_UPLOAD_FILE_TOO_BIG_POST_MAX_SIZE semble généralement associée à l’envoi d’un fichier mais dans mon cas, ce n’est pas ce que je cherche à faire et je reste surpris de ce retour pour la simple création d’un ticket
Merci par avance pour toute aide
--
RÉSOLU
Il manquait simplement le type de contenu dans le header
CURLOPT_HTTPHEADER => array(
'Session-Token: [•••]',
'App-Token: [•••]',
'Authorization: [•••]',
'Content-Type: application/json'
),
Par contre, me concernant, étant en télétravail et utilisant un VPN couplé à un proxy différent de celui au bureau, il semble bien que j’étais limité sur certains droits sous cette configuration.
Encore merci à keepcool5283 pour son implication
Last edited by gribhand (2021-08-07 03:24:56)
Offline
Salut,
De mon coté ça fonctionne via POSTMAN en mettant cette URL :
https://server/apirest.php/ticket?Content-Type=application/json&range=0-1000&expand_drodpowns=true&session_token=3p3va35ivmei1xxxxx
Et en Input : {"input": {"name":"test","content": "aaa a a a a a","type":2, "status":1}}
Du coup je ne pense pas que se soit un problème de champs obligatoire.
Est ce que tu as essayé via POSTMAN ?
PS : Tu es sur Windows ou Linux ?
Last edited by keepcool5283 (2021-08-06 11:09:44)
Apps Android GLPI Management : https://play.google.com/store/apps/deta … fr.dmn.app
Site Web : http://mdu-tech.fr/
GLPI 9.5.5 sur IIS 10 / PHP 8 / MySQL
Offline
Salut keepcool5283, merci pour ton retour !
Je suis bien avec Postman (sous Windows) et j’ai le sentiment, en effet, de ne pas réussir à faire passer mes paramètres… en POST en tout cas.
Côté GET, pour d’autres besoins, j’arrive très bien à consulter les tickets en cours (etc.) mais le POST, ça me retourne toujours ce message d’erreur :
["ERROR_BAD_ARRAY","Le paramètre input doit être un tableau d'objets; Afficher la documentation dans votre navigateur à http://vglpi/apirest.php/#ERROR_BAD_ARRAY"]
J’ai bien tenté plusieurs approches pour intégrer mes paramètres dans le body (form-data, raw, etc.) mais sans succès jusqu’à présent
Last edited by gribhand (2021-08-06 12:47:10)
Offline
Dans POSTMAN c'est raw et JSON qu'il faut sélectionner.
Et ensuite mettre cette ligne : {"input": {"name":"test","content": "aaa a a a a a","type":2, "status":1}}
Apps Android GLPI Management : https://play.google.com/store/apps/deta … fr.dmn.app
Site Web : http://mdu-tech.fr/
GLPI 9.5.5 sur IIS 10 / PHP 8 / MySQL
Offline
Merci keepcool5283 pour ton aide !
Il est possible que mon problème d’envoi soit davantage lié à mon situation de télétravail… l’accès à distance à mon réseau d’entreprise via le VPN ne semble pas exactement indentique qu’au bureau
Mais en faisant le test directement depuis le serveur de prod (hors prod bien sûr), ça fonctionne parfaitement
Encore merci pour ton aide
Offline