KDE PIM/KPublicTransport/Endpoint Configuration
Public Transport Provider Endpoint Configurations
Can we share public transport provider API endpoint configurations with a wider set of users, beyond KDE? What would be a sensible subset of information?
Motivation
- All existing projects use subsets of available endpoints, so most if not all could benefit from more endpoint configurations becoming available with little extra effort for them.
- Maintaining endpoint configurations is work, some parameters require elaborate research to obtain.
Existing Implementations
Gnome Maps
Code: https://gitlab.gnome.org/GNOME/gnome-maps/-/tree/master/src/transitplugins
Format: JSON - see https://gis.gnome.org/services/v1/service.json
Backends: OTP (via REST), custom (OpenDataCH, Resrobot)
Additional information:
- Attribution
- Geographic bounding box
- Description
- Priority
hafas-client
Code: https://github.com/public-transport/hafas-client
Format: JS, partly JSON-ish - see https://github.com/public-transport/hafas-client/tree/master/p
Backends: Hafas
Additional information:
- Product mapping
- Locale
- Timezone
KPublicTransport
Code: https://phabricator.kde.org/source/kpublictransport/
Format: JSON - https://phabricator.kde.org/source/kpublictransport/browse/master/src/lib/networks/
Backends: Navitia, OTP (3 variants), Hafas (2 variants), EFA (2 variants)
Additional information:
- Hafas product mapping
- Location identifier normalization/mapping to UIC/IBNR station codes
- Localized names/descriptions
- Supported languages
- Static timezones for backends not providing timezone information
- Attribution
- Geographic bounding box
- Primary country/region ISO 3166-1/2 codes as part of the file name.
marudor.de
Code: https://github.com/marudor/BahnhofsAbfahrten/tree/master/src/server/HAFAS
Format: TypeScript, but largely declarative/JSON-ish: https://github.com/marudor/BahnhofsAbfahrten/blob/master/src/server/HAFAS/profiles.ts
Backends: Hafas
Additional information:
oeffisear.ch
Code: https://git.ctu.cx/ctucx/oeffisearch
Format: N/A (hardcoded)
Backends: Hafas
public-transport-enabler
Code: https://gitlab.com/oeffi/public-transport-enabler/
Format: Java code, API keys not included (part of Öffi/Transportr) - see https://gitlab.com/oeffi/public-transport-enabler/-/tree/master/src/de/schildbach/pte
Backends: Navitia, Hafas (2 variants), EFA (2 variants), custom (VRS, and one other one IIRC)
Additional information:
- Hafas product mapping, line and product name normalization (in code)
pyhafas
Code: https://github.com/n0emis/pyhafas
Format: Python code, some JSON elements - see https://github.com/n0emis/pyhafas/tree/master/pyhafas/profile
Backends: Hafas
smurfy/fahrplan
Code: https://github.com/smurfy/fahrplan/
Format: in code? - see https://github.com/smurfy/fahrplan/tree/master/src/parser
Backends: Hafas (2 variants), EFA
TripKit
Code: https://github.com/alexander-albers/tripkit
Format: Swift Code - see https://github.com/alexander-albers/tripkit/tree/master/TripKit
Note: Swift port of public-transport-enabler, with matching backend/configuration approach.