2021-09-14 12:31:16 +02:00
# 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:
2021-11-16 15:17:07 +01:00
* etudid: étudiant
2021-11-10 13:22:10 +01:00
* form_id: un programme de formation (page "programmes");
2021-09-14 12:31:16 +02:00
* 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
2021-10-28 10:23:28 +02:00
L'ancienne API ScoDoc 7 est décrite ici: [ScoDocAPI ](ScoDocAPI.md )
2021-09-14 12:31:16 +02:00
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.
2021-11-16 15:17:07 +01:00
- `Absences/XMLgetBilletsEtud` (deviendra `api/absences/billets/etud/ etudid>` )
2021-10-24 19:18:57 +02:00
- `Absences/AddBilletAbsence` (deviendra `api/absences/billet/add` )
2021-11-16 15:17:07 +01:00
- `Absences/XMLgetAbsEtud` (deviendra `api/absences/ etudid>` , en json)
2021-11-09 22:24:57 +01:00
- `Notes/evaluation_listenotes` (non existante en ScoDoc9, trop complexe)
2021-11-18 17:16:04 +01:00
- `Notes/formsemestre_id` (deviendra `api/formsemestre` )
2021-11-09 22:24:57 +01:00
- `Notes/formsemestre_bulletinetud` (deviendra `api/formsemestre_bulletinetud` )
- `Notes/XMLgetFormsemestres` (non existante en ScoDoc9, redondant avec `api/formsemestre` ?)
2021-11-16 15:17:07 +01:00
- `etud_info` ou `XMLgetEtudInfos` ou `Absences/XMLgetEtudInfos` ou `Notes/XMLgetEtudInfos` (deviendra `/api/etud/ etudid>` )
2021-11-01 19:06:52 +01:00
- `groups_view`
2021-09-14 12:31:16 +02:00
2021-11-15 16:14:16 +01:00
Les routes ci-dessus s'entendent à partir de l'URL de base de votre ScoDoc, c'est
2021-09-14 12:31:16 +02:00
à dire `https://votre.site.fr/ScoDoc/<dept>/Scolarite/` , et répondent en GET et
en POST.
2021-10-24 19:18:57 +02:00
Note:
- `Absences/listeBillets` est un formulaire et ne fait pas partie de l'API.
2021-11-09 21:37:37 +01:00
# Résumé des fonctions d'API ScoDoc 9 (work in progress)
2021-09-14 12:31:16 +02:00
2021-11-15 16:14:16 +01:00
Basé sur le ticket [#149 ](https://scodoc.org/git/viennet/ScoDoc/issues/149 )
2021-11-09 21:37:37 +01:00
## 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
2021-11-16 15:17:07 +01:00
# 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.
2021-11-09 21:37:37 +01:00
2021-11-16 15:17:07 +01:00
Tous les codes >= 400 indiquent que la requête n'a pas été traitée avec succès par nos serveurs.
2021-11-09 21:37:37 +01:00
2021-11-16 15:17:07 +01:00
* [200 ](https://developer.mozilla.org/fr/docs/Web/HTTP/Status/200 ) : OK.
* [400 ](https://developer.mozilla.org/fr/docs/Web/HTTP/Status/401 ) : Paramètre manquant, ou valeur incorrecte.
* [401 ](https://developer.mozilla.org/fr/docs/Web/HTTP/Status/401 ) : Authentification nécessaire. (jeton non précisé ou invalide)
* [403 ](https://developer.mozilla.org/fr/docs/Web/HTTP/Status/403 ) : Action non autorisée. (crédits épuisés, URL non autorisée, etc)
* [404 ](https://developer.mozilla.org/fr/docs/Web/HTTP/Status/404 ) : Page inaccessible. (URL inconnue / impossible d'accéder à l'adresse)
* [406 ](https://developer.mozilla.org/fr/docs/Web/HTTP/Status/406 ) : Le JSON indiqué en données POST n'est pas valide.
* [408 ](https://developer.mozilla.org/fr/docs/Web/HTTP/Status/408 ) : Dépassement du temps maximal autorisé pour l’ audit.
* [500 ](https://developer.mozilla.org/fr/docs/Web/HTTP/Status/500 ) : Erreur inconnue, contactez-nous.
* [503 ](https://developer.mozilla.org/fr/docs/Web/HTTP/Status/503 ) : L'API est momentanément indisponible, réessayez dans quelques minutes.
2021-11-09 21:37:37 +01:00
2021-11-16 15:17:07 +01:00
# Description d'accès aux données
2021-11-15 16:14:16 +01:00
## Départements
2021-11-18 17:16:04 +01:00
* **`departement`**
2021-11-16 15:17:07 +01:00
* **Méthode:** GET
* **Paramètres:** `viewable` (optionnel, si faux liste aussi les départements non accessible à l'utilisateur courant), `format` (json, xml)
2021-11-18 17:16:04 +01:00
* **Format URL:** `/api/departement`
* **Exemple d'utilisation:** `/api/departement`
2021-11-16 15:17:07 +01:00
* **Résultat:** Liste des id de départements.
* **Exemple de résultat:** `[id_1, id_2, id_3, ...]`
2021-11-15 16:14:16 +01:00
2021-11-10 13:22:10 +01:00
## Etudiants
* **`etud_dept`**
2021-11-16 15:17:07 +01:00
* **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:**
2021-11-10 13:22:10 +01:00
```
[
{
exist: true,
dept: "GEII",
id: 987,
dept_id: 3
}
]
```
2021-11-18 17:16:04 +01:00
* **`etud`**
2021-11-16 15:17:07 +01:00
* **Méthode:** GET
* **Paramètres:** etudid
2021-11-18 17:16:04 +01:00
* **Format URL:** `/api/etud/<int:etudid>`
* **Exemple d'utilisation:** `/api/etud/987`
2021-11-16 15:17:07 +01:00
* **Résultat:** Un dictionnaire avec les informations de l'étudiant correspondant à l'id passé en paramètres.
* **Exemple de résultat:**
2021-11-10 13:22:10 +01:00
```
{
2021-11-16 15:17:07 +01:00
"nom": "Mutis",
"sexe": "M.",
"email": "alvaro.mutis@example.com",
"prenom": "ALVARO",
"nomprenom": "M. Alvaro MUTIS",
"insemestre": [
{
"etat": "I",
2021-11-18 17:16:04 +01:00
"formsemestre_id": "SEM12781",
"date_fin": "2010-07-30",
"date_debut": "2010-01-25"
2021-11-16 15:17:07 +01:00
},
{
"etat": "I",
2021-11-18 17:16:04 +01:00
"formsemestre_id": "SEM8396",
"date_fin": "2009-01-16",
"date_debut": "2008-09-01"
2021-11-16 15:17:07 +01:00
}
2021-11-10 13:22:10 +01:00
],
2021-11-16 15:17:07 +01:00
"etudid": "EID8768",
2021-11-10 13:22:10 +01:00
"domicile": "2 Rue Madame",
"villedomicile": "Paris",
"telephonemobile": ""
}
```
* **`etud_bul`**
2021-11-16 15:17:07 +01:00
* **Méthode:** GET
* **Paramètres:** `etudid` , `sem_id`
2021-11-18 17:16:04 +01:00
* **Format URL:** `/api/etud/<int:etudid>/bul/<int:sem_id>`
* **Exemple d'utilisation:** `/api/etud/987/bul/12`
2021-11-16 15:17:07 +01:00
* **Résultat:** Le bulletin d'un étudiant en fonction de son id et d'un semestre donné.
* **Exemple de résultat:** [Bulletins par défaut ](https://scodoc.org/ParametrageBulletins/#exemple-1-bulletins-par-defaut )
2021-11-10 13:22:10 +01:00
* **`etud_photo`**
2021-11-16 15:17:07 +01:00
* **Méthode:** GET
* **Paramètres:** `etudid` , `small`
2021-11-18 17:16:04 +01:00
* **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/123/photo` **OU** `/api/etud/123/photo/small` (_pour la version small_)
2021-11-16 15:17:07 +01:00
* **Résultat:** Image en JPEG ou PNG.
2021-11-10 13:22:10 +01:00
## Semestres
* **`sem_info`**
2021-11-16 15:17:07 +01:00
* **Méthode:** GET
* **Paramètres:** `sem_id`
2021-11-18 17:16:04 +01:00
* **Format URL:** `/api/sem_info/<int:sem_id>`
2021-11-16 15:17:07 +01:00
* **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:**
2021-11-10 13:22:10 +01:00
```
[
{
"titre": "DUT Génie Electrique et Informatique Industrielle",
2021-11-18 17:16:04 +01:00
"date_debut": "2021-09-01",
"date_fin": "2022-02-02",
2021-11-10 13:22:10 +01:00
"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"
}
]
```
2021-11-15 16:14:16 +01:00
2021-09-14 12:31:16 +02:00
## Programmes de formations
2021-11-18 17:16:04 +01:00
* **`formation`**
2021-11-16 15:17:07 +01:00
* **Méthode:** GET
* **Paramètres:** `form_id` (_optionnel, si absent liste toutes les formations_)
2021-11-18 17:16:04 +01:00
* **Format URL:** `/api/formation` **ou** `/api/formation/<int:form_id>`
* **Exemple d'utilisation:** `/api/formation` **ou** `̀/api/formation/1`
2021-11-16 15:17:07 +01:00
* **Résultat:** Liste des formations.
2021-11-18 17:16:04 +01:00
* **Exemple de résultat:** `[formation_1, formation_2, formation_3, ...]`
2021-11-16 15:17:07 +01:00
2021-09-14 12:31:16 +02:00
2021-11-18 17:16:04 +01:00
* **`formation_export`**
2021-11-16 15:17:07 +01:00
* **Méthode:** GET
* **Paramètres:** `form_id` , `export_ids` (_par défaut "faux"_)
2021-11-18 17:16:04 +01:00
* **Format URL:** `/api/formation_export/<int:form_id>`
* **Exemple d'utilisation:** `/api/formation_export/596`
2021-11-16 15:17:07 +01:00
* **Résultat:** La formation, avec UE, matières, modules (_un arbre_).
* **Exemple de résultat:**
```
{
"nom": "formation",
"UE": "ue",
"matieres": [
"matiere_1": "maths",
"matiere_2": "anglais",
...
],
"modules": "module"
}
```
2021-11-18 17:16:04 +01:00
2021-11-16 15:17:07 +01:00
## UE
...
2021-11-15 16:14:16 +01:00
## Modules de formation
* **`Notes/do_moduleimpl_list`**
2021-11-18 17:16:04 +01:00
* **Paramètres**: `formsemestre_id, moduleimpl_id, module_id]`
2021-11-16 15:17:07 +01:00
* **Résultat:** liste de moduleimpl
2021-11-15 16:14:16 +01:00
* **`Notes/do_moduleimpl_withmodule_list`**
2021-11-18 17:16:04 +01:00
* **Paramètres**: `formsemestre_id, moduleimpl_id, module_id]`
2021-11-16 15:17:07 +01:00
* **Résultat:** liste triée de moduleimpl, avec l'attribut `module`
2021-11-18 17:16:04 +01:00
## 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_id` .
* **`formsemestre_id`**
* **Méthode:** GET
* **Paramètres (_tous optionnels_):** `formsemestre_id` , `form_id` , `etape_apo` , `etape_apo2`
* **Format URL:** `/api/formsemestre_id?form_id=1&etape_apo=V1RT`
* **Exemple d'utilisation:** `/api/formsemestre_id?format=xml&etape_apo=V1RT`
* **Résultat:** Liste des semestres correspondant.
* **Exemple de résultat:** `[sem_1, sem_2, sem_3, ...]`
2021-11-15 16:14:16 +01:00
## 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:
2021-09-14 12:31:16 +02:00
2021-11-16 15:17:07 +01:00
* **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).
2021-09-14 12:31:16 +02:00
2021-11-16 15:17:07 +01:00
**Exemple:** `INFO-DUT-FI-S1-2014` équivaut à un semestre S1 d'un DUT informatique de 2014 en formation initiale (FI)
2021-09-14 12:31:16 +02:00
## 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.
2021-11-18 17:16:04 +01:00
* **`formsemestre_id_partition`**
2021-11-16 15:17:07 +01:00
* **Méthode: GET**
2021-11-18 17:16:04 +01:00
* **Paramètres:** `formsemestre_id`
* **Format URL:** `/api/formsemestre_id_partition/<int:formsemestre_id>`
* **Exemple d'utilisation:** `/api/formsemestre_id_partition/48`
* **Résultat:** La liste de toutes les partitions selon un `formsemestre_id` donné.
2021-11-16 15:17:07 +01:00
* **Exemple de résultat:** ici au format JSON
```
[
{
2021-11-18 17:16:04 +01:00
"formsemestre_id": "SEM12781",
2021-11-16 15:17:07 +01:00
"partition_id": "P23840",
"partition_name": "TD"
"group": [
2021-11-10 13:22:10 +01:00
{
2021-11-18 17:16:04 +01:00
"formsemestre_id": "SEM12781",
2021-11-10 13:22:10 +01:00
"partition_id": "P23840",
"group_name": "A",
"group_id": "G23841",
"partition_name": "TD"
},
{
2021-11-18 17:16:04 +01:00
"formsemestre_id": "SEM12781",
2021-11-10 13:22:10 +01:00
"partition_id": "P23840",
"group_name": "B",
"group_id": "G23843",
"partition_name": "TD"
},
],
2021-11-16 15:17:07 +01:00
},
{
2021-11-18 17:16:04 +01:00
"formsemestre_id": "SEM12781",
2021-11-16 15:17:07 +01:00
"partition_id": "P23941",
"partition_name": "TP"
"group": [
2021-11-10 13:22:10 +01:00
{
2021-11-18 17:16:04 +01:00
"formsemestre_id": "SEM12781",
2021-11-10 13:22:10 +01:00
"partition_id": "P23941",
"group_name": "A1",
"group_id": "G23942",
"partition_name": "TP"
},
{
2021-11-18 17:16:04 +01:00
"formsemestre_id": "SEM12781",
2021-11-10 13:22:10 +01:00
"partition_id": "P23941",
"group_name": "A2",
"group_id": "G23943",
"partition_name": "TP"
},
2021-11-16 15:17:07 +01:00
],
},
{
2021-11-18 17:16:04 +01:00
"formsemestre_id": "SEM12781",
2021-11-16 15:17:07 +01:00
"partition_id": "P22833",
"partition_name": null
"group": [
2021-11-10 13:22:10 +01:00
{
2021-11-18 17:16:04 +01:00
"formsemestre_id": "SEM12781",
2021-11-10 13:22:10 +01:00
"partition_id": "P22833",
"group_name": null,
"group_id": "G22834",
"partition_name": null
}
2021-11-16 15:17:07 +01:00
],
}
]
```
2021-09-14 12:31:16 +02:00
2021-11-16 15:17:07 +01:00
* **`groups_view`**
* **Méthode:** GET
2021-11-18 17:16:04 +01:00
* **Paramètres:** `formsemestre_id` ou `group_ids` (_peut être répété_), `with_codes=0|1` , `all_groups=0|1` , `etat=None|I`
2021-11-16 15:17:07 +01:00
* **Format URL:**
* **Exemple d'utilisation:**
* **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 >
< nom value = "TOTO" / >
< prenom value = "Marc" / >
< etat value = "I" / >
< email value = "toto@example.com" / >
< etudid 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" / >
< etudid value = "EID12345" / >
< code_nip value = "12345678" / >
< code_ine value = "" / >
< / etud >
< / group_list >
```
* **Exemple de résultat au 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"
},
...
]
```
2021-11-10 13:22:10 +01:00
* **`set_groups`**
2021-11-16 15:17:07 +01:00
* **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:** `/api/set_groups?partition_id=65&groups=77&groups_to_delete=8&groups_to_create=4`
* **Résultat:** Set les groups.
2021-11-10 13:22:10 +01:00
2021-09-14 12:31:16 +02:00
## Bulletins de notes
2021-11-10 13:22:10 +01:00
* **`evaluations`**
2021-11-16 15:17:07 +01:00
* **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:** `[eval_1, eval_2, eval_3, ...]`
2021-11-10 13:22:10 +01:00
* **`eval_notes`**
2021-11-16 15:17:07 +01:00
* **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:**
```
[
{
"84": "13",
"85": "15",
"86": "9",
...
}
]
```
2021-11-10 13:22:10 +01:00
* **`eval_set_notes`**
2021-11-16 15:17:07 +01:00
* **Méthode:** POST
* **Paramètres:** `eval_id` , `etudid` , `note`
* **Format URL:** `/api/eval_set_notes?eval_id=<int:eval_id> etudid=<int etudid>¬e=<int:note>`
* **Exemple d'utilisation:** `/api/eval_set_notes?eval_id=6 etudid=456¬e=15`
* **Résultat:** Set les notes d'une évaluation pour un étudiant donné.
2021-11-10 13:22:10 +01:00
2021-09-14 12:31:16 +02:00
* **`Notes/formsemestre_bulletinetud`**
2021-11-16 15:17:07 +01:00
* **Méthode:** GET
2021-11-18 17:16:04 +01:00
* **Paramètres:** `formsemestre_id` , `etudid` , `format` (`xml`ou `json` ), `version` (`short`, `selectedevals` ou `long` )
2021-11-16 15:17:07 +01:00
* **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": {
"ninscrits": 52,
"value": "1"
},
"etape_apo2": "",
"etape_apo3": "",
"etape_apo4": "",
"etudiant": {
"nom": "BOLANO",
"prenom": "Roberto",
"sexe": "M.",
"code_ine": "",
etudid": "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",
2021-11-18 17:16:04 +01:00
"compenseformsemestre_id" : "SEM12345" /* si ce semestre en compense un autre */
2021-11-16 15:17:07 +01:00
},
2021-09-14 12:31:16 +02:00
"note": {
2021-11-16 15:17:07 +01:00
"max": "15.51",
"moy": "10.80",
"value": "15.51",
"min": "07.29"
2021-09-14 12:31:16 +02:00
},
2021-11-16 15:17:07 +01:00
etudid": "EID9860",
"decision_ue": [
2021-09-14 12:31:16 +02:00
{
2021-11-16 15:17:07 +01:00
"acronyme": "UE11",
"code": "ADM",
"ects": "16.0",
"titre": "D\u00e9couverte m\u00e9tiers",
"numero": "11",
"ue_id": "UE21456"
2021-09-14 12:31:16 +02:00
},
{
2021-11-16 15:17:07 +01:00
"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": [
2021-09-14 12:31:16 +02:00
{
2021-11-16 15:17:07 +01:00
"semestre_id": 2
2021-09-14 12:31:16 +02:00
}
],
2021-11-16 15:17:07 +01:00
"appreciation": [
],
"note_max": {
"value": 20
2021-09-14 12:31:16 +02:00
},
2021-11-16 15:17:07 +01:00
"date": "2014-07-12T17:38:47.693262",
"rang_group": [
2021-09-14 12:31:16 +02:00
{
2021-11-16 15:17:07 +01:00
"ninscrits": 26,
"value": "1",
"group_type": "TD",
"group_name": "B"
2021-09-14 12:31:16 +02:00
},
{
2021-11-16 15:17:07 +01:00
"ninscrits": 13,
"value": "1",
"group_type": "TP",
"group_name": "B1"
2021-09-14 12:31:16 +02:00
},
{
2021-11-16 15:17:07 +01:00
"ninscrits": 4,
"value": "1",
"group_type": "G",
"group_name": "G4"
2021-09-14 12:31:16 +02:00
},
{
2021-11-16 15:17:07 +01:00
"ninscrits": "",
"value": "",
"group_type": "tutorat",
"group_name": ""
2021-09-14 12:31:16 +02:00
},
{
2021-11-16 15:17:07 +01:00
"ninscrits": "",
"value": "",
"group_type": "App",
"group_name": ""
2021-09-14 12:31:16 +02:00
},
{
2021-11-16 15:17:07 +01:00
"ninscrits": "",
"value": "",
"group_type": "sport",
"group_name": ""
}
],
2021-11-18 17:16:04 +01:00
formsemestre_id": "SEM12345",
2021-11-16 15:17:07 +01:00
"etape_apo": "V1RT",
"ue": [
{
"acronyme": "UE11",
"rang": "1",
"code_apogee": "VRTU11",
"ects": "16",
"numero": "11",
2021-09-14 12:31:16 +02:00
"note": {
2021-11-16 15:17:07 +01:00
"max": "16.17",
"value": "16.17",
"min": "06.56"
2021-09-14 12:31:16 +02:00
},
2021-11-16 15:17:07 +01:00
"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"
}
2021-09-14 12:31:16 +02:00
],
2021-11-16 15:17:07 +01:00
"effectif": "51",
"titre": "D\u00e9couverte m\u00e9tiers",
"id": "UE21456"
2021-09-14 12:31:16 +02:00
},
{
2021-11-16 15:17:07 +01:00
"acronyme": "UE12",
"rang": "5",
"code_apogee": "VRTU12",
"ects": "14",
"numero": "12",
2021-09-14 12:31:16 +02:00
"note": {
2021-11-16 15:17:07 +01:00
"max": "15.20",
"value": "14.63",
"min": "07.94"
2021-09-14 12:31:16 +02:00
},
2021-11-16 15:17:07 +01:00
"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"
}
2021-09-14 12:31:16 +02:00
],
2021-11-16 15:17:07 +01:00
"effectif": "51",
"titre": "Mise \u00e0 niveau des comp\u00e9tences transversales et scientifiques",
"id": "UE21478"
2021-09-14 12:31:16 +02:00
},
{
2021-11-16 15:17:07 +01:00
"acronyme": "UE 1S",
"rang": "1 ex",
"code_apogee": "",
"ects": "0",
"numero": "13",
2021-09-14 12:31:16 +02:00
"note": {
2021-11-16 15:17:07 +01:00
"max": "00.00",
"value": "00.00",
"min": "00.00"
2021-09-14 12:31:16 +02:00
},
2021-11-16 15:17:07 +01:00
"module": [
2021-09-14 12:31:16 +02:00
],
2021-11-16 15:17:07 +01:00
"effectif": "51",
"titre": "Sport & amp; Culture",
"id": "UE23716"
2021-09-14 12:31:16 +02:00
}
],
2021-11-18 17:16:04 +01:00
"situation": "Inscrit le 2015-09-02. D\u00e9cision jury: Valid\u00e9. UE acquises: UE11, UE12. Autoris\u00e9 \u00e0 s' inscrire en S2."
2021-11-16 15:17:07 +01:00
}
```
2021-09-14 12:31:16 +02:00
## Absences
2021-11-18 17:16:04 +01:00
**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.
2021-11-16 15:17:07 +01:00
* **`absences`**
* **Méthode:** GET
* **Paramètres:** `etudid` , `abs_just_only, format` , `abs_just_only` (_spécifie si on veut les absences justifiées ou non_).
* **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_).
* **`abs_signale`**
* **Méthode:** POST
* **Paramètres:** `date_debut` , `date_fin` , `module_impl_id=None` , `demi_journee=2` , `estjust=False` , `description` , `etudid`
2021-11-18 17:16:04 +01:00
* **Body de la requête:** `date_debut=date_debut&date_fin=date_fin&demi_journee=demi_journee&description=description&etudid=<int:etudid>`
* **Exemple d'utilisation:** `date_debut=2015-02-01&date_fin=2015-02-03&demi_journee=4&description=""&etudid=874`
2021-11-16 15:17:07 +01:00
* **Résultat:** *html*
* **`abs_annule`**
* **Méthode:** POST
* **Paramètres:** `date_debut` , `date_fin` , `demi_journee` , `etudid`
2021-11-18 17:16:04 +01:00
* **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`
2021-11-16 15:17:07 +01:00
* **Résultat:** *html*
* **`abs_annule_justif`**
* **Méthode:** POST
* **Paramètres:** `context` , `date_debut` , `date_fin` , `demi_journee`
2021-11-18 17:16:04 +01:00
* **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`
2021-11-16 15:17:07 +01:00
* **Résultat:** *html*
2021-11-18 17:16:04 +01:00
2021-11-16 15:17:07 +01:00
* **`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`
2021-11-18 17:16:04 +01:00
* **Exemple d'utilisation:** `/api/abs_group_etat/?group_ids=45&date_debut=2019-01-30&date_fin=2019-02-30`
2021-11-16 15:17:07 +01:00
* **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"
},
...
]
```
2021-11-15 16:14:16 +01:00
2021-09-14 12:31:16 +02:00
## En savoir plus
2021-10-28 10:23:28 +02:00
Voir exemples d'utilisation de l'API en Python, dans `tests/api/` .
2021-09-14 12:31:16 +02:00