OneRoster (1.2 en geavanceerde groepen)

OneRoster is een internationale standaard voor de uitwisseling van schooladministraties (uitgegeven door 1EdTech): hij beschrijft, in een gemeenschappelijk formaat, de instellingen, de schooljaren, de cursussen, de klassen, de inschrijvingen en de gebruikers van een school. Hij dient om een SIS, een ELO of een LMS aan een andere toepassing te koppelen zonder overtypen en zonder propriëtair formaat.

Deze pagina is bedoeld voor de ICT-afdeling van de instelling. Ze beschrijft wat Omniscol in OneRoster beschikbaar stelt en inleest, de verwachte authenticatie en het werkelijke bereik van elke uitwisselingsrichting.

Ondersteunde versies

Omniscol ondersteunt OneRoster 1.2 Rostering — de basislaag (Org, AcademicSession, Course, Class, Enrollment, User, Demographics) — en daarnaast de laag OR-Groups (Advanced Groups Service), de additieve groepenstandaard die drie entiteiten (Group, GroupMembership, GroupAssociation) boven op 1.2 toevoegt.

De laag OR-Groups is een standaard die nog wordt gepubliceerd. Ze is strikt additief op 1.2: een Group verwijst alleen naar de Class / User / Org / AcademicSession van 1.2, alleen-lezen. Versie 1.3 van OneRoster is aangekondigd om van Class een specialisatie van Group te maken — een richting waarmee de implementatie van Omniscol nu al convergeert.

Omniscol als aanbieder (Omniscol → ELO / LMS)

Als aanbieder stelt Omniscol de schooladministratie van de instelling alleen-lezen beschikbaar, via een OneRoster-conforme REST-API, zodat een ELO of een LMS die kan uitlezen.

  • De basislaag Rostering 1.2 is bereikbaar onder /ims/oneroster/rostering/v1p2/… (bijvoorbeeld /orgs, /schools, /academicSessions, /courses, /classes, /enrollments, /users, /teachers, /students, /demographics, elk met zijn geneste varianten).
  • De groepenlaag is bereikbaar onder /ims/oneroster/groups/v1p0/… (/groups, /groupMemberships, /groupAssociations en hun geneste varianten).
  • Het bereik is standaard het huidige schooljaar; met een parameter kunt u zich op een ander jaar richten of alle jaren dekken.

De gegevens weerspiegelen de geconsolideerde planning van Omniscol (gepubliceerde roosters). De aanbieder is bewust alleen-lezen: er wordt geen enkele schrijfbewerking (PUT / DELETE) beschikbaar gesteld — een extern systeem stuurt het aanmaken of verwijderen van entiteiten in Omniscol niet aan.

Authenticatie van de aanbieder

De endpoints van de aanbieder zijn beveiligd met OAuth2 in de flow client_credentials (een token van machine tot machine, zonder gebruiker), uitgegeven door de OAuth2-server van Omniscol. Ze zijn niet voorbehouden aan Premium-accounts: de toegang wordt geregeld door de OAuth2-scopes, niet door het abonnement. Elke scope is specifiek voor één dienst, en de toegang tot demografische gegevens is binnen 1.2 afgeschermd:

Endpoints Geaccepteerde scopes
Rostering 1.2 (zonder demografie) https://purl.imsglobal.org/spec/or/v1p2/scope/roster-core.readonly, https://purl.imsglobal.org/spec/or/v1p2/scope/roster.readonly
Rostering 1.2 /demographics https://purl.imsglobal.org/spec/or/v1p2/scope/roster.readonly, https://purl.imsglobal.org/spec/or/v1p2/scope/roster-demographics.readonly
OR-Groups (alle) https://purl.imsglobal.org/spec/or-groups/v1p0/scope/roster-group.readonly

Een OR-Groups-token geeft geen toegang tot de basislaag Rostering, en omgekeerd. Er wordt geen enkele schrijfscope bekendgemaakt. De bevoorrechte scopes worden toegekend door de Omniscol-beheerders op het moment dat de OAuth2-client wordt geregistreerd; een client kan ze zichzelf niet toekennen. Het beheer van OAuth2-clients en van tokens staat beschreven op OAuth2 / OIDC (aanbieder) en Omniscol-API.

Het bereik van de leerlingen wordt gedragen door de groepenlaag

