1146 lines
33 KiB
Markdown
1146 lines
33 KiB
Markdown
|
|
# API pour ScoDoc 9
|
|
L'API ScoDoc permet à des applications tierces d'interroger ScoDoc. Elle offre un accès aux informations aux formats XML et JSON.
|
|
|
|
La version ScoDoc 9 a introduit une nouvelle API avec un nouveau mécanisme d'authentification.
|
|
**Les clients de l'ancienne API ScoDoc 7 doivent être adaptés pour fonctionner avec ScoDoc 9.**
|
|
|
|
Cette API est encore incomplète: n'hésitez pas à demander de nouveaux accès en écrivant à la liste de diffusion.
|
|
|
|
L'API fournit des données JSON, sauf exception (bulletins).
|
|
|
|
Les objets ScoDoc manipulables sont identifiés par des id:
|
|
|
|
* etud_id: étudiant
|
|
* form_id: un programme de formation (page "programmes");
|
|
* ue_id: une UE dans un programme;
|
|
* matiere_id: une matière dans un programme;
|
|
* module_id: un module dans un programme.
|
|
* formsmestre_id: un "semestre" de formation.
|
|
|
|
|
|
L'URL complète est de la forme: `https://scodoc.example.com/ScoDoc/api/fonction
|
|
|
|
# Fonctions de l'API ScoDoc 7 portées en ScoDoc 9
|
|
|
|
L'ancienne API ScoDoc 7 est décrite ici: [ScoDocAPI](ScoDocAPI.md)
|
|
|
|
Afin de garantir l'interopérabilité avec les clients ScoDoc 7 (ENT, etc), les
|
|
fonctions suivantes sont disponibles avec le mécanisme d'authentification
|
|
basique de ScoDoc 7. Elles sont considérées comme *obsolètes* ("deprecated") et
|
|
disparaitront en juillet 2022.
|
|
|
|
Certaines ont plusieurs "routes" (URl), car ScoDoc 7 tolérait divers accès.
|
|
|
|
- `Absences/XMLgetBilletsEtud` (deviendra `api/absences/billets/etud/<etud_id>`)
|
|
- `Absences/AddBilletAbsence` (deviendra `api/absences/billet/add`)
|
|
- `Absences/XMLgetAbsEtud` (deviendra `api/absences/<etud_id>`, en json)
|
|
- `Notes/evaluation_listenotes` (non existante en ScoDoc9, trop complexe)
|
|
- `Notes/form_sem` (deviendra `api/formsemestre`)
|
|
- `Notes/formsemestre_bulletinetud` (deviendra `api/formsemestre_bulletinetud`)
|
|
- `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>`)
|
|
- `groups_view`
|
|
|
|
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
|
|
en POST.
|
|
|
|
Note:
|
|
- `Absences/listeBillets` est un formulaire et ne fait pas partie de l'API.
|
|
|
|
# Résumé des fonctions d'API ScoDoc 9 (work in progress)
|
|
|
|
Basé sur le ticket
|
|
## Définition des points d'accès à l'API REST (jwt):
|
|
|
|
**Note: à reformatter: le tableau n'est pas lisible et exploitable**
|
|
|
|
Elle sera accessible à l'adresse: https://scodoc.monsite.tld/ScoDoc/api/fonction
|
|
|
|
| Fonction | Méthode | Paramètres | Exemple | Exemple resultat | Commentaires |
|
|
|:--------:|:-------:|:----------:|:-------:|:----------------|:------------:|
|
|
|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": ""}| |
|
|
|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"} ]| |
|
|
|photo|GET|etud_id|/api/photo/123 **OU** /api/photo/123/smal| | |
|
|
|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 }| |
|
|
|form_sem|GET|form_id|/api/formations/form_id| | |
|
|
|form_sem_partition|GET|semestre_id|/api/form_sem_partition/semestre_id| | |
|
|
|module_list|GET|semestre_id|/api/module_list/semestre_id| | |
|
|
|eval_list|GET|module_id|/api/eval_list/module_id| | |
|
|
|evaluation_listenotes|GET|eval_id|/api/evalutation_listenotes/eval_id| | |
|
|
|setGroups|POST|partition_id, groupsLists, groupsToDelete, groupsToCreate|/api/setGroups/???| | |
|
|
|setNote|POST|eval_id, etud_id, note|/api/setNote/???| |
|
|
|
|
|
|
|
|
# XXX à revoir XXX Fonctions d'accès aux données
|
|
## Etudiants
|
|
* **`etud_dept`**
|
|
* Méthode: GET
|
|
* Paramètres: `code_nip`
|
|
* Format URL: `/api/etud_dept/<int:code_nip>`
|
|
* Exemple d'utilisation: `/api/etud_dept/123`
|
|
* Résultat: Liste des étudiants avec le code NIP donné tirée par ordre d'inscription décroissant.
|
|
* Exemple de résultat:
|
|
```
|
|
[
|
|
{
|
|
exist: true,
|
|
dept: "GEII",
|
|
id: 987,
|
|
dept_id: 3
|
|
}
|
|
]
|
|
```
|
|
* Codes HTTP:
|
|
|
|
|
|
* **`etud_info`**
|
|
* Méthode: GET
|
|
* Paramètres: `etud_id`
|
|
* Format URL: `/api/etud_dept/<int:etud_id>`
|
|
* Exemple d'utilisation: `/api/etud_info/987`
|
|
* Résultat: Un dictionnaire avec les informations de l'étudiant correspondant à l'id passé en paramètres.
|
|
* Exemple de résultat:
|
|
```
|
|
{
|
|
"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": ""
|
|
}
|
|
```
|
|
* Codes HTTP:
|
|
|
|
|
|
* **`etud_bul`**
|
|
* Méthode: GET
|
|
* Paramètres: `etud_id`, `sem_id`
|
|
* Format URL: `/api/etud_bul/<int:etud_id>/<int:sem_id>`
|
|
* Exemple d'utilisation: `/api/etud_bul/987/12`
|
|
* Résultat:
|
|
* Exemple de résultat:
|
|
* Codes HTTP:
|
|
|
|
|
|
* **`etud_photo`**
|
|
* Méthode: GET
|
|
* Paramètres: `etud_id`, `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_)
|
|
* Exemple d'utilisation: `/api/etud_photo/123` **OU** `/api/etud_photo/123/small` (_pour la version small_)
|
|
* Résultat:
|
|
* Exemple de résultat:
|
|
* Codes HTTP:
|
|
|
|
|
|
## Semestres
|
|
* **`sem_info`**
|
|
* Méthode: GET
|
|
* Paramètres: `sem_id`
|
|
* Format URL: `/api/sem_id/<int:sem_id>`
|
|
* Exemple d'utilisation: `/api/sem_info/12`
|
|
* Résultat: Une liste avec les informations du semestre correspondant à l'id passé en paramètres.
|
|
* Exemple de résultat:
|
|
```
|
|
[
|
|
{
|
|
"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"
|
|
}
|
|
]
|
|
```
|
|
* 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
|
|
* **`formations`**
|
|
* Méthode: GET
|
|
* Paramètres: `form_id` (_optionnel, si absent liste toutes les formations_)
|
|
* Format URL: `/api/formations` **ou** `/api/formations/<int:form_id>`
|
|
* Exemple d'utilisation: `/api/formations` **ou** `̀/api/formations/1`
|
|
* Résultat: Liste des formations.
|
|
* Exemple de résultat:
|
|
* Codes HTTP:
|
|
|
|
|
|
* **`form_export`**
|
|
* Méthode:
|
|
* Paramètres: `form_id`, `export_ids` (défaut "faux")
|
|
* Format URL:
|
|
* Exemple d'utilisation:
|
|
* Résultat: la formation, avec UE, matières, modules (un arbre).
|
|
* Exemple de résultat:
|
|
* Codes HTTP:
|
|
|
|
## 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`.
|
|
|
|
* **`form_sem`**
|
|
* Méthode: GET
|
|
* Paramètres (_tous optionnels_): `form_sem_id`, `form_id`, `etape_apo`, `etape_apo2`
|
|
* Format URL: `/api/form_sem?form_id=1&etape_apo=V1RT`
|
|
* Exemple d'utilisation: `/api/form_sem?format=xml&etape_apo=V1RT`
|
|
* Résultat: Liste des semestres correspondant.
|
|
* Exemple de résultat:
|
|
* 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)
|
|
|
|
|
|
|
|
|
|
## 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.
|
|
|
|
* **`form_sem_partition`**
|
|
* Méthode: GET
|
|
* Paramètres: `form_sem_id`
|
|
* Format URL: `/api/form_sem_partition/form_sem_id`
|
|
* Exemple d'utilisation:
|
|
* Résultat:
|
|
* Exemple de résultat: ici au format JSON
|
|
```
|
|
[
|
|
{
|
|
form_sem_id": "SEM12781",
|
|
"partition_id": "P23840",
|
|
"partition_name": "TD"
|
|
"group": [
|
|
{
|
|
form_sem_id": "SEM12781",
|
|
"partition_id": "P23840",
|
|
"group_name": "A",
|
|
"group_id": "G23841",
|
|
"partition_name": "TD"
|
|
},
|
|
{
|
|
form_sem_id": "SEM12781",
|
|
"partition_id": "P23840",
|
|
"group_name": "B",
|
|
"group_id": "G23843",
|
|
"partition_name": "TD"
|
|
},
|
|
],
|
|
},
|
|
{
|
|
form_sem_id": "SEM12781",
|
|
"partition_id": "P23941",
|
|
"partition_name": "TP"
|
|
"group": [
|
|
{
|
|
form_sem_id": "SEM12781",
|
|
"partition_id": "P23941",
|
|
"group_name": "A1",
|
|
"group_id": "G23942",
|
|
"partition_name": "TP"
|
|
},
|
|
{
|
|
form_sem_id": "SEM12781",
|
|
"partition_id": "P23941",
|
|
"group_name": "A2",
|
|
"group_id": "G23943",
|
|
"partition_name": "TP"
|
|
},
|
|
],
|
|
},
|
|
{
|
|
form_sem_id": "SEM12781",
|
|
"partition_id": "P22833",
|
|
"partition_name": null
|
|
"group": [
|
|
{
|
|
form_sem_id": "SEM12781",
|
|
"partition_id": "P22833",
|
|
"group_name": null,
|
|
"group_id": "G22834",
|
|
"partition_name": null
|
|
}
|
|
],
|
|
}
|
|
]
|
|
```
|
|
* **`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`
|
|
* Résultat: liste des étudiants dans un groupe.
|
|
* Exemple: ici au format XML avec `with_codes=1`:
|
|
```
|
|
<group_list origin="" caption="soit 21 étudiants inscrits et 2 démissionaires." id="gt_711068">
|
|
|
|
<etud>
|
|
<nom value="TOTO"/>
|
|
<prenom value="Marc"/>
|
|
<etat value="I"/>
|
|
<email value="toto@example.com"/>
|
|
<etud_id value="EID9876"/>
|
|
<code_nip value="987654"/>
|
|
<code_ine value=""/>
|
|
</etud>
|
|
|
|
<etud>
|
|
<nom value="ALVIS SAMOS"/>
|
|
<prenom value="NATHALIE"/>
|
|
<etat value="I"/>
|
|
<email value="xxx@example.com"/>
|
|
<etud_id value="EID12345"/>
|
|
<code_nip value="12345678"/>
|
|
<code_ine value=""/>
|
|
</etud>
|
|
</group_list>
|
|
```
|
|
Et un autre exemple en format JSON:
|
|
```
|
|
[
|
|
{
|
|
"etat":"I",
|
|
"emailperso":null,
|
|
"prenom":"Dalil",
|
|
"nom_disp":"CLINTO",
|
|
"email":"xxx@example.com",
|
|
"P62029":"A",
|
|
"P62032":null,
|
|
"P62031":"G1",
|
|
"P62030":"A1"
|
|
},
|
|
{
|
|
"etat":"I",
|
|
"emailperso":null,
|
|
"prenom":"Georges",
|
|
"nom_disp":"BUSH",
|
|
"email":"bush@example.com",
|
|
"P62029":"A",
|
|
"P62032":null,
|
|
"P62031":"G1",
|
|
"P62030":"A1"
|
|
},
|
|
...
|
|
]
|
|
```
|
|
|
|
* **`set_groups`**
|
|
* Méthode: POST
|
|
* 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>`
|
|
* Exemple d'utilisation:
|
|
* 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
|
|
* **`evaluations`**
|
|
* Méthode: GET
|
|
* Paramètres: `module_id`
|
|
* Format URL: `/api/evaluations/<int:module_id>`
|
|
* Exemple d'utilisation: `/api/evaluations/54`
|
|
* Résultat: Liste des evaluations à partir de l'id d'un module.
|
|
* Exemple de résultat:
|
|
* Codes HTTP:
|
|
|
|
|
|
* **`eval_notes`**
|
|
* Méthode: GET
|
|
* Paramètres: `eval_id`
|
|
* Format URL: `/api/eval_notes/<int:eval_id>`
|
|
* Exemple d'utilisation: `/api/eval_notes/24`
|
|
* Résultat: Liste des notes à partir de l'id d'une évaluation donnée.
|
|
* Exemple de résultat:
|
|
* Codes HTTP:
|
|
|
|
|
|
* **`eval_set_notes`**
|
|
* Méthode: POST
|
|
* Paramètres: `eval_id`, `etud_id`, `note`
|
|
* Format URL: `/api/eval_set_notes?eval_id=<int:eval_id>&etud_id=<int:etud_id>¬e=<int:note>`
|
|
* Exemple d'utilisation: `/api/eval_set_notes?eval_id=6&etud_id=456¬e=15`
|
|
* Résultat: Set les notes d'une évaluation pour un étudiant donné.
|
|
* Exemple de résultat:
|
|
* Codes HTTP:
|
|
|
|
|
|
* **`Notes/formsemestre_bulletinetud`**
|
|
* Paramètres: `form_sem_id`, `etud_id`, `format` (`xml`ou `json`), `version` (`short`, `selectedevals`ou `long`)
|
|
* Résultat: bulletin de notes
|
|
* Exemple: ici au format JSON, pour une version courte (`version=short`)
|
|
```
|
|
{
|
|
"rang": {
|
|
"ninscrits": 52,
|
|
"value": "1"
|
|
},
|
|
"etape_apo2": "",
|
|
"etape_apo3": "",
|
|
"etape_apo4": "",
|
|
"etudiant": {
|
|
"nom": "BOLANO",
|
|
"prenom": "Roberto",
|
|
"sexe": "M.",
|
|
"code_ine": "",
|
|
"etud_id": "EID9860",
|
|
"code_nip": "123456789",
|
|
"email": "roberto@santateresa.mx",
|
|
"photo_url": "\/ScoDoc\/static\/photos\/F68\/RT_EID29960.h90.jpg"
|
|
},
|
|
"bonus_sport_culture": {
|
|
"value": 0
|
|
},
|
|
"absences": {
|
|
"nbabsjust": 0,
|
|
"nbabs": 1
|
|
},
|
|
"decision": {
|
|
"etat": "I",
|
|
"code": "ADM",
|
|
"compenseform_sem_id" : "SEM12345" /* si ce semestre en compense un autre */
|
|
},
|
|
"note": {
|
|
"max": "15.51",
|
|
"moy": "10.80",
|
|
"value": "15.51",
|
|
"min": "07.29"
|
|
},
|
|
"etud_id": "EID9860",
|
|
"decision_ue": [
|
|
{
|
|
"acronyme": "UE11",
|
|
"code": "ADM",
|
|
"ects": "16.0",
|
|
"titre": "D\u00e9couverte m\u00e9tiers",
|
|
"numero": "11",
|
|
"ue_id": "UE21456"
|
|
},
|
|
{
|
|
"acronyme": "UE12",
|
|
"code": "ADM",
|
|
"ects": "14.0",
|
|
"titre": "Mise \u00e0 niveau des comp\u00e9tences transversales et scientifiques",
|
|
"numero": "12",
|
|
"ue_id": "UE21478"
|
|
}
|
|
],
|
|
"ue_capitalisee": [
|
|
|
|
],
|
|
"publie": 1,
|
|
"autorisation_inscription": [
|
|
{
|
|
"semestre_id": 2
|
|
}
|
|
],
|
|
"appreciation": [
|
|
|
|
],
|
|
"note_max": {
|
|
"value": 20
|
|
},
|
|
"date": "2014-07-12T17:38:47.693262",
|
|
"rang_group": [
|
|
{
|
|
"ninscrits": 26,
|
|
"value": "1",
|
|
"group_type": "TD",
|
|
"group_name": "B"
|
|
},
|
|
{
|
|
"ninscrits": 13,
|
|
"value": "1",
|
|
"group_type": "TP",
|
|
"group_name": "B1"
|
|
},
|
|
{
|
|
"ninscrits": 4,
|
|
"value": "1",
|
|
"group_type": "G",
|
|
"group_name": "G4"
|
|
},
|
|
{
|
|
"ninscrits": "",
|
|
"value": "",
|
|
"group_type": "tutorat",
|
|
"group_name": ""
|
|
},
|
|
{
|
|
"ninscrits": "",
|
|
"value": "",
|
|
"group_type": "App",
|
|
"group_name": ""
|
|
},
|
|
{
|
|
"ninscrits": "",
|
|
"value": "",
|
|
"group_type": "sport",
|
|
"group_name": ""
|
|
}
|
|
],
|
|
form_sem_id": "SEM12345",
|
|
"etape_apo": "V1RT",
|
|
"ue": [
|
|
{
|
|
"acronyme": "UE11",
|
|
"rang": "1",
|
|
"code_apogee": "VRTU11",
|
|
"ects": "16",
|
|
"numero": "11",
|
|
"note": {
|
|
"max": "16.17",
|
|
"value": "16.17",
|
|
"min": "06.56"
|
|
},
|
|
"module": [
|
|
{
|
|
"coefficient": 3,
|
|
"rang": {
|
|
"value": "1"
|
|
},
|
|
"code": "M1101",
|
|
"code_apogee": "VRT1101",
|
|
"numero": 1101,
|
|
"note": {
|
|
"moy": "08.94",
|
|
"nb_notes": 51,
|
|
"nb_missing": 0,
|
|
"max": "19.18",
|
|
"min": "03.70",
|
|
"nb_valid_evals": 3,
|
|
"value": "19.18"
|
|
},
|
|
"abbrev": "R\u00e9seaux d'entreprises",
|
|
"effectif": {
|
|
"value": 51
|
|
},
|
|
"titre": "Initiation aux r\u00e9seaux d'entreprises",
|
|
"evaluation": [
|
|
|
|
],
|
|
"id": "MIP27427"
|
|
},
|
|
{
|
|
"coefficient": 2,
|
|
"rang": {
|
|
"value": "2"
|
|
},
|
|
"code": "M1102",
|
|
"code_apogee": "VRT1102",
|
|
"numero": 1102,
|
|
"note": {
|
|
"moy": "12.58",
|
|
"nb_notes": 50,
|
|
"nb_missing": 1,
|
|
"max": "16.79",
|
|
"min": "02.50",
|
|
"nb_valid_evals": 2,
|
|
"value": "16.50"
|
|
},
|
|
"abbrev": "Initiation \u00e0 la t\u00e9l\u00e9phonie",
|
|
"effectif": {
|
|
"value": 51
|
|
},
|
|
"titre": "Initiation \u00e0 la t\u00e9l\u00e9phonie d'entreprise",
|
|
"evaluation": [
|
|
|
|
],
|
|
"id": "MIP27437"
|
|
},
|
|
{
|
|
"coefficient": 1.5,
|
|
"rang": {
|
|
"value": "1"
|
|
},
|
|
"code": "M1103",
|
|
"code_apogee": "VRT1103",
|
|
"numero": 1103,
|
|
"note": {
|
|
"moy": "08.26",
|
|
"nb_notes": 51,
|
|
"nb_missing": 0,
|
|
"max": "13.41",
|
|
"min": "00.94",
|
|
"nb_valid_evals": 2,
|
|
"value": "13.41"
|
|
},
|
|
"abbrev": "Architecture des \u00e9quipements informatiques",
|
|
"effectif": {
|
|
"value": 51
|
|
},
|
|
"titre": "Architecture des \u00e9quipements informatiques",
|
|
"evaluation": [
|
|
|
|
],
|
|
"id": "MIP27451"
|
|
},
|
|
{
|
|
"coefficient": 2,
|
|
"rang": {
|
|
"value": "1"
|
|
},
|
|
"code": "M1104",
|
|
"code_apogee": "VRT1104",
|
|
"numero": 1104,
|
|
"note": {
|
|
"moy": "10.77",
|
|
"nb_notes": 51,
|
|
"nb_missing": 0,
|
|
"max": "17.90",
|
|
"min": "04.63",
|
|
"nb_valid_evals": 3,
|
|
"value": "17.90"
|
|
},
|
|
"abbrev": "Principe et architecture des r\u00e9seaux",
|
|
"effectif": {
|
|
"value": 51
|
|
},
|
|
"titre": "Principe et architecture des r\u00e9seaux",
|
|
"evaluation": [
|
|
|
|
],
|
|
"id": "MIP27431"
|
|
},
|
|
{
|
|
"coefficient": 2,
|
|
"rang": {
|
|
"value": "1"
|
|
},
|
|
"code": "M1105",
|
|
"code_apogee": "VRT1105",
|
|
"numero": 1105,
|
|
"note": {
|
|
"moy": "11.00",
|
|
"nb_notes": 51,
|
|
"nb_missing": 0,
|
|
"max": "17.83",
|
|
"min": "04.98",
|
|
"nb_valid_evals": 2,
|
|
"value": "17.83"
|
|
},
|
|
"abbrev": "Bases des syst\u00e8mes d'exploitation",
|
|
"effectif": {
|
|
"value": 51
|
|
},
|
|
"titre": "Bases des syst\u00e8mes d'exploitation",
|
|
"evaluation": [
|
|
|
|
],
|
|
"id": "MIP27433"
|
|
},
|
|
{
|
|
"coefficient": 1.5,
|
|
"rang": {
|
|
"value": "6"
|
|
},
|
|
"code": "M1106",
|
|
"code_apogee": "VRT1106",
|
|
"numero": 1106,
|
|
"note": {
|
|
"moy": "13.05",
|
|
"nb_notes": 51,
|
|
"nb_missing": 0,
|
|
"max": "17.79",
|
|
"min": "07.08",
|
|
"nb_valid_evals": 1,
|
|
"value": "16.25"
|
|
},
|
|
"abbrev": "Initiation au d\u00e9veloppement Web",
|
|
"effectif": {
|
|
"value": 51
|
|
},
|
|
"titre": "Initiation au d\u00e9veloppement Web",
|
|
"evaluation": [
|
|
|
|
],
|
|
"id": "MIP27449"
|
|
},
|
|
{
|
|
"coefficient": 1.5,
|
|
"rang": {
|
|
"value": "9"
|
|
},
|
|
"code": "M1107",
|
|
"code_apogee": "VRT1107",
|
|
"numero": 1107,
|
|
"note": {
|
|
"moy": "09.36",
|
|
"nb_notes": 51,
|
|
"nb_missing": 0,
|
|
"max": "14.21",
|
|
"min": "04.17",
|
|
"nb_valid_evals": 3,
|
|
"value": "11.66"
|
|
},
|
|
"abbrev": "Initiation \u00e0 la mesure du signal",
|
|
"effectif": {
|
|
"value": 51
|
|
},
|
|
"titre": "Initiation \u00e0 la mesure du signal",
|
|
"evaluation": [
|
|
|
|
],
|
|
"id": "MIP27440"
|
|
},
|
|
{
|
|
"coefficient": 1.5,
|
|
"rang": {
|
|
"value": "7"
|
|
},
|
|
"code": "M1108",
|
|
"code_apogee": "VRT1108",
|
|
"numero": 1108,
|
|
"note": {
|
|
"moy": "10.49",
|
|
"nb_notes": 51,
|
|
"nb_missing": 0,
|
|
"max": "16.31",
|
|
"min": "05.39",
|
|
"nb_valid_evals": 4,
|
|
"value": "13.22"
|
|
},
|
|
"abbrev": "Acquisition et codage de l'information",
|
|
"effectif": {
|
|
"value": 51
|
|
},
|
|
"titre": "Acquisition et codage de l'information",
|
|
"evaluation": [
|
|
|
|
],
|
|
"id": "MIP27453"
|
|
},
|
|
{
|
|
"coefficient": 1,
|
|
"rang": {
|
|
"value": "4 ex"
|
|
},
|
|
"code": "M1109",
|
|
"code_apogee": "VRT1109",
|
|
"numero": 1109,
|
|
"note": {
|
|
"moy": "12.46",
|
|
"nb_notes": 51,
|
|
"nb_missing": 0,
|
|
"max": "16.00",
|
|
"min": "09.00",
|
|
"nb_valid_evals": 1,
|
|
"value": "15.00"
|
|
},
|
|
"abbrev": "PT : Recherche documentaire",
|
|
"effectif": {
|
|
"value": 51
|
|
},
|
|
"titre": "PT : Recherche documentaire",
|
|
"evaluation": [
|
|
|
|
],
|
|
"id": "MIP27444"
|
|
}
|
|
],
|
|
"effectif": "51",
|
|
"titre": "D\u00e9couverte m\u00e9tiers",
|
|
"id": "UE21456"
|
|
},
|
|
{
|
|
"acronyme": "UE12",
|
|
"rang": "5",
|
|
"code_apogee": "VRTU12",
|
|
"ects": "14",
|
|
"numero": "12",
|
|
"note": {
|
|
"max": "15.20",
|
|
"value": "14.63",
|
|
"min": "07.94"
|
|
},
|
|
"module": [
|
|
{
|
|
"coefficient": 2,
|
|
"rang": {
|
|
"value": "3 ex"
|
|
},
|
|
"code": "M1201",
|
|
"code_apogee": "VRT1201",
|
|
"numero": 10,
|
|
"note": {
|
|
"moy": "13.02",
|
|
"nb_notes": 51,
|
|
"nb_missing": 0,
|
|
"max": "16.00",
|
|
"min": "10.00",
|
|
"nb_valid_evals": 1,
|
|
"value": "14.00"
|
|
},
|
|
"abbrev": "Anglais",
|
|
"effectif": {
|
|
"value": 51
|
|
},
|
|
"titre": "Anglais g\u00e9n\u00e9ral de communication et initiation au vocabulaire technique",
|
|
"evaluation": [
|
|
|
|
],
|
|
"id": "MIP27430"
|
|
},
|
|
{
|
|
"coefficient": 2,
|
|
"rang": {
|
|
"value": "16 ex"
|
|
},
|
|
"code": "M1202",
|
|
"code_apogee": "VRT1202",
|
|
"numero": 20,
|
|
"note": {
|
|
"moy": "12.74",
|
|
"nb_notes": 51,
|
|
"nb_missing": 0,
|
|
"max": "17.75",
|
|
"min": "04.00",
|
|
"nb_valid_evals": 2,
|
|
"value": "14.00"
|
|
},
|
|
"abbrev": "Expression",
|
|
"effectif": {
|
|
"value": 51
|
|
},
|
|
"titre": "EC: \u00c9l\u00e9ments fondamentaux de la communication",
|
|
"evaluation": [
|
|
|
|
],
|
|
"id": "MIP27439"
|
|
},
|
|
{
|
|
"coefficient": 1,
|
|
"rang": {
|
|
"value": "1 ex"
|
|
},
|
|
"code": "M1203",
|
|
"code_apogee": "VRT1203",
|
|
"numero": 30,
|
|
"note": {
|
|
"moy": "NA",
|
|
"nb_notes": 0,
|
|
"nb_missing": 51,
|
|
"max": "-",
|
|
"min": "-",
|
|
"nb_valid_evals": 0,
|
|
"value": "-"
|
|
},
|
|
"abbrev": "PPP: Connaitre son champ d'activit\u00e9",
|
|
"effectif": {
|
|
"value": 51
|
|
},
|
|
"titre": "PPP: Connaitre son champ d'activit\u00e9",
|
|
"evaluation": [
|
|
|
|
],
|
|
"id": "MIP27436"
|
|
},
|
|
{
|
|
"coefficient": 2,
|
|
"rang": {
|
|
"value": "6"
|
|
},
|
|
"code": "M1204",
|
|
"code_apogee": "VRT1204",
|
|
"numero": 40,
|
|
"note": {
|
|
"moy": "10.66",
|
|
"nb_notes": 51,
|
|
"nb_missing": 0,
|
|
"max": "16.35",
|
|
"min": "05.73",
|
|
"nb_valid_evals": 8,
|
|
"value": "14.09"
|
|
},
|
|
"abbrev": "Mise \u00e0 niveau en num\u00e9ration et calculs",
|
|
"effectif": {
|
|
"value": 51
|
|
},
|
|
"titre": "Mise \u00e0 niveau en num\u00e9ration et calculs",
|
|
"evaluation": [
|
|
|
|
],
|
|
"id": "MIP27454"
|
|
},
|
|
{
|
|
"coefficient": 2,
|
|
"rang": {
|
|
"value": "23"
|
|
},
|
|
"code": "M1205",
|
|
"code_apogee": "VRT1205",
|
|
"numero": 50,
|
|
"note": {
|
|
"moy": "10.37",
|
|
"nb_notes": 51,
|
|
"nb_missing": 0,
|
|
"max": "18.69",
|
|
"min": "05.01",
|
|
"nb_valid_evals": 5,
|
|
"value": "10.58"
|
|
},
|
|
"abbrev": "Connaissances et Outils pour le signal",
|
|
"effectif": {
|
|
"value": 51
|
|
},
|
|
"titre": "Harmonisation des connaissances et des outils pour le signal",
|
|
"evaluation": [
|
|
|
|
],
|
|
"id": "MIP27432"
|
|
},
|
|
{
|
|
"coefficient": 2,
|
|
"rang": {
|
|
"value": "3 ex"
|
|
},
|
|
"code": "M1206",
|
|
"code_apogee": "VRT1206",
|
|
"numero": 60,
|
|
"note": {
|
|
"moy": "11.22",
|
|
"nb_notes": 51,
|
|
"nb_missing": 0,
|
|
"max": "16.76",
|
|
"min": "03.91",
|
|
"nb_valid_evals": 6,
|
|
"value": "15.12"
|
|
},
|
|
"abbrev": "Circuits \u00e9lectroniques : mise \u00e0 niveau",
|
|
"effectif": {
|
|
"value": 51
|
|
},
|
|
"titre": "Circuits \u00e9lectroniques : mise \u00e0 niveau",
|
|
"evaluation": [
|
|
|
|
],
|
|
"id": "MIP27435"
|
|
},
|
|
{
|
|
"coefficient": 2,
|
|
"rang": {
|
|
"value": "1 ex"
|
|
},
|
|
"code": "M1207",
|
|
"code_apogee": "VRT1207",
|
|
"numero": 70,
|
|
"note": {
|
|
"moy": "08.39",
|
|
"nb_notes": 51,
|
|
"nb_missing": 0,
|
|
"max": "20.00",
|
|
"min": "00.00",
|
|
"nb_valid_evals": 1,
|
|
"value": "20.00"
|
|
},
|
|
"abbrev": "Programmation 1",
|
|
"effectif": {
|
|
"value": 51
|
|
},
|
|
"titre": "Bases de la programmation",
|
|
"evaluation": [
|
|
|
|
],
|
|
"id": "MIP27445"
|
|
},
|
|
{
|
|
"coefficient": 1,
|
|
"rang": {
|
|
"value": "1 ex"
|
|
},
|
|
"code": "M1208",
|
|
"code_apogee": "VRT1208",
|
|
"numero": 80,
|
|
"note": {
|
|
"moy": "NA",
|
|
"nb_notes": 0,
|
|
"nb_missing": 51,
|
|
"max": "-",
|
|
"min": "-",
|
|
"nb_valid_evals": 0,
|
|
"value": "-"
|
|
},
|
|
"abbrev": "M\u00e9thodologie Universitaire 1",
|
|
"effectif": {
|
|
"value": 51
|
|
},
|
|
"titre": "Adaptation et m\u00e9thodologie pour la r\u00e9ussite Universitaire",
|
|
"evaluation": [
|
|
|
|
],
|
|
"id": "MIP27434"
|
|
}
|
|
],
|
|
"effectif": "51",
|
|
"titre": "Mise \u00e0 niveau des comp\u00e9tences transversales et scientifiques",
|
|
"id": "UE21478"
|
|
},
|
|
{
|
|
"acronyme": "UE 1S",
|
|
"rang": "1 ex",
|
|
"code_apogee": "",
|
|
"ects": "0",
|
|
"numero": "13",
|
|
"note": {
|
|
"max": "00.00",
|
|
"value": "00.00",
|
|
"min": "00.00"
|
|
},
|
|
"module": [
|
|
|
|
],
|
|
"effectif": "51",
|
|
"titre": "Sport &amp; Culture",
|
|
"id": "UE23716"
|
|
}
|
|
],
|
|
"situation": "Inscrit le 02\/09\/2015. D\u00e9cision jury: Valid\u00e9. UE acquises: UE11, UE12. Autoris\u00e9 \u00e0 s'inscrire en S2."
|
|
}
|
|
```
|
|
|
|
## Absences
|
|
* **`Absences/ListeAbsEtud`**
|
|
* 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`**
|
|
* Paramètres: ```datedebut, datefin, demijournee, etud_id```
|
|
* Résultat: *html*
|
|
|
|
* **`Absences/doAnnuleJustif`**
|
|
* Paramètres: ```context, datedebut0, datefin0, demijournee```
|
|
* Résultat: *html*
|
|
|
|
* **`Absences/EtatAbsencesGr`**
|
|
* Liste les absences d'un ou plusieurs groupes entre deux dates.
|
|
* Paramètres: ```group_ids, debut, fin, with_boursier=True, format=html```
|
|
* Résultat: liste des absences. Si `format="json"`, cela donne par exemple:
|
|
```[ {
|
|
boursier: "N",
|
|
nbabs: "9",
|
|
nbabsjust: "2",
|
|
nbabsnonjust: "7",
|
|
nbjustifs_noabs: "0",
|
|
nomprenom: "Mme Poisson Dodouce",
|
|
etud_id: "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
|
|
Voir exemples d'utilisation de l'API en Python, dans `tests/api/`.
|
|
|
|
|
|
|
|
|
|
|