Blog Detail

OParl 1.1

25 Jun 18
Konstantin Schütze
No Comments

Zwei Jahre nach OParl 1.0 veröffentlichen wir nun OParl 1.1! In Version 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.

Die technischen Änderungen im Detail

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 aufgrund 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. https://github.com/OParl/spec/issues/373)

Leave A Comment