Référence Mobile API
API authentifiée d'une instance d'établissement. Elle porte le travail de l'enseignant : classes, effectifs, matières, évaluations et soumission des bordereaux de notes.
Règle structurante : l'unité de soumission est le bordereau complet d'une évaluation. Il n'existe pas de point de terminaison de soumission note par note, et la disponibilité du réseau ne déclenche aucun envoi automatique côté client. La soumission est une action explicite de l'enseignant, traitée en une transaction unique tout-ou-rien.
Version du contrat : 1.0.0
Serveurs
https://{school}.modernschools.online/api/mobile/v1— Instance d'un établissement
Authentification
oauth2—oauth2. Code d'autorisation avec PKCE. Le client mobile est un client public : il n'embarque aucun secret.
Points de terminaison
Session
Profil de l'utilisateur connecté et synchronisation.
Profil de l'enseignant connecté
/meProfil de l'enseignant connecté
Généré depuis le contrat ModernSchools Mobile API
Identité, rôles et établissement de rattachement de l'utilisateur.
Réponses
200 | Profil de l'utilisateur. Teacher |
401 | Jeton absent, expiré ou révoqué. Error |
Télécharger le jeu de données de travail
/syncTélécharger le jeu de données de travail
Généré depuis le contrat ModernSchools Mobile API
Retourne les classes, matières, effectifs, périodes et emploi du temps de l'enseignant. C'est ce téléchargement qui rend le travail hors ligne possible : après lui, le client fonctionne sans réseau.
Paramètres
| Type | |||
|---|---|---|---|
since | query | string (date-time) | optionnel — Horodatage de la dernière synchronisation réussie, pour une mise à jour incrémentale. |
Réponses
200 | Jeu de données de travail. SyncBundle |
401 | Jeton absent, expiré ou révoqué. Error |
Année scolaire active
/school-yearAnnée scolaire active
Généré depuis le contrat ModernSchools Mobile API
Année en cours sur l'instance, et son état d'ouverture.
Réponses
200 | Année scolaire active. SchoolYear |
Enseignement
Classes, matières et affectations de l'enseignant.
Lister mes classes
/classesLister mes classes
Généré depuis le contrat ModernSchools Mobile API
Classes sur lesquelles l'enseignant détient au moins une affectation.
Réponses
200 | Liste des classes. objet |
401 | Jeton absent, expiré ou révoqué. Error |
Lister les matières que j'enseigne dans une classe
/classes/{classId}/subjectsLister les matières que j'enseigne dans une classe
Généré depuis le contrat ModernSchools Mobile API
Aucune description fournie par le contrat.
Paramètres
| Type | |||
|---|---|---|---|
classId | path | string (uuid) | obligatoire |
Réponses
200 | Matières affectées à l'enseignant pour cette classe. objet |
Effectifs
Listes d'élèves et réconciliation.
Lister l'effectif d'une classe
/classes/{classId}/studentsLister l'effectif d'une classe
Généré depuis le contrat ModernSchools Mobile API
Effectif de la classe à l'instant de l'appel. Le client conserve l'horodatage retourné : c'est lui qui permet de détecter un écart au moment de soumettre un bordereau.
Paramètres
| Type | |||
|---|---|---|---|
classId | path | string (uuid) | obligatoire |
Réponses
200 | Effectif de la classe. Roster |
404 | Ressource introuvable. Error |
Obtenir les écarts d'effectif d'une évaluation
/evaluations/{evaluationId}/roster-reconciliationObtenir les écarts d'effectif d'une évaluation
Généré depuis le contrat ModernSchools Mobile API
Compare l'effectif détenu par le client à l'effectif serveur et retourne les cas à trancher : élève apparu, élève retiré, élève ayant changé de classe. Aucune décision n'est prise automatiquement.
Paramètres
| Type | |||
|---|---|---|---|
evaluationId | path | string (uuid) | obligatoire |
rosterVersion | query | string | obligatoire — Empreinte de l'effectif détenu par le client. |
Réponses
200 | Écarts à traiter. RosterReconciliation |
Évaluations
Périodes et évaluations.
Lister les périodes d'évaluation
/periodsLister les périodes d'évaluation
Généré depuis le contrat ModernSchools Mobile API
Périodes de l'année active, avec leur état d'ouverture.
Réponses
200 | Liste des périodes. objet |
Lister les évaluations
/evaluationsLister les évaluations
Généré depuis le contrat ModernSchools Mobile API
Évaluations de l'enseignant, filtrables par classe, matière et période.
Paramètres
| Type | |||
|---|---|---|---|
classId | query | string (uuid) | optionnel |
subjectId | query | string (uuid) | optionnel |
periodId | query | string (uuid) | optionnel |
Réponses
200 | Liste des évaluations. objet |
Bordereaux
Saisie et soumission des notes.
Consulter le bordereau serveur d'une évaluation
/evaluations/{evaluationId}/grade-sheetConsulter le bordereau serveur d'une évaluation
Généré depuis le contrat ModernSchools Mobile API
État du bordereau tel qu'il est enregistré côté serveur. Un bordereau jamais soumis est retourné vide : la saisie en cours de l'enseignant reste sur son appareil et n'est jamais transmise implicitement.
Paramètres
| Type | |||
|---|---|---|---|
evaluationId | path | string (uuid) | obligatoire |
Réponses
200 | Bordereau serveur. GradeSheet |
404 | Ressource introuvable. Error |
Soumettre le bordereau complet d'une évaluation
/evaluations/{evaluationId}/grade-sheet/submissionsSoumettre le bordereau complet d'une évaluation
Généré depuis le contrat ModernSchools Mobile API
Transmet en une seule opération l'intégralité des notes de l'évaluation. La transaction est tout-ou-rien : soit le bordereau entier est enregistré, soit rien ne l'est.
La requête porte l'empreinte de l'effectif utilisé lors de la saisie (rosterVersion). Si l'effectif serveur a changé depuis, la soumission est refusée avec le détail de l'écart, sans aucune écriture partielle : le client doit alors passer par la réconciliation d'effectif.
Le champ submissionId rend l'opération idempotente : rejouer la même soumission après une coupure réseau ne produit pas de doublon.
Paramètres
| Type | |||
|---|---|---|---|
evaluationId | path | string (uuid) | obligatoire |
Corps de la requête — GradeSheetSubmission
Réponses
201 | Bordereau accepté et enregistré intégralement. GradeSheet |
401 | Jeton absent, expiré ou révoqué. Error |
409 | Soumission refusée. Aucune note n'a été écrite. Le corps précise le motif : écart d'effectif, période fermée, affectation retirée, ou bordereau déjà soumis. SubmissionRejection |
422 | Bordereau incomplet ou valeurs hors barème. Error |
Emploi du temps
Séances de l'enseignant.
Consulter mon emploi du temps
/timetableConsulter mon emploi du temps
Généré depuis le contrat ModernSchools Mobile API
Aucune description fournie par le contrat.
Paramètres
| Type | |||
|---|---|---|---|
from | query | string (date) | optionnel |
to | query | string (date) | optionnel |
Réponses
200 | Séances de l'enseignant sur la plage demandée. objet |
Schémas
Teacher
| Champs | Type | ||
|---|---|---|---|
id | string (uuid) | obligatoire | — |
displayName | string | obligatoire | — |
email | string (email) | optionnel | — |
roles | string[] | obligatoire | — |
SchoolYear
| Champs | Type | ||
|---|---|---|---|
id | string (uuid) | obligatoire | — |
label | string | obligatoire | — |
status | string | obligatoire | Valeurs admises : active, archived |
SyncBundle
| Champs | Type | ||
|---|---|---|---|
generatedAt | string (date-time) | obligatoire | — |
schoolYear | SchoolYear | optionnel | — |
classes | ClassGroup[] | obligatoire | — |
subjects | Subject[] | obligatoire | — |
periods | Period[] | obligatoire | — |
rosters | Roster[] | optionnel | — |
ClassGroup
| Champs | Type | ||
|---|---|---|---|
id | string (uuid) | obligatoire | — |
name | string | obligatoire | — |
level | string | obligatoire | — |
section | string | optionnel | — |
headcount | integer | optionnel | — |
Subject
| Champs | Type | ||
|---|---|---|---|
id | string (uuid) | obligatoire | — |
name | string | obligatoire | — |
coefficient | number | optionnel | — |
Student
| Champs | Type | ||
|---|---|---|---|
identityUuid | string (uuid) | obligatoire | Identifiant technique stable de l'élève. C'est la seule clé fiable pour suivre un élève dans le temps : le matricule institutionnel peut être rectifié et le nom peut être corrigé. |
institutionalNumber | string | optionnel | Matricule MINESEC, lorsqu'il est connu. |
lastName | string | obligatoire | — |
firstName | string | obligatoire | — |
dateOfBirth | string (date) | optionnel | — |
Roster
| Champs | Type | ||
|---|---|---|---|
classId | string (uuid) | obligatoire | — |
rosterVersion | string | obligatoire | Empreinte de l'effectif, à renvoyer lors d'une soumission. |
generatedAt | string (date-time) | optionnel | — |
students | Student[] | obligatoire | — |
Period
| Champs | Type | ||
|---|---|---|---|
id | string (uuid) | obligatoire | — |
label | string | obligatoire | — |
startsOn | string (date) | optionnel | — |
endsOn | string (date) | optionnel | — |
status | string | obligatoire | Valeurs admises : open, closed |
Evaluation
| Champs | Type | ||
|---|---|---|---|
id | string (uuid) | obligatoire | — |
label | string | obligatoire | — |
classId | string (uuid) | obligatoire | — |
subjectId | string (uuid) | obligatoire | — |
periodId | string (uuid) | obligatoire | — |
maxScore | number | obligatoire | — |
status | string | obligatoire | Valeurs admises : not-submitted, submitted |
Grade
| Champs | Type | ||
|---|---|---|---|
identityUuid | string (uuid) | obligatoire | — |
score | `number | null` | optionnel |
absent | boolean | optionnel | — |
comment | string | optionnel | — |
GradeSheet
| Champs | Type | ||
|---|---|---|---|
evaluationId | string (uuid) | obligatoire | — |
status | string | obligatoire | Valeurs admises : not-submitted, submitted |
submittedAt | string (date-time) | optionnel | — |
submittedBy | string (uuid) | optionnel | — |
rosterVersion | string | optionnel | — |
grades | Grade[] | obligatoire | — |
GradeSheetSubmission
Bordereau complet d'une évaluation. Toutes les lignes de l'effectif doivent être présentes, y compris les élèves absents ou non notés, déclarés comme tels.
| Champs | Type | ||
|---|---|---|---|
submissionId | string (uuid) | obligatoire | Identifiant généré par le client, garantissant l'idempotence. |
rosterVersion | string | obligatoire | Empreinte de l'effectif utilisé lors de la saisie. |
capturedAt | string (date-time) | optionnel | Horodatage local de fin de saisie, à titre informatif. |
grades | Grade[] | obligatoire | — |
SubmissionRejection
| Champs | Type | ||
|---|---|---|---|
code | string | obligatoire | Valeurs admises : roster-mismatch, period-closed, assignment-revoked, already-submitted |
message | string | obligatoire | — |
reconciliation | RosterReconciliation | optionnel | — |
RosterReconciliation
| Champs | Type | ||
|---|---|---|---|
classId | string (uuid) | obligatoire | — |
currentRosterVersion | string | obligatoire | — |
cases | ReconciliationCase[] | obligatoire | — |
ReconciliationCase
| Champs | Type | ||
|---|---|---|---|
kind | string | obligatoire | Valeurs admises : student-added, student-removed, class-changed |
student | Student | obligatoire | — |
details | string | optionnel | — |
TimetableSlot
| Champs | Type | ||
|---|---|---|---|
id | string (uuid) | obligatoire | — |
classId | string (uuid) | obligatoire | — |
subjectId | string (uuid) | obligatoire | — |
room | string | optionnel | — |
startsAt | string (date-time) | obligatoire | — |
endsAt | string (date-time) | obligatoire | — |
Error
| Champs | Type | ||
|---|---|---|---|
code | string | obligatoire | Code applicatif stable, sur lequel brancher la logique client. |
message | string | obligatoire | Message destiné aux journaux, pas à l'utilisateur final. |
Cette page vous a-t-elle aidé ?
Toujours bloqué ? Écrivez au support : support@modernschools.online