Glossary

A reference for the domain concepts and project-specific terms used throughout govdata-cli. This tool wraps the GovData CKAN Action API (ckan.govdata.de), so the vocabulary is split between the GovData open-data programme, the CKAN software that powers the catalogue (and its quirks, e.g. “package” == “dataset”), and the project’s own client/CLI terms.


The GovData programme

GovData. The central open-data portal for Germany (govdata.de), federating open datasets from the federal government (Bund), the federal states (Länder) and municipalities (Kommunen). It is the German node that feeds the European data.europa.eu portal.

Open data. Data published under an open licence for anyone to use, reuse and redistribute. Everything this tool reaches is open and requires no API key.

CKAN. The open-source data-management/cataloguing software (originally by the Open Knowledge Foundation) that GovData runs on. Its HTTP interface is the Action API, which this client wraps.

DCAT-AP.de. The German application profile of the W3C DCAT (Data Catalog Vocabulary) metadata standard. GovData’s dataset metadata follows it; it is why a dataset’s raw fields are catalogue-specific and exposed here as untyped JSON.


CKAN core objects

Dataset (Package). The primary catalogue unit: a described collection of data on one topic (title, description, publisher, tags, licence, and one or more resources). CKAN historically calls a dataset a “package”, so the API action names use package_* even though the user-facing concept is “dataset”. Exposed as a raw JsonObject (Package). CLI: package, packages, search.

Resource (distribution / Resource). A single distributable file or service endpoint within a dataset — e.g. one CSV, JSON, XLSX or WMS URL. A dataset usually has several. In DCAT terms a resource is a distribution. Identified by its own id. CLI: resource <id>.

Organization (Organization). A data publisher — the body that owns and maintains datasets (e.g. a federal statistics office). Organizations have membership/ownership semantics in CKAN. CLI: organizations, organization.

Group (Group). A thematic grouping / category of datasets (e.g. an open-data theme). Unlike an organization, a group does not own datasets; it classifies them. CLI: groups, group.

Tag. A free keyword attached to a dataset for discovery. Tags can be listed and filtered by substring. CLI: tags [--query <substring>].

Facet. A field CKAN aggregates over a search result to give value counts (e.g. how many hits per organization or res_format). The counts are datasets, not resources: a dataset with five CSV files counts once. Requested via facet.field (the library’s facet_field option) and returned under facets / search_facets in a PackageSearchResult. Only the top facet.limit values come back (50 unless you set it; -1 returns all).


CKAN Action API mechanics

Action API. CKAN’s RPC-style HTTP API, rooted at /api/3/action/. Each endpoint is an action addressed by name, e.g. package_search, package_show, organization_list. This client targets the open, read-only (GET) actions only.

Action name. The [a-z0-9_]+ identifier of an action. The client validates every name against ^[a-z0-9_]+$ (and URL-encodes it) so the generic escape hatch cannot inject extra path segments, a query string or a fragment into the request URL.

CKAN envelope (CkanEnvelope). Every Action API response is wrapped in { help, success, result } (or { help, success, error } when success is false). help is a docstring URL/text, success is the status flag, result is the payload. The client unwraps result for callers and raises an error on success: false.

package_search. The full-text / faceted dataset search action. Returns a PackageSearchResult (count, results, facets, search_facets, sort). CLI: search. Parameters: q, fq / fq_list, rows, start, sort, facet.field.

package_show / package_list. Fetch one dataset by id/name; list dataset names with limit/offset. CLI: package, packages.

organization_show / organization_list, group_show / group_list. Show one / list organizations or groups. The _list actions return bare names by default, or full objects with all_fields. CLI: organization(s), group(s) (--all-fields).

tag_list, resource_show. List tags (optional query substring filter); show one resource by id. CLI: tags, resource.

Generic action (escape hatch). client.action(name, params) / the CLI action <name> [--param key=value …] command call any read action — even those without a typed convenience method — and return the unwrapped result.


Search parameters (Solr)

CKAN search is backed by Apache Solr, so its parameters use Solr syntax.

q (query). The Solr query string, e.g. title:Haushalt or a bare term. CLI positional: search [query]. Solr tokenises the query, so a bare term may match on a sub-token rather than the whole string (e.g. abc12345 can hit a title containing 12345). Scope the field (title:…) or add an --fq filter when you need a precise match instead of a loose keyword.

fq (filter query). A Solr filter constraining results without affecting relevance scoring, e.g. organization:statistisches-bundesamt, groups:tran. CLI: --fq (repeatable; every filter must match). CKAN rejects a repeated fq key, so the client sends one filter as fq and several as fq_list. CKAN puts +capacity:public in front of an fq, so a top-level OR in one filter is not applied: write (organization:open-nrw OR groups:tran), not the bare OR.

rows / start. Page size and zero-based offset for paging through search hits. CLI: --rows, --start. GovData’s Solr caps rows at 1000 per request, so a larger value yields at most 1000 results (with count still reporting the true total); page past the first 1000 with start. (The *_list actions instead use limit / offset.)

sort. A Solr sort expression, e.g. metadata_modified desc. CLI: --sort.

facet.field. The fields to compute facet counts over, as a JSON list such as ["res_format"] (see Facet). The library option is facet_field; CKAN itself rejects a facet_field parameter.

res_format. A common facet/filter value: the format of a resource (CSV, JSON, WMS, …). Used inside an fq, not a dedicated flag. The same format appears as a bare string and as an EU file-type URI (http://publications.europa.eu/resource/authority/file-type/CSV), so filter on both: res_format:("CSV" OR "http://publications.europa.eu/resource/authority/file-type/CSV").

metadata_modified / metadata_created. Timestamp fields on a dataset; the former is the usual sort key for “newest first”.


Identifiers & pagination

id / name (slug). Datasets, organizations and groups can be addressed by either their CKAN id (UUID) or their human-readable name (URL slug). The *_show actions accept either. Resources are addressed by id only.

limit / offset (ListParams). Pagination for the *_list actions: page size and number of records to skip. (Distinct from search’s rows / start.)

all_fields. On organization_list / group_list, return full objects instead of just names. CLI: --all-fields.


Library & internals. Terms for the TypeScript client and its internals — GovDataClient, the request engine, transport, retry/backoff, error types, query builder — now live in DEVELOPING.md.

View the source on GitHub →