In OParl 1.1 setzen wir die seit der Veröffentlichung von OParl 1.0 gewonnen
Erfahrungen um. OParl 1.1 ist dabei im Sinne von semver kompatibel zu OParl 1.0.
Das bedeutet, dass ein für OParl 1.0 entwickelter Client auch die Ausgabe von
OParl 1.1 versteht. Dadurch wird der Migrationsaufwand von OParl 1.0 zu
OParl 1.1 gering gehalten.
OParl 1.0 wurde in der Annahme geschrieben, dass für sechs Objekttypen (LegislativeTerm, Membership, AgendaItem, Consultation, File, Location) keine verlässlichen Werte für created
und modified
existieren. Aus diesem Grund hatten wir uns für das Design mit eingebetteten Objekten entschieden. Da sich nun jedoch herausgestellt hat, dass created
und modified
bei allen Objekten existieren, können auch für alle Objekte Listen angeboten werden. Das bringt bei große Vereinfachungen für Clients bei der Synchronisation.
Konkret sind created
und modified
in OParl 1.1 für alle Objekte zwingend und es gibt sechs neue externe Objektlisten in Body: AgendaItem, Consultation, File, LegislativeTerm, Location und Membership. Das Attribut für die Location-Liste in Body heißt dabei locationList
, um eine Kollision mit dem bereits existierenden location
zu vermeiden. Das gleiche gilt auch für legislativeTermList
.
Es entsteht dabei Redundanz zwischen den bereits existierenden Objektlisten mit eingebetteten Objekten (Body, Paper, Meeting, Person, Organization) und den neuen externen Listen, die die bisher eingebetteten Objekte extern ausgeben. Diese Redundanz lässt sich auf Grund der Semver-Regeln in Version 1.1 nicht vermeiden und kann erst in einer Version 2 beseitigt werden. Um diese Redundanz zumindest bei der Aktualisierung eines lokalen Datenbestands vermeiden zu können wurde die URL-Parameter omit_internal
eingeführt.
Weitere Änderungen
- Namespace-URLs werden durchgängig im Camel Case geschrieben
- Externe Objektlisten können ein
web
Attribut angeben - Jedes Objekt des Schemas hat seine eigene Datei bekommen
- Definition eines Fehlerobjektes für die Ausnahmebehandlung
- sha1 veraltet und sha512 als Ersatz hinzugefügt. (s. https://shattered.io)
- Die Rückreferenz von Location auf Person wird zusätzlich auch noch
eingebettet ausgeben (s. #373)