Usage
Full command reference for fragdenstaat. Run fragdenstaat <group> <sub> --help
for the authoritative, always-current flag list. Global options
(--base-url, --timeout, --user-agent, --max-retries, --max-response-bytes,
--compact, -o/--output) work on every command.
Conventions: list/search accept --offset <n> and --limit <1..50>; where the
server supports it they also accept --csv (streams the flattened CSV export).
IDs are numeric — resolve names via autocomplete/list --q first
(category autocomplete returns names only; use category list --q for category ids).
request — FOI requests
fragdenstaat request list [filters]
fragdenstaat request get <id>
fragdenstaat request search --q "<text>" [--jurisdiction <slug>] [--category <slug>]
fragdenstaat request tags <query> # autocomplete tag names
request list filters:
| Flag | Meaning |
|---|---|
--status <s> |
lifecycle status (see GLOSSARY) |
--resolution <r> |
outcome — only meaningful with --status resolved |
--jurisdiction <id> · --law <id> |
by jurisdiction / FOI law id |
--categories <id> |
topic category id (plural flag) |
--classification <id> |
public-body classification id |
--campaign <id> · --public-body <id> |
by campaign / addressed body id |
--tags <tag> |
tag name (e.g. lobbyismus) |
--reference <prefix> · --slug <slug> |
by reference prefix / exact slug |
--is-foi [bool] · --checked [bool] · --has-same [bool] |
boolean filters |
--costs-min <eur> · --costs-max <eur> |
charged-cost range |
--created-after <YYYY-MM-DD> · --created-before <YYYY-MM-DD> |
date range |
--project <id> · --user <id> · --follower <id> |
by project / user / follower |
--status: awaiting_user_confirmation, publicbody_needed,
awaiting_publicbody_confirmation, awaiting_response, awaiting_classification,
asleep, resolved. --resolution: successful, partially_successful,
not_held, refused, user_withdrew, user_withdrew_costs.
publicbody — authorities (Behörden)
fragdenstaat publicbody list [--q <text>] [--jurisdiction <id>] [--classification <id>] \
[--classification-id <id>] [--category <id>] [--regions <id>] [--slug <slug>] [--lnglat <lng,lat>]
fragdenstaat publicbody get <id>
fragdenstaat publicbody search --q "<text>" [--jurisdiction <id>] [--classification <id>] [--category <id>]
fragdenstaat publicbody autocomplete <query>
Note: singular --category here (--categories is rejected as an unknown option).
--classification matches a subtree; --classification-id is exact. --lnglat is
lng,lat (longitude first) and keeps only bodies whose regions contain that point, in
name order rather than by distance, and a body appears once per region that contains
the point (Stadt Leipzig twice for a Leipzig point).
law — FOI laws
fragdenstaat law list [--q <text>] [--jurisdiction <id>] [--mediator <id>] [--meta [bool]] [--id <id>]
fragdenstaat law get <id>
fragdenstaat law autocomplete <query>
--meta selects meta-laws (combinations). get includes legal_text,
max_response_time(+unit) and requires_signature.
jurisdiction / campaign — list + get
fragdenstaat jurisdiction list # Bund + 16 Länder + EU (18)
fragdenstaat jurisdiction get <id>
fragdenstaat campaign list # ~18 campaigns (no filters)
fragdenstaat campaign get <id>
category / classification — taxonomy trees
fragdenstaat category list [--q <text>] [--name <name>] [--parent <id>] [--ancestor <id>] [--depth <n>] [--is-topic [bool]]
fragdenstaat category get <id>
fragdenstaat category autocomplete <query>
fragdenstaat classification list [--q <text>] [--name <name>] [--parent <id>] [--ancestor <id>] [--depth <n>]
fragdenstaat classification get <id>
--parent = direct children; --ancestor = all descendants.
georegion — geographic regions
fragdenstaat georegion list [--q <text>] [--name <name>] [--kind <k>] [--kind-detail <text>] \
[--level <n>] [--region-identifier <id>] [--slug <slug>] [--ancestor <id>] [--id <id>] [--latlng <lat,lng>]
fragdenstaat georegion get <id> # includes geometry (can be large)
fragdenstaat georegion autocomplete <query>
--kind: country, state, admin_district, district, admin_cooperation,
municipality, borough, zipcode, admin_court_jurisdiction. --latlng is
lat,lng (point-in-region lookup).
message — correspondence
fragdenstaat message list [--request <id>] [--kind <k>] [--is-response [bool]]
fragdenstaat message get <id>
--kind: email, post, fax, upload, phone, visit, import. Scope to one
request with --request <id>.
document — published documents
fragdenstaat document list [--publicbody <id>] [--foirequest <id>] [--collection <id>] \
[--portal <id>] [--directory <id>] [--tag <id>] [--ids <id,id,…>] \
[--created-after <YYYY-MM-DD>] [--created-before <YYYY-MM-DD>]
fragdenstaat document get <id> # includes pages[]
--tag needs a numeric tag id. --ids is a comma-separated document-id list.
Examples
# Success rate of resolved requests to the federal government
fragdenstaat --compact request list --jurisdiction 1 --status resolved --resolution successful --limit 1 \
| grep -o '"total_count":[0-9]*'
# All Grundschule public bodies in a jurisdiction, to CSV
fragdenstaat classification list --q "Grundschule"
fragdenstaat publicbody list --classification 642 --jurisdiction 14 --csv -o schools.csv
# Full message thread of a request
fragdenstaat request get 374948 | jq '.messages[] | {kind, is_response, subject}'