# API pour ScoDoc 9 !!! warning "Attention" *Page générée par la commande `flask gen-api-doc`. Ne pas modifier manuellement.* L'API ScoDoc permet à des applications tierces d'interroger ScoDoc. Elle offre un accès aux objets de l'application via une API REST. Les composants internes de ScoDoc, et notamment le schéma de la base de données, sont susceptibles d'évoluer à tout moment sans préavis: il est vivement déconseillé d'écrire une extension ne passant pas par l'API. Vous ne devez même pas supposer qu'il existe une base de données SQL. 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 ([contacts](Contact.md)) (et canal `#API` du Discord développeurs si vous y avez accès). L'API fournit des données JSON, sauf exception (bulletins PDF par exemple). Les objets ScoDoc manipulables sont identifiés par des id numériques. * `etudid` : étudiant * `formation_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; * `moduleimpl_id` : un module réalisé dans un semestre; * `formsemestre_id` : un "semestre" de formation. (pour plus de précisions, voir le [guide développeurs](GuideDeveloppeurs.md)) L'URL complète est de la forme: `https://scodoc.example.com/ScoDoc/api/`. ( à choisir dans [Référence](#reference)) ## Configuration de ScoDoc pour utiliser l'API Il est nécessaire de disposer d'un compte utilisateur avec les droits adéquats. Les droits à accorder dépendent des fonctionnalités nécessaires. la permission `ScoView` est généralement suffisante car elle permet toutes les consultations. Cependant si, par l'API, on veut effectuer des opérations de modification ou encore consulter les comptes utilisateurs, d'autres droits (`ScoChangeGroups`, `UsersView`, `ScoSuperAdmin`, ...) peuvent être requis. La consultation du [tableau récapitulatif](#tableau-recapitulatif-des-entrees-de-lapi) ou la ligne `permission`de chaque entrée vous donnera la permission requise pour chaque opération. En général, il est recommandé de créer un rôle, de lui attribuer les permissions que l'on veut utiliser, puis de créer un utilisateur ayant ce rôle. En ligne de commande, cela peut se faire comme suit (voir détail des commandes [sur le guide de configuration](GuideConfig.md)). ```bash # se connecter comme utilisateur scodoc su - scodoc # Créer un rôle flask create-role LecteurAPI # Lui donner les droits nécessaires: ici ScoView flask edit-role LecteurAPI -a ScoView # Créer un nouvel utilisateur avec ce rôle: flask user-create lecteur_api LecteurAPI @all # Ou bien, si on veut utiliser un compte existant: # associer notre rôle à un utilisateur flask user-role lecteur_api -a LecteurAPI # Au besoin, changer le mot de passe de l'utilisateur # (on aura besoin de ce mot de passe dans la configuration du client d'API) flask user-password lecteur_api ... ``` Si vous êtes intéressé par le développement, voir * [la section sur les tests unitaires de l'API](TestsScoDoc.md#tests-de-lapi-scodoc9); * [la documentation développeurs](GuideDeveloppeurs.md) et sur les [vues de l'API](DevInternals.md#vues-de-lapi-et-permissions). !!! note * Si vous utilisez le CAS, pensez à laisser les comptes utilisateurs API se connecter via ScoDoc sans CAS. Pour cela, cocher l'option *Autorise connexion via CAS si CAS est activé* dans leur formulaire de configuration. * Si l'utilisateur est associé à un département (cas des comptes créés via l'interface Web), il ne pourra accéder à l'API que via une *route départementale*, c'est à dire une route comprenant l'acronyme de son département, de la forme `https://...//ScoDoc/DEPARTEMENT/api/...`. ## Essais avec HTTPie [HTTPie](https://httpie.io/) est un client universel livre et gratuit très commode, disponible pour Windows, Linux, en ligne de commande ou interface graphique. Exemple d'utilisation en ligne de commande et interroger votre ScoDoc pour obtenir la liste des départements: ```bash http -a USER:PASSWORD POST 'http://localhost:5000/ScoDoc/api/tokens' ``` Qui affiche: ```text HTTP/1.1 200 OK Content-Length: 50 Content-Type: application/json Date: Thu, 05 May 2022 04:29:33 GMT { "token": "jS7iVl1234cRDzboAfO5xseE0Ain6Zyz" } ``` (remplacer `USER:PASSWORD` par les identifiants de votre utilisateur et adapter l'URL qui est ici celle d'un client local sur le serveur de test). Avec ce jeton (*token*), on peut interroger le serveur: ```bash http GET http://localhost:5000/ScoDoc/api/departements "Authorization:Bearer jS7iVlH1234cRDzboAfO5xseE0Ain6Zyz" ``` qui affiche par exemple: ```text HTTP/1.1 200 OK Content-Length: 151 Content-Type: application/json Date: Thu, 05 May 2022 05:21:33 GMT [ { "acronym": "TAPI", "date_creation": "Wed, 04 May 2022 21:09:25 GMT", "description": null, "id": 1, "visible": true } ] ``` ## Fonctions d'API ScoDoc 9 La documentation ci-dessous concerne la nouvelle API, disponible à partir de la version de ScoDoc 9.3.25. ### Accès à l'API REST L'API est accessible à l'adresse: `https://scodoc.monsite.tld/ScoDoc/api/`, et aussi via les *routes départementales* de la forme `https://scodoc.monsite.tld/ScoDoc//api/` pour un accès avec des droits restreints au département indiqué. La liste des `` est donnée ci-dessous dans [Référence](#reference). #### Authentification Lors de votre authentification (*connexion avec login et mot de passe*) à Scodoc, il vous sera attribué un jeton (token jwt *généré automatiquement*) vous permettant d'utiliser l'api suivant les droits correspondant à votre session. Pour obtenir le jeton, il faut un compte sur ScoDoc (`user_name`et `password`). Les autorisations et rôles sont gérés exactement comme pour l'application. Exemple avec `curl` (un outil en ligne de commande présent sur la plupart des systèmes, voir plus haut pour la même chose avec la commande `http`): ```bash curl -u user_name:password --request POST https://SERVEUR/ScoDoc/api/tokens ``` où `SERVEUR` est l'adresse (IP ou nom) de votre serveur. La réponse doit ressembler à ceci: ```json { "token": "LuXXxk+i74TXYZZl8MulgbiCGmVHXXX" } ``` Vous trouverez dans `/opt/scodoc/tests/api/exemple-api-basic.py` un exemple complet en python d'interrogation de l'API. #### 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. Tous les codes >= 400 indiquent que la requête n'a pas été traitée avec succès par le serveur ScoDoc. * [200](https://developer.mozilla.org/fr/docs/Web/HTTP/Status/200) : OK. * [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 pour l'utilisateur associé au jeton. * [404](https://developer.mozilla.org/fr/docs/Web/HTTP/Status/401) : Adresse incorrecte, paramètre manquant ou invalide, ou objet inexistant. * [500](https://developer.mozilla.org/fr/docs/Web/HTTP/Status/500) : Erreur inconnue côté serveur. ## Règles générales * une route s'écrit comme une suite de noms et d'identifiants; * les noms token, département, formation, formsemestre, groupe, etudiant, bulletin, absence, logo, programme, évaluation, résultat, décision désignent des types d'objets; * les noms (verbes ou groupes verbaux): set_etudiant, remove_etudiant, query, create, delete, edit, order sont des actions; * les noms restants (ids, courants, long, ...) sont des options, les autres noms sont des options ou des actions; * le dernier nom apparaissant sur une route donne le type d'objet renvoyé. Ce nom peut apparaître au singulier ou au pluriel. * au singulier un seul objet est renvoyé, si aucun objet n'est trouvé, retourne un 404; * au pluriel une collection d'objets est renvoyée, si aucun objet n'est trouvé, retourne une collection vide. * un type d'objet au singulier est généralement suivi immédiatement de son identifiant (unique). Exception: pour un étudiant, on peut également utiliser le NIP ou l'INE (qui ne sont pas uniques dans la base car un étudiant de même INE/NIP peut passer par plusieurs départements). ## Référence La [carte syntaxique](#carte-syntaxique) vous permet de retrouver une entrée à partir de sa syntaxe (le `?` amène sur la documentation associée). Le [tableau récapitulatif](#tableau-recapitulatif-des-entrees-de-lapi) vous permet de rechercher une entrée à partir du résultat attendu. ### Carte syntaxique
![carte_syntaxique](img/API_Chart.svg)
(carte générée avec `flask gen-api-doc`) ### Tableau récapitulatif des entrées de l'API | Route | Méthode | Permission | |---|---|---| | [assiduite](#assiduite) | GET | ScoView | | [assiduite_create](#assiduite_create) | POST | AbsChange | | [assiduite_delete](#assiduite_delete) | POST | AbsChange | | [assiduite_edit](#assiduite_edit) | POST | AbsChange | | [assiduite_justificatifs](#assiduite_justificatifs) | GET | ScoView | | [assiduites](#assiduites-query) | GET | ScoView | | [assiduites_count](#assiduites_count-query) | GET | ScoView | | [assiduites_create](#assiduites_create) | POST | AbsChange | | [assiduites_edit](#assiduites_edit) | POST | AbsChange | | [assiduites_evaluations](#assiduites_evaluations) | GET | ScoView | | [assiduites_formsemestre](#assiduites_formsemestre-query) | GET | ScoView | | [assiduites_formsemestre_count](#assiduites_formsemestre_count-query) | GET | ScoView | | [assiduites_group](#assiduites_group-query) | GET | ScoView | | [autorisation_inscription_delete](#autorisation_inscription_delete) | POST | EtudInscrit | | [billets_absence_create](#billets_absence_create) | POST | Aucune permission requise | | [billets_absence_delete](#billets_absence_delete) | POST | Aucune permission requise | | [billets_absence_etudiant](#billets_absence_etudiant) | GET | Aucune permission requise | | [bulletin](#bulletin) | GET | ScoView | | [bulletins](#bulletins) | GET | ScoView | | [decisions_jury](#decisions_jury) | GET | ScoView | | [departement_by_acronym](#departement_by_acronym) | GET | ScoView | | [departement_by_id](#departement_by_id) | GET | ScoView | | [departement_create](#departement_create) | POST | ScoSuperAdmin | | [departement_delete](#departement_delete) | POST | ScoSuperAdmin | | [departement_edit](#departement_edit) | POST | ScoSuperAdmin | | [departement_etudiants](#departement_etudiants) | GET | ScoView | | [departement_etudiants_by_id](#departement_etudiants_by_id) | GET | ScoView | | [departement_formsemestres_courants](#departement_formsemestres_courants-query) | GET | ScoView | | [departement_formsemestres_ids](#departement_formsemestres_ids) | GET | ScoView | | [departement_formsemestres_ids_by_id](#departement_formsemestres_ids_by_id) | GET | ScoView | | [departements_ids](#departements_ids) | GET | ScoView | | [departements_list](#departements_list) | GET | ScoView | | [etudiant](#etudiant) | GET | ScoView | | [etudiant_annotation](#etudiant_annotation) | POST | EtudInscrit | | [etudiant_annotation_delete](#etudiant_annotation_delete) | POST | EtudInscrit | | [etudiant_create](#etudiant_create) | POST | EtudInscrit | | [etudiant_edit](#etudiant_edit) | POST | EtudInscrit | | [etudiant_formsemestres](#etudiant_formsemestres) | GET | ScoView | | [etudiant_get_photo_image](#etudiant_get_photo_image-query) | GET | ScoView | | [etudiant_groups](#etudiant_groups) | GET | ScoView | | [etudiants](#etudiants) | GET | ScoView | | [etudiants_by_name](#etudiants_by_name) | GET | ScoView | | [etudiants_courants](#etudiants_courants-query) | GET | ScoView | | [evaluation_assiduites](#evaluation_assiduites) | GET | ScoView | | [evaluation_create](#evaluation_create) | POST | EnsView | | [evaluation_delete](#evaluation_delete) | POST | EnsView | | [evaluation_notes](#evaluation_notes) | GET | ScoView | | [evaluation_set_notes](#evaluation_set_notes) | POST | EnsView | | [formation_by_id](#formation_by_id) | GET | ScoView | | [formation_export_by_formation_id](#formation_export_by_formation_id) | GET | ScoView | | [formation_module_edit](#formation_module_edit) | POST | EditFormation | | [formation_module_get](#formation_module_get) | GET | ScoView | | [formation_module_set_code_apogee](#formation_module_set_code_apogee) | POST | EditFormation | | [formations](#formations) | GET | ScoView | | [formations_ids](#formations_ids) | GET | ScoView | | [formsemestre_edit](#formsemestre_edit) | POST | EditFormSemestre | | [formsemestre_edt](#formsemestre_edt-query) | GET | ScoView | | [formsemestre_etat_evaluations](#formsemestre_etat_evaluations) | GET | ScoView | | [formsemestre_etudiants](#formsemestre_etudiants-query) | GET | ScoView | | [formsemestre_infos](#formsemestre_infos) | GET | ScoView | | [formsemestre_partitions](#formsemestre_partitions) | GET | ScoView | | [formsemestre_programme](#formsemestre_programme) | GET | ScoView | | [formsemestre_resultat](#formsemestre_resultat-query) | GET | ScoView | | [formsemestre_set_apo_etapes](#formsemestre_set_apo_etapes) | POST | EditApogee | | [formsemestre_set_elt_annee_apo](#formsemestre_set_elt_annee_apo) | POST | EditApogee | | [formsemestre_set_elt_passage_apo](#formsemestre_set_elt_passage_apo) | POST | EditApogee | | [formsemestre_set_elt_sem_apo](#formsemestre_set_elt_sem_apo) | POST | EditApogee | | [formsemestre_set_partitions_order](#formsemestre_set_partitions_order) | POST | ScoView | | [formsemestres_query](#formsemestres_query-query) | GET | ScoView | | [group_create](#group_create) | POST | ScoView | | [group_delete](#group_delete) | POST | ScoView | | [group_edit](#group_edit) | POST | ScoView | | [group_etudiants](#group_etudiants) | GET | ScoView | | [group_etudiants_query](#group_etudiants_query-query) | GET | ScoView | | [group_remove_etud](#group_remove_etud) | POST | ScoView | | [group_set_edt_id](#group_set_edt_id) | POST | ScoView | | [group_set_etudiant](#group_set_etudiant) | POST | ScoView | | [groups_get_auto_assignment](#groups_get_auto_assignment) | GET | ScoView | | [groups_save_auto_assignment](#groups_save_auto_assignment) | POST | ScoView | | [justif_create](#justif_create) | POST | AbsChange | | [justif_delete](#justif_delete) | POST | AbsChange | | [justif_edit](#justif_edit) | POST | AbsChange | | [justif_export](#justif_export) | POST | ScoView | | [justif_import](#justif_import) | POST | AbsChange | | [justif_justifies](#justif_justifies) | GET | AbsChange | | [justif_list](#justif_list) | GET | ScoView | | [justif_remove](#justif_remove) | POST | AbsChange | | [justificatif](#justificatif) | GET | ScoView | | [justificatifs](#justificatifs-query) | GET | ScoView | | [justificatifs_dept](#justificatifs_dept-query) | GET | ScoView | | [justificatifs_formsemestre](#justificatifs_formsemestre-query) | GET | ScoView | | [logo_get_global](#logo_get_global) | GET | ScoSuperAdmin | | [logo_get_local_by_acronym](#logo_get_local_by_acronym) | GET | ScoSuperAdmin | | [logo_get_local_by_id](#logo_get_local_by_id) | GET | ScoSuperAdmin | | [logo_get_local_dept_by_acronym](#logo_get_local_dept_by_acronym) | GET | ScoSuperAdmin | | [logo_get_local_dept_by_id](#logo_get_local_dept_by_id) | GET | ScoSuperAdmin | | [logo_list_globals](#logo_list_globals) | GET | ScoSuperAdmin | | [moduleimpl_evaluations](#moduleimpl_evaluations) | GET | ScoView | | [moduleimpl_inscriptions](#moduleimpl_inscriptions) | GET | ScoView | | [moduleimpl_notes](#moduleimpl_notes) | GET | ScoView | | [partition_create](#partition_create) | POST | ScoView | | [partition_delete](#partition_delete) | POST | ScoView | | [partition_edit](#partition_edit) | POST | ScoView | | [partition_info](#partition_info) | GET | ScoView | | [partition_order_groups](#partition_order_groups) | POST | ScoView | | [partition_remove_etud](#partition_remove_etud) | POST | ScoView | | [permissions_list](#permissions_list) | GET | UsersView | | [referentiel_competences](#referentiel_competences) | GET | ScoView | | [role_create](#role_create) | POST | ScoSuperAdmin | | [role_delete](#role_delete) | POST | ScoSuperAdmin | | [role_edit](#role_edit) | POST | ScoSuperAdmin | | [role_get](#role_get) | GET | UsersView | | [role_permission_add](#role_permission_add) | POST | ScoSuperAdmin | | [role_permission_remove](#role_permission_remove) | POST | ScoSuperAdmin | | [roles_list](#roles_list) | GET | UsersView | | [token_get](#token_get) | POST | Aucune permission requise | | [ue_assoc_niveau](#ue_assoc_niveau) | POST | EditFormation | | [ue_desassoc_niveau](#ue_desassoc_niveau) | POST | EditFormation | | [ue_edit](#ue_edit) | POST | EditFormation | | [ue_set_code_apogee](#ue_set_code_apogee) | POST | EditFormation | | [ue_set_code_apogee_rcue](#ue_set_code_apogee_rcue) | POST | EditFormation | | [ue_set_parcours](#ue_set_parcours) | POST | EditFormation | | [user_create](#user_create) | POST | UsersAdmin | | [user_edit](#user_edit) | POST | UsersAdmin | | [user_info](#user_info) | GET | UsersView | | [user_password](#user_password) | POST | UsersAdmin | | [user_role_add](#user_role_add) | POST | ScoSuperAdmin | | [user_role_remove](#user_role_remove) | POST | ScoSuperAdmin | | [users_info_query](#users_info_query-query) | GET | ScoView | | [validation_annee_but_delete](#validation_annee_but_delete) | POST | EtudInscrit | | [validation_dut120_delete](#validation_dut120_delete) | POST | EtudInscrit | | [validation_formsemestre_delete](#validation_formsemestre_delete) | POST | ScoView | | [validation_rcue_delete](#validation_rcue_delete) | POST | EtudInscrit | | [validation_rcue_record](#validation_rcue_record) | POST | EtudInscrit | | [validation_ue_delete](#validation_ue_delete) | POST | ScoView | (table générée avec `flask gen-api-doc`) #### Note sur les exemples d'utilisation Pour uniformiser les résultats des exemples, ceux sont soumis à quelques post-traitements non réalisés par l'API. - les clés sont triées (ce n'est pas toujours garanti); - les listes de plus de 2 éléments sont tronquées à 2 éléments, la fin de la liste étant représentée par la notation en json '...'; - les dates (au format ISO) sont systématiquement remplacées par une date fixe et ne sont pas réalistes. ### API Assiduites #### **`assiduite`** * **Route:** `/ScoDoc/api/assiduite/` * **Méthode:** `GET` * **Permission:** `ScoView` * **Description:** Retourne un objet assiduité à partir de son id Exemple de résultat: ```json { "assiduite_id": 1, "etudid": 2, "moduleimpl_id": 3, "date_debut": "2022-10-31T08:00+01:00", "date_fin": "2022-10-31T10:00+01:00", "etat": "retard", "desc": "une description", "user_id": 1 or null, "user_name" : login scodoc or null, "user_nom_complet": "Marie Dupont", "est_just": False or True, } ``` * **Exemple de résultat:** [assiduite.json](./samples/sample_assiduite.json.md) #### **`assiduite_create`** * **Routes:** * `/ScoDoc/api/assiduite/ine//create` * `/ScoDoc/api/assiduite/nip//create` * `/ScoDoc/api/assiduite/etudid//create` * `/ScoDoc/api/assiduite//create` * **Méthode:** `POST` * **Permission:** `AbsChange` * **Description:** Enregistrement d'assiduités pour un étudiant (etudid) * **Exemple de résultat:** [assiduite_create.json](./samples/sample_assiduite_create.json.md) #### **`assiduite_delete`** * **Route:** `/ScoDoc/api/assiduite/delete` * **Méthode:** `POST` * **Permission:** `AbsChange` * **Description:** Suppression d'une assiduité à partir de son id * **Exemple de résultat:** [assiduite_delete.json](./samples/sample_assiduite_delete.json.md) #### **`assiduite_edit`** * **Route:** `/ScoDoc/api/assiduite//edit` * **Méthode:** `POST` * **Permission:** `AbsChange` * **Description:** Edition d'une assiduité à partir de son id * **Exemple de résultat:** [assiduite_edit.json](./samples/sample_assiduite_edit.json.md) #### **`assiduite_justificatifs`** * **Routes:** * `/ScoDoc/api/assiduite//justificatifs/long` * `/ScoDoc/api/assiduite//justificatifs` * **Méthode:** `GET` * **Permission:** `ScoView` * **Description:** Retourne la liste des justificatifs qui justifient cette assiduité. Exemple de résultat: ```json [ 1, 2, 3, ... ] ``` * **Exemple de résultat:** [assiduite_justificatifs.json](./samples/sample_assiduite_justificatifs.json.md) #### **`assiduites(-query)`** * **Routes:** * `/ScoDoc/api/assiduites/ine//query` * `/ScoDoc/api/assiduites/ine/` * `/ScoDoc/api/assiduites/nip//query` * `/ScoDoc/api/assiduites/nip/` * `/ScoDoc/api/assiduites/etudid//query` * `/ScoDoc/api/assiduites/etudid/` * `/ScoDoc/api/assiduites//query` * `/ScoDoc/api/assiduites/` * **Méthode:** `GET` * **Permission:** `ScoView` * **Paramètres:** * `user_id` : l'id de l'auteur de l'assiduité * `est_just` : si l'assiduité est justifiée (fait aussi filtre abs/retard) * `moduleimpl_id` : l'id du module concerné par l'assiduité * `date_debut` : date de début de l'assiduité (supérieur ou égal) * `date_fin` : date de fin de l'assiduité (inférieur ou égal) * `etat` : etat de l'étudiant → absent, present ou retard * `formsemestre_id` : l'identifiant du formsemestre concerné par l'assiduité * `with_justif` : ajoute les justificatifs liés à l'assiduité * **Description:** Retourne toutes les assiduités d'un étudiant * **Exemple de résultat:** [assiduites.json](./samples/sample_assiduites.json.md) #### **`assiduites_count(-query)`** * **Routes:** * `/ScoDoc/api/assiduites/ine//count/query` * `/ScoDoc/api/assiduites/ine//count` * `/ScoDoc/api/assiduites/nip//count/query` * `/ScoDoc/api/assiduites/nip//count` * `/ScoDoc/api/assiduites/etudid//count/query` * `/ScoDoc/api/assiduites/etudid//count` * `/ScoDoc/api/assiduites//count/query` * `/ScoDoc/api/assiduites//count` * **Méthode:** `GET` * **Permission:** `ScoView` * **Paramètres:** * `user_id` : l'id de l'auteur de l'assiduité * `est_just` : si l'assiduité est justifiée (fait aussi filtre abs/retard) * `moduleimpl_id` : l'id du module concerné par l'assiduité * `date_debut` : date de début de l'assiduité (supérieur ou égal) * `date_fin` : date de fin de l'assiduité (inférieur ou égal) * `etat` : etat de l'étudiant → absent, present ou retard * `formsemestre_id` : l'identifiant du formsemestre concerné par l'assiduité * `metric` : la/les métriques de comptage (journee, demi, heure, compte) * `split` : divise le comptage par état * **Description:** Retourne le nombre d'assiduités d'un étudiant. * **Exemple de résultat:** [assiduites_count.json](./samples/sample_assiduites_count.json.md) #### **`assiduites_create`** * **Route:** `/ScoDoc/api/assiduites/create` * **Méthode:** `POST` * **Permission:** `AbsChange` * **Description:** Création d'une assiduité ou plusieurs assiduites * **Exemple de résultat:** [assiduites_create.json](./samples/sample_assiduites_create.json.md) #### **`assiduites_edit`** * **Route:** `/ScoDoc/api/assiduites/edit` * **Méthode:** `POST` * **Permission:** `AbsChange` * **Description:** Edition de plusieurs assiduités #### **`assiduites_evaluations`** * **Routes:** * `/ScoDoc/api/assiduites/nip//evaluations` * `/ScoDoc/api/assiduites/ine//evaluations` * `/ScoDoc/api/assiduites/etudid//evaluations` * `/ScoDoc/api/assiduites//evaluations` * **Méthode:** `GET` * **Permission:** `ScoView` * **Description:** Retourne la liste de toutes les évaluations de l'étudiant Pour chaque évaluation, retourne la liste des objets assiduités sur la plage de l'évaluation Exemple de résultat: ```json [ { "evaluation_id": 1234, "assiduites": [ { "assiduite_id":1234, ... }, ] } ] ``` * **Exemple de résultat:** [assiduites_evaluations.json](./samples/sample_assiduites_evaluations.json.md) #### **`assiduites_formsemestre(-query)`** * **Routes:** * `/ScoDoc/api/assiduites/formsemestre//query` * `/ScoDoc/api/assiduites/formsemestre/` * **Méthode:** `GET` * **Permission:** `ScoView` * **Paramètres:** * `user_id` : l'id de l'auteur de l'assiduité * `est_just` : si l'assiduité est justifiée (fait aussi filtre abs/retard) * `moduleimpl_id` : l'id du module concerné par l'assiduité * `date_debut` : date de début de l'assiduité (supérieur ou égal) * `date_fin` : date de fin de l'assiduité (inférieur ou égal) * `etat` : etat de l'étudiant → absent, present ou retard * `formsemestre_id` : l'identifiant du formsemestre concerné par l'assiduité * **Description:** Retourne toutes les assiduités du formsemestre * **Exemple de résultat:** [assiduites_formsemestre.json](./samples/sample_assiduites_formsemestre.json.md) #### **`assiduites_formsemestre_count(-query)`** * **Routes:** * `/ScoDoc/api/assiduites/formsemestre//count/query` * `/ScoDoc/api/assiduites/formsemestre//count` * **Méthode:** `GET` * **Permission:** `ScoView` * **Paramètres:** * `user_id` : l'id de l'auteur de l'assiduité * `est_just` : si l'assiduité est justifiée (fait aussi filtre abs/retard) * `moduleimpl_id` : l'id du module concerné par l'assiduité * `date_debut` : date de début de l'assiduité (supérieur ou égal) * `date_fin` : date de fin de l'assiduité (inférieur ou égal) * `etat` : etat de l'étudiant → absent, present ou retard * `formsemestre_id` : l'identifiant du formsemestre concerné par l'assiduité * `metric` : la/les métriques de comptage (journee, demi, heure, compte) * `split` : divise le comptage par état * **Description:** Comptage des assiduités du formsemestre * **Exemple de résultat:** [assiduites_formsemestre_count.json](./samples/sample_assiduites_formsemestre_count.json.md) #### **`assiduites_group(-query)`** * **Route:** `/ScoDoc/api/assiduites/group/query` * **Méthode:** `GET` * **Permission:** `ScoView` * **Paramètres:** * `user_id` : l'id de l'auteur de l'assiduité * `est_just` : si l'assiduité est justifiée (fait aussi filtre abs/retard) * `moduleimpl_id` : l'id du module concerné par l'assiduité * `date_debut` : date de début de l'assiduité (supérieur ou égal) * `date_fin` : date de fin de l'assiduité (inférieur ou égal) * `etat` : etat de l'étudiant → absent, present ou retard * `etudids` : liste des ids des étudiants concernés par la recherche * `formsemestre_id` : l'identifiant du formsemestre concerné par l'assiduité * `with_justifs` : ajoute les justificatifs liés à l'assiduité * **Description:** Retourne toutes les assiduités d'un groupe d'étudiants chemin : /assiduites/group/query?etudids=1,2,3 * **Exemple de résultat:** [assiduites_group.json](./samples/sample_assiduites_group.json.md) ### API Billets d'absence #### **`billets_absence_create`** * **Route:** `/ScoDoc/api/billets_absence/create` * **Méthode:** `POST` * **Permission:** `Aucune permission requise` * **Description:** Ajout d'un billet d'absence. Renvoie le billet créé en json. #### **`billets_absence_delete`** * **Route:** `/ScoDoc/api/billets_absence//delete` * **Méthode:** `POST` * **Permission:** `Aucune permission requise` * **Description:** Suppression d'un billet d'absence #### **`billets_absence_etudiant`** * **Route:** `/ScoDoc/api/billets_absence/etudiant/` * **Méthode:** `GET` * **Permission:** `Aucune permission requise` * **Description:** Liste des billets d'absence pour cet étudiant. ### API Département #### **`departement_by_acronym`** * **Route:** `/ScoDoc/api/departement/` * **Méthode:** `GET` * **Permission:** `ScoView` * **Description:** Info sur un département. Accès par acronyme. Exemple de résultat : ```json { "id": 1, "acronym": "TAPI", "dept_name" : "TEST", "description": null, "visible": true, "date_creation": "Fri, 15 Apr 2022 12:19:28 GMT" } ``` #### **`departement_by_id`** * **Route:** `/ScoDoc/api/departement/id/` * **Méthode:** `GET` * **Permission:** `ScoView` * **Description:** Info sur un département. Accès par id. #### **`departement_create`** * **Route:** `/ScoDoc/api/departement/create` * **Méthode:** `POST` * **Permission:** `ScoSuperAdmin` * **Description:** Création d'un département. Le content type doit être `application/json`. #### **`departement_delete`** * **Route:** `/ScoDoc/api/departement//delete` * **Méthode:** `POST` * **Permission:** `ScoSuperAdmin` * **Description:** Suppression d'un département identifié par son acronyme. #### **`departement_edit`** * **Route:** `/ScoDoc/api/departement//edit` * **Méthode:** `POST` * **Permission:** `ScoSuperAdmin` * **Description:** Édition d'un département: seul le champ `visible` peut être modifié. #### **`departement_etudiants`** * **Route:** `/ScoDoc/api/departement//etudiants` * **Méthode:** `GET` * **Permission:** `ScoView` * **Paramètres:** * `acronym` : l'acronyme d'un département * **Description:** Retourne la liste des étudiants d'un département. Exemple de résultat : ```json [ { "civilite": "M", "code_ine": "7899X61616", "code_nip": "F6777H88", "date_naissance": null, "email": "toto@toto.fr", "emailperso": null, "etudid": 18, "nom": "MOREL", "prenom": "JACQUES" }, ... ] ``` #### **`departement_etudiants_by_id`** * **Route:** `/ScoDoc/api/departement/id//etudiants` * **Méthode:** `GET` * **Permission:** `ScoView` * **Description:** Retourne la liste des étudiants d'un département d'id donné. #### **`departement_formsemestres_courants(-query)`** * **Routes:** * `/ScoDoc/api/departement/id//formsemestres_courants` * `/ScoDoc/api/departement//formsemestres_courants` * **Méthode:** `GET` * **Permission:** `ScoView` * **Description:** Liste les formsemestres du département indiqué (par son acronyme ou son id) contenant la date courante, ou à défaut celle indiquée en argument (au format ISO). #### **`departement_formsemestres_ids`** * **Route:** `/ScoDoc/api/departement//formsemestres_ids` * **Méthode:** `GET` * **Permission:** `ScoView` * **Description:** Liste des ids de tous les formsemestres du département. #### **`departement_formsemestres_ids_by_id`** * **Route:** `/ScoDoc/api/departement/id//formsemestres_ids` * **Méthode:** `GET` * **Permission:** `ScoView` * **Description:** Liste des ids de tous les formsemestres du département. #### **`departements_ids`** * **Route:** `/ScoDoc/api/departements_ids` * **Méthode:** `GET` * **Permission:** `ScoView` * **Description:** Liste des ids de tous les départements. #### **`departements_list`** * **Route:** `/ScoDoc/api/departements` * **Méthode:** `GET` * **Permission:** `ScoView` * **Description:** Liste tous les départements. ### API Étudiants #### **`bulletin`** * **Routes:** * `/ScoDoc/api/etudiant///formsemestre//bulletin//pdf/nosig` * `/ScoDoc/api/etudiant///formsemestre//bulletin//pdf` * `/ScoDoc/api/etudiant///formsemestre//bulletin/` * `/ScoDoc/api/etudiant///formsemestre//bulletin` * **Méthode:** `GET` * **Permission:** `ScoView` * **Paramètres:** * `formsemestre_id` : l'id d'un formsemestre * `code_type` : "etudid", "nip" ou "ine" * `code` : valeur du code INE, NIP ou etudid, selon code_type. * `version` : type de bulletin (par défaut, "selectedevals"): short, long, selectedevals, butcourt * `pdf` : si spécifié, bulletin au format PDF (et non JSON). * **Description:** Retourne le bulletin d'un étudiant dans un formsemestre. #### **`etudiant`** * **Routes:** * `/ScoDoc/api/etudiant/ine/` * `/ScoDoc/api/etudiant/nip/` * `/ScoDoc/api/etudiant/etudid/` * **Méthode:** `GET` * **Permission:** `ScoView` * **Paramètres:** * `etudid` : l'etudid de l'étudiant * `nip` : le code nip de l'étudiant * `ine` : le code ine de l'étudiant * **Description:** Retourne les informations de l'étudiant correspondant, ou 404 si non trouvé. `etudid` est unique dans la base (tous départements). Les codes INE et NIP sont uniques au sein d'un département. Si plusieurs objets ont le même code, on ramène le plus récemment inscrit. #### **`etudiant_annotation`** * **Route:** `/ScoDoc/api/etudiant///annotation` * **Méthode:** `POST` * **Permission:** `EtudInscrit` * **Paramètres:** * ``code_type`` : le type du code, `etudid`, `ine` ou `nip`. * ``code`` : la valeur du code * **Description:** Ajout d'une annotation sur un étudiant. Renvoie l'annotation créée. #### **`etudiant_annotation_delete`** * **Route:** `/ScoDoc/api/etudiant///annotation//delete` * **Méthode:** `POST` * **Permission:** `EtudInscrit` * **Paramètres:** * ``code_type`` : le type du code, `etudid`, `ine` ou `nip`. * ``code`` : la valeur du code * ``annotation_id`` : id de l'annotation * **Description:** Suppression d'une annotation. On spécifie l'étudiant et l'id de l'annotation. #### **`etudiant_create`** * **Routes:** * `/ScoDoc/api/etudiant/create/force` * `/ScoDoc/api/etudiant/create` * **Méthode:** `POST` * **Permission:** `EtudInscrit` * **Description:** Création d'un nouvel étudiant. Si force, crée même si homonymie détectée. L'étudiant créé n'est pas inscrit à un semestre. Champs requis: nom, prenom (sauf si config sans prénom), dept (string:acronyme) #### **`etudiant_edit`** * **Route:** `/ScoDoc/api/etudiant///edit` * **Méthode:** `POST` * **Permission:** `EtudInscrit` * **Paramètres:** * ``code_type`` : le type du code, `etudid`, `ine` ou `nip`. * ``code`` : la valeur du code * **Description:** Édition des données étudiant (identité, admission, adresses). #### **`etudiant_formsemestres`** * **Routes:** * `/ScoDoc/api/etudiant/ine//formsemestres` * `/ScoDoc/api/etudiant/nip//formsemestres` * `/ScoDoc/api/etudiant/etudid//formsemestres` * **Méthode:** `GET` * **Permission:** `ScoView` * **Description:** Liste des formsemestres qu'un étudiant a suivi, triés par ordre chronologique. Accès par etudid, nip ou ine. Attention, si accès via NIP ou INE, les formsemestres peuvent être de départements différents (si l'étudiant a changé de département). L'id du département est `dept_id`. Si accès par département, ne retourne que les formsemestres suivis dans le département. #### **`etudiant_get_photo_image(-query)`** * **Routes:** * `/ScoDoc/api/etudiant/ine//photo` * `/ScoDoc/api/etudiant/nip//photo` * `/ScoDoc/api/etudiant/etudid//photo` * **Méthode:** `GET` * **Permission:** `ScoView` * **Paramètres:** * `etudid` : l'etudid de l'étudiant * `nip` : le code nip de l'étudiant * `ine` : le code ine de l'étudiant * **Description:** Retourne la photo de l'étudiant ou un placeholder si non existant. Le paramètre `size` peut prendre la valeur `small` (taille réduite, hauteur environ 90 pixels) ou `orig` (défaut, image de la taille originale). #### **`etudiant_groups`** * **Route:** `/ScoDoc/api/etudiant/etudid//formsemestre//groups` * **Méthode:** `GET` * **Permission:** `ScoView` * **Paramètres:** * `formsemestre_id` : l'id d'un formsemestre * `etudid` : l'etudid d'un étudiant * **Description:** Retourne la liste des groupes auxquels appartient l'étudiant dans le formsemestre indiqué Exemple de résultat : ```json [ { "partition_id": 1, "id": 1, "formsemestre_id": 1, "partition_name": null, "numero": 0, "bul_show_rank": false, "show_in_lists": true, "group_id": 1, "group_name": null }, { "partition_id": 2, "id": 2, "formsemestre_id": 1, "partition_name": "TD", "numero": 1, "bul_show_rank": false, "show_in_lists": true, "group_id": 2, "group_name": "A" } ] ``` #### **`etudiants`** * **Routes:** * `/ScoDoc/api/etudiants/ine/` * `/ScoDoc/api/etudiants/nip/` * `/ScoDoc/api/etudiants/etudid/` * **Méthode:** `GET` * **Permission:** `ScoView` * **Description:** Info sur le ou les étudiants correspondants. Comme `/etudiant` mais renvoie toujours une liste. Si non trouvé, liste vide, pas d'erreur. Dans 99% des cas, la liste contient un seul étudiant, mais si l'étudiant a été inscrit dans plusieurs départements, on a plusieurs objets (1 par dept.). #### **`etudiants_by_name`** * **Route:** `/ScoDoc/api/etudiants/name/` * **Méthode:** `GET` * **Permission:** `ScoView` * **Description:** Liste des étudiants dont le nom débute par `start`. Si `start` fait moins de `min_len=3` caractères, liste vide. La casse et les accents sont ignorés. #### **`etudiants_courants(-query)`** * **Routes:** * `/ScoDoc/api/etudiants/courants/long` * `/ScoDoc/api/etudiants/courants` * **Méthode:** `GET` * **Permission:** `ScoView` * **Description:** La liste des étudiants des semestres "courants". Considère tous les départements dans lesquels l'utilisateur a la permission `ScoView` (donc tous si le dépt. du rôle est `None`), et les formsemestres contenant la date courante, ou à défaut celle indiquée en argument (au format ISO). Exemple de résultat : ```json [ { "id": 1234, "code_nip": "12345678", "code_ine": null, "nom": "JOHN", "nom_usuel": None, "prenom": "DEUF", "civilite": "M", } ... ] ``` En format "long": voir documentation. ### API Évaluations #### **`evaluation_assiduites`** * **Route:** `/ScoDoc/api/evaluation//assiduites` * **Méthode:** `GET` * **Permission:** `ScoView` * **Description:** Retourne les objets assiduités de chaque étudiant sur la plage de l'évaluation Exemple de résultat: ```json { "" : [ { "assiduite_id":1234, ... }, ] } ``` #### **`evaluation_create`** * **Route:** `/ScoDoc/api/moduleimpl//evaluation/create` * **Méthode:** `POST` * **Permission:** `EnsView` * **Description:** Création d'une évaluation. Résultat: l'évaluation créée. #### **`evaluation_delete`** * **Route:** `/ScoDoc/api/evaluation//delete` * **Méthode:** `POST` * **Permission:** `EnsView` * **Description:** Suppression d'une évaluation. Efface aussi toutes ses notes. #### **`evaluation_notes`** * **Route:** `/ScoDoc/api/evaluation//notes` * **Méthode:** `GET` * **Permission:** `ScoView` * **Paramètres:** * `evaluation_id` : l'id de l'évaluation * **Description:** Retourne la liste des notes de l'évaluation. Exemple de résultat : ```json { "11": { "etudid": 11, "evaluation_id": 1, "value": 15.0, "note_max" : 20.0, "comment": "", "date": "2024-07-19T19:08:44+02:00", "uid": 2 }, "12": { "etudid": 12, "evaluation_id": 1, "value": "ABS", "note_max" : 20.0, "comment": "", "date": "2024-07-19T19:08:44+02:00", "uid": 2 }, ... } ``` #### **`evaluation_set_notes`** * **Route:** `/ScoDoc/api/evaluation//notes/set` * **Méthode:** `POST` * **Permission:** `EnsView` * **Description:** Écriture de notes dans une évaluation. Résultat: - nb_changed: nombre de notes changées - nb_suppress: nombre de notes effacées - etudids_with_decision: liste des etudiants dont la note a changé alors qu'ils ont une décision de jury enregistrée. #### **`moduleimpl_evaluations`** * **Route:** `/ScoDoc/api/moduleimpl//evaluations` * **Méthode:** `GET` * **Permission:** `ScoView` * **Paramètres:** * `moduleimpl_id` : l'id d'un moduleimpl * **Description:** Retourne la liste des évaluations d'un moduleimpl. Exemple de résultat : voir `/evaluation`. ### API Formations #### **`formation_by_id`** * **Route:** `/ScoDoc/api/formation/` * **Méthode:** `GET` * **Permission:** `ScoView` * **Description:** La formation d'id donné. Exemple de résultat : ```json { "id": 1, "acronyme": "BUT R&T", "titre_officiel": "Bachelor technologique réseaux et télécommunications", "formation_code": "V1RET", "code_specialite": null, "dept_id": 1, "titre": "BUT R&T", "version": 1, "type_parcours": 700, "referentiel_competence_id": null, "formation_id": 1 } ``` #### **`formation_export_by_formation_id`** * **Routes:** * `/ScoDoc/api/formation//export_with_ids` * `/ScoDoc/api/formation//export` * **Méthode:** `GET` * **Permission:** `ScoView` * **Paramètres:** * `formation_id` : l'id d'une formation * `export_with_ids` : si présent, exporte aussi les ids des objets ScoDoc de la formation. * **Description:** Retourne la formation, avec UE, matières, modules Exemple de résultat : ```json { "id": 1, "acronyme": "BUT R&T", "titre_officiel": "Bachelor technologique réseaux et télécommunications", "formation_code": "V1RET", "code_specialite": null, "dept_id": 1, "titre": "BUT R&T", "version": 1, "type_parcours": 700, "referentiel_competence_id": null, "formation_id": 1, "ue": [ { "acronyme": "RT1.1", "numero": 1, "titre": "Administrer les réseaux et l’Internet", "type": 0, "ue_code": "UCOD11", "ects": 12.0, "is_external": false, "code_apogee": "", "coefficient": 0.0, "semestre_idx": 1, "color": "#B80004", "reference": 1, "matiere": [ { "titre": "Administrer les réseaux et l’Internet", "numero": 1, "module": [ { "titre": "Initiation aux réseaux informatiques", "abbrev": "Init aux réseaux informatiques", "code": "R101", "heures_cours": 0.0, "heures_td": 0.0, "heures_tp": 0.0, "coefficient": 1.0, "ects": "", "semestre_id": 1, "numero": 10, "code_apogee": "", "module_type": 2, "coefficients": [ { "ue_reference": "1", "coef": "12.0" }, { "ue_reference": "2", "coef": "4.0" }, { "ue_reference": "3", "coef": "4.0" } ] }, { "titre": "Se sensibiliser à l'hygiène informatique...", "abbrev": "Hygiène informatique", "code": "SAE11", "heures_cours": 0.0, "heures_td": 0.0, "heures_tp": 0.0, "coefficient": 1.0, "ects": "", "semestre_id": 1, "numero": 10, "code_apogee": "", "module_type": 3, "coefficients": [ { "ue_reference": "1", "coef": "16.0" } ] }, ... ] }, ... ] }, ] } ``` #### **`formation_module_edit`** * **Route:** `/ScoDoc/api/formation/module//edit` * **Méthode:** `POST` * **Permission:** `EditFormation` * **Description:** Édition d'un module. Renvoie le module en json. #### **`formation_module_get`** * **Route:** `/ScoDoc/api/formation/module/` * **Méthode:** `GET` * **Permission:** `ScoView` * **Description:** Renvoie le module. #### **`formation_module_set_code_apogee`** * **Routes:** * `/ScoDoc/api/formation/module//set_code_apogee` * `/ScoDoc/api/formation/module//set_code_apogee/` * `/ScoDoc/api/formation/module/set_code_apogee` * **Méthode:** `POST` * **Permission:** `EditFormation` * **Description:** Change le code Apogée du module. Le code est une chaîne, avec éventuellement plusieurs valeurs séparées par des virgules. Ce changement peut être fait sur formation verrouillée. Si `module_id` n'est pas spécifié, utilise l'argument `oid` du POST. Si `code_apogee` n'est pas spécifié ou vide, utilise l'argument value du POST (utilisé par jinplace.js) Le retour est une chaîne (le code enregistré), pas du json. #### **`formations`** * **Route:** `/ScoDoc/api/formations` * **Méthode:** `GET` * **Permission:** `ScoView` * **Description:** Retourne la liste de toutes les formations (tous départements, sauf si route départementale). #### **`formations_ids`** * **Route:** `/ScoDoc/api/formations_ids` * **Méthode:** `GET` * **Permission:** `ScoView` * **Description:** Retourne la liste de toutes les id de formations (tous départements, ou du département indiqué dans la route) Exemple de résultat : `[ 17, 99, 32 ]`. #### **`referentiel_competences`** * **Route:** `/ScoDoc/api/formation//referentiel_competences` * **Méthode:** `GET` * **Permission:** `ScoView` * **Description:** Retourne le référentiel de compétences de la formation ou null si pas de référentiel associé. #### **`ue_assoc_niveau`** * **Route:** `/ScoDoc/api/formation/ue//assoc_niveau/` * **Méthode:** `POST` * **Permission:** `EditFormation` * **Description:** Associe l'UE au niveau de compétence. #### **`ue_desassoc_niveau`** * **Route:** `/ScoDoc/api/formation/ue//desassoc_niveau` * **Méthode:** `POST` * **Permission:** `EditFormation` * **Description:** Désassocie cette UE de son niveau de compétence (si elle n'est pas associée, ne fait rien). #### **`ue_edit`** * **Route:** `/ScoDoc/api/formation/ue//edit` * **Méthode:** `POST` * **Permission:** `EditFormation` * **Description:** Édition d'une UE. Renvoie l'UE en json. #### **`ue_set_code_apogee`** * **Routes:** * `/ScoDoc/api/formation/ue//set_code_apogee` * `/ScoDoc/api/formation/ue//set_code_apogee/` * `/ScoDoc/api/formation/ue/set_code_apogee` * **Méthode:** `POST` * **Permission:** `EditFormation` * **Description:** Change le code Apogée de l'UE. Le code est une chaîne, avec éventuellement plusieurs valeurs séparées par des virgules. Ce changement peut être fait sur formation verrouillée. Si `ue_id` n'est pas spécifié, utilise l'argument oid du POST. Si `code_apogee` n'est pas spécifié ou vide, utilise l'argument value du POST. Le retour est une chaîne (le code enregistré), pas du json. #### **`ue_set_code_apogee_rcue`** * **Routes:** * `/ScoDoc/api/formation/ue//set_code_apogee_rcue` * `/ScoDoc/api/formation/ue//set_code_apogee_rcue/` * **Méthode:** `POST` * **Permission:** `EditFormation` * **Description:** Change le code Apogée du RCUE de l'UE. Le code est une chaîne, avec éventuellement plusieurs valeurs séparées par des virgules. Ce changement peut être fait sur formation verrouillée. Si code_apogee n'est pas spécifié ou vide, utilise l'argument value du POST (utilisé par `jinplace.js`) Le retour est une chaîne (le code enregistré), pas du json. #### **`ue_set_parcours`** * **Route:** `/ScoDoc/api/formation/ue//set_parcours` * **Méthode:** `POST` * **Permission:** `EditFormation` * **Description:** Associe UE et parcours BUT. La liste des ids de parcours est passée en argument JSON. ### API Formsemestre #### **`bulletins`** * **Routes:** * `/ScoDoc/api/formsemestre//bulletins/` * `/ScoDoc/api/formsemestre//bulletins` * **Méthode:** `GET` * **Permission:** `ScoView` * **Paramètres:** * `formsemestre_id` : int * `version` : string ("long", "short", "selectedevals") * **Description:** Retourne les bulletins d'un formsemestre. Exemple de résultat : liste, voir https://scodoc.org/ScoDoc9API/#bulletin #### **`formsemestre_edit`** * **Route:** `/ScoDoc/api/formsemestre//edit` * **Méthode:** `POST` * **Permission:** `EditFormSemestre` * **Description:** Modifie les champs d'un formsemestre. On peut spécifier un ou plusieurs champs. #### **`formsemestre_edt(-query)`** * **Route:** `/ScoDoc/api/formsemestre//edt` * **Méthode:** `GET` * **Permission:** `ScoView` * **Description:** L'emploi du temps du semestre. Si ok, une liste d'évènements. Sinon, une chaine indiquant un message d'erreur. Expérimental, ne pas utiliser hors ScoDoc. #### **`formsemestre_etat_evaluations`** * **Route:** `/ScoDoc/api/formsemestre//etat_evals` * **Méthode:** `GET` * **Permission:** `ScoView` * **Description:** Informations sur l'état des évaluations d'un formsemestre. Exemple de résultat : ```json [ { "id": 1, // moduleimpl_id "titre": "Initiation aux réseaux informatiques", "evaluations": [ { "id": 1, "description": null, "datetime_epreuve": null, "heure_fin": "09:00:00", "coefficient": "02.00" "is_complete": true, "nb_inscrits": 16, "nb_manquantes": 0, "ABS": 0, "ATT": 0, "EXC": 0, "saisie_notes": { "datetime_debut": "2021-09-11T00:00:00+02:00", "datetime_fin": "2022-08-25T00:00:00+02:00", "datetime_mediane": "2022-03-19T00:00:00+01:00" } }, ... ] }, ] ``` #### **`formsemestre_etudiants(-query)`** * **Routes:** * `/ScoDoc/api/formsemestre//etudiants/long/query` * `/ScoDoc/api/formsemestre//etudiants/query` * `/ScoDoc/api/formsemestre//etudiants/long` * `/ScoDoc/api/formsemestre//etudiants` * **Méthode:** `GET` * **Permission:** `ScoView` * **Description:** Étudiants d'un formsemestre. Si l'état est spécifié, ne renvoie que les inscrits (`I`), les démissionnaires (`D`) ou les défaillants (`DEF`) #### **`formsemestre_infos`** * **Route:** `/ScoDoc/api/formsemestre/` * **Méthode:** `GET` * **Permission:** `ScoView` * **Description:** Information sur le formsemestre indiqué. formsemestre_id : l'id du formsemestre Exemple de résultat : ```json { "block_moyennes": false, "bul_bgcolor": "white", "bul_hide_xml": false, "date_debut_iso": "2021-09-01", "date_debut": "01/09/2021", "date_fin_iso": "2022-08-31", "date_fin": "31/08/2022", "dept_id": 1, "elt_annee_apo": null, "elt_passage_apo" : null, "elt_sem_apo": null, "ens_can_edit_eval": false, "etat": true, "formation_id": 1, "formsemestre_id": 1, "gestion_compensation": false, "gestion_semestrielle": false, "id": 1, "modalite": "FI", "resp_can_change_ens": true, "resp_can_edit": false, "responsables": [1, 99], // uids "scodoc7_id": null, "semestre_id": 1, "titre_formation" : "BUT GEA", "titre_num": "BUT GEA semestre 1", "titre": "BUT GEA", } ``` #### **`formsemestre_programme`** * **Route:** `/ScoDoc/api/formsemestre//programme` * **Méthode:** `GET` * **Permission:** `ScoView` * **Description:** Retourne la liste des UEs, ressources et SAEs d'un semestre Exemple de résultat : ```json { "ues": [ { "type": 0, "formation_id": 1, "ue_code": "UCOD11", "id": 1, "ects": 12.0, "acronyme": "RT1.1", "is_external": false, "numero": 1, "code_apogee": "", "titre": "Administrer les réseaux et l’Internet", "coefficient": 0.0, "semestre_idx": 1, "color": "#B80004", "ue_id": 1 }, ... ], "ressources": [ { "ens": [ 10, 18 ], "formsemestre_id": 1, "id": 15, "module": { "abbrev": "Programmer", "code": "SAE15", "code_apogee": "V7GOP", "coefficient": 1.0, "formation_id": 1, "heures_cours": 0.0, "heures_td": 0.0, "heures_tp": 0.0, "id": 15, "matiere_id": 3, "module_id": 15, "module_type": 3, "numero": 50, "semestre_id": 1, "titre": "Programmer en Python", "ue_id": 3 }, "module_id": 15, "moduleimpl_id": 15, "responsable_id": 2 }, ... ], "saes": [ { ... }, ... ], "modules" : [ ... les modules qui ne sont ni des SAEs ni des ressources ... ] } ``` #### **`formsemestre_resultat(-query)`** * **Route:** `/ScoDoc/api/formsemestre//resultats` * **Méthode:** `GET` * **Permission:** `ScoView` * **Description:** Tableau récapitulatif des résultats. Pour chaque étudiant, son état, ses groupes, ses moyennes d'UE et de modules. Si `format=raw`, ne converti pas les valeurs. #### **`formsemestre_set_apo_etapes`** * **Route:** `/ScoDoc/api/formsemestre/apo/set_etapes` * **Méthode:** `POST` * **Permission:** `EditApogee` * **Description:** Change les codes étapes du semestre indiqué. Le code est une chaîne, avec éventuellement plusieurs valeurs séparées par des virgules. Ce changement peut être fait sur un semestre verrouillé #### **`formsemestre_set_elt_annee_apo`** * **Route:** `/ScoDoc/api/formsemestre/apo/set_elt_annee` * **Méthode:** `POST` * **Permission:** `EditApogee` * **Description:** Change les codes étapes du semestre indiqué (par le champ oid). Le code est une chaîne, avec éventuellement plusieurs valeurs séparées par des virgules. Ce changement peut être fait sur un semestre verrouillé. #### **`formsemestre_set_elt_passage_apo`** * **Route:** `/ScoDoc/api/formsemestre/apo/set_elt_passage` * **Méthode:** `POST` * **Permission:** `EditApogee` * **Description:** Change les codes apogée de passage du semestre indiqué (par le champ oid). Le code est une chaîne, avec éventuellement plusieurs valeurs séparées par des virgules. Ce changement peut être fait sur un semestre verrouillé. #### **`formsemestre_set_elt_sem_apo`** * **Route:** `/ScoDoc/api/formsemestre/apo/set_elt_sem` * **Méthode:** `POST` * **Permission:** `EditApogee` * **Description:** Change les codes étapes du semestre indiqué. Le code est une chaîne, avec éventuellement plusieurs valeurs séparées par des virgules. Ce changement peut être fait sur un semestre verrouillé. #### **`formsemestres_query(-query)`** * **Route:** `/ScoDoc/api/formsemestres/query` * **Méthode:** `GET` * **Permission:** `ScoView` * **Paramètres:** * `etape_apo` : un code étape apogée * `annee_scolaire` : année de début de l'année scolaire * `dept_acronym` : acronyme du département (eg "RT") * `dept_id` : id du département * `ine ou nip` : code d'un étudiant: ramène alors tous les semestres auxquels il est inscrit. * `etat` : 0 si verrouillé, 1 sinon * **Description:** Retourne les formsemestres filtrés par étape Apogée ou année scolaire ou département (acronyme ou id) ou état ou code étudiant. #### **`groups_get_auto_assignment`** * **Route:** `/ScoDoc/api/formsemestre//groups_get_auto_assignment` * **Méthode:** `GET` * **Permission:** `ScoView` * **Description:** Rend les données stockées par `groups_save_auto_assignment`. #### **`groups_save_auto_assignment`** * **Route:** `/ScoDoc/api/formsemestre//groups_save_auto_assignment` * **Méthode:** `POST` * **Permission:** `ScoView` * **Description:** Enregistre les données, associées à ce formsemestre. Usage réservé aux fonctions de gestion des groupes, ne pas utiliser ailleurs. ### API Groupes et partitions #### **`formsemestre_partitions`** * **Route:** `/ScoDoc/api/formsemestre//partitions` * **Méthode:** `GET` * **Permission:** `ScoView` * **Description:** Liste de toutes les partitions d'un formsemestre. Exemple de résultat : ```json { partition_id : { "bul_show_rank": False, "formsemestre_id": 1063, "groups" : group_id : { "id" : 12, "name" : "A", "partition_id" : partition_id, } }, ... } ``` #### **`formsemestre_set_partitions_order`** * **Route:** `/ScoDoc/api/formsemestre//partitions/order` * **Méthode:** `POST` * **Permission:** `ScoView` * **Description:** Modifie l'ordre des partitions du formsemestre. #### **`group_create`** * **Route:** `/ScoDoc/api/partition//group/create` * **Méthode:** `POST` * **Permission:** `ScoView` * **Description:** Création d'un groupe dans une partition. #### **`group_delete`** * **Route:** `/ScoDoc/api/group//delete` * **Méthode:** `POST` * **Permission:** `ScoView` * **Description:** Suppression d'un groupe. #### **`group_edit`** * **Route:** `/ScoDoc/api/group//edit` * **Méthode:** `POST` * **Permission:** `ScoView` * **Description:** Édition d'un groupe. #### **`group_etudiants`** * **Route:** `/ScoDoc/api/group//etudiants` * **Méthode:** `GET` * **Permission:** `ScoView` * **Paramètres:** * `group_id` : l'id d'un groupe * **Description:** Retourne la liste des étudiants dans un groupe (inscrits au groupe et inscrits au semestre). Exemple de résultat : ```json [ { 'civilite': 'M', 'id': 123456, 'ine': None, 'nip': '987654321', 'nom': 'MARTIN', 'nom_usuel': null, 'prenom': 'JEAN'} }, ... ] ``` #### **`group_etudiants_query(-query)`** * **Route:** `/ScoDoc/api/group//etudiants/query` * **Méthode:** `GET` * **Permission:** `ScoView` * **Description:** Étudiants du groupe, filtrés par état (aucun, `I`, `D`, `DEF`) #### **`group_remove_etud`** * **Route:** `/ScoDoc/api/group//remove_etudiant/` * **Méthode:** `POST` * **Permission:** `ScoView` * **Description:** Retire l'étudiant de ce groupe. S'il n'y est pas, ne fait rien. #### **`group_set_edt_id`** * **Route:** `/ScoDoc/api/group//set_edt_id/` * **Méthode:** `POST` * **Permission:** `ScoView` * **Description:** Set edt_id du groupe. Contrairement à `/edit`, peut-être changé pour toute partition d'un formsemestre non verrouillé. #### **`group_set_etudiant`** * **Route:** `/ScoDoc/api/group//set_etudiant/` * **Méthode:** `POST` * **Permission:** `ScoView` * **Description:** Affecte l'étudiant au groupe indiqué. #### **`partition_create`** * **Route:** `/ScoDoc/api/formsemestre//partition/create` * **Méthode:** `POST` * **Permission:** `ScoView` * **Description:** Création d'une partition dans un semestre. #### **`partition_delete`** * **Route:** `/ScoDoc/api/partition//delete` * **Méthode:** `POST` * **Permission:** `ScoView` * **Description:** Suppression d'une partition (et de tous ses groupes). * Note 1: La partition par défaut (tous les étudiants du sem.) ne peut pas être supprimée. * Note 2: Si la partition de parcours est supprimée, les étudiants sont désinscrits des parcours. #### **`partition_edit`** * **Route:** `/ScoDoc/api/partition//edit` * **Méthode:** `POST` * **Permission:** `ScoView` * **Description:** Modification d'une partition dans un semestre. Tous les champs sont optionnels. #### **`partition_info`** * **Route:** `/ScoDoc/api/partition/` * **Méthode:** `GET` * **Permission:** `ScoView` * **Description:** Info sur une partition. Exemple de résultat : ```json { 'bul_show_rank': False, 'formsemestre_id': 39, 'groups': [ {'id': 268, 'name': 'A', 'partition_id': 100}, {'id': 269, 'name': 'B', 'partition_id': 100} ], 'groups_editable': True, 'id': 100, 'numero': 100, 'partition_name': 'TD', 'show_in_lists': True } ``` #### **`partition_order_groups`** * **Route:** `/ScoDoc/api/partition//groups/order` * **Méthode:** `POST` * **Permission:** `ScoView` * **Description:** Modifie l'ordre des groupes de la partition. #### **`partition_remove_etud`** * **Route:** `/ScoDoc/api/partition//remove_etudiant/` * **Méthode:** `POST` * **Permission:** `ScoView` * **Description:** Enlève l'étudiant de tous les groupes de cette partition. (NB: en principe, un étudiant ne doit être que dans 0 ou 1 groupe d'une partition) ### API Jury #### **`autorisation_inscription_delete`** * **Route:** `/ScoDoc/api/etudiant//jury/autorisation_inscription//delete` * **Méthode:** `POST` * **Permission:** `EtudInscrit` * **Description:** Efface cette autorisation d'inscription. #### **`decisions_jury`** * **Route:** `/ScoDoc/api/formsemestre//decisions_jury` * **Méthode:** `GET` * **Permission:** `ScoView` * **Description:** Décisions du jury des étudiants du formsemestre. #### **`validation_annee_but_delete`** * **Route:** `/ScoDoc/api/etudiant//jury/validation_annee_but//delete` * **Méthode:** `POST` * **Permission:** `EtudInscrit` * **Description:** Efface cette validation d'année BUT. #### **`validation_dut120_delete`** * **Route:** `/ScoDoc/api/etudiant//jury/validation_dut120//delete` * **Méthode:** `POST` * **Permission:** `EtudInscrit` * **Description:** Efface cette validation de DUT120. #### **`validation_formsemestre_delete`** * **Route:** `/ScoDoc/api/etudiant//jury/validation_formsemestre//delete` * **Méthode:** `POST` * **Permission:** `ScoView` * **Description:** Efface cette validation de semestre. #### **`validation_rcue_delete`** * **Route:** `/ScoDoc/api/etudiant//jury/validation_rcue//delete` * **Méthode:** `POST` * **Permission:** `EtudInscrit` * **Description:** Efface cette validation de RCUE. #### **`validation_rcue_record`** * **Route:** `/ScoDoc/api/etudiant//jury/validation_rcue/record` * **Méthode:** `POST` * **Permission:** `EtudInscrit` * **Description:** Enregistre une validation de RCUE. Si une validation existe déjà pour ce RCUE, la remplace. #### **`validation_ue_delete`** * **Route:** `/ScoDoc/api/etudiant//jury/validation_ue//delete` * **Méthode:** `POST` * **Permission:** `ScoView` * **Description:** Efface cette validation d'UE. ### API Justificatifs #### **`justif_create`** * **Routes:** * `/ScoDoc/api/justificatif/ine//create` * `/ScoDoc/api/justificatif/nip//create` * `/ScoDoc/api/justificatif/etudid//create` * `/ScoDoc/api/justificatif//create` * **Méthode:** `POST` * **Permission:** `AbsChange` * **Description:** Création d'un justificatif pour l'étudiant. #### **`justif_delete`** * **Route:** `/ScoDoc/api/justificatif/delete` * **Méthode:** `POST` * **Permission:** `AbsChange` * **Description:** Suppression d'un justificatif à partir de son id. * **Exemple de résultat:** [justif_delete.json](./samples/sample_justif_delete.json.md) #### **`justif_edit`** * **Route:** `/ScoDoc/api/justificatif//edit` * **Méthode:** `POST` * **Permission:** `AbsChange` * **Description:** Édition d'un justificatif à partir de son id. * **Exemple de résultat:** [justif_edit.json](./samples/sample_justif_edit.json.md) #### **`justif_export`** * **Route:** `/ScoDoc/api/justificatif//export/` * **Méthode:** `POST` * **Permission:** `ScoView` * **Description:** Retourne un fichier d'une archive d'un justificatif. La permission est `ScoView` + (`AbsJustifView` ou être l'auteur du justificatif). > Procédure de téléchargement de fichier : [télécharger un justificatif](FichiersJustificatifs.md#télécharger-un-fichier) #### **`justif_import`** * **Route:** `/ScoDoc/api/justificatif//import` * **Méthode:** `POST` * **Permission:** `AbsChange` * **Description:** Importation d'un fichier (création d'archive). > Procédure d'importation de fichier : [importer un justificatif](FichiersJustificatifs.md#importer-un-fichier) #### **`justif_justifies`** * **Route:** `/ScoDoc/api/justificatif//justifies` * **Méthode:** `GET` * **Permission:** `AbsChange` * **Description:** Liste `assiduite_id` justifiées par le justificatif. * **Exemple de résultat:** [justif_justifies.json](./samples/sample_justif_justifies.json.md) #### **`justif_list`** * **Route:** `/ScoDoc/api/justificatif//list` * **Méthode:** `GET` * **Permission:** `ScoView` * **Description:** Liste les fichiers du justificatif. * **Exemple de résultat:** [justif_list.json](./samples/sample_justif_list.json.md) #### **`justif_remove`** * **Route:** `/ScoDoc/api/justificatif//remove` * **Méthode:** `POST` * **Permission:** `AbsChange` * **Description:** Supression d'un fichier ou d'une archive. > Procédure de suppression de fichier : [supprimer un justificatif](FichiersJustificatifs.md#supprimer-un-fichier) #### **`justificatif`** * **Route:** `/ScoDoc/api/justificatif/` * **Méthode:** `GET` * **Permission:** `ScoView` * **Description:** Retourne un objet justificatif à partir de son id. Exemple de résultat: ```json { "justif_id": 1, "etudid": 2, "date_debut": "2022-10-31T08:00+01:00", "date_fin": "2022-10-31T10:00+01:00", "etat": "valide", "fichier": "archive_id", "raison": "une raison", // VIDE si pas le droit "entry_date": "2022-10-31T08:00+01:00", "user_id": 1 or null, } ``` * **Exemple de résultat:** [justificatif.json](./samples/sample_justificatif.json.md) #### **`justificatifs(-query)`** * **Routes:** * `/ScoDoc/api/justificatifs/ine//query` * `/ScoDoc/api/justificatifs/ine/` * `/ScoDoc/api/justificatifs/nip//query` * `/ScoDoc/api/justificatifs/nip/` * `/ScoDoc/api/justificatifs/etudid//query` * `/ScoDoc/api/justificatifs/etudid/` * `/ScoDoc/api/justificatifs//query` * `/ScoDoc/api/justificatifs/` * **Méthode:** `GET` * **Permission:** `ScoView` * **Paramètres:** * `user_id` : l'id de l'auteur du justificatif * `date_debut` : date de début du justificatif (supérieur ou égal) * `date_fin` : date de fin du justificatif (inférieur ou égal) * `etat` : etat du justificatif → valide, non_valide, attente, modifie * `order` : retourne les justificatifs dans l'ordre décroissant (non vide = True) * `courant` : retourne les justificatifs de l'année courante (bool : v/t ou f) * `group_id` : * **Description:** Retourne toutes les assiduités d'un étudiant * **Exemple de résultat:** [justificatifs.json](./samples/sample_justificatifs.json.md) #### **`justificatifs_dept(-query)`** * **Routes:** * `/ScoDoc/api/justificatifs/dept//query` * `/ScoDoc/api/justificatifs/dept/` * **Méthode:** `GET` * **Permission:** `ScoView` * **Paramètres:** * `user_id` : l'id de l'auteur du justificatif * `date_debut` : date de début du justificatif (supérieur ou égal) * `date_fin` : date de fin du justificatif (inférieur ou égal) * `etat` : etat du justificatif → valide, non_valide, attente, modifie * `order` : retourne les justificatifs dans l'ordre décroissant (non vide = True) * `courant` : retourne les justificatifs de l'année courante (bool : v/t ou f) * `group_id` : * **Description:** Renvoie tous les justificatifs d'un département (en ajoutant un champ "`formsemestre`" si possible). * **Exemple de résultat:** [justificatifs_dept.json](./samples/sample_justificatifs_dept.json.md) #### **`justificatifs_formsemestre(-query)`** * **Routes:** * `/ScoDoc/api/justificatifs/formsemestre//query` * `/ScoDoc/api/justificatifs/formsemestre/` * **Méthode:** `GET` * **Permission:** `ScoView` * **Paramètres:** * `user_id` : l'id de l'auteur du justificatif * `date_debut` : date de début du justificatif (supérieur ou égal) * `date_fin` : date de fin du justificatif (inférieur ou égal) * `etat` : etat du justificatif → valide, non_valide, attente, modifie * `order` : retourne les justificatifs dans l'ordre décroissant (non vide = True) * `courant` : retourne les justificatifs de l'année courante (bool : v/t ou f) * `group_id` : * **Description:** Retourne tous les justificatifs du formsemestre. * **Exemple de résultat:** [justificatifs_formsemestre.json](./samples/sample_justificatifs_formsemestre.json.md) ### API Logos #### **`logo_get_global`** * **Route:** `/ScoDoc/api/logo/` * **Méthode:** `GET` * **Permission:** `ScoSuperAdmin` * **Description:** Renvoie le logo global de nom donné. L'image est au format png ou jpg; le format retourné dépend du format sous lequel l'image a été initialement enregistrée. #### **`logo_get_local_by_acronym`** * **Route:** `/ScoDoc/api/departement//logos` * **Méthode:** `GET` * **Permission:** `ScoSuperAdmin` * **Description:** Liste des noms des logos définis pour le département désigné par son acronyme. #### **`logo_get_local_by_id`** * **Route:** `/ScoDoc/api/departement/id//logos` * **Méthode:** `GET` * **Permission:** `ScoSuperAdmin` * **Description:** Liste des noms des logos définis pour le département désigné par son id. #### **`logo_get_local_dept_by_acronym`** * **Route:** `/ScoDoc/api/departement//logo/` * **Méthode:** `GET` * **Permission:** `ScoSuperAdmin` * **Description:** Le logo: image (format png ou jpg). **Exemple d'utilisation:** * `/ScoDoc/api/departement/MMI/logo/header` #### **`logo_get_local_dept_by_id`** * **Route:** `/ScoDoc/api/departement/id//logo/` * **Méthode:** `GET` * **Permission:** `ScoSuperAdmin` * **Description:** Le logo: image (format png ou jpg). **Exemple d'utilisation:** * `/ScoDoc/api/departement/id/3/logo/header` #### **`logo_list_globals`** * **Route:** `/ScoDoc/api/logos` * **Méthode:** `GET` * **Permission:** `ScoSuperAdmin` * **Description:** Liste des noms des logos définis pour le site ScoDoc. ### API Moduleimpl #### **`moduleimpl_inscriptions`** * **Route:** `/ScoDoc/api/moduleimpl//inscriptions` * **Méthode:** `GET` * **Permission:** `ScoView` * **Description:** Liste des inscriptions à ce moduleimpl. Exemple de résultat : ```json [ { "id": 1, "etudid": 666, "moduleimpl_id": 1234, }, ... ] ``` #### **`moduleimpl_notes`** * **Route:** `/ScoDoc/api/moduleimpl//notes` * **Méthode:** `GET` * **Permission:** `ScoView` * **Description:** Liste des notes dans ce moduleimpl. Exemple de résultat : ```json [ { "etudid": 17776, // code de l'étudiant "nom": "DUPONT", "prenom": "Luz", "38411": 16.0, // Note dans l'évaluation d'id 38411 "38410": 15.0, "moymod": 15.5, // Moyenne INDICATIVE module "moy_ue_2875": 15.5, // Moyenne vers l'UE 2875 "moy_ue_2876": 15.5, // Moyenne vers l'UE 2876 "moy_ue_2877": 15.5 // Moyenne vers l'UE 2877 }, ... ] ``` ### API Tokens #### **`token_get`** * **Route:** `/ScoDoc/api/tokens` * **Méthode:** `POST` * **Permission:** `Aucune permission requise` * **Description:** Renvoie un jeton jwt pour l'utilisateur courant. ### API Utilisateurs #### **`permissions_list`** * **Route:** `/ScoDoc/api/permissions` * **Méthode:** `GET` * **Permission:** `UsersView` * **Description:** Liste des noms de permissions définies. #### **`role_create`** * **Route:** `/ScoDoc/api/role/create/` * **Méthode:** `POST` * **Permission:** `ScoSuperAdmin` * **Description:** Création d'un nouveau rôle avec les permissions données. #### **`role_delete`** * **Route:** `/ScoDoc/api/role//delete` * **Méthode:** `POST` * **Permission:** `ScoSuperAdmin` * **Description:** Suprression d'un rôle. #### **`role_edit`** * **Route:** `/ScoDoc/api/role//edit` * **Méthode:** `POST` * **Permission:** `ScoSuperAdmin` * **Description:** Édition d'un rôle. On peut spécifier un nom et/ou des permissions. #### **`role_get`** * **Route:** `/ScoDoc/api/role/` * **Méthode:** `GET` * **Permission:** `UsersView` * **Description:** Un rôle #### **`role_permission_add`** * **Route:** `/ScoDoc/api/role//add_permission/` * **Méthode:** `POST` * **Permission:** `ScoSuperAdmin` * **Description:** Ajoute une permission à un rôle. #### **`role_permission_remove`** * **Route:** `/ScoDoc/api/role//remove_permission/` * **Méthode:** `POST` * **Permission:** `ScoSuperAdmin` * **Description:** Retire une permission d'un rôle. #### **`roles_list`** * **Route:** `/ScoDoc/api/roles` * **Méthode:** `GET` * **Permission:** `UsersView` * **Description:** Tous les rôles définis. #### **`user_create`** * **Route:** `/ScoDoc/api/user/create` * **Méthode:** `POST` * **Permission:** `UsersAdmin` * **Description:** Création d'un utilisateur #### **`user_edit`** * **Route:** `/ScoDoc/api/user//edit` * **Méthode:** `POST` * **Permission:** `UsersAdmin` * **Description:** Modification d'un utilisateur. Champs modifiables: ```json { "dept": str or null, "nom": str, "prenom": str, "active":bool ... } ``` #### **`user_info`** * **Route:** `/ScoDoc/api/user/` * **Méthode:** `GET` * **Permission:** `UsersView` * **Description:** Info sur un compte utilisateur ScoDoc. #### **`user_password`** * **Route:** `/ScoDoc/api/user//password` * **Méthode:** `POST` * **Permission:** `UsersAdmin` * **Description:** Modification du mot de passe d'un utilisateur. Champs modifiables: ```json { "password": str } ```. Si le mot de passe ne convient pas, erreur 400. #### **`user_role_add`** * **Routes:** * `/ScoDoc/api/user//role//add/departement/` * `/ScoDoc/api/user//role//add` * **Méthode:** `POST` * **Permission:** `ScoSuperAdmin` * **Description:** Ajoute un rôle à l'utilisateur dans le département donné. #### **`user_role_remove`** * **Routes:** * `/ScoDoc/api/user//role//remove/departement/` * `/ScoDoc/api/user//role//remove` * **Méthode:** `POST` * **Permission:** `ScoSuperAdmin` * **Description:** Retire le rôle (dans le département donné) à cet utilisateur. #### **`users_info_query(-query)`** * **Route:** `/ScoDoc/api/users/query` * **Méthode:** `GET` * **Permission:** `ScoView` * **Description:** Utilisateurs, filtrés par dept, active ou début nom Exemple: ``` /users/query?departement=dept_acronym&active=1&starts_with= ``` Seuls les utilisateurs "accessibles" (selon les permissions) sont retournés. Si accès via API web, le département de l'URL est ignoré, seules les permissions de l'utilisateur sont prises en compte. --------------------------------------------------------------------------------------------------------------------- ### En savoir plus Voir exemples d'utilisation de l'API en Python, dans `tests/api/`. !!! note "Voir aussi" - [Guide configuration et ligne de commande](GuideConfig.md) - [Guide administrateur ScoDoc](GuideAdminSys.md) - [ServicesXml](ServicesXml.md) : anciens web services XML (obsolète) - [FAQ](FAQ.md) - [Contacts](Contact.md)