Aller au contenu principal

Référence Mobile API

APIIntégrateurResponsable informatiqueDisponible⏱ 10 min

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é​

GET/me

Profil 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

200Profil de l'utilisateur. Teacher
401Jeton absent, expiré ou révoqué. Error

Télécharger le jeu de données de travail​

GET/sync

Té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
sincequerystring (date-time)optionnel — Horodatage de la dernière synchronisation réussie, pour une mise à jour incrémentale.

Réponses

200Jeu de données de travail. SyncBundle
401Jeton absent, expiré ou révoqué. Error

Année scolaire active​

GET/school-year

Anné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

200Année scolaire active. SchoolYear

Enseignement​

Classes, matières et affectations de l'enseignant.

Lister mes classes​

GET/classes

Lister mes classes

Généré depuis le contrat ModernSchools Mobile API

Classes sur lesquelles l'enseignant détient au moins une affectation.

Réponses

200Liste des classes. objet
401Jeton absent, expiré ou révoqué. Error

Lister les matières que j'enseigne dans une classe​

GET/classes/{classId}/subjects

Lister 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
classIdpathstring (uuid)obligatoire

Réponses

200Matières affectées à l'enseignant pour cette classe. objet

Effectifs​

Listes d'élèves et réconciliation.

Lister l'effectif d'une classe​

GET/classes/{classId}/students

Lister 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
classIdpathstring (uuid)obligatoire

Réponses

200Effectif de la classe. Roster
404Ressource introuvable. Error

Obtenir les écarts d'effectif d'une évaluation​

GET/evaluations/{evaluationId}/roster-reconciliation

Obtenir 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
evaluationIdpathstring (uuid)obligatoire
rosterVersionquerystringobligatoire — 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​

GET/periods

Lister 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

200Liste des périodes. objet

Lister les évaluations​

GET/evaluations

Lister 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
classIdquerystring (uuid)optionnel
subjectIdquerystring (uuid)optionnel
periodIdquerystring (uuid)optionnel

Réponses

200Liste des évaluations. objet

Bordereaux​

Saisie et soumission des notes.

Consulter le bordereau serveur d'une évaluation​

GET/evaluations/{evaluationId}/grade-sheet

Consulter 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
evaluationIdpathstring (uuid)obligatoire

Réponses

200Bordereau serveur. GradeSheet
404Ressource introuvable. Error

Soumettre le bordereau complet d'une évaluation​

POST/evaluations/{evaluationId}/grade-sheet/submissions

Soumettre 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
evaluationIdpathstring (uuid)obligatoire

Corps de la requête — GradeSheetSubmission

Réponses

201Bordereau accepté et enregistré intégralement. GradeSheet
401Jeton absent, expiré ou révoqué. Error
409Soumission 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
422Bordereau incomplet ou valeurs hors barème. Error

Emploi du temps​

Séances de l'enseignant.

Consulter mon emploi du temps​

GET/timetable

Consulter mon emploi du temps

Généré depuis le contrat ModernSchools Mobile API

Aucune description fournie par le contrat.

Paramètres

Type
fromquerystring (date)optionnel
toquerystring (date)optionnel

Réponses

200Séances de l'enseignant sur la plage demandée. objet

Schémas​

Teacher​

ChampsType
idstring (uuid)obligatoire—
displayNamestringobligatoire—
emailstring (email)optionnel—
rolesstring[]obligatoire—

SchoolYear​

ChampsType
idstring (uuid)obligatoire—
labelstringobligatoire—
statusstringobligatoireValeurs admises : active, archived

SyncBundle​

ChampsType
generatedAtstring (date-time)obligatoire—
schoolYearSchoolYearoptionnel—
classesClassGroup[]obligatoire—
subjectsSubject[]obligatoire—
periodsPeriod[]obligatoire—
rostersRoster[]optionnel—

ClassGroup​

ChampsType
idstring (uuid)obligatoire—
namestringobligatoire—
levelstringobligatoire—
sectionstringoptionnel—
headcountintegeroptionnel—

Subject​

ChampsType
idstring (uuid)obligatoire—
namestringobligatoire—
coefficientnumberoptionnel—

Student​

ChampsType
identityUuidstring (uuid)obligatoireIdentifiant 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é.
institutionalNumberstringoptionnelMatricule MINESEC, lorsqu'il est connu.
lastNamestringobligatoire—
firstNamestringobligatoire—
dateOfBirthstring (date)optionnel—

Roster​

ChampsType
classIdstring (uuid)obligatoire—
rosterVersionstringobligatoireEmpreinte de l'effectif, à renvoyer lors d'une soumission.
generatedAtstring (date-time)optionnel—
studentsStudent[]obligatoire—

Period​

ChampsType
idstring (uuid)obligatoire—
labelstringobligatoire—
startsOnstring (date)optionnel—
endsOnstring (date)optionnel—
statusstringobligatoireValeurs admises : open, closed

Evaluation​

ChampsType
idstring (uuid)obligatoire—
labelstringobligatoire—
classIdstring (uuid)obligatoire—
subjectIdstring (uuid)obligatoire—
periodIdstring (uuid)obligatoire—
maxScorenumberobligatoire—
statusstringobligatoireValeurs admises : not-submitted, submitted

Grade​

ChampsType
identityUuidstring (uuid)obligatoire—
score`numbernull`optionnel
absentbooleanoptionnel—
commentstringoptionnel—

GradeSheet​

ChampsType
evaluationIdstring (uuid)obligatoire—
statusstringobligatoireValeurs admises : not-submitted, submitted
submittedAtstring (date-time)optionnel—
submittedBystring (uuid)optionnel—
rosterVersionstringoptionnel—
gradesGrade[]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.

ChampsType
submissionIdstring (uuid)obligatoireIdentifiant généré par le client, garantissant l'idempotence.
rosterVersionstringobligatoireEmpreinte de l'effectif utilisé lors de la saisie.
capturedAtstring (date-time)optionnelHorodatage local de fin de saisie, à titre informatif.
gradesGrade[]obligatoire—

SubmissionRejection​

ChampsType
codestringobligatoireValeurs admises : roster-mismatch, period-closed, assignment-revoked, already-submitted
messagestringobligatoire—
reconciliationRosterReconciliationoptionnel—

RosterReconciliation​

ChampsType
classIdstring (uuid)obligatoire—
currentRosterVersionstringobligatoire—
casesReconciliationCase[]obligatoire—

ReconciliationCase​

ChampsType
kindstringobligatoireValeurs admises : student-added, student-removed, class-changed
studentStudentobligatoire—
detailsstringoptionnel—

TimetableSlot​

ChampsType
idstring (uuid)obligatoire—
classIdstring (uuid)obligatoire—
subjectIdstring (uuid)obligatoire—
roomstringoptionnel—
startsAtstring (date-time)obligatoire—
endsAtstring (date-time)obligatoire—

Error​

ChampsType
codestringobligatoireCode applicatif stable, sur lequel brancher la logique client.
messagestringobligatoireMessage destiné aux journaux, pas à l'utilisateur final.

Cette page vous a-t-elle aidé ?

Toujours bloqué ? Écrivez au support : support@modernschools.online