diff --git a/docs/ScoDoc9API.md b/docs/ScoDoc9API.md index e34e8a5f..9164d50a 100644 --- a/docs/ScoDoc9API.md +++ b/docs/ScoDoc9API.md @@ -82,7 +82,7 @@ Tous les codes >= 400 indiquent que la requête n'a pas été traitée avec succ * **`departement`** * **Méthode:** GET * **Paramètres:** `viewable` (optionnel, si faux liste aussi les départements non accessible à l'utilisateur courant), `format` (json, xml) - * **Format URL:** `/api/departement` + * **Routes:** `/api/departement` * **Exemple d'utilisation:** `/api/departement` * **Résultat:** Liste des id de départements. * **Exemple de résultat:** `[id_1, id_2, id_3, ...]` @@ -92,7 +92,7 @@ Tous les codes >= 400 indiquent que la requête n'a pas été traitée avec succ * **`etud_dept`** * **Méthode:** GET * **Paramètres:** `code_nip` - * **Format URL:** `/api/etud_dept/` + * **Routes:** `/api/etud_dept/` * **Exemple d'utilisation:** `/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:** @@ -111,7 +111,7 @@ Tous les codes >= 400 indiquent que la requête n'a pas été traitée avec succ * **`etud`** * **Méthode:** GET * **Paramètres:** etudid - * **Format URL:** `/api/etud/` + * **Routes:** `/api/etud/` * **Exemple d'utilisation:** `/api/etud/987` * **Résultat:** Un dictionnaire avec les informations de l'étudiant correspondant à l'id passé en paramètres. * **Exemple de résultat:** @@ -148,7 +148,7 @@ Tous les codes >= 400 indiquent que la requête n'a pas été traitée avec succ * **`etud//bul`** * **Méthode:** GET * **Paramètres:** `etudid`, `sem_id` - * **Format URL:** `/api/etud//bul/` + * **Routes:** `/api/etud//bul/` * **Exemple d'utilisation:** `/api/etud/987/bul/12` * **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. @@ -157,19 +157,48 @@ Tous les codes >= 400 indiquent que la requête n'a pas été traitée avec succ - * **`etud//photo`** + * **`etud//photo`** * **Méthode:** GET * **Paramètres:** `etudid`, `small` - * **Format URL:** `/api/etud//photo` **OU** `/api/etud//photo/small` (_ajout du paramètre **small** pour la version small_) + * **Routes:** `/api/etud//photo` **OU** `/api/etud//photo/small` (_ajout du paramètre **small** pour la version small_) * **Exemple d'utilisation:** `/api/etud/123/photo` **OU** `/api/etud/123/photo/small` (_pour la version small_) * **Résultat:** Image en JPEG ou PNG. + * **`etud//sem//groups`** + * **Méthode:** GET + * **Paramètres:** `etudid`, `formsemestre_id` + * **Routes:** `/api/etud//sem//groups` + * **Exemple d'utilisation:** `/api/etud/123/groups` + * **Résultat:** liste des groupes auxquels appartient l'étudiant dans le semestre indiqué. + + Note: basé sur proposition de Seb., voir si on fusionne avec `/etud` pour tout fournir d'un coup ? +``` +{ + "etudid" : 1234, + "formsemestre_id" : 5678, + "groupes" : [ + { + "numero": 1, // Ordre d'affichage dans Scodoc + "partition_id": 62028, + "partition_name": "TD", + "group_id" : 1899, + "group_name": "TD 1" + },{ + "numero": 2, + "partition_id": 62029, + "partition_name": "TP", + "group_id" : 1905, + "group_name": "TP 2" + } + ] +} +``` ## Programmes de formations * **`formation`** * **Méthode:** GET * **Paramètres:** `formation_id` (_optionnel, si absent liste toutes les formations_) - * **Format URL:** `/api/formation` **ou** `/api/formation/` + * **Routes:** `/api/formation` **ou** `/api/formation/` * **Exemple d'utilisation:** `/api/formation` **ou** `/api/formation/1` * **Résultat:** Liste des formations. * **Exemple de résultat:** `[formation_1, formation_2, formation_3, ...]` @@ -180,22 +209,22 @@ Tous les codes >= 400 indiquent que la requête n'a pas été traitée avec succ * **`formation_export`** * **Méthode:** GET * **Paramètres:** `formation_id`, `export_ids` (_par défaut "faux"_) - * **Format URL:** `/api/formation_export/` + * **Routes:** `/api/formation_export/` * **Exemple d'utilisation:** `/api/formation_export/596` **ou** `/api/formation_export/596?format=xml&export_ids=1` * **Résultat:** La formation, avec UE, matières, modules (_un arbre_). * **Exemple de résultat:** - ``` - { - "nom": "formation", - "UE": "ue", - "matieres": [ - "matiere_1": "maths", - "matiere_2": "anglais", - ... - ], - "modules": ... - } - ``` +``` + { + "nom": "formation", + "UE": "ue", + "matieres": [ + "matiere_1": "maths", + "matiere_2": "anglais", + ... + ], + "modules": ... + } +``` ## UE @@ -210,29 +239,29 @@ 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) - * **Format URL:** `/api/formsemestre/`, `/api/formsemestre/apo/` + * **Routes:** `/api/formsemestre/`, `/api/formsemestre/apo/` * **Exemple d'utilisation:** `/api/formsemestre/12` * **Résultat:** Informations sur le(s) formsemestre(s). * **Exemple de résultat:** - ``` - [ - { - "annee_scolaire": "2022 - 2023", - "date_debut": "2022-09-01", - "date_fin": "2023-02-02", - "modalite": "FI", - "periode": 1, - "semestre_idx_txt": "S3", - "semestre_idx" : 3, - "session_id" : "GEII-BUT-FI-S3-2022", - "titre_annee": "BUT Génie Electrique et Informatique Industrielle semestre 3 FI 2021-2022" - "titre_num": "BUT Génie Electrique et Informatique Industrielle semestre 3", - "titre": "BUT Génie Electrique et Informatique Industrielle", - "parcours_type": XXX type de parcours - 'formation_id": 87, - } - ] - ``` +``` +[ + { + "annee_scolaire": "2022 - 2023", + "date_debut": "2022-09-01", + "date_fin": "2023-02-02", + "modalite": "FI", + "periode": 1, + "semestre_idx_txt": "S3", + "semestre_idx" : 3, + "session_id" : "GEII-BUT-FI-S3-2022", + "titre_annee": "BUT Génie Electrique et Informatique Industrielle semestre 3 FI 2021-2022" + "titre_num": "BUT Génie Electrique et Informatique Industrielle semestre 3", + "titre": "BUT Génie Electrique et Informatique Industrielle", + "parcours_type": XXX type de parcours + 'formation_id": 87, + } +] +``` ### Note sur les identifiants de sessions Le `session_id` peut être utilisé pour identifier de façon prévisible et @@ -262,7 +291,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` - * **Format URL:** `/api/moduleimpl/`, `/api//formsemestre/` + * **Routes:** `/api/moduleimpl/`, `/api//formsemestre/` * **Résultat:** liste de moduleimpl * **Exemple de résultat:** TODO @@ -272,6 +301,7 @@ On peut récupérer soit un module par son id, soit la listes des modules d'un s ## Groupes et partitions + L'ensemble des étudiants d'un semestre peut être réparti selon une ou plusieurs partitions (types de groupes). Chaque partition est constituée d'un nombre quelconque de groupes d'étudiants. @@ -279,66 +309,62 @@ d'un nombre quelconque de groupes d'étudiants. * **`partition`** * **Méthode: GET** * **Paramètres:** `formsemestre_id` - * **Format URL:** `/api/partition/` + * **Routes:** `/api/partition/` * **Exemple d'utilisation:** `/api/partition/48` * **Résultat:** La liste de toutes les partitions d'un formsemestre. * **Exemple de résultat:** - ``` - [ - { - "formsemestre_id": "12781", - "partition_id": "23840", - "partition_name": "TD" - "group": [ - { - "formsemestre_id": "12781", - "partition_id": "23840", - "group_name": "A", - "group_id": "23841", - "partition_name": "TD" - }, - { - "formsemestre_id": "12781", - "partition_id": "23840", - "group_name": "B", - "group_id": "23843", - "partition_name": "TD" - }, - ], - }, - { - "formsemestre_id": "12781", - "partition_id": "23941", - "partition_name": "TP" - "group": [ - { - ... - }, - ... - ], - }, - { - "formsemestre_id": "12781", - "partition_id": "22833", - "partition_name": null - "group": [ - { - "formsemestre_id": "12781", - "partition_id": "22833", - "group_name": null, - "group_id": "G22834", - "partition_name": null - } - ], - } +``` +[ + { + "formsemestre_id":"12781", + "partition_id":"23840", + "partition_name":"TD""group":[ + { + "formsemestre_id":"12781", + "partition_id":"23840", + "group_name":"A", + "group_id":"23841", + "partition_name":"TD" + }, + { + "formsemestre_id":"12781", + "partition_id":"23840", + "group_name":"B", + "group_id":"23843", + "partition_name":"TD" + } ] - ``` - + }, + { + "formsemestre_id":"12781", + "partition_id":"23941", + "partition_name":"TP""group":[ + { + "..." + }, + "..." + ] + }, + { + "formsemestre_id":"12781", + "partition_id":"22833", + "partition_name":null"group":[ + { + "formsemestre_id":"12781", + "partition_id":"22833", + "group_name":null, + "group_id":"G22834", + "partition_name":null + } + ] + } +] +``` * **`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` - * **Format URL:** + * **Routes:** * **Exemple d'utilisation:** * **Résultat:** Liste des étudiants dans un groupe. * **Exemple de résultat au format XML:** (_avec `with_codes=1`_) @@ -399,7 +425,7 @@ d'un nombre quelconque de groupes d'étudiants. * **`set_groups`** * **Méthode:** POST * **Paramètres:** `partition_id`, `groups`, `groups_to_delete`, `groups_to_create` - * **Format URL:** `/api/set_groups?partition_id=&groups=&groups_to_delete=&groups_to_create=` + * **Routes:** `/api/set_groups?partition_id=&groups=&groups_to_delete=&groups_to_create=` * **Exemple d'utilisation:** `/api/set_groups?partition_id=65&groups=77&groups_to_delete=8&groups_to_create=4` * **Résultat:** Set les groups. @@ -410,7 +436,7 @@ d'un nombre quelconque de groupes d'étudiants. * **`evaluations`** * **Méthode:** GET * **Paramètres:** `moduleimpl_id` - * **Format URL:** `/api/evaluations/` + * **Routes:** `/api/evaluations/` * **Exemple d'utilisation:** `/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, ...]` @@ -419,7 +445,7 @@ d'un nombre quelconque de groupes d'étudiants. * **`evaluation_notes`** * **Méthode**: GET * **Paramètres**: `evaluation_id` - * **Format URL:** `/api/eval_notes/` + * **Routes:** `/api/eval_notes/` * **Exemple d'utilisation:** `/api/eval_notes/24` * **Résultat:** Liste des notes à partir de l'id d'une évaluation donnée. * **Exemple de résultat:** @@ -438,7 +464,7 @@ d'un nombre quelconque de groupes d'étudiants. * **`evaluation_set_notes`** * **Méthode:** POST * **Paramètres:** `eval_id`, `etudid`, `note` - * **Format URL:** `/api/eval_set_notes?eval_id= etudid=¬e=` + * **Routes:** `/api/eval_set_notes?eval_id= etudid=¬e=` * **Exemple d'utilisation:** `/api/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. @@ -447,7 +473,7 @@ d'un nombre quelconque de groupes d'étudiants. * **`etud//bul`** * **Méthode:** GET * **Paramètres:** `formsemestre_id`, `etudid`, `format` (`xml`ou `json`), `version` (`short`, `selectedevals` ou `long`) - * **Format URL:** + * **Routes:** * **Exemple d'utilisation:** * **Résultat:** Un bulletin de notes. * **Exemple de résultat:** ici au format JSON, pour une version courte (`version=short`) @@ -1087,7 +1113,7 @@ formsemestre_id": "SEM12345", * **`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_). - * **Format URL:** `/api/absences/` + * **Routes:** `/api/absences/` * **Exemple d'utilisation:** `/api/absences/54` * **Résultat:** Liste des absences d'un étudiant donné. * **Exemple de résultat:** @@ -1124,7 +1150,7 @@ formsemestre_id": "SEM12345", * **`abs_groupe_etat`** * **Méthode:** GET * **Paramètres:** `group_ids`, `date_debut`, `date_fin`, `with_boursier=True`, `format=html` - * **Format URL:** `/api/abs_group_etat/?group_ids=group_ids&date_debut=date_debut&date_fin=date_fin` + * **Routes:** `/api/abs_group_etat/?group_ids=group_ids&date_debut=date_debut&date_fin=date_fin` * **Exemple d'utilisation:** `/api/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: