KDE PIM/KPublicTransport/Endpoint Configuration

From KDE Community Wiki

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.