From 3561c210b32a6c7080c11d4f270fc03cbea05653 Mon Sep 17 00:00:00 2001 From: Jean-Marie PLACE Date: Fri, 29 Jul 2022 09:37:20 +0200 Subject: [PATCH] =?UTF-8?q?compl=C3=A9ments=20docs=20(suite)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/ScoDoc9API.md | 418 +-- docs/img/API_Chart.odg | Bin 24516 -> 26884 bytes docs/img/API_Chart.svg | 2465 +++++++++++------ ...ple_bulletin-formsemestre-etudiant.json.md | 173 ++ docs/samples/sample_etudiant.json.md | 35 +- docs/samples/sample_etudiants-courant.json.md | 2 +- docs/samples/sample_etudiants.json.md | 37 + docs/samples/sample_formation-export.json.md | 80 + docs/samples/sample_formsemestres.json.md | 139 +- ...mple_groupes-formsemestre-etudiant.json.md | 31 + .../samples/sample_tous-les-etudiants.json.md | 38 + 11 files changed, 2088 insertions(+), 1330 deletions(-) create mode 100644 docs/samples/sample_bulletin-formsemestre-etudiant.json.md create mode 100644 docs/samples/sample_etudiants.json.md create mode 100644 docs/samples/sample_formation-export.json.md create mode 100644 docs/samples/sample_groupes-formsemestre-etudiant.json.md create mode 100644 docs/samples/sample_tous-les-etudiants.json.md diff --git a/docs/ScoDoc9API.md b/docs/ScoDoc9API.md index 54bc6f51e..07292ce13 100644 --- a/docs/ScoDoc9API.md +++ b/docs/ScoDoc9API.md @@ -160,7 +160,6 @@ par le serveur ScoDoc. incorrecte, paramètre manquant, ou objet inexistant. * [500](https://developer.mozilla.org/fr/docs/Web/HTTP/Status/500) : Erreur inconnue côté serveur. - ## Départements @@ -173,7 +172,7 @@ par le serveur ScoDoc. ```json [ 1888, 999, 165 ] ``` - + #### **departement** * **Méthode:** GET @@ -182,15 +181,15 @@ par le serveur ScoDoc. * `/departement/` * **Résultat:** Un département * **Exemple de résultat:** - ```json - { +```json +{ "id": 1, "acronym": "TAPI", "description": null, "visible": true, "date_creation": "Fri, 15 Apr 2022 12:19:28 GMT" - }, - ``` +} +``` #### **departements** @@ -235,7 +234,7 @@ par le serveur ScoDoc. ... ] ``` - + #### **Formsemestres d'un département** * **Méthode:** GET @@ -259,7 +258,6 @@ par le serveur ScoDoc. * **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) - ### **Semestres** #### **Formsemestre** @@ -278,7 +276,7 @@ par le serveur ScoDoc. * ** 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. +* **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 * **Exemple de résultat:** [formsemestres.json](samples/sample_formsemestres.json.md) #### **Bulletins d'un formsemestre** @@ -363,84 +361,30 @@ mais pas JSON compliant à cause des _NaN_. l'id passé en paramètres. Les codes INE et NIP sont uniques au sein d'un département. Si plusieurs objets étudiant ont le même code, on ramène le plus récemment inscrit. - * **Exemple de résultat:** - ``` - { - "civilite": "X", - "code_ine": "1", - "code_nip": "1", - "date_naissance": "", - "dept_id": 1, - "dept_acronym": "TAPI", - "email": "SACHA.COSTA@example.com", - "emailperso": "", - "etudid": 1, - "nom": "COSTA", - "prenom": "SACHA", - "nomprenom": "Sacha COSTA", - "lieu_naissance": "", - "dept_naissance": "", - "nationalite": "", - "boursier": "", - "id": 1, - "codepostaldomicile": "", - "paysdomicile": "", - "telephonemobile": "", - "typeadresse": "domicile", - "domicile": "", - "villedomicile": "", - "telephone": "", - "fax": "", - "description": "" - } - ``` + * **Exemple de résultat:** [etudiant.json](samples/sample_etudiant.json.md) + +#### **`tous les etudiants` (TODO)** + + * **Méthode:** GET + * **Routes:** `/etudiants + * **Exemple d'utilisation:** `/api/etudiants` + * **Résultat:** Liste complète de tous les étudiants (passés ou présents) pour lequel l'utilisateur a la permission ScoView. + * **Exemple de résultat:** [tous-les-etudiant.json](samples/sample_tous-les-etudiants.json.md) #### **`etudiants`** - * **Méthode:** GET - * **Paramètres:** `etudid`, `nip`, `ine` - * **Routes:** `/etudiants/etudid/` ou `/etudiants/nip/` ou `/etudiants/ine/` - * **Exemple d'utilisation:** `/api/etudiants/nip/1` - * **Résultat:** Info sur le ou les étudiants correspondants. - Comme `/etudiant` mais renvoie toujours une liste. +* **Méthode:** GET +* **Paramètres:** `etudid`, `nip`, `ine` +* **Routes:** `/etudiants/etudid/` ou `/etudiants/nip/` ou `/etudiants/ine/` +* **Exemple d'utilisation:** `/api/etudiants/nip/1` +* **Résultat:** Info sur le ou les étudiants correspondants. + Comme [`/etudiant`](ScoDoc9API.md#etudiant) mais renvoie toujours une liste. Si non trouvé, liste vide, pas d'erreur. Dans 99% des cas, la liste contient un seul étudiant, mais si l'étudiant a été inscrit dans plusieurs départements, on a plusieurs objets (1 par - dept.). - * **Exemple de résultat:** - ``` - [ - { - "civilite": "X", - "code_ine": "1", - "code_nip": "1", - "date_naissance": "", - "dept_id": 1, - "dept_acronym": "TAPI", - "email": "SACHA.COSTA@example.com", - "emailperso": "", - "etudid": 1, - "nom": "COSTA", - "prenom": "SACHA", - "nomprenom": "Sacha COSTA", - "lieu_naissance": "", - "dept_naissance": "", - "nationalite": "", - "boursier": "", - "id": 1, - "codepostaldomicile": "", - "paysdomicile": "", - "telephonemobile": "", - "typeadresse": "domicile", - "domicile": "", - "villedomicile": "", - "telephone": "", - "fax": "", - "description": "" - } - ] - ``` - + dept.). +* **Exemple de résultat:** [etudiants.json](samples/sample_etudiants.json.md) + ### Cursus #### **etudiant_formsemestres** @@ -456,7 +400,7 @@ mais pas JSON compliant à cause des _NaN_. ### Bulletin -#### **`etudiant_bulletin_semestre`** +#### **Bulletin d'un formsemestre d'un étudiant ** * **Méthode:** GET * **Paramètres:** `formsemestre_id`, `etudid`, `nip`, `ine` @@ -472,216 +416,17 @@ mais pas JSON compliant à cause des _NaN_. Deux versions disponibles `long` et `short` (par défaut `long` ajoutez `/short` pour la version plus courte). - * **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:** [bulletin-formsemestre-etudiant.json](samples/sample_bulletin-formsemestre-etudiant.json.md) -#### **`etudiant_groups`** +#### **Groupes d'un formsemestre d'un étudiant** * **Méthode:** GET * **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" - }, - ... - ] - ``` - - + * **Exemple de résultat:** [groupes-formsemestre-etudiant.json](samples/sample_groupes-formsemestre-etudiant.json.md) ## Programmes de formations @@ -724,106 +469,21 @@ 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) - + ### Export programme -#### **`formation_export`** +#### **`formation export`** * **Méthode:** GET * **Paramètres:** `formation_id`, `export_ids` (False par défaut. Ajouter `/with_ids` pour le passer à True) - * **Routes:** `/formation/formation_export/` + * **Routes:** + * `/formation/export/` + * `/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:** - ``` - { - "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, - "ue": [ - { - "acronyme": "RT1.1", - "numero": 1, - "titre": "Administrer les réseaux et l’Internet", - "type": 0, - "ue_code": "UCOD11", - "ects": 12, - "is_external": false, - "code_apogee": "", - "coefficient": 0, - "semestre_idx": 1, - "color": "#B80004", - "reference": 1, - "matiere": [ - { - "titre": "Administrer les réseaux et l’Internet", - "numero": 1, - "module": [ - { - "titre": "Initiation aux réseaux informatiques", - "abbrev": "Init aux réseaux informatiques", - "code": "R101", - "heures_cours": 0, - "heures_td": 0, - "heures_tp": 0, - "coefficient": 1, - "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 à l'hygiène informatique et à la cybersécurité", - "abbrev": "Hygiène informatique", - "code": "SAE11", - "heures_cours": 0, - "heures_td": 0, - "heures_tp": 0, - "coefficient": 1, - "ects": "", - "semestre_id": 1, - "numero": 10, - "code_apogee": "", - "module_type": 3, - "coefficients": [ - { - "ue_reference": "1", - "coef": "16.0" - } - ] - } - ] - } - ] - } - ] - } - ``` -#### Référentiel de compétences +#### Référentiel de compétences [formation-export.json](samples/sample_formation-export.json.md) #### **`referentiel_competences`** @@ -834,7 +494,6 @@ mais pas JSON compliant à cause des _NaN_. * **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 ? - ## Formsemestres @@ -896,7 +555,6 @@ Les sessions de formation (qu'elles durent une année ou un mois) sont représen [ { formsemestre comme ci-dessus }, ... ] ``` - ### Note sur les identifiants de formsemestre Le `session_id` peut être utilisé pour identifier de façon prévisible et (presque) unique un formsemestre) dans un établissement, ce qui est utile @@ -918,7 +576,7 @@ des informations suivantes: **Exemple:** `INFO-DUT-FI-S1-2014` équivaut à un semestre S1 d'un DUT informatique de 2014 en formation initiale (FI) ### Étudiants inscrits et bulletins -#### **etudiants** +#### **etudiants d'un formsemestre** * **Méthode:** GET * **Paramètres:** `formsemestre_id`, `etat` (par défaut égal à "I" pour les étudiants inscrits) * **Routes:** `/formsemestre//etudiants` XXX voir si @@ -926,7 +584,7 @@ des informations suivantes: * **Résultat:** les étudiants inscrits à ce semestres XXX préciser état (DEM, DEF)) -#### * **`bulletins`** +#### * **`bulletins d'un formsemestre`** * **Méthode:** GET * **Paramètres:** `formsemestre_id` @@ -1107,7 +765,7 @@ des informations suivantes: ] ``` -#### **etat_evals** +#### **etat_evals d'un formsemestre** * **Méthode:** GET * **Paramètres:** `formsemestre_id` diff --git a/docs/img/API_Chart.odg b/docs/img/API_Chart.odg index dd08d58e59b7214b87e82de629e9566ca36f5ace..ba11a638c60c2aecdc2e8a8428eeadc4cb896f51 100644 GIT binary patch delta 24021 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 CMx~_y delta 21680 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 ZXX@Wy_BAH$Z%bJiv*N%83bp#<>>rPhmTLe2 diff --git a/docs/img/API_Chart.svg b/docs/img/API_Chart.svg index 8e21d4428..9d470e785 100644 --- a/docs/img/API_Chart.svg +++ b/docs/img/API_Chart.svg @@ -92,7 +92,7 @@ - + @@ -619,119 +619,119 @@ - - - - formation + + + + formation - - - - formations_ids + + + + formations_ids - - - - / + + + + / - - - + + + - - - + + + - - - + + + - - - - <int:formation_id> + + + + <int:formation_id> - - - - moduleimpl + + + + moduleimpl - - - - / + + + + / - - - - <int:moduleimpl_id> + + + + <int:moduleimpl_id> - - - - formation_export + + + + formation_export - - - - / + + + + / - - - - <int:formation_id> + + + + <int:formation_id> - - - - with_ids + + + + with_ids - - - - referentiel_competence + + + + referentiel_competence @@ -791,1777 +791,2416 @@ - - - - / + + + + / - - - - ? - id317 + + + + ? + id388 - - - - ? - id318 + + + + ? + id389 - - - - ? - id319 + + + + ? + id390 - - - - ? - id320 + + + + ? + id391 - - - - ? - id321 + + + + ? + id392 - - - - formsemestres + + + + formsemestres - - - - / + + + + / - - - - query + + + + query - - - - ? + + + + ? - - - - & + + + + & - - - - etape_apo + + + + etape_apo - - - - = + + + + = - - - - <string:etape_apo> + + + + <string:etape_apo> - - - - annee_scolaire + + + + annee_scolaire - - - - = + + + + = - - - - <int:annee> + + + + <int:annee> - - - - dept_acronym + + + + dept_acronym - - - - = + + + + = - - - - <string:acronym> + + + + <string:acronym> - - - - dept_id + + + + dept_id - - - - = + + + + = - - - - <int:dept_id> + + + + <int:dept_id> - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - - formsemestre + + + + formsemestre - - - - / + + + + / - - - - <int:formsemestre_id> + + + + <int:formsemestre_id> - - - - / + + + + / - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - - ? + + + + ? - - - + + + - - - - bulletins + + + + bulletins - - - - jury + + + + jury - - - - programme + + + + programme - - - - etudiants + + + + etudiants - - - - / + + + + / - - - - demissionnaires + + + + demissionnaires - - - - defaillants + + + + defaillants - - - + + + - - - + + + - - - - etat_evals + + + + etat_evals - - - - partitions + + + + partitions - - - - resultats + + + + resultats - - - - ? + + + + ? - - - - format + + + + format - - - - = + + + + = - - - - raw + + + + raw - - - + + + - - - - / + + + + / - - - - create + + + + create - - - - logos + + + + logos - - - - / + + + + / - - - - <string:logo_name> + + + + <string:logo_name> - - - - user + + + + user - - - - / + + + + / - - - - <int:id> + + + + <int:id> - - - - order + + + + order - - - + + + - - - + + + - - - - group + + + + group - - - - / + + + + / - - - - <int:group_id> + + + + <int:group_id> - - - - / + + + + / - - - - etudiants + + + + etudiants - - - - query + + + + query - - - - edit + + + + edit - - - - delete + + + + delete - - - - ? + + + + ? - - - - etat + + + + etat - - - - = + + + + = - - - - <string:etat> + + + + <string:etat> - - - - set_etudiant + + + + set_etudiant - - - - / + + + + / - - - - <int:etudiant_id> + + + + <int:etudiant_id> - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - - partition + + + + partition - - - - / + + + + / - - - - <int:partition_id> + + + + <int:partition_id> - - - - / + + + + / - - - + + + - - - + + + - - - + + + - - - - edit + + + + edit - - - - delete + + + + delete - - - - remove_etudiant + + + + remove_etudiant - - - - / + + + + / - - - - <int:etudiant_id> + + + + <int:etudiant_id> - - - - group + + + + group - - - - / + + + + / - - - - create + + + + create - - - + + + - - - - evaluations + + + + evaluations - - - - / + + + + / - - - - <int:moduleimpl_id> + + + + <int:moduleimpl_id> - - - - eval_notes + + + + eval_notes - - - - <int:evaluaton_id> + + + + <int:evaluaton_id> - - - + + + - - - + + + - - - - jury + + + + jury - - - - / + + + + / - - - - <int:formsemestre_id> + + + + <int:formsemestre_id> - - - - formsemestre + + + + formsemestre - - - - preparation_jury + + + + preparation_jury - - - - decisions_jury + + + + decisions_jury - - - + + + - - - + + + - - - - / + + + + / - - - - / + + + + / - - - - groups + + + + groups - - - - / + + + + / - - - - order + + + + order - - - + + + - - - - absences + + + + absences - - - - etudid + + + + etudid - - - - <int:etudid> + + + + <int:etudid> - - - - / + + + + / - - - - nip + + + + nip - - - - <string:nip> + + + + <string:nip> - - - - / + + + + / - - - - ine + + + + ine - - - - <int:ine> + + + + <int:ine> - - - - / + + + + / - - - - / + + + + / - - - + + + - - - + + + - - - + + + - - - + + + - - - - / + + + + / - - - + + + - - - + + + - - - - just + + + + just - - - - / + + + + / - - - + + + - - - + + + - - - - abs_annule + + + + abs_annule - - - + + + - - - - / + + + + / - - - - ? + + + + ? - - - + + + - - - - etudid + + + + etudid - - - - <int:etudid> + + + + <int:etudid> - - - - / + + + + / - - - - jour + + + + jour - - - - <string:jour> + + + + <string:jour> - - - - / + + + + / - - - - matin + + + + matin - - - - <string:matin> + + + + <string:matin> - - - - / + + + + / - - - - / + + + + / - - - - & + + + + & - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - - <int:etudid> + + + + <int:etudid> - - - + + + - - - - abs_annule_justif + + + + abs_annule_justif - - - - etudid + + + + etudid - - - - <int:etudid> + + + + <int:etudid> - - - - / + + + + / - - - - jour + + + + jour - - - - <string:jour> + + + + <string:jour> - - - - / + + + + / - - - - matin + + + + matin - - - - <string:matin> + + + + <string:matin> - - - - / + + + + / - - - - / + + + + / - - - - ? + + + + ? - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - - abs_group_etat + + + + abs_group_etat - - - - <int:group_id> + + + + <int:group_id> - - - - / + + + + / - - - + + + - - - - / + + + + / - - - - date_debut + + + + date_debut - - - - / + + + + / - - - - <date:date_debut> + + + + <date:date_debut> - - - - / + + + + / - - - - date_fin + + + + date_fin - - - - / + + + + / - - - - <date:date_fin> + + + + <date:date_fin> - - - + + + - - - + + + - - - - / + + + + / - - - - ? + + + + ? - - - + + + - - - - list_abs + + + + list_abs - - - - / + + + + / - - - - / + + + + / - - - + + + - - - - / + + + + / - - - - <int:etudid> + + + + <int:etudid> - - - - <string:list_abs> + + + + <string:list_abs> - - - - / + + + + / - - - + + + - - - - reset_etud_abs + + + + reset_etud_abs - - - - only_not_just + + + + only_not_just - - - - only_just + + + + only_just - - - - / + + + + / - - - + + + - - - + + + - - - - / + + + + / + + + + + + + + ? + id393 + + + + + + + + ? + id394 + + + + + + + + ? + id395 + + + + + + + + ? + id396 + + + + + + + + ? + id397 + + + + + + + + ? + id398 + + + + + + + + ? + id399 + + + + + + + + ? + id400 + + + + + + + + ? + id401 + + + + + + + + ? + id402 + + + + + + + + ? + id403 + + + + + + + + ? + id404 + + + + + + + + ? + id405 + + + + + + + + ? + id406 + + + + + + + + ? + id407 + + + + + + + + ? + id408 + + + + + + + + ? + id409 + + + + + + + + ? + id410 + + + + + + + + ? + id411 + + + + + + + + ? + id412 + + + + + + + + ? + id413 + + + + + + + + ? + id414 + + + + + + + + ? + id415 + + + + + + + + ? + id416 + + + + + + + + ? + id417 + + + + + + + + ? + id418 + + + + + + + + ? + id419 + + + + + + + + ? + id420 + + + + + + + + ? + id421 + + + + + + + + ? + id422 + + + + + + + + ? + id423 + + + + + + + + ? + id424 + + + + + + + + ? + id425 + + + + + + + + ? + id426 + + + + + + + + ? + id427 + + + + + + + + ? + id428 + + + + + + + + ? + id429 + + + + + + + + ? + id430 + + + + + + + + ? + id431 + + + + + + + + ? + id432 + + + + + + + + ? + id433 + + + + + + + + ? + id434 + + + + + + + + ? + id435 + + + + + + + + ? + id436 + + + + + + + + ? + id437 + + + + + + + + ? + id438 + + + + + + + + ? + id439 + + + + + + + + ? + id440 + + + + + + + + ? + id441 + + + + + + + + ? + id442 + + + + + + + + ? + id443 + + + + + + + + ? + id444 + + + + + + + + ? + id445 + + + + + + + + ? + id446 + + + + + + + + ? + id447 + + + + + + + + ? + id448 + + + + + + + + ? + id449 + + + + + + + + ? + id450 + + + + + + + + ? + id451 + + + + + + + + ? + id452 + + + + + + + + ? + id453 + + + + + + + + ? + id454 + + + + + + + + ? + id455 + + + + + + + + ? + id456 + + + + + + + + ? + id457 + + + + + + + + ? + id458 + + + + + + + + ? + id459 + + + + + + + + ? + id460 + + + + + + + + ? + id461 + + + + + + + + ? + id462 + + + + + + + + ? + id463 diff --git a/docs/samples/sample_bulletin-formsemestre-etudiant.json.md b/docs/samples/sample_bulletin-formsemestre-etudiant.json.md new file mode 100644 index 000000000..8ef7932d5 --- /dev/null +++ b/docs/samples/sample_bulletin-formsemestre-etudiant.json.md @@ -0,0 +1,173 @@ +### bulletin-formsemestre-etudiant + + +```json + { + "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 + } + } + } + } +``` diff --git a/docs/samples/sample_etudiant.json.md b/docs/samples/sample_etudiant.json.md index 8ac17ac2b..56ccb9f72 100644 --- a/docs/samples/sample_etudiant.json.md +++ b/docs/samples/sample_etudiant.json.md @@ -1,4 +1,35 @@ -### etudiants_courant +### etudiant -`/api/etudiants/9537` +`/api/etudiant/9537` + +```json +{ + "civilite": "F", + "code_ine": "999999999GC", + "code_nip": "42101034", + "date_naissance": "29/09/2002", + "dept_id": 6, + "dept_acronym": "INFO", + "email": "anais.durand.etu@univ-lille.fr", + "emailperso": "anais.durand@laposte.net", + "etudid": 9537, + "nom": "DURAND", + "prenom": "ANAIS", + "nomprenom": "Mme Anais DURAND", + "lieu_naissance": "BESANCON", + "dept_naissance": "", + "nationalite": "FR", + "boursier": true, + "codepostaldomicile": "59251", + "paysdomicile": "FRANCE", + "telephonemobile": "0788498979", + "typeadresse": "domicile", + "id": 11911, + "domicile": "18b rue de scodoc", + "villedomicile": "ALLENNES LES MARAIS", + "telephone": "0720584624", + "fax": "", + "description": "(infos admission)" +} +``` diff --git a/docs/samples/sample_etudiants-courant.json.md b/docs/samples/sample_etudiants-courant.json.md index 99841a45a..84bf46f18 100644 --- a/docs/samples/sample_etudiants-courant.json.md +++ b/docs/samples/sample_etudiants-courant.json.md @@ -27,7 +27,7 @@ ou -`/api/etudiants/courant` +`/api/etudiants/courant/long` ```json [ { diff --git a/docs/samples/sample_etudiants.json.md b/docs/samples/sample_etudiants.json.md new file mode 100644 index 000000000..2049e1845 --- /dev/null +++ b/docs/samples/sample_etudiants.json.md @@ -0,0 +1,37 @@ +### etudiants + +`/api/etudiants/9537` + +```json +[ + { + "civilite": "F", + "code_ine": "999999999GC", + "code_nip": "42101034", + "date_naissance": "29/09/2002", + "dept_id": 6, + "dept_acronym": "INFO", + "email": "anais.durand.etu@univ-lille.fr", + "emailperso": "anais.durand@laposte.net", + "etudid": 9537, + "nom": "DURAND", + "prenom": "ANAIS", + "nomprenom": "Mme Anais DURAND", + "lieu_naissance": "BESANCON", + "dept_naissance": "", + "nationalite": "FR", + "boursier": true, + "codepostaldomicile": "59251", + "paysdomicile": "FRANCE", + "telephonemobile": "0788498979", + "typeadresse": "domicile", + "id": 11911, + "domicile": "18b rue de scodoc", + "villedomicile": "ALLENNES LES MARAIS", + "telephone": "0720584624", + "fax": "", + "description": "(infos admission)" + } +] +``` + diff --git a/docs/samples/sample_formation-export.json.md b/docs/samples/sample_formation-export.json.md new file mode 100644 index 000000000..df7f73eb7 --- /dev/null +++ b/docs/samples/sample_formation-export.json.md @@ -0,0 +1,80 @@ +### formation-export + +/api/formation/export/1 + +```json +{ + "id": 374, + "acronyme": "BUT Informatique", + "titre_officiel": "Licence professionnelle", + "formation_code": "BUT_INFO", + "code_specialite": null, + "dept_id": 6, + "titre": "BUT Informatique", + "version": 2, + "type_parcours": 700, + "referentiel_competence_id": null, + "departement": { + "id": 6, + "acronym": "INFO", + "description": "migré de ScoDoc7", + "visible": true, + "date_creation": "Thu, 04 Nov 2021 14:45:13 GMT" + }, + "formation_id": 374, + "ue": [ + { + "acronyme": "UE 1.1", + "numero": 1, + "titre": "Réaliser un développement d'application", + "type": 0, + "ue_code": "UCOD11", + "ects": 1.0, + "is_external": false, + "code_apogee": "", + "coefficient": 0.0, + "semestre_idx": 1, + "color": "#B80004", + "niveau_competence_id": "", + "coef_rcue": 1.0, + "reference": 2074, + "matiere": [ + { + "titre": "Réaliser un développement d'application", + "numero": 1, + "module": [ + { + "titre": "Initiation au dév.", + "abbrev": "Dév", + "code": "R1.01", + "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": "2074", + "coef": "0.42" + }, + { + "ue_reference": "2081", + "coef": "0.24" + }, + ... + ] + }, + ... + ] + }, + ... + ] + }, + ... + ] +} +``` diff --git a/docs/samples/sample_formsemestres.json.md b/docs/samples/sample_formsemestres.json.md index 2e60e9447..31f539f86 100644 --- a/docs/samples/sample_formsemestres.json.md +++ b/docs/samples/sample_formsemestres.json.md @@ -1,39 +1,110 @@ ### formsemestres -`/api/formsemestres/query?etape_apo=V7HU1&annee_scolaire=2021` +`/api/formsemestres/query?etape_apo=XIT123&annee_scolaire=2021` -```json -{ - "block_moyennes": false, - "bul_bgcolor": "white", - "bul_hide_xml": false, - "date_debut_iso": "2021-09-01", - "date_debut": "01/09/2021", - "date_fin_iso": "2022-08-31", - "date_fin": "31/08/2022", - "dept_id": 1, - "elt_annee_apo": "V7HU", - "elt_sem_apo": null, - "ens_can_edit_eval": false, - "etat": true, - "formation_id": 1, - "formsemestre_id": 1, - "gestion_compensation": false, - "gestion_semestrielle": false, - "id": 1, - "modalite": "FI", - "resp_can_change_ens": true, - "resp_can_edit": false, - "responsables": [ - 12, - 42 - ], - "scodoc7_id": null, - "semestre_id": 1, - "titre_num": "BUT MMI semestre 1", - "titre": "BUT MMI", - "titre_formation": "BUT MMI" - } -``` Le `titre`est celui donné par l'utilisateur dans le formsemestre, tandis que le `titre_formation` est l'acronyme de la formation (défini dans son programme pédagogique). + +```json +[ + { + "id": 819, + "modalite": "FI", + "ens_can_edit_eval": true, + "formation_id": 301, + "gestion_compensation": true, + "elt_sem_apo": null, + "semestre_id": 3, + "bul_hide_xml": false, + "elt_annee_apo": null, + "titre": "DUT Informatique (PPN 2013)", + "block_moyennes": false, + "scodoc7_id": "SEM43037", + "date_debut": "01/09/2021", + "gestion_semestrielle": true, + "date_fin": "31/01/2022", + "bul_bgcolor": "white", + "etat": false, + "resp_can_edit": true, + "dept_id": 6, + "resp_can_change_ens": false, + "parcours": [], + "annee_scolaire": "2021 - 2022", + "formsemestre_id": 819, + "titre_num": "DUT Informatique (PPN 2013) semestre 3", + "date_debut_iso": "2021-09-01", + "date_fin_iso": "2022-01-31", + "responsables": [ + 565 + ], + "titre_court": "DUT Info.", + "session_id": "INFO-DUT-FI-S3-2021" + }, + { + "id": 909, + "modalite": "FI", + "ens_can_edit_eval": false, + "formation_id": 301, + "gestion_compensation": false, + "elt_sem_apo": null, + "semestre_id": 4, + "bul_hide_xml": false, + "elt_annee_apo": null, + "titre": "DUT Informatique (PPN 2013)", + "block_moyennes": false, + "scodoc7_id": null, + "date_debut": "17/01/2022", + "gestion_semestrielle": false, + "date_fin": "30/06/2022", + "bul_bgcolor": "white", + "etat": false, + "resp_can_edit": false, + "dept_id": 6, + "resp_can_change_ens": false, + "parcours": [], + "annee_scolaire": "2021 - 2022", + "formsemestre_id": 909, + "titre_num": "DUT Informatique (PPN 2013) semestre 4", + "date_debut_iso": "2022-01-17", + "date_fin_iso": "2022-06-30", + "responsables": [ + 565 + ], + "titre_court": "DUT Info.", + "session_id": "INFO-DUT-FI-S4-2021" + }, + { + "id": 912, + "modalite": "FC", + "ens_can_edit_eval": true, + "formation_id": 332, + "gestion_compensation": false, + "elt_sem_apo": null, + "semestre_id": 4, + "bul_hide_xml": false, + "elt_annee_apo": null, + "titre": "DUT Informatique (PPN 2013)", + "block_moyennes": false, + "scodoc7_id": null, + "date_debut": "17/01/2022", + "gestion_semestrielle": false, + "date_fin": "30/06/2022", + "bul_bgcolor": "white", + "etat": false, + "resp_can_edit": true, + "dept_id": 6, + "resp_can_change_ens": true, + "parcours": [], + "annee_scolaire": "2021 - 2022", + "formsemestre_id": 912, + "titre_num": "DUT Informatique (PPN 2013) semestre 4", + "date_debut_iso": "2022-01-17", + "date_fin_iso": "2022-06-30", + "responsables": [ + 565 + ], + "titre_court": "DUT Info. FC", + "session_id": "INFO-DUT-FC-S4-2021" + } +] +``` diff --git a/docs/samples/sample_groupes-formsemestre-etudiant.json.md b/docs/samples/sample_groupes-formsemestre-etudiant.json.md new file mode 100644 index 000000000..6dffd8be3 --- /dev/null +++ b/docs/samples/sample_groupes-formsemestre-etudiant.json.md @@ -0,0 +1,31 @@ +### groupes-formsemestre-etudiant + +`/api/etudiants/9537` + +```json +[ + { + "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" + }, + ... +] +``` diff --git a/docs/samples/sample_tous-les-etudiants.json.md b/docs/samples/sample_tous-les-etudiants.json.md new file mode 100644 index 000000000..05d0eec91 --- /dev/null +++ b/docs/samples/sample_tous-les-etudiants.json.md @@ -0,0 +1,38 @@ +### tous les etudiants + +`/api/etudiants/` + +```json +[ + { + "civilite": "X", + "code_ine": "1", + "code_nip": "1", + "date_naissance": "", + "dept_id": 1, + "dept_acronym": "TAPI", + "email": "SACHA.COSTA@example.com", + "emailperso": "", + "etudid": 1, + "nom": "COSTA", + "prenom": "SACHA", + "nomprenom": "Sacha COSTA", + "lieu_naissance": "", + "dept_naissance": "", + "nationalite": "", + "boursier": "", + "id": 1, + "codepostaldomicile": "", + "paysdomicile": "", + "telephonemobile": "", + "typeadresse": "domicile", + "domicile": "", + "villedomicile": "", + "telephone": "", + "fax": "", + "description": "" + }, + ... +] +``` +