REST-Schnittstelle des Referenz-Plugins (Python)
- Die Python-Version bietet dieselben Pfade, Request- und Response-DTOs wie das Java-Plugin. Jeder Endpunkt verlinkt unten auf seine ausführliche Beschreibung in der REST-Schnittstelle des Java-Plugins; die Spalte „Python” nennt, was die Python-Version tatsächlich liefert.
<servicepath>ist der Servicepfad des Plugins (Standard/plugindemopython).- Die Swagger-UI des laufenden Services liegt unter
<servicepath>/docs; ihre Beschreibung verlinkt auf diese Doku, jeder Endpunkt auf seine Seite in der Java-Doku. - Unbekannter Plugin-Typ: Die Python-Version antwortet nicht mit 404 wie das Java-Plugin, sondern mit HTTP 200 und einem leeren Ergebnis (siehe Tabelle).
Plugin-API – /open und <servicepath>/open
Die interne Plugin-API steht zweimal zur Verfügung: unter /open/... (nur Docker-Netzwerk, wird von LeTTo verwendet) und
zusätzlich unter <servicepath>/open/... (über den Proxy erreichbar).
| Methode | Pfad | Request | Response | Python | Java-Doku |
|---|---|---|---|---|---|
| GET | /open/pluginlist |
– | List<String> |
Liste der registrierten Typen (UhrPy) |
pluginList |
| GET | /open/generalinfolist |
– | PluginGeneralInfoList | allgemeine Informationen aller Plugins | pluginGeneralInfoList |
| POST | /open/generalinfo |
String (Plugin-Typ) |
PluginGeneralInfo | unbekannter Typ: PluginGeneralInfo nur mit typ statt 404 |
pluginGeneralInfo |
| POST | /open/gethtml |
PluginRequestDto | String |
fester HTML-Hinweis; unbekannter Typ: "" |
getHtml |
| POST | /open/angabe |
PluginRequestDto | String |
fester Angabetext; unbekannter Typ: "" |
getAngabe |
| POST | /open/generatedatasets |
PluginRequestDto | PluginDatasetListDto | immer leere Liste | generateDatasets |
| POST | /open/maxima |
PluginRequestDto | String |
immer "" |
getMaxima |
| POST | /open/image |
PluginRequestDto | ImageBase64Dto | Uhrblatt 320 × 320 Pixel, params werden nicht ausgewertet; unbekannter Typ: error = "unknown plugin" |
getImage |
| POST | /open/imageurl |
PluginRequestDto | ImageUrlDto | speichert das Uhrblatt (320 × 320) unter <letto_pathPlugins><servicepath>/<2 Zeichen>/<md5>.png und liefert die URL https://<letto_webPathPlugins><servicepath>/…; ohne diese Variablen leere URL mit Meldung in error; unbekannter Typ: error = "unknown plugin". Der LeTTo-Server ruft den Endpunkt vor /open/image auf. |
getImageUrl |
| POST | /open/imagetemplates |
PluginRequestDto | List<String[]> |
fest [["default", "[PIG PluginVomTester \"\"]", "Uhrblatt"]] – der Plugin-Name im PIG-Tag ist fest eingetragen |
getImageTemplates |
| POST | /open/parserplugin |
PluginParserRequestDto | CalcErgebnisDto | CalcErgebnisDto mit string = null, type = "STRING" (Java: null) |
parserPlugin |
| POST | /open/parserplugineinheit |
PluginEinheitRequestDto | String |
immer "" (Java: null) |
parserPluginEinheit |
| POST | /open/score |
PluginScoreRequestDto | PluginScoreInfoDto | Bewertung, siehe Plugin-API; unbekannter Typ: leeres PluginScoreInfoDto |
score |
| POST | /open/getvars |
PluginRequestDto | List<String> |
immer [] (Java: null) |
getVars |
| POST | /open/modifyangabe |
PluginAngabeRequestDto | String |
text unverändert |
modifyAngabe |
| POST | /open/modifyangabetextkomplett |
PluginAngabeRequestDto | String |
text unverändert |
modifyAngabeTextkomplett |
| POST | /open/updatepluginstringjavascript |
PluginUpdateJavascriptRequestDto | String |
pluginDef unverändert |
updatePluginstringJavascript |
| POST | /open/loadplugindto |
LoadPluginRequestDto | PluginDto | Bild als data:image/png;base64,…, tagName = <frageId>_<name>_<nr>, Größe aus CONF_width/CONF_height; unbekannter Typ: leeres PluginDto |
loadPluginDto |
| POST | /open/renderlatex |
PluginRenderLatexRequestDto | PluginRenderDto | immer leeres PluginRenderDto |
renderLatex |
| POST | /open/renderpluginresult |
PluginRenderResultRequestDto | PluginRenderDto | HTML: Hinweis von get_html plus Wert:<antwort>; bei tex = true leer |
renderPluginResult |
| POST | /open/configurationinfo |
PluginConfigurationInfoRequestDto | PluginConfigurationInfoDto | legt nur mit configurationID eine Sitzung an; configurationUrl bleibt leer; unbekannter Typ: configurationMode = 0 |
configurationInfo |
| POST | /open/setconfigurationdata |
PluginSetConfigurationDataRequestDto | PluginConfigDto | params enthält config, help und vars; ohne Sitzung errorMsg = "configurationID unknown or expired" |
setConfigurationData |
| POST | /open/getconfiguration |
PluginConfigurationRequestDto | String |
Konfiguration der Sitzung; ohne Sitzung "" (Java: @Error:…) |
getConfiguration |
| POST | /open/reloadplugindto |
LoadPluginRequestDto | PluginDto | siehe unten | reloadPluginDto |
reloadplugindto
- Mit gültiger
configurationIDwerden Typ, Name und Frage aus der Sitzung genommen. Schickt der Request einconfig-Feld mit, hat es Vorrang und wird in der Sitzung gespeichert (aktuelle Eingabe im Dialog); sonst gilt die Konfiguration der Sitzung. - Ohne gültige Sitzung werden die Werte aus dem Request verwendet – kein 404 wie in Java.
- Das
PluginDtoenthält inparamsden Eintragconfig.
Offene API – <servicepath>/api/open
Für den Browser, über den Proxy erreichbar (wie der ApiExternOpenController in Java).
| Methode | Pfad | Request | Response | Java-Doku |
|---|---|---|---|---|
| GET | <servicepath>/api/open/pluginlist |
– | List<String> |
pluginList |
| GET | <servicepath>/api/open/generalinfolist |
– | PluginGeneralInfoList | pluginGeneralInfoList |
| POST | <servicepath>/api/open/generalinfo |
String (Plugin-Typ) |
PluginGeneralInfo | pluginGeneralInfo |
| POST | <servicepath>/api/open/reloadplugindto |
LoadPluginRequestDto | PluginDto | reloadPluginDto |
Das Verhalten entspricht den gleichnamigen Endpunkten unter /open.
Info-Endpunkte
| Methode | Pfad | Response | erreichbar | Java-Doku |
|---|---|---|---|---|
| GET | /ping |
pong |
intern (Docker-Healthcheck) | ping |
| GET | <servicepath>/ping |
pong |
extern, nur in Python | ping |
| GET | <servicepath>/open/ping |
pong |
extern | pingopen |
| GET | /info |
ServiceInfoDTO | intern | info |
| GET | <servicepath>/open/info |
ServiceInfoDTO | extern | infoOpen |
| GET | /version |
1.0 |
intern | version |
ServiceInfoDTO enthält in der Python-Version nur Name, Version, Autor, Startzeit (Zeitpunkt der Anfrage) und ein AdminInfoDto mit dem Anwendungsnamen – siehe DTOs.
Hilfe und Dokumentation
| Pfad | Inhalt |
|---|---|
<servicepath>/, <servicepath>/index.html, <servicepath>/help |
Hilfeseite aus resources/index.html mit Links auf Swagger-UI, Quellcode, Docker Hub, diese Doku und die Java-Doku (erscheint nicht in der Swagger-UI) |
<servicepath>/docs |
Swagger-UI, Endpunkte und Schemas alphabetisch sortiert; Beschreibung mit Links auf diese Doku und die Java-Doku, je Endpunkt und DTO Link auf die Java-Detailseite |
<servicepath>/openapi.json |
OpenAPI-Beschreibung |
Nicht vorhanden
confighttp– der Konfigurationsdialog im iframe (CONFIGMODE_URL) ist nicht implementiert, siehe ConfigHttpController in Java.
Registrierung am Setup-Service (ausgehend)
| Methode | Pfad am Setup-Service | Request | Authentifizierung |
|---|---|---|---|
| POST | /config/auth/user/registerplugin |
JSON-Objekt mit den Feldern von ConfigServiceDto | Basic Auth (Benutzer user, Passwort aus letto_user_user_password) |
Die Antwort wird nicht ausgewertet; jede Antwort mit HTTP 2xx gilt als erfolgreich. Siehe Build und Deployment.