From 43b72dfe9af55f8cfecc3f0c9950c331f4616772 Mon Sep 17 00:00:00 2001 From: Jean-Marie PLACE Date: Tue, 2 Aug 2022 20:58:45 +0200 Subject: [PATCH] ajouts exemples --- docs/ScoDoc9API.md | 588 ++++++------------ docs/img/API_Chart.odg | Bin 26884 -> 26887 bytes .../sample_formsemestre-bulletins.json.md | 343 ++++++---- .../sample_formsemestre-etat_evals.json.md | 88 +++ ...mple_formsemestre-partition-create.json.md | 20 + ...ample_formsemestre-partition-order.json.md | 40 ++ docs/samples/sample_group-delete.json.md | 11 + docs/samples/sample_group-edit.json.md | 25 + .../sample_group-etudiants-query.json.md | 19 + docs/samples/sample_group-etudiants.json.md | 30 + .../sample_group-remove_etudiant.json.md | 11 + .../samples/sample_group-set_etudiant.json.md | 11 + docs/samples/sample_partition-delete.json.md | 9 + docs/samples/sample_partition-edit.json.md | 20 + .../sample_partition-groups-order.json.md | 64 ++ .../sample_partition-remove_etudiant.json.md | 11 + 16 files changed, 763 insertions(+), 527 deletions(-) create mode 100644 docs/samples/sample_formsemestre-etat_evals.json.md create mode 100644 docs/samples/sample_formsemestre-partition-create.json.md create mode 100644 docs/samples/sample_formsemestre-partition-order.json.md create mode 100644 docs/samples/sample_group-delete.json.md create mode 100644 docs/samples/sample_group-edit.json.md create mode 100644 docs/samples/sample_group-etudiants-query.json.md create mode 100644 docs/samples/sample_group-etudiants.json.md create mode 100644 docs/samples/sample_group-remove_etudiant.json.md create mode 100644 docs/samples/sample_group-set_etudiant.json.md create mode 100644 docs/samples/sample_partition-delete.json.md create mode 100644 docs/samples/sample_partition-edit.json.md create mode 100644 docs/samples/sample_partition-groups-order.json.md create mode 100644 docs/samples/sample_partition-remove_etudiant.json.md diff --git a/docs/ScoDoc9API.md b/docs/ScoDoc9API.md index 82eeebaf..b723a459 100644 --- a/docs/ScoDoc9API.md +++ b/docs/ScoDoc9API.md @@ -161,6 +161,20 @@ par le serveur ScoDoc. * [500](https://developer.mozilla.org/fr/docs/Web/HTTP/Status/500) : Erreur inconnue côté serveur. +[test](img/API_Chart.svg) + +## Règles générales + +* une route s'écrit comme une suite de noms et d'identifiants +* les noms token, departement, formation, formsemestre, groupe, etudiant, bulletin, absence, logo, programme, évaluation, resultat, decision désigne des types d'objets. +* les noms (verbes ou groupes verbaux): set_etudiant, remove_etudiant, query, create, delete, edit, order sont des actions +* les noms restants (ids, courant, long, ...) sont des options + Les autre noms sont des options ou des actions +* le dernier nom apparaissant sur une route donne le type d'objet renvoyé. ce nom peut apparaître au singulier ou au pluriel + * Au singulier un seul objet est renvoyé, si aucun objet n'est trouvé, retourne un 404 + * Au pluriel une collection d'objets est renvoyée, si aucun obket n'est trouvé, retourne une collection vide +* un type d'objet au singulier est généralement suivi immédiatement de son identifiant (unique). Exception: pour un étudiant, on peut également utiliser le NIP ou l'INE (qui ne sont pas uniques) + ## Départements #### **departements_ids** @@ -256,7 +270,7 @@ par le serveur ScoDoc. * `/departement//formsemestres_courants` * **Exemple d'utilisation:** `/api/departement/MMI/formsemestres_courants` * **Résultat:** Liste des formsemestres en cours d'un département donné. -* **Exemple de résultat:** [formsemestre-courants.json](samples/sample_formsemestres-courants.json.md) +* **Exemple de résultat:** [departement-formsemestres-courants.json](samples/sample_departement-formsemestres_courants.json.md) ### **Semestres** @@ -273,7 +287,7 @@ par le serveur ScoDoc. * **Méthode:** GET * **Paramètres:** aucun -* ** Query string:** `etape_apo`, `annee_scolaire`, `dept_acronym`, `dept_id` +* **Query string:** `etape_apo`, `annee_scolaire`, `dept_acronym`, `dept_id` * **Route:** `/formsemestres/query * **Exemple d'utilisation:** `/api/formsemestres/query?etape_apo=V7HU1&annee_scolaire=2021` * **Résultat:** Données d'un formsemestre spécifié par son id. Si plusieurs paramètres sont donnés, c'est la conjonction (ET) des critères qui est recherchée. Si aucun formsemestre ne satisfait la requ^te, une liste vide est retournée @@ -316,7 +330,7 @@ par le serveur ScoDoc. * **Route:** `/formsemestres/etat_evals` * **Exemple d'utilisation:** `/api/formsemestre/1/etat_evals` * **Résultat:** informations sur les évaluations d'un formsemestre spécifié par son id. -* **Exemple de résultat:** [formsemestre-etat-eval.json](samples/sample_formsemestre-etat-eval.json.md) +* **Exemple de résultat:** [formsemestre-etat-eval.json](samples/sample_formsemestre-etat_evals.json.md) #### **Résultats d'un formsemestre** @@ -325,7 +339,7 @@ par le serveur ScoDoc. * **Query string: `format` * **Route:** `/formsemestres/resultats` * **Exemple d'utilisation:** `/api/formsemestre/1/resultats` -* **Résultat:** [formsemestre-etat-eval.json](samples/sample_formsemestre-resultats.json.md) +* **Résultat:** [formsemestre-resultats.json](samples/sample_formsemestre-resultats.json.md) Récapitulatif par étudiant (état, groupe(s), moyennes d'UEs et de modules pour un formsemestre spécifié par son id. @@ -336,17 +350,17 @@ mais pas JSON compliant à cause des _NaN_. ## Étudiants -#### **`etudiants_courant`** +#### **`etudiants_courants`** * **Méthode:** GET * **Routes:** - * `/etudiants/courant` - * `/etudiants/courant/long` -* **Exemple d'utilisation:** `/api/etudiants/courant` + * `/etudiants/courants` + * `/etudiants/courants/long` +* **Exemple d'utilisation:** `/api/etudiants/courants` * **Résultat:** Liste des étudiants inscrits dans un formsemestre actuellement en cours. Avec `/long`, donne tous les attributs de l'étudiants (plus lent). -* **Exemple de résultat:** [etudiants-courant.json](samples/sample_etudiants-courant.json.md) +* **Exemple de résultat:** [etudiants-courants.json](samples/sample_etudiants-courants.json.md) #### **`etudiant`** @@ -469,7 +483,7 @@ mais pas JSON compliant à cause des _NaN_. * **Exemple d'utilisation:** `/ScoDoc/api/formations` * **Résultat:** Retourne la liste de toutes les formations (tous départements) - + * **Exemple de résultat:** [formations.json](samples/sample_formations.json.md) ### Export programme #### **`formation export`** @@ -481,9 +495,7 @@ mais pas JSON compliant à cause des _NaN_. * `/formation/export//with_ids` * **Exemple d'utilisation:** `/ScoDoc/api/formation/formation_export/1` * **Résultat:** Retourne la formation, avec UE, matières, modules - * **Exemple de résultat:** - -#### Référentiel de compétences [formation-export.json](samples/sample_formation-export.json.md) + * **Exemple de résultat:** [formation-export.json](samples/sample_formation-export.json.md) #### **`referentiel_competences`** @@ -492,7 +504,8 @@ mais pas JSON compliant à cause des _NaN_. * **Routes:** `/formation//referentiel_competences` * **Exemple d'utilisation:** `api/formation/1/referentiel_competences` * **Résultat:** Le référentiel de compétences d'une formation donnée (json). (_pas toujours présent_) - + * **Exemple de résultat:** [formation-referentiel_competences.json](samples/sample_formation-referentiel_competences.json.md) + * XXX obtenir la liste des référentiels ? ## Formsemestres @@ -591,179 +604,7 @@ des informations suivantes: * **Routes:** `/formsemestre//bulletins` * **Exemple d'utilisation:** `/ScoDoc/api/formsemestre/1/bulletins` * **Résultat:** tous les bulletins d'un formsemestre. - * **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éseaux et télécommunications", - "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éseaux 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 - }, - "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 à l'hygiène informatique et à la cybersécurité", - "code_apogee": null, - "url": "/ScoDoc/TAPI/Scolarite/Notes/moduleimpl_status?moduleimpl_id=2", - "moyenne": {}, - "evaluations": [] - } - }, - "ues": { - "RT1.1": { - "id": 1, - "titre": "Administrer les réseaux et l’Internet", - "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, - "moyenne": "12.00" - } - }, - "saes": { - "SAE11": { - "id": 2, - "coef": 16, - "moyenne": "~" - } - }, - "ECTS": { - "acquis": 0, - "total": 12 - } - }, - "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 - }, - "notes": { - "value": "10.60", - "min": "02.40", - "moy": "11.05", - "max": "17.40" - }, - "rang": { - "value": "10", - "total": 16 - } - } - } - } - ] - ``` + * **[Exemple de résultat](samples/sample_formsemestre-bulletins.json.md)** #### **etat_evals d'un formsemestre** @@ -772,56 +613,8 @@ des informations suivantes: * **Routes:** `/formsemestre//etat_evals` * **Exemple d'utilisation:** `/ScoDoc/api/formsemestre/1/etat_evals` * **Résultat:** Retourne les informations sur l'état des évaluations d'un semestre donné - * **Exemple de résultat:** - ``` - { - "RT1.1": [ - { - "id": 1, - "titre": "Initiation aux réseaux informatiques", - "evaluations": [ - { - "id": 1, - "description": null, - "datetime_epreuve": null, - "heure_fin": "09:00:00", - "comptee": "oui", - "inscrits": 16, - "manquantes": 0, - "ABS": 0, - "ATT": 0, - "EXC": 0, - "saisie_notes": { - "datetime_debut": "2021-09-11T00:00:00+02:00", - "datetime_fin": "2022-08-25T00:00:00+02:00", - "datetime_mediane": "2022-03-19T00:00:00+01:00" - } - }, - { - "id": 22, - "description": null, - "datetime_epreuve": "2021-08-11T00:00:00+02:00", - "heure_fin": "08:00:00", - "comptee": "oui", - "inscrits": 16, - "manquantes": 0, - "ABS": 0, - "ATT": 0, - "EXC": 0, - "saisie_notes": { - "datetime_debut": "2021-09-11T00:00:00+02:00", - "datetime_fin": "2022-08-25T00:00:00+02:00", - "datetime_mediane": "2022-03-19T00:00:00+01:00" - } - }, - ] - }, - ] - } - ``` + * **Exemple de résultat:** [formsemestre-etat_evals.json](samples/sample_formsemestre-etat_evals.json.md) - - #### **`jury`** (**non implémentée**) * **Méthode:** GET @@ -843,66 +636,7 @@ des informations suivantes: * **Routes:** `/formsemestre//programme` * **Exemple d'utilisation:** `/ScoDoc/api/formsemestre/1/programme` * **Résultat:** Retourne la liste des UEs, modules, ressources et SAE d'un semestre. - * **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": [ - { - "ens": [ 10, 18 ], - "formsemestre_id": 1, - "id": 15, - "module": { - "abbrev": "Programmer", - "code": "SAE15", - "code_apogee": "V7GOP", - "coefficient": 1.0, - "formation_id": 1, - "heures_cours": 0.0, - "heures_td": 0.0, - "heures_tp": 0.0, - "id": 15, - "matiere_id": 3, - "module_id": 15, - "module_type": 3, - "numero": 50, - "semestre_id": 1, - "titre": "Programmer en Python", - "ue_id": 3 - }, - "module_id": 15, - "moduleimpl_id": 15, - "responsable_id": 2 - }, - ... - ], - "saes": [ - { - ... - }, - ... - ], - "modules" : [ ... les modules qui ne sont ni des SAEs ni des ressources ... ] - } - ``` + * **Exemple de résultat:** [formsemestre-programme.json](samples/sample_formsemestre-programme.json.md) #### Module d'un formsemestre @@ -914,40 +648,10 @@ responsable et ses enseignants). * **Méthode:** GET * **Paramètres:** `moduleimpl_id` - * **Routes:** `/formation/moduleimpl/` + * **Routes:** `/moduleimpl/` * **Exemple d'utilisation:** `/ScoDoc/api/formation/moduleimpl/1` * **Résultat:** Retourne la liste des moduleimpl - * **Exemple de résultat:** - ``` - { - "id": 1, - "formsemestre_id": 1, - "computation_expr": null, - "module_id": 1, - "responsable_id": 2, - "moduleimpl_id": 1, - "ens": [], - "module": { - "heures_tp": 0, - "code_apogee": "", - "titre": "Initiation aux réseaux informatiques", - "coefficient": 1, - "module_type": 2, - "id": 1, - "ects": null, - "abbrev": "Init aux réseaux informatiques", - "ue_id": 1, - "code": "R101", - "formation_id": 1, - "heures_cours": 0, - "matiere_id": 1, - "heures_td": 0, - "semestre_id": 1, - "numero": 10, - "module_id": 1 - } - } - ``` + * **Exemple de résultat:** [moduleimpl.json](samples/sample_moduleimpl.json.md) ### Groupes et partitions @@ -955,88 +659,160 @@ L'ensemble des étudiants d'un semestre peut être réparti selon une ou plusieurs partitions (types de groupes). Chaque partition est constituée d'un nombre quelconque de groupes d'étudiants. +#### **`partitions`** + +* **Méthode: GET** +* **Paramètres:** `formsemestre_id` +* **Routes:** `/formsemestre//partitions` +* **Exemple d'utilisation:** `/ScoDoc/api/formsemestre/911/partitions` +* **Résultat:** La liste de toutes les partitions d'un formsemestre. +* **Exemple de résultat:** [formsemestre-partitions.json](samples/sample_formsemestre-partitions.json.md) + #### **`partition`** - * **Méthode: GET** - * **Paramètres:** `formsemestre_id` - * **Routes:** `/partitions/` - * **Exemple d'utilisation:** `/ScoDoc/api/partition/48` - * **Résultat:** La liste de toutes les partitions d'un formsemestre. - * **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 - } - ] - ``` - -#### **`groups`** +* **Méthode: GET** +* **Paramètres:** `partition_id` +* **Routes:** `/partition/` +* **Exemple d'utilisation:** `/ScoDoc/api/partition/1963` +* **Résultat:** La description d'une partition (y compris la liste de ses groupes). +* **Exemple de résultat:** [partition.json](samples/sample_partition.json.md) - * **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:** Retourne la liste des étudiants dans un groupe. - * **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" - } - ] - ``` +#### **`partition-edit`** + +* **Méthode: POST** +* **Paramètres:** `partition_id` +* **Data:** `{ partition_name : }` +* **Routes:** `/partition//edit` +* **Exemple d'utilisation:** `/ScoDoc/api/partition/2047/edit` +>`{ "partition_name" : "PART4" }` +* **Résultat:** Renomme une partition +* **[Exemple de résultat](samples/sample_partition-edit.json.md) + +#### **`partition-delete`** + +* **Méthode: POST** +* **Paramètres:** `partition_id` +* **Routes:** `/partition//delete` +* **Exemple d'utilisation:** `/ScoDoc/api/partition/2047/delete` +* **Résultat:** Supprime une partition. +* **[Exemple de résultat](samples/sample_partition-delete.json.md) + +#### **`formsemestre-partition-create`** + +* **Méthode: POST** +* **Paramètres:** `formsemestre_id` +* **Data:** `{ "partition_name" : }` +* **Routes:** `/formsemestre//partition/create` +>`{ "partition_name" : "PART" }` +* **Exemple d'utilisation:** `/ScoDoc/api/formsemestre/944/partition/create` +* **Résultat:** Crée une nouvelle partition dans un formsemestre. +* **[Exemple de résultat:](samples/sample_formsemestre-partition-create.json.md)** + +#### **`formsemestre-partition-order`** + +* **Méthode: POST** +* **Paramètres:** `formsemestre_id` +* **Data:** `[ , , ... ]` +* **Routes:** `/formsemestre//partition/order` +* **Exemple d'utilisation:** `/ScoDoc/api/formsemestre/944/partition/order` +>`[ 2048, 2054 ]` +* **Résultat:** Spécifie l'ordre des partitions d'un formsemestre. +* **[Exemple de résultat:](samples/sample_formsemestre-partition-order.json.md)** + +#### **`partition-groups-order`** + +* **Méthode: POST** +* **Paramètres:** `partition_id` +* **Data:** `[ , , ... ]` +* **Routes:** `/partition//groups/order` +* **Exemple d'utilisation:** `/ScoDoc/api/partition/1962/groups/order` +>`[ 4383, 4379, 4380, 4381, 4382, 4384 ]` +* **Résultat:** Spécifie l'ordre des groupes d'une partition. +* **[Exemple de résultat:](samples/sample_partition-groups-order.json.md)** + +#### **`group-etudiants`** + +* **Méthode: GET** +* **Paramètres:** `group_id` +* **Routes:** `/group//etudiants` +* **Exemple d'utilisation:** `/ScoDoc/api/group/1/etudiants` +* **Résultat:** Retourne la liste des étudiants dans un groupe. +* **Exemple de résultat:** [group-etudiants.json](samples/sample_group-etudiants.json.md) + +#### **`groups-etudiants-query`** + +* **Méthode: GET** +* **Paramètres:** `group_id` +* **Query string:** `etat` ('I', 'D' ou 'DEF') +* **Routes:** `/group//etudiants/query` +* **Exemple d'utilisation:** `/ScoDoc/api/group/1/etudiants/query?etat=I` +* **Résultat:** Retourne la liste des étudiants dans un groupe. +* **Exemple de résultat:** [group-etudiants-query.json](samples/sample_group-etudiants-query.json.md) + +#### **`groups-set_etudiant`** + +* **Méthode: POST** +* **Permission: `ScoEtudChangeGroups`*** +* **Paramètres:** `group_id`, `etudid` +* **Routes:** `/group//set_etudiant/` +* **Exemple d'utilisation:** `/ScoDoc/api/group/4085/set_etudiant/12108` +* **Résultat:** Affecte un étudiant dans un groupe. +* **[Exemple de résultat](samples/sample_group-set_etudiant.json.md)** + +#### **`groups-remove_etudiant`** + +* **Méthode: POST** +* **Permission: `ScoEtudChangeGroups`*** +* **Paramètres:** `group_id`, `etudid` +* **Routes:** `/group//remove_etudiant/` +* **Exemple d'utilisation:** `/ScoDoc/api/group/4085/remove_etudiant/12108` +* **Résultat:** Retire un étudiant d'un groupe. +* **[Exemple de résultat](samples/sample_group-remove_etudiant.json.md)** + +#### **`partition-group-create`** + +* **Méthode: POST** +* **Permission: `ScoEtudChangeGroups`*** +* **Paramètres:** `partition_id` +* **Data:** `{ group_name : }` +* **Routes:** `/partition//create` +* **Exemple d'utilisation:** `/ScoDoc/api/partition/1962/create` +>`{ "group_name" : "A" }` +* **Résultat:** Crée un groupe dans une partition. +* **[Exemple de résultat](samples/sample_formsemestre-partition-create.json.md)** + +#### **`partition-group-delete`** + +* **Méthode: POST** +* **Permission: `ScoEtudChangeGroups`*** +* **Paramètres:** `group_id` +* **Routes:** `/group//delete` +* **Exemple d'utilisation:** `/ScoDoc/api/group/4581/delete` +* **Résultat:** Supprime un groupe. +* **[Exemple de résultat](samples/sample_group-delete.json.md)** + +#### **`partition-remove_etudiant`** + +* **Méthode: POST** +* **Permission: `ScoEtudChangeGroups`*** +* **Paramètres:** `partition_id` +* **Routes:** `/partition//remove_etudiant/` +* **Exemple d'utilisation:** `/ScoDoc/api/partition/1962/remove_etudiant/12107` +* **Résultat:** Reture un étudiant des groupes de la partition. +* **[Exemple de résultat](samples/sample_partition-remove_etudiant.json.md)** + +#### **`group-edit`** + +* **Méthode: POST** +* **Permission: `ScoEtudChangeGroups`*** +* **Paramètres:** `group_id` +* **Data:** `{ group_name : }` +* **Routes:** `/group//edit` +* **Exemple d'utilisation:** `/ScoDoc/api/group/4581/edit` +>`{ "group_name" : "nouveau" }` +* **Résultat:** Renomme un groupe. +* **[Exemple de résultat](samples/sample_group-edit.json.md)** - ### Évaluations #### **`evaluations`** diff --git a/docs/img/API_Chart.odg b/docs/img/API_Chart.odg index ba11a638c60c2aecdc2e8a8428eeadc4cb896f51..e330eea4b9e9fba99cefd5bbebc827ea4e206b9d 100644 GIT binary patch delta 15551 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
YkC<0G^}eiUzKPho1tZo_Elv;jYN6(g$RnqoZjV z88(b;?W)l}R(n2Cb0}Pv_D(4%mHEY-_CkP}=a>VSrUOBiBwP;#FPC}84Qi|^O(RWc zo`1%w7GBE2@;J=b86clYx@S8xmlalJ62#R8B@F@E;8%N=fzPvQXET_)*=$aMg{%HY z=f`5oJ`}F-VREMkPzmPu5=^y4R(v%0H>IR=>WCWsgrplj$@uA-gnWL|D}|&+EIOXQE80gS`H`rhOqZ||h7j!)sP2v`#)*3tH!kG~NW2>+hm({YTA#<2qdl?Q|UWo!V0paK1l*KFdF$$#8r z;Y>yTb!?y5ZHAL*XNs0MVfr7xS6Oo$;O<0wQ`-NLfBlu~1H&NvUxmS$;(#y!Czw(F z8|h>w`CpF+{X6j&kVt4w^Y0s3bFqIXQq5WaFL&A%b1uSv9BltL*#z#tcn1H9?-Lm< za8>`o{BLr?Uti$=6{2W>fNV`&41c)W+Wc3?|BI`lrj_VS_LtHy2nq!B4{_mtLSkaB w1)1F-7Rmm|?{^3UD>0kv|BG5`Po diff --git a/docs/samples/sample_formsemestre-bulletins.json.md b/docs/samples/sample_formsemestre-bulletins.json.md index 2cf80e3b..b1f4d1fc 100644 --- a/docs/samples/sample_formsemestre-bulletins.json.md +++ b/docs/samples/sample_formsemestre-bulletins.json.md @@ -1,129 +1,230 @@ ### formsemestre-bulletins -`/api/formsemestre/1/bulletins` +`/api/formsemestre/911/bulletins` ```json - [ +[ { - "type": "classic", - "version": "0", - "etudid": 9586, - "formsemestre_id": 829, - "date": "2022-07-25T14:44:03.305430", - "publie": true, - "etapes": [ - "3RETAL" - ], - "etape_apo": "3RETAL", - "etudiant": { - "etudid": 9586, - "code_nip": "42021436", - "code_ine": "081377224FD", - "nom": "WUILMART", - "prenom": "Jade", - "civilite": "Mme", - "photo_url": "/ScoDoc/INFO/Scolarite/get_photo_image?etudid=9586&size=small", - "email": "jade.wuilmart.etu@univ-lille.fr", - "emailperso": "jeufir@gmail.com", - "sexe": "Mme" - }, - "note": { - "value": "12.54", - "min": "01.55", - "max": "15.30", - "moy": "12.80" - }, - "rang": { - "value": "9", - "ninscrits": 10 - }, - "rang_group": [ - { - "group_type": "cgir", - "group_name": "alt", - "value": "", - "ninscrits": 0 - } - ], - "note_max": { - "value": 20 - }, - "bonus_sport_culture": { - "value": 0.0 - }, - "ue": [ - { - "id": 1188, - "numero": "1", - "acronyme": "BCC1", - "titre": "Concevoir et maintenir une infrastructure réseau", - "note": { - "value": "11.65", - "min": "00.00", - "max": "16.10", - "moy": "12.52" - }, - "rang": "8", - "effectif": 10, - "ects": " 6", - "code_apogee": "", - "module": [ - { - "id": 13240, - "code": "rsxip", - "coefficient": 6.0, - "numero": 1, - "titre": "Technologies IP", - "abbrev": "None", - "note": { - "value": "11.65", - "moy": "12.52", - "max": "16.10", - "min": "00.00", - "nb_notes": 10, - "nb_missing": 0, - "nb_valid_evals": 4 - }, - "code_apogee": "", - "evaluation": [ - { - "jour": "2021-11-09", - "heure_debut": "08:00:00", - "heure_fin": "08:00:00", - "coefficient": 1.5, - "evaluation_type": 0, - "evaluation_id": 24782, - "description": "DS Réseaux IP", - "note": "16.00" + "version": "0", + "type": "BUT", + "date": "2022-08-02T10:25:37.411626Z", + "publie": true, + "etudiant": { + "civilite": "M", + "code_ine": "0910036777K", + "code_nip": "21701024", + "date_naissance": "05/10/1999", + "dept_id": 6, + "dept_acronym": "INFO", + "email": "quentin.albert.etu@univ-lille.fr", + "emailperso": "quentin.nether@gmail.com", + "etudid": 11958, + "nom": "ALBERT", + "prenom": "QUENTIN", + "nomprenom": "M. Quentin ALBERT", + "lieu_naissance": "ROUBAIX", + "dept_naissance": "", + "nationalite": "", + "boursier": "", + "fiche_url": "/ScoDoc/INFO/Scolarite/ficheEtud?etudid=11958", + "photo_url": "/ScoDoc/INFO/Scolarite/get_photo_image?etudid=11958&size=small", + "id": 11958, + "domicile": "25 Allée de la marbrerie", + "villedomicile": "TOURCOING", + "telephone": "0664126512", + "fax": "", + "description": "(infos admission)", + "codepostaldomicile": "59200", + "paysdomicile": "", + "telephonemobile": "0621096401", + "typeadresse": "domicile" + }, + "formation": { + "id": 374, + "acronyme": "BUT Informatique", + "titre_officiel": "Licence professionnelle", + "titre": "BUT Informatique" + }, + "formsemestre_id": 944, + "etat_inscription": "I", + "options": { + "show_abs": false, + "show_abs_modules": false, + "show_ects": false, + "show_codemodules": false, + "show_matieres": false, + "show_rangs": true, + "show_ue_rangs": false, + "show_mod_rangs": false, + "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": false, + "temporary_txt": "PROVISOIRE", + "show_uevalid": true, + "show_date_inscr": false + }, + "ressources": { + "R1.01": { + "id": 15278, + "titre": "Initiation au dév.", + "code_apogee": null, + "url": "/ScoDoc/INFO/Scolarite/Notes/moduleimpl_status?moduleimpl_id=15278", + "moyenne": {}, + "evaluations": [] + }, + "R1.02": { + "id": 15275, + "titre": "Dev. interfaces web", + "code_apogee": null, + "url": "/ScoDoc/INFO/Scolarite/Notes/moduleimpl_status?moduleimpl_id=15275", + "moyenne": {}, + "evaluations": [] + }, + ... + }, + "saes": { + "SAE1.01": { + "id": 15279, + "titre": "SAE1.01", + "code_apogee": null, + "url": "/ScoDoc/INFO/Scolarite/Notes/moduleimpl_status?moduleimpl_id=15279", + "moyenne": {}, + "evaluations": [] + }, + "SAE1.02": { + "id": 15263, + "titre": "SAE1.02", + "code_apogee": null, + "url": "/ScoDoc/INFO/Scolarite/Notes/moduleimpl_status?moduleimpl_id=15263", + "moyenne": {}, + "evaluations": [] + }, + ... + }, + "ues": { + "UE 1.1": { + "id": 2074, + "titre": "Réaliser un développement d'application", + "numero": 1, + "type": 0, + "color": "#B80004", + "competence": null, + "moyenne": { + "value": "~", + "min": "~", + "max": "~", + "moy": "~", + "rang": "", + "total": 0, + "groupes": {} + }, + "bonus": "00.00", + "malus": "00.00", + "capitalise": null, + "ressources": { + "R1.01": { + "id": 15278, + "coef": 0.42, + "moyenne": "~" + }, + "R1.02": { + "id": 15275, + "coef": 0.12, + "moyenne": "~" + }, + "R1.10": { + "id": 15266, + "coef": 0.06, + "moyenne": "~" + } + }, + "saes": { + "SAE1.01": { + "id": 15279, + "coef": 0.4, + "moyenne": "~" + } + } + }, + "UE 1.2": { + "id": 2081, + "titre": "Optimiser des applications informatiques", + "numero": 200, + "type": 0, + "color": "#F97B3D", + "competence": null, + "moyenne": { + "value": "~", + "min": "~", + "max": "~", + "moy": "~", + "rang": "", + "total": 0, + "groupes": {} + }, + "bonus": "00.00", + "malus": "00.00", + "capitalise": null, + "ressources": { + "R1.01": { + "id": 15278, + "coef": 0.24, + "moyenne": "~" + }, + "R1.03": { + "id": 15270, + "coef": 0.06, + "moyenne": "~" + }, + "R1.06": { + "id": 15262, + "coef": 0.15, + "moyenne": "~" + }, + "R1.07": { + "id": 15268, + "coef": 0.15, + "moyenne": "~" + } + }, + "saes": { + "SAE1.02": { + "id": 15263, + "coef": 0.4, + "moyenne": "~" + } + } + }, + ... + }, + "semestre": { + "etapes": [ + "1BFQQU" + ], + "date_debut": "2022-09-01", + "date_fin": "2022-12-31", + "annee_universitaire": "2022 - 2023", + "numero": 1, + "inscription": "", + "groupes": [], + "notes": { + "value": "00.00", + "min": "00.00", + "moy": "11.24", + "max": "14.06" + }, + "rang": { + "value": "10", + "total": 10, + "groupes": {} + } + } }, ... - ] - } - ] - }, - ... - ], - "ue_capitalisee": [], - "situation": "Inscrit le 06/09/2021. UE acquises: BCC1, BCC2, BCC3, BCC 4, BCC 5, BCC 6, BCC8. Décision jury: Validé Diplôme obtenu.", - "decision": { - "code": "ADM", - "etat": "I", - "date": "2022-07-11", - "compense_formsemestre_id": null - }, - "decision_ue": [ - { - "ue_id": 1188, - "numero": 1, - "acronyme": "BCC1", - "titre": "Concevoir et maintenir une infrastructure réseau", - "code": "ADM", - "ects": 6.0 - }, - ... - ], - "autorisation_inscription": [], - "appreciation": [] - }, - ] +] ``` diff --git a/docs/samples/sample_formsemestre-etat_evals.json.md b/docs/samples/sample_formsemestre-etat_evals.json.md new file mode 100644 index 00000000..b36f69d0 --- /dev/null +++ b/docs/samples/sample_formsemestre-etat_evals.json.md @@ -0,0 +1,88 @@ +### formsemestre-etat-eval + +`/api/formsemestre/911/etat_evals` + +```json +[ + { + "id": 14530, + "responsable_id": 667, + "computation_expr": null, + "module_id": 8194, + "formsemestre_id": 911, + "moduleimpl_id": 14530, + "ens": [], + "module": { + "abbrev": "DEv. objets", + "formation_id": 333, + "code": "R 2.01", + "matiere_id": 3861, + "heures_cours": 0.0, + "semestre_id": 2, + "heures_td": 0.0, + "numero": 216, + "heures_tp": 0.0, + "code_apogee": "", + "titre": "Développement orienté objets", + "coefficient": 0.0, + "module_type": 2, + "id": 8194, + "ects": null, + "ue_id": 1772, + "parcours": [], + "app_critiques": [], + "module_id": 8194 + }, + "evaluations": [ + { + "jour": "02/06/2022", + "heure_fin": "15h00", + "description": "DS (UE2.1)", + "coefficient": 3.0, + "publish_incomplete": true, + "numero": 2, + "moduleimpl_id": 14530, + "id": 25902, + "heure_debut": "13h30", + "note_max": 20.0, + "visibulletin": true, + "evaluation_type": 0, + "evaluation_id": 25902, + "date_debut": "2022-06-02T13:30:00", + "date_fin": "2022-06-02T15:00:00", + "poids": { + "1772": 1.0, + "1773": 0.0, + "1774": 0.0, + "1775": 0.0, + "1776": 0.0, + "1777": 0.0 + }, + "jouriso": "2022-06-02", + "duree": "1h30", + "descrheure": " de 13h30 à 15h00", + "matin": 0, + "apresmidi": 1, + "etat": { + "evaluation_id": 25902, + "nb_attente": 0, + "is_complete": true + }, + "nb_inscrits": 117, + "nb_notes_manquantes": 0, + "nb_notes_abs": 16, + "nb_notes_att": 0, + "nb_notes_exc": 0, + "saisie_notes": { + "datetime_debut": "2022-06-14T16:11:16+02:00", + "datetime_fin": "2022-06-17T16:21:17+02:00", + "datetime_mediane": "2022-06-14T16:11:16+02:00" + } + }, + ... + ] + }, + ... +] +``` + diff --git a/docs/samples/sample_formsemestre-partition-create.json.md b/docs/samples/sample_formsemestre-partition-create.json.md new file mode 100644 index 00000000..33baaf21 --- /dev/null +++ b/docs/samples/sample_formsemestre-partition-create.json.md @@ -0,0 +1,20 @@ +### formsemestre-partition-create + +`/api/formsemestre/944/partition/create` +> `Content-Type: application/json` +> +> `{ "group_name": "PART" }` + +```json +{ + "numero": 0, + "formsemestre_id": 944, + "show_in_lists": false, + "id": 2060, + "groups_editable": true, + "bul_show_rank": false, + "partition_name": "PART2", + "groups": {} +} +``` + diff --git a/docs/samples/sample_formsemestre-partition-order.json.md b/docs/samples/sample_formsemestre-partition-order.json.md new file mode 100644 index 00000000..22d1253c --- /dev/null +++ b/docs/samples/sample_formsemestre-partition-order.json.md @@ -0,0 +1,40 @@ +### formsemestre-partition-order + +`/api/formsemestre/944/partition/create` +> `Content-Type: application/json` +> +> `[ 2059, 2047, 2060 ]` + + +```json +[ + { + "formsemestre_id": 944, + "numero": 0, + "show_in_lists": false, + "id": 2059, + "partition_name": "PART", + "bul_show_rank": false, + "groups_editable": true + }, + { + "formsemestre_id": 944, + "numero": 1, + "show_in_lists": true, + "id": 2047, + "partition_name": "PART4", + "bul_show_rank": false, + "groups_editable": true + }, + { + "formsemestre_id": 944, + "numero": 2, + "show_in_lists": false, + "id": 2060, + "partition_name": "PART2", + "bul_show_rank": false, + "groups_editable": true + } +] +``` + diff --git a/docs/samples/sample_group-delete.json.md b/docs/samples/sample_group-delete.json.md new file mode 100644 index 00000000..4fa5196c --- /dev/null +++ b/docs/samples/sample_group-delete.json.md @@ -0,0 +1,11 @@ +### partition-group-create + +`/api/group/4581/delete` + +```json +{ + "OK": true +} + +``` + diff --git a/docs/samples/sample_group-edit.json.md b/docs/samples/sample_group-edit.json.md new file mode 100644 index 00000000..aa453d8a --- /dev/null +++ b/docs/samples/sample_group-edit.json.md @@ -0,0 +1,25 @@ +### partition-group-create + +`/api/group/4581/edit` +> `Content-Type: application/json` +> +> `{ "group_name": "nouveau" }` + +```json +{ + "group_name": "a", + "partition_id": 1962, + "id": 4384, + "numero": null, + "partition": { + "formsemestre_id": 911, + "numero": 1960, + "show_in_lists": true, + "id": 1962, + "partition_name": "TD", + "bul_show_rank": false, + "groups_editable": true + } +} +``` + diff --git a/docs/samples/sample_group-etudiants-query.json.md b/docs/samples/sample_group-etudiants-query.json.md new file mode 100644 index 00000000..0b26e44a --- /dev/null +++ b/docs/samples/sample_group-etudiants-query.json.md @@ -0,0 +1,19 @@ +### group-etudiants + +`/api/group/4085/set_etudiants?etat=D` + +```json +[ + { + "id": 12071, + "code_nip": "24123901", + "code_ine": "081818679FE", + "dept_id": 6, + "nom": "HAMMO", + "nom_usuel": null, + "prenom": "NATHAN", + "civilite": "M" + } +] +``` + diff --git a/docs/samples/sample_group-etudiants.json.md b/docs/samples/sample_group-etudiants.json.md new file mode 100644 index 00000000..c6254e61 --- /dev/null +++ b/docs/samples/sample_group-etudiants.json.md @@ -0,0 +1,30 @@ +### group-etudiants + +`/api/group/4085/etudiants` + +```json +[ + { + "id": 9589, + "code_nip": "42435003", + "code_ine": "081574305FJ", + "dept_id": 6, + "nom": "AVENU", + "nom_usuel": null, + "prenom": "FLORINE", + "civilite": "F" + }, + { + "id": 12019, + "code_nip": "21782690", + "code_ine": "0CPZUI046Q4", + "dept_id": 6, + "nom": "BOULVAR", + "nom_usuel": null, + "prenom": "ALEXANDRE", + "civilite": "M" + }, + ... +] +``` + diff --git a/docs/samples/sample_group-remove_etudiant.json.md b/docs/samples/sample_group-remove_etudiant.json.md new file mode 100644 index 00000000..a9ddc8b0 --- /dev/null +++ b/docs/samples/sample_group-remove_etudiant.json.md @@ -0,0 +1,11 @@ +### group-remove_etudiant + +`/api/group/4085/remove_etudiant/12107` + +```json +{ + "group_id": 4385, + "etudid": 12107 +} +``` + diff --git a/docs/samples/sample_group-set_etudiant.json.md b/docs/samples/sample_group-set_etudiant.json.md new file mode 100644 index 00000000..2aa874af --- /dev/null +++ b/docs/samples/sample_group-set_etudiant.json.md @@ -0,0 +1,11 @@ +### group-set_etudiants + +`/api/group/4085/set_etudiants/12107` + +```json +{ + "group_id": 4385, + "etudid": 12107 +} +``` + diff --git a/docs/samples/sample_partition-delete.json.md b/docs/samples/sample_partition-delete.json.md new file mode 100644 index 00000000..61624e08 --- /dev/null +++ b/docs/samples/sample_partition-delete.json.md @@ -0,0 +1,9 @@ +### partition-delete + +`/api/partition/2047/delete` + +```json +{ + "OK": true +} +``` diff --git a/docs/samples/sample_partition-edit.json.md b/docs/samples/sample_partition-edit.json.md new file mode 100644 index 00000000..e85429f4 --- /dev/null +++ b/docs/samples/sample_partition-edit.json.md @@ -0,0 +1,20 @@ +### partition-edit + +`/api/partition/2047/edit` +> `Content-Type: application/json` +> +> `{ "partition_name": "PART4" }` + +```json +{ + "numero": 1, + "formsemestre_id": 944, + "show_in_lists": true, + "id": 2047, + "groups_editable": true, + "bul_show_rank": false, + "partition_name": "PART4", + "groups": {} +} +``` + diff --git a/docs/samples/sample_partition-groups-order.json.md b/docs/samples/sample_partition-groups-order.json.md new file mode 100644 index 00000000..e3613097 --- /dev/null +++ b/docs/samples/sample_partition-groups-order.json.md @@ -0,0 +1,64 @@ +### partition-groups-order + +`/api/partition/1962/groups/order` +> `Content-Type: application/json` +> +> `[ 4383, 4379, 4380, 4381, 4382, 4384 ]` + + +```json +{ + "formsemestre_id": 911, + "numero": 1960, + "show_in_lists": true, + "partition_name": "TD", + "bul_show_rank": false, + "groups_editable": true, + "id": 1962, + "groups": { + "4383": { + "group_name": "E", + "partition_id": 1962, + "id": 4383, + "numero": 0, + "name": "E" + }, + "4379": { + "group_name": "A", + "partition_id": 1962, + "id": 4379, + "numero": 1, + "name": "A" + }, + "4380": { + "group_name": "B", + "partition_id": 1962, + "id": 4380, + "numero": 2, + "name": "B" + }, + "4381": { + "group_name": "C", + "partition_id": 1962, + "id": 4381, + "numero": 3, + "name": "C" + }, + "4382": { + "group_name": "D", + "partition_id": 1962, + "id": 4382, + "numero": 4, + "name": "D" + }, + "4384": { + "group_name": "a", + "partition_id": 1962, + "id": 4384, + "numero": 5, + "name": "a" + } + } +} +``` + diff --git a/docs/samples/sample_partition-remove_etudiant.json.md b/docs/samples/sample_partition-remove_etudiant.json.md new file mode 100644 index 00000000..5e73d902 --- /dev/null +++ b/docs/samples/sample_partition-remove_etudiant.json.md @@ -0,0 +1,11 @@ +### group-remove_etudiant + +`/api/partition/1962/remove_etudiant/12107` + +```json +{ + "partition_id": 1962, + "etudid": 12107 +} +``` +