Glossary
GENESIS-Online concepts and the vocabulary this CLI exposes. GENESIS is a multidimensional statistics database: statistics are made of cubes, which are sliced into tables, described by variables and their values.
Objects
| Term | GENESIS | Meaning |
|---|---|---|
| Statistic (Statistik) | statistic |
A whole statistical product, keyed by a 5-digit EVAS code (e.g. 12411, “Fortschreibung des Bevölkerungsstandes”). Contains cubes. |
| Table (Tabelle) | table |
A ready-made 2-D view, keyed like 12411-0001. The main thing you fetch. |
| Cube (Datenquader) | cube |
The raw multidimensional data behind tables, keyed like 12411BJ001. |
| Time series (Zeitreihe) | timeseries |
A cube reduced to a single value over time. |
| Variable (Merkmal) | variable |
A dimension/attribute (e.g. DLAND = Bundesland, NAT = nationality). |
| Value (Ausprägung) | value |
A concrete value of a variable (e.g. a specific Bundesland). |
| Result (Ergebnistabelle) | result |
A table produced by an async job, saved in your user area. |
Codes & selection
- EVAS code — the numeric object key.
12(subject area) →12411(statistic) →12411-0001(table) /12411BJ001(cube). selection— a code filter forcataloguebrowsing; supports a*wildcard, e.g.124*matches all objects whose code starts124.name— the exact object code passed tometadata/data.classifyingvariable{n}/classifyingkey{n}— restrict adatarequest to specific variable values (the “key” selects values,*wildcard allowed).regionalvariable/regionalkey— the regional dimension and the region(s) to include (e.g. a Land or Kreis code).
The response envelope
Every non-helloworld response is wrapped:
| Field | Meaning |
|---|---|
Ident |
{ Service, Method } — which endpoint answered. |
Status |
{ Code, Content, Type } — the logical outcome (see below). |
Parameter |
echo of your request (credentials masked as ********). |
Copyright |
the attribution string to cite — see DATA_LICENSE.md. |
List |
catalogue results (a homogeneous array). |
Object |
data/metadata payload (opaque; for data/table, a CSV string in Object.Content). |
helloworld/whoami and helloworld/logincheck do not use this envelope.
logincheck answers HTTP 200 whether or not the credentials are right: its Status is a
text — an error text (“Ein Fehler ist aufgetreten …”) means they were rejected, and the
CLI exits 1 with the credentials hint — and Username names the account (the token
sent may come back echoed there). Only an explicit success or failure text decides; any
other answer is reported as unconfirmed (exit 1).
Status.Code values
HTTP is almost always 200; the real outcome is Status.Code. Auth failures
are the exception: they come back as a flat { Code, Content, Type } body (no
envelope) on HTTP 401 or 404:
| Code | Type | Meaning | This CLI |
|---|---|---|---|
0 |
Information | success | returns data |
22 |
Warnung | success, a parameter was auto-corrected | returns data (warning visible in Status.Content) |
50 |
Information | no newer data (for --stand) |
returns data |
104 |
Information | no object matched (catalogue, metadata, data; a find without hits answers 0 with every list null instead) |
returns an empty result (exit 0); a data <kind>file download fails instead (exit 4, no file written) |
90 |
Fehler | requested object not found | error, exit 4 |
98 |
Information | result too large for a direct fetch | error with narrowing guidance, exit 1 |
15 |
ERROR | not authorized: credentials missing or not recognized (flat body on HTTP 401) | error GENESIS status 15 (ERROR) / HTTP 401 with the GENESIS text, plus a credentials hint, exit 1 |
2 |
ERROR | wrong username/password or token (flat body on HTTP 404; the same flat body on an HTTP 200 counts too) | error GENESIS status 2 (ERROR) / HTTP 404 (or / HTTP 200) with the GENESIS text, plus a credentials hint, exit 1 (a 404 carrying a GENESIS code is not “not found”) |
| any | Fehler / Error | general error | error, exit 1 |
Value-status placeholders
In a data/table CSV, a cell may be a status symbol instead of a number:
- (nothing to report / genuine zero context), . (unknown/secret), ...
(not yet available), / (no figure: value not reliable enough), x (no
meaningful statement possible), () (limited informative value), p
(provisional), r (revised), s (estimated).
Auth terms
- API token — a 32-char personal token generated in the GENESIS web UI
(“Webservice/API”). Placed in the
usernamerequest field with no password. Generating a new token invalidates the old one. - Username / password — the account login (username ~10 chars, may be an email; password 10–50 chars). Required together: one without the other is refused before any request, by the CLI and the library alike. A token and a username/password are two logins: both at once (from flags, variables or a mix) are refused too, rather than one silently winning.
- Account-only endpoints —
catalogue,metadata,dataandlogincheckneed credentials; without them GENESIS answers 401 + Code15, so the CLI and the library refuse the call before any request. - Guest access — running without an account, as GENESIS’s guest user
GAST:findonly (andhello, which never sends credentials). It must be asked for explicitly —--guestin the CLI,guest: truein the library; with neither credentials nor that, the CLI and the library refuse to run instead of falling back to guest, and--guestnext to a credential is refused too.
See DEVELOPING.md for how credentials are passed on the wire and why redirects are not followed.
Log records
Log record. Every diagnostic line the CLI writes to stderr: a timestamp, a level
(ERROR, WARN, INFO) and a topic destatis.<area>, as text (log4j style) or with
--log-format jsonl as one JSON object per line. The areas: cli (usage errors,
commander’s messages, unexpected errors, the warning about a credential given as a flag),
api (GENESIS’s answers: an error status, the credentials hint, and a malformed answer —
bad JSON, the wrong shape, an empty body, a login check that confirms nothing), http
(the connection, the cleartext warning, and one WARN per retry before it waits), config (the credentials file) and output
(the -o file, stdout failures). A record is always one line; control characters in it
are escaped.