From 72e5d2401a9a968c7de5492f9b49559bc07535f0 Mon Sep 17 00:00:00 2001 From: leonard_montalbano Date: Fri, 31 Dec 2021 11:29:27 +0100 Subject: [PATCH 1/7] =?UTF-8?q?correctifs=20sur=20diff=C3=A9rents=20points?= =?UTF-8?q?=20de=20la=20doc?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/ScoDoc9API.md | 124 +++++++++++++++++++++++---------------------- 1 file changed, 63 insertions(+), 61 deletions(-) diff --git a/docs/ScoDoc9API.md b/docs/ScoDoc9API.md index 6bc9b75..7b547cf 100644 --- a/docs/ScoDoc9API.md +++ b/docs/ScoDoc9API.md @@ -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/`) - `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//bul/`) + - `Notes/formsemestre_bulletinetud` (deviendra `api/etud//bul/`) - `Notes/XMLgetFormsemestres` (non existante en ScoDoc9, redondant avec `api/formsemestre` ?) - - `etud_info` ou `XMLgetEtudInfos` ou `Absences/XMLgetEtudInfos` ou `Notes/XMLgetEtudInfos` (deviendra `/api/etud/`) + - `etud_info` ou `XMLgetEtudInfos` ou `Absences/XMLgetEtudInfos` ou `Notes/XMLgetEtudInfos` (deviendra `/api/etud/`) - `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//etudiants/liste/` (_`semestre` étant un paramètre optionnel_) - * **Exemple d'utilisation:** `/api/departements/MMI/etudiants/liste` - * **Résultat:** liste des étudiants d'un département - semestre actuel par défaut. + * **Paramètres:** `dept`, `formsemestre_id` + * **Routes:** `/ScoDoc/api/departements//etudiants/liste/` (_`semestre` étant un paramètre optionnel_) + * **Exemple d'utilisation:** `/ScoDoc/api/departements/MMI/etudiants/liste` + * **Résultat:** Liste des étudiants d'un département - semestre actuel par défaut. * **`liste_semestres_actifs`** * **Méthode:** GET * **Paramètres:** `dept` - * **Routes:** `/api/departements//semestres_actifs` - * **Exemple d'utilisation:** `/api/departements/MMI/semestres_actifs` + * **Routes:** `/ScoDoc/api/departements//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//formations//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//formations//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/` - * **Exemple d'utilisation:** `/api/etud_dept/123` + * **Routes:** `/ScoDoc/api/etud_dept/` + * **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/` - * **Exemple d'utilisation:** `/api/etudiant/987` + * **Routes:** `/ScoDoc/api/etudiant/` + * **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//semestre//bulletin` - * **Exemple d'utilisation:** `/api/etudiant/987/semestre/12/bulletin` + * **Routes:** `/ScoDoc/api/etudiant//semestre//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//departements//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//departements//etudiant/nip|id|ine/{NIP}|{etudid}|numScodoc}/bulletin?format=&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//photo` **OU** `/api/etudiant//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//photo` **OU** `/ScoDoc/api/etudiant//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//semestre//groups` - * **Exemple d'utilisation:** `/api/etudiants/123/semestre/INFO-DUT-FI-S1-2014/groups` + * **Routes:** `/ScoDoc/api/etudiant//semestre//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/` - * **Exemple d'utilisation:** `/api/formations` **ou** `/api/formations/1` + * **Routes:** `/ScoDoc/api/formations` **ou** `/ScoDoc/api/formations/` + * **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/` - * **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/?format=&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//formations/programme/` - * **Exemple d'utilisation:** `̀/api/departements/MMI/formations/programme/INFO-DUT-FI-S1-2014` + * **Routes:** `/ScoDoc/api/departements//formations/programme/` + * **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/`, `/api/formsemestre/apo/` - * **Exemple d'utilisation:** `/api/formations/formsemestre/12` + * **Routes:** `/ScoDoc/api/formations/formsemestre/`, `/ScoDoc/api/formsemestre/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/` **ou** `/api/formations/moduleimpl//formsemestre/` + * **Routes:** `/ScoDoc/api/formations/moduleimpl/` **ou** `/ScoDoc/api/formations/moduleimpl//formsemestre/` * **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/` - * **Exemple d'utilisation:** `/api/partition/48` + * **Routes:** `/ScoDoc/api/partitions/` + * **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//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//groups/group_ids?with_codes=&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`_) ``` @@ -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=&groups=&groups_to_delete=&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=&groups=&groups_to_delete=&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/` - * **Exemple d'utilisation:** `/api/evaluations/54` + * **Routes:** `/ScoDoc/api/evaluations/` + * **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/` - * **Exemple d'utilisation:** `/api/evaluations/eval_notes/24` + * **Routes:** `/ScoDoc/api/evaluations/eval_notes/` + * **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= etudid=¬e=` - * **Exemple d'utilisation:** `/api/evaluations/eval_set_notes?eval_id=6 etudid=456¬e=15` + * **Routes:** `/ScoDoc/api/evaluations/eval_set_notes?eval_id=&etudid=¬e=` + * **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/` - * **Exemple d'utilisation:** `/api/absences/54` + * **Routes:** `/ScoDoc/api/absences/` + * **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/` - * **Exemple d'utilisation :** `/api/logos/header` + * **Route:** `/ScoDoc/api/logos/` + * **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//logos` - * **Exemple d'utilisation :** `/api/MMI/logos` + * **Route :** `/ScoDoc/api/departements//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//logos/` - * **Exemple d'utilisation:** `/api/departements/MMI/logos/header` + * **Route:** `/ScoDoc/api/departements//logos/` + * **Exemple d'utilisation:** `/ScoDoc/api/departements/MMI/logos/header` * **Résultat :** l'image (format png ou jpg) From 3564c0e59b0178aeaf50a6e43d02a4e11bfe6fa3 Mon Sep 17 00:00:00 2001 From: leonard_montalbano Date: Fri, 31 Dec 2021 12:07:36 +0100 Subject: [PATCH 2/7] =?UTF-8?q?correction=20de=20diff=C3=A9rents=20points?= =?UTF-8?q?=20sur=20la=20doc=20api?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/ScoDoc9API.md | 8 -------- 1 file changed, 8 deletions(-) diff --git a/docs/ScoDoc9API.md b/docs/ScoDoc9API.md index a44987f..787654b 100644 --- a/docs/ScoDoc9API.md +++ b/docs/ScoDoc9API.md @@ -110,17 +110,9 @@ Tous les codes >= 400 indiquent que la requête n'a pas été traitée avec succ ## Départements * **`departements`** * **Méthode:** GET -<<<<<<< HEAD - * **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` -======= * **Paramètres:** `viewable` (optionnel, si faux liste aussi les départements non accessibles à l'utilisateur courant), `format` (json, xml) * **Routes:** `/ScoDoc/api/departements` * **Exemple d'utilisation:** `/ScoDoc/api/departements` ->>>>>>> ca20ff89e1a0f9b1e3c55ceac8799ed9155ea512 * **Résultat:** Liste des id de départements. * **Exemple de résultat:** `[id_1, id_2, id_3, ...]` From 3ca78447720b090cf86937b59dd8692368c3ca87 Mon Sep 17 00:00:00 2001 From: leonard_montalbano Date: Fri, 31 Dec 2021 14:24:59 +0100 Subject: [PATCH 3/7] ajout du .idea/ dans le gitignore --- .gitignore | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.gitignore b/.gitignore index a1414d4..2a201b6 100644 --- a/.gitignore +++ b/.gitignore @@ -191,3 +191,6 @@ CVS # MkDocs ScoDoc site/ + +# Pycharm +.idea/ From 23457d7713bfd30cc3d0996c71a5bbe1e110b5fe Mon Sep 17 00:00:00 2001 From: viennet Date: Thu, 30 Dec 2021 13:40:30 +0100 Subject: [PATCH 4/7] mise en forme --- .gitignore | 3 +++ docs/GuideDeveloppeurs.md | 13 +++++++------ 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/.gitignore b/.gitignore index a1414d4..2a201b6 100644 --- a/.gitignore +++ b/.gitignore @@ -191,3 +191,6 @@ CVS # MkDocs ScoDoc site/ + +# Pycharm +.idea/ diff --git a/docs/GuideDeveloppeurs.md b/docs/GuideDeveloppeurs.md index 7c146d3..6be84be 100644 --- a/docs/GuideDeveloppeurs.md +++ b/docs/GuideDeveloppeurs.md @@ -260,6 +260,7 @@ Demander un `rebase` interactif depuis ce point : ```bash git rebase -i $(git merge-base HEAD officiel/master) +``` *Explications*: _Le rebase interactif permet d'enregistrer un suite de manipulation de commit dans un seul fichier texte._ @@ -269,13 +270,14 @@ _est préparé par la commande `-i` de la commande_ `git rebase` _Vous pouvez ensuite modifier ce fichier dans votre editeur favori (ou pas) (à régler par `git config`) pour décrire_ _votre intention (réordonner, changer le message, fusionner, ...) sur l'ensemble des commits_ -_Quand votre édition est terminée, git reprend la main est excécute chacune de vos opérations. Il est possible_ -_(bien que très rare) que des conflits apparaissent à ce moment-là. Les commandes habutelles de correction accompagnées des commandes:_ +_Quand votre édition est terminée, git reprend la main est exécute chacune de vos opérations. Il est possible_ +_(bien que très rare) que des conflits apparaissent à ce moment-là. Les_ +_commandes habituelles de correction accompagnées des commandes :_ ```bash git rebase --continue # pour poursuivre le processus git rebase --abort # pour tout abandonner ``` -_vous permettront de résoudre ces problèmes excptionnels_ +_vous permettront de résoudre ces problèmes exceptionnels_. Application: @@ -317,7 +319,6 @@ pick 83eb79e modif 2 # # However, if you remove everything, the rebase will be aborted. # -~ ``` Vous pouvez réorganiser tous les commits (changer l'ordre, fusionner) en @@ -363,9 +364,9 @@ assurez-vous avant d'être le seul à travailler sur cette branche. * À l'aide de l'interface du serveur, vous pouvez comparer l'état de votre branche par rapport au master officiel, et si cela vous convient, il vous reste à formuler - une demande d'intégration (pull request). En remplissant les informations demandées. + une demande d'intégration (*pull request*). En remplissant les informations demandées. -### Tests et tests unitaires +## Tests et tests unitaires Voir [TestsScoDoc](TestsScoDoc.md) From cda5a25a69d9955dfe5a394d6217eae757ba0d3c Mon Sep 17 00:00:00 2001 From: leonard_montalbano Date: Tue, 26 Apr 2022 16:51:42 +0200 Subject: [PATCH 5/7] =?UTF-8?q?r=C3=A9ctification=20de=20la=20doc=20pour?= =?UTF-8?q?=20la=20partie=20d=C3=A9partement=20et=20=C3=A9tudiant?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/ScoDoc9API.md | 393 ++++++++++++++------------------------------- 1 file changed, 117 insertions(+), 276 deletions(-) diff --git a/docs/ScoDoc9API.md b/docs/ScoDoc9API.md index e0b8239..203fb45 100644 --- a/docs/ScoDoc9API.md +++ b/docs/ScoDoc9API.md @@ -114,315 +114,156 @@ Tous les codes >= 400 indiquent que la requête n'a pas été traitée avec succ ### Départements * **`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` + * **Routes:** `/departements` * **Exemple d'utilisation:** `/api/departements` * **Résultat:** Liste des id de départements. - * **Exemple de résultat:** `[id_1, id_2, id_3, ...]` + * **Exemple de résultat:** `[1, 2, 3, ...]` - * **`etudiants`** XXX à revoir + * **`liste_etudiants`** * **Méthode:** GET - * **Paramètres:** `dept`, `semestre` - * **Routes:** `/api/departements//etudiants/liste/` + * **Paramètres:** `dept`, `formsemestre_id` + * **Routes:** `/departements//etudiants/liste` ou `/api/departements//etudiants/liste/` * **Exemple d'utilisation:** `/api/departements/MMI/etudiants/liste` - * **Résultat:** liste des étudiants d'un département - semestre actuel par - défaut. XXX à préciser + * **Résultat:** liste des étudiants d'un département, par défaut, ou d'un semestre si renseigné - * **`liste_semestres_actifs`** XXX à revoir + * **`liste_semestres_courant`** XXX à revoir * **Méthode:** GET * **Paramètres:** `dept` - * **Routes:** `/api/departements//semestres_actifs` - * **Exemple d'utilisation:** `/api/departements/MMI/semestres_actifs` + * **Routes:** `/departements//semestres_courants` + * **Exemple d'utilisation:** `/api/departements/MMI/semestres_courants` * **Résultat:** Liste des semestres actifs d'un département donné. (_réponse sous format json_) * **`referentiel_competences`** * **Méthode:** GET - * **Paramètres:** `id`, id du référentiel - * **Routes:** `/api/referentiel_competences/` + * **Paramètres:** `dept`, `formation_id` + * **Routes:** `/departements//formations//referentiel_competences` + * **Exemple d'utilisation:** `api/departements/MMI/formations/1/referentiel_competences` * **Résultat:** Le référentiel de compétences d'une formation donnée (json). (_pas toujours présent_) * XXX obtenir la liste des référentiels -### Etudiants - * **`etud_dept`** + * **`semestre_index`** * **Méthode:** GET - * **Paramètres:** `code_nip` - * **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:** - ``` - [ - { - exist: true, - dept: "GEII", - id: 987, - dept_id: 3 - } - ] - ``` - + * **Paramètres:** `dept`, `formsemestre_id` + * **Routes:** `/departements//formsemestre//programme` + * **Exemple d'utilisation:** `api/departements/MMI/formsemestre/1/programme` + * **Résultat:** Retourne la liste des Ues, ressources et SAE d'un semestre (json). - * **`etudiant`** + +### Etudiants + + * **`etudiants_courant`** * **Méthode:** GET - * **Paramètres:** `etudid` - * **Routes:** `/api/etudiant/` - * **Exemple d'utilisation:** `/api/etudiant/987` - * **Résultat:** Un dictionnaire avec les informations de l'étudiant correspondant à l'id passé en paramètres. + * **Routes:** `/etudiants/courant` + * **Exemple d'utilisation:** `/api/etudiants/courant` + * **Résultat:** Retourne la liste des étudiants courant (json). * **Exemple de résultat:** ``` { - "nom": "Mutis", - "sexe": "M.", - "email": "alvaro.mutis@example.com", - "prenom": "ALVARO", - "nomprenom": "M. Alvaro MUTIS", - "insemestre": [ - { - "etat": "I", - "formsemestre_id": "12781", - "date_fin": "2010-07-30", - "date_debut": "2010-01-25" - "parcours_type": XXX type de parcours, en discussion XXX - }, - { - "etat": "I", - "formsemestre_id": "8396", - "date_fin": "2009-01-16", - "date_debut": "2008-09-01" - } - ], - "etudid": "8768", - "domicile": "2 Rue Madame", - "villedomicile": "Paris", - "telephonemobile": "" - } + { + "civilite": "X", + "code_ine": null, + "code_nip": null, + "date_naissance": null, + "email": null, + "emailperso": null, + "etudid": 18, + "nom": "MOREL", + "prenom": "JACQUES" + }, + { + "civilite": "X", + "code_ine": null, + "code_nip": null, + "date_naissance": null, + "email": null, + "emailperso": null, + "etudid": 19, + "nom": "FOURNIER", + "prenom": "ANNE" + }, + ... + } ``` - + + * **`etudiant`** + * **Méthode:** GET + * **Paramètres:** `etudid`, `nip`, `ine` + * **Routes:** `/etudiant/etudid/` ou `/etudiant/nip/` ou `/etudiant/ine/` + * **Exemple d'utilisation:** `/api/etudiant/nip/1` + * **Résultat:** Retourne les informations de l'étudiant correspondant à l'id passé en paramètres. (json) + * **Exemple de résultat:** + ``` + { + "civilite": "X", + "code_ine": null, + "code_nip": null, + "date_naissance": null, + "email": null, + "emailperso": null, + "etudid": 18, + "nom": "MOREL", + "prenom": "JACQUES" + } + ``` + + + * **`etudiant_formsemestres`** + * **Méthode:** GET + * **Paramètres:** `etudid`, `nip`, `ine` + * **Routes:** : `/etudiant/etudid//formsemestres` ou `/etudiant/nip//formsemestres` ou `/etudiant/ine//formsemestres` + * **Exemple d'utilisation:** `/etudiant/ine/1/formsemestres` + * **Résultat:** Retourne la liste des semestres qu'un étudiant a suivis, triés par ordre chronologique. (json) + + + * **`etudiant_bulletin_semestre`** * **Méthode:** GET - * **Paramètres:** `etudid`, `sem_id` - * **Routes:** `/api/etudiant//semestre//bulletin` - * **Exemple d'utilisation:** `/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. - - Voir aussi [Bulletins par défaut](https://scodoc.org/ParametrageBulletins/#exemple-1-bulletins-par-defaut) - - - * **`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//departements//etudiant/nip|id|ine/{NIP}|{etudid}|numScodoc}/releve` - * **Exemple d'utilisation:** `/api/formsemestre/123/departements/MMI/etudiant/id/456/releve?format=pdf&version=short` - * **Résultat:** Un bulletin de notes. - * **Exemple de résultat:** ici au format JSON, pour une version courte (`version=short`) -``` -{ -"rang": { - "ninscrits": 52, - "value": "1" -}, -"etape_apo2": "", -"etape_apo3": "", -"etape_apo4": "", -"etudiant": { - "nom": "BOLANO", - "prenom": "Roberto", - "sexe": "M.", - "code_ine": "", - etudid": "9860", - "code_nip": "123456789", - "email": "roberto@santateresa.mx", - "photo_url": "\/ScoDoc\/static\/photos\/F68\/RT_29960.h90.jpg" -}, -"bonus_sport_culture": { - "value": 0 -}, -"absences": { - "nbabsjust": 0, - "nbabs": 1 -}, -"decision": { - "etat": "I", - "code": "ADM", - "compenseformsemestre_id" : "SEM12345" /* si ce semestre en compense un autre */ -}, -"note": { - "max": "15.51", - "moy": "10.80", - "value": "15.51", - "min": "07.29" -}, - etudid": "9860", -"decision_ue": [ - { - "acronyme": "UE11", - "code": "ADM", - "ects": "16.0", - "titre": "D\u00e9couverte m\u00e9tiers", - "numero": "11", - "ue_id": "UE21456" - }, - { - "acronyme": "UE12", - "code": "ADM", - "ects": "14.0", - "titre": "Mise \u00e0 niveau des comp\u00e9tences transversales et scientifiques", - "numero": "12", - "ue_id": "UE21478" - } -], -"ue_capitalisee": [ - -], -"publie": 1, -"autorisation_inscription": [ - { - "semestre_id": 2 - } -], -"appreciation": [ - -], -"note_max": { - "value": 20 -}, -"date": "2014-07-12T17:38:47.693262", -"rang_group": [ - { - "ninscrits": 26, - "value": "1", - "group_type": "TD", - "group_name": "B" - }, - { - "ninscrits": 13, - "value": "1", - "group_type": "TP", - "group_name": "B1" - }, - ... - -], -formsemestre_id": "SEM12345", -"etape_apo": "V1RT", -"ue": [ - { - "acronyme": "UE11", - "rang": "1", - "code_apogee": "VRTU11", - "ects": "16", - "numero": "11", - "note": { - "max": "16.17", - "value": "16.17", - "min": "06.56" - }, - "module": [ - { - "coefficient": 3, - "rang": { - "value": "1" - }, - "code": "M1101", - "code_apogee": "VRT1101", - "numero": 1101, - "note": { - "moy": "08.94", - "nb_notes": 51, - "nb_missing": 0, - "max": "19.18", - "min": "03.70", - "nb_valid_evals": 3, - "value": "19.18" - }, - "abbrev": "R\u00e9seaux d'entreprises", - "effectif": { - "value": 51 - }, - "titre": "Initiation aux r\u00e9seaux d'entreprises", - "evaluation": [ - ], - "id": "27427" - }, - { - "coefficient": 2, - "rang": { - "value": "2" - ], - "effectif": "51", - "titre": "Mise \u00e0 niveau des comp\u00e9tences transversales et scientifiques", - "id": "UE21478" - }, - ... - - { - "acronyme": "UE 1S", - "rang": "1 ex", - "code_apogee": "", - "ects": "0", - "numero": "13", - "note": { - "max": "00.00", - "value": "00.00", - "min": "00.00" - }, - "module": [ - ], - "effectif": "51", - "titre": "Sport &amp; Culture", - "id": "UE23716" - } -], -"situation": "Inscrit le 2015-09-02. D\u00e9cision jury: Valid\u00e9. UE acquises: UE11, UE12. Autoris\u00e9 \u00e0 s'inscrire en S2." -} -``` - - - - * **`etudiant_photo`** - * **Méthode:** GET - * **Paramètres:** `etudid`, `small` - * **Routes:** `/api/etudiant//photo` **OU** `/api/etudiant//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_) - * **Résultat:** Image en JPEG ou PNG. + * **Paramètres:** `formsemestre_id`, `etudid`, `nip`, `ine` + * **Routes:** `/etudiant/etudid//formsemestre//bulletin` ou `/etudiant/nip//formsemestre//bulletin` ou `/etudiant/ine//formsemestre//bulletin` + * **Exemple d'utilisation:** `/etudiant/nip/1/formsemestre/1/bulletin` + * **Résultat:** Retourne le bulletin d'un étudiant en fonction de son id et d'un semestre donné. (json) * **`etudiant_groups`** * **Méthode:** GET - * **Paramètres:** `etudid`, `formsemestre_id` - * **Routes:** `/api/etudiant//semestre//groups` - * **Exemple d'utilisation:** `/api/etudiants/123/semestre/INFO-DUT-FI-S1-2014/groups` - * **Résultat:** Liste des groupes auxquels appartient l'étudiant dans le semestre indiqué. - -``` -{ - "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" - } - ] -} -``` + * **Paramètres:** `formsemestre_id`, `etudid`, `nip`, `ine` + * **Routes:** `/etudiant/etudid//semestre//groups` ou `/etudiant/nip//semestre//groups` ou `/etudiant/ine//semestre//groups` + * **Exemple d'utilisation:** `/etudiant/nip/1/semestre/1/groups` + * **Résultat:** Retourne la liste des groupes auxquels appartient l'étudiant dans le semestre indiqué. (json) + * **Exemple de résultat:** + ``` + [ + { + "partition_id": 1, + "id": 1, + "formsemestre_id": 1, + "partition_name": "TD", + "numero": 0, + "bul_show_rank": false, + "show_in_lists": true, + "group_id": 1, + "group_name": B + }, + { + "partition_id": 2, + "id": 2, + "formsemestre_id": 1, + "partition_name": "TP", + "numero": 1, + "bul_show_rank": false, + "show_in_lists": true, + "group_id": 2, + "group_name": "A" + }, + ... + ] + ``` + From 51e1884d1d5922406779921e46dcef645bdd99e7 Mon Sep 17 00:00:00 2001 From: leonard_montalbano Date: Tue, 26 Apr 2022 17:07:20 +0200 Subject: [PATCH 6/7] =?UTF-8?q?mise=20=C3=A0=20jour=20de=20la=20documentat?= =?UTF-8?q?ion=20api=20scodoc9=20pour=20la=20partie=20departement=20et=20e?= =?UTF-8?q?tudiant?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/ScoDoc9API.md | 504 +++++++++++++++++---------------------------- 1 file changed, 188 insertions(+), 316 deletions(-) diff --git a/docs/ScoDoc9API.md b/docs/ScoDoc9API.md index 787654b..2e7daaa 100644 --- a/docs/ScoDoc9API.md +++ b/docs/ScoDoc9API.md @@ -1,5 +1,5 @@ -# API pour ScoDoc 9 +## API pour ScoDoc 9 L'API ScoDoc permet à des applications tierces d'interroger ScoDoc. Elle offre un accès aux informations aux formats XML et JSON. La version ScoDoc 9 a introduit une nouvelle API avec un nouveau mécanisme d'authentification. @@ -24,47 +24,51 @@ Les objets ScoDoc manipulables sont identifiés par des id. L'URL complète est de la forme: `https://scodoc.example.com/ScoDoc/api/fonction`. -# Fonctions de l'API ScoDoc 7 portées en ScoDoc 9 +## Configuration de ScoDoc pour utiliser l'API -L'ancienne API ScoDoc 7 est décrite ici: [ScoDocAPI](ScoDocAPI.md) +Il est nécessaire de disposer d'un compte utilisateur avec les droits adéquats. -Afin de garantir l'interopérabilité avec les clients ScoDoc 7 (ENT, etc), les -fonctions suivantes sont disponibles avec le mécanisme d'authentification -basique de ScoDoc 7. Elles sont considérées comme *obsolètes* ("deprecated") et -disparaitront en juillet 2022. +En général, il est recommandé de créer un rôle, de lui attribuer les permissions +que l'on veut utiliser, puis de créer un utilisateur ayant ce rôle. -Certaines ont plusieurs "routes" (URl), car ScoDoc 7 tolérait divers accès. +En ligne de commande, cela peut se faire comme suit (voir détail des commandes +[sur le guide de configuration](GuideConfig.md)). - - `Absences/XMLgetBilletsEtud` (deviendra `api/absences/billets/etud/`) - - `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//bul/`) - - `Notes/XMLgetFormsemestres` (non existante en ScoDoc9, redondant avec `api/formsemestre` ?) - - `etud_info` ou `XMLgetEtudInfos` ou `Absences/XMLgetEtudInfos` ou `Notes/XMLgetEtudInfos` (deviendra `/api/etud/`) - - `groups_view` (deviendra `groups`) +``` +# se connecter comme utilisateur scodoc +su - scodoc -Les routes ci-dessus s'entendent à partir de l'URL de base de votre ScoDoc, c'est -à dire `https://votre.site.fr/ScoDoc//Scolarite/`, et répondent en GET et -en POST. +# Créer un rôle +flask create-role LecteurAPI +# Lui donner les droits nécessaires: ici APIView +flask edit-role LecteurAPI -a APIView -Note: - - `Absences/listeBillets` est un formulaire et ne fait pas partie de l'API. +# Créer un nouvel utilisateur avec ce rôle: +flask user-create lecteur_api LecteurAPI @all -# Fonctions d'API ScoDoc 9 (work in progress) +# Ou bien, si on veut utiliser un compte existant: +# associer notre rôle à un utilisateur +flask user-role lecteur_api -a LecteurAPI + + +# Au besoin, changer le mot de passe de l'utilisateur +# (on aura besoin de ce mot de passe dans la configuration du client d'API) +flask user-password lecteur_api +... +``` + +## Fonctions d'API ScoDoc 9 (work in progress) Basé sur le ticket [#149](https://scodoc.org/git/viennet/ScoDoc/issues/149) -La documentation ci-dessous concerne la **future** version De ScoDoc. +La documentation ci-dessous concerne la **future** version de ScoDoc (9.3, avec +parties expérimentales progressivement mises en production à partir de 9.2.12). -## Accès à l'API REST +### Accès à l'API REST 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 +#### Authentification Lors de votre authentification (_connection avec login et mdp_) à Scodoc, il vous sera attribué un jeton (token jwt _généré automatiquement_) vous permettant @@ -89,7 +93,7 @@ La réponse doit ressembler à ceci: Vous trouverez dans `/opt/scodoc/tests/api/exemple-api-basic.py` un exemple complet en python d'interrogation de l'API. -### Codes HTTP +#### Codes HTTP Chaque appel à l'API donne lieu à une réponse retournant un code spécifique en fonction du résultat obtenu. L'analyse de ce code vous permet de vous assurer que la requête a été traitée avec succès. @@ -107,315 +111,156 @@ Tous les codes >= 400 indiquent que la requête n'a pas été traitée avec succ * [503](https://developer.mozilla.org/fr/docs/Web/HTTP/Status/503) : L'API est momentanément indisponible, réessayez dans quelques minutes. -## Départements +### Départements * **`departements`** * **Méthode:** GET - * **Paramètres:** `viewable` (optionnel, si faux liste aussi les départements non accessibles à l'utilisateur courant), `format` (json, xml) - * **Routes:** `/ScoDoc/api/departements` - * **Exemple d'utilisation:** `/ScoDoc/api/departements` + * **Routes:** `/departements` + * **Exemple d'utilisation:** `/api/departements` * **Résultat:** Liste des id de départements. - * **Exemple de résultat:** `[id_1, id_2, id_3, ...]` + * **Exemple de résultat:** `[1, 2, 3, ...]` * **`liste_etudiants`** * **Méthode:** GET * **Paramètres:** `dept`, `formsemestre_id` - * **Routes:** `/ScoDoc/api/departements//etudiants/liste/` (_`semestre` étant un paramètre optionnel_) - * **Exemple d'utilisation:** `/ScoDoc/api/departements/MMI/etudiants/liste` - * **Résultat:** Liste des étudiants d'un département - semestre actuel par défaut. + * **Routes:** `/departements//etudiants/liste` ou `/api/departements//etudiants/liste/` + * **Exemple d'utilisation:** `/api/departements/MMI/etudiants/liste` + * **Résultat:** liste des étudiants d'un département, par défaut, ou d'un semestre si renseigné. (json) - * **`liste_semestres_actifs`** + * **`liste_semestres_courant`** * **Méthode:** GET * **Paramètres:** `dept` - * **Routes:** `/ScoDoc/api/departements//semestres_actifs` - * **Exemple d'utilisation:** `/ScoDoc/api/departements/MMI/semestres_actifs` + * **Routes:** `/departements//semestres_courants` + * **Exemple d'utilisation:** `/api/departements/MMI/semestres_courants` * **Résultat:** Liste des semestres actifs d'un département donné. (_réponse sous format json_) - * **`referenciel_competences`** + * **`referentiel_competences`** * **Méthode:** GET - * **Paramètres:** `dept`, `formation` (_`formation` étant un id de formation, un programme pédagogique_) - * **Routes:** `/ScoDoc/api/departements//formations//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_) + * **Paramètres:** `dept`, `formation_id` + * **Routes:** `/departements//formations//referentiel_competences` + * **Exemple d'utilisation:** `api/departements/MMI/formations/1/referentiel_competences` + * **Résultat:** Le référentiel de compétences d'une formation donnée (json). (_pas toujours présent_) + * XXX obtenir la liste des référentiels -## Etudiants - * **`etud_dept`** + * **`semestre_index`** * **Méthode:** GET - * **Paramètres:** `code_nip` - * **Routes:** `/ScoDoc/api/etud_dept/` - * **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:** - ``` - [ - { - exist: true, - dept: "GEII", - id: 987, - dept_id: 3 - } - ] - ``` - + * **Paramètres:** `dept`, `formsemestre_id` + * **Routes:** `/departements//formsemestre//programme` + * **Exemple d'utilisation:** `api/departements/MMI/formsemestre/1/programme` + * **Résultat:** Retourne la liste des Ues, ressources et SAE d'un semestre (json). - * **`etudiant`** + +### Etudiants + + * **`etudiants_courant`** * **Méthode:** GET - * **Paramètres:** `etudid` - * **Routes:** `/ScoDoc/api/etudiant/` - * **Exemple d'utilisation:** `/ScoDoc/api/etudiant/987` - * **Résultat:** Un dictionnaire avec les informations de l'étudiant correspondant à l'id passé en paramètres. + * **Routes:** `/etudiants/courant` + * **Exemple d'utilisation:** `/api/etudiants/courant` + * **Résultat:** Retourne la liste des étudiants courant (json). * **Exemple de résultat:** ``` { - "nom": "Mutis", - "sexe": "M.", - "email": "alvaro.mutis@example.com", - "prenom": "ALVARO", - "nomprenom": "M. Alvaro MUTIS", - "insemestre": [ - { - "etat": "I", - "formsemestre_id": "12781", - "date_fin": "2010-07-30", - "date_debut": "2010-01-25" - "parcours_type": XXX type de parcours, en discussion XXX - }, - { - "etat": "I", - "formsemestre_id": "8396", - "date_fin": "2009-01-16", - "date_debut": "2008-09-01" - } - ], - "etudid": "8768", - "domicile": "2 Rue Madame", - "villedomicile": "Paris", - "telephonemobile": "" - } + { + "civilite": "X", + "code_ine": null, + "code_nip": null, + "date_naissance": null, + "email": null, + "emailperso": null, + "etudid": 18, + "nom": "MOREL", + "prenom": "JACQUES" + }, + { + "civilite": "X", + "code_ine": null, + "code_nip": null, + "date_naissance": null, + "email": null, + "emailperso": null, + "etudid": 19, + "nom": "FOURNIER", + "prenom": "ANNE" + }, + ... + } ``` - + * **`etudiant`** + * **Méthode:** GET + * **Paramètres:** `etudid`, `nip`, `ine` + * **Routes:** `/etudiant/etudid/` ou `/etudiant/nip/` ou `/etudiant/ine/` + * **Exemple d'utilisation:** `/api/etudiant/nip/1` + * **Résultat:** Retourne les informations de l'étudiant correspondant à l'id passé en paramètres. (json) + * **Exemple de résultat:** + ``` + { + "civilite": "X", + "code_ine": null, + "code_nip": null, + "date_naissance": null, + "email": null, + "emailperso": null, + "etudid": 18, + "nom": "MOREL", + "prenom": "JACQUES" + } + ``` + + + * **`etudiant_formsemestres`** + * **Méthode:** GET + * **Paramètres:** `etudid`, `nip`, `ine` + * **Routes:** : `/etudiant/etudid//formsemestres` ou `/etudiant/nip//formsemestres` ou `/etudiant/ine//formsemestres` + * **Exemple d'utilisation:** `/etudiant/ine/1/formsemestres` + * **Résultat:** Retourne la liste des semestres qu'un étudiant a suivis, triés par ordre chronologique. (json) + + * **`etudiant_bulletin_semestre`** * **Méthode:** GET - * **Paramètres:** `etudid`, `sem_id` - * **Routes:** `/ScoDoc/api/etudiant//semestre//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. - - Voir aussi [Bulletins par défaut](https://scodoc.org/ParametrageBulletins/#exemple-1-bulletins-par-defaut) - - - * **`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:** : `/ScoDoc/api/formsemestre//departements//etudiant/nip|id|ine/{NIP}|{etudid}|numScodoc}/bulletin?format=&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`) -``` -{ -"rang": { - "ninscrits": 52, - "value": "1" -}, -"etape_apo2": "", -"etape_apo3": "", -"etape_apo4": "", -"etudiant": { - "nom": "BOLANO", - "prenom": "Roberto", - "sexe": "M.", - "code_ine": "", - etudid": "9860", - "code_nip": "123456789", - "email": "roberto@santateresa.mx", - "photo_url": "\/ScoDoc\/static\/photos\/F68\/RT_29960.h90.jpg" -}, -"bonus_sport_culture": { - "value": 0 -}, -"absences": { - "nbabsjust": 0, - "nbabs": 1 -}, -"decision": { - "etat": "I", - "code": "ADM", - "compenseformsemestre_id" : "SEM12345" /* si ce semestre en compense un autre */ -}, -"note": { - "max": "15.51", - "moy": "10.80", - "value": "15.51", - "min": "07.29" -}, - etudid": "9860", -"decision_ue": [ - { - "acronyme": "UE11", - "code": "ADM", - "ects": "16.0", - "titre": "D\u00e9couverte m\u00e9tiers", - "numero": "11", - "ue_id": "UE21456" - }, - { - "acronyme": "UE12", - "code": "ADM", - "ects": "14.0", - "titre": "Mise \u00e0 niveau des comp\u00e9tences transversales et scientifiques", - "numero": "12", - "ue_id": "UE21478" - } -], -"ue_capitalisee": [ - -], -"publie": 1, -"autorisation_inscription": [ - { - "semestre_id": 2 - } -], -"appreciation": [ - -], -"note_max": { - "value": 20 -}, -"date": "2014-07-12T17:38:47.693262", -"rang_group": [ - { - "ninscrits": 26, - "value": "1", - "group_type": "TD", - "group_name": "B" - }, - { - "ninscrits": 13, - "value": "1", - "group_type": "TP", - "group_name": "B1" - }, - ... - -], -formsemestre_id": "SEM12345", -"etape_apo": "V1RT", -"ue": [ - { - "acronyme": "UE11", - "rang": "1", - "code_apogee": "VRTU11", - "ects": "16", - "numero": "11", - "note": { - "max": "16.17", - "value": "16.17", - "min": "06.56" - }, - "module": [ - { - "coefficient": 3, - "rang": { - "value": "1" - }, - "code": "M1101", - "code_apogee": "VRT1101", - "numero": 1101, - "note": { - "moy": "08.94", - "nb_notes": 51, - "nb_missing": 0, - "max": "19.18", - "min": "03.70", - "nb_valid_evals": 3, - "value": "19.18" - }, - "abbrev": "R\u00e9seaux d'entreprises", - "effectif": { - "value": 51 - }, - "titre": "Initiation aux r\u00e9seaux d'entreprises", - "evaluation": [ - ], - "id": "27427" - }, - { - "coefficient": 2, - "rang": { - "value": "2" - ], - "effectif": "51", - "titre": "Mise \u00e0 niveau des comp\u00e9tences transversales et scientifiques", - "id": "UE21478" - }, - ... - - { - "acronyme": "UE 1S", - "rang": "1 ex", - "code_apogee": "", - "ects": "0", - "numero": "13", - "note": { - "max": "00.00", - "value": "00.00", - "min": "00.00" - }, - "module": [ - ], - "effectif": "51", - "titre": "Sport &amp; Culture", - "id": "UE23716" - } -], -"situation": "Inscrit le 2015-09-02. D\u00e9cision jury: Valid\u00e9. UE acquises: UE11, UE12. Autoris\u00e9 \u00e0 s'inscrire en S2." -} -``` - - - - * **`etudiant_photo`** - * **Méthode:** GET - * **Paramètres:** `etudid`, `small` - * **Routes:** `/ScoDoc/api/etudiant//photo` **OU** `/ScoDoc/api/etudiant//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. + * **Paramètres:** `formsemestre_id`, `etudid`, `nip`, `ine` + * **Routes:** `/etudiant/etudid//formsemestre//bulletin` ou `/etudiant/nip//formsemestre//bulletin` ou `/etudiant/ine//formsemestre//bulletin` + * **Exemple d'utilisation:** `/etudiant/nip/1/formsemestre/1/bulletin` + * **Résultat:** Retourne le bulletin d'un étudiant en fonction de son id et d'un semestre donné. (json) * **`etudiant_groups`** * **Méthode:** GET - * **Paramètres:** `etudid`, `formsemestre_id` - * **Routes:** `/ScoDoc/api/etudiant//semestre//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é. - -``` -{ - "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" - } - ] -} -``` + * **Paramètres:** `formsemestre_id`, `etudid`, `nip`, `ine` + * **Routes:** `/etudiant/etudid//semestre//groups` ou `/etudiant/nip//semestre//groups` ou `/etudiant/ine//semestre//groups` + * **Exemple d'utilisation:** `/etudiant/nip/1/semestre/1/groups` + * **Résultat:** Retourne la liste des groupes auxquels appartient l'étudiant dans le semestre indiqué. (json) + * **Exemple de résultat:** + ``` + [ + { + "partition_id": 1, + "id": 1, + "formsemestre_id": 1, + "partition_name": "TD", + "numero": 0, + "bul_show_rank": false, + "show_in_lists": true, + "group_id": 1, + "group_name": B + }, + { + "partition_id": 2, + "id": 2, + "formsemestre_id": 1, + "partition_name": "TP", + "numero": 1, + "bul_show_rank": false, + "show_in_lists": true, + "group_id": 2, + "group_name": "A" + }, + ... + ] + ``` @@ -451,7 +296,7 @@ formsemestre_id": "SEM12345", } ``` -## UE +### UE * **`UEs`** * **Méthode:** GET * **Paramètres:** `dept`, `̀semestre` @@ -462,7 +307,7 @@ formsemestre_id": "SEM12345", -## Semestres de formation +### Semestres de formation Les sessions de formation (dénommées "semestres" même si elles durent une année ou un mois) sont représentées par les `formsemestre`. * **`formsemestre`** @@ -492,7 +337,7 @@ Les sessions de formation (dénommées "semestres" même si elles durent une ann ] ``` -### Note sur les identifiants de sessions +#### Note sur les identifiants de sessions Le `session_id` peut être utilisé pour identifier de façon prévisible et (presque) unique une session dans un établissement, ce qui est utile notamment pour interfacer ScoDoc à d'autres logiciels (par exemple gestion d'emplois @@ -513,7 +358,7 @@ informations suivantes: **Exemple:** `INFO-DUT-FI-S1-2014` équivaut à un semestre S1 d'un DUT informatique de 2014 en formation initiale (FI) -## Modules de formation +### Modules de formation Les moduleimpl sont les modules d'un semestre, ou les ressources, ou les SAÉs. On peut récupérer soit un module par son id, soit la listes des modules d'un semestre. @@ -529,7 +374,7 @@ On peut récupérer soit un module par son id, soit la listes des modules d'un s -## Groupes et partitions +### 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 @@ -663,7 +508,7 @@ d'un nombre quelconque de groupes d'étudiants. TODO: à changer, passer les paramètres dans le corps de la requête -## Bulletins de notes +### Bulletins de notes * **`evaluations`** * **Méthode:** GET * **Paramètres:** `moduleimpl_id` @@ -701,7 +546,7 @@ d'un nombre quelconque de groupes d'étudiants. TODO vérifier et passer les valeurs dans le corps. -## Absences +### Absences **Remarques**, les dates sont au format iso `yyyy-mm-dd`. Les dates de fin ne sont pas incluses. Et `demi_journee`= 2 si journée complète, =1 si uniquement le matin, =0 si uniquement l'après-midi. @@ -761,7 +606,7 @@ d'un nombre quelconque de groupes d'étudiants. ] ``` -## Logos +### Logos * **`liste des logos globaux`** * **Méthode:** GET @@ -797,6 +642,33 @@ d'un nombre quelconque de groupes d'étudiants. * **Résultat :** l'image (format png ou jpg) +### En savoir plus +Voir exemples d'utilisation de l'API en Python, dans `tests/api/`. -## En savoir plus -Voir exemples d'utilisation de l'API en Python, dans `tests/api/`. \ No newline at end of file +## Fonctions de l'API ScoDoc 7 portées en ScoDoc 9 + +L'ancienne API ScoDoc 7 est décrite ici: [ScoDocAPI](ScoDocAPI.md) + +Afin de garantir l'interopérabilité avec les clients ScoDoc 7 (ENT, etc), les +fonctions suivantes sont disponibles avec le mécanisme d'authentification +basique de ScoDoc 7. Elles sont considérées comme *obsolètes* ("deprecated") et +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/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//bul/`) + - `Notes/XMLgetFormsemestres` (non existante en ScoDoc9, redondant avec `api/formsemestre` ?) + - `etud_info` ou `XMLgetEtudInfos` ou `Absences/XMLgetEtudInfos` ou `Notes/XMLgetEtudInfos` (deviendra `/api/etud/`) + - `groups_view` (deviendra `groups`) + +Les routes ci-dessus s'entendent à partir de l'URL de base de votre ScoDoc, c'est +à dire `https://votre.site.fr/ScoDoc//Scolarite/`, et répondent en GET et +en POST. + +Note: + - `Absences/listeBillets` est un formulaire et ne fait pas partie de l'API. From 5541cb594c9dd4b2c800025858051ef7bf93c69e Mon Sep 17 00:00:00 2001 From: leonard_montalbano Date: Thu, 28 Apr 2022 11:46:59 +0200 Subject: [PATCH 7/7] =?UTF-8?q?mise=20=C3=A0=20jour=20de=20la=20doc=20de?= =?UTF-8?q?=20la=20nouvelle=20api=20au=2028/04/2022?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/ScoDoc9API.md | 1444 +++++++++++++++++++++++++++++++++++--------- 1 file changed, 1165 insertions(+), 279 deletions(-) diff --git a/docs/ScoDoc9API.md b/docs/ScoDoc9API.md index 2e7daaa..937ba2f 100644 --- a/docs/ScoDoc9API.md +++ b/docs/ScoDoc9API.md @@ -110,14 +110,54 @@ Tous les codes >= 400 indiquent que la requête n'a pas été traitée avec succ * [500](https://developer.mozilla.org/fr/docs/Web/HTTP/Status/500) : Erreur inconnue, contactez-nous. * [503](https://developer.mozilla.org/fr/docs/Web/HTTP/Status/503) : L'API est momentanément indisponible, réessayez dans quelques minutes. +#### Note sur les identifiants de sessions +Le `session_id` peut être utilisé pour identifier de façon prévisible et +(presque) unique une session dans un établissement, ce qui est utile +notamment pour interfacer ScoDoc à d'autres logiciels (par exemple gestion d'emplois +du temps ou de services d'enseignement). Cet identifiant est constitué des +informations suivantes: + + * **Département** (RT, GEII, INFO...) (= paramètre `DeptName`, en majuscules) + * **Nom parcours:** BUT, LP, ... (défini au niveau du parcours dans ScoDoc = NAME) + * **Modalité:** FI, FC, FA + * **"Spécialité":** S1 (ou S1D pour les semestres décalés), ou le + `code_specialite` si pas de semestres. Le code spécialité est un champ + (libre) nouveau dans la "formation" (programme pédagogique). + * **Année:** année de début de l'année scolaire correspondante (2014 pour + une session appartenant à l'année scolaire 2014-2015, même si elle + commence en mars 2015). + + +**Exemple:** `INFO-DUT-FI-S1-2014` équivaut à un semestre S1 d'un DUT informatique de 2014 en formation initiale (FI) + + ### Départements * **`departements`** * **Méthode:** GET * **Routes:** `/departements` * **Exemple d'utilisation:** `/api/departements` - * **Résultat:** Liste des id de départements. - * **Exemple de résultat:** `[1, 2, 3, ...]` + * **Résultat:** Liste des départements. + * **Exemple de résultat:** + ``` + [ + { + "id": 1, + "acronym": "TAPI", + "description": null, + "visible": true, + "date_creation": "Fri, 15 Apr 2022 12:19:28 GMT" + }, + { + "id": 2, + "acronym": "MMI", + "description": null, + "visible": false, + "date_creation": "Fri, 18 Apr 2022 11:20:8 GMT" + }, + ... + ] + ``` * **`liste_etudiants`** @@ -126,6 +166,34 @@ Tous les codes >= 400 indiquent que la requête n'a pas été traitée avec succ * **Routes:** `/departements//etudiants/liste` ou `/api/departements//etudiants/liste/` * **Exemple d'utilisation:** `/api/departements/MMI/etudiants/liste` * **Résultat:** liste des étudiants d'un département, par défaut, ou d'un semestre si renseigné. (json) + * **Exemple de résultat:** + ``` + [ + { + "civilite": "X", + "code_ine": null, + "code_nip": null, + "date_naissance": null, + "email": null, + "emailperso": null, + "etudid": 18, + "nom": "MOREL", + "prenom": "JACQUES" + }, + { + "civilite": "X", + "code_ine": null, + "code_nip": null, + "date_naissance": null, + "email": null, + "emailperso": null, + "etudid": 19, + "nom": "FOURNIER", + "prenom": "ANNE" + }, + ... + ] + ``` * **`liste_semestres_courant`** @@ -134,6 +202,42 @@ Tous les codes >= 400 indiquent que la requête n'a pas été traitée avec succ * **Routes:** `/departements//semestres_courants` * **Exemple d'utilisation:** `/api/departements/MMI/semestres_courants` * **Résultat:** Liste des semestres actifs d'un département donné. (_réponse sous format json_) + * **Exemple de résultat:** + ``` + [ + { + "titre": "master machine info", + "gestion_semestrielle": false, + "scodoc7_id": null, + "date_debut": "01/09/2021", + "bul_bgcolor": null, + "date_fin": "15/12/2022", + "resp_can_edit": false, + "dept_id": 1, + "etat": true, + "resp_can_change_ens": false, + "id": 1, + "modalite": "FI", + "ens_can_edit_eval": false, + "formation_id": 1, + "gestion_compensation": false, + "elt_sem_apo": null, + "semestre_id": 1, + "bul_hide_xml": false, + "elt_annee_apo": null, + "block_moyennes": false, + "formsemestre_id": 1, + "titre_num": "master machine info semestre 1", + "date_debut_iso": "2021-09-01", + "date_fin_iso": "2022-12-15", + "responsables": [ + 3, + 2 + ] + }, + ... + ] + ``` * **`referentiel_competences`** @@ -151,13 +255,82 @@ Tous les codes >= 400 indiquent que la requête n'a pas été traitée avec succ * **Routes:** `/departements//formsemestre//programme` * **Exemple d'utilisation:** `api/departements/MMI/formsemestre/1/programme` * **Résultat:** Retourne la liste des Ues, ressources et SAE d'un semestre (json). + * **Exemple de résultat:** + ``` + { + "ues": [ + { + "type": 0, + "formation_id": 1, + "ue_code": "UCOD11", + "id": 1, + "ects": 12.0, + "acronyme": "RT1.1", + "is_external": false, + "numero": 1, + "code_apogee": "", + "titre": "Administrer les r\u00e9seaux et l\u2019Internet", + "coefficient": 0.0, + "semestre_idx": 1, + "color": "#B80004", + "ue_id": 1 + }, + ... + ], + "ressources": [ + { + "titre": "Fondamentaux de la programmation", + "coefficient": 1.0, + "module_type": 2, + "id": 17, + "ects": null, + "abbrev": null, + "ue_id": 3, + "code": "R107", + "formation_id": 1, + "heures_cours": 0.0, + "matiere_id": 3, + "heures_td": 0.0, + "semestre_id": 1, + "heures_tp": 0.0, + "numero": 70, + "code_apogee": "", + "module_id": 17 + }, + ... + ], + "saes": [ + { + "titre": "Se pr\u00e9senter sur Internet", + "coefficient": 1.0, + "module_type": 3, + "id": 14, + "ects": null, + "abbrev": null, + "ue_id": 3, + "code": "SAE14", + "formation_id": 1, + "heures_cours": 0.0, + "matiere_id": 3, + "heures_td": 0.0, + "semestre_id": 1, + "heures_tp": 0.0, + "numero": 40, + "code_apogee": "", + "module_id": 14 + }, + ... + ] + } + ``` + ### Etudiants * **`etudiants_courant`** * **Méthode:** GET - * **Routes:** `/etudiants/courant` + * **Routes:** `/etudiants/courant` ou `/etudiants/courant/long` * **Exemple d'utilisation:** `/api/etudiants/courant` * **Résultat:** Retourne la liste des étudiants courant (json). * **Exemple de résultat:** @@ -217,6 +390,41 @@ Tous les codes >= 400 indiquent que la requête n'a pas été traitée avec succ * **Routes:** : `/etudiant/etudid//formsemestres` ou `/etudiant/nip//formsemestres` ou `/etudiant/ine//formsemestres` * **Exemple d'utilisation:** `/etudiant/ine/1/formsemestres` * **Résultat:** Retourne la liste des semestres qu'un étudiant a suivis, triés par ordre chronologique. (json) + * **Exemple de résultat:** + ``` + [ + { + "titre": "master machine info", + "gestion_semestrielle": false, + "date_debut": "01/09/2021", + "bul_bgcolor": null, + "date_fin": "15/12/2022", + "resp_can_edit": false, + "dept_id": 1, + "etat": true, + "resp_can_change_ens": false, + "id": 1, + "modalite": "FI", + "ens_can_edit_eval": false, + "formation_id": 1, + "gestion_compensation": false, + "elt_sem_apo": null, + "semestre_id": 1, + "bul_hide_xml": false, + "elt_annee_apo": null, + "block_moyennes": false, + "formsemestre_id": 1, + "titre_num": "master machine info semestre 1", + "date_debut_iso": "2021-09-01", + "date_fin_iso": "2022-12-15", + "responsables": [ + 3, + 2 + ] + }, + ... + ] + ``` * **`etudiant_bulletin_semestre`** @@ -225,6 +433,176 @@ Tous les codes >= 400 indiquent que la requête n'a pas été traitée avec succ * **Routes:** `/etudiant/etudid//formsemestre//bulletin` ou `/etudiant/nip//formsemestre//bulletin` ou `/etudiant/ine//formsemestre//bulletin` * **Exemple d'utilisation:** `/etudiant/nip/1/formsemestre/1/bulletin` * **Résultat:** Retourne le bulletin d'un étudiant en fonction de son id et d'un semestre donné. (json) + * **Exemple de résultat:** + ``` + { + "version": "0", + "type": "BUT", + "date": "2022-04-27T07:18:16.450634Z", + "publie": true, + "etudiant": { + "civilite": "X", + "code_ine": "1", + "code_nip": "1", + "date_naissance": "", + "email": "SACHA.COSTA@example.com", + "emailperso": "", + "etudid": 1, + "nom": "COSTA", + "prenom": "SACHA", + "nomprenom": "Sacha COSTA", + "lieu_naissance": "", + "dept_naissance": "", + "nationalite": "", + "boursier": "", + "fiche_url": "/ScoDoc/TAPI/Scolarite/ficheEtud?etudid=1", + "photo_url": "/ScoDoc/TAPI/Scolarite/get_photo_image?etudid=1&size=small", + "id": 1, + "codepostaldomicile": "", + "paysdomicile": "", + "telephonemobile": "", + "typeadresse": "domicile", + "domicile": "", + "villedomicile": "", + "telephone": "", + "fax": "", + "description": "" + }, + "formation": { + "id": 1, + "acronyme": "BUT R&T", + "titre_officiel": "Bachelor technologique r\u00e9seaux et t\u00e9l\u00e9communications", + "titre": "BUT R&T" + }, + "formsemestre_id": 1, + "etat_inscription": "I", + "options": { + "show_abs": true, + "show_abs_modules": false, + "show_ects": true, + "show_codemodules": false, + "show_matieres": false, + "show_rangs": true, + "show_ue_rangs": true, + "show_mod_rangs": true, + "show_moypromo": false, + "show_minmax": false, + "show_minmax_mod": false, + "show_minmax_eval": false, + "show_coef": true, + "show_ue_cap_details": false, + "show_ue_cap_current": true, + "show_temporary": true, + "temporary_txt": "Provisoire", + "show_uevalid": true, + "show_date_inscr": true + }, + "ressources": { + "R101": { + "id": 1, + "titre": "Initiation aux r\u00e9seaux informatiques", + "code_apogee": null, + "url": "/ScoDoc/TAPI/Scolarite/Notes/moduleimpl_status?moduleimpl_id=1", + "moyenne": {}, + "evaluations": [ + { + "id": 1, + "description": "eval1", + "date": "2022-04-20", + "heure_debut": "08:00", + "heure_fin": "09:00", + "coef": "01.00", + "poids": { + "RT1.1": 1.0, + }, + "note": { + "value": "12.00", + "min": "00.00", + "max": "18.00", + "moy": "10.88" + }, + "url": "/ScoDoc/TAPI/Scolarite/Notes/evaluation_listenotes?evaluation_id=1" + } + ] + }, + }, + "saes": { + "SAE11": { + "id": 2, + "titre": "Se sensibiliser \u00e0 l'hygi\u00e8ne informatique et \u00e0 la cybers\u00e9curit\u00e9", + "code_apogee": null, + "url": "/ScoDoc/TAPI/Scolarite/Notes/moduleimpl_status?moduleimpl_id=2", + "moyenne": {}, + "evaluations": [] + }, + }, + "ues": { + "RT1.1": { + "id": 1, + "titre": "Administrer les r\u00e9seaux et l\u2019Internet", + "numero": 1, + "type": 0, + "color": "#B80004", + "competence": null, + "moyenne": { + "value": "08.50", + "min": "06.00", + "max": "16.50", + "moy": "11.31", + "rang": "12", + "total": 16 + }, + "bonus": "00.00", + "malus": "00.00", + "capitalise": null, + "ressources": { + "R101": { + "id": 1, + "coef": 12.0, + "moyenne": "12.00" + }, + }, + "saes": { + "SAE11": { + "id": 2, + "coef": 16.0, + "moyenne": "~" + }, + }, + "ECTS": { + "acquis": 0.0, + "total": 12.0 + } + }, + "semestre": { + "etapes": [], + "date_debut": "2021-09-01", + "date_fin": "2022-08-31", + "annee_universitaire": "2021 - 2022", + "numero": 1, + "inscription": "", + "groupes": [], + "absences": { + "injustifie": 1, + "total": 2 + }, + "ECTS": { + "acquis": 0, + "total": 30.0 + }, + "notes": { + "value": "10.60", + "min": "02.40", + "moy": "11.05", + "max": "17.40" + }, + "rang": { + "value": "10", + "total": 16 + } + } + } + ``` * **`etudiant_groups`** @@ -267,112 +645,589 @@ Tous les codes >= 400 indiquent que la requête n'a pas été traitée avec succ ## Programmes de formations * **`formations`** * **Méthode:** GET - * **Paramètres:** `formation_id` (_optionnel, si absent, liste toutes les formations_) - * **Routes:** `/ScoDoc/api/formations` **ou** `/ScoDoc/api/formations/` - * **Exemple d'utilisation:** `/ScoDoc/api/formations` **ou** `/ScoDoc/api/formations/1` + * **Routes:** `/ScoDoc/api/formations` + * **Exemple d'utilisation:** `/ScoDoc/api/formations` * **Résultat:** Liste des formations. - * **Exemple de résultat:** `[formation_1, formation_2, formation_3, ...]` - * TODO: détailler le contenu publié - - - - * **`formation_export`** - * **Méthode:** GET - * **Paramètres:** `formation_id`, `export_ids` (_par défaut "faux"_) - * **Routes:** `/ScoDoc/api/formations/formation_export/?format=&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:** -``` - { - "nom": "formation", - "UE": "ue", - "matieres": [ - "matiere_1": "maths", - "matiere_2": "anglais", - ... - ], - "modules": ... - } -``` - -### UE - * **`UEs`** - * **Méthode:** GET - * **Paramètres:** `dept`, `̀semestre` - * **Routes:** `/ScoDoc/api/departements//formations/programme/` - * **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 + ``` + [ + { + "id": 1, + "acronyme": "BUT R&T", + "titre_officiel": "Bachelor technologique r\u00e9seaux et t\u00e9l\u00e9communications", + "formation_code": "V1RET", + "code_specialite": null, + "dept_id": 1, + "titre": "BUT R&T", + "version": 1, + "type_parcours": 700, + "referentiel_competence_id": null, + "formation_id": 1 + }, + ... + ] + ``` + + * **`formations_by_id`** + * **Méthode:** GET + * **Paramètres:** `formation_id` + * **Routes:** `/formations/` + * **Exemple d'utilisation:** `/ScoDoc/api/formations/1` + * **Résultat:** Retourne une formation en fonction d'un id donné + * **Exemple de résultat:** + ``` + { + "id": 1, + "acronyme": "BUT R&T", + "titre_officiel": "Bachelor technologique réseaux et télécommunications", + "formation_code": "V1RET", + "code_specialite": null, + "dept_id": 1, + "titre": "BUT R&T", + "version": 1, + "type_parcours": 700, + "referentiel_competence_id": null, + "formation_id": 1 + } + ``` + * **`formation_export_by_formation_id`** + * **Méthode:** GET + * **Paramètres:** `formation_id`, `export_ids` (False par défaut) + * **Routes:** `/formations/formation_export/` + * **Exemple d'utilisation:** `/ScoDoc/api/formations/formation_export/1` + * **Résultat:** Retourne la formation, avec UE, matières, modules + * **Exemple de résultat:** + ``` + { + "id": 1, + "acronyme": "BUT R&T", + "titre_officiel": "Bachelor technologique r\u00e9seaux et t\u00e9l\u00e9communications", + "formation_code": "V1RET", + "code_specialite": null, + "dept_id": 1, + "titre": "BUT R&T", + "version": 1, + "type_parcours": 700, + "referentiel_competence_id": null, + "formation_id": 1, + "ue": [ + { + "acronyme": "RT1.1", + "numero": 1, + "titre": "Administrer les r\u00e9seaux et l\u2019Internet", + "type": 0, + "ue_code": "UCOD11", + "ects": 12.0, + "is_external": false, + "code_apogee": "", + "coefficient": 0.0, + "semestre_idx": 1, + "color": "#B80004", + "reference": 1, + "matiere": [ + { + "titre": "Administrer les r\u00e9seaux et l\u2019Internet", + "numero": 1, + "module": [ + { + "titre": "Initiation aux r\u00e9seaux informatiques", + "abbrev": "Init aux r\u00e9seaux informatiques", + "code": "R101", + "heures_cours": 0.0, + "heures_td": 0.0, + "heures_tp": 0.0, + "coefficient": 1.0, + "ects": "", + "semestre_id": 1, + "numero": 10, + "code_apogee": "", + "module_type": 2, + "coefficients": [ + { + "ue_reference": "1", + "coef": "12.0" + }, + { + "ue_reference": "2", + "coef": "4.0" + }, + { + "ue_reference": "3", + "coef": "4.0" + } + ] + }, + { + "titre": "Se sensibiliser \u00e0 l'hygi\u00e8ne informatique et \u00e0 la cybers\u00e9curit\u00e9", + "abbrev": "Hygi\u00e8ne informatique", + "code": "SAE11", + "heures_cours": 0.0, + "heures_td": 0.0, + "heures_tp": 0.0, + "coefficient": 1.0, + "ects": "", + "semestre_id": 1, + "numero": 10, + "code_apogee": "", + "module_type": 3, + "coefficients": [ + { + "ue_reference": "1", + "coef": "16.0" + } + ] + }, + ... + ] + }, + ... + ] + }, + ] + } + ``` - - - ### Semestres de formation Les sessions de formation (dénommées "semestres" même si elles durent une année ou un mois) sont représentées par les `formsemestre`. * **`formsemestre`** * **Méthode:** GET - * **Paramètres:** `formsemestre_id` ou `etape_apo`, `format`(json ou xml) - * **Routes:** `/ScoDoc/api/formations/formsemestre/`, `/ScoDoc/api/formsemestre/apo/` - * **Exemple d'utilisation:** `/ScoDoc/api/formations/formsemestre/12` - * **Résultat:** Informations sur le(s) formsemestre(s). + * **Paramètres:** `formsemestre_id` + * **Routes:** `/formsemestre/` + * **Exemple d'utilisation:** `/ScoDoc/api/formsemestre/1` + * **Résultat:** Retourne l'information sur le formsemestre correspondant au formsemestre_id * **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, - } -] -``` - -#### Note sur les identifiants de sessions -Le `session_id` peut être utilisé pour identifier de façon prévisible et -(presque) unique une session dans un établissement, ce qui est utile -notamment pour interfacer ScoDoc à d'autres logiciels (par exemple gestion d'emplois -du temps ou de services d'enseignement). Cet identifiant est constitué des -informations suivantes: - - * **Département** (RT, GEII, INFO...) (= paramètre `DeptName`, en majuscules) - * **Nom parcours:** BUT, LP, ... (défini au niveau du parcours dans ScoDoc = NAME) - * **Modalité:** FI, FC, FA - * **"Spécialité":** S1 (ou S1D pour les semestres décalés), ou le - `code_specialite` si pas de semestres. Le code spécialité est un champ - (libre) nouveau dans la "formation" (programme pédagogique). - * **Année:** année de début de l'année scolaire correspondante (2014 pour - une session appartenant à l'année scolaire 2014-2015, même si elle - commence en mars 2015). + ``` + { + "date_fin": "31/08/2022", + "resp_can_edit": false, + "dept_id": 1, + "etat": true, + "resp_can_change_ens": true, + "id": 1, + "modalite": "FI", + "ens_can_edit_eval": false, + "formation_id": 1, + "gestion_compensation": false, + "elt_sem_apo": null, + "semestre_id": 1, + "bul_hide_xml": false, + "elt_annee_apo": null, + "titre": "Semestre test", + "block_moyennes": false, + "scodoc7_id": null, + "date_debut": "01/09/2021", + "gestion_semestrielle": false, + "bul_bgcolor": "white", + "formsemestre_id": 1, + "titre_num": "Semestre test semestre 1", + "date_debut_iso": "2021-09-01", + "date_fin_iso": "2022-08-31", + "responsables": [] + } + ``` + * **`formsemestre_apo`** + * **Méthode:** GET + * **Paramètres:** `etape_apo` + * **Routes:** `/formsemestre/apo/` + * **Exemple d'utilisation:** `/ScoDoc/api/formsemestre/1` + * **Résultat:** Retourne les informations sur les formsemestres + * **Exemple de résultat:** + ``` + { + "date_fin": "31/08/2022", + "resp_can_edit": false, + "dept_id": 1, + "etat": true, + "resp_can_change_ens": true, + "id": 1, + "modalite": "FI", + "ens_can_edit_eval": false, + "formation_id": 1, + "gestion_compensation": false, + "elt_sem_apo": null, + "semestre_id": 1, + "bul_hide_xml": false, + "elt_annee_apo": null, + "titre": "Semestre test", + "block_moyennes": false, + "scodoc7_id": null, + "date_debut": "01/09/2021", + "gestion_semestrielle": false, + "bul_bgcolor": "white", + "formsemestre_id": 1, + "titre_num": "Semestre test semestre 1", + "date_debut_iso": "2021-09-01", + "date_fin_iso": "2022-08-31", + "responsables": [] + } + ``` + -**Exemple:** `INFO-DUT-FI-S1-2014` équivaut à un semestre S1 d'un DUT informatique de 2014 en formation initiale (FI) + * **`etudiant_bulletin`** + * **Méthode:** GET + * **Paramètres:** `formsemestre_id`, `dept`, `etudid`, `nip`, `ine` + * **Routes:** `/formsemestre//departements//etudiant/etudid//bulletin` ou `/formsemestre//departements//etudiant/nip//bulletin` ou `/formsemestre//departements//etudiant/ine//bulletin` + * **Exemple d'utilisation:** `/ScoDoc/api/formsemestre/1/departements/MMI/etudiant/etudid/1/bulletin` + * **Résultat:** Retourne le bulletin de note d'un étudiant + * **Exemple de résultat:** + ``` + { + "etudid":1, + "formsemestre_id":1, + "date":"2022-04-27T10:44:47.448094", + "publie":true, + "etapes":[ + + ], + "etudiant":{ + "etudid":1, + "code_nip":"1", + "code_ine":"1", + "nom":"COSTA", + "prenom":"Sacha", + "civilite":"", + "photo_url":"/ScoDoc/TAPI/Scolarite/get_photo_image?etudid=1&size=small", + "email":"SACHA.COSTA@example.com", + "emailperso":"", + "sexe":"" + }, + "note":{ + "value":"10.60", + "min":"-", + "max":"-", + "moy":"-" + }, + "rang":{ + "value":"10", + "ninscrits":16 + }, + "rang_group":[ + { + "group_type":"TD", + "group_name":"", + "value":"", + "ninscrits":"" + } + ], + "note_max":{ + "value":20 + }, + "bonus_sport_culture":{ + "value":0.0 + }, + "ue":[ + { + "id":1, + "numero":"1", + "acronyme":"RT1.1", + "titre":"Administrer les r\u00e9seaux et l\u2019Internet", + "note":{ + "value":"08.50", + "min":"06.00", + "max":"16.50", + "moy":"11.31" + }, + "rang":"12", + "effectif":16, + "ects":"12", + "code_apogee":"", + "module":[ + { + "id":1, + "code":"R101", + "coefficient":1.0, + "numero":10, + "titre":"Initiation aux r\u00e9seaux informatiques", + "abbrev":"Init aux r\u00e9seaux informatiques", + "note":{ + "value":"12.00", + "moy":"-", + "max":"-", + "min":"-", + "nb_notes":"-", + "nb_missing":"-", + "nb_valid_evals":"-" + }, + "code_apogee":"", + "evaluation":[ + { + "jour":"2022-04-20", + "heure_debut":"08:00:00", + "heure_fin":"09:00:00", + "coefficient":1.0, + "evaluation_type":0, + "evaluation_id":1, + "description":"eval1", + "note":"12.00" + } + ] + }, + ... + ] + } + ], + "ue_capitalisee":[], + "absences":{ + "nbabs":2, + "nbabsjust":1 + }, + "appreciation":[] + } + ``` + + + + * **`bulletins`** + * **Méthode:** GET + * **Paramètres:** `formsemestre_id` + * **Routes:** `/formsemestre//bulletins` + * **Exemple d'utilisation:** `/ScoDoc/api/formsemestre/1/bulletins` + * **Résultat:** Retourne les bulletins d'un formsemestre donné + * **Exemple de résultat:** + ``` + [ + { + "version": "0", + "type": "BUT", + "date": "2022-04-27T07:18:16.450634Z", + "publie": true, + "etudiant": { + "civilite": "X", + "code_ine": "1", + "code_nip": "1", + "date_naissance": "", + "email": "SACHA.COSTA@example.com", + "emailperso": "", + "etudid": 1, + "nom": "COSTA", + "prenom": "SACHA", + "nomprenom": "Sacha COSTA", + "lieu_naissance": "", + "dept_naissance": "", + "nationalite": "", + "boursier": "", + "fiche_url": "/ScoDoc/TAPI/Scolarite/ficheEtud?etudid=1", + "photo_url": "/ScoDoc/TAPI/Scolarite/get_photo_image?etudid=1&size=small", + "id": 1, + "codepostaldomicile": "", + "paysdomicile": "", + "telephonemobile": "", + "typeadresse": "domicile", + "domicile": "", + "villedomicile": "", + "telephone": "", + "fax": "", + "description": "" + }, + "formation": { + "id": 1, + "acronyme": "BUT R&T", + "titre_officiel": "Bachelor technologique r\u00e9seaux et t\u00e9l\u00e9communications", + "titre": "BUT R&T" + }, + "formsemestre_id": 1, + "etat_inscription": "I", + "options": { + "show_abs": true, + "show_abs_modules": false, + "show_ects": true, + "show_codemodules": false, + "show_matieres": false, + "show_rangs": true, + "show_ue_rangs": true, + "show_mod_rangs": true, + "show_moypromo": false, + "show_minmax": false, + "show_minmax_mod": false, + "show_minmax_eval": false, + "show_coef": true, + "show_ue_cap_details": false, + "show_ue_cap_current": true, + "show_temporary": true, + "temporary_txt": "Provisoire", + "show_uevalid": true, + "show_date_inscr": true + }, + "ressources": { + "R101": { + "id": 1, + "titre": "Initiation aux r\u00e9seaux informatiques", + "code_apogee": null, + "url": "/ScoDoc/TAPI/Scolarite/Notes/moduleimpl_status?moduleimpl_id=1", + "moyenne": {}, + "evaluations": [ + { + "id": 1, + "description": "eval1", + "date": "2022-04-20", + "heure_debut": "08:00", + "heure_fin": "09:00", + "coef": "01.00", + "poids": { + "RT1.1": 1.0, + }, + "note": { + "value": "12.00", + "min": "00.00", + "max": "18.00", + "moy": "10.88" + }, + "url": "/ScoDoc/TAPI/Scolarite/Notes/evaluation_listenotes?evaluation_id=1" + } + ] + }, + }, + "saes": { + "SAE11": { + "id": 2, + "titre": "Se sensibiliser \u00e0 l'hygi\u00e8ne informatique et \u00e0 la cybers\u00e9curit\u00e9", + "code_apogee": null, + "url": "/ScoDoc/TAPI/Scolarite/Notes/moduleimpl_status?moduleimpl_id=2", + "moyenne": {}, + "evaluations": [] + }, + }, + "ues": { + "RT1.1": { + "id": 1, + "titre": "Administrer les r\u00e9seaux et l\u2019Internet", + "numero": 1, + "type": 0, + "color": "#B80004", + "competence": null, + "moyenne": { + "value": "08.50", + "min": "06.00", + "max": "16.50", + "moy": "11.31", + "rang": "12", + "total": 16 + }, + "bonus": "00.00", + "malus": "00.00", + "capitalise": null, + "ressources": { + "R101": { + "id": 1, + "coef": 12.0, + "moyenne": "12.00" + }, + }, + "saes": { + "SAE11": { + "id": 2, + "coef": 16.0, + "moyenne": "~" + }, + }, + "ECTS": { + "acquis": 0.0, + "total": 12.0 + } + }, + "semestre": { + "etapes": [], + "date_debut": "2021-09-01", + "date_fin": "2022-08-31", + "annee_universitaire": "2021 - 2022", + "numero": 1, + "inscription": "", + "groupes": [], + "absences": { + "injustifie": 1, + "total": 2 + }, + "ECTS": { + "acquis": 0, + "total": 30.0 + }, + "notes": { + "value": "10.60", + "min": "02.40", + "moy": "11.05", + "max": "17.40" + }, + "rang": { + "value": "10", + "total": 16 + } + } + }, + ... + ] + ``` + + + + * **`jury`** + * **Méthode:** GET + * **Paramètres:** `formsemestre_id` + * **Routes:** `/formsemestre//jury` + * **Exemple d'utilisation:** `/ScoDoc/api/formsemestre/1/jury` + * **Résultat:** Retourne le récapitulatif des décisions jury + * **Exemple de résultat:** + ``` + XXX A COMPLETER + ``` ### Modules de formation Les moduleimpl sont les modules d'un semestre, ou les ressources, ou les SAÉs. On peut récupérer soit un module par son id, soit la listes des modules d'un semestre. - * **`moduleimpl`** + * **`moduleimpls`** * **Méthode:** GET - * **Paramètres**: `formsemestre_id` ou `moduleimpl_id` - * **Routes:** `/ScoDoc/api/formations/moduleimpl/` **ou** `/ScoDoc/api/formations/moduleimpl//formsemestre/` - * **Résultat:** liste de moduleimpl - * **Exemple de résultat:** - TODO - - - - + * **Paramètres:** `moduleimpl_id` + * **Routes:** `/formations/moduleimpl/` + * **Exemple d'utilisation:** `/ScoDoc/api/formations/moduleimpl/1` + * **Résultat:** Retourne la liste des moduleimpl + * **Exemple de résultat:** + ``` + XXX A COMPLETER + ``` + + * **`moduleimpls_sem`** + * **Méthode:** GET + * **Paramètres:** `moduleimpl_id` + * **Routes:** `/formations/moduleimpl/formsemestre//liste` + * **Exemple d'utilisation:** `/ScoDoc/api/formations/moduleimpl/formsemestre/1/liste` + * **Résultat:** Retourne la liste des moduleimpl d'un semestre + * **Exemple de résultat:** + ``` + [ + { + "id": 1, + "formsemestre_id": 1, + "computation_expr": null, + "module_id": 1, + "responsable_id": 2, + "module": { + "heures_tp": 0.0, + "code_apogee": "", + "titre": "Initiation aux r\u00e9seaux informatiques", + "coefficient": 1.0, + "module_type": 2, + "id": 1, + "ects": null, + "abbrev": "Init aux r\u00e9seaux informatiques", + "ue_id": 1, + "code": "R101", + "formation_id": 1, + "heures_cours": 0.0, + "matiere_id": 1, + "heures_td": 0.0, + "semestre_id": 1, + "numero": 10, + "module_id": 1 + }, + "moduleimpl_id": 1, + "ens": [] + }, + ... + ] + ``` ### Groupes et partitions @@ -386,164 +1241,154 @@ d'un nombre quelconque de groupes d'étudiants. * **Routes:** `/ScoDoc/api/partitions/` * **Exemple d'utilisation:** `/ScoDoc/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 - } - ] - } -] -``` + * **Exemple de résultat:** + ``` + [ + { + "partition_id": 2, + "id": 2, + "formsemestre_id": 1, + "partition_name": "TD", + "numero": 1, + "bul_show_rank": false, + "show_in_lists": true + }, + { + "partition_id": 1, + "id": 1, + "formsemestre_id": 1, + "partition_name": null, + "numero": 0, + "bul_show_rank": false, + "show_in_lists": true + } + ] + ``` + + * **`etud_in_group`** + * **Méthode: GET** + * **Paramètres:** `group_id`, `etat` + * **Routes:** `/partitions/groups/` ou `/partitions/groups//etat/` + * **Exemple d'utilisation:** `/ScoDoc/api/partitions/groups/1` + * **Résultat:** La liste de toutes les partitions d'un formsemestre. + * **Exemple de résultat:** + ``` + [ + { + "etudid": 10, + "id": 10, + "dept_id": 1, + "nom": "BOUTET", + "prenom": "Marguerite", + "nom_usuel": "", + "civilite": "F", + "date_naissance": null, + "lieu_naissance": null, + "dept_naissance": null, + "nationalite": null, + "statut": null, + "boursier": null, + "photo_filename": null, + "code_nip": "10", + "code_ine": "10", + "scodoc7_id": null, + "email": "MARGUERITE.BOUTET@example.com", + "emailperso": null, + "domicile": null, + "codepostaldomicile": null, + "villedomicile": null, + "paysdomicile": null, + "telephone": null, + "telephonemobile": null, + "fax": null, + "typeadresse": "domicile", + "description": null, + "group_id": 1, + "etat": "I", + "civilite_str": "Mme", + "nom_disp": "BOUTET", + "nomprenom": "Mme Marguerite BOUTET", + "ne": "e", + "email_default": "MARGUERITE.BOUTET@example.com" + }, + ... + ] + ``` + - - * **`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:** `/ScoDoc/api/partitions/formsemestre//groups/group_ids?with_codes=&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=True`_) -``` - - - - - - - - - - - - - - - - - - - - - - -``` - - * **Exemple de résultat au format JSON:** -``` -[ - { - "etat":"I", - "emailperso":null, - "prenom":"Dalil", - "nom_disp":"CLINTO",? - "email":"xxx@example.com", - "62029":"A", - "62032":null, - "62031":"G1", - "62030":"A1" - }, - { - "etat":"I", - "emailperso":null, - "prenom":"Georges", - "nom_disp":"BUSH", - "email":"bush@example.com", - "62029":"A", - "62032":null, - "62031":"G1", - "62030":"A1" - }, - ... -] -``` - - * **`set_groups`** * **Méthode:** POST - * **Paramètres:** `partition_id`, `groups`, `groups_to_delete`, `groups_to_create` - * **Routes:** `/ScoDoc/api/partitions/set_groups?partition_id=&groups=&groups_to_delete=&groups_to_create=` - * **Exemple d'utilisation:** `/ScoDoc/api/partitions/set_groups?partition_id=65&groups=77&groups_to_delete=8&groups_to_create=4` + * **Paramètres:** `partition_id`, `groups_lists`, `groups_to_delete`, `groups_to_create` + * **Routes:** `/partitions/set_groups/partition//groups//delete//create/` + * **Exemple d'utilisation:** `/ScoDoc/api/partitions/set_groups/partition/1/groups/"A COMPLETER"/delete/"A COMPLETER"/create/"A COMPLETER"` * **Résultat:** Set les groups. - - TODO: à changer, passer les paramètres dans le corps de la requête - + ### Bulletins de notes * **`evaluations`** * **Méthode:** GET * **Paramètres:** `moduleimpl_id` - * **Routes:** `/ScoDoc/api/evaluations/` - * **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, ...]` + * **Routes:** `/evaluations/` + * **Exemple d'utilisation:** `/ScoDoc/api/evaluations/1` + * **Résultat:** Retourne la liste des évaluations à partir de l'id d'un moduleimpl + * **Exemple de résultat:** + ``` + [ + { + "moduleimpl_id": 1, + "jour": "20/04/2022", + "heure_debut": "08h00", + "description": "eval1", + "coefficient": 1.0, + "publish_incomplete": false, + "numero": 0, + "id": 1, + "heure_fin": "09h00", + "note_max": 20.0, + "visibulletin": true, + "evaluation_type": 0, + "evaluation_id": 1, + "jouriso": "2022-04-20", + "duree": "1h", + "descrheure": " de 08h00 \u00e0 09h00", + "matin": 1, + "apresmidi": 0 + }, + ... + ] + ``` * **`evaluation_notes`** * **Méthode**: GET * **Paramètres**: `evaluation_id` - * **Routes:** `/ScoDoc/api/evaluations/eval_notes/` - * **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:** -``` -[ - { - "84": "13", - "85": "15", - "86": "9", - ... - } -] -``` - - - * **`evaluation_set_notes`** - * **Méthode:** POST - * **Paramètres:** `eval_id`, `etudid`, `note` - * **Routes:** `/ScoDoc/api/evaluations/eval_set_notes?eval_id=&etudid=¬e=` - * **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. + * **Routes:** `/evaluations/eval_notes/` + * **Exemple d'utilisation:** `/ScoDoc/api/evaluations/eval_notes/1` + * **Résultat:** Retourne la liste des notes à partir de l'id d'une évaluation donnée + * **Exemple de résultat:** + ``` + { + "1": { + "id": 1, + "etudid": 10, + "evaluation_id": 1, + "value": 15.0, + "comment": "", + "date": "Wed, 20 Apr 2022 06:49:05 GMT", + "uid": 2 + }, + "2": { + "id": 2, + "etudid": 1, + "evaluation_id": 1, + "value": 12.0, + "comment": "", + "date": "Wed, 20 Apr 2022 06:49:06 GMT", + "uid": 2 + }, + ... + } + ``` ### Absences @@ -552,58 +1397,99 @@ 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:** `/ScoDoc/api/absences/` - * **Exemple d'utilisation:** `/ScoDoc/api/absences/54` - * **Résultat:** Liste des absences d'un étudiant donné. + * **Paramètres:** `etudid`, `nip`, `ine` + * **Routes:** `/absences/etudid/` ou `/absences/nip/` ou `/absences/ine/` + * **Exemple d'utilisation:** `/ScoDoc/api/absences/ine/1` + * **Résultat:** Retourne la 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_). - - - * **`abs_signale`** - * **Méthode:** POST - * **Paramètres:** `date_debut`, `date_fin`, `module_impl_id=None`, `demi_journee=2`, `estjust=False`, `description`, `etudid` - * **Body de la requête:** `date_debut=date_debut&date_fin=date_fin&demi_journee=demi_journee&description=description&etudid=` - * **Exemple d'utilisation:** `date_debut=2015-02-01&date_fin=2015-02-03&demi_journee=4&description=""&etudid=874` - * **Résultat:** *html* - - - * **`abs_annule`** - * **Méthode:** POST - * **Paramètres:** `date_debut`, `date_fin`, `demi_journee`, `etudid` - * **Body de la requête:** `date_debut=date_debut&date_fin=date_fin&demi_journee=demi_journee&etudid=` - * **Exemple d'utilisation:** `date_debut=2004-05-03&date_fin=2004-06-07&demi_journee=2&etudid=451` - * **Résultat:** *html* - - - * **`abs_annule_justif`** - * **Méthode:** POST - * **Paramètres:** `context`, `date_debut`, `date_fin`, `demi_journee` - * **Body de la requête:** `context=context&date_debut=date_debut&date_fin=date_fin&demi_journee=demi_journee` - * **Exemple d'utilisation:** `context=malade&date_debut=2020-01-05&date_fin=2020-01-06&demi_journee=1` - * **Résultat:** *html* + ``` + [ + { + "jour": "2022-04-15", + "matin": true, + "estabs": true, + "estjust": true, + "description": "", + "begin": "2022-04-15 08:00:00", + "end": "2022-04-15 11:59:59" + }, + { + "jour": "2022-04-15", + "matin": false, + "estabs": true, + "estjust": false, + "description": "", + "begin": "2022-04-15 12:00:00", + "end": "2022-04-15 17:59:59" + } + ] + ``` + + * **`absences_just`** + * **Méthode:** GET + * **Paramètres:** `etudid`, `nip`, `ine` + * **Routes:** `/absences/etudid//just` ou `/absences/nip//just` ou `/absences/ine//just` + * **Exemple d'utilisation:** `/ScoDoc/api/absences/ine/1/just` + * **Résultat:** Retourne la liste des absences justifiées d'un étudiant donné + * **Exemple de résultat:** + ``` + [ + { + "jour": "2022-04-15", + "matin": true, + "estabs": true, + "estjust": true, + "description": "", + "begin": "2022-04-15 08:00:00", + "end": "2022-04-15 11:59:59" + }, + { + "jour": "2022-04-15", + "matin": false, + "estabs": true, + "estjust": true, + "description": "", + "begin": "2022-04-15 12:00:00", + "end": "2022-04-15 17:59:59" + } + ] + ``` * **`abs_groupe_etat`** * **Méthode:** GET * **Paramètres:** `group_ids`, `date_debut`, `date_fin`, `with_boursier=True`, `format=html` - * **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` + * **Routes:** `/absences/abs_group_etat/` ou `/absences/abs_group_etat/group_id//date_debut//date_fin/` + * **Exemple d'utilisation:** `/ScoDoc/api/absences/abs_group_etat/1` * **Résultat:** Liste des absences d'un ou plusieurs groupes entre deux dates. - * **Exemple de résultat:** si `format="json"` cela donne: + * **Exemple de résultat:** + ``` + XXX A COMPLETER ``` - [ - { - "boursier": "N", - "nbabs": "9", - "nbabsjust": "2", - "nbabsnonjust": "7", - "nbjustifs_noabs": "0", - "nomprenom": "Mme Poisson Dodouce", - "etudid": "12345" - }, - ... - ] + + +### Jury + + * **`jury_preparation`** + * **Méthode:** GET + * **Paramètres:** `formsemestre_id` + * **Routes:** `/jury/formsemestre//preparation_jury` + * **Exemple d'utilisation:** `/ScoDoc/api/jury/formsemestre/1/preparation_jury` + * **Résultat:** Retourne la feuille de préparation du jury + * **Exemple de résultat:** + ``` + XXX A COMPLETER + ``` + + * **`jury_decisions`** + * **Méthode:** GET + * **Paramètres:** `formsemestre_id` + * **Routes:** `/jury/formsemestre//decisions_jury` + * **Exemple d'utilisation:** `/ScoDoc/api/jury/formsemestre/1/decisions_jury` + * **Résultat:** Retourne les décisions du jury suivant un formsemestre donné + * **Exemple de résultat:** + ``` + XXX A COMPLETER ``` ### Logos