dbinfrago / dbinfrago/openstation-docs

Breaking change (2027-04-01): NeTEx v2.0 alignment

Open
#2 0 comments 0 reactions 0 assignees View on GitHub
breaking-change
Dominant language
No language data
Stars
32
Forks
0
PR merge metrics
No merged PRs in 30d

Description

With our June 2026 deployment, OpenStation upgrades its delivery to NeTEx v2.0, which was released earlier this year. The upgrade itself is not a breaking change. However, in line with NeTEx v2.0, we are reworking how several elements are represented in the API today. As described in our [breaking change policy](https://github.com/dbinfrago/openstation-docs#stability-and-breaking-changes), we are therefore announcing the following **breaking changes, all of which will take effect on 2027-04-01**. One of them (the change to `Name`) is paired with an advisory introduction that already ships with the June 2026 deployment, so consumers can adapt early.

### `PrivateCode` → `privateCodes`

The standalone element `PrivateCode` is replaced by a new wrapper element `privateCodes`, which holds one or more `PrivateCode` children, each carrying a `type` attribute that indicates its naming scheme. Until 2027-04-01, we will provide both the old standalone `PrivateCode` and the new `privateCodes`.

Affected entities: all entities with a `PrivateCode` element.

#### Example (before)

```xml

10313316

```

#### Example (after)

```xml


10313316

```

### `keyList`: `EQ-ID` / `TP-ID` → `privateCodes`

The `EQ-ID` and `TP-ID` identifiers currently exposed as `KeyValue` entries in `keyList` move into the new `privateCodes` element as well, each with a `type` attribute indicating its namespace:

- `EQ-ID` → `type="https://daten.bahnhof.de/namespace/eq/"`
- `TP-ID` → `type="https://daten.bahnhof.de/namespace/tp/"`

Until 2027-04-01, both the old `keyList` entries and the new `privateCodes` entries will be provided. Only the `EQ-ID` and `TP-ID` keys are affected; any other `keyList` entries remain unchanged.

Affected entities: all entities with an `EQ-ID` and/or `TP-ID` entry in their `keyList`.

#### Example (before)

```xml


EQ-ID50012159
TP-ID00557-02

```

#### Example (after)

```xml


50012159
00557-02

```

### `Name` — multilingual support via `Text` sub-elements

NeTEx v2.0 introduces `Text` sub-elements on text-bearing elements like `Name` to support multiple language variants. We need this in OpenStation in order to publish station names in regional minority languages alongside the German default (e.g. Lower Sorbian for Cottbus Hbf).

**Advisory — already in effect since the June 2026 deployment (non-breaking).** Each `Name` now carries both its original inline text and one or more `Text` sub-elements, one per language variant. The dual form is intentionally backwards-compatible and validates against the NeTEx v2.0 XSD. Consumers reading `Name`'s text content continue to receive the German default unchanged. Note: very naive parsers that flatten all descendant text (e.g. via `textContent` / `innerText`) may now display concatenated values.

**Breaking — effective 2027-04-01.** The inline text content of `Name` will be removed; only the `Text` sub-elements remain. Consumers must read names from the `Text` sub-elements by then.

Affected entities: all entities with a `Name` element.

#### Example (before)

```xml

Cottbus Hbf

```

#### Example (after 2026-06, before 2027-04-01)

```xml

Cottbus HbfCottbus HbfChóśebuz gł.dw.

```

#### Example (after 2027-04-01)

```xml

Cottbus HbfChóśebuz gł.dw.

```

Contributor guide

No contributing guide indexed for this repository

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.