evo2ED est le moteur (bridge) qui permet à evoMoyenne de communiquer avec EcoleDirecte. Il est totalement libre d'utilisation si vous l'hébergez vous-même, n'hésitez pas à l'utiliser !
Pour l'instant il ne récupère que les infos suivantes :
- Prénom, nom de l'élève
- Photo de profil (convertie en Base64 Data URI)
- Notes de l'élève
Nous en ajouterons plus en fonction de nos besoins/temps. N'hésitez pas à faire des pull requests pour nous aider à avancer !
Important
L'instance officielle tournant sur ed.api.evosuite.qzz.io est principalement destinée aux services evoSuite. Il est libre d'utilisation, mais nous pouvons vous demander d'arrêter de l'utiliser si vous envoyez trop de requêtes. Si vous souhaitez utiliser ce bridge pour votre propre projet, nous vous recommandons plutôt d'héberger votre propre instance (voir ci-dessous).
Ce projet utilise une version modifiée et adaptée de la bibliothèque api-ecoledirecte (sous licence ISC) créée par Louis Legrain. Un immense merci à lui pour son travail.
Modifications apportées pour ce projet :
- Conversion en ES Modules pour compatibilité Cloudflare.
L'authentification s'effectue en deux étapes pour contourner la double authentification (2FA) obligatoire d'EcoleDirecte.
Envoyez les identifiants au bridge pour déclencher la question de sécurité.
Requête : POST /
{
"identifiant": "votre_login",
"motdepasse": "votre_mdp"
}Réponse (Si 2FA requise) : Le bridge renvoie la question et deux listes de propositions.
Caution
Pour répondre à l'étape suivante, vous devez utiliser l'élément correspondant dans rawPropositions (la valeur encodée en Base64) et non le texte en clair de propositions. L'envoi d'une valeur non encodée peut entraîner un blocage du compte (qui peut être débloqué dans votre boîte mail).
{
"status": "2FA_REQUIRED",
"qcm": {
"question": "Quel est votre mois de naissance ?",
"propositions": ["août", "janvier", "novembre"],
"rawPropositions": ["YW/Du3Q=", "amFudmllcg==", "bm92ZW1icmU="]
},
"token": "...",
"2faToken": "...",
"deviceUUID": "..."
}Renvoyez les identifiants, les tokens de session récupérés à l'étape 1, et le code Base64 de la réponse choisie dans le champ qcmResponse.
Requête : POST /
{
"identifiant": "votre_login",
"motdepasse": "votre_mdp",
"qcmResponse": "YW/Du3Q=",
"tokens": {
"token": "...",
"2faToken": "...",
"deviceUUID": "..."
}
}Réponse (Success) : Si la réponse est correcte, le bridge renvoie les données complètes.
{
"status": "SUCCESS",
"identity": {
"nom": "NOM",
"prenom": "Prenom",
"photo": "data:image/jpeg;base64,...",
"classe": { "nom": "...", "id": "..." },
"etablissement": "..."
},
"notes": {
0: Object
codeMatiere: "0"
codePeriode: "0"
codeSousMatiere: ""
coef: 0
commentaire: ""
date: ""
dateSaisie: ""
devoir: ""
elementsProgramme: Array(1)
0: Object
afc: 0
cdt: false
descriptif: ""
idCompetence: 1
idConnaissance: 0
idElemProg: 1
libelleCompetence: ""
valeur: ""
length: 1
enLettre: false
id: 1
libelleMatiere: ""
nonSignificatif: false
noteSur: ""
typeDevoir: ""
uncCorrige: ""
uncSujet: ""
valeur: ""
valeurisee: false,
"token": "...",
"2faToken": "...",
"deviceUUID": "...",
"accountId": "..."
}
}Pour maintenir une session active sans redemander la 2FA à chaque fois, vous pouvez utiliser le flux de rafraîchissement silencieux. Le bridge tentera d'abord de récupérer les données avec les tokens existants avant de fallback sur un login complet.
Requête : POST /
{
"tokens": {
"token": "...",
"2faToken": "...",
"deviceUUID": "...",
"accountId": "...",
"identity": { "nom": "NOM", "prenom": "Prenom" }
},
"identifiant": "votre_login",
"motdepasse": "votre_mdp"
}Tip
Le deviceUUID est crucial : il doit être généré une seule fois par le bridge (reçu lors du premier login) et stocké par le client. Le renvoyer systématiquement permet à EcoleDirecte de reconnaître l'appareil et d'éviter de déclencher la 2FA à chaque session.
Vous voulez utiliser ce bridge pour votre propre projet ?
- Cliquez sur le bouton Fork en haut à droite de ce repo pour en avoir une copie sur votre compte GitHub.
- Créez un compte gratuit sur Cloudflare.
- Allez dans Workers & Pages > Créer une application.
- Cliquez sur Continue with GitHub.
- Sélectionnez votre fork d'
evo2ed. - Laissez la commande de build vide.
- Cliquez sur Déployer.
L'avantage d'un fork est qu'il ne se met pas à jour silencieusement. Vous pouvez donc préparer votre projet à la mise à jour avant de synchroniser votre fork (Sync fork > Update branch apparaîtra automatiquement dans votre fork).
Ce projet est la propriété de evoSoftware et est distribué sous licence AGPLv3. Voir le fichier LICENSE pour plus de détails.