@ -35,14 +35,14 @@ disparaitront en juillet 2022.
Certaines ont plusieurs "routes" (URl), car ScoDoc 7 tolérait divers accès.
- `Absences/XMLgetBilletsEtud` (deviendra `api/absences/billets/etud/ etudid>`)
- `Absences/XMLgetBilletsEtud` (deviendra `api/absences/billets/etud/ <int: etudid>`)
- `Absences/AddBilletAbsence` (deviendra `api/absences/billet/add` )
- `Absences/XMLgetAbsEtud` (deviendra `api/absences/ etudid>` , en json)
- `Notes/evaluation_listenotes` (non existante en ScoDoc9, trop complexe)
- `Notes/formsemestre_id` (deviendra `api/formsemestre` )
- `Notes/formsemestre_bulletinetud` (deviendra `api/etud/<etudid>/bul/< formsemestre_id>`)
- `Notes/formsemestre_bulletinetud` (deviendra `api/etud/<etudid>/bul/< int: formsemestre_id>`)
- `Notes/XMLgetFormsemestres` (non existante en ScoDoc9, redondant avec `api/formsemestre` ?)
- `etud_info` ou `XMLgetEtudInfos` ou `Absences/XMLgetEtudInfos` ou `Notes/XMLgetEtudInfos` (deviendra `/api/etud/< etudid>`)
- `etud_info` ou `XMLgetEtudInfos` ou `Absences/XMLgetEtudInfos` ou `Notes/XMLgetEtudInfos` (deviendra `/api/etud/< int: etudid>`)
- `groups_view` (deviendra `groups` )
Les routes ci-dessus s'entendent à partir de l'URL de base de votre ScoDoc, c'est
@ -62,6 +62,8 @@ La documentation ci-dessous concerne la **future** version De ScoDoc.
Elle sera accessible à l'adresse: https://scodoc.monsite.tld/ScoDoc/api/fonction
L'ensemble des routes sont visible via la commande suivante : ``flask routes | grep /ScoDoc/api``
### Authentification
TODO décrire procédure d'authentification et tokens jwt.
@ -88,42 +90,42 @@ Tous les codes >= 400 indiquent que la requête n'a pas été traitée avec succ
* * *`departements`**
* * *Méthode:** GET
* * *Paramètres:** `viewable` (optionnel, si faux liste aussi les départements non accessibles à l'utilisateur courant), `format` (json, xml)
* * *Routes:** `/ api/departements`
* * *Exemple d'utilisation:** `/ api/departements`
* * *Routes:** `/ ScoDoc/ api/departements`
* * *Exemple d'utilisation:** `/ ScoDoc/ api/departements`
* * *Résultat:** Liste des id de départements.
* * *Exemple de résultat:** `[id_1, id_2, id_3, ...]`
* * *`liste_etudiants`**
* * *Méthode:** GET
* * *Paramètres:** `dept` , ` semestre`
* * *Routes:** `/ api/departements/<str:dept>/etudiants/liste/<str:semestre >` (_`semestre` étant un paramètre optionnel_)
* * *Exemple d'utilisation:** `/ api/departements/MMI/etudiants/liste`
* * *Résultat:** l iste des étudiants d'un département - semestre actuel par défaut.
* * *Paramètres:** `dept` , ` form semestre_id `
* * *Routes:** `/ ScoDoc/api/departements/<string:dept>/etudiants/liste/<int:formsemestre_id >` (_`semestre` étant un paramètre optionnel_)
* * *Exemple d'utilisation:** `/ ScoDoc/ api/departements/MMI/etudiants/liste`
* * *Résultat:** L iste des étudiants d'un département - semestre actuel par défaut.
* * *`liste_semestres_actifs`**
* * *Méthode:** GET
* * *Paramètres:** `dept`
* * *Routes:** `/ api/departements/<str:dept>/semestres_actifs`
* * *Exemple d'utilisation:** `/ api/departements/MMI/semestres_actifs`
* * *Routes:** `/ ScoDoc/ api/departements/<string :dept>/semestres_actifs`
* * *Exemple d'utilisation:** `/ ScoDoc/ api/departements/MMI/semestres_actifs`
* * *Résultat:** Liste des semestres actifs d'un département donné. (_réponse sous format json_)
* * *`referenciel_competences`**
* * *Méthode:** GET
* * *Paramètres:** `dept` , `formation` (_`formation` étant un id de formation, un programme pédagogique_)
* * *Routes:** `/ api/departements/<str:dept>/formations/<int:formation>/referentiel_competences`
* * *Exemple d'utilisation:** `/ api/departements/MMI/formations/12/referentiel_competences`
* * *Résultat:** Le référentiel de compétences d'une formation donnée. (_pas toujours présent_)
* * *Routes:** `/ ScoDoc/ api/departements/<string :dept>/formations/<int:formation>/referentiel_competences`
* * *Exemple d'utilisation:** `/ ScoDoc/ api/departements/MMI/formations/12/referentiel_competences`
* * *Résultat:** Le référentiel de compétences d'une formation donnée au format json . (_pas toujours présent_)
## Etudiants
* * *`etud_dept`**
* * *Méthode:** GET
* * *Paramètres:** `code_nip`
* * *Routes:** `/ api/etud_dept/<int:code_nip>`
* * *Exemple d'utilisation:** `/ api/etud_dept/123`
* * *Routes:** `/ ScoDoc/ api/etud_dept/<int:code_nip>`
* * *Exemple d'utilisation:** `/ ScoDoc/ api/etud_dept/123`
* * *Résultat:** Liste des étudiants avec le code NIP donné tirée par ordre d'inscription décroissant.
* * *Exemple de résultat:**
```
@ -141,8 +143,8 @@ Tous les codes >= 400 indiquent que la requête n'a pas été traitée avec succ
* * *`etudiant`**
* * *Méthode:** GET
* * *Paramètres:** `etudid`
* * *Routes:** `/ api/etudiant/<int:etudid>`
* * *Exemple d'utilisation:** `/ api/etudiant/987`
* * *Routes:** `/ ScoDoc/ api/etudiant/<int:etudid>`
* * *Exemple d'utilisation:** `/ ScoDoc/ api/etudiant/987`
* * *Résultat:** Un dictionnaire avec les informations de l'étudiant correspondant à l'id passé en paramètres.
* * *Exemple de résultat:**
```
@ -178,8 +180,8 @@ Tous les codes >= 400 indiquent que la requête n'a pas été traitée avec succ
* * *`etudiant_bulletin_semestre`**
* * *Méthode:** GET
* * *Paramètres:** `etudid` , `sem_id`
* * *Routes:** `/ api/etudiant/<int:etudid>/semestre/<int:sem_id>/bulletin`
* * *Exemple d'utilisation:** `/ api/etudiant/987/semestre/12/bulletin`
* * *Routes:** `/ ScoDoc/ api/etudiant/<int:etudid>/semestre/<int:sem_id>/bulletin`
* * *Exemple d'utilisation:** `/ ScoDoc/ api/etudiant/987/semestre/12/bulletin`
* * *Résultat:** Le bulletin d'un étudiant en fonction de son id et d'un semestre donné.
* * *Exemple de résultat:** voir plus bas sur cette page.
@ -189,8 +191,8 @@ Tous les codes >= 400 indiquent que la requête n'a pas été traitée avec succ
* * *`etudiant_bulletin`**
* * *Méthode:** GET
* * *Paramètres:** `formsemestre_id` , `dept` , `etudid` , `format` (`pdf` ou `json` _par défaut json_ ), `version` (`short`, `selectedevals` ou `long` )
* * *Routes:** : `/ api/formsemestre/<int:formsemestre_id>/departements/<str:dept>/etudiant/nip|id|ine/{NIP}|{etudid}|numScodoc}/releve `
* * *Exemple d'utilisation:** `/ api/formsemestre/123/departements/MMI/etudiant/id/456/releve ?format=pdf&version=short`
* * *Routes:** : `/ ScoDoc/ api/formsemestre/<int:formsemestre_id>/departements/<string :dept>/etudiant/nip|id|ine/{NIP}|{etudid}|numScodoc}/bulletin?format=<string:format>&version=<string:version> `
* * *Exemple d'utilisation:** `/ ScoDoc/ api/formsemestre/123/departements/MMI/etudiant/id/456/bulletin ?format=pdf&version=short`
* * *Résultat:** Un bulletin de notes.
* * *Exemple de résultat:** ici au format JSON, pour une version courte (`version=short`)
```
@ -360,16 +362,16 @@ formsemestre_id": "SEM12345",
* * *`etudiant_photo`**
* * *Méthode:** GET
* * *Paramètres:** `etudid` , `small`
* * *Routes:** `/ api/etudiant/<int:etudid>/photo` **OU** ` /api/etudiant/<int:etudid>/photo/small` (_ajout du paramètre **small** pour la version small_)
* * *Exemple d'utilisation:** `/ api/etudiant/123/photo` **OU** ` /api/etudiant/123/photo/small` (_pour la version small_)
* * *Routes:** `/ ScoDoc/ api/etudiant/<int:etudid>/photo` **OU** ` /ScoDoc /api/etudiant/<int:etudid>/photo/small` (_ajout du paramètre **small** pour la version small_)
* * *Exemple d'utilisation:** `/ ScoDoc/ api/etudiant/123/photo` **OU** ` /ScoDoc /api/etudiant/123/photo/small` (_pour la version small_)
* * *Résultat:** Image en JPEG ou PNG.
* * *`etudiant_groups`**
* * *Méthode:** GET
* * *Paramètres:** `etudid` , `formsemestre_id`
* * *Routes:** `/ api/etudiant/<int:etudid>/semestre/<int:formsemestre_id>/groups`
* * *Exemple d'utilisation:** `/ api/etudiants/123/semestre/INFO-DUT-FI-S1-2014/groups`
* * *Routes:** `/ ScoDoc/ api/etudiant/<int:etudid>/semestre/<int:formsemestre_id>/groups`
* * *Exemple d'utilisation:** `/ ScoDoc/ api/etudiants/123/semestre/INFO-DUT-FI-S1-2014/groups`
* * *Résultat:** Liste des groupes auxquels appartient l'étudiant dans le semestre indiqué.
```
@ -400,8 +402,8 @@ formsemestre_id": "SEM12345",
* * *`formations`**
* * *Méthode:** GET
* * *Paramètres:** `formation_id` (_optionnel, si absent, liste toutes les formations_)
* * *Routes:** `/ api/formations` **ou** ` /api/formations/<int:formation_id>`
* * *Exemple d'utilisation:** `/ api/formations` **ou** ` /api/formations/1`
* * *Routes:** `/ ScoDoc/ api/formations` **ou** ` /ScoDoc /api/formations/<int:formation_id>`
* * *Exemple d'utilisation:** `/ ScoDoc/ api/formations` **ou** ` /ScoDoc /api/formations/1`
* * *Résultat:** Liste des formations.
* * *Exemple de résultat:** `[formation_1, formation_2, formation_3, ...]`
* TODO: détailler le contenu publié
@ -411,8 +413,8 @@ formsemestre_id": "SEM12345",
* * *`formation_export`**
* * *Méthode:** GET
* * *Paramètres:** `formation_id` , `export_ids` (_par défaut "faux"_)
* * *Routes:** `/ api/formations/formation_export/<int:formation_id>`
* * *Exemple d'utilisation:** `/ api/formations/formation_export/596` **ou** ` /api/formations/formation_export/596?format=xml&export_ids=1`
* * *Routes:** `/ ScoDoc/ api/formations/formation_export/<int:formation_id>?format=<string:format>&export_ids=<int:export_ids >`
* * *Exemple d'utilisation:** `/ ScoDoc/ api/formations/formation_export/596` **ou** ` /ScoDoc /api/formations/formation_export/596?format=xml&export_ids=1`
* * *Résultat:** La formation, avec UE, matières, modules (_un arbre_).
* * *Exemple de résultat:**
```
@ -432,8 +434,8 @@ formsemestre_id": "SEM12345",
* * *`UEs`**
* * *Méthode:** GET
* * *Paramètres:** `dept` , `̀semestre`
* * *Routes:** `/ api/departements/<str:dept>/formations/programme/<str:semestre>`
* * *Exemple d'utilisation:** `̀/ api/departements/MMI/formations/programme/INFO-DUT-FI-S1-2014`
* * *Routes:** `/ ScoDoc/ api/departements/<string :dept>/formations/programme/<string :semestre>`
* * *Exemple d'utilisation:** `̀/ ScoDoc/ api/departements/MMI/formations/programme/INFO-DUT-FI-S1-2014`
* * *Résultat:** Liste des UEs, ressources et SAE d'un semestre
@ -445,8 +447,8 @@ Les sessions de formation (dénommées "semestres" même si elles durent une ann
* * *`formsemestre`**
* * *Méthode:** GET
* * *Paramètres:** `formsemestre_id` ou `etape_apo` , `format` (json ou xml)
* * *Routes:** `/ api/formations/formsemestre/<int:formsemestre_id>`, ` /api/formsemestre/apo/<etape_apo>`
* * *Exemple d'utilisation:** `/ api/formations/formsemestre/12`
* * *Routes:** `/ ScoDoc/ api/formations/formsemestre/<int:formsemestre_id>`, ` /ScoDoc /api/formsemestre/apo/<etape_apo>`
* * *Exemple d'utilisation:** `/ ScoDoc/ api/formations/formsemestre/12`
* * *Résultat:** Informations sur le(s) formsemestre(s).
* * *Exemple de résultat:**
```
@ -497,7 +499,7 @@ On peut récupérer soit un module par son id, soit la listes des modules d'un s
* * *`moduleimpl`**
* * *Méthode:** GET
* * *Paramètres**: `formsemestre_id` ou `moduleimpl_id`
* * *Routes:** `/ api/formations/moduleimpl/<int:moduleimpl_id>` **ou** ` /api/formations/moduleimpl/<int:moduleimpl_id>/formsemestre/<int:formsemestre_id>`
* * *Routes:** `/ ScoDoc/ api/formations/moduleimpl/<int:moduleimpl_id>` **ou** ` /ScoDoc /api/formations/moduleimpl/<int:moduleimpl_id>/formsemestre/<int:formsemestre_id>`
* * *Résultat:** liste de moduleimpl
* * *Exemple de résultat:**
TODO
@ -515,8 +517,8 @@ d'un nombre quelconque de groupes d'étudiants.
* * *`partition`**
* * *Méthode: GET**
* * *Paramètres:** `formsemestre_id`
* * *Routes:** `/ api/partitions/<int:formsemestre_id>`
* * *Exemple d'utilisation:** `/ api/partition/48`
* * *Routes:** `/ ScoDoc/ api/partitions/<int:formsemestre_id>`
* * *Exemple d'utilisation:** `/ ScoDoc/ api/partition/48`
* * *Résultat:** La liste de toutes les partitions d'un formsemestre.
* * *Exemple de résultat:**
```
@ -571,10 +573,10 @@ d'un nombre quelconque de groupes d'étudiants.
* * *`groups`**
* * *Méthode:** GET
* * *Paramètres:** `formsemestre_id` ou `group_ids` (_peut être répété_), `with_codes=0|1` , `all_groups=0|1` , `etat=None|I`
* * *Routes:** ` api/partitions/formsemestre/<int:formsemestre_id>/groups/group_ids?with_codes=0|1&all_groups=0|1 &etat=None|I`
* * *Exemple d'utilisation:** ` api/partitions/formsemestre/213/groups/123?with_codes=1 `
* * *Routes:** ` /ScoDoc/ api/partitions/formsemestre/<int:formsemestre_id>/groups/group_ids?with_codes=<bool:with_codes>&all_groups=<bool:all_groups> &etat=None|I`
* * *Exemple d'utilisation:** ` /ScoDoc/ api/partitions/formsemestre/213/groups/123?with_codes=True `
* * *Résultat:** Liste des étudiants dans un groupe.
* * *Exemple de résultat au format XML:** (_avec `with_codes= 1 `_)
* * *Exemple de résultat au format XML:** (_avec `with_codes= True `_)
```
< group_list origin = "" caption = "soit 21 étudiants inscrits et 2 démissionaires." id = "gt_711068" >
@ -607,7 +609,7 @@ d'un nombre quelconque de groupes d'étudiants.
"etat":"I",
"emailperso":null,
"prenom":"Dalil",
"nom_disp":"CLINTO",
"nom_disp":"CLINTO",?
"email":"xxx@example.com",
"62029":"A",
"62032":null,
@ -633,8 +635,8 @@ d'un nombre quelconque de groupes d'étudiants.
* * *`set_groups`**
* * *Méthode:** POST
* * *Paramètres:** `partition_id` , `groups` , `groups_to_delete` , `groups_to_create`
* * *Routes:** `/ api/partitions/set_groups?partition_id=<int:partition_id>&groups=<int:groups>&groups_to_delete=<int:groups_to_delete>&groups_to_create=<int:groups_to_create>`
* * *Exemple d'utilisation:** `/ api/partitions/set_groups?partition_id=65&groups=77&groups_to_delete=8&groups_to_create=4`
* * *Routes:** `/ ScoDoc/ api/partitions/set_groups?partition_id=<int:partition_id>&groups=<int:groups>&groups_to_delete=<int:groups_to_delete>&groups_to_create=<int:groups_to_create>`
* * *Exemple d'utilisation:** `/ ScoDoc/ api/partitions/set_groups?partition_id=65&groups=77&groups_to_delete=8&groups_to_create=4`
* * *Résultat:** Set les groups.
TODO: à changer, passer les paramètres dans le corps de la requête
@ -644,8 +646,8 @@ d'un nombre quelconque de groupes d'étudiants.
* * *`evaluations`**
* * *Méthode:** GET
* * *Paramètres:** `moduleimpl_id`
* * *Routes:** `/ api/evaluations/<int:moduleimpl_id>`
* * *Exemple d'utilisation:** `/ api/evaluations/54`
* * *Routes:** `/ ScoDoc/ api/evaluations/<int:moduleimpl_id>`
* * *Exemple d'utilisation:** `/ ScoDoc/ api/evaluations/54`
* * *Résultat:** Liste des évaluations à partir de l'id d'un moduleimpl.
* * *Exemple de résultat:** `[eval_1, eval_2, eval_3, ...]`
@ -653,8 +655,8 @@ d'un nombre quelconque de groupes d'étudiants.
* * *`evaluation_notes`**
* * *Méthode**: GET
* * *Paramètres**: `evaluation_id`
* * *Routes:** `/ api/evaluations/eval_notes/<int:evaluation_id>`
* * *Exemple d'utilisation:** `/ api/evaluations/eval_notes/24`
* * *Routes:** `/ ScoDoc/ api/evaluations/eval_notes/<int:evaluation_id>`
* * *Exemple d'utilisation:** `/ ScoDoc/ api/evaluations/eval_notes/24`
* * *Résultat:** Liste des notes à partir de l'id d'une évaluation donnée.
* * *Exemple de résultat:**
```
@ -672,8 +674,8 @@ d'un nombre quelconque de groupes d'étudiants.
* * *`evaluation_set_notes`**
* * *Méthode:** POST
* * *Paramètres:** `eval_id` , `etudid` , `note`
* * *Routes:** `/ api/evaluations/eval_set_notes?eval_id=<int:eval_id> etudid=<int etudid>¬e=<int:note>`
* * *Exemple d'utilisation:** `/ api/evaluations/eval_set_notes?eval_id=6 etudid=456¬e=15`
* * *Routes:** `/ ScoDoc/ api/evaluations/eval_set_notes?eval_id=<int:eval_id>&etudid=<int: etudid>¬e=<int:note>`
* * *Exemple d'utilisation:** `/ ScoDoc/api/evaluations/eval_set_notes?eval_id=6& etudid=456¬e=15`
* * *Résultat:** Set les notes d'une évaluation pour un étudiant donné.
TODO vérifier et passer les valeurs dans le corps.
@ -685,8 +687,8 @@ d'un nombre quelconque de groupes d'étudiants.
* * *`absences`**
* * *Méthode:** GET
* * *Paramètres:** `etudid` , `abs_just_only, format` , `abs_just_only` (_spécifie si on veut les absences justifiées ou non_).
* * *Routes:** `/ api/absences/<int:etudid>`
* * *Exemple d'utilisation:** `/ api/absences/54`
* * *Routes:** `/ ScoDoc/ api/absences/<int:etudid>`
* * *Exemple d'utilisation:** `/ ScoDoc/ api/absences/54`
* * *Résultat:** Liste des absences d'un étudiant donné.
* * *Exemple de résultat:**
```{jour: "2021-02-10", ampm: "0", description: "M2202", }``` (_**ampm** vaut 1 le matin et 0 l'après-midi_).
@ -719,8 +721,8 @@ d'un nombre quelconque de groupes d'étudiants.
* * *`abs_groupe_etat`**
* * *Méthode:** GET
* * *Paramètres:** `group_ids` , `date_debut` , `date_fin` , `with_boursier=True` , `format=html`
* * *Routes:** `/ api/absences/abs_group_etat/?group_ids=group_ids&date_debut=date_debut&date_fin=date_fin`
* * *Exemple d'utilisation:** `/ api/absences/abs_group_etat/?group_ids=45&date_debut=2019-01-30&date_fin=2019-02-30`
* * *Routes:** `/ ScoDoc/ api/absences/abs_group_etat/?group_ids=group_ids&date_debut=date_debut&date_fin=date_fin`
* * *Exemple d'utilisation:** `/ ScoDoc/ api/absences/abs_group_etat/?group_ids=45&date_debut=2019-01-30&date_fin=2019-02-30`
* * *Résultat:** Liste des absences d'un ou plusieurs groupes entre deux dates.
* * *Exemple de résultat:** si `format="json"` cela donne:
```
@ -743,8 +745,8 @@ d'un nombre quelconque de groupes d'étudiants.
* * *`liste des logos globaux`**
* * *Méthode:** GET
* * *Paramètres:** `format` (json, xml), json par défaut
* * *Route :** `/ api/logos`
* * *Exemple d'utilisation :** `/ api/logos?format=xml`
* * *Route :** `/ ScoDoc/ api/logos`
* * *Exemple d'utilisation :** `/ ScoDoc/ api/logos?format=xml`
* * *Résultat :** Liste des logos définis pour le site scodoc.
* * *Exemple de résultat:** `['header', 'footer', 'custom']`
@ -752,16 +754,16 @@ d'un nombre quelconque de groupes d'étudiants.
* * *`récupération d'un logo global`**
* * *Méthode:** GET
* * *Paramètres :** Aucun
* * *Route:** `/ api/logos/<str:nom>`
* * *Exemple d'utilisation :** `/ api/logos/header`
* * *Route:** `/ ScoDoc/ api/logos/<string :nom>`
* * *Exemple d'utilisation :** `/ ScoDoc/ api/logos/header`
* * *Résultat :** l'image (format png ou jpg)
* * *`logo d'un département`**
* * *Méthode:** GET
* * *Paramètres:** `format` (json, xml)
* * *Route :** `/ api/departements/<str:dept>/logos`
* * *Exemple d'utilisation :** `/ api/MMI/logos`
* * *Route :** `/ ScoDoc/ api/departements/<string :dept>/logos`
* * *Exemple d'utilisation :** `/ ScoDoc/ api/MMI/logos`
* * *Résultat :** Liste des logos définis pour le département visé.
* * *Exemple de résultat:** `['footer', 'signature', 'universite']`
@ -769,8 +771,8 @@ d'un nombre quelconque de groupes d'étudiants.
* * *`récupération d'un logo global`**
* * *Méthode:** GET
* * *Paramètres :** Aucun
* * *Route:** `/ api/departements/<str:dept>/logos/<str:nom>`
* * *Exemple d'utilisation:** `/ api/departements/MMI/logos/header`
* * *Route:** `/ ScoDoc/ api/departements/<string :dept>/logos/<string :nom>`
* * *Exemple d'utilisation:** `/ ScoDoc/ api/departements/MMI/logos/header`
* * *Résultat :** l'image (format png ou jpg)