From a995e3f886ac0adc309e1e60484f638dab6b26cf Mon Sep 17 00:00:00 2001 From: viennet Date: Thu, 25 Jul 2024 17:04:18 +0300 Subject: [PATCH] API: samples assiduite/justificatifs --- docs/ScoDoc9API.md | 4467 +++++++++-------- docs/img/API_Chart.svg | 2 +- docs/samples/sample_assiduite.json.md | 6 +- docs/samples/sample_assiduite_create.json.md | 10 +- docs/samples/sample_assiduite_delete.json.md | 15 +- .../sample_assiduite_justificatifs.json.md | 4 +- docs/samples/sample_assiduites.json.md | 99 +- docs/samples/sample_assiduites_count.json.md | 58 +- docs/samples/sample_assiduites_create.json.md | 36 +- .../sample_assiduites_evaluations.json.md | 34 +- .../sample_assiduites_formsemestre.json.md | 40 +- ...mple_assiduites_formsemestre_count.json.md | 18 +- docs/samples/sample_assiduites_group.json.md | 50 +- ...e.json.md => sample_justif_delete.json.md} | 19 +- ...dit.json.md => sample_justif_edit.json.md} | 6 +- ...son.md => sample_justif_justifies.json.md} | 9 +- docs/samples/sample_justif_list.json.md | 10 + docs/samples/sample_justificatif.json.md | 2 +- .../sample_justificatif_create.json.md | 22 - .../sample_justificatif_export.json.md | 7 - .../sample_justificatif_import.json.md | 11 - docs/samples/sample_justificatif_list.json.md | 10 - .../sample_justificatif_remove.json.md | 25 - docs/samples/sample_justificatifs.json.md | 84 +- .../samples/sample_justificatifs_dept.json.md | 14 +- .../sample_justificatifs_formsemestre.json.md | 10 +- 26 files changed, 2518 insertions(+), 2550 deletions(-) rename docs/samples/{sample_justificatif_delete.json.md => sample_justif_delete.json.md} (63%) rename docs/samples/{sample_justificatif_edit.json.md => sample_justif_edit.json.md} (87%) rename docs/samples/{sample_justificatif_justifies.json.md => sample_justif_justifies.json.md} (53%) create mode 100644 docs/samples/sample_justif_list.json.md delete mode 100644 docs/samples/sample_justificatif_create.json.md delete mode 100644 docs/samples/sample_justificatif_export.json.md delete mode 100644 docs/samples/sample_justificatif_import.json.md delete mode 100644 docs/samples/sample_justificatif_list.json.md delete mode 100644 docs/samples/sample_justificatif_remove.json.md diff --git a/docs/ScoDoc9API.md b/docs/ScoDoc9API.md index f0a68a5..647eff9 100644 --- a/docs/ScoDoc9API.md +++ b/docs/ScoDoc9API.md @@ -1,8 +1,11 @@ - # 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 informations aux formats XML et JSON. +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 @@ -240,2205 +243,2327 @@ permet de rechercher une entrée à partir du résultat attendu. -(carte générée avec `flask gen-api-map -e "api."`) +(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 | +| [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 | +| [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 | +| [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 | +| [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 | +| [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) | 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) | 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 | +| [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) | 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-map -e "api."`) +| [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. Il n'est par exemple pas garanti que les clés des objets json sont triées: +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 -- 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 (la date de modification d'un mot de passe peut évidement être différente de sa date de création) +- 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 Départements** +### API Assiduites -#### Structure Département +#### **`assiduite`** -| attribut | type | commentaire | -|:----------------|:--------|:-----------------------------------------| -| _acronym_ | string | acronyme du département (fixe et unique) | -| _date_creation_ | string | date ISO | -| _dept_name_ | string | Nom complet du département | -| _descripton_ | string | | -| _id_ | int | identifiant unique | -| _visible_ | bool | affiché ou non dans la page d'accueil | +* **Route:** `/ScoDoc/api/assiduite/` +* **Méthode:** `GET` +* **Permission:** `ScoView` +* **Description:** Retourne un objet assiduité à partir de son id -#### **departements** + Exemple de résultat: -- **Méthode:** GET -- **Routes:** `/departements` -- **Exemple d'utilisation:** `/api/departements` -- **Résultat:** Liste de tous les départements (visibles ou non). -- **Exemple de résultat:** [departements.json](samples/sample_departements.json.md) - -#### **departements-ids** - -- **Méthode:** GET -- **Permission: `ScoView`** -- **Routes:** `/departements_ids` -- **Résultat:** Liste des id départements (visibles ou non). -- **Exemple de résultat:** -- **Exemple de résultat:** [departements-ids.json](samples/sample_departements-ids.json.md) - -#### **departement** - -- **Méthode:** GET -- **Permission: `ScoView`** -- **Routes:** - - `/departement/id/` - - `/departement/` -- **Résultat:** Un département -- **Exemple de résultat:** [departement.json](samples/sample_departement.json.md) - -#### **`departement-create`** - -- **Méthode: POST** -- **Permission: `ScoSuperAdmin`** -- **Paramètres:** aucun -- **Data:** `{ "acronym": str, "visible":bool }` -- **Routes:** `/departement/create` -- **Exemple d'utilisation:** `/departement/create` - ->`{ "acronym": "QLIO", "visible": true }` - -- **Résultat:** Crée un nouveau département. L'acronyme du département (RT, - GEII, ...) doit être unique (il est d'usage de le mettre en majuscules, mais - ce n'est pas obligatoire). Le paramètre optionnel `visible`indique si le - département est affiché sur la page d'accueil de ScoDoc. Notez qu'un - département "invisible" peut quand même être utilisé si l'on connait son - adresse (URL). Renvoie le département créé. -- **Exemple de résultat:** [departements-create.json](samples/sample_departement-create.json.md) - -#### **`departement-edit`** - -- **Méthode: POST** -- **Permission: `ScoSuperAdmin`** -- **Paramètres:** `dept_acronym` -- **Data:** `{ "visible":bool }` -- **Routes:** `/departement//edit` -- **Exemple d'utilisation:** `/departement/edit` - ->`{ "visible": false }` - -- **Résultat:** Modifie un département. Seul le champs `visible` peut être - modifié. L'acronyme ne peut pas être changé car il peut être mentionné dans de - nombreux objets et documents, y compris à l'extérieur de ScoDoc. -- **Exemple de résultat:** [departements-edit.json](samples/sample_departement-edit.json.md) - -#### **`departement-delete`** - -- **Méthode: POST** -- **Permission: `ScoSuperAdmin`** -- **Paramètres:** `dept_acronym` -- **Routes:** `/departement//delete` -- **Exemple d'utilisation:** `/departement/delete/EARTH` -- **Résultat:** supprime définitivement un département. *Toutes les données sont effacées* - (étudiants, formations, ...). -- **Exemple de résultat:** [departements-delete.json](samples/sample_departement-delete.json.md) - -### **API Etudiant** - -#### Structure Etudiant - -| attribut | type | commentaire | -|:----------------------|:------------------------------------|:------------------------------------------------------------| -| _civilite_ | string | '`M`', '`F`' ou '`X`' [[1]](DonneesEtudiant.md) | -| _civilite_etat_civil_ | string | '`M`', '`F`' ou '`X`' [[1]](DonneesEtudiant.md) | -| _code_ine_ | string | non unique! | -| _code_nip_ | string | non unique! | -| _dept_id_ | string | id du département scodoc | -| _id_ | int | id unique | -| _nom_ | string | en majuscule [[1]](DonneesEtudiant.md) | -| _nom_usuel_ | string | null si absent [[1]](DonneesEtudiant.md) | -| _prenom_ | string | [[1]](DonneesEtudiant.md) | -| _prenom_etat_civil_ | string | (si prenom d'usage <> etat_civil [[1]](DonneesEtudiant.md)) | -| _sort_key_ | [ string, string ] | nom-prenom pour trier | -| | | **Format long** | -| _admission_ | admission | | -| _adresses_ | [adresse](#structure-adresse) | | -| _boursier_ | bool | | -| _date_naissance_ | string | date ISO (yyyy-mm-dd) | -| _dept_acronym_ | string | | -| _dept_naissance_ | string | département du lieu de naissance | -| _lieu_naissance_ | string | lieu de naissance (ville) | -| _nationalite_ | string | | -| _photo_filename_ | string | | -| _scodoc7_id_ | string | de la forme 'EID9999' | -| _statut_ | string | '`I`', '`D`' ou '`X`' | -| _annotations_ | [annotation](#structure-annotation) | | - - -##### Structure adresse - -| attribut | type | commentaire | -|:----------------------------|:-------|:------------| -| codepostaldomicile | string | | -| description | string | | -| domicile | string | | -| email | string | | -| emailperso | string | | -| etudid | string | | -| fax | string | | -| id | string | | -| paysdomicile | string | | -| telephone | string | | -| telephonemobile | string | | -| typeadresse | string | | -| villedomicile | string | | - -##### Structure annotation - -Les annotations sur les étudiants ne sont accessibles qu'avec la permission `ViewEtudData`. -Sur l'application, elles sont affichées et modifiables sur la fiche de l'étudiants. - -| attribut | type | commentaire | -|:---------|:-------|:------------| -| date | string | | -| id | int | | -| comment | string | | -| author | string | | -| etudid | int | | - - - -#### **`etudiants-courants`** - -* **Méthode:** GET -* **Permission: `ScoView`** -* **Routes:** - * `/etudiants/courants` - * `/etudiants/courants/long` -* **Exemple d'utilisation:** `/api/etudiants/courants` -* **Résultat:** Liste des étudiants inscrits dans un formsemestre - actuellement en cours. Avec `/long`, donne tous les attributs de - l'étudiants (plus lent), y compris les annotations si le client - a la permission `ViewEtudData`. -* **Exemple de résultat:** [etudiants-courants.json](samples/sample_etudiants-courants.json.md) - -#### **`etudiants-clef`** - -* **Méthode:** GET -* **Permission: `ScoView`** -* **Paramètres:** `etudid`, `nip`, `ine` -* **Routes:** `/etudiants/etudid/` ou `/etudiants/nip/` ou `/etudiants/ine/` -* **Exemple d'utilisation:** `/api/etudiants/nip/1` -* **Résultat:** Infos sur le ou les étudiants correspondants. - Comme [`/etudiant`](ScoDoc9API.md#etudiant) mais renvoie toujours une liste. - Si non trouvé, liste vide, pas d'erreur. - Dans 99% des cas, la liste contient un seul étudiant, mais si l'étudiant a - été inscrit dans plusieurs départements, on a plusieurs objets (1 par - dept.). -* **Exemple de résultat:** [etudiants-clef.json](samples/sample_etudiants-clef.json.md) - -#### **`etudiants-name`** - -* **Méthode:** GET -* **Permission: `ScoView`** -* **Paramètres:** `name` -* **Routes:** `/etudiants/name/` -* **Exemple d'utilisation:** `/api/etudiants/name/dup` -* **Résultat:** Liste ordonnée par nom d'étudiants dont le nom commence par - `name`. Si `name`est trop court (2 caractères), liste vide. La casse et les - accents ne sont pas pris en compte dans la recherche. -* **Note:** Cette fonction est utilisée pour la complétion des champs de formulaire - (choix d'un étudiant). - -#### **`etudiant-create`** - -* **Méthode: POST** -* **Permission: `EtudInscrit`** -* **Paramètres:** `` -* **Data:** - -```json - { - "boursier" : , - "civilite" : , // M, F, X - "civilite_etat_civil" : , - "code_ine" : , - "code_nip" : , - "date_naissance" : , // format ISO - "dept" : , // acronyme du département - "dept_naissance" : , - "lieu_naissance" : , - "nationalite" : , - "nom" : , // requis - "nom_usuel" : , - "prenom" : , - "prenom_etat_civil" : , - - // Données concernant l'admission (avant son cursus ScoDoc) - "admission" : { - "annee" : , - "bac" : , - "specialite" : , - "annee_bac" : , - "math" : , - "physique" : , - "anglais" : , - "francais" : , - // Rang dans les voeux du candidat (non connu avec Parcoursup) - "rang" : , - // Qualité et décision du jury d'admission (ou de l'examinateur) - "qualite" : , // mesure arbitraire locale - "rapporteur":, // chaine libre - "decision":,// chaine libre - "score":, // score arbitraire local - "commentaire":, - // Lycée d'origine: - "nomlycee" : , - "villelycee" : , - "codepostallycee" : , - "codelycee" : , - }, - - "adresses" : [ // liste mais seule la première est utilisée ! - { - "email" : , // email universitaire en général - "emailperso" : , // email personnel (exterieur) - "domicile" : , - "codepostaldomicile" : , - "villedomicile" : , - "paysdomicile" : , - "telephone" : , - "telephonemobile" : , - "description" : , - } - ] - } -``` - -* **Routes:** `/etudiant/create`, `/etudiant/create/force` -* **Exemple d'utilisation:** `/etudiant/create` -* **Résultat:** Crée un étudiant dans le département indiqué. - - -#### **`etudiant-edit`** - -* **Méthode: POST** -* **Permission: `EtudInscrit`** -* **Paramètres:** `` -* **Data:** exactement comme `etudiant/create`, seules les données passées sont modifiées. -* **Routes:** - * `/etudiant/etudid//edit` - * `/etudiant/nip//edit` - * `/etudiant/ine//edit` -* **Résultat:** Modifie les données de l'étudiant. - -#### **`etudiant-annotation`** - -* **Méthode: POST** -* **Permission: `EtudInscrit`+`ViewEtudData`** -* **Data:** `{ "comment" : "une annotation" }` -* **Routes:** - * `/etudiant/etudid//annotation` - * `/etudiant/nip//annotation` - * `/etudiant/ine//annotation` -* **Résultat:** Ajoute une annotation sur l'étudiant. - -#### **`etudiant-annotation-delete`** - -* **Méthode: POST** -* **Permission: `EtudInscrit`** -* **Routes:** - * `/etudiant/etudid//annotation//delete` - * `/etudiant/nip//annotation/delete` - * `/etudiant/ine//annotation/delete` -* **Résultat:** Supprimer une annotation sur l'étudiant. - -#### **departement-etudiants** - -* **Méthode:** GET -* **Permission: `ScoView`** -* **Paramètres:** `dept`, `dept_id` -* **Routes:** - * `/departement/id//etudiants` - * `/departement//etudiants` -* **Exemple d'utilisation:** `/api/departement/MMI/etudiants` -* **Résultat:** liste tous les étudiants (passés ou présents) d'un département. - On peut spécifier l'acronyme du département ("MMI") ou son id (un entier). - Attention, la liste peut être longue: requête coûteuse à éviter. -* **Exemple de résultat:** [departement-etudiants.json](samples/sample_departement-etudiants.json.md) - -#### **`formsemestre-etudiants[-long][-query]`** - -* **Méthode:** GET -* **Permission: `ScoView`** -* **Paramètres:** `formsemestre_id` -* **Query string:** `etat` ('I', 'D' ou 'DEF') -* **Routes:** - * `/formsemestre//etudiants` - * `/formsemestre//etudiants/query?etat=I,D,DEF` - * `/formsemestre//etudiants/long` - * `/formsemestre//etudiants/long/query?etat=I,D,DEF` -* **Exemple d'utilisation:** - * `/api/formsemestre/1/etudiants/long` - * `/api/formsemestre/1/etudiants/query?etat=D` -* **Résultat:** Etudiants d'un formsemestre spécifié par son id. - Une clé (`sort_key`) reproduit [ nom, prenom ] sous forme ASCII, permettant le tri des étudiants. - Avec `query`, La liste est restreinte aux étudiants inscrits (`I`), démissionnaires (`D`) ou défaillants (`DEF`) si l'état est indiqué. - Avec `long`, ajoute la date de naissance entre autre -* **Exemple de résultat:** - * [formsemestre-etudiants.json](samples/sample_formsemestre-etudiants.json.md) - * [formsemestre-etudiants-query.json](samples/sample_formsemestre-etudiants-query.json.md) - -#### **`group-etudiants[-query]`** - -* **Méthode: GET** -* **Permission: `ScoView`** -* **Paramètres:** `group_id` -* **Query string:** `etat` ('I', 'D' ou 'DEF') -* **Routes:** - * `/group//etudiants` - * `/group//etudiants/query` -* **Exemple d'utilisation:** - * `/ScoDoc/api/group/1/etudiants` - * `/ScoDoc/api/group/1/etudiants/query?etat=I` -* **Résultat:** Etudiants d'un groupe spécifié par son id. Liste - restreinte aux étudiants inscrits (I), démissionnaires (D) ou défaillants - (DEF) si l'état est indiqué. -* **Exemple de résultat:** - * [group-etudiants.json](samples/sample_group-etudiants.json.md) - * [group-etudiants-query.json](samples/sample_group-etudiants-query.json.md) - -#### **`etudiant`** - -* **Méthode:** GET -* **Permission: `ScoView`** -* **Paramètres:** `etudid`, `nip`, `ine` -* **Routes:** - * `/etudiant/etudid/` ou - * `/etudiant/nip/` ou - * `/etudiant/ine/` -* **Exemple d'utilisation:** `/api/etudiant/nip/1` -* **Résultat:** Retourne les informations sur l'étudiant correspondant à - l'id passé en paramètres. - Les codes INE et NIP sont uniques au sein d'un département. - Si plusieurs objets étudiant ont le même code, on renvoie le plus récemment inscrit. -* Pour obtenir tous les étudiants répondant au critère, utiliser [etudiant-clefs](#etudiants-clef) -* **Exemple de résultat:** [etudiant.json](samples/sample_etudiant.json.md) - -### **API Evaluation** - -#### Structure évaluation - -| attribut | type | commentaire | -|:----------------------------|:-----------------------------------------------|:--------------------------------------------------| -| coefficient | float | coefficient pour moyenne (1.) | -| date_debut | datetime (iso) | date et heure de début (tous groupes) | -| date_fin | datetime (iso) | date et heure de fin (tous groupes) | -| description | string | texte libre | -| evaluation_type | int | 0 normale, 1 rattrapage, 2 "2eme session", 3 "bonus" | -| moduleimpl_id | int | moduleimpl | -| note_max | float | barème (20 points) | -| numero | int | ordre présentation | -| poids | { int : float } | poids APC (BUT): { ue_id : poids } | -| publish_incomplete | int | si vrai, prend en compte même si notes incomplètes| -| visibulletin | int | affiche sur bulletins intermédiaires (non BUT) | - -Note: les poids ne sont utilisés que dans les formations APC (BUT). - -#### **`evaluation`** - -* **Méthode:** GET -* **Permission: `ScoView`** -* **Routes:** `/evaluation` -* **Exemple d'utilisation:** `/ScoDoc/api/evaluation/123` -* **Résultat:** Liste une évaluation -* **Exemple de résultat:** [evaluation.json](samples/sample_evaluation.json.md) - -#### **`evaluation-assiduites`** - -* **Méthode:** GET -* **Permission: `ScoView`** -* **Routes:** `/evaluation//assiduites` -* **Exemple d'utilisation:** `/ScoDoc/api/evaluation/123/assiduites` -* **Résultat:** La liste des assiduités de chaque étudiant inscrits à l'évaluation sur la plage de l'évaluation (Groupé par etudid) -* **Exemple de résultat:** [evaluation-assiduites.json](samples/sample_evaluation_assiduites.json.md) - -#### **`evaluation-create`** - -* **Méthode: POST** -* **Permission:** dépend du contexte -* **Data:** -```json -{ - "description" : str, - "evaluation_type" : int, // {0,1,2} default 0 (normale) - "date_debut" : date_iso, // optionnel - "date_fin" : date_iso, // optionnel - "note_max" : float, // si non spécifié, 20.0 - "numero" : int, // ordre de présentation, default tri sur date - "visibulletin" : boolean , //default true - "publish_incomplete" : boolean , //default false - "coefficient" : float, // si non spécifié, 1.0 - "poids" : { ue_id : poids } // optionnel -} -``` -* **Routes:** `/moduleimpl//evaluation/create` -* **Résultat:** Crée une évaluation dans le moduleimpl indiqué. Tous les paramètres passés dans sont optionnels. Renvoie l'évaluation. - -#### **`evaluation-delete`** - -* **Méthode: POST** -* **Permission:** dépend du contexte -* **Paramètres:** `evaluation_id` -* **Routes:** `/evaluation//delete` -* **Exemple d'utilisation:** `/ScoDoc/api/evaluation/123/delete` -* **Résultat:** Supprime une évaluation (et toutes ses notes s'il y en a) - -### **API Formation** - -#### Structure Formation - -| attribut | type | commentaire | -|:----------------------------|:-----------------------------------------------|:--------------------------------------------------| -| _acronyme_ | string | | -| _code_specialité_ | string | | -| _departement_ | [Département](#structure-departement) | _pour `/formations` mais pas pour `/formation` ?_ | -| _dept_id_ | int | _redondant avec departement.id ?_ | -| _formation_code_ | string | défini la compatibilité avec d'autres formations | -| _formation_id_ | | _redondant avec id ?_ | -| _id_ | int | id unique de formation | -| _referentiel_competence_id_ | int | null si pas de référentiel associé | -| _titre_ | string | _URL encoded ?_ | -| _titre_officiel_ | string | | -| _type_parcours_ | int | | -| _version_ | int | | - -#### **`formations`** - -* **Méthode:** GET -* **Permission: `ScoView`** -* **Routes:** `/formations` -* **Exemple d'utilisation:** `/ScoDoc/api/formations` -* **Résultat:** Liste de toutes les formations (tous départements accessibles). -* **Exemple de résultat:** [formations.json](samples/sample_formations.json.md) - -#### **`formations_ids`** - -* **Méthode:** GET -* **Permission: `ScoView`** -* **Routes:** `/formations_ids` -* **Exemple d'utilisation:** `/ScoDoc/api/formations_ids` -* **Résultat:** Liste des ids de toutes les formations (tous départements - accessibles). -* **Exemple de résultat:** [formations_ids.json](samples/sample_formations_ids.json.md) - -#### **`formation`** - -* **Méthode:** GET -* **Permission: `ScoView`** -* **Paramètres:** `formation_id` -* **Routes:** `/formation/` -* **Exemple d'utilisation:** `/ScoDoc/api/formation/1` -* **Résultat:** Description de la formation. -* **Exemple de résultat:** [formation.json](samples/sample_formation.json.md) - -#### **`module-edit`** - -* **Méthode:** POST -* **Permission: `EditFormation`** -* **Paramètres:** `module_id` -* **Data:** -```json -{ - "titre" : str, - "abbrev" : str, - "code" - "heures_cours" : float, - "heures_td" : float, - "heures_tp" : float, - "coefficient" : float, - "ects" : float, - "matiere_id" : int, // must be in same UE - "semestre_id" : int, // le rang du semestre (S1, ...) - "numero" : int, // ordre d'affichage - "code_apogee" : str, - "edt_id" : str, - "module_type" : int, // 0 std, 1 malus, 2 ressource, 3 SAÉ - "parcours" : [ id de parcours ], -} -``` -* **Routes:** `/formation/module//edit` -* **Résultat:** le module modifié. - -#### **`ue-edit`** - -* **Méthode:** POST -* **Permission: `EditFormation`** -* **Paramètres:** `ue_id` -* **Data:** -```json -{ - "acronyme" : str, - "numero" : int, // ordre d'affichage - "titre" : str, - "semestre_idx" : int, // le rang du semestre (S1, ...) - "type": int, // 0 std, 1 bonus sport, 2 projet&stage (old LP) - "ue_code" : str, - "ects" : float, - "is_external" : bool, // true pour externes - "code_apogee" : str, - "code_apogee_rcue" : str, - "coef_rcue" : float, - "coefficient" : float, // si option use_ue_coefs - "ects" : float, - "matiere_id" : int, // must be in same UE -} -``` -* **Routes:** `/formation/ue//edit` -* **Résultat:** l'UE modifiée. - - - -### **API Formsemestre** - -Les sessions de formation (qu'elles durent une année ou un mois) sont représentées par les `formsemestre`. - -#### Note sur les identifiants de formsemestre - -Le `session_id` peut être utilisé pour identifier de façon prévisible et -(presque) unique un formsemestre dans un établissement, ce qui est utile -notamment pour interfacer ScoDoc à d'autres logiciels (par exemple gestion -d'emplois du temps ou de services d'enseignement). Cet identifiant est constitué -des informations suivantes: - -* **Département** (RT, GEII, INFO...) (acronyme en majuscules) -* **Nom parcours:** BUT, LP, ... (défini au niveau du parcours dans ScoDoc = NAME) -* **Modalité:** FI, FC, FA -* **"Spécialité":** S1 (ou S1D pour les semestres décalés), ou le - `code_specialite` si pas de semestres. Le code spécialité est un champ - (libre) dans la "formation" (le programme pédagogique). -* **Année:** année de début de l'année scolaire correspondante (2014 pour - une session appartenant à l'année scolaire 2014-2015, même si elle - commence en mars 2015). - -**Exemple:** `INFO-DUT-FI-S1-2014` équivaut à un semestre S1 d'un DUT -informatique de 2014 en formation initiale (FI). - -#### Structure Formsemestre - -| attribut | type | commentaire | -|:------------------------------|:------------|:-----------------------------------------------| -| _**annee_scolaire**_ | int | | -| _**block_moyenne_generale**_ | bool | | -| _**block_moyennes**_ | bool | inhibe le calcul des moyennes | -| _**bul_bgcolor**_ | string | Couleur (CSS) de fond du bulletin | -| _**bul_hide_xml**_ | bool | | -| _**date_debut**_ | date | | -| _**date_debut_iso**_ | string | | -| _**date_fin**_ | date | | -| _**date_fin_iso**_ | string | | -| _**departement**_ | Département | | -| _**dept_id**_ | int | | -| _**elt_annee_apo**_ | ??? | | -| _**elt_sem_apo**_ | string | | -| _**ens_can_edit_eval**_ | bool | | -| _**etape_apo**_ | string | | -| _**etat**_ | bool | | -| _**formation**_ | Formation | | -| _**formation_id**_ | int | | -| _**formsemestre_id**_ | int | identification unique | -| _**gestion_compensation**_ | bool | | -| _**gestion_semestrielles**_ | bool | | -| _**id**_ | int | id unique | -| _**modalite**_ | string | "FI", "FA", ... | -| _**parcours**_ | ???? | | -| _**resp_can_change_ens**_ | bool | | -| _**resp_can_edit**_ | bool | | -| _**responsables**_ | int* | liste des ids des enseignants responsables | -| _**scodoc7_id**_ | int | | -| _**semestre_id**_ | int | rang du semestre 1, ... | -| _**session_id**_ | string | cf. Note sur les identifiants de formsemestre | -| _**titre**_ | string | | -| _**titre_court**_ | string | | -| _**titre_num**_ | string | | - - -#### **`formsemestre-create`** - -* **Méthode: POST** -* **Permission: `EditFormSemestre`** -* **Paramètres:** `formsemestre_id` -* **Data:** `{ ... }` -* **Routes:** `/formsemestre//edit` - ->`{ "titre" : "titre du semestre" }` - -* **Exemple d'utilisation:** `/ScoDoc/api/formsemestre/123/edit` -* **Résultat:** Modifie les paramètres d'un FormSemestre. -* **Exemple de résultat:** nd - -#### **departement-formsemestres_ids** - -* **Méthode:** GET -* **Permission: `ScoView`** -* **Paramètres:** `dept` -* **Routes:** - * `/departement/id//formsemestres_ids` - * `/departement//formsemestres_ids` -* **Exemple d'utilisation:** `/api/departement/MMI/formsemestres_ids` -* **Résultat:** Liste des id des formsemestres (passés ou présents) d'un - département donné. -* **Exemple de résultat:** [departement-formsemestres_ids.json](samples/sample_departement-formsemestres_ids.json.md) - -#### **departement-formsemestres_courants** - -* **Méthode:** GET -* **Permission: `ScoView`** -* **Paramètres:** `dept_id` -* **Routes:** - * `/departement/id//formsemestres_courants` - * `/departement//formsemestres_courants` -* **Exemple d'utilisation:** `/api/departement/MMI/formsemestres_courants` -* **Résultat:** Liste des formsemestres en cours d'un département donné. -* **Exemple de résultat:** [departement-formsemestres-courants.json](samples/sample_departement-formsemestres-courants.json.md) - -#### **formsemestres-query** - -* **Méthode:** GET -* **Permission: `ScoView`** -* **Paramètres:** aucun -* **Query string:** `annee_scolaire`, `dept_acronym`, `dept_id`, `etape_apo`, `ine`, `nip` -* **Route:** `/formsemestres/query` -* **Exemple d'utilisation:** `/api/formsemestres/query?etape_apo=V7HU1&annee_scolaire=2021` -* **Résultat:** Description de formsemestres. Si plusieurs - paramètres sont donnés, c'est la conjonction (ET) des critères qui est - recherchée. Si aucun formsemestre ne satisfait la requête, une liste vide est - retournée. Si `ine`ou `nip`sont spécifiés, cherche les formsemestres dans - lesquels un étudiant de ce code est inscrit. -* **Exemple de résultat:** [formsemestres-query.json](samples/sample_formsemestres-query.json.md) - -#### **etudiant-formsemestres** - -* **Méthode:** GET -* **Permission: `ScoView`** -* **Paramètres:** `etudid`, `nip`, `ine` -* **Routes:** - * `/etudiant/etudid//formsemestres` ou - * `/etudiant/nip//formsemestres` ou - * `/etudiant/ine//formsemestres` -* **Exemple d'utilisation:** `/etudiant/ine/1/formsemestres` -* **Résultat:** Liste des semestres qu'un étudiant a suivi, triés - par ordre chronologique. -* **Exemple de résultat:** [etudiant-formsemestres.json](samples/sample_etudiant-formsemestres.json.md) - -#### **formsemestre** - -* **Méthode:** GET -* **Permission: `ScoView`** -* **Paramètres:** `formsemestre_id` -* **Route:** `/formsemestre/` -* **Exemple d'utilisation:** `/api/formsemestre/1` -* **Résultat:** Description du formsemestre. -* **Exemple de résultat:** [formsemestre.json](samples/sample_formsemestre.json.md) - -### **API Groupe** - -#### **`partition-group-create`** - -* **Méthode: POST** -* **Permission: `EtudChangeGroups`** -* **Paramètres:** `partition_id` -* **Data:** `{ group_name : }` -* **Routes:** `/partition//group/create` -* **Exemple d'utilisation:** `/ScoDoc/api/partition/1962/group/create` - ->`{ "group_name" : "A" }` - -* **Résultat:** Crée un groupe dans une partition. -* **Exemple de résultat:** [group-create.json](samples/sample_partition-group-create.json.md) - -#### **`group-edit`** - -* **Méthode: POST** -* **Permission: `EtudChangeGroups`** -* **Paramètres:** `group_id` -* **Data:** `{ group_name : }` -* **Routes:** `/group//edit` -* **Exemple d'utilisation:** `/ScoDoc/api/group/4581/edit` - ->`{ "group_name" : "nouveau" }` - -* **Résultat:** Renomme un groupe. -* **Exemple de résultat:** [group-edit.json](samples/sample_group-edit.json.md) - -#### **`partition-groups-order`** - -* **Méthode: POST** -* **Permission: `EtudChangeGroups`** -* **Paramètres:** `partition_id` -* **Data:** `[ , , ... ]` -* **Routes:** `/partition//groups/order` -* **Exemple d'utilisation:** `/ScoDoc/api/partition/1962/groups/order` - ->`[ 4383, 4379, 4380, 4381, 4382, 4384 ]` - -* **Résultat:** Spécifie l'ordre des groupes d'une partition. -* **Exemple de résultat:** [partition-groups-order.json](samples/sample_partition-groups-order.json.md) - -#### **`group-delete`** - -* **Méthode: POST** -* **Permission: `EtudChangeGroups`** -* **Paramètres:** `group_id` -* **Routes:** `/group//delete` -* **Exemple d'utilisation:** `/ScoDoc/api/group/4581/delete` -* **Résultat:** Supprime un groupe. -* **Exemple de résultat:** [group-delete.json](samples/sample_group-delete.json.md) - -#### **etudiant-formsemestre-groups** - -* **Méthode:** GET -* **Permission: `ScoView`** -* **Paramètres:** `formsemestre_id`, `etudid`, `nip`, `ine` -* **Routes:** - `/etudiant/etudid//formsemestre//groups` ou - `/etudiant/nip//formsemestre//groups` ou - `/etudiant/ine//formsemestre//groups` -* **Exemple d'utilisation:** `/etudiant/nip/1/formsemestre/1/groups` -* **Résultat:** Retourne la liste des groupes auxquels appartient l'étudiant dans le semestre indiqué. (json) -* **Exemple de résultat:** [etudiant-formsemestres-groups.json](samples/sample_etudiant-formsemestre-groups.json.md) - -#### **`group-set_etudiant`** - -* **Méthode: POST** -* **Permission: `EtudChangeGroups`** -* **Paramètres:** `group_id`, `etudid` -* **Routes:** `/group//set_etudiant/` -* **Exemple d'utilisation:** `/ScoDoc/api/group/4085/set_etudiant/12108` -* **Résultat:** Affecte un étudiant dans un groupe. -* **Exemple de résultat:** [groupes-set_etudiant.json](samples/sample_group-set_etudiant.json.md) - -#### **`group-remove_etudiant`** - -* **Méthode: POST** -* **Permission: `EtudChangeGroups`** -* **Paramètres:** `group_id`, `etudid` -* **Routes:** `/group//remove_etudiant/` -* **Exemple d'utilisation:** `/ScoDoc/api/group/4085/remove_etudiant/12108` -* **Résultat:** Retire un étudiant d'un groupe. -* **Exemple de résultat:** [groupes-remove_etudiant.json](samples/sample_group-remove_etudiant.json.md) - -### **API Jury** - -#### **`formsemestre-decisions_jury`** - -* **Permission: `ScoView`** -* **Méthode:** GET -* **Paramètres:** `formsemestre_id` -* **Routes:** `/formsemestre//decisions_jury` -* **Exemple d'utilisation:** `/ScoDoc/api/formsemestre/1/jury` -* **Résultat:** Retourne le récapitulatif des décisions jury -* **Exemple de résultat:** [formsemestre-decisions_jury.json](samples/sample_formsemestre-decisions_jury.json.md) -` - -### **API Moduleimpl** - -#### Structure ModuleImpl - -Le moduleimpl est la mise en place d'un module dans un formsemestre (avec son -responsable et ses enseignants). La liste des moduleimpl d'un formsemestre peut être obtenu par l'entrée [formsemestre-programme](#formsemestre-programme) - -| attribut | type | commentaire | -|:-----------------------|:-------|:-------------------------------------------------| -| _**computation_expr**_ | string | unused | -| _**ens**_ | User# | liste des ids des enseignants du moduleimpl | -| _**formsemestre_id**_ | int | id du formsemestre | -| _**id**_ | int | identifiant unique | -| _**module**_ | Module | | -| _**module_id**_ | int | id du module | -| _**moduleimpl_id**_ | int | _**redondance id_? | -| _**responsable_id**_ | int | id du responsable de module | - -#### **`moduleimpl`** - -* **Méthode:** GET -* **Permission: `ScoView`** -* **Paramètres:** `moduleimpl_id` -* **Routes:** `/moduleimpl/` -* **Exemple d'utilisation:** `/ScoDoc/api/moduleimpl/1` -* **Résultat:** Description du moduleimpl. -* **Exemple de résultat:** [moduleimpl.json](samples/sample_moduleimpl.json.md) - -Note: la liste des `ModuleImpl` d'un `FormSemestre` peut être obtenue via -[formsemestre-programme](#formsemestre-programme). - -#### **`moduleimpl-inscriptions`** - -* **Méthode:** GET -* **Permission: `ScoView`** -* **Paramètres:** `moduleimpl_id` -* **Routes:** `/moduleimpl//inscriptions` -* **Exemple d'utilisation:** `/ScoDoc/api/moduleimpl/1/inscriptions` -* **Résultat:** Liste des inscriptions à ce moduleimpl. -* **Exemple de résultat:** [moduleimpl.json](samples/sample_moduleimpl_inscriptions.json.md) - -#### **`moduleimpl-evaluations`** - -* **Méthode:** GET -* **Permission: `ScoView`** -* **Paramètres:** `moduleimpl_id` -* **Routes:** `/moduleimpl//evaluations` -* **Exemple d'utilisation:** `/ScoDoc/api/moduleimpl/1/evaluations` -* **Résultat:** Liste ordonnée des évaluations dans ce moduleimpl. - -#### **`moduleimpl-notes`** - -* **Méthode:** GET -* **Permission: `ScoView`** -* **Paramètres:** `moduleimpl_id` -* **Routes:** `/moduleimpl//notes` -* **Exemple d'utilisation:** `/ScoDoc/api/moduleimpl/1/notes` -* **Résultat:** Liste des notes dans ce moduleimpl. - -Exemple en formation classique: - -```json - [ + ```json { - "etudid": 18270, - "nom": "Ball", - "prenom": "Jane", - "38083": 11.0, // Note evaluation d'id 38083 - "38084": 14.5, // Note evaluation 38084 - "moymod": 12.75 // Moyenne au module - }, - ... - ] -``` - -Exemple de résultat en BUT: - -```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 Partition** - -#### Structure Partition - -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. - -| attribut | type | commentaire | -|:----------------------|:-------|:-----------------------------------| -| _**bul_show_rank**_ | | affichage sur bulletin | -| _**formsemestre_id**_ | int | formsemestre hôte | -| _**groups**_ | Group* | liste des groupes de la partition | -| _**groups_editable**_ | bool | verrou (liste des groupes) | -| _**id**_ | int | identifiant unique | -| _**numero**_ | int | | -| _**partition_name**_ | string | nom de la partition | -| _**show_in_lists**_ | bool | | - -#### **`formsemestre-partitions`** - -* **Méthode: GET** -* **Permission: `ScoView`** -* **Paramètres:** `formsemestre_id` -* **Routes:** `/formsemestre//partitions` -* **Exemple d'utilisation:** `/ScoDoc/api/formsemestre/911/partitions` -* **Résultat:** Liste de toutes les partitions d'un formsemestre. -* **Exemple de résultat:** [formsemestre-partitions.json](samples/sample_formsemestre-partitions.json.md) - -#### **`partition`** - -* **Méthode: GET** -* **Permission: `ScoView`** -* **Paramètres:** `partition_id` -* **Routes:** `/partition/` -* **Exemple d'utilisation:** `/ScoDoc/api/partition/1963` -* **Résultat:** Description d'une partition (y compris la liste de ses groupes). -* **Exemple de résultat:** [partition.json](samples/sample_partition.json.md) - -#### **`formsemestre-partition-create`** - -* **Méthode: POST** -* **Permission: `EtudChangeGroups`** -* **Paramètres:** `formsemestre_id` -* **Data:** `{ "partition_name" : }` -* **Routes:** `/formsemestre//partition/create` - ->`{ "partition_name" : "PART" }` - -* **Exemple d'utilisation:** `/ScoDoc/api/formsemestre/944/partition/create` -* **Résultat:** Crée une nouvelle partition dans un formsemestre. -* **Exemple de résultat:** [formsemestre-partition-create.json](samples/sample_formsemestre-partition-create.json.md) - -#### **`partition-edit`** - -* **Méthode: POST** -* **Permission: `EtudChangeGroups`** -* **Paramètres:** `partition_id` -* **Data:** `{ partition_name : }` -* **Routes:** `/partition//edit` -* **Exemple d'utilisation:** `/ScoDoc/api/partition/2047/edit` - ->`{ "partition_name" : "PART4" }` - -* **Résultat:** Renomme une partition -* **Exemple de résultat:** [partition-edit.json](samples/sample_partition-edit.json.md) - -#### **`formsemestre-partitions-order`** - -* **Méthode: POST** -* **Permission: `EtudChangeGroups`** -* **Paramètres:** `formsemestre_id` -* **Data:** `[ , , ... ]` -* **Routes:** `/formsemestre//partitions/order` -* **Exemple d'utilisation:** `/ScoDoc/api/formsemestre/944/partitions/order` - ->`[ 2048, 2054 ]` - -* **Résultat:** Spécifie l'ordre des partitions d'un formsemestre. -* **Exemple de résultat:** [formsemestre-partitions-order.json](samples/sample_formsemestre-partitions-order.json.md) - -#### **`partition-delete`** - -* **Méthode: POST** -* **Permission: `EtudChangeGroups`** -* **Paramètres:** `partition_id` -* **Routes:** `/partition//delete` -* **Exemple d'utilisation:** `/ScoDoc/api/partition/2047/delete` -* **Résultat:** Supprime une partition. -* **Exemple de résultat:** [partition-delete.json](samples/sample_partition-delete.json.md) - -#### **`partition-remove_etudiant`** - -* **Méthode: POST** -* **Permission: `EtudChangeGroups`** -* **Paramètres:** `partition_id` -* **Routes:** `/partition//remove_etudiant/` -* **Exemple d'utilisation:** `/ScoDoc/api/partition/1962/remove_etudiant/12107` -* **Résultat:** Retire un étudiant des groupes de la partition. -* **Exemple de résultat:** [partition-remove_etudiant.json](samples/sample_partition-remove_etudiant.json.md) - -### **API Role** - -Les rôles ont un nom et sont associés à un ensemble de permissions. Un -utilisateur pourra être associé à un ou plusieurs rôles dans chaque département -(ainsi, il ou elle peut enseigner dans un département et être administrateur -d'un autre). - -#### **list-roles** - -* **Méthode:** GET -* **Permission: `UsersView`** -* **Routes:** `/roles` -* **Exemple d'utilisation:** `/roles` -* **Résultat:** Liste de tous les rôles. -* **Exemple de résultat:** [roles.json](samples/sample_roles.json.md) - -#### **list-role** - -* **Méthode:** GET -* **Permission: `UsersView`** -* **Routes:** `/role/` -* **Exemple d'utilisation:** `/role/Ens` -* **Résultat:** Liste le rôle indiqué. 404 si inexistant. -* **Exemple de résultat:** [role.json](samples/sample_role.json.md) - -#### **role-permission-add** - -* **Méthode: POST** -* **Permission: `ScoSuperAdmin`** -* **Routes:** `/role//add_permission/` -* **Exemple d'utilisation:** `/role/Ens/add_permission/ScoView` -* **Résultat:** Ajoute la permission au rôle. 404 si l'un des deux n'existe pas. - Note: la liste des permissions est donnée sur [ConfigPermissions](ConfigPermissions.md). -* **Exemple de résultat:** [role-add_permission.json](samples/sample_role-add_permission.json.md) - -#### **role-permission-remove** - -* **Méthode: POST** -* **Permission: `ScoSuperAdmin`** -* **Routes:** `/role//remove_permission/` -* **Exemple d'utilisation:** `/role/Ens/remove_permission/ScoView` -* **Résultat:** Retire la permission au rôle. 404 si l'un des deux n'existe pas. - Si le rôle n'a pas la permission, ne fait rien. -* **Exemple de résultat:** [role-remove_permission.json](samples/sample_role-remove_permission.json.md) - -#### **role-create** - -* **Méthode: POST** -* **Permission: `ScoSuperAdmin`** -* **Data:** `{ "permissions" : [ permission, ... ] }` -* **Routes:** `/role/create/` -* **Exemple d'utilisation:** `/role/create/LaveurDecarreaux` - -> `{ "permissions" : [ 'ScoView', 'UsersView' ] }` - -* **Résultat:** Crée un nouveau rôle, avec les permissions indiquées. -* **Exemple de résultat:** [role-create.json](samples/sample_role-create.json.md) - -#### **role-delete** - -* **Méthode: POST** -* **Permission: `ScoSuperAdmin`** -* **Routes:** `/role//delete` -* **Exemple d'utilisation:** `/role/LaveurDeCarreaux/delete` -* **Résultat:** Supprime ce rôle. -* **Exemple de résultat:** [role-delete.json](samples/sample_role-delete.json.md) - -#### **role-edit** - -* **Méthode: POST** -* **Permission: `ScoSuperAdmin`** -* **Data:** `{ "permissions" : [ permission, ... ] }` -* **Routes:** `/role/edit/` -* **Exemple d'utilisation:** `/role/create/LaveurDecarreaux` - -> `{ "name" : "LaveurDeVitres", "permissions" : [ 'ScoView' ] }` - -* **Résultat:** Modifie le rôle: son nom et/ou ses permissions. -* **Exemple de résultat:** [role-edit.json](samples/sample_role-edit.json.md) - -### **API User, Permissions** - -#### **user-info** - -* **Méthode:** GET -* **Permission: `UsersView`** -* **Paramètres:** `user_id` -* **Route:** `/user/` -* **Exemple d'utilisation:** `/api/user/1` -* **Résultat:** Retourne la description d'un utilisateur. -* **Exemple de résultat:** [user.json](samples/sample_user.json.md) - -#### **`user-create`** - -* **Méthode: POST** -* **Permission: `UsersAdmin`** -* **Data:** - -```json -{ - "user_name": str, - "dept": str or null, - "nom": str, - "prenom": str, - "active":bool (default True) -} -``` - -* **Routes:** `/user/create` -* **Résultat:** Crée un nouvel utilisateur. `user_name`est le login, unique et - non modifiable. L'utilisateur est normalement rattaché à un département, sauf - si est "super-administrateur". -* **Exemple de résultat:** [user-create.json](samples/sample_user-create.json.md) - -#### **`users-info-query`** - -* **Méthode:** GET -* **Permission: `UsersView`** -* **Routes:** - - * `/users/query?departement=dept_acronym&active=1&starts_with=` - -* **Résultat:** Liste d'utilisateurs, filtrés par département, statut, début de - nom (paramètres tous optionnels). Seuls les utilisateurs que l'on a la - permission de voir sont listés. -* **Exemple de résultat:** [users-query.json](samples/sample_users-query.json.md) - -#### **`user-edit`** - -* **Méthode: POST** -* **Permission: `UsersAdmin`** -* **Data:** - -```json -{ - "dept": str or null, - "nom": str, - "prenom": str, - "active":bool (default True) -} -``` - -* **Routes:** `/user//edit` -* **Résultat:** Modifie l'utilisateur d'UID indiqué. -* **Exemple de résultat:** [user-edit.json](samples/sample_user-edit.json.md) - -#### **`user-password`** - -* **Méthode: POST** -* **Permission: `UsersAdmin`** -* **Data:** `{ "password": str }` -* **Routes:** `/user//password` -* **Exemple d'utilisation:** `/user/3/password` - ->`{ "password": "averycomplicatedpassaword" } - -* **Résultat:** Modifie le mot de passe de l'utilisateur désigné par son UID. - L'opération peut être rejetée si le mot de passe ne satisfait pas les conditions requises (trop simple par exemple), avec le retour suivant: - -> ```json -> - { - "error": "Bad Request", - "status": 400, - "message": "user_password: invalid password" + "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:** [user-password.json](samples/sample_user-password.json.md) +* **Exemple de résultat:** [assiduite.json](./samples/sample_assiduite.json.md) -#### **`user-role-add`** -* **Méthode: POST** -* **Permission: `ScoSuperAdmin`** -* **Routes:** `/user//role//add[/departement/]` -* **Résultat:** Attribue le rôle à l'utilisateur, dans le département indiqué - (ou tous si le département n'est pas spécifié).) -* **Exemple de résultat:** [user-role-add.json](samples/sample_user-role-add.json.md) - -#### **`user-role-remove`** - -* **Méthode: POST** -* **Permission: `UsersAdmin`** -* **Routes:** `/user//role//remove[/departement/]` -* **Résultat:** Retire le rôle à l'utilisateur. -* **Exemple de résultat:** [user-role-remove.json](samples/sample_user-role-remove.json.md) - -#### **`list-permissions`** - -* **Méthode:** GET -* **Permission: `UsersView`** -* **Routes:** `/permissions` -* **Résultat:** Liste des noms des permissions. Ces permissions ne sont pas - modifiables, mais de nouvelles peuvent apparaitre lors des mises à jour du - logiciel. Voir [ConfigPermissions](ConfigPermissions.md). -* **Exemple de résultat:** [permissions.json](samples/sample_permissions.json.md) - -### **API Bulletin, Évaluations, Notes** - -Attention, les bulletins ne sont publiés sur l'API que si l'option "*publier le -bulletin sur le portail étudiant*" est cochée dans le semestre concerné. - -#### **formsemestre-bulletins** - -* **Méthode:** GET -* **Permission: `ScoView`** -* **Paramètres:** `formsemestre_id` -* **Route:** `/formsemestre//bulletins[/]` -* **Exemple d'utilisation:** `/api/formsemestre/1/bulletins` -* **Résultat:** Bulletins d'un formsemestre spécifié par son id. -* **Exemple de résultat:** [formsemestre-bulletins.json](samples/sample_formsemestre-bulletins.json.md) - -Pour les formations classiques (toutes sauf BUT), les bulletins JSON peut ou non -indiquer les matières. Par défaut (version `long`), il est structuré en `UEs / modules`. Si la -version est `short_mat`ou `long_mat`, il sera structuré en -`UEs / matieres / modules`. - -#### **etudiant-formsemestre-bulletin** - -Récapitulatif par étudiant (état, groupe(s), moyennes d'UEs et de modules) -pour un formsemestre spécifié par son id. -Par défaut les valeurs numériques sont formatées en chaînes. Si format=raw, valeurs numériques -mais pas JSON compliant à cause des `NaN`. - -* **Méthode:** GET -* **Permission: `ScoView`** -* **Paramètres:** `formsemestre_id`, `etudid`, `nip`, `ine` -* **Query string:** `format` -* **Routes:** - `/etudiant/etudid//formsemestre//bulletin[/][/pdf][/pdf/nosig]` - ou `/etudiant/nip//formsemestre//bulletin[/][/pdf][/pdf/nosig]` - ou - `/etudiant/ine//formsemestre//bulletin[/][/pdf][/pdf/nosig]` - -* **Exemple d'utilisation:** `/etudiant/nip/1/formsemestre/1/bulletin` -* **Résultat:** Bulletin de l'étudiant dans le formsemestre. - Plusieurs variantes possibles: - - * version `long`, `short` (sans évaluations), `selectedevals` (défaut, avec - seulement les évaluations "visibles en format intermédiaire"), `butcourt` - (format court spécial BUT, disponible en format PDF seulement). - * format `json` ou `pdf` (`json` par défaut, ajoutez `/pdf` pour la version - pdf) - - (*à vérifier*) Pour les formations classiques (toutes sauf BUT), les bulletins - JSON peuvent ou non indiquer les matières. Par défaut (version `long`), il est - structuré en `UEs / modules`. - - Les notes moyennes de matières ne sont calculées que si l'option - "*Afficher les matières sur les bulletins*" est activée pour le formsemestre - considéré (sinon, la note vaut toujours "*nd*"). ` - - Les versions PDF sont par défaut identiques à celles servies dans ScoDoc. Avec - l'option `/pdf/nosig`, les signatures en fin de bulletin sont omises. - - Attention, les bulletins ne sont publiés sur l'API que si l'option "*publier le - bulletin sur le portail étudiant*" est cochée dans le semestre concerné. - - -* **Exemple de résultat:** [etudiant-formsemestre-bulletin.json](samples/sample_etudiant-formsemestre-bulletin.json.md) - -#### **formsemestre-programme** - -* **Méthode:** GET -* **Permission: `ScoView`** -* **Paramètres:** `dept`, `formsemestre_id` -* **Routes:** `/formsemestre//programme` -* **Exemple d'utilisation:** `/ScoDoc/api/formsemestre/1/programme` -* **Résultat:** Retourne la structure d'un formsemestre sous 5 entrées d'un dictionnaire: - - * **`ues`**: liste des UEs - * **`ressources`**: liste des ressources (BUT) - * **`saes`**: liste des SAÉs (BUT) - * **`modules`**: liste des modules classiques (DUT ou sport/culture) - * **`malus`**: listes des modules de type bonus/malus. - -* **Exemple de résultat:** [formsemestre-programme.json](samples/sample_formsemestre-programme.json.md) - -#### **formsemestre-resultats** - -* **Méthode:** GET -* **Permission: `ScoView`** -* **Paramètres:** `formsemestre_id` -* **Query string**: `format` -* **Route:** `/formsemestre//resultats` -* **Exemple d'utilisation:** `/api/formsemestre/1/resultats` -* **Résultat:** Récapitulatif par étudiant (état, groupe(s), moyennes d'UEs et de modules) -pour un formsemestre spécifié par son id. -Par défaut les valeurs numériques sont formatées en chaînes. Si format=raw, -valeurs numériques mais pas JSON compliant à cause des `NaN`. - -* **Exemple de résultat:** [formsemestre-resultats.json](samples/sample_formsemestre-resultats.json.md) - -#### **`moduleimpl-evaluations`** - -* **Méthode:** GET -* **Permission: `ScoView`** -* **Paramètres:** `moduleimpl_id` -* **Routes:** `/moduleimpl//evaluations` -* **Exemple d'utilisation:** `/ScoDoc/api/moduleimpl/1/evaluations` -* **Résultat:** Retourne la liste des évaluations à partir de l'id d'un - moduleimpl (quel que soit leur statut). -* **Exemple de résultat:** [moduleimpl-evaluations.json](samples/sample_moduleimpl-evaluations.json.md) - -#### **`evaluation-notes`** - -* **Méthode**: GET -* **Permission: `ScoView`** -* **Paramètres**: `evaluation_id` -* **Routes:** `/evaluation//notes` -* **Exemple d'utilisation:** `/evaluation/1491/notes` -* **Résultat:** Retourne la liste des notes d'une évaluation. Les valeurs sont - non normalisées (le champ `note_max` indique le barème), et peuvent contenir - des chaînes de caractères: ABS, EXC, DEM, ... -* **Exemple de résultat:** [evaluation-notes.json](samples/sample_evaluation-notes.json.md) - -#### **`evaluation-notes-set`** - -* **Méthode**: POST -* **Permission**: droit de saisir des notes dans cette évaluation -* **Paramètres**: `evaluation_id` -* **Routes:** `/evaluation//notes/set` -* **Contenu:** les notes à enregistrer dans l'évaluation. Les valeurs sont - "brutes", entre 0 et `note_max`(barème de l'évaluation), EXC, ABS, SUPR... - - ```json - { - 'notes' : [ [etudid, value], ... ], - 'comment' : optional string - } - ``` - -* **Résultat:** json avec - - ```json - { - "etudids_changed": [ etudids dont la note a été modifiée ], - "etudids_with_decision": [ etudids ayant une décision de jury à vérifier ], - "history_menu": [ html utilisé par la page de saisie ], - } - ``` - -#### **formsemestre-etat_evals** - -* **Méthode:** GET -* **Permission: `ScoView`** -* **Paramètres:** `formsemestre_id` -* **Routes:** `/formsemestre//etat_evals` -* **Exemple d'utilisation:** `/ScoDoc/api/formsemestre/1/etat_evals` -* **Résultat:** Retourne les informations sur l'état des évaluations d'un semestre donné -* **Exemple de résultat:** [formsemestre-etat_evals.json](samples/sample_formsemestre-etat_evals.json.md) - -### **API Export, Référentiel** - -#### **`formation-export`** - -* **Méthode:** GET -* **Permission: `ScoView`** -* **Paramètres:** `formation_id`, `export_ids` (False par défaut. Ajouter `/with_ids` pour le passer à True) -* **Routes:** - * `/formation//export` - * `/formation//export_with_ids` -* **Exemple d'utilisation:** `/ScoDoc/api/formation/formation_export/1` -* **Résultat:** Retourne la formation, avec UE, matières, modules -* **Exemple de résultat:** [formation-export.json](samples/sample_formation-export.json.md) - -#### **`formation-referentiel_competences`** - -* **Méthode:** GET -* **Permission: `ScoView`** -* **Paramètres:** `formation_id` -* **Routes:** `/formation//referentiel_competences` -* **Exemple d'utilisation:** `api/formation/1/referentiel_competences` -* **Résultat:** Le référentiel de compétences d'une formation donnée (json). (*pas toujours présent*) -* **Exemple de résultat:** [formation-referentiel_competences.json](samples/sample_formation-referentiel_competences.json.md) - -### **API Logos** - -#### **`logos`** - -* **Méthode:** GET -* **Permission: `ScoSuperAdmin`** -* **Paramètres :** Aucun -* **Route :** `/logos` -* **Exemple d'utilisation :** `/ScoDoc/api/logos` -* **Résultat :** Liste des noms des logos définis pour le site scodoc. -* **Exemple de résultat:** [logos.json](samples/sample_logos.json.md) - -#### **`logo`** - -* **Méthode:** GET -* **Permission: `ScoSuperAdmin`** -* **Paramètres :** Aucun -* **Route:** `/logo/` -* **Exemple d'utilisation :** `/ScoDoc/api/logo/header` -* **Résultat :** l'image (format png ou jpg; le format retourné dépend du format sous lequel l'image a été initialement enregistrée) -* **Exemple de résultat:** [logo.json](samples/sample_logo.json.md) - -#### **`departement-logos`** - -* **Méthode:** GET -* **Permission: `ScoSuperAdmin`** -* **Paramètres:** Aucun -* **Route :** - - * `/departement//logos` - * `/departement/id//logos` - -* **Exemple d'utilisation :** - - * `/departement//logos` - * `/departement/id//logos` - -* **Résultat :** Liste des noms des logos définis pour le département visé qui peut être désigné par son id ou par son acronyme (selon la forme de la route). -* **Exemple de résultat:** [departement-logos.json](samples/sample_departement-logos.json.md) - -#### **`departement-logo`** - -* **Méthode:** GET -* **Permission: `ScoSuperAdmin`** -* **Paramètres :** Aucun -* **Route :** - * `/departement//logo/` - * `/departement/id//logo/` -* **Exemple d'utilisation:** - - * `/ScoDoc/api/departement/MMI/logo/header` - * `/ScoDoc/api/departement/id/3/logo/header` - -* **Résultat :** l'image (format png ou jpg) -* **Exemple de résultat:** [departement-logo.json](samples/sample_departement-logo.json.md) - -### **API Assiduités** - -Cette API est disponible à partir de ScoDoc 9.6 et remplace les absences. - -#### Structure Assiduité - -| attribut | type | commentaire | -| :-------------- | :------------- | :--------------------------------------------------------------- | -| *assiduite_id* | int | identifiant unique | -| *etudid* | int | identifiant unique de l'étudiant concerné par l'assiduité | -| *moduleimpl_id* | int ou null | identifiant unique du module concerné par l'assiduité si indiqué | -| *date_debut* | string | date ISO du début de la période d'assiduité | -| *date_fin* | string | date ISO de la fin de la période d'assiduité | -| *etat* | string | état de l'assiduité (présent, absent, retard) | -| *desc* | string ou null | description de l'assiduité | -| *user_id* | int ou null | id de l'utilisateur ayant créé l'assiduité | -| *user_name* | str ou null | login de l'utilisateur ayant créé l'assiduité | -| *est_just* | boolean | l'assiduité est-elle justifiée | -| *entry_date* | string | la date d'entrée de l'assiduité | -| *external_data* | objet ou null | un objet décrivant des actions non utilisée par ScoDoc | - -> Rappel du format de date ISO : yyyy-mm-ddTHH:MM:SS -> Vous pouvez aussi spécifier le temps UTC en ajoutant '+HH:MM' à la fin - -!!! warning - Le champs `external_data` est utilisé par ScoDoc pour déterminer les assiduités utilisant n'utilisant pas de module particulier (Tout module / Autre module dans ScoDoc). Il aura alors la forme suivante : `{"module": "Autre"}` - - -#### **assiduite** - -* **Méthode:** GET -* **Permission: `ScoView`** -* **Paramètres:** `assiduite_id` -* **Routes:** `/assiduite/` -* **Exemple d'utilisation:** `/api/assiduite/1` -* **Résultat:** Retourne un objet assiduité ou une erreur si l'id n'est pas connu -* **Exemple de résultat:** [assiduite.json](samples/sample_assiduite.json.md) - -#### **assiduite-justificatifs[-long]** - -* **Méthode:** GET -* **Permission: `ScoView`** -* **Paramètres:** `assiduite_id` -* **Routes:** - * `/assiduite//justificatifs` - * `/assiduite//justificatifs/long` -* **Exemple d'utilisation:** - * `/api/assiduite/123/justificatifs` - * `/api/assiduite/123/justificatifs/long` -* **Résultat:** Retourne une liste de justificatifs. des objets en utilisant la route `long` sinon les justif_id -* **Exemple de résultat:** [assiduite-justificatifs.json](samples/sample_assiduite_justificatifs.json.md) - -#### **assiduites[-query]** - -* **Méthode:** GET -* **Permission: `ScoView`** -* **Paramètres:** - * `etudid` - * `nip` - * `ine` -* **Query string:** - * `etat` ('present','retard','absent) - * `moduleimpl_id` (X : id du moduleimpl concerné) - * `date_debut` (X : date format iso) - * `date_fin` (X : date format iso) - * `formsemestre_id` (X : id du formsemestre) - * `est_just` (v,t,f,vrai,faux,true,false) - * `user_id` (X : id de l'utilisateur) - * `order` (retour ordoné par date de début décroisante) - * `courant` (retour restreint à l'année courante) - * `with_justifs` (ajoute un champs "justificatifs" aux assiduités) -* **Routes:** - * `/assiduites/` - * `/assiduites//query?` - * `/assiduites/etudid/` - * `/assiduites/etudid//query?` - * `/assiduites/nip/` - * `/assiduites/nip//query?` - * `/assiduites/ine/` - * `/assiduites/ine//query?` -* **Exemple d'utilisation:** - * `/api/assiduites/1` - * `/api/assiduites/1/query?etat=retard` - * `/api/assiduites/1/query?moduleimpl_id=1` -* **Résultat:** Liste de toutes les objets assiduité qui correspondent aux critères sélectionnés -* **Exemple de résultat:** [assiduites.json](samples/sample_assiduites.json.md) - -#### **assiduites-evaluations** - -* **Méthode:** GET -* **Permission: `ScoView`** -* **Paramètres:** - * `etudid` - * `nip` - * `ine` -* **Routes:** - * `/assiduites//evaluations` - * `/assiduites/etudid//evaluations` - * `/assiduites/nip//evaluations` - * `/assiduites/ine//evaluations` -* **Exemple d'utilisation:** - * `/api/assiduites/1/evaluations` -* **Résultat:** Retourne toutes les assiduités liés à des évaluations. (organisé par évaluations) -* **Exemple de résultat:** [assiduites-evaluations.json](samples/sample_assiduites_evaluations.json.md) - - -#### **assiduites-count[-query]** - -* **Méthode:** GET -* **Permission: `ScoView`** -* **Paramètres:** - * `etudid` - * `nip` - * `ine` -* **Query string:** - * `etat` ('present','retard','absent') - * `moduleimpl_id` (X : id du moduleimpl concerné) - * `date_debut` (X : date format ISO) - * `date_fin` (X : date format ISO) - * `formsemestre_id` (X : id du formsemestre) - * `est_just` (v,t,f,vrai,faux,true,false) - * `user_id` (X : id de l'utilisateur) - * `metric` ('compte', 'demi', 'journee', 'heure') - * `courant` (retour restreint à l'année courante) - * `split` (compte pour chaque état séparément) -* **Routes:** - * `/assiduites//count` - * `/assiduites//count/query?` - * `/assiduites/etudid//count` - * `/assiduites/etudid//count/query?` - * `/assiduites/nip//count` - * `/assiduites/nip//count/query?` - * `/assiduites/ine//count` - * `/assiduites/ine//count/query?` -* **Exemple d'utilisation:** - * `/api/assiduites/1` - * `/api/assiduites/1/count/query?etat=retard` - * `/api/assiduites/1/count/query?moduleimpl_id=1` - * `/api/assiduites/1/count/query?etat=present,retard&metric=compte,heure` -* **Résultat:** les métriques obtenu à partir des assiduitées correspondant aux critères sélectionnés -* **Exemple de résultat:** [assiduites-count.json](samples/sample_assiduites_count.json.md) - -#### **assiduites-formsemestre[-query]** - -* **Méthode:** GET -* **Permission: `ScoView`** -* **Paramètres:** `formsemestre_id` -* **Query string:** - * `etat` ('present','retard','absent') - * `moduleimpl_id` (X : id du moduleimpl concerné) - * `date_debut` (X : date format ISO) - * `date_fin` (X : date format ISO) - * `est_just` (v,t,f,vrai,faux,true,false) - * `user_id` (X : id de l'utilisateur) - * `order` (retour ordoné par date de début décroisante) - * `courant` (retour restreint à l'année courante) - * `with_justifs` (ajoute un champs "justificatifs" aux assiduités) -* **Routes:** - * `/assiduites/formsemestre/` - * `/assiduites/formsemestre//query?` -* **Exemple d'utilisation:** - * `/api/assiduites/formsemestre/1` - * `/api/assiduites/formsemestre/1/query?etat=retard` - * `/api/assiduites/formsemestre/1/query?moduleimpl=1` -* **Résultat:** Liste de toutes les objets assiduité des étudiants du formsemestre qui correspondent aux critères sélectionnés -* **Exemple de résultat:** [assiduites_formsemestre.json](samples/sample_assiduites_formsemestre.json.md) - -#### **assiduites-formsemestre-count[-query]** - -* **Méthode:** GET -* **Permission: `ScoView`** -* **Paramètres:** `formsemestre_id` -* **Query string:** - * `etat` ('present','retard','absent') - * `moduleimpl_id` (X : id du moduleimpl concerné) - * `date_debut` (X : date format ISO) - * `date_fin` (X : date format ISO) - * `est_just` (v,t,f,vrai,faux,true,false) - * `user_id` (X : id de l'utilisateur) - * `metric` ('all', 'compte', 'heure', 'journee', 'demi') - * `courant` (retour restreint à l'année courante) - * `split` (compte pour chaque état séparément) -* **Routes:** - * `/assiduites/formsemestre//count` - * `/assiduites/formsemestre//count/query?` -* **Exemple d'utilisation:** - * `/api/assiduites/formsemestre/1/count` - * `/api/assiduites/formsemestre/1/count/query?etat=retard` - * `/api/assiduites/formsemestre/1/count/query?moduleimpl=1&metric=demi,journee` -* **Résultat:** les métriques obtenu à partir des assiduités de tous les étudiants du formsemestre correspondant aux critères sélectionnés -* **Exemple de résultat:** [assiduites_formsemestre-count.json](samples/sample_assiduites_formsemestre_count.json.md) - -#### **assiduites-group[-query]** - -* **Méthode:** GET -* **Permission: `ScoView`** -* **Query string:** - * `etudids` **Obligatoire** (liste des etudids sous la forme `x,y,z,...`) - * `etat` ('present','retard','absent') - * `moduleimpl_id` (X : id du moduleimpl concerné) - * `date_debut` (X : date format ISO) - * `date_fin` (X : date format ISO) - * `est_just` (v,t,f,vrai,faux,true,false) - * `user_id` (X : id de l'utilisateur) - * `order` (retour ordoné par date de début décroisante) - * `courant` (retour restreint à l'année courante) - * `with_justifs` (ajoute un champs "justificatifs" aux assiduités) -* **Routes:** - * `/assiduites/group/query?etudids=` -* **Exemple d'utilisation:** - * `/assiduites/group/query?etudids=1,2,3` - * `/assiduites/group/query?etudids=1,2,3&etat=retard` - * `/assiduites/group/query?etudids=1,2,3&moduleimpl=1` -* **Résultat:** - ```json - { - etudid1 : [{assiduité...}], - etudid2 : [{assiduité...}], - etudid3 : [{assiduité...}], - } - ``` -* **Exemple de résultat:** [assiduites-group.json](samples/sample_assiduites_group.json.md) - -#### **assiduites-create** - -* **Méthode:** POST -* **Permission: `AbsChange`** -* **Data:** - -```json -[ - { - "etudid":, - "etat": , - "moduleimpl_id"?: , - "desc"?:, - }, - ... -] -``` +#### **`assiduite_create`** * **Routes:** - * `/assiduites/create` -* **Exemple d'utilisation:** `/api/assiduites/create` + * `/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) -> `[{"date_debut": "2022-10-27T08:00","date_fin": "2022-10-27T10:00","etat": "absent","etudid":1}]` - -* **Résultat:** Retourne un objet en deux parties (errors et success) contenant le retour de chaque objet donné dans la requête POST. -* **Exemple de résultat:** [assiduites-create.json](samples/sample_assiduites_create.json.md) +* **Exemple de résultat:** [assiduite_create.json](./samples/sample_assiduite_create.json.md) -#### **assiduite-create** +#### **`assiduite_delete`** -* **Méthode:** POST -* **Permission: `AbsChange`** -* **Paramètres:** - * `etudid` - * `nip` - * `ine` -* **Data:** +* **Route:** `/ScoDoc/api/assiduite/delete` +* **Méthode:** `POST` +* **Permission:** `AbsChange` +* **Description:** Suppression d'une assiduité à partir de son id -```json -[ - { - "etat": , - "moduleimpl_id"?: , - "desc"?: - }, - ... -] -``` +* **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:** - * `/assiduite//create` - * `/assiduites/etudid//create` - * `/assiduites/nip//create` - * `/assiduites/ine//create` -* **Exemple d'utilisation:** `/api/assiduite/1/create` - -> `[{"date_debut": "2022-10-27T08:00","date_fin": "2022-10-27T10:00","etat": "absent"}]` - -* **Résultat:** Retourne un objet en deux parties (errors et success) contenant le retour de chaque objet donné dans la requête POST. -* **Exemple de résultat:** [assiduite_create.json](samples/sample_assiduite_create.json.md) - -#### **assiduite-edit** - -* **Méthode:** POST -* **Permission: `AbsChange`** -* **Paramètres:** `assiduite_id` -* **Data:** - -```json -{ - "etat": , - "moduleimpl_id": , - "desc" : , -} -``` - -* **Routes:** `/assiduite//edit` -* **Exemple d'utilisation:** `/api/assiduite/1/edit` - -> `{"etat": "absent"}` - -* **Résultat:** Modifie l'assiduité désignée. -* **Exemple de résultat:** [assiduite_edit.json](samples/sample_assiduite_edit.json.md) - -#### **assiduites-edit** - -* **Méthode:** POST -* **Permission: `AbsChange`** -* **Data:** - -```json -[ - { - "etudid":, - "etat"?: , - "moduleimpl_id"?: , - "desc"?:, - }, - ... -] -``` - -* **Routes:** - * `/assiduites/edit` -* **Exemple d'utilisation:** `/api/assiduites/edit` - -> `[{"etat": "absent","assiduite_id":1},{"etat": "retard","moduleimpl_id":12,"assiduite_id":2}]` - -* **Résultat:** Retourne un objet en deux parties (errors et success) contenant le retour de chaque objet donné dans la requête POST. - -#### **assiduite-delete** - -* **Méthode:** POST -* **Permission: `AbsChange`** -* **Data:** - -```json -[ - , - ... -] -``` - -* **Routes:** - * `/assiduite/delete` -* **Exemple d'utilisation:** `/api/assiduite/delete` - -> `[2,3,5,7]` - -* **Résultat:** Retourne un objet en deux parties (errors et success) contenant le retour de chaque objet donné dans la requête POST. -* **Exemple de résultat:** [assiduite_delete.json](samples/sample_assiduite_delete.json.md) - -#### Structure Justificatif - -| attribut | type | commentaire | -| :-------------- | :------------- | :------------------------------------------------------------ | -| *justif_id* | int | identifiant unique | -| *etudid* | int | identifiant unique de l'étudiant concerné par le justificatif | -| *date_debut* | string | date ISO du début de la période du justificatif | -| *date_fin* | string | date ISO de la fin de la période du justificatif | -| *etat* | string | état du justificatif ( attente, valide, non_valide, modifie) | -| *raison* | string ou null | explication du justificatif si présente | -| *fichier* | string | identifiant de l'archivage des fichiers | -| *user_id* | int or null | id de l'utilisateur ayant créé le justificatif | -| *user_name* | str ou null | login de l'utilisateur ayant créé le justificatif | -| *entry_date* | string | date ISO de l'entrée du justificatif | -| *external_data* | objet ou null | un objet décrivant des actions non utilisée par ScoDoc | - -#### **justificatif** - -* **Méthode:** GET -* **Permission: `ScoView`** -* **Paramètres:** `justif_id` -* **Routes:** `/justificatif/` -* **Exemple d'utilisation:** `/api/justificatif/1` -* **Résultat:** Retourne un objet justificatif ou une erreur si l'id n'est pas connu -* **Exemple de résultat:** [justificatif.json](samples/sample_justificatif.json.md) - -#### **justificatifs[-query]** - -* **Méthode:** GET -* **Permission: `ScoView`** -* **Paramètres:** - * `etudid` - * `nip` - * `ine` -* **Query string:** - * `etat` ( attente, valide, non_valide, modifie) - * `date_debut` (X : date format ISO) - * `date_fin` (X : date format ISO) - * `user_id` (X : l'id de l'utilisateur ayant créé l'objet) - * `formsemestre_id` (X: l'id d'un formsemestre. restreint aux date du semestre) - * `order` (retoure les justificatifs par ordre décroissant de date_debut) - * `courant` (restreint aux justificatifs de l'année courante) - * `group_id` (X : id du groupe, restreint aux justificatifs d'un group d'étudiant) -* **Routes:** - * `/justificatifs/` - * `/justificatifs//query` - * `/justificatifs/etudid/` - * `/justificatifs/etudid/etudid>/query` - * `/justificatifs/nip/` - * `/justificatifs/nip//query` - * `/justificatifs/ine/` - * `/justificatifs/ine//query` -* **Exemple d'utilisation:** - * `/api/justificatifs/1` - * `/api/justificatifs/1/query?etat=modifie` - * `/api/justificatifs/1/query?date_debut=2022-10-27T08:00` -* **Résultat:** Liste de toutes les objets justificatifs qui correspondent aux critères sélectionnés -* **Exemple de résultat:** [justificatifs.json](samples/sample_justificatifs.json.md) - - -#### **justificatifs-dept[-query]** - -* **Méthode:** GET -* **Permission: `ScoView`** -* **Paramètres:** - * `dept_id` -* **Query string:** - * `etat` ( attente, valide, non_valide, modifie) - * `date_debut` (X : date format ISO) - * `date_fin` (X : date format ISO) - * `user_id` (X : l'id de l'utilisateur ayant créé l'objet) - * `formsemestre_id` (X: l'id d'un formsemestre. restreint aux date du semestre) - * `order` (retoure les justificatifs par ordre décroissant de date_debut) - * `courant` (restreint aux justificatifs de l'année courante) - * `group_id` (X : id du groupe, restreint aux justificatifs d'un group d'étudiant) -* **Routes:** - * `/justificatifs/dept/` - * `/justificatifs/dept//query` -* **Exemple d'utilisation:** - * `/api/justificatifs/dept/3` - * `/api/justificatifs/dept/3/query?etat=valide&courant` -* **Résultat:** Liste de toutes les objets justificatifs du département donné qui correspondent aux critères sélectionnés -* **Exemple de résultat:** [justificatifs-dept.json](samples/sample_justificatifs_dept.json.md) - - -#### **justificatifs-formsemestre[-query]** - -* **Méthode:** GET -* **Permission: `ScoView`** -* **Paramètres:** - * `formsemestre_id` -* **Query string:** - * `etat` ( attente, valide, non_valide, modifie) - * `date_debut` (X : date format ISO) - * `date_fin` (X : date format ISO) - * `user_id` (X : l'id de l'utilisateur ayant créé l'objet) - * `formsemestre_id` (X: l'id d'un formsemestre. restreint aux date du semestre) - * `order` (retoure les justificatifs par ordre décroissant de date_debut) - * `courant` (restreint aux justificatifs de l'année courante) - * `group_id` (X : id du groupe, restreint aux justificatifs d'un group d'étudiant) -* **Routes:** - * `/justificatifs/formsemestre/` - * `/justificatifs/formsemestre//query` -* **Exemple d'utilisation:** - * `/api/justificatifs/formsemestre/3` - * `/api/justificatifs/formsemestre/3/query?etat=valide&courant` -* **Résultat:** Liste de toutes les objets justificatifs du formsemestre donné qui correspondent aux critères sélectionnés -* **Exemple de résultat:** [justificatifs-formsemestre.json](samples/sample_justificatifs_formsemestre.json.md) - - - -#### **justificatif-create** - -* **Méthode:** POST -* **Permission: `AbsChange`** -* **Paramètres:** - * `etudid` - * `nip` - * `ine` -* **Data:** - -```json -[ - { - "etat": , - "date_debut": , - "date_fin": , - "raison"?: , - }, - ... -] -``` - -> Un fichier justificatif peut être importé dans scodoc après avoir créer l'objet justificatif voir [importer un justificatif](FichiersJustificatifs.md#importer-un-fichier) - -* **Routes:** - * `/justificatif//create` - * `/justificatif/etudid//create` - * `/justificatif/nip//create` - * `/justificatif/ine//create` -* **Exemple d'utilisation:** `/api/justificatif/1/create` - -```json -[ - { - "etat": "attente", - "date_debut": "2022-10-27T08:00", - "date_fin": "2022-10-27T12:00", - "raison": "Opération médicale", - } -] -``` - -* **Résultat:** Retourne un objet en deux parties (errors et success) contenant - le retour de chaque objet donné dans la requête POST. -* **Exemple de résultat:** [justificatif-create.json](samples/sample_justificatif_create.json.md) - -#### **justificatif-edit** - -* **Méthode:** POST -* **Permission: `AbsChange`** -* **Paramètres:** `justif_id` -* **Data:** - -```json -{ - "etat": , - "raison": , - "date_debut": , - "date_fin": , -} -``` - -* **Routes:** `/justificatif//edit` -* **Exemple d'utilisation:** `/api/justificatif/1/edit` - -> `{"etat": "valide"}` - -* **Résultat:** Modifie le justificatif désigné. -* **Exemple de résultat:** [justificatif-edit.json](samples/sample_justificatif_edit.json.md) - -#### **justificatif-delete** - -* **Méthode:** POST -* **Permission: `AbsChange`** -* **Data:** - -```json -[ - , - ... -] -``` - -* **Routes:** `/justificatif/delete` -* **Exemple d'utilisation:** `/api/justificatif/delete` - -```json -[ - 2,3,5,7 -] -``` - -* **Résultat:** Retourne un objet en deux partie (errors et success) contenant le retour de chaque objet donné dans la requête POST. -* **Exemple de résultat:** [justificatif-delete.json](samples/sample_justificatif_delete.json.md) - -#### **justificatif-import** - -* **Méthode:** POST -* **Permission: `AbsChange`** -* **Paramètres:** `justif_id` - -> Procédure d'importation de fichier : [importer un justificatif](FichiersJustificatifs.md#importer-un-fichier) - -* **Routes:** `/justificatif//import` - -* **Résultat:** Le nom du fichier archivé (nom coté serveur) -* **Exemple de résultat:** [justificatif-import.json](samples/sample_justificatif_import.json.md) - -#### **justificatif-export** - -* **Méthode:** POST -* **Permission: `ScoView`** -* **Paramètres:** - * `justif_id` - * `filename` - -> Procédure de téléchargement de fichier : [télécharger un justificatif](FichiersJustificatifs.md#télécharger-un-fichier) - -* **Routes:** `/justificatif//export/` - -* **Résultat:** le fichier (téléchargement direct / renvoie octets) -* **Exemple de résultat:** [justificatif-export.json](samples/sample_justificatif_export.json.md) - -#### **justificatif-remove** - -* **Méthode:** POST -* **Permission: `AbsChange`** -* **Paramètres:** `justif_id` - -> Procédure de suppression de fichier : [supprimer un justificatif](FichiersJustificatifs.md#supprimer-un-fichier) - -* **Routes:** `/justificatif//remove` - -* **Résultat:** `{"response":"removed"}` ou une erreur -* **Exemple de résultat:** [justificatif-remove.json](samples/sample_justificatif_remove.json.md) - -#### **justificatif-list** - -* **Méthode:** GET -* **Permission: `ScoView` / `AbsJustifView`** - * Si `ScoView` : retourne uniquement les fichiers fourni par le même utilisateur - * Si `AbsJustifView` : retourne tous les fichiers -* **Paramètres:** `justif_id` -* **Routes:** `/justificatif//list` -* **Exemple d'utilisation:** `/api/justificatif/1/list` -* **Résultat:** - ```json - { - "filenames" : [ - , + * `/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, ... - ], + ] + ``` - "total": +* **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" } - ``` - * Le total indique le nombre total de fichiers (visibles ou non) + ] + ``` + + + +#### **`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. + + -* **Exemple de résultat:** [justificatif-list.json](samples/sample_justificatif_list.json.md) -#### **justificatif-justifies** -* **Méthode:** GET -* **Permission: `ScoView`** -* **Paramètres:** `justif_id` -* **Routes:** `/justificatif//justifies` -* **Exemple d'utilisation:** `/api/justificatif/1/justifies` -* **Résultat:** Retourne la liste des assiduite_id qui sont justifiés par le justificatif ou une erreur si l'id n'est pas connu -* **Exemple de résultat:** [justificatif-justifies.json](samples/sample_justificatif_justifies.json.md) --------------------------------------------------------------------------------------------------------------------- @@ -2446,34 +2571,6 @@ Cette API est disponible à partir de ScoDoc 9.6 et remplace les absences. Voir exemples d'utilisation de l'API en Python, dans `tests/api/`. -## Fonctions de l'API ScoDoc 7 portées en ScoDoc 9 - -**Février 2023: L'ancienne API ScoDoc 7 n'est plus documentée et plus disponible.** - -Afin de garantir l'interopérabilité avec les clients ScoDoc 7 (ENT, etc), les -fonctions suivantes sont disponibles avec le mécanisme d'authentification -basique de ScoDoc 7. Elles sont considérées comme *obsolètes* ("deprecated") et -disparaitront en juillet 2022. - -Certaines ont plusieurs "routes" (URl), car ScoDoc 7 tolérait divers accès. - -* `Absences/XMLgetBilletsEtud` (deviendra `api/absences/billets/etud/ etudid>`) -* `Absences/AddBilletAbsence` (deviendra `api/absences/billet/add`) -* `Absences/XMLgetAbsEtud` (deviendra `api/absences/ etudid>`, en json) -* `Notes/evaluation_listenotes` (non existante en ScoDoc9, trop complexe) -* `Notes/formsemestre_id` (deviendra `api/formsemestre`) -* `Notes/formsemestre_bulletinetud` (deviendra `api/etud//bul/`) -* `Notes/XMLgetFormsemestres` (non existante en ScoDoc9, redondant avec `api/formsemestre` ?) -* `etud_info` ou `XMLgetEtudInfos` ou `Absences/XMLgetEtudInfos` ou `Notes/XMLgetEtudInfos` (deviendra `/api/etud/`) -* `groups_view` (deviendra `groups`) - -Les routes ci-dessus s'entendent à partir de l'URL de base de votre ScoDoc, c'est -à dire `https://votre.site.fr/ScoDoc//Scolarite/`, et répondent en GET et -en POST. - -Note: - - - `Absences/listeBillets` est un formulaire et ne fait pas partie de l'API. !!! note "Voir aussi" @@ -2481,4 +2578,4 @@ Note: - [Guide administrateur ScoDoc](GuideAdminSys.md) - [ServicesXml](ServicesXml.md) : anciens web services XML (obsolète) - [FAQ](FAQ.md) - - [Contacts](Contact.md) + - [Contacts](Contact.md) \ No newline at end of file diff --git a/docs/img/API_Chart.svg b/docs/img/API_Chart.svg index 93c17ea..df24c6d 100644 --- a/docs/img/API_Chart.svg +++ b/docs/img/API_Chart.svg @@ -1,2 +1,2 @@ -/ScoDoc/api/tokens?assiduite/<int:assiduite_id>/justificatifs/long?edit??ine/<ine>/create?nip/<nip>/create?etudid/<int:etudid>/create?<int:etudid>/create?delete?assiduites/ine/<ine>/count/query?user_id=<int:user_id>&est_just=<bool:est_just>&moduleimpl_id=<int:moduleimpl_id>&date_debut=<string:date_debut_iso>&date_fin=<string:date_fin_iso>&etat=<array[string]:etat>&formsemestre_id=<int:formsemestre_id>&metric=<array[string]:metric>&split=<bool:split>&?query?user_id=<int:user_id>&est_just=<bool:est_just>&moduleimpl_id=<int:moduleimpl_id>&date_debut=<string:date_debut_iso>&date_fin=<string:date_fin_iso>&etat=<array[string]:etat>&formsemestre_id=<int:formsemestre_id>&?evaluations?nip/<nip>/count/query?user_id=<int:user_id>&est_just=<bool:est_just>&moduleimpl_id=<int:moduleimpl_id>&date_debut=<string:date_debut_iso>&date_fin=<string:date_fin_iso>&etat=<array[string]:etat>&formsemestre_id=<int:formsemestre_id>&metric=<array[string]:metric>&split=<bool:split>&?query?user_id=<int:user_id>&est_just=<bool:est_just>&moduleimpl_id=<int:moduleimpl_id>&date_debut=<string:date_debut_iso>&date_fin=<string:date_fin_iso>&etat=<array[string]:etat>&formsemestre_id=<int:formsemestre_id>&?evaluations?etudid/<int:etudid>/count/query?user_id=<int:user_id>&est_just=<bool:est_just>&moduleimpl_id=<int:moduleimpl_id>&date_debut=<string:date_debut_iso>&date_fin=<string:date_fin_iso>&etat=<array[string]:etat>&formsemestre_id=<int:formsemestre_id>&metric=<array[string]:metric>&split=<bool:split>&?query?user_id=<int:user_id>&est_just=<bool:est_just>&moduleimpl_id=<int:moduleimpl_id>&date_debut=<string:date_debut_iso>&date_fin=<string:date_fin_iso>&etat=<array[string]:etat>&formsemestre_id=<int:formsemestre_id>&?evaluations?<int:etudid>/count/query?user_id=<int:user_id>&est_just=<bool:est_just>&moduleimpl_id=<int:moduleimpl_id>&date_debut=<string:date_debut_iso>&date_fin=<string:date_fin_iso>&etat=<array[string]:etat>&formsemestre_id=<int:formsemestre_id>&metric=<array[string]:metric>&split=<bool:split>&?query?user_id=<int:user_id>&est_just=<bool:est_just>&moduleimpl_id=<int:moduleimpl_id>&date_debut=<string:date_debut_iso>&date_fin=<string:date_fin_iso>&etat=<array[string]:etat>&formsemestre_id=<int:formsemestre_id>&?evaluations?group/query?user_id=<int:user_id>&est_just=<bool:est_just>&moduleimpl_id=<int:moduleimpl_id>&date_debut=<string:date_debut_iso>&date_fin=<string:date_fin_iso>&etat=<array[string]:etat>&?formsemestre/<int:formsemestre_id>/query?user_id=<int:user_id>&est_just=<bool:est_just>&moduleimpl_id=<int:moduleimpl_id>&date_debut=<string:date_debut_iso>&date_fin=<string:date_fin_iso>&etat=<array[string]:etat>&?count/query?user_id=<int:user_id>&est_just=<bool:est_just>&moduleimpl_id=<int:moduleimpl_id>&date_debut=<string:date_debut_iso>&date_fin=<string:date_fin_iso>&etat=<array[string]:etat>&formsemestre_id=<int:formsemestre_id>&metric=<array[string]:metric>&split=<bool:split>&?create?edit?evaluation/<int:evaluation_id>/assiduites?notes/set??delete?billets_absence/etudiant/<int:etudid>?create?<int:billet_id>/delete?departements?departements_ids?departement/<string:acronym>/edit?delete?etudiants?formsemestres_ids?formsemestres_courants?date_courante=<string:date_courante>??id/<int:dept_id>/etudiants?formsemestres_ids?formsemestres_courants?date_courante=<string:date_courante>?logos?logo/<string:logoname>??create?<string:departement>/logos?logo/<string:logoname>?etudiants/courants/long?date_courante=<string:date_courante>?ine/<string:ine>?nip/<string:nip>?etudid/<int:etudid>?name/<string:start>?etudiant/ine/<string:ine>/photo?size=<string:size>?formsemestres??nip/<string:nip>/photo?size=<string:size>?formsemestres??etudid/<int:etudid>/photo?size=<string:size>?formsemestres?formsemestre/<int:formsemestre_id>/groups??<string:code_type>/<string:code>/formsemestre/<int:formsemestre_id>/bulletin/<string:version>/pdf/nosig?edit?annotation/<int:annotation_id>/delete??create/force?<int:etudid>/jury/validation_ue/<int:validation_id>/delete?validation_formsemestre/<int:validation_id>/delete?autorisation_inscription/<int:validation_id>/delete?validation_rcue/record?<int:validation_id>/delete?validation_annee_but/<int:validation_id>/delete?validation_dut120/<int:validation_id>/delete?moduleimpl/<int:moduleimpl_id>/evaluations?evaluation/create?inscriptions?notes?formations?formations_ids?formation/<int:formation_id>/export_with_ids?export?referentiel_competences??ue/<int:ue_id>/set_parcours?assoc_niveau/<int:niveau_id>?desassoc_niveau?set_code_apogee/<string:code_apogee>??set_code_apogee_rcue/<string:code_apogee>??edit?set_code_apogee?module/<int:module_id>/set_code_apogee/<string:code_apogee>??edit??set_code_apogee?formsemestre/<int:formsemestre_id>/edit?bulletins/<string:version>?programme?etudiants/long/query?etat=<string:etat>?query?etat=<string:etat>?etat_evals?resultats?format=<string:format>?get_groups_auto_assignment?save_groups_auto_assignment?edt?group_ids=<string:group_ids>&show_modules_titles=<bool:show_modules_titles>&?decisions_jury?partitions/order??partition/create??apo/set_etapes?set_elt_sem?set_elt_annee?set_elt_passage?formsemestres/query?etape_apo=<string:etape_apo>&annee_scolaire=<string:annee_scolaire>&dept_acronym=<string:dept_acronym>&dept_id=<int:dept_id>&etat=<int:etat>&nip=<string:nip>&ine=<string:ine>&?justificatif/<int:justif_id>/edit?import?export/<filename>?remove?list?justifies??ine/<ine>/create?nip/<nip>/create?etudid/<int:etudid>/create?<int:etudid>/create?delete?justificatifs/ine/<ine>/query?user_id=<int:user_id>&est_just=<bool:est_just>&date_debut=<string:date_debut_iso>&date_fin=<string:date_fin_iso>&etat=<array[string]:etat>&order=<bool:order>&courant=<bool:courant>&group_id=<int:group_id>&?nip/<nip>/query?user_id=<int:user_id>&est_just=<bool:est_just>&date_debut=<string:date_debut_iso>&date_fin=<string:date_fin_iso>&etat=<array[string]:etat>&order=<bool:order>&courant=<bool:courant>&group_id=<int:group_id>&?etudid/<int:etudid>/query?user_id=<int:user_id>&est_just=<bool:est_just>&date_debut=<string:date_debut_iso>&date_fin=<string:date_fin_iso>&etat=<array[string]:etat>&order=<bool:order>&courant=<bool:courant>&group_id=<int:group_id>&?<int:etudid>/query?user_id=<int:user_id>&est_just=<bool:est_just>&date_debut=<string:date_debut_iso>&date_fin=<string:date_fin_iso>&etat=<array[string]:etat>&order=<bool:order>&courant=<bool:courant>&group_id=<int:group_id>&?dept/<int:dept_id>/query?user_id=<int:user_id>&est_just=<bool:est_just>&date_debut=<string:date_debut_iso>&date_fin=<string:date_fin_iso>&etat=<array[string]:etat>&order=<bool:order>&courant=<bool:courant>&group_id=<int:group_id>&?formsemestre/<int:formsemestre_id>/query?user_id=<int:user_id>&est_just=<bool:est_just>&date_debut=<string:date_debut_iso>&date_fin=<string:date_fin_iso>&etat=<array[string]:etat>&order=<bool:order>&courant=<bool:courant>&group_id=<int:group_id>&?logos?logo/<string:logoname>?partition/<int:partition_id>/remove_etudiant/<int:etudid>?group/create?groups/order?edit?delete??group/<int:group_id>/etudiants/query?etat=<string:etat>??set_etudiant/<int:etudid>?remove_etudiant/<int:etudid>?delete?edit?set_edt_id/<string:edt_id>?user/<int:uid>/edit?password?role/<string:role_name>/add/departement/<string:dept>?remove/departement/<string:dept>??create?users/query?active=<bool:active>&departement=<string:departement>&starts_with=<string:starts_with>&?permissions?role/<string:role_name>/add_permission/<string:perm_name>?remove_permission/<string:perm_name>?edit?delete??create/<string:role_name>?roles? \ No newline at end of file +/ScoDoc/api/tokens?assiduite/<int:assiduite_id>/justificatifs/long?edit??ine/<ine>/create?nip/<nip>/create?etudid/<int:etudid>/create?<int:etudid>/create?delete?assiduites/ine/<ine>/count/query?user_id=<int:user_id>&est_just=<bool:est_just>&moduleimpl_id=<int:moduleimpl_id>&date_debut=<string:date_debut_iso>&date_fin=<string:date_fin_iso>&etat=<array[string]:etat>&formsemestre_id=<int:formsemestre_id>&metric=<array[string]:metric>&split=<bool:split>&?query?user_id=<int:user_id>&est_just=<bool:est_just>&moduleimpl_id=<int:moduleimpl_id>&date_debut=<string:date_debut_iso>&date_fin=<string:date_fin_iso>&etat=<array[string]:etat>&formsemestre_id=<int:formsemestre_id>&with_justifs=<bool:with_justifs>&?evaluations?nip/<nip>/count/query?user_id=<int:user_id>&est_just=<bool:est_just>&moduleimpl_id=<int:moduleimpl_id>&date_debut=<string:date_debut_iso>&date_fin=<string:date_fin_iso>&etat=<array[string]:etat>&formsemestre_id=<int:formsemestre_id>&metric=<array[string]:metric>&split=<bool:split>&?query?user_id=<int:user_id>&est_just=<bool:est_just>&moduleimpl_id=<int:moduleimpl_id>&date_debut=<string:date_debut_iso>&date_fin=<string:date_fin_iso>&etat=<array[string]:etat>&formsemestre_id=<int:formsemestre_id>&with_justifs=<bool:with_justifs>&?evaluations?etudid/<int:etudid>/count/query?user_id=<int:user_id>&est_just=<bool:est_just>&moduleimpl_id=<int:moduleimpl_id>&date_debut=<string:date_debut_iso>&date_fin=<string:date_fin_iso>&etat=<array[string]:etat>&formsemestre_id=<int:formsemestre_id>&metric=<array[string]:metric>&split=<bool:split>&?query?user_id=<int:user_id>&est_just=<bool:est_just>&moduleimpl_id=<int:moduleimpl_id>&date_debut=<string:date_debut_iso>&date_fin=<string:date_fin_iso>&etat=<array[string]:etat>&formsemestre_id=<int:formsemestre_id>&with_justifs=<bool:with_justifs>&?evaluations?<int:etudid>/count/query?user_id=<int:user_id>&est_just=<bool:est_just>&moduleimpl_id=<int:moduleimpl_id>&date_debut=<string:date_debut_iso>&date_fin=<string:date_fin_iso>&etat=<array[string]:etat>&formsemestre_id=<int:formsemestre_id>&metric=<array[string]:metric>&split=<bool:split>&?query?user_id=<int:user_id>&est_just=<bool:est_just>&moduleimpl_id=<int:moduleimpl_id>&date_debut=<string:date_debut_iso>&date_fin=<string:date_fin_iso>&etat=<array[string]:etat>&formsemestre_id=<int:formsemestre_id>&with_justifs=<bool:with_justifs>&?evaluations?group/query?user_id=<int:user_id>&est_just=<bool:est_just>&moduleimpl_id=<int:moduleimpl_id>&date_debut=<string:date_debut_iso>&date_fin=<string:date_fin_iso>&etat=<array[string]:etat>&etudids=<array[int]:etudids>&formsemestre_id=<int:formsemestre_id>&with_justif=<bool:with_justif>&?formsemestre/<int:formsemestre_id>/query?user_id=<int:user_id>&est_just=<bool:est_just>&moduleimpl_id=<int:moduleimpl_id>&date_debut=<string:date_debut_iso>&date_fin=<string:date_fin_iso>&etat=<array[string]:etat>&?count/query?user_id=<int:user_id>&est_just=<bool:est_just>&moduleimpl_id=<int:moduleimpl_id>&date_debut=<string:date_debut_iso>&date_fin=<string:date_fin_iso>&etat=<array[string]:etat>&formsemestre_id=<int:formsemestre_id>&metric=<array[string]:metric>&split=<bool:split>&?create?edit?evaluation/<int:evaluation_id>/assiduites?notes/set??delete?billets_absence/etudiant/<int:etudid>?create?<int:billet_id>/delete?departements?departements_ids?departement/<string:acronym>/edit?delete?etudiants?formsemestres_ids?formsemestres_courants?date_courante=<string:date_courante>??id/<int:dept_id>/etudiants?formsemestres_ids?formsemestres_courants?date_courante=<string:date_courante>?logos?logo/<string:logoname>??create?<string:departement>/logos?logo/<string:logoname>?etudiants/courants/long?date_courante=<string:date_courante>?ine/<string:ine>?nip/<string:nip>?etudid/<int:etudid>?name/<string:start>?etudiant/ine/<string:ine>/photo?size=<string:size>?formsemestres??nip/<string:nip>/photo?size=<string:size>?formsemestres??etudid/<int:etudid>/photo?size=<string:size>?formsemestres?formsemestre/<int:formsemestre_id>/groups??<string:code_type>/<string:code>/formsemestre/<int:formsemestre_id>/bulletin/<string:version>/pdf/nosig?edit?annotation/<int:annotation_id>/delete??create/force?<int:etudid>/jury/validation_ue/<int:validation_id>/delete?validation_formsemestre/<int:validation_id>/delete?autorisation_inscription/<int:validation_id>/delete?validation_rcue/record?<int:validation_id>/delete?validation_annee_but/<int:validation_id>/delete?validation_dut120/<int:validation_id>/delete?moduleimpl/<int:moduleimpl_id>/evaluations?evaluation/create?inscriptions?notes?formations?formations_ids?formation/<int:formation_id>/export_with_ids?export?referentiel_competences??ue/<int:ue_id>/set_parcours?assoc_niveau/<int:niveau_id>?desassoc_niveau?set_code_apogee/<string:code_apogee>??set_code_apogee_rcue/<string:code_apogee>??edit?set_code_apogee?module/<int:module_id>/set_code_apogee/<string:code_apogee>??edit??set_code_apogee?formsemestre/<int:formsemestre_id>/edit?bulletins/<string:version>?programme?etudiants/long/query?etat=<string:etat>?query?etat=<string:etat>?etat_evals?resultats?format=<string:format>?groups_get_auto_assignment?groups_save_auto_assignment?edt?decisions_jury?partitions/order??partition/create??apo/set_etapes?set_elt_sem?set_elt_annee?set_elt_passage?formsemestres/query?etape_apo=<string:etape_apo>&annee_scolaire=<string:annee_scolaire>&dept_acronym=<string:dept_acronym>&dept_id=<int:dept_id>&etat=<int:etat>&nip=<string:nip>&ine=<string:ine>&?justificatif/<int:justif_id>/edit?import?export/<filename>?remove?list?justifies??ine/<ine>/create?nip/<nip>/create?etudid/<int:etudid>/create?<int:etudid>/create?delete?justificatifs/ine/<ine>/query?user_id=<int:user_id>&date_debut=<string:date_debut_iso>&date_fin=<string:date_fin_iso>&etat=<array[string]:etat>&order=<bool:order>&courant=<bool:courant>&group_id=<int:group_id>&?nip/<nip>/query?user_id=<int:user_id>&date_debut=<string:date_debut_iso>&date_fin=<string:date_fin_iso>&etat=<array[string]:etat>&order=<bool:order>&courant=<bool:courant>&group_id=<int:group_id>&?etudid/<int:etudid>/query?user_id=<int:user_id>&date_debut=<string:date_debut_iso>&date_fin=<string:date_fin_iso>&etat=<array[string]:etat>&order=<bool:order>&courant=<bool:courant>&group_id=<int:group_id>&?<int:etudid>/query?user_id=<int:user_id>&date_debut=<string:date_debut_iso>&date_fin=<string:date_fin_iso>&etat=<array[string]:etat>&order=<bool:order>&courant=<bool:courant>&group_id=<int:group_id>&?dept/<int:dept_id>/query?user_id=<int:user_id>&est_just=<bool:est_just>&date_debut=<string:date_debut_iso>&date_fin=<string:date_fin_iso>&etat=<array[string]:etat>&order=<bool:order>&courant=<bool:courant>&group_id=<int:group_id>&?formsemestre/<int:formsemestre_id>/query?user_id=<int:user_id>&est_just=<bool:est_just>&date_debut=<string:date_debut_iso>&date_fin=<string:date_fin_iso>&etat=<array[string]:etat>&order=<bool:order>&courant=<bool:courant>&group_id=<int:group_id>&?logos?logo/<string:logoname>?partition/<int:partition_id>/remove_etudiant/<int:etudid>?group/create?groups/order?edit?delete??group/<int:group_id>/etudiants/query??set_etudiant/<int:etudid>?remove_etudiant/<int:etudid>?delete?edit?set_edt_id/<string:edt_id>?user/<int:uid>/edit?password?role/<string:role_name>/add/departement/<string:dept>?remove/departement/<string:dept>??create?users/query?permissions?role/<string:role_name>/add_permission/<string:perm_name>?remove_permission/<string:perm_name>?edit?delete??create/<string:role_name>?roles? \ No newline at end of file diff --git a/docs/samples/sample_assiduite.json.md b/docs/samples/sample_assiduite.json.md index a2d2c8d..3071a82 100644 --- a/docs/samples/sample_assiduite.json.md +++ b/docs/samples/sample_assiduite.json.md @@ -9,11 +9,11 @@ "date_fin": "2022-08-20T12:00:00.000000+02:00", "desc": null, "entry_date": "2022-08-20T12:00:00.000000+02:00", - "est_just": false, - "etat": "PRESENT", + "est_just": true, + "etat": "RETARD", "etudid": 1, "external_data": null, - "moduleimpl_id": 12, + "moduleimpl_id": 3, "user_id": null, "user_name": null, "user_nom_complet": null diff --git a/docs/samples/sample_assiduite_create.json.md b/docs/samples/sample_assiduite_create.json.md index 393a087..cc05454 100644 --- a/docs/samples/sample_assiduite_create.json.md +++ b/docs/samples/sample_assiduite_create.json.md @@ -24,15 +24,13 @@ ```json { - "errors": [], - "success": [ + "errors": [ { "indice": 0, - "message": { - "assiduite_id": 49 - } + "message": "Duplication: la p\u00e9riode rentre en conflit avec une plage enregistr\u00e9e" } - ] + ], + "success": [] } ``` diff --git a/docs/samples/sample_assiduite_delete.json.md b/docs/samples/sample_assiduite_delete.json.md index eb829d9..bcce2b3 100644 --- a/docs/samples/sample_assiduite_delete.json.md +++ b/docs/samples/sample_assiduite_delete.json.md @@ -8,21 +8,20 @@ ```json { "errors": [ + { + "indice": 0, + "message": "Assiduite non existante" + }, { "indice": 1, "message": "Assiduite non existante" - } - ], - "success": [ - { - "indice": 0, - "message": "OK" }, { "indice": 2, - "message": "OK" + "message": "Assiduite non existante" } - ] + ], + "success": [] } ``` diff --git a/docs/samples/sample_assiduite_justificatifs.json.md b/docs/samples/sample_assiduite_justificatifs.json.md index 15532f2..d3d1c2a 100644 --- a/docs/samples/sample_assiduite_justificatifs.json.md +++ b/docs/samples/sample_assiduite_justificatifs.json.md @@ -16,12 +16,12 @@ "date_debut": "2022-08-20T12:00:00.000000+02:00", "date_fin": "2022-08-20T12:00:00.000000+02:00", "entry_date": "2022-08-20T12:00:00.000000+02:00", - "etat": "MODIFIE", + "etat": "VALIDE", "etudid": 1, "external_data": null, "fichier": null, "justif_id": 1, - "raison": null, + "raison": "MEDIC", "user_id": null, "user_name": null, "user_nom_complet": null diff --git a/docs/samples/sample_assiduites.json.md b/docs/samples/sample_assiduites.json.md index 13b4bd9..6cf342b 100644 --- a/docs/samples/sample_assiduites.json.md +++ b/docs/samples/sample_assiduites.json.md @@ -2,6 +2,45 @@ #### GET /assiduites/1 ```json +[ + { + "assiduite_id": 45, + "code_nip": "1", + "date_debut": "2022-08-20T12:00:00.000000+02:00", + "date_fin": "2022-08-20T12:00:00.000000+02:00", + "desc": null, + "entry_date": "2022-08-20T12:00:00.000000+02:00", + "est_just": false, + "etat": "ABSENT", + "etudid": 1, + "external_data": null, + "moduleimpl_id": null, + "user_id": 4, + "user_name": "admin_api", + "user_nom_complet": "Api Admin" + }, + { + "assiduite_id": 46, + "code_nip": "1", + "date_debut": "2022-08-20T12:00:00.000000+02:00", + "date_fin": "2022-08-20T12:00:00.000000+02:00", + "desc": null, + "entry_date": "2022-08-20T12:00:00.000000+02:00", + "est_just": false, + "etat": "ABSENT", + "etudid": 1, + "external_data": null, + "moduleimpl_id": null, + "user_id": 4, + "user_name": "admin_api", + "user_nom_complet": "Api Admin" + }, + "..." +] +``` + +#### GET /assiduites/1/query?etat=retard +```json [ { "assiduite_id": 1, @@ -10,11 +49,11 @@ "date_fin": "2022-08-20T12:00:00.000000+02:00", "desc": null, "entry_date": "2022-08-20T12:00:00.000000+02:00", - "est_just": false, - "etat": "PRESENT", + "est_just": true, + "etat": "RETARD", "etudid": 1, "external_data": null, - "moduleimpl_id": 12, + "moduleimpl_id": 3, "user_id": null, "user_name": null, "user_nom_complet": null @@ -23,13 +62,6 @@ ] ``` -#### GET /assiduites/1/query?etat=retard -```json -[ - "..." -] -``` - #### GET /assiduites/1/query?moduleimpl_id=1 ```json [ @@ -41,37 +73,38 @@ ```json [ { - "assiduite_id": 1, + "assiduite_id": 45, "code_nip": "1", "date_debut": "2022-08-20T12:00:00.000000+02:00", "date_fin": "2022-08-20T12:00:00.000000+02:00", "desc": null, "entry_date": "2022-08-20T12:00:00.000000+02:00", "est_just": false, - "etat": "PRESENT", + "etat": "ABSENT", "etudid": 1, "external_data": null, - "justificatifs": [ - { - "code_nip": "1", - "date_debut": "2022-08-20T12:00:00.000000+02:00", - "date_fin": "2022-08-20T12:00:00.000000+02:00", - "entry_date": "2022-08-20T12:00:00.000000+02:00", - "etat": "MODIFIE", - "etudid": 1, - "external_data": null, - "fichier": null, - "justif_id": 1, - "raison": null, - "user_id": null, - "user_name": null, - "user_nom_complet": null - } - ], - "moduleimpl_id": 12, - "user_id": null, - "user_name": null, - "user_nom_complet": null + "justificatifs": [], + "moduleimpl_id": null, + "user_id": 4, + "user_name": "admin_api", + "user_nom_complet": "Api Admin" + }, + { + "assiduite_id": 46, + "code_nip": "1", + "date_debut": "2022-08-20T12:00:00.000000+02:00", + "date_fin": "2022-08-20T12:00:00.000000+02:00", + "desc": null, + "entry_date": "2022-08-20T12:00:00.000000+02:00", + "est_just": false, + "etat": "ABSENT", + "etudid": 1, + "external_data": null, + "justificatifs": [], + "moduleimpl_id": null, + "user_id": 4, + "user_name": "admin_api", + "user_nom_complet": "Api Admin" }, "..." ] diff --git a/docs/samples/sample_assiduites_count.json.md b/docs/samples/sample_assiduites_count.json.md index 204ebee..cb09987 100644 --- a/docs/samples/sample_assiduites_count.json.md +++ b/docs/samples/sample_assiduites_count.json.md @@ -3,10 +3,10 @@ #### GET /assiduites/1/count ```json { - "compte": 1, - "demi": 0, - "heure": 0.0, - "journee": 1 + "compte": 3, + "demi": 2, + "heure": 4.0, + "journee": 3 } ``` @@ -21,10 +21,10 @@ #### GET /assiduites/1/count/query?etat=retard ```json { - "compte": 0, + "compte": 1, "demi": 0, - "heure": 0, - "journee": 0 + "heure": 0.0, + "journee": 1 } ``` @@ -32,10 +32,10 @@ ```json { "absent": { - "compte": 0, - "demi": 0, - "heure": 0, - "journee": 0, + "compte": 2, + "demi": 2, + "heure": 4.0, + "journee": 2, "justifie": { "compte": 0, "demi": 0, @@ -43,28 +43,28 @@ "journee": 0 }, "non_justifie": { - "compte": 0, - "demi": 0, - "heure": 0, - "journee": 0 + "compte": 2, + "demi": 2, + "heure": 4.0, + "journee": 2 } }, "present": { - "compte": 1, - "demi": 0, - "heure": 0.0, - "journee": 1 - }, - "retard": { "compte": 0, "demi": 0, "heure": 0, - "journee": 0, + "journee": 0 + }, + "retard": { + "compte": 1, + "demi": 0, + "heure": 0.0, + "journee": 1, "justifie": { - "compte": 0, + "compte": 1, "demi": 0, - "heure": 0, - "journee": 0 + "heure": 0.0, + "journee": 1 }, "non_justifie": { "compte": 0, @@ -74,10 +74,10 @@ } }, "total": { - "compte": 1, - "demi": 0, - "heure": 0.0, - "journee": 1 + "compte": 3, + "demi": 2, + "heure": 4.0, + "journee": 3 } } ``` diff --git a/docs/samples/sample_assiduites_create.json.md b/docs/samples/sample_assiduites_create.json.md index 2b663f8..70a8a3d 100644 --- a/docs/samples/sample_assiduites_create.json.md +++ b/docs/samples/sample_assiduites_create.json.md @@ -1,5 +1,22 @@ ### assiduites_create +#### POST /assiduites/create +> `Content-Type: application/json` +> +> `[{"etudid":1,"date_debut": "2023-10-26T08:00","date_fin": "2023-10-26T10:00","etat": "absent"}]` + +```json +{ + "errors": [ + { + "indice": 0, + "message": "Duplication: la p\u00e9riode rentre en conflit avec une plage enregistr\u00e9e" + } + ], + "success": [] +} +``` + #### POST /assiduites/create > `Content-Type: application/json` > @@ -17,22 +34,3 @@ } ``` -#### POST /assiduites/create -> `Content-Type: application/json` -> -> `[{"etudid":1,"date_debut": "2023-10-26T08:00","date_fin": "2023-10-26T10:00","etat": "absent"}]` - -```json -{ - "errors": [], - "success": [ - { - "indice": 0, - "message": { - "assiduite_id": 50 - } - } - ] -} -``` - diff --git a/docs/samples/sample_assiduites_evaluations.json.md b/docs/samples/sample_assiduites_evaluations.json.md index 421d0ab..7829bb5 100644 --- a/docs/samples/sample_assiduites_evaluations.json.md +++ b/docs/samples/sample_assiduites_evaluations.json.md @@ -1,29 +1,17 @@ -### assiduites-evaluations +### assiduites_evaluations #### GET /assiduites/1/evaluations - ```json [ - { - "evaluation_id": 1234, - "assiduites": [ - { - "assiduite_id": 1, - "code_nip": "1", - "date_debut": "2022-08-20T12:00:00.000000+02:00", - "date_fin": "2022-08-20T12:00:00.000000+02:00", - "desc": null, - "entry_date": "2022-08-20T12:00:00.000000+02:00", - "est_just": false, - "etat": "PRESENT", - "etudid": 1, - "external_data": null, - "moduleimpl_id": 12, - "user_id": null, - "user_name": null, - "user_nom_complet": null - }, - ] - } + { + "assiduites": [], + "evaluation_id": 1 + }, + { + "assiduites": [], + "evaluation_id": 2 + }, + "..." ] ``` + diff --git a/docs/samples/sample_assiduites_formsemestre.json.md b/docs/samples/sample_assiduites_formsemestre.json.md index 01b2c03..a1de817 100644 --- a/docs/samples/sample_assiduites_formsemestre.json.md +++ b/docs/samples/sample_assiduites_formsemestre.json.md @@ -4,33 +4,33 @@ ```json [ { - "assiduite_id": 1, - "code_nip": "1", + "assiduite_id": 4, + "code_nip": "NIP4", "date_debut": "2022-08-20T12:00:00.000000+02:00", "date_fin": "2022-08-20T12:00:00.000000+02:00", "desc": null, "entry_date": "2022-08-20T12:00:00.000000+02:00", "est_just": false, "etat": "PRESENT", - "etudid": 1, + "etudid": 4, "external_data": null, - "moduleimpl_id": 12, + "moduleimpl_id": 13, "user_id": null, "user_name": null, "user_nom_complet": null }, { - "assiduite_id": 2, - "code_nip": "NIP2", + "assiduite_id": 5, + "code_nip": "NIP4", "date_debut": "2022-08-20T12:00:00.000000+02:00", "date_fin": "2022-08-20T12:00:00.000000+02:00", "desc": null, "entry_date": "2022-08-20T12:00:00.000000+02:00", "est_just": false, - "etat": "RETARD", - "etudid": 2, + "etat": "ABSENT", + "etudid": 4, "external_data": null, - "moduleimpl_id": 4, + "moduleimpl_id": 7, "user_id": null, "user_name": null, "user_nom_complet": null @@ -43,17 +43,17 @@ ```json [ { - "assiduite_id": 2, - "code_nip": "NIP2", + "assiduite_id": 1, + "code_nip": "1", "date_debut": "2022-08-20T12:00:00.000000+02:00", "date_fin": "2022-08-20T12:00:00.000000+02:00", "desc": null, "entry_date": "2022-08-20T12:00:00.000000+02:00", - "est_just": false, + "est_just": true, "etat": "RETARD", - "etudid": 2, + "etudid": 1, "external_data": null, - "moduleimpl_id": 4, + "moduleimpl_id": 3, "user_id": null, "user_name": null, "user_nom_complet": null @@ -82,15 +82,15 @@ ```json [ { - "assiduite_id": 27, - "code_nip": "NIP10", + "assiduite_id": 26, + "code_nip": "11", "date_debut": "2022-08-20T12:00:00.000000+02:00", "date_fin": "2022-08-20T12:00:00.000000+02:00", "desc": null, "entry_date": "2022-08-20T12:00:00.000000+02:00", "est_just": false, "etat": "PRESENT", - "etudid": 10, + "etudid": 11, "external_data": null, "moduleimpl_id": 1, "user_id": null, @@ -98,15 +98,15 @@ "user_nom_complet": null }, { - "assiduite_id": 43, - "code_nip": "NIP14", + "assiduite_id": 38, + "code_nip": "NIP16", "date_debut": "2022-08-20T12:00:00.000000+02:00", "date_fin": "2022-08-20T12:00:00.000000+02:00", "desc": null, "entry_date": "2022-08-20T12:00:00.000000+02:00", "est_just": false, "etat": "RETARD", - "etudid": 14, + "etudid": 16, "external_data": null, "moduleimpl_id": 1, "user_id": null, diff --git a/docs/samples/sample_assiduites_formsemestre_count.json.md b/docs/samples/sample_assiduites_formsemestre_count.json.md index c1ce330..d492725 100644 --- a/docs/samples/sample_assiduites_formsemestre_count.json.md +++ b/docs/samples/sample_assiduites_formsemestre_count.json.md @@ -3,9 +3,9 @@ #### GET /assiduites/formsemestre/1/count ```json { - "compte": 48, - "demi": 14, - "heure": 65.0, + "compte": 36, + "demi": 13, + "heure": 39.0, "journee": 18 } ``` @@ -13,18 +13,18 @@ #### GET /assiduites/formsemestre/1/count/query?etat=present,retard&metric=compte,heure ```json { - "compte": 29, - "heure": 35.0 + "compte": 25, + "heure": 28.0 } ``` #### GET /assiduites/formsemestre/1/count/query?etat=retard ```json { - "compte": 14, - "demi": 8, - "heure": 19.0, - "journee": 11 + "compte": 15, + "demi": 9, + "heure": 17.0, + "journee": 12 } ``` diff --git a/docs/samples/sample_assiduites_group.json.md b/docs/samples/sample_assiduites_group.json.md index 38143f5..41de507 100644 --- a/docs/samples/sample_assiduites_group.json.md +++ b/docs/samples/sample_assiduites_group.json.md @@ -11,52 +11,50 @@ "date_fin": "2022-08-20T12:00:00.000000+02:00", "desc": null, "entry_date": "2022-08-20T12:00:00.000000+02:00", - "est_just": false, - "etat": "PRESENT", + "est_just": true, + "etat": "RETARD", "etudid": 1, "external_data": null, - "moduleimpl_id": 12, + "moduleimpl_id": 3, "user_id": null, "user_name": null, "user_nom_complet": null - } - ], - "2": [ + }, { - "assiduite_id": 2, - "code_nip": "NIP2", + "assiduite_id": 46, + "code_nip": "1", "date_debut": "2022-08-20T12:00:00.000000+02:00", "date_fin": "2022-08-20T12:00:00.000000+02:00", "desc": null, "entry_date": "2022-08-20T12:00:00.000000+02:00", "est_just": false, - "etat": "RETARD", - "etudid": 2, + "etat": "ABSENT", + "etudid": 1, "external_data": null, - "moduleimpl_id": 4, - "user_id": null, - "user_name": null, - "user_nom_complet": null - } - ], - "3": [ + "moduleimpl_id": null, + "user_id": 4, + "user_name": "admin_api", + "user_nom_complet": "Api Admin" + }, { - "assiduite_id": 3, - "code_nip": "3", + "assiduite_id": 45, + "code_nip": "1", "date_debut": "2022-08-20T12:00:00.000000+02:00", "date_fin": "2022-08-20T12:00:00.000000+02:00", "desc": null, "entry_date": "2022-08-20T12:00:00.000000+02:00", "est_just": false, - "etat": "PRESENT", - "etudid": 3, + "etat": "ABSENT", + "etudid": 1, "external_data": null, - "moduleimpl_id": 18, - "user_id": null, - "user_name": null, - "user_nom_complet": null + "moduleimpl_id": null, + "user_id": 4, + "user_name": "admin_api", + "user_nom_complet": "Api Admin" } - ] + ], + "2": [], + "3": [] } ``` diff --git a/docs/samples/sample_justificatif_delete.json.md b/docs/samples/sample_justif_delete.json.md similarity index 63% rename from docs/samples/sample_justificatif_delete.json.md rename to docs/samples/sample_justif_delete.json.md index bfdbde4..4d53d23 100644 --- a/docs/samples/sample_justificatif_delete.json.md +++ b/docs/samples/sample_justif_delete.json.md @@ -1,28 +1,27 @@ -### justificatif_delete +### justif_delete #### POST /justificatif/delete > `Content-Type: application/json` > -> `[2,2,3]` +> `[2, 2, 3]` ```json { "errors": [ + { + "indice": 0, + "message": "Justificatif non existant" + }, { "indice": 1, "message": "Justificatif non existant" - } - ], - "success": [ - { - "indice": 0, - "message": "OK" }, { "indice": 2, - "message": "OK" + "message": "Justificatif non existant" } - ] + ], + "success": [] } ``` diff --git a/docs/samples/sample_justificatif_edit.json.md b/docs/samples/sample_justif_edit.json.md similarity index 87% rename from docs/samples/sample_justificatif_edit.json.md rename to docs/samples/sample_justif_edit.json.md index 6568376..92e7290 100644 --- a/docs/samples/sample_justificatif_edit.json.md +++ b/docs/samples/sample_justif_edit.json.md @@ -1,4 +1,4 @@ -### justificatif_edit +### justif_edit #### POST /justificatif/1/edit > `Content-Type: application/json` @@ -11,7 +11,9 @@ "apres": [ 1 ], - "avant": [] + "avant": [ + 1 + ] } } ``` diff --git a/docs/samples/sample_justificatif_justifies.json.md b/docs/samples/sample_justif_justifies.json.md similarity index 53% rename from docs/samples/sample_justificatif_justifies.json.md rename to docs/samples/sample_justif_justifies.json.md index 716d719..6f490ab 100644 --- a/docs/samples/sample_justificatif_justifies.json.md +++ b/docs/samples/sample_justif_justifies.json.md @@ -1,7 +1,10 @@ -### justificatif_justifies +### justif_justifies #### GET /justificatif/1/justifies - ```json -[1, 2, "..."] +[ + 1, + "..." +] ``` + diff --git a/docs/samples/sample_justif_list.json.md b/docs/samples/sample_justif_list.json.md new file mode 100644 index 0000000..06fdfab --- /dev/null +++ b/docs/samples/sample_justif_list.json.md @@ -0,0 +1,10 @@ +### justif_list + +#### GET /justificatif/1/list +```json +{ + "filenames": [], + "total": 0 +} +``` + diff --git a/docs/samples/sample_justificatif.json.md b/docs/samples/sample_justificatif.json.md index c7bb716..056f184 100644 --- a/docs/samples/sample_justificatif.json.md +++ b/docs/samples/sample_justificatif.json.md @@ -7,7 +7,7 @@ "date_debut": "2022-08-20T12:00:00.000000+02:00", "date_fin": "2022-08-20T12:00:00.000000+02:00", "entry_date": "2022-08-20T12:00:00.000000+02:00", - "etat": "MODIFIE", + "etat": "VALIDE", "etudid": 1, "external_data": null, "fichier": null, diff --git a/docs/samples/sample_justificatif_create.json.md b/docs/samples/sample_justificatif_create.json.md deleted file mode 100644 index 87f6bfc..0000000 --- a/docs/samples/sample_justificatif_create.json.md +++ /dev/null @@ -1,22 +0,0 @@ -### justificatif_create - -#### POST /justificatif/1/create -> `Content-Type: application/json` -> -> `[{"date_debut": "2023-10-27T08:00","date_fin": "2023-10-27T10:00","etat": "attente"}]` - -```json -{ - "errors": [], - "success": [ - { - "indice": 0, - "message": { - "couverture": [], - "justif_id": 25 - } - } - ] -} -``` - diff --git a/docs/samples/sample_justificatif_export.json.md b/docs/samples/sample_justificatif_export.json.md deleted file mode 100644 index 60af4a4..0000000 --- a/docs/samples/sample_justificatif_export.json.md +++ /dev/null @@ -1,7 +0,0 @@ -### justificatif_export - -#### POST /justificatif/1/export/nom_fichier - -```console -téléchargement du fichier -``` diff --git a/docs/samples/sample_justificatif_import.json.md b/docs/samples/sample_justificatif_import.json.md deleted file mode 100644 index 4ce0df3..0000000 --- a/docs/samples/sample_justificatif_import.json.md +++ /dev/null @@ -1,11 +0,0 @@ -### justificatif_import - -#### POST /justificatif/1/import - -> `Content-Type: multipart/form-data` -> -> `binary file` - -```json -{ "filename": "nom_du_fichier" } -``` diff --git a/docs/samples/sample_justificatif_list.json.md b/docs/samples/sample_justificatif_list.json.md deleted file mode 100644 index 31c2451..0000000 --- a/docs/samples/sample_justificatif_list.json.md +++ /dev/null @@ -1,10 +0,0 @@ -### justificatif_list - -#### GET /justificatif/1/list - -```json -{ - "total": 1, - "filenames": ["nom_fichier"] -} -``` diff --git a/docs/samples/sample_justificatif_remove.json.md b/docs/samples/sample_justificatif_remove.json.md deleted file mode 100644 index 3caff41..0000000 --- a/docs/samples/sample_justificatif_remove.json.md +++ /dev/null @@ -1,25 +0,0 @@ -### justificatif_remove - -#### POST /justificatif/1/remove - -> `Content-Type: application/json` -> -> `{"remove" : "all"}` - -```json -{ - "response": "remove" -} -``` - -#### POST /justificatif/1/remove - -> `Content-Type: application/json` -> -> `{"remove" : "list", "filenames": ["nom_fichier"]}` - -```json -{ - "response": "remove" -} -``` diff --git a/docs/samples/sample_justificatifs.json.md b/docs/samples/sample_justificatifs.json.md index bedea3e..8950eb9 100644 --- a/docs/samples/sample_justificatifs.json.md +++ b/docs/samples/sample_justificatifs.json.md @@ -8,7 +8,7 @@ "date_debut": "2022-08-20T12:00:00.000000+02:00", "date_fin": "2022-08-20T12:00:00.000000+02:00", "entry_date": "2022-08-20T12:00:00.000000+02:00", - "etat": "MODIFIE", + "etat": "VALIDE", "etudid": 1, "external_data": null, "fichier": null, @@ -29,85 +29,3 @@ ] ``` -#### GET /justificatifs/dept/1 -```json -[ - { - "code_nip": "1", - "date_debut": "2022-08-20T12:00:00.000000+02:00", - "date_fin": "2022-08-20T12:00:00.000000+02:00", - "entry_date": "2022-08-20T12:00:00.000000+02:00", - "etat": "MODIFIE", - "etudid": 1, - "external_data": null, - "fichier": null, - "formsemestre": { - "id": 1, - "title": "TAPI-BUT-FI-S1-2021" - }, - "justif_id": 1, - "raison": null, - "user_id": null, - "user_name": null, - "user_nom_complet": null - }, - { - "code_nip": "NIP2", - "date_debut": "2022-08-20T12:00:00.000000+02:00", - "date_fin": "2022-08-20T12:00:00.000000+02:00", - "entry_date": "2022-08-20T12:00:00.000000+02:00", - "etat": "NON_VALIDE", - "etudid": 2, - "external_data": null, - "fichier": null, - "formsemestre": { - "id": 1, - "title": "TAPI-BUT-FI-S1-2021" - }, - "justif_id": 2, - "raison": null, - "user_id": null, - "user_name": null, - "user_nom_complet": null - }, - "..." -] -``` - -#### GET /justificatifs/formsemestre/1 -```json -[ - { - "code_nip": "1", - "date_debut": "2022-08-20T12:00:00.000000+02:00", - "date_fin": "2022-08-20T12:00:00.000000+02:00", - "entry_date": "2022-08-20T12:00:00.000000+02:00", - "etat": "MODIFIE", - "etudid": 1, - "external_data": null, - "fichier": null, - "justif_id": 1, - "raison": null, - "user_id": null, - "user_name": null, - "user_nom_complet": null - }, - { - "code_nip": "NIP2", - "date_debut": "2022-08-20T12:00:00.000000+02:00", - "date_fin": "2022-08-20T12:00:00.000000+02:00", - "entry_date": "2022-08-20T12:00:00.000000+02:00", - "etat": "NON_VALIDE", - "etudid": 2, - "external_data": null, - "fichier": null, - "justif_id": 2, - "raison": null, - "user_id": null, - "user_name": null, - "user_nom_complet": null - }, - "..." -] -``` - diff --git a/docs/samples/sample_justificatifs_dept.json.md b/docs/samples/sample_justificatifs_dept.json.md index a9299c4..2ab7453 100644 --- a/docs/samples/sample_justificatifs_dept.json.md +++ b/docs/samples/sample_justificatifs_dept.json.md @@ -4,38 +4,38 @@ ```json [ { - "code_nip": "1", + "code_nip": "3", "date_debut": "2022-08-20T12:00:00.000000+02:00", "date_fin": "2022-08-20T12:00:00.000000+02:00", "entry_date": "2022-08-20T12:00:00.000000+02:00", "etat": "MODIFIE", - "etudid": 1, + "etudid": 3, "external_data": null, "fichier": null, "formsemestre": { "id": 1, "title": "TAPI-BUT-FI-S1-2021" }, - "justif_id": 1, + "justif_id": 4, "raison": null, "user_id": null, "user_name": null, "user_nom_complet": null }, { - "code_nip": "NIP2", + "code_nip": "NIP4", "date_debut": "2022-08-20T12:00:00.000000+02:00", "date_fin": "2022-08-20T12:00:00.000000+02:00", "entry_date": "2022-08-20T12:00:00.000000+02:00", - "etat": "NON_VALIDE", - "etudid": 2, + "etat": "ATTENTE", + "etudid": 4, "external_data": null, "fichier": null, "formsemestre": { "id": 1, "title": "TAPI-BUT-FI-S1-2021" }, - "justif_id": 2, + "justif_id": 5, "raison": null, "user_id": null, "user_name": null, diff --git a/docs/samples/sample_justificatifs_formsemestre.json.md b/docs/samples/sample_justificatifs_formsemestre.json.md index 72c1a7b..6fb5119 100644 --- a/docs/samples/sample_justificatifs_formsemestre.json.md +++ b/docs/samples/sample_justificatifs_formsemestre.json.md @@ -8,7 +8,7 @@ "date_debut": "2022-08-20T12:00:00.000000+02:00", "date_fin": "2022-08-20T12:00:00.000000+02:00", "entry_date": "2022-08-20T12:00:00.000000+02:00", - "etat": "MODIFIE", + "etat": "VALIDE", "etudid": 1, "external_data": null, "fichier": null, @@ -19,15 +19,15 @@ "user_nom_complet": null }, { - "code_nip": "NIP2", + "code_nip": "3", "date_debut": "2022-08-20T12:00:00.000000+02:00", "date_fin": "2022-08-20T12:00:00.000000+02:00", "entry_date": "2022-08-20T12:00:00.000000+02:00", - "etat": "NON_VALIDE", - "etudid": 2, + "etat": "MODIFIE", + "etudid": 3, "external_data": null, "fichier": null, - "justif_id": 2, + "justif_id": 4, "raison": null, "user_id": null, "user_name": null,