Een structurerende keuze: de lijst van leerlingen in een klas of een groep wordt beschikbaar gesteld via OR-Groups (GroupMembership), niet door de basislaag 1.2 alleen. Een afnemer die alleen Rostering 1.2 leest, krijgt de catalogus (Courses, Classes), de inschrijvingen docent → cursus en de gebruikerslijst, maar niet het lidmaatschap van de leerlingen. Om te weten wie in welke klas of welke groep zit, moet de afnemer de laag OR-Groups implementeren. Deze keuze weerspiegelt het Franse model: een leerling is ingeschreven in een klas of een groep, niet vak per vak.

De aanbieder wordt via REST ontsloten. Het formaat OneRoster-CSV-bundel (zip-archief met één bestand per collectie) wordt daarentegen aan importzijde ondersteund, voor leveranciers die hun schooladministratie per bestand aanleveren in plaats van via een API — zie het gedeelte over de afnemer hieronder.

Omniscol als afnemer (SIS → Omniscol)

Import van een OneRoster-schooladministratie (SIS → Omniscol): Omniscol kan de schooladministratie van een OneRoster-conform SIS importeren — instelling, jaren, cursussen, klassen, groepen, gebruikers en demografische gegevens — via de REST-API van de leverancier of een CSV-bundel, en die vervolgens in de instelling afstemmen. Deze afnemersconfiguratie maakt deel uit van de synchronisatie met externe systemen, beschikbaar op Premium-accounts en per project afgestemd met het Omniscol-team.

Als afnemer importeert Omniscol de schooladministratie van een OneRoster-conform SIS en stemt die af in de instelling. Deze afnemersconfiguratie maakt deel uit van de synchronisatie met externe systemen: ze is beschikbaar op Premium-accounts en wordt per project afgestemd met het Omniscol-team (zie Synchronisatie met externe systemen).

  • Transport — ofwel de REST-API van de leverancier (het basisadres wordt geconfigureerd, de standaardpaginering van OneRoster wordt gevolgd), met OAuth2-authenticatie in de flow client_credentials tegen de server van de leverancier; ofwel een CSV-bundel (zip-archief).
  • Profiel — een configuratieprofiel geeft aan welk bereik er gelezen wordt: alleen de basislaag 1.2, de groepenlaag, of de Franse mapping voor het basis- en voortgezet onderwijs. Een zuivere 1.2-leverancier, zonder groependienst, laat zich netjes importeren.
  • Gecontroleerde toepassing — de import volgt hetzelfde principe als de andere connectoren: Omniscol haalt de gegevens op en stemt ze vervolgens af, en een beheerder valideert de toepassing op de instelling. Het externe systeem schrijft nooit rechtstreeks in Omniscol.
  • Idempotente herimports — de koppelingen van externe identificaties blijven bewaard, zodat een herimport geen dubbele records aanmaakt, zelfs niet wanneer de leverancier een label hernoemt.

Frans profiel (basis- en voortgezet onderwijs)

Het Franse profiel voor het basis- en voortgezet onderwijs koppelt de Franse begrippen aan het OneRoster-model: een divisie (de klas in de eigenlijke zin) wordt een Group van het primaire organisatorische type; een groep wordt een Group voor de onderwijsuitvoering; een groep van groepen een overkoepelende Group; de klasverdelingen en groepsuitlijningen worden groepsassociaties; een toewijzing van een docent aan een cursus wordt een inschrijving van de docent. Identificaties zoals het INE of de personeelsidentificatie worden meegedragen in de userIds van de gebruiker.

Identificaties en vertrouwelijkheid

Elke beschikbaar gestelde entiteit draagt een stabiele identificatie, de sourcedId.

  • De structurele identificaties (instelling, jaar, cursus, klas, groep) zijn stabiel en onveranderlijk van de ene export naar de andere: een afnemer kan erop vertrouwen om gegevens in de tijd te correleren.
  • De identificatie van de gebruiker is geanonimiseerd: Omniscol brengt nooit zijn eigen naamsgebonden identificatie naar buiten. Het token dat naar buiten gaat, is afgeleid via een eenwegfunctie (HMAC) die eigen is aan het account; de inschrijvingen en lidmaatschappen hergebruiken dat token zonder ooit de oorspronkelijke identificatie prijs te geven.

Status

  • Aanbieder — beschikbaar en te demonstreren zonder externe partner (de export volstaat op zichzelf). Rostering 1.2 en de laag OR-Groups worden alleen-lezen beschikbaar gesteld, met OAuth2-authenticatie.
  • Afnemer — de importconfiguratie maakt deel uit van de Premium-synchronisatie. De ingebruikname van een live synchronisatie met een SIS hangt af van de leverancier en, in voorkomend geval, van de planningen van het ministerie: ze wordt op aanvraag afgestemd, connector per connector. Het gaat niet om een onmiddellijke kant-en-klare synchronisatie.

Zie ook