Glossary

Domain and technical terms you meet when using bundesrat. For the option reference see the README and the full cookbook in Usage.md.

The Bundesrat

Bundesrat. One of Germany’s federal legislative bodies — the chamber through which the sixteen Länder (federal states) take part in legislation and administration at the federal level. It is not a second parliament of elected MPs: its members are members of the Länder governments.

Land / Länder. A German federal state (plural Länder). Each Land sends members to the Bundesrat and holds a bloc of votes weighted by population (3–6 each).

Member (members). A member of a Land government who sits in the Bundesrat. Each record carries honorificTitle, firstname, name, party, state (the Land), a url, and status flags: mitglied (one of the 69 members, as many per Land as it has votes), brmitglied (a member or a deputy — stellvertretendes Mitglied; 181 of 193 records on 2026-09-15), bv (Bevollmächtigter — plenipotentiary), designiert (designated, not yet in office) — all as "true"/"false" strings. The feed lists members, deputies and plenipotentiaries, so filter on mitglied == "true" to get the 69 members.

Plenary sittings & agenda

Plenarsitzung / session (session). A plenary sitting of the Bundesrat. It meets roughly every 3–4 weeks (~10 times a year). session returns the current/next sitting with its agenda.

Tagesordnung / agenda. The list of items a sitting will decide. session returns it as tops.

TOP (Tagesordnungspunkt) — top / tops. A single agenda item. Each carries toptitle (e.g. “TOP 67”), topheader (a short factual label), topdrucksache (the associated document number) and linkedtop (a cross-reference). Empty fields are dropped, so linkedtop appears only when set. The feed lists the TOPs out of numerical order. The feed’s HTML description (topdetail) is editorial content and is not surfaced.

Drucksache (topdrucksache). A numbered printed paper, e.g. “Drucksache 371/26” — the document a TOP is about (a bill, regulation, motion, …). Bundesrat Drucksachen are amtliche Werke (public-domain official works); the numbers let you look the full document up on bundesrat.de or in DIP.

Termine / appointments (appointments). Committee dates and other scheduled events (e.g. Umfragen — written committee polls under § 43 GO BR). Surfaced as factual calendar items (title, startdate, and date/stopdate when the feed sets them). startdate is German-format, e.g. “25.09.2026 09:30”; a cancelled meeting stays listed with „entfällt” in its title.

Concepts the feeds carry but this CLI does not surface

The Bundesrat app feeds also expose the items below. Their payload is copyright-protected editorial text or images, not open data, so this CLI provides no command for them and strips their editorial fields where they overlap a surfaced feed (see DATA_LICENSE.md):

Data & format

Feed. Each command maps to one XML feed served by www.bundesrat.de — the data behind the official Bundesrat iOS app. There is no JSON API; this CLI parses the XML into JSON for you and projects each result down to its openly-licensed factual fields.

?view=renderXml. The render parameter that makes the CMS return the XML feed rather than the website’s HTML page. The CLI adds it automatically; a “received an HTML page” error means it was lost or the feed moved (see DEVELOPING.md).

Editorial fields (not surfaced). The raw feeds embed HTML fragments in CDATA — detail, abstract, topdetail, the member biography detail (role / biography / address) — plus image paths. These are copyright-protected editorial content, so the CLI strips them; only factual fields reach the output.

amtliches Werk (§ 5 UrhG). An “official work” — laws, regulations, and here the Bundesrat’s Drucksachen/Plenarprotokolle — which carries no copyright, so it may be reused freely if left unaltered (§ 62) and with a source citation (§ 63). The rest of the website content is copyright-protected. See DATA_LICENSE.md.

CLI / technical

Exit codes. 0 success · 2 usage error · 4 not found · 6 network failure · 1 other (incl. a non-XML/HTML-shell response). See Usage.md.

--state vs --party. --state matches a Land exactly (case-insensitive); --party matches a substring of the party name (case-insensitive), so grüne finds “BÜNDNIS 90/DIE GRÜNEN”. Both are applied client-side after fetching the full members list.

View the source on GitHub →