Seite 1 von 1

Offizieller API-Endpunkt für eigene Anwendungen

Verfasst: Fr Sep 15, 2023 5:22 pm
von Logii
Hey,
ich habe schon öfter drüber nachgedacht, Projekte zu probieren, die die Nutzung von Stellwerksim vereinfacht, bzw die neue Funktionen hinzufügt.
Dabei stoße ich aber immer wieder an das gleiche Problem: Es gibt keine öffentliche API-Schnittstelle für die Daten des Stellwerksim.
Ich weiß, dass es bereits Endpunkte gibt, die von den Stellwerksim-Seiten selber verwendet werden, um Daten dazustellen. Allerdings sind diese ja nicht öffentlich, und weder dokumentiert, noch offiziell zur Nutzung freigegeben.
Deswegen meine Frage: Ist es möglich, eine öffentliche Schnittstelle für die Daten des Stellwerksim zur Verfügung zu stellen?

Dabei würde ich die Daten in zwei Klassen einteilen:
Die allgemeinen Daten zu den Stellwerken:
  • Liste der Regionen
  • Liste der Stellwerke einer Region
  • Daten eines Stellwerks (Name, ID, Beschreibung, Link zur Vorschau, ...)
  • Aktive Themen und Themenplan
  • geplante Spieleabende
Die Daten, die eigentlich nur intern verwendet werden:
  • Welche Stellwerke von wem belegt sind
  • Welche Züge in welchem Stellwerk sind
  • Welche Züge im Rahmen eines Spieleabends umgeleitet werden
  • Abfrage des Zuglaufes eines Zuges
Außerdem sehr nützlich wäre, wenn Stellwerksim als OAuth-Provider Developern die Möglichkeit gibt, dass sich User mit den Anmeldedaten von Stellwerksim auch auf anderen Websiten anmelden könnten (die Anmeldung wird in dem Fall natürlich auf den Seiten von Stellwerksim gemacht, und die Website bekommt nur den Namen des Spielers zurück).
Auch wäre es cool, Zugriff auf den Chat zu bekommen. In welcher Form, wäre noch zu klären, aber eine generelle Möglichkeit der Kommunikation mit Spielern über den Chat würde auch Anwendungen ohne Website ermöglichen, also quasi Chatbots mit verschiedenen Funktionen.

Apropos Funktionen, wofür würde ich (und sicher auch andere Entwickler hier) den ganzen Quark gerne nutzen?
Nun, da gibt es verschiedene Szenarien, zum Beispiel zur Entwicklung eines Leistandes für Spieleabende, oder zur Einführung eines Reputationssystems für Spieler. Ich denke, viele andere Menschen hier haben selber auch Ideen für den Stellwerksim, die nur mit der aktuellen Plugin-Schnittstelle kaum oder nicht zu lösen sind.

Mir ist bewusst, das insbesondere Daten aus der zweiten Klasse teilweise nur für den internen Gebrauch bestimmt sind, und auch mit einer Chatfunktion viel Müll angestellt werden könnte. Und außerdem sind einige Systeme im Hintergrund bestimmt nicht für viele Anfragen ausgelegt. Allerdings könnte man die API nicht öffentlich zugänglich machen, sondern für die Nutzung einen API-Key erforderlich machen, der erst nach schriftlichem Antrag im Forum und einer Zustimmung durch die Administratoren/Developer erteilt wird. Mithilfe dieses Keys könnte gleichzeitig ein Log geschrieben werden, um im Zweifelsfall Nutzer mit bösen Absichten schnell erkennen zu können, und auch für alle Benutzer ein Rate Limit festzulegen, also eine maximale Anzahl von Anfragen an die API in einem gewissen Zeitraum.

Auch wäre eine Zusammenführung mit der aktuell bereits vorhandenen Plugin-Schnittstelle im Simulator denkbar.

