Wrapper für die API von abgeordnetenwatch.de
Basis-URL für einen API-Aufruf ist:
https://www.abgeordnetenwatch.de/api/v2/(Entität)
Wenn sie mit den richtigen Parametern aufgerufen wird, liefert die API ein JSON zurück, das die gewünschten Daten enthält. Zum Teil sind diese Daten etwas verschachtelt; hier werden sie über jsonlite::flatten() in Dataframes gebügelt, die dann aber unterschiedliche und unterschiedlich viele Spalten haben.
Die Abgeordnetenwatch-Datenbank ist in Objekten organisiert, die "Entitäten" heißen.
Jedes Objekt hat eine eindeutige ID in der Datenbank - und kann Beziehungen zu anderen Entitäten haben (z.B. ist eine Wahlperiode mit einem Parlament und den dort vertretenen Abgeordneten verknüpft; eine Abstimmung mit den beteiligten Abgeordneten und ihrem Abstimmungsverhalten).
Die Objekte sind immer fest einer Wahl bzw. einer Wahlperiode zugeordnet: Beispielsweise ist die ID eines Wahlkreises in der Bundestagswahl 2017 eine andere als die ID desselben Wahlkreises in der BTW2021. (Beispiel Rheingau-Taunus: ID zur BTW2017 - 9188, ID in der Legislaturperiode 2017-2021 - 4302, ID zur BTW2021 - 10235.)
Diese 18 Typen von Entitäten gibt es:
Jeder Typ Entität hat seine eigenen Datenpunkte (also: Spalten in der Rückgabetabelle) - in der Regel kann man nach diesen Werten filtern.
Die API gibt standardmäßig 100 Ergebnisse zurück, wenn man mehr braucht, muss man mit range_end
(max. 1000) mehr Ergebnisse anfordern oder mit range_start
bzw. page
paginieren.
Die Funktion `aw_get_table()
hat eine Paginierung schon eingebaut: wenn mehr als 100 Treffer zurückgegeben werden, holt sie in 100er-Blöcken all diese Treffer ab. (Vorsicht: damit kann man die API ziemlich beschäftigen.)
Funktionen, die häufige Abrufen formalisieren und erleichtern sollen
aw_get_table("elections",parliament=5)
Gibt eine Liste zurück mit Wahlen und Wahlperioden. Die #btw2021 hat die ID 128.
aw_wahl("Bund",2021)
gibt 128 zurück. aw_get_table("constituencies",parliament_period=128)
aw_wahlkreise(aw_wahl("Bund",2021))
indirekt, über referenziertes Objekt politician und Daten da * /candidacies-mandates?parliament_period=128&politician[entity.party.entity.id]=16(https://www.abgeordnetenwatch.de/api/v2)
(Filter über das related_data-Element party) * /politicians?party[entity.id]=1
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.