Documentation ¶
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type AgendaItem ¶
type AgendaItem struct { Common // Rückreferenz auf das Meeting, welches nur dann ausgegeben werden muss, wenn das agendaItem-Objekt einzeln abgerufen wird, d.h. nicht Teil einer internen Ausgabe ist. Meeting URL `json:"meeting"` // Gliederungs-“Nummer” des Tagesordnungspunktes. // Eine beliebige Zeichenkette, wie z. B. “10.”, “10.1”, “C”, “c)” o. ä. Die Reihenfolge wird nicht dadurch, sondern durch die Reihenfolge der TOPs im agendaItem-Attribut von oparl:Meeting festgelegt, sollte allerdings zu dieser identisch sein. Number string `json:"number"` // Die Position des Tagesordnungspunkts in der Sitzung, wenn alle Tagesordnungspunkte von 0 an durchgehend numeriert werden. // Diese Nummer entspricht der Position in Meeting:agendaItem // Neu in OParl 1.1 Order int `json:"order"` // Das Thema des Tagesordnungspunktes. Name string `json:"name"` // Kennzeichnet, ob der Tagesordnungspunkt zur Behandlung in öffentlicher Sitzung vorgesehen ist/war. // Es wird ein Wahrheitswert (true oder false) erwartet. Public bool `json:"public"` // Beratung, die diesem Tagesordnungspunkt zugewiesen ist. Consultation URL `json:"consultation"` // Kategorische Information darüber, welches Ergebnis die Beratung des Tagesordnungspunktes erbracht hat, in der Bedeutung etwa “Unverändert beschlossen” oder “Geändert beschlossen”. Result string `json:"result"` // Falls in diesem Tagesordnungspunkt ein Beschluss gefasst wurde, kann hier ein Text angegeben werden. // Das ist besonders dann in der Praxis relevant, wenn der gefasste Beschluss (z. B. durch Änderungsantrag) von der Beschlussvorlage abweicht. ResolutionText string `json:"resolutionText"` // Falls in diesem Tagesordnungspunkt ein Beschluss gefasst wurde, kann hier eine Datei angegeben werden. // Das ist besonders dann in der Praxis relevant, wenn der gefasste Beschluss (z. B. durch Änderungsantrag) von der Beschlussvorlage abweicht. ResolutionFile *File `json:"resolutionFile"` // Weitere Dateianhänge zum Tagesordnungspunkt. AuxiliaryFile []File `json:"auxiliaryFile"` // Datum und Uhrzeit des Anfangszeitpunkts des Tagesordnungspunktes. // Bei zukünftigen Tagesordnungspunkten ist dies der geplante Zeitpunkt, bei einem stattgefundenen kann es der tatsächliche Startzeitpunkt sein. Start time.Time `json:"start"` // Endzeitpunkt des Tagesordnungspunktes als Datum/Uhrzeit. // Bei zukünftigen Tagesordnungspunkten ist dies der geplante Zeitpunkt, bei einer stattgefundenen kann es der tatsächliche Endzeitpunkt sein. End time.Time `json:"end"` }
type Body ¶
type Body struct { Common // System, zu dem dieses Objekt gehört. System URL `json:"system"` // Dient der Angabe einer Kontakt-E-Mail-Adresse. // Die Adresse soll die Kontaktaufnahme zu einer für die Körperschaft und idealerweise das parlamentarische Informationssystem zuständigen Stelle ermöglichen. ContactEmail string `json:"contactEmail"` // Name oder Bezeichnung der mit contactEmail erreichbaren Stelle. ContactName string `json:"contactName"` // Der achtstellige Amtliche Gemeindeschlüssel. AGS string `json:"ags"` // Der zwölfstellige Regionalschlüssel. RGS string `json:"rgs"` // Dient der Angabe zusätzlicher URLs, die dieselbe Körperschaft repräsentieren // Hier können beispielsweise der entsprechende Eintrag der gemeinsamen Normdatei der Deutschen Nationalbibliothek, der DBPedia oder der Wikipedia angegeben werden. // Body- oder System-Objekte mit anderen OParl-Versionen dürfen nicht Teil der Liste sein. Equivalent []URL `json:"equivalent"` // Kurzer Name der Körperschaft. ShortName string `json:"shortName"` // Der offizielle lange Name der Körperschaft. Name string `json:"name"` // Allgemeine Website der Körperschaft. Website URL `json:"website"` // Zeitpunkt, seit dem die unter license angegebene Lizenz gilt. // Vorsicht bei Änderungen der Lizenz die zu restriktiveren Bedingungen führen! LicenseValidSince time.Time `json:"licenseValidSince"` // Link zur Objektliste mit allen Gruppierungen der Körperschaft. Organization URL `json:"organization"` // Link zur Objektliste mit allen Personen der Körperschaft. Person URL `json:"person"` // Link zur Objektliste mit allen Sitzungen der Körperschaft. Meeting URL `json:"meeting"` // Link zur Objektliste mit allen Drucksachen der Körperschaft. Paper URL `json:"paper"` // Link zur Objektliste mit allen Tagesordnungspunkten der Körperschaft. // Neu in OParl 1.1. AgendaItem URL `json:"agendaItem"` // Link zur Objektliste mit allen Beratungen der Körperschaft. // Neu in OParl 1.1. Consultation URL `json:"consultation"` // Link zur Objektliste mit allen Dateien der Körperschaft. // Neu in OParl 1.1. File URL `json:"file"` // Link zur Objektliste mit allen Ortsangaben der Körperschaft. // Neu in OParl 1.1. LocationList URL `json:"locationList"` // Link zur Objektliste mit allen Mitgliedschaften der Körperschaft. // Neu in OParl 1.1. Membership URL `json:"membership"` // Link zur Objektliste mit allen Legislaturperioden der Körperschaft. // Die externe Objektliste enthält die gleichen Objekte wie legislativeTerm // Neu in OParl 1.1. LegislativeTermList URL `json:"legislativeTermList"` // Objektliste mit den Wahlperioden der Körperschaft. LegislativeTerm []LegislativeTerm `json:"legislativeTerm"` // Ort, an dem die Körperschaft beheimatet ist. Location *Location `json:"location"` // Art der Körperschaft. Classification string `json:"classification"` // Zeitpunkt, ab dem OParl für dieses Body bereitgestellt wurde. // Dies hilft, um die Datenqualität einzuschätzen, denn erst ab der Einrichtung für OParl kann sichergestellt werden, dass sämtliche Werte korrekt in der Original-Quelle vorliegen. OParlSince time.Time `json:"oparlSince` }
Der Objekttyp oparl:Body dient dazu, eine Körperschaft zu repräsentieren. Eine Körperschaft ist in den meisten Fällen eine Gemeinde, eine Stadt oder ein Landkreis. In der Regel sind auf einem OParl-Server Daten von genau einer Körperschaft gespeichert und es wird daher auch nur ein Body-Objekt ausgegeben. Sind auf dem Server jedoch Daten von mehreren Körperschaften gespeichert, muss für jede Körperschaft ein eigenes Body-Objekt ausgegeben werden.
type Common ¶
type Common struct { ID URL `json:"id"` Type string `json:"type"` Created time.Time `json:"created"` Modified time.Time `json:"modified"` Keyword []string `json:"keyword"` Deleted bool `json:"deleted"` // Lizenz, unter der durch diese API abrufbaren Daten stehen, sofern nicht am einzelnen Objekt anders angegeben. License URL `json:"license"` Web URL `json:"web"` }
type Consultation ¶
type Consultation struct { Common // Referenz auf den Tagesordnungspunkt, unter dem die Drucksache beraten wird, welcher nur dann ausgegeben werden muss, wenn das Consultation-Objekt einzeln abgerufen wird, d.h. nicht Teil einer internen Ausgabe ist. AgendaItem URL `json:"agendaItem"` // Referenz auf die Sitzung, in der die Drucksache beraten wird oder wurde, welche nur dann ausgegeben werden muss, wenn das Consultation-Objekt einzeln abgerufen wird, d.h. nicht Teil einer internen Ausgabe ist. Meeting URL `json:"meeting"` // Gremium, in dem die Drucksache beraten wird. Hier kann auch eine mit Liste von Gremien angegeben werden (die verschiedenen oparl:Body und oparl:System angehören können). // Die Liste ist dann geordnet. // Das erste Gremium der Liste ist federführend. Organization []URL `json:"organization"` // Drückt aus, ob bei dieser Beratung ein Beschluss zu der Drucksache gefasst wird oder wurde (true) oder nicht (false). Authoritative bool `json:"authoritative"` // Rolle oder Funktion der Beratung. Zum Beispiel Anhörung, Entscheidung, Kenntnisnahme, Vorberatung usw. Role string `json:"role"` // Referenz auf das Paper, welche nur dann ausgegeben werden muss, wenn das Consultation-Objekt einzeln abgerufen wird, d.h. nicht Teil einer internen Ausgabe ist. Paper URL `json:"paper"` }
type File ¶
type File struct { Common // Ein zur Anzeige für Endnutzer bestimmter Name für dieses Objekt. // Leerzeichen dürfen enthalten sein, Datei-Endungen wie “.pdf” sollten nicht enthalten sein. Name string `json:"name"` // Dateiname, unter dem die Datei in einem Dateisystem gespeichert werden kann. // Beispiel: “einedatei.pdf”. Da der Name den kompletten Unicode-Zeichenumfang nutzen kann, sollten Clients ggfs. selbst dafür sorgen, diesen beim Speichern in ein Dateisystem den lokalen Erfordernissen anzupassen. FileName string `json:"fileName"` // MIME-Type der Datei. MimeType string `json:"mimeType"` // Datum, welches als Startpunkt für Fristen u.ä. verwendet ist. Date string `json:"date"` // Größe der Datei in Bytes. Size int `json:"size"` // Reine Text-Wiedergabe des Dateiinhalts, sofern dieser in Textform wiedergegeben werden kann. Text string `json:"text"` // SHA1-Prüfsumme des Dateiinhalts in Hexadezimal-Schreibweise. // Sollte nicht mehr verwendet werden, da sha1 als unsicher gilt. // Stattdessen sollte sha512checksum verwendet werden. SHA1Checksum string `json:"sha1Checksum"` // SHA512-Prüfsumme des Dateiinhalts in Hexadezimal-Schreibweise. SHA256Checksum string `json:"sha256Checksum"` // URL zum allgemeinen Zugriff auf die Datei. AccessURL URL `json:"accessUrl"` // Externe URL, welche eine zusätzliche Zugriffsmöglichkeit bietet. // Beispiel: YouTube-Video. ExternalServiceURL URL `json:"externalServiceUrl"` // URL zum Download der Datei. DownloadURL URL `json:"downloadUrl"` // Datei, von der das aktuelle Objekt abgeleitet wurde. MasterFile URL `json:"masterFile"` // Dateien, die von dem aktuellen Objekt abgeleitet wurden. DerivativeFile []URL `json:"derivativeFile"` // Lizenz, unter der die Datei angeboten wird. // Wenn diese Eigenschaft nicht verwendet wird, ist der Wert von license beziehungsweise die Lizenz eines übergeordneten Objektes maßgeblich. FileLicense string `json:"fileLicense"` // Rückreferenzen auf Meeting-Objekte. // Wird nur dann ausgegeben, wenn das File-Objekt nicht als eingebettetes Objekt aufgerufen wird. Meeting []URL `json:"meeting"` // Rückreferenzen auf AgendaItem-Objekte. // Wird nur dann ausgegeben, wenn das File-Objekt nicht als eingebettetes Objekt aufgerufen wird. AgendaItem URL `json:"agendaItem"` // Rückreferenzen auf Paper-Objekte. // Wird nur dann ausgegeben, wenn das File-Objekt nicht als eingebettetes Objekt aufgerufen wird. Paper URL `json:"paper"` }
type LegislativeTerm ¶
type LegislativeTerm struct { Common // Rückreferenz auf die Körperschaft, welche nur dann ausgegeben werden muss, wenn das LegislativeTerm-Objekt einzeln abgerufen wird, d.h. nicht Teil einer internen Ausgabe ist. Body URL `json:"body"` // Nutzerfreundliche Bezeichnung der Wahlperiode. Name string `json:"name"` // Der erste Tag der Wahlperiode. StartDate string `json:"startDate"` // Der letzte Tag der Wahlperiode. EndDate string `json:"endDate"` }
type Location ¶
type Location struct { Common Description string `json:"description"` GeoJSON geojson.Feature `json:"geojson"` }
TODO
type Meeting ¶
type Meeting struct { Common // Name der Sitzung. Name string `json:"name"` // Datum und Uhrzeit des Anfangszeitpunkts der Sitzung. // Bei einer zukünftigen Sitzung ist dies der geplante Zeitpunkt, bei einer stattgefundenen kann es der tatsächliche Startzeitpunkt sein. Start time.Time `json:"start"` // Endzeitpunkt der Sitzung als Datum/Uhrzeit. // Bei einer zukünftigen Sitzung ist dies der geplante Zeitpunkt, bei einer stattgefundenen kann es der tatsächliche Endzeitpunkt sein. End time.Time `json:"end"` // Wenn die Sitzung ausfällt, wird cancelled auf true gesetzt. Cancelled bool `json:"cancelled"` // Sitzungsort. Location *Location `json:"location"` // Gruppierungen, denen die Sitzung zugeordnet ist. Im Regelfall wird hier eine Gruppierung verknüpft sein, es kann jedoch auch gemeinsame Sitzungen mehrerer Gruppierungen geben. Das erste Element sollte dann das federführende Gremium sein. Organization []URL `json:"organization"` // Einladungsdokument zur Sitzung. Invitation *File `json:"invitation"` // Ergebnisprotokoll zur Sitzung. // Diese Eigenschaft kann selbstverständlich erst nachdem Stattfinden der Sitzung vorkommen. ResultsProtocol *File `json:"resultsProtocol"` // Wortprotokoll zur Sitzung. // Diese Eigenschaft kann selbstverständlich erst nach dem Stattfinden der Sitzung vorkommen. VerbatimProtocol *File `json:"verbatimProtocol"` // Dateianhang zur Sitzung. // Hiermit sind Dateien gemeint, die üblicherweise mit der Einladung zu einer Sitzung verteilt werden, und die nicht bereits über einzelne Tagesordnungspunkte referenziert sind. AuxiliaryFile []File `json:"auxiliaryFile"` // Tagesordnungspunkte der Sitzung. Die Reihenfolge ist relevant. Es kann Sitzungen ohne TOPs geben. AgendaItem []AgendaItem `json:"agendaItem"` // Aktueller Status der Sitzung. Empfohlen ist die Verwendung von terminiert (geplant), eingeladen (vor der Sitzung bis zur Freigabe des Protokolls) und durchgeführt (nach Freigabe des Protokolls). MeetingState string `json:"meetingState"` }
type Membership ¶
type Membership struct { Common // Rückreferenz auf Person, welches nur dann ausgegeben werden muss, wenn das Membership-Objekt einzeln abgerufen wird, d.h. nicht Teil einer internen Ausgabe ist. Person URL `json:"person"` // Die Gruppierung, in der die Person Mitglied ist oder war. Organization URL `json:"organization"` // Rolle der Person für die Gruppierung. // Kann genutzt werden, um verschiedene Arten von Mitgliedschaften zum Beispiel in Gremien zu unterscheiden. Role string `json:"role"` // Gibt an, ob die Person in der Gruppierung stimmberechtigtes Mitglied ist. VotingRight bool `json:"votingRight"` // Datum, an dem die Mitgliedschaft beginnt. StartDate string `json:"startDate"` // Datum, an dem die Mitgliedschaft endet. EndDate string `json:"endDate,omitempty"` // Die Gruppierung, für die die Person in der unter organization angegebenen Organisation sitzt. // Beispiel: Mitgliedschaft als Vertreter einer Ratsfraktion, einer Gruppierung oder einer externen Organisation. OnBehalfOf URL `json:"onBehalfOf"` }
type Organization ¶
type Organization struct { Common // Körperschaft, zu der diese Gruppierung gehört. Body URL `json:"body"` // Externer OParl Body, der dieser Organisation entspricht. // Diese Eigenschaft ist dafür gedacht auf eventuelle konkretere OParl-Schnittstellen zu verweisen. // Ein Beispiel hierfür wäre eine Stadt, die sowohl ein übergreifendes parlamentarisches Informationssystem, als auch bezirksspezifische Systeme hat. ExternalBody URL `json:"externalBody"` // Offizielle (lange) Form des Namens der Gruppierung. Name string `json:"name"` // Der Name der Gruppierung als Kurzform. ShortName string `json:"shortName"` // Gründungsdatum der Gruppierung. // Kann z. B. das Datum der konstituierenden Sitzung sein. StartDate string `json:"startDate"` // Datum des letzten Tages der Existenz der Gruppierung. EndDate string `json:"endDate"` // Grobe Kategorisierung der Gruppierung. // Mögliche Werte sind “Gremium”, “Partei”, “Fraktion”, “Verwaltungsbereich”, “externes Gremium”, “Institution” und “Sonstiges”. OrganizationType string `json:"organizationType"` // Ort, an dem die Organisation beheimatet ist Location *Location `json:"location"` // Positionen, die für diese Gruppierung vorgesehen sind. Post []string `json:"post"` // URL auf eine externe Objektliste mit den Beratungen dieser Gruppierung. // Invers zur Eigenschaft organization der Klasse oparl:Consultation Consultation URL `json:"consultation"` // URL auf eine externe Objektliste mit den Sitzungen dieser Gruppierung. // Invers zur Eigenschaft organization der Klasse oparl:Meeting Meeting URL `json:"meeting"` // URL einer eventuellen übergeordneten Gruppierung. SubOrganizationOf URL `json:"subOrganizationOf"` // Mitgliedschaften dieser Gruppierung. Membership []URL `json:"membership"` // Die Art der Gruppierung. // In Frage kommen z.B. “Parlament”, “Ausschuss”, “Beirat”, “Projektbeirat”, “Kommission”, “AG”, “Verwaltungsrat”, “Fraktion” oder “Partei”. // Die Angabe sollte möglichst präzise erfolgen. // Außerdem sollten Abkürzungen vermieden werden. Für die höchste demokratische Instanz in der Kommune sollte immer der Begriff “Parlament” verwendet werden, nicht “Rat” oder “Hauptausschuss”. Classification string `json:"classification"` // Allgemeine Website der Gruppierung. Website URL `json:"website"` }
type Paper ¶
type Paper struct { Common // Body URL `json:"body"` // Name string `json:"name"` // Reference string `json:"reference"` // Date string `json:"date"` // PaperType string `json:"paperType"` // RelatedPaper []URL `json:"relatedPaper"` // MainFile *File `json:"mainFile"` // AuxiliaryFile []File `json:"auxiliaryFile"` // Location []Location `json:"location"` // OriginatorPerson []URL `json:"originatorPerson"` // OriginatorOrganization []URL `json:"originatorOrganization"` // Consultation []Consultation `json:"consultation"` // UnderDirectionOf []URL `json:"underDirectionOf"` }
TODO
type Person ¶
type Person struct { Common // Körperschaft, zu der die Person gehört. Body URL `json:"body"` // Der vollständige Name der Person mit akademischem Grad und dem gebräuchlichen Vornamen, wie er zur Anzeige durch den Client genutzt werden kann. Name string `json:"name"` // Familienname bzw. Nachname. FamilyName string `json:"familyName"` // Vorname bzw. Taufname. GivenName string `json:"givenName"` // Akademische Titel Title []string `json:"title"` // Namenszusatz (z.B. jun. oder MdL.) Affix string `json:"affix` // Anrede. FormOfAddress string `json:"formOfAddress"` // Geschlecht. Vorgegebene Werte sind female und male, weitere werden durch die durchgehend klein geschriebene englische Bezeichnung angegeben. // Für den Fall, dass das Geschlecht der Person unbekannt ist, sollte die Eigenschaft nicht ausgegeben werden. Gender string `json:"gender"` // E-Mail-Adressen der Person. Email []string `json:"email"` // Telefonnummern der Person. Phone []string `json:"phone"` // Status []string `json:"status"` // Mitgliedschaften der Person in Gruppierungen, z. B. Gremien und Fraktionen. // Es sollen sowohl aktuelle als auch vergangene Mitgliedschaften angegeben werden. Membership []Membership `json:"membership"` // Referenz der Kontakt-Anschrift der Person. Location URL `json:"location"` // Kontakt-Anschrift der Person. // Wenn diese Eigenschaft ausgegeben wird, dann muss auch die Eigenschaft location ausgegeben werden und auf das gleiche Location-Objekt verweisen. // Dieses Feld sollte die eigentliche Ausgabeform von location in OParl 1.0 werden. vgl. https://github.com/OParl/spec/issues/373. // Neu in OParl 1.1 LocationObject *Location `json:"locationObject"` // Kurzer Informationstext zur Person. Eine Länge von weniger als 300 Zeichen ist empfohlen Life string `json:"life"` // Angabe der Quelle, aus der die Informationen für life stammen. Bei Angabe von life ist diese Eigenschaft empfohlen LifeSource string `json:"lifeSource"` }
type System ¶
type System struct { Common // Die URL der OParl-Spezifikation, die von diesem Server unterstützt wird. // Aktuell kommt hier nur ein Wert in Frage. // Mit zukünftigen OParl-Versionen kommen weitere mögliche URLs hinzu. // Wert: https://schema.oparl.org/1.1/ OparlVersion string `json:"oparlVersion"` // Link zur Objektliste mit allen Körperschaften, die auf dem System existieren. Body URL `json:"body"` // Nutzerfreundlicher Name für das System, mit dessen Hilfe Nutzerinnen und Nutzer das System erkennen und von anderen unterscheiden können. Name string `json:"name"` // E-Mail-Adresse für Anfragen zur OParl-API. // Die Angabe einer E-Mail-Adresse dient sowohl NutzerInnen wie auch Entwicklerinnen von Clients zur Kontaktaufnahme mit dem Betreiber. ContactEmail string `json:"contactEmail"` // Name der Ansprechpartnerin bzw. des Ansprechpartners oder der Abteilung, die über die in contactEmail angegebene Adresse erreicht werden kann. ContactName string `json:"contactName"` // URL der Website des parlamentarischen Informationssystems. Website URL `json:"website"` // URL der Website des Softwareanbieters, von dem die OParl-Server-Software stammt. Vendor URL `json:"vendor"` // URL zu Informationen über die auf dem System genutzte OParl-Server-Software. Product URL `json:"product"` // Dient der Angabe von System-Objekten mit anderen OParl-Versionen. OtherOparlVersions []string `json:"otherOparlVersions"` }
Ein oparl:System-Objekt repräsentiert eine OParl-Schnittstelle für eine bestimmte OParl-Version. Es ist außerdem der Startpunkt für Clients beim Zugriff auf einen Server. Möchte ein Server mehrere zueinander inkompatible OParl-Versionen unterstützen, dann muss der Server für jede Version eine eigenen OParl-Schnittstelle mit einem eigenen System-Objekt ausgeben.