Votre ENT possède le planning. Le ressaisir dans MeetingHub serait le condamner à diverger dès la première semaine : déposez-le. Ce guide montre comment ; la référence donne chaque champ et chaque règle : Emploi du temps.
Il faut une clé de portée schedule:write. Dans les adresses ci-dessous, :institutionId est l'identifiant de votre établissement, rendu par GET /api/me.
Le dépôt
PUT /api/institutions/:institutionId/lessons
{ "sessions": [
{ "ref": "ENT-12345",
"room": { "ref": "salle-204", "name": "Salle 204" },
"group": { "ref": "bts-sio-1", "name": "BTS SIO 1" },
"title": "Mathématiques",
"startsAt": "2026-10-14T08:00:00Z",
"durationMinutes": 120 } ]
}
ref est l'identifiant du cours CHEZ VOUS. C'est lui qui rend le dépôt rejouable : envoyez le même corps chaque nuit, rien ne change ; changez l'heure, le cours se déplace. Un cours n'est jamais créé deux fois.
La salle et la classe se désignent de la même façon, par le nom qu'elles portent chez vous. Si elles n'existent pas encore dans MeetingHub, le dépôt les crée : un établissement de quarante salles n'a pas à les saisir avant de pouvoir déposer son planning. Une salle ainsi créée est une salle de cours, de 80 places.
Vous ne fixez pas l'heure d'ouverture de la salle : elle se déduit du type de salle. Une salle de cours s'ouvre 10 minutes avant le début et se ferme 15 minutes après la fin.
Essayer avant d'écrire
PUT /api/institutions/:institutionId/lessons?dryRun=true
Rien n'est écrit, et le rapport dit ce qui serait fait — conflits compris. Pour un premier dépôt de deux mille cours, faites-le.
Lire le rapport
La réponse détaille le sort de chaque cours :
{ "dryRun": false, "read": 3,
"created": 1, "updated": 1, "unchanged": 0, "cancelled": 0, "rejected": 1,
"roomsCreated": 1, "groupsCreated": 0,
"lines": [
{ "ref": "ENT-12345", "outcome": "created", "sessionId": "…" },
{ "ref": "ENT-12346", "outcome": "updated", "sessionId": "…" },
{ "ref": "ENT-12347", "outcome": "rejected", "sessionId": null,
"reason": "salle « salle-204 » déjà occupée de … à …" } ]
}
Un cours refusé n'empêche pas les autres de passer : le dépôt applique ce qui est valable et détaille le reste. Gardez le sessionId des cours créés : c'est l'identifiant du cours dans MeetingHub, le :lessonId des adresses, et c'est lui que porteront les webhooks de feuille de présence.
Les refus les plus courants
- Deux cours dans la même salle au même moment, dans votre dépôt. Les deux cours sont refusés, pas un seul : on ne sait pas lequel est le bon, et en garder un au hasard mettrait une classe dans une salle déjà prise.
- La salle est déjà occupée par un cours déposé précédemment.
- La même
refapparaît deux fois dans le dépôt. - Un cours vieux de plus de 90 jours, ou à plus de 400 jours.
La liste complète est dans la référence.
Ce que le dépôt n'efface pas
Un cours absent du dépôt n'est PAS annulé. Ce n'est pas un oubli : un export tronqué par une panne effacerait sinon un trimestre entier, et personne ne s'en apercevrait avant lundi matin.
Pour annuler, dites-le explicitement, de l'une des deux façons :
PUT /api/institutions/:institutionId/lessons → une entrée avec "cancelled": true
DELETE /api/institutions/:institutionId/lessons/by-ref/ENT-12345
Annuler deux fois, ou annuler ce qui n'existe pas, est sans effet.
Un cours déjà tenu ne se déplace plus : sa feuille de présence porte l'heure à laquelle les gens sont venus.
Relire l'emploi du temps
GET /api/institutions/:institutionId/lessons?from=2026-10-12T00:00:00Z&to=2026-10-19T00:00:00Z
Il faut la portée schedule:read. La réponse rend, dans lessons, les cours de la période, annulés compris, avec leur état : à venir, en cours, terminé ou annulé.