Die API der Unterrichtsstunden — Unterrichtsstunden für ein beliebiges Datum abrufen
PremiumWenn etwas außerhalb von Omniscol wissen muss, was passiert und wann, ruft man diesen Endpunkt auf:
GET /api/schedules/lessons/{datesrange}
Er gibt die datierten Unterrichtsstunden Ihrer Stundenpläne zurück — jede Unterrichtsstunde auf ihrem tatsächlichen Datum platziert — für die angefragten Daten und Entitäten. Fast jede Integration (ein Intranet, ein ETL, ein Partnerwerkzeug) geht davon aus. Diese Seite geht die Hebel durch, die ihn zu einem einzigen Endpunkt für zahlreiche Verwendungen machen.
Unterrichtsstunden vs. Strukturen
Zwei Endpunkte, zwei Rollen:
GET /api/schedules/lessons/{datesrange}— die Unterrichtsstunden: jede Unterrichtsstunde auf einem tatsächlichen Datum platziert, mit ihrem Fach, ihren Lehrkräften, ihrem Raum, ihrer Gruppe und ihrer Dauer. Das liest man, um zu wissen, wer wo und wann ist.GET /api/schedules/— die Strukturen: die veröffentlichten Stundenpläne selbst (Klassen, Fächer, Standorte, das Raster). Zu lesen, wenn man das zugrunde liegende Modell statt der datierten Unterrichtsstunden braucht.
Man kann die Strukturen auch mit with_timetables=true in den Aufruf der
Unterrichtsstunden einklappen (siehe weiter unten): Eine einzige Anfrage
gibt dann beide zurück.
Die Daten wählen
{datesrange} wird in YYYYMMDD geschrieben und ist bewusst flexibel
gehalten:
| Form | Bedeutung |
|---|---|
20261005 |
Ein bestimmter Tag |
20261005-20261011 |
Ein geschlossenes Intervall (eine Woche) |
20260901- / -20260630 |
Auf einer Seite offen |
20261005,20261012,20261019 |
Verstreute Daten — drei bestimmte Montage |
20261005-20261011,20261102-20261108 |
Mehrere Intervalle auf einmal |
`` oder - |
Alle Daten |
Die verstreute Form (durch Kommas getrennt) ist das, was aus einer Frage wie „diese drei Montage“ einen einzigen Aufruf macht.
Das anvisieren, was Sie brauchen
Ein filter schränkt die Anfrage auf die Entitäten ein, die zählen —
dieselbe Filtergrammatik wie die Verfügbarkeits-Endpunkte
(Erweiterte Abfragen):
- eine einfache Liste von Kennungen —
{"classes":["3a","3b"]}, - ein Joker —
{"teachers":"*"}, - eine einfache Feldübereinstimmung —
{"classrooms":[{"site":"nord"}]}, - oder ein strukturiertes
$where—{"classrooms":[{"$where":{"capacity":{"$gte":30}}}]}.
Das Ergebnis wird nach Filtertyp, dann nach Entitätskennung gruppiert
— zum Beispiel schedules.classes.3a.courses[],
schedules.teachers.j-doe.courses[].
Zwei weitere Einstellungen rahmen die Extraktion ein, und eine letzte deckelt sie:
timetables_restrict/timetables_exclude— Stundenplan-Kennungen begrenzen oder ausschließen (Zeichenkette, CSV oder Array).limit— die Anzahl der pro Filter zurückgegebenen Unterrichtsstunden deckeln.
Wie eine Unterrichtsstunde aussieht
Jeder Eintrag von courses[] ist eine platzierte Unterrichtsstunde:
{
"position": { "day": "2026-10-05", "period": 0, "start": "8:15", "end": "9:10" },
"duration": 2,
"subject": "maths",
"teachers": ["j-doe"],
"classroom": "nord:B12",
"class": "3a",
"schedid": "3"
}
position.dayist das Datum der Unterrichtsstunde.position.periodist der Index der Unterrichtsstunde im Raster des Stundenplans — vorhanden für die auf dem Raster platzierten Unterrichtsstunden. Eine rasterfremde Unterrichtsstunde (mit ihren eigenen explizitenstart/end, außerhalb der regulären Zeitfenster) trägt stattdessenstart/end, ohneperiod.position.start/position.end(Uhrzeiten) begleiten immer eine rasterfremde Unterrichtsstunde und kommen zu den Rasterunterrichtsstunden hinzu, wenn Siewith_hours=trueübergeben (vorberechnete Uhrzeiten). Zu aktivieren, wenn Ihr Zielsystem die Uhrzeiten statt des Rasterindex braucht.
Abwesenheiten, Annullierungen und Vertretungen
Standardmäßig konsolidiert der Endpunkt die Abwesenheiten: Eine abwesende Lehrkraft wird aus der Unterrichtsstunde entfernt, und eine Unterrichtsstunde ohne verbleibende Lehrkraft gilt als annulliert und wird verworfen. Mehrere Indikatoren ändern dies:
without_absences— die Abwesenheiten vollständig ignorieren; das rohe geplante Raster zurückgeben.with_absences— die rohen Abwesenheiten des Zeitraums neben den Unterrichtsstunden hinzufügen.with_cancelcourses— die annullierten Unterrichtsstunden (alle Lehrkräfte abwesend) behalten, statt sie zu verwerfen.with_studentcancelcourses— nur die durch die Abwesenheit eines Schülers annullierten Unterrichtsstunden behalten.with_removedcourses— die entfernten Unterrichtsstunden zurückgeben (exklusiv mitwith_cancelcourses).without_teacher_consolidation— die abwesenden Lehrkräfte in derteachers-Liste jeder Unterrichtsstunde behalten, statt sie zu entfernen.without_holidays— die Ferien nicht in den Bereich einfügen.
Wenn eine Vertretung für eine Abwesenheit bestimmt wurde, ersetzt sie
standardmäßig einfach die abwesende Lehrkraft in der teachers-Liste
der Unterrichtsstunde — die Substitution ist transparent, ohne
zusätzliches Feld. Übergeben Sie with_cancelcourses oder
without_teacher_consolidation, und die Unterrichtsstunde trägt
zusätzlich einen substitutes-Block (die Kennung der Vertretung, den
Abwesenheitsgrund und die Abwesenheit, die sie erzwungen hat), um in
derselben Nutzlast zu sehen, wer ersetzt wurde und warum.
Strukturen und Verzeichnisse
Hängen Sie die nützlichen Referenzdaten im selben Aufruf an:
with_timetables=true— die rohen Strukturen der Stundenpläne, die zur Berechnung der Unterrichtsstunden gedient haben (Klassen, Fächer, Raster, nach Kennung). Zu aktivieren, um die Kennungen aufzulösen; deaktiviert zu lassen für eine kompakte Antwort.with_entities=true— leichte Namen/Codes (und Personennamenfelder) der Entitäten des Ergebnisses.with_teachers/with_all_teachers— die auf den Unterrichtsstunden verwendeten Lehrkräfte oder alle Lehrkräfte des Stundenplans und des Verzeichnisses.with_students— die Schüler, mit ihren Platzierungen nach Datum.with_events=true— die rasterfremden Ereignisse (Konferenzen, Elternsprechtage …) im selben Bereich.
Ein nächtlicher ETL-Abzug
Eine Woche Unterrichtsstunden für alle Klassen, mit den Uhrzeiten, abrufen und in Ihr Informationssystem laden:
curl -G "https://votre-etablissement.omniscol.com/api/schedules/lessons/20261005-20261011" \
-H "Authorization: Bearer $OMNISCOL_TOKEN" \
--data-urlencode 'filter={"classes":"*"}' \
--data-urlencode "with_hours=true"
Die Antwort gruppiert die Unterrichtsstunden unter
schedules.classes.<id>.courses[]. Die Abwesenheiten sind bereits
konsolidiert: Was Sie laden, spiegelt den tatsächlichen und aktuellen
Stundenplan wider — fügen Sie with_absences=true hinzu, wenn Sie auch
den Grund einer Änderung aufzeichnen möchten.
Nach Omniscol pushen
Die Integration funktioniert auch in die andere Richtung — um Omniscol an einer externen Quelle der Wahrheit ausgerichtet zu halten. Diese Endpunkte existieren ausschließlich für diese externe Synchronisierung; die Omniscol-Oberfläche ruft sie niemals selbst auf:
POST /api/external/classes(os_external_classes_post) — bestehende Klassen aktualisieren (Name, Standort, Niveau, Raum, Stärke) aus einer nach Klassenkennung indizierten Nutzlast. Er aktualisiert die bekannten Klassen; er erstellt keine neuen. Setzen Sie ein Feld aufnull, um es zu löschen (den Klassennamen ausgenommen — eine Klasse behält ihren Namen).POST /api/external/teachers(os_external_teachers_post) — Lehrkräfte nach Kennung einfügen oder aktualisieren, sowohl in den Stundenplänen als auch im Verzeichnis (wobei bei Bedarf der Benutzer mit der Rolle Lehrkraft und einem automatisch generierten Login erstellt wird). DieDELETE-Varianten entfernen eine Klasse oder eine Lehrkraft.POST /api/admin/subjects/custom(os_admin_subjects-custom_post) — einen Katalog benutzerdefinierter Fächer laden. Der Körper ist{ "subjects": [ … ], "replace": false, "nodoubles": true }: standardmäßig inkrementell,replace: truefür eine vollständige Aktualisierung,nodoubles: true, um die bestehenden Fächer nach externer Kennung, Code oder Name abzugleichen. Es ist der Endpunkt für einen nächtlichen Push von Fächern.
Es gibt auch einen speziellen, nur überschreibbaren Endpunkt,
os_external_classes_get: Omniscol liefert dafür standardmäßig keine
Implementierung, aber wenn ein Partner oder ein Anbieter ihn auf seinen
eigenen Dienst zeigen lässt (über API-Anpassung),
füllt sich der Bildschirm zur Klassenerstellung aus dieser
geschlossenen Klassenliste vor, statt aus dem manuellen Formular.
Ohne Überschreibung tut er einfach nichts.
Für eine SIS-/ERP-Softwarelösung (Aurion, Auriga …) bevorzugen Sie den dedizierten Konnektor gegenüber diesen rohen Endpunkten — siehe Synchronisierung mit externen Systemen.