Ich weiß, dass ich hier gerade nach ziemlich viel frage, und die Umsetzung nicht einfach wird, aus datenschutzrechtlicher, technischer, und sicherheitlicher Perspektive. Allerdings würde so eine API den Bau von Anwendungen für den Stellwerkssimulator ermöglichen und so den Spielspaß weiter erhöhen. Mir ist auch bewusst, dass sowas nicht von heute auf morgen geht, aber vielleicht könnte man das als Perspektive für die nächsten Monate langfristig planen.

Liebe Grüße
Logii

Re: Offizieller API-Endpunkt für eigene Anwendungen

Verfasst: Fr Sep 15, 2023 5:58 pm
von DevonFrosch
Moin,

hm... ok, das ist zumindest etwas, was in der Form selten bis nie in meinen 14 Jahren hier angefragt wurde :lol: Da ich gerade beruflich auch als Anforderungs-Ingeneur arbeite und in der Rolle bin, picke ich mir mal die Anwendungsfälle raus:
Logii hat geschrieben: Fr Sep 15, 2023 5:22 pm Außerdem sehr nützlich wäre, wenn Stellwerksim als OAuth-Provider Developern die Möglichkeit gibt, dass sich User mit den Anmeldedaten von Stellwerksim auch auf anderen Websiten anmelden könnten (die Anmeldung wird in dem Fall natürlich auf den Seiten von Stellwerksim gemacht, und die Website bekommt nur den Namen des Spielers zurück).
Der Foren-Login von Stellwerksim unterstützt meines Wissens nach kein OAuth. Es wäre also umgekehrt: Wir müssten eine OAuth-Infrastruktur aufbauen und die Benutzer incl. aller Einbindungen in den Webseiten anpassen, um ein OAuth zu unterstützen.

Mit der nächsten Frage: Wozu? Was hält dich davon ab, woanders selbst einen Login zu bauen oder einen anderen Identity Provider einzubinden? Dort würdest du dann auch Features wie 2FA und so bekommen...
Logii hat geschrieben: Fr Sep 15, 2023 5:22 pm Auch wäre es cool, Zugriff auf den Chat zu bekommen. In welcher Form, wäre noch zu klären, aber eine generelle Möglichkeit der Kommunikation mit Spielern über den Chat würde auch Anwendungen ohne Website ermöglichen, also quasi Chatbots mit verschiedenen Funktionen.
Da wäre dann die Frage der Moderation, vor allem weil der STS-Chat keine wirklich privaten Kanäle unterstützt. Brauchen wir dann einen Chat-Bot in der Lobby? Was bringt der für einen Mehrwert für alle Anwesenden (mal abgesehen vom STS Cheater, der ab und an Cheat-Codes verteilt)? Wie wägt man das gegen die Tatsache ab, dass dann jedes geschriebene Wort auf eine Schnittstelle geschrieben und irgendwo geloggt wird? Dafür brauchst du erstmal einen wirklich guten Anwendungsfall, den man nicht auch mit einem Plugin oder einer kleinen Webseite umsetzen kann.
Logii hat geschrieben: Fr Sep 15, 2023 5:22 pm Apropos Funktionen, wofür würde ich (und sicher auch andere Entwickler hier) den ganzen Quark gerne nutzen?
Nun, da gibt es verschiedene Szenarien, zum Beispiel zur Entwicklung eines Leistandes für Spieleabende
Diese Funktion wurde schon in Betracht gezogen, als die Funktion der Spieleabende entwickelt wurde ;-) Ein paar Funktionen gab es ja hinter den Kulissen für die SimFahrtage. Problem dabei auch hier: Wenn eine Person über allen anderen steht, wie sieht die Balance dann aus? Wer hat wie viel "Macht" über die anderen Spieler? Behalte dabei im Hinterkopf, dass Spieleabende hier für alle offen stehen.

