Merge pull request 'master' (#6) from leonard.montalbano/DocScoDoc:master into master

Reviewed-on: https://scodoc.org/git/viennet/DocScoDoc/pulls/6
This commit is contained in:
Emmanuel Viennet 2021-11-19 10:34:08 +01:00
commit 8be16fa32e

View File

@ -11,7 +11,7 @@ L'API fournit des données JSON, sauf exception (bulletins).
Les objets ScoDoc manipulables sont identifiés par des id: Les objets ScoDoc manipulables sont identifiés par des id:
* etud_id: étudiant * etudid: étudiant
* form_id: un programme de formation (page "programmes"); * form_id: un programme de formation (page "programmes");
* ue_id: une UE dans un programme; * ue_id: une UE dans un programme;
* matiere_id: une matière dans un programme; * matiere_id: une matière dans un programme;
@ -32,17 +32,17 @@ disparaitront en juillet 2022.
Certaines ont plusieurs "routes" (URl), car ScoDoc 7 tolérait divers accès. Certaines ont plusieurs "routes" (URl), car ScoDoc 7 tolérait divers accès.
- `Absences/XMLgetBilletsEtud` (deviendra `api/absences/billets/etud/<etud_id>`) - `Absences/XMLgetBilletsEtud` (deviendra `api/absences/billets/etud/ etudid>`)
- `Absences/AddBilletAbsence` (deviendra `api/absences/billet/add`) - `Absences/AddBilletAbsence` (deviendra `api/absences/billet/add`)
- `Absences/XMLgetAbsEtud` (deviendra `api/absences/<etud_id>`, en json) - `Absences/XMLgetAbsEtud` (deviendra `api/absences/ etudid>`, en json)
- `Notes/evaluation_listenotes` (non existante en ScoDoc9, trop complexe) - `Notes/evaluation_listenotes` (non existante en ScoDoc9, trop complexe)
- `Notes/form_sem` (deviendra `api/formsemestre`) - `Notes/formsemestre_id` (deviendra `api/formsemestre`)
- `Notes/formsemestre_bulletinetud` (deviendra `api/formsemestre_bulletinetud`) - `Notes/formsemestre_bulletinetud` (deviendra `api/formsemestre_bulletinetud`)
- `Notes/XMLgetFormsemestres` (non existante en ScoDoc9, redondant avec `api/formsemestre` ?) - `Notes/XMLgetFormsemestres` (non existante en ScoDoc9, redondant avec `api/formsemestre` ?)
- `etud_info` ou `XMLgetEtudInfos` ou `Absences/XMLgetEtudInfos` ou `Notes/XMLgetEtudInfos` (deviendra `/api/etud/<etud_id>`) - `etud_info` ou `XMLgetEtudInfos` ou `Absences/XMLgetEtudInfos` ou `Notes/XMLgetEtudInfos` (deviendra `/api/etud/ etudid>`)
- `groups_view` - `groups_view`
les routes ci-dessus s'entendent à partir de l'URL de base de votre ScoDoc, c'est Les routes ci-dessus s'entendent à partir de l'URL de base de votre ScoDoc, c'est
à dire `https://votre.site.fr/ScoDoc/<dept>/Scolarite/`, et répondent en GET et à dire `https://votre.site.fr/ScoDoc/<dept>/Scolarite/`, et répondent en GET et
en POST. en POST.
@ -51,40 +51,49 @@ Note:
# Résumé des fonctions d'API ScoDoc 9 (work in progress) # Résumé des fonctions d'API ScoDoc 9 (work in progress)
Basé sur le ticket Basé sur le ticket [#149](https://scodoc.org/git/viennet/ScoDoc/issues/149)
## Définition des points d'accès à l'API REST (jwt): ## Définition des points d'accès à l'API REST (jwt):
**Note: à reformatter: le tableau n'est pas lisible et exploitable** **Note: à reformatter: le tableau n'est pas lisible et exploitable**
Elle sera accessible à l'adresse: https://scodoc.monsite.tld/ScoDoc/api/fonction Elle sera accessible à l'adresse: https://scodoc.monsite.tld/ScoDoc/api/fonction
| Fonction | Méthode | Paramètres | Exemple | Exemple resultat | Commentaires | # 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.
|etud_dept |GET|code_nip|/api/etud_dept/123|[ {exist: true, dept: "GEII", id: 987, dept_id: 3} ]|liste des étudiants avec le code NIP donné triée par ordre d'inscription décroissant|
|etud_info |GET|etud_id|/api/etud_info/987|{"nom": "Mutis","sexe": "M.","email": "alvaro.mutis@example.com","prenom": "ALVARO","nomprenom": "M. Alvaro MUTIS","insemestre": [{"etat": "I",form_sem_id": "SEM12781","date_fin": "2010-07-30","date_debut": "2010-01-25"},{"etat": "I",form_sem_id": "SEM8396","date_fin": "2009-01-16","date_debut": "2008-09-01"}],"etud_id": "EID8768","domicile": "2 Rue Madame","villedomicile": "Paris","telephonemobile": ""}| | Tous les codes >= 400 indiquent que la requête n'a pas été traitée avec succès par nos serveurs.
|etud_bul|GET|etud_id, sem_id|/api/etud_bul/987/12| |cf formsemestre_bulletinetud de [l'ancienne API](https://scodoc.org/ScoDocAPI/)|
|sem_info|GET|sem_id|/api/sem_info/12|[ {"titre": "DUT Génie Electrique et Informatique Industrielle","date_debut": "01/09/2021","date_fin": "02/02/2022","modalite": "FI","sem_id_txt": "S3","titre_num": "DUT Génie Electrique et Informatique Industrielle semestre 3","anneescolaire": "2021 - 2022","periode": 1,"titreannee": "DUT Génie Electrique et Informatique Industrielle semestre 3 FI 2021-2022"} ]| | * [200](https://developer.mozilla.org/fr/docs/Web/HTTP/Status/200) : OK.
|photo|GET|etud_id|/api/photo/123 **OU** /api/photo/123/smal| | | * [400](https://developer.mozilla.org/fr/docs/Web/HTTP/Status/401) : Paramètre manquant, ou valeur incorrecte.
|formations|GET|dept (*facultatif*)|/api/formations **OU** /api/formations?dept=GEI| { "id": 1,"dept_id": 1,"acronyme": "BUT GEII", "titre": "BUT G\u00e9nie Electrique et Informatique Industrielle", "titre_officiel": "BUT G\u00e9nie Electrique et Informatique Industrielle","version": 1,"formation_code": "FCOD1","type_parcours": 600,"code_specialite": "","form_id": 1 }| | * [401](https://developer.mozilla.org/fr/docs/Web/HTTP/Status/401) : Authentification nécessaire. (jeton non précisé ou invalide)
|form_sem|GET|form_id|/api/formations/form_id| | | * [403](https://developer.mozilla.org/fr/docs/Web/HTTP/Status/403) : Action non autorisée. (crédits épuisés, URL non autorisée, etc)
|form_sem_partition|GET|semestre_id|/api/form_sem_partition/semestre_id| | | * [404](https://developer.mozilla.org/fr/docs/Web/HTTP/Status/404) : Page inaccessible. (URL inconnue / impossible d'accéder à l'adresse)
|module_list|GET|semestre_id|/api/module_list/semestre_id| | | * [406](https://developer.mozilla.org/fr/docs/Web/HTTP/Status/406) : Le JSON indiqué en données POST n'est pas valide.
|eval_list|GET|module_id|/api/eval_list/module_id| | | * [408](https://developer.mozilla.org/fr/docs/Web/HTTP/Status/408) : Dépassement du temps maximal autorisé pour laudit.
|evaluation_listenotes|GET|eval_id|/api/evalutation_listenotes/eval_id| | | * [500](https://developer.mozilla.org/fr/docs/Web/HTTP/Status/500) : Erreur inconnue, contactez-nous.
|setGroups|POST|partition_id, groupsLists, groupsToDelete, groupsToCreate|/api/setGroups/???| | | * [503](https://developer.mozilla.org/fr/docs/Web/HTTP/Status/503) : L'API est momentanément indisponible, réessayez dans quelques minutes.
|setNote|POST|eval_id, etud_id, note|/api/setNote/???| |
# Description d'accès aux données
## Départements
* **`departement`**
* **Méthode:** GET
* **Paramètres:** `viewable` (optionnel, si faux liste aussi les départements non accessible à l'utilisateur courant), `format` (json, xml)
* **Format URL:** `/api/departement`
* **Exemple d'utilisation:** `/api/departement`
* **Résultat:** Liste des id de départements.
* **Exemple de résultat:** `[id_1, id_2, id_3, ...]`
# XXX à revoir XXX Fonctions d'accès aux données
## Etudiants ## Etudiants
* **`etud_dept`** * **`etud_dept`**
* Méthode: GET * **Méthode:** GET
* Paramètres: `code_nip` * **Paramètres:** `code_nip`
* Format URL: `/api/etud_dept/<int:code_nip>` * **Format URL:** `/api/etud_dept/<int:code_nip>`
* Exemple d'utilisation: `/api/etud_dept/123` * **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. * **Résultat:** Liste des étudiants avec le code NIP donné tirée par ordre d'inscription décroissant.
* Exemple de résultat: * **Exemple de résultat:**
``` ```
[ [
{ {
@ -95,16 +104,15 @@ Elle sera accessible à l'adresse: https://scodoc.monsite.tld/ScoDoc/api/fonctio
} }
] ]
``` ```
* Codes HTTP:
* **`etud_info`** * **`etud`**
* Méthode: GET * **Méthode:** GET
* Paramètres: `etud_id` * **Paramètres:** etudid
* Format URL: `/api/etud_dept/<int:etud_id>` * **Format URL:** `/api/etud/<int:etudid>`
* Exemple d'utilisation: `/api/etud_info/987` * **Exemple d'utilisation:** `/api/etud/987`
* Résultat: Un dictionnaire avec les informations de l'étudiant correspondant à l'id passé en paramètres. * **Résultat:** Un dictionnaire avec les informations de l'étudiant correspondant à l'id passé en paramètres.
* Exemple de résultat: * **Exemple de résultat:**
``` ```
{ {
"nom": "Mutis", "nom": "Mutis",
@ -115,60 +123,58 @@ Elle sera accessible à l'adresse: https://scodoc.monsite.tld/ScoDoc/api/fonctio
"insemestre": [ "insemestre": [
{ {
"etat": "I", "etat": "I",
form_sem_id": "SEM12781", "formsemestre_id": "SEM12781",
"date_fin": "2010-07-30", "date_fin": "2010-07-30",
"date_debut": "2010-01-25" "date_debut": "2010-01-25"
}, },
{ {
"etat": "I", "etat": "I",
form_sem_id": "SEM8396", "formsemestre_id": "SEM8396",
"date_fin": "2009-01-16", "date_fin": "2009-01-16",
"date_debut": "2008-09-01" "date_debut": "2008-09-01"
} }
], ],
"etud_id": "EID8768", "etudid": "EID8768",
"domicile": "2 Rue Madame", "domicile": "2 Rue Madame",
"villedomicile": "Paris", "villedomicile": "Paris",
"telephonemobile": "" "telephonemobile": ""
} }
``` ```
* Codes HTTP:
* **`etud_bul`** * **`etud_bul`**
* Méthode: GET * **Méthode:** GET
* Paramètres: `etud_id`, `sem_id` * **Paramètres:** `etudid`, `sem_id`
* Format URL: `/api/etud_bul/<int:etud_id>/<int:sem_id>` * **Format URL:** `/api/etud/<int:etudid>/bul/<int:sem_id>`
* Exemple d'utilisation: `/api/etud_bul/987/12` * **Exemple d'utilisation:** `/api/etud/987/bul/12`
* Résultat: * **Résultat:** Le bulletin d'un étudiant en fonction de son id et d'un semestre donné.
* Exemple de résultat: * **Exemple de résultat:** [Bulletins par défaut](https://scodoc.org/ParametrageBulletins/#exemple-1-bulletins-par-defaut)
* Codes HTTP:
* **`etud_photo`** * **`etud_photo`**
* Méthode: GET * **Méthode:** GET
* Paramètres: `etud_id`, `small` * **Paramètres:** `etudid`, `small`
* Format URL: `/api/etud_photo/<int:etud_id>` **OU** `/api/etud_photo/<int:etud_id>/small` (_ajout du paramètre **small** pour la version small_) * **Format URL:** `/api/etud/<int:etudid>/photo` **OU** `/api/etud/<int:etudid>/photo/small` (_ajout du paramètre **small** pour la version small_)
* Exemple d'utilisation: `/api/etud_photo/123` **OU** `/api/etud_photo/123/small` (_pour la version small_) * **Exemple d'utilisation:** `/api/etud/123/photo` **OU** `/api/etud/123/photo/small` (_pour la version small_)
* Résultat: * **Résultat:** Image en JPEG ou PNG.
* Exemple de résultat:
* Codes HTTP:
## Semestres ## Semestres
* **`sem_info`** * **`sem_info`**
* Méthode: GET * **Méthode:** GET
* Paramètres: `sem_id` * **Paramètres:** `sem_id`
* Format URL: `/api/sem_id/<int:sem_id>` * **Format URL:** `/api/sem_info/<int:sem_id>`
* Exemple d'utilisation: `/api/sem_info/12` * **Exemple d'utilisation:** `/api/sem_info/12`
* Résultat: Une liste avec les informations du semestre correspondant à l'id passé en paramètres. * **Résultat:** Une liste avec les informations du semestre correspondant à l'id passé en paramètres.
* Exemple de résultat: * **Exemple de résultat:**
``` ```
[ [
{ {
"titre": "DUT Génie Electrique et Informatique Industrielle", "titre": "DUT Génie Electrique et Informatique Industrielle",
"date_debut": "01/09/2021", "date_debut": "2021-09-01",
"date_fin": "02/02/2022", "date_fin": "2022-02-02",
"modalite": "FI", "modalite": "FI",
"sem_id_txt": "S3", "sem_id_txt": "S3",
"titre_num": "DUT Génie Electrique et Informatique Industrielle semestre 3", "titre_num": "DUT Génie Electrique et Informatique Industrielle semestre 3",
@ -178,62 +184,83 @@ Elle sera accessible à l'adresse: https://scodoc.monsite.tld/ScoDoc/api/fonctio
} }
] ]
``` ```
* Codes HTTP:
## Départements
* **`departements`**
* Méthode:
* Paramètres: `viewable` (optionnel, si faux liste aussi les départements non accessible à l'utilisateur courant), `format` (json, xml)
* Format URL:
* Exemple d'utilisation:
* Résultat: Liste des id de départements.
* Exemple de résultat:
* Codes HTTP:
## Programmes de formations ## Programmes de formations
* **`formations`** * **`formation`**
* Méthode: GET * **Méthode:** GET
* Paramètres: `form_id` (_optionnel, si absent liste toutes les formations_) * **Paramètres:** `form_id` (_optionnel, si absent liste toutes les formations_)
* Format URL: `/api/formations` **ou** `/api/formations/<int:form_id>` * **Format URL:** `/api/formation` **ou** `/api/formation/<int:form_id>`
* Exemple d'utilisation: `/api/formations` **ou** `̀/api/formations/1` * **Exemple d'utilisation:** `/api/formation` **ou** `̀/api/formation/1`
* Résultat: Liste des formations. * **Résultat:** Liste des formations.
* Exemple de résultat: * **Exemple de résultat:** `[formation_1, formation_2, formation_3, ...]`
* Codes HTTP:
* **`form_export`**
* Méthode: * **`formation_export`**
* Paramètres: `form_id`, `export_ids` (défaut "faux") * **Méthode:** GET
* Format URL: * **Paramètres:** `form_id`, `export_ids` (_par défaut "faux"_)
* Exemple d'utilisation: * **Format URL:** `/api/formation_export/<int:form_id>`
* Résultat: la formation, avec UE, matières, modules (un arbre). * **Exemple d'utilisation:** `/api/formation_export/596`
* Exemple de résultat: * **Résultat:** La formation, avec UE, matières, modules (_un arbre_).
* Codes HTTP: * **Exemple de résultat:**
```
{
"nom": "formation",
"UE": "ue",
"matieres": [
"matiere_1": "maths",
"matiere_2": "anglais",
...
],
"modules": "module"
}
```
## UE
...
## Modules de formation
* **`Notes/do_moduleimpl_list`**
* **Paramètres**: `formsemestre_id, moduleimpl_id, module_id]`
* **Résultat:** liste de moduleimpl
* **`Notes/do_moduleimpl_withmodule_list`**
* **Paramètres**: `formsemestre_id, moduleimpl_id, module_id]`
* **Résultat:** liste triée de moduleimpl, avec l'attribut `module`
## 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`. 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_id`.
* **`form_sem`** * **`formsemestre_id`**
* Méthode: GET * **Méthode:** GET
* Paramètres (_tous optionnels_): `form_sem_id`, `form_id`, `etape_apo`, `etape_apo2` * **Paramètres (_tous optionnels_):** `formsemestre_id`, `form_id`, `etape_apo`, `etape_apo2`
* Format URL: `/api/form_sem?form_id=1&etape_apo=V1RT` * **Format URL:** `/api/formsemestre_id?form_id=1&etape_apo=V1RT`
* Exemple d'utilisation: `/api/form_sem?format=xml&etape_apo=V1RT` * **Exemple d'utilisation:** `/api/formsemestre_id?format=xml&etape_apo=V1RT`
* Résultat: Liste des semestres correspondant. * **Résultat:** Liste des semestres correspondant.
* Exemple de résultat: * **Exemple de résultat:** `[sem_1, sem_2, sem_3, ...]`
* Codes HTTP:
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 (eg 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: DUT, LP, ... (défini au niveau du parcours dans ScoDoc = NAME)
* Modalité: FI, FC, FA
* "Spécialité" : S1 (ou S1D pour les sem. 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 (eg 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` : semestre S1 d'un DUT informatique de 2014 en formation initiale (FI)
## 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 (eg 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:** DUT, LP, ... (défini au niveau du parcours dans ScoDoc = NAME)
* **Modalité:** FI, FC, FA
* **"Spécialité":** S1 (ou S1D pour les sem. 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 (eg 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)
@ -241,29 +268,29 @@ Exemple: `INFO-DUT-FI-S1-2014` : semestre S1 d'un DUT informatique de 2014 en fo
## 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 d'un nombre quelconque de groupes d'étudiants. 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.
* **`form_sem_partition`** * **`formsemestre_id_partition`**
* Méthode: GET * **Méthode: GET**
* Paramètres: `form_sem_id` * **Paramètres:** `formsemestre_id`
* Format URL: `/api/form_sem_partition/form_sem_id` * **Format URL:** `/api/formsemestre_id_partition/<int:formsemestre_id>`
* Exemple d'utilisation: * **Exemple d'utilisation:** `/api/formsemestre_id_partition/48`
* Résultat: * **Résultat:** La liste de toutes les partitions selon un `formsemestre_id` donné.
* Exemple de résultat: ici au format JSON * **Exemple de résultat:** ici au format JSON
``` ```
[ [
{ {
form_sem_id": "SEM12781", "formsemestre_id": "SEM12781",
"partition_id": "P23840", "partition_id": "P23840",
"partition_name": "TD" "partition_name": "TD"
"group": [ "group": [
{ {
form_sem_id": "SEM12781", "formsemestre_id": "SEM12781",
"partition_id": "P23840", "partition_id": "P23840",
"group_name": "A", "group_name": "A",
"group_id": "G23841", "group_id": "G23841",
"partition_name": "TD" "partition_name": "TD"
}, },
{ {
form_sem_id": "SEM12781", "formsemestre_id": "SEM12781",
"partition_id": "P23840", "partition_id": "P23840",
"group_name": "B", "group_name": "B",
"group_id": "G23843", "group_id": "G23843",
@ -272,19 +299,19 @@ L'ensemble des étudiants d'un semestre peut être réparti selon une ou plusieu
], ],
}, },
{ {
form_sem_id": "SEM12781", "formsemestre_id": "SEM12781",
"partition_id": "P23941", "partition_id": "P23941",
"partition_name": "TP" "partition_name": "TP"
"group": [ "group": [
{ {
form_sem_id": "SEM12781", "formsemestre_id": "SEM12781",
"partition_id": "P23941", "partition_id": "P23941",
"group_name": "A1", "group_name": "A1",
"group_id": "G23942", "group_id": "G23942",
"partition_name": "TP" "partition_name": "TP"
}, },
{ {
form_sem_id": "SEM12781", "formsemestre_id": "SEM12781",
"partition_id": "P23941", "partition_id": "P23941",
"group_name": "A2", "group_name": "A2",
"group_id": "G23943", "group_id": "G23943",
@ -293,12 +320,12 @@ L'ensemble des étudiants d'un semestre peut être réparti selon une ou plusieu
], ],
}, },
{ {
form_sem_id": "SEM12781", "formsemestre_id": "SEM12781",
"partition_id": "P22833", "partition_id": "P22833",
"partition_name": null "partition_name": null
"group": [ "group": [
{ {
form_sem_id": "SEM12781", "formsemestre_id": "SEM12781",
"partition_id": "P22833", "partition_id": "P22833",
"group_name": null, "group_name": null,
"group_id": "G22834", "group_id": "G22834",
@ -308,37 +335,42 @@ L'ensemble des étudiants d'un semestre peut être réparti selon une ou plusieu
} }
] ]
``` ```
* **`groups_view`** * **`groups_view`**
* Paramètres: form_sem_id `ou `group_ids` (peut être répété), `with_codes=0|1`, `all_groups=0|1`, `etat=None|I` * **Méthode:** GET
* Résultat: liste des étudiants dans un groupe. * **Paramètres:** `formsemestre_id` ou `group_ids` (_peut être répété_), `with_codes=0|1`, `all_groups=0|1`, `etat=None|I`
* Exemple: ici au format XML avec `with_codes=1`: * **Format URL:**
``` * **Exemple d'utilisation:**
<group_list origin="" caption="soit 21 étudiants inscrits et 2 démissionaires." id="gt_711068"> * **Résultat:** Liste des étudiants dans un groupe.
* **Exemple de résultat au format XML:** (_avec `with_codes=1`_)
```
<group_list origin="" caption="soit 21 étudiants inscrits et 2 démissionaires." id="gt_711068">
<etud> <etud>
<nom value="TOTO"/> <nom value="TOTO"/>
<prenom value="Marc"/> <prenom value="Marc"/>
<etat value="I"/> <etat value="I"/>
<email value="toto@example.com"/> <email value="toto@example.com"/>
<etud_id value="EID9876"/> <etudid value="EID9876"/>
<code_nip value="987654"/> <code_nip value="987654"/>
<code_ine value=""/> <code_ine value=""/>
</etud> </etud>
<etud> <etud>
<nom value="ALVIS SAMOS"/> <nom value="ALVIS SAMOS"/>
<prenom value="NATHALIE"/> <prenom value="NATHALIE"/>
<etat value="I"/> <etat value="I"/>
<email value="xxx@example.com"/> <email value="xxx@example.com"/>
<etud_id value="EID12345"/> <etudid value="EID12345"/>
<code_nip value="12345678"/> <code_nip value="12345678"/>
<code_ine value=""/> <code_ine value=""/>
</etud> </etud>
</group_list> </group_list>
``` ```
Et un autre exemple en format JSON: * **Exemple de résultat au format JSON:**
``` ```
[ [
{ {
"etat":"I", "etat":"I",
"emailperso":null, "emailperso":null,
@ -362,106 +394,63 @@ Et un autre exemple en format JSON:
"P62030":"A1" "P62030":"A1"
}, },
... ...
] ]
``` ```
* **`set_groups`** * **`set_groups`**
* Méthode: POST * **Méthode:** POST
* Paramètres: `partition_id`, `groups`, `groups_to_delete`, `groups_to_create` * **Paramètres:** `partition_id`, `groups`, `groups_to_delete`, `groups_to_create`
* Format URL: `/api/set_groups?partition_id=<int:partition_id>&groups=<int:groups>&groups_to_delete=<int:groups_to_delete>&groups_to_create=<int:groups_to_create>` * **Format URL:** `/api/set_groups?partition_id=<int:partition_id>&groups=<int:groups>&groups_to_delete=<int:groups_to_delete>&groups_to_create=<int:groups_to_create>`
* Exemple d'utilisation: * **Exemple d'utilisation:** `/api/set_groups?partition_id=65&groups=77&groups_to_delete=8&groups_to_create=4`
* Résultat: Set les groups. * **Résultat:** Set les groups.
* Exemple de résultat:
* Codes HTTP:
## Etudiants
* **`etud_info`**
* Paramètres: `etud_id` ou `code_nip` ou `code_ine`
* Résultat: informations sur cette étudiant et les semestres dans lesquels il est (ou a été) inscrit.
* Exemple: `etud_info?format=json&etud_id=12345`
```
{
"nom": "Mutis",
"sexe": "M.",
"email": "alvaro.mutis@example.com",
"prenom": "ALVARO",
"nomprenom": "M. Alvaro MUTIS",
"insemestre": [
{
"etat": "I",
form_sem_id": "SEM12781",
"date_fin": "2010-07-30",
"date_debut": "2010-01-25"
},
{
"etat": "I",
form_sem_id": "SEM8396",
"date_fin": "2009-01-16",
"date_debut": "2008-09-01"
}
],
"code_ine": "",
"etud_id": "EID8768",
"code_nip": "10991002",
"photo_url": "/ScoDoc/static/photos/F13/RT_EID8768.h90.jpg",
"domicile": "2 Rue Madame",
"villedomicile": "Paris",
"telephonemobile": ""
"fax": "",
"annee_bac": "2010",
"bac": "S",
"specialite": "SCIENTIFIQUE",
"nomlycee": "",
"villelycee": "",
"codelycee": "0950650R",
"codepostallycee": "",
}
```
## Bulletins de notes ## Bulletins de notes
* **`evaluations`** * **`evaluations`**
* Méthode: GET * **Méthode:** GET
* Paramètres: `module_id` * **Paramètres:** `module_id`
* Format URL: `/api/evaluations/<int:module_id>` * **Format URL:** `/api/evaluations/<int:module_id>`
* Exemple d'utilisation: `/api/evaluations/54` * **Exemple d'utilisation:** `/api/evaluations/54`
* Résultat: Liste des evaluations à partir de l'id d'un module. * **Résultat:** Liste des evaluations à partir de l'id d'un module.
* Exemple de résultat: * **Exemple de résultat:** `[eval_1, eval_2, eval_3, ...]`
* Codes HTTP:
* **`eval_notes`** * **`eval_notes`**
* Méthode: GET * **Méthode**: GET
* Paramètres: `eval_id` * **Paramètres**: `eval_id`
* Format URL: `/api/eval_notes/<int:eval_id>` * **Format URL:** `/api/eval_notes/<int:eval_id>`
* Exemple d'utilisation: `/api/eval_notes/24` * **Exemple d'utilisation:** `/api/eval_notes/24`
* Résultat: Liste des notes à partir de l'id d'une évaluation donnée. * **Résultat:** Liste des notes à partir de l'id d'une évaluation donnée.
* Exemple de résultat: * **Exemple de résultat:**
* Codes HTTP: ```
[
{
"84": "13",
"85": "15",
"86": "9",
...
}
]
```
* **`eval_set_notes`** * **`eval_set_notes`**
* Méthode: POST * **Méthode:** POST
* Paramètres: `eval_id`, `etud_id`, `note` * **Paramètres:** `eval_id`, `etudid`, `note`
* Format URL: `/api/eval_set_notes?eval_id=<int:eval_id>&etud_id=<int:etud_id>&note=<int:note>` * **Format URL:** `/api/eval_set_notes?eval_id=<int:eval_id> etudid=<int etudid>&note=<int:note>`
* Exemple d'utilisation: `/api/eval_set_notes?eval_id=6&etud_id=456&note=15` * **Exemple d'utilisation:** `/api/eval_set_notes?eval_id=6 etudid=456&note=15`
* Résultat: Set les notes d'une évaluation pour un étudiant donné. * **Résultat:** Set les notes d'une évaluation pour un étudiant donné.
* Exemple de résultat:
* Codes HTTP:
* **`Notes/formsemestre_bulletinetud`** * **`Notes/formsemestre_bulletinetud`**
* Paramètres: `form_sem_id`, `etud_id`, `format` (`xml`ou `json`), `version` (`short`, `selectedevals`ou `long`) * **Méthode:** GET
* Résultat: bulletin de notes * **Paramètres:** `formsemestre_id`, `etudid`, `format` (`xml`ou `json`), `version` (`short`, `selectedevals` ou `long`)
* Exemple: ici au format JSON, pour une version courte (`version=short`) * **Format URL:**
``` * **Exemple d'utilisation:**
{ * **Résultat:** Un bulletin de notes.
* **Exemple de résultat:** ici au format JSON, pour une version courte (`version=short`)
```
{
"rang": { "rang": {
"ninscrits": 52, "ninscrits": 52,
"value": "1" "value": "1"
@ -474,7 +463,7 @@ Et un autre exemple en format JSON:
"prenom": "Roberto", "prenom": "Roberto",
"sexe": "M.", "sexe": "M.",
"code_ine": "", "code_ine": "",
"etud_id": "EID9860", etudid": "EID9860",
"code_nip": "123456789", "code_nip": "123456789",
"email": "roberto@santateresa.mx", "email": "roberto@santateresa.mx",
"photo_url": "\/ScoDoc\/static\/photos\/F68\/RT_EID29960.h90.jpg" "photo_url": "\/ScoDoc\/static\/photos\/F68\/RT_EID29960.h90.jpg"
@ -489,7 +478,7 @@ Et un autre exemple en format JSON:
"decision": { "decision": {
"etat": "I", "etat": "I",
"code": "ADM", "code": "ADM",
"compenseform_sem_id" : "SEM12345" /* si ce semestre en compense un autre */ "compenseformsemestre_id" : "SEM12345" /* si ce semestre en compense un autre */
}, },
"note": { "note": {
"max": "15.51", "max": "15.51",
@ -497,7 +486,7 @@ Et un autre exemple en format JSON:
"value": "15.51", "value": "15.51",
"min": "07.29" "min": "07.29"
}, },
"etud_id": "EID9860", etudid": "EID9860",
"decision_ue": [ "decision_ue": [
{ {
"acronyme": "UE11", "acronyme": "UE11",
@ -570,7 +559,7 @@ Et un autre exemple en format JSON:
"group_name": "" "group_name": ""
} }
], ],
form_sem_id": "SEM12345", formsemestre_id": "SEM12345",
"etape_apo": "V1RT", "etape_apo": "V1RT",
"ue": [ "ue": [
{ {
@ -1085,55 +1074,73 @@ Et un autre exemple en format JSON:
"id": "UE23716" "id": "UE23716"
} }
], ],
"situation": "Inscrit le 02\/09\/2015. D\u00e9cision jury: Valid\u00e9. UE acquises: UE11, UE12. Autoris\u00e9 \u00e0 s&apos;inscrire en S2." "situation": "Inscrit le 2015-09-02. D\u00e9cision jury: Valid\u00e9. UE acquises: UE11, UE12. Autoris\u00e9 \u00e0 s&apos;inscrire en S2."
} }
``` ```
## Absences ## Absences
* **`Absences/ListeAbsEtud`** **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.
* Paramètres: `etud_id, absjust_only, format`. `absjust_only` spécifie si on veut les absences justifiées ou non.
* Résultat: liste d'absences. Exemple:
```{jour: "2021-02-10", ampm: "0", description: "M2202", }```
(`ampm` vaut 1 le matin et 0 l'après-midi).
* **`Absences/doSignaleAbsence`**
* Paramètres: ```datedebut, datefin, moduleimpl_id=None, demijournee=2, estjust=False,description, etud_id```
* Résultat: *html*
* Remarques: dates au format `dd/mm/yyyy`. Date de fin non incluse. `demijournee`: 2 si journée complète, 1 matin, 0 après-midi.
* **`Absences/doAnnuleAbsence`** * **`absences`**
* Paramètres: ```datedebut, datefin, demijournee, etud_id``` * **Méthode:** GET
* Résultat: *html* * **Paramètres:** `etudid`, `abs_just_only, format`, `abs_just_only` (_spécifie si on veut les absences justifiées ou non_).
* **Format URL:** `/api/absences/<int:etudid>`
* **Exemple d'utilisation:** `/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_).
* **`Absences/doAnnuleJustif`**
* Paramètres: ```context, datedebut0, datefin0, demijournee```
* Résultat: *html*
* **`Absences/EtatAbsencesGr`**
* Liste les absences d'un ou plusieurs groupes entre deux dates. * **`abs_signale`**
* Paramètres: ```group_ids, debut, fin, with_boursier=True, format=html``` * **Méthode:** POST
* Résultat: liste des absences. Si `format="json"`, cela donne par exemple: * **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=<int:etudid>`
boursier: "N", * **Exemple d'utilisation:** `date_debut=2015-02-01&date_fin=2015-02-03&demi_journee=4&description=""&etudid=874`
nbabs: "9", * **Résultat:** *html*
nbabsjust: "2",
nbabsnonjust: "7",
nbjustifs_noabs: "0",
nomprenom: "Mme Poisson Dodouce", * **`abs_annule`**
etud_id: "EID12345" * **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=<int: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*
* **`abs_groupe_etat`**
* **Méthode:** GET
* **Paramètres:** `group_ids`, `date_debut`, `date_fin`, `with_boursier=True`, `format=html`
* **Format URL:** `/api/abs_group_etat/?group_ids=group_ids&date_debut=date_debut&date_fin=date_fin`
* **Exemple d'utilisation:** `/api/abs_group_etat/?group_ids=45&date_debut=2019-01-30&date_fin=2019-02-30`
* **Résultat:** Liste des absences d'un ou plusieurs groupes entre deux dates.
* **Exemple de résultat:** si `format="json"` cela donne:
```
[
{
"boursier": "N",
"nbabs": "9",
"nbabsjust": "2",
"nbabsnonjust": "7",
"nbjustifs_noabs": "0",
"nomprenom": "Mme Poisson Dodouce",
"etudid": "EID12345"
}, },
... ...
]``` ]
* Remarque: on peut spécifier plusieurs groupes. ```
## Modules
* **`Notes/do_moduleimpl_list`**
* Paramètres: `form_sem_id, moduleimpl_id, module_id]`
* Résultat: liste de moduleimpl
* **`Notes/do_moduleimpl_withmodule_list`**
* Paramètres: `form_sem_id, moduleimpl_id, module_id]`
* Résultat: liste triée de moduleimpl, avec l'attribut `module`
## En savoir plus ## En savoir plus