EduWireApps/ecoledirecte-api-docs

Missing Parameters

Closed this issue · 13 comments

Hello, je sais pas si c'est un bug ou une évolution de comment appeler l'API ... mais j'arrive pas à appeler le cahier de texte

POST > https://api.ecoledirecte.com/v3/E/{{eleve_id}}/cahierdetexte.awp?verbe=get
POST > https://api.ecoledirecte.com/v3/eleves/{{eleve_id}}/cahierdetexte.awp?verbe=get
GET > https://api.ecoledirecte.com/v3/E/{{eleve_id}}/cahierdetexte.awp
GET > https://api.ecoledirecte.com/v3/eleves/{{eleve_id}}/cahierdetexte.awp

J'ai testé de rajouter au cas ou dans body
{ "date" : "2023-10-03" }

Tout est ok mais j'ai sans arrêt le meme résultat :

{"code":225, "token":"", "host":"HTTPxxx", "message":"Paramètres spécifiés incorrects !"}

Si vous avez une idée d'ou vient le problème ? J'arrive à bien récupérer l'emploi du temps (POST + verbe=get) mais le cahier de texte ca veut pas :(

image
La requête selon la date est disponible ici

Une update @Odissine ?

Idem chez moi, je n'arrive pas à utiliser le cahier de texte (même retour en erreur)

Une update @Odissine ?

Pas pour l'instant jai pas eu le temps de m'y repencher et je vois que je suis pas le seul, je creuse ça rapidement dès que jai le temps :)

Cette issue n'a plus d'activité depuis un petit moment, on la considère donc comme résolue !

Hum ... il n'y a pas eu de solution apportée, il me semble ? Je viens de refaire le test, et c'est toujours KO :-(

Merci @MaitreRouge pour la réouverture ! Comment est-ce que je peux aider à la résolution de ce bug ?

Bonjour à tous,
Personnellement le cahier de texte marche pour moi.
J'ai remarqué qu'EcoleDirecte renvoie une erreur 225 également lorsqu'il n'y a simplement pas le token ou pas de User-Agent.
Avez-vous pensé à mettre les deux dans les headers de la requête ?
image

Hello @amolinarius !
Merci pour message, j'ai bien vérifié de mon côté et j'ai bien le token et le user agent. J'ai repris la même config que d'autres appels API d'école directe (comme l'emploi du temps), ça me permet de dire que le problème ne vient pas de là. Mais le fait que cela marche chez toi est encourageant !

Est-ce que tu pourrais partager la config de ton appel API ? Si tu es sur Node Red, c'est un json il me semble, ça nous permettrait d'y voir plus clair ;-)

Merci !

Bonsoir @silversmarty !
Mon appel est fait avec une fonction JavaScript, la voici :

function sendXHR(url, queryString, body, callback) {
    var xhr = new XMLHttpRequest();
    xhr.onloadend = r=>callback(r.target);
    xhr.open('POST', `https://api.ecoledirecte.com/v3/${url}.awp${queryString.length>0?'?':''}${queryString.join('&')}`);
    xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
    if (token) {xhr.setRequestHeader('X-Token', token)}
    xhr.send(encodeURIComponent('data='+body));
}

et je l'appelle avec :

sendXHR(
    `/Eleves/${id}/cahierdetexte`, // url
    ['verbe=get'],  // paramètres dans l'url
    '{}', // body
    callback // une fonction prenant la réponse à la requête comme paramètre 
);

Note : Comme j'ai utilisé cette fonction dans un script de navigateur, je n'ai pas mis de User-Agent, pour ceux qui testeraient avec NodeJS

D'ailleurs on peut aussi le faire en asynchrone avec une Promise, toujours en javascript :

function sendXHR(url, queryString, body, callback) {
    var xhr = new XMLHttpRequest();
    var response;
    xhr.onloadend = r=>{response = r.target};
    xhr.open('POST', `https://api.ecoledirecte.com/v3/${url}.awp${queryString.length>0?'?':''}${queryString.join('&')}`);
    xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
    if (token) {xhr.setRequestHeader('X-Token', token)}
    xhr.send(encodeURIComponent('data='+body));
    var promise = resolve=>{
        if (response == null) {setTimeout(()=>promise(resolve), 100)}
        else {resolve(response)}
    }
    return new Promise(promise);
}

Puis simplement var response = await sendXHR(...)

Merci @amolinarius , j'ai trouvé le problème !
J'ai rajouté le "data={}" dans le body, que j'avais oublié ! J'ai aussi enlevé le paramètre v=4.40.0, et rajouté le header Content-Type !

Thanks again !

De rien !
Je voulais juste préciser que le paramètre v=4.40.0 n'est pas obligatoire mais on peut quand même le mettre.
J'imagine qu'il sert à utiliser une version précise de l'API ou dans l'autre cas simplement la dernière version.