Übrigens am Rande: Wenn du "nur" einen Überblick über das aktuelle Geschehen bekommen möchtest, wo welcher Zug ist und wer wie viele Züge hat, das lässt sich durch die Pluginschnittstelle durchaus rausfinden. Wenn meine Probleme mit Netzwerktechnik nicht wären, hätte ich sowas schon vor Jahren mal gebaut ;-)
Logii hat geschrieben: Fr Sep 15, 2023 5:22 pm[...] oder zur Einführung eines Reputationssystems für Spieler.
Was, wenn ich dir sage, dass es bereits mal Statistiken für Spieler gab (vor meiner Zeit), und die abgeschafft wurden, weil sich die Spieler zu sehr geprahlt und angegiftet haben? Ich weiß nicht, ob ein Ranksystem, egal ob offiziell oder inoffiziell, das Miteinander wirklich positiv beeinflussen wird. Zumal sich auch da wieder die Frage der Moderation stellt...

Das mal ohne große interne Abstimmung aus meiner Erfahrung mit den Sim-Systemen. Zuerst weniger technische Fragen, sondern mehr nach dem "Warum" und "Was".

Gruß,
DevonFrosch

Re: Offizieller API-Endpunkt für eigene Anwendungen

Verfasst: Fr Sep 15, 2023 6:20 pm
von Logii
Hey DevonFrosch,
DevonFrosch hat geschrieben: Fr Sep 15, 2023 5:58 pm Der Foren-Login von Stellwerksim unterstützt meines Wissens nach kein OAuth. Es wäre also umgekehrt: Wir müssten eine OAuth-Infrastruktur aufbauen und die Benutzer incl. aller Einbindungen in den Webseiten anpassen, um ein OAuth zu unterstützen.

