Repository navigation
ueberblick
Übersicht über die Netzwerkschnittstellen. Diese Seite beschreibt grob die Routen, Endpunkte und Services für die Routely-App.
app/src/main/kotlin/de/traewelling/app/data/api/TraewellingApiService.ktapp/src/main/kotlin/de/traewelling/app/data/api/RetrofitClient.kt
Zentrale Schnittstelle, definiert in TraewellingApiService.kt. Die App kommuniziert hauptsächlich mit den Träwelling RESTful APIs.
1. Check-in & Feed (Kernfunktionen)
-
Check-In:
POST /api/v1/trains/checkin– Einchecken in Verkehrsmittel (benötigt Start, Ziel, Fahrt-ID; optional/gesetzt:businessals Reisegrund). -
Persönlicher Feed:
GET /api/v1/dashboard– Check-ins von Nutzern, denen man folgt. -
Globaler Feed:
GET /api/v1/statuses– Öffentliche Check-ins aller Nutzer. -
Status (Singular):
GET/PUT/DELETE /api/v1/status/{id}sowiePOST/DELETE /api/v1/status/{id}/like– Einzelnen Check-in abrufen, ändern, löschen, liken/entliken.
Der persönliche Dashboard-Vertrag verwendet numerische Seiten mit simplePaginate(15). Der globale statuses-Controller liefert eine unpaginierte Antwort; die App bietet weitere Seiten nur bei tatsächlich vorhandenem links.next an. Ein deklarierter page-Parameter macht den globalen Endpunkt nicht automatisch paginiert.
2. Bahnhöfe & Abfahrten (Reiseplanung)
-
Station Search:
GET /api/v1/trains/station/autocomplete/{query}– Suche von Haltestellen per Text. -
Stationen in der Nähe: Der Check-in und die Fahrterkennung verwenden
TraewellingRepository.getNearbyStations(lat, lon). Dieser Aufruf berechnet eine ungefähr einen Kilometer in jede Richtung reichende Bounding-Box und sendetmin_lat,max_lat,min_lon,max_lonanGET /api/v1/stations.GET /api/v1/trains/station/nearbyist zusätzlich in Retrofit deklariert und liefert einen Bahnhof; die aktuellen App-Abläufe rufen diesen Endpunkt nicht auf. -
Departures:
GET /api/v1/station/{id}/departures– Abfahrtsmonitor. Benötigt die numerische ID, nicht den Namen! Die ID ist die interne Träwelling-Station-ID, keine IBNR oder Stopover-ID.
3. Fahrtdetails & Haltestellen (Trip-Infos)
-
Trip Detail:
GET /api/v1/trains/trip– Liefert den gesamten Fahrtverlauf, benötigthafasTripIdundlineName. -
Stopovers:
GET /api/v1/stopovers/{tripId}– Detaillierte Route eines getätigten Check-ins. -
Streckenverlauf:
GET /api/v1/polyline/{statusId}– GeoJSON der eigenen eingecheckten Bahn-/Tramstrecke; optionaler Linienzug für lokale GPS-Projektion, kein garantiert amtlicher Fahrweg. Der Status-Identifier ist nicht die Trip-ID.
4. Benutzer & Authentifizierung
-
Eigenes Profil:
GET /api/v1/auth/user– Eigene Daten abrufen. -
Fremdes Profil:
GET /api/v1/user/{username}– Profil eines anderen Nutzers. -
Nutzerhistorie:
GET /api/v1/user/{username}/statuses– Vergangene Check-ins eines Nutzers. -
Follow / Unfollow:
POST/DELETE /api/v1/user/{id}/follow.
5. Notifications
-
Benachrichtigungsliste:
GET /api/v1/notifications -
Ungelesene Zähler:
GET /api/v1/notifications/unread/count -
Gelesen markieren:
PUT /api/v1/notifications/read/{id}oder/all.
OAuthApiService in TraewellingApiService.kt deklariert Austausch und Refresh über POST /oauth/token. Diese Helfer sind noch nicht an einen erreichbaren Browser-Login oder automatischen Refresh angebunden. Der aktuelle Anmeldeablauf validiert einen manuell eingegebenen Token mit GET /api/v1/auth/user und speichert die Sitzung erst nach einer vollständigen erfolgreichen Antwort.
Am 05.10.2026 wurden alle vorhandenen Retrofit-Routen und ihre konsumierten Antwortfelder gegen den Träwelling-API-Changelog sowie die Routen und Ressourcen von Upstream develop geprüft. Die vorhandenen Pfade bleiben gültig; die notwendigen Änderungen betreffen insbesondere Stationsdaten in Stopovers, Zeitfelder, Operator-IDs und Check-in-Konflikte.
Die Kompatibilitätsprüfung dokumentiert den geprüften Upstream-Commit, die Migration und bewusst ungenutzte neue APIs. Neue optionale Endpunkte ersetzen nicht automatisch die bestehenden App-Funktionen.
RetrofitClient setzt den Bearer-Token als Authorization-Header. Netzwerk-Logging ist im Release-Build deaktiviert und im Debug-Build auf BASIC begrenzt; Authorization wird redaktiert.