Mit der nächsten Frage: Wozu? Was hält dich davon ab, woanders selbst einen Login zu bauen oder einen anderen Identity Provider einzubinden? Dort würdest du dann auch Features wie 2FA und so bekommen...
das ist mir bewusst. Allerdings wäre es eine Möglichkeit, um eine gesicherte Authentifikation zu bekommen. Sonst ist es schwierig, nachzuweisen, dass man auch wirklich der Spieler ist. Wie viel Aufwand die Einbindung von OAuth auf der Providerseite ist, weiß ich nicht. Aber wie gesagt, das ganze wäre eh eine langfristige Idee.. Und klar, eine Authentifikation über andere Provider, vor allem soziale Medien, ist kein Problem. Da Anwendungsfälle allerdings viel mit STS zu tun haben, wäre es natürlich cool, wenn man auch den STS Login nutzen könnte.
DevonFrosch hat geschrieben: Fr Sep 15, 2023 5:58 pm Da wäre dann die Frage der Moderation, vor allem weil der STS-Chat keine wirklich privaten Kanäle unterstützt. Brauchen wir dann einen Chat-Bot in der Lobby? Was bringt der für einen Mehrwert für alle Anwesenden (mal abgesehen vom STS Cheater, der ab und an Cheat-Codes verteilt)? Wie wägt man das gegen die Tatsache ab, dass dann jedes geschriebene Wort auf eine Schnittstelle geschrieben und irgendwo geloggt wird? Dafür brauchst du erstmal einen wirklich guten Anwendungsfall, den man nicht auch mit einem Plugin oder einer kleinen Webseite umsetzen kann.
Ja, es werden keine privaten Kanäle unterstüzt, aber zum Beispiel bei Spieleabenden könnte der Bot dann lediglich Zugriff auf den Channel "Spieleabend" bekommen. Es stimmt schon, das der STS Chat nicht dafür geplant ist, nur zwischen zwei Menschen als Direktchat verwendet zu werden, allerdings ist es ja technisch möglich.
Aber ja, auf diese Funktion könnte man verzichten, dafür könnte man auch einen Extra-Chat über die Pluginschnittstelle einbauen.
DevonFrosch hat geschrieben: Fr Sep 15, 2023 5:58 pm Diese Funktion wurde schon in Betracht gezogen, als die Funktion der Spieleabende entwickelt wurde ;-) Ein paar Funktionen gab es ja hinter den Kulissen für die SimFahrtage. Problem dabei auch hier: Wenn eine Person über allen anderen steht, wie sieht die Balance dann aus? Wer hat wie viel "Macht" über die anderen Spieler? Behalte dabei im Hinterkopf, dass Spieleabende hier für alle offen stehen.
Jeder Spieleabend hat einen Ersteller. Und wenn diese Person eben verfügt, dass eine gewisse Leitstelle genutzt werden soll, dann haben sich alle Teilnehmenden dran zu halten. Es gibt ja (zumindest theoretisch) auch die Möglichkeit, einen Spieleabend nur für StiTz-Nutzer durchzuführen. Da endet es dann ja auch mit "steht für alle offen".
DevonFrosch hat geschrieben: Fr Sep 15, 2023 5:58 pm Übrigens am Rande: Wenn du "nur" einen Überblick über das aktuelle Geschehen bekommen möchtest, wo welcher Zug ist und wer wie viele Züge hat, das lässt sich durch die Pluginschnittstelle durchaus rausfinden. Wenn meine Probleme mit Netzwerktechnik nicht wären, hätte ich sowas schon vor Jahren mal gebaut ;-)
Das kann ich mir gut vorstellen, allerdings müsste dann, wenn ich die Schnittstelle richtig verstanden habe, ausnahmslos jeder Spieler im Spieleabend das Plugin installiert haben. Der Vorteil einer externen Anwendung wäre, dass nicht extra ein Plugin installiert werden muss, sondern die Anwendung sich diese Daten selbst abrufen kann. Die Kommunikation mit den Spielern erfolgt dann entweder über den Chat oder eine externe Website.
DevonFrosch hat geschrieben: Fr Sep 15, 2023 5:58 pm Was, wenn ich dir sage, dass es bereits mal Statistiken für Spieler gab (vor meiner Zeit), und die abgeschafft wurden, weil sich die Spieler zu sehr geprahlt und angegiftet haben? Ich weiß nicht, ob ein Ranksystem, egal ob offiziell oder inoffiziell, das Miteinander wirklich positiv beeinflussen wird. Zumal sich auch da wieder die Frage der Moderation stellt...
Da hat es dann doch einen Vorteil, wenn man wie du schon länger dabei ist. Ich weiß es auch nicht, ob es sinnvoll ist, ein solches System einzuführen. Aber man könnte es probieren.
Bisher sind das alles nur Ideen und Beispiele, was man machen könnte. Und ich bin sicher nicht der einzige, den das hier interessieren würde.

Wie gesagt, es ist alles nur eine Idee, und eine Anfrage, ob es allgemein möglich wäre. Auch wenn ich deine Kritikpunkte verstehe, und teilweise auch teile, denke ich trotzdem, dass man da zumindestens mal drüber reden könnte, und es im Hinterkopf behalten kann.

Liebe Grüße
Logii

Re: Offizieller API-Endpunkt für eigene Anwendungen

Verfasst: Di Okt 03, 2023 12:06 pm
von PianoRailways
Ich würde es auch befürworten.

Bspw. für die Abfrage der aktuellen Position eines Zuges. Müsste nicht so genau sein wie über das Funkmenü ich stehe vor Signal 123, aber ich bin derzeit im Stellwerk XY. Dies könnte ja auch direkt über das Funkmenü implementiert werden, dass man einen Zug, der bereits in der Liste aber noch nicht im Stellwerk anfunken und die Position abfragen kann.

Eine für Spieler nutzbare Online-Abfrage wäre auch nett, zumal es diese für Erbauer ja bereits gibt. Mit ein paar Filteroptionen (Zugnummer gibts meist mehrfach) wäre das sicher interessant.