LeTTo Doc

REST-Schnittstelle des Referenz-Plugins (Python)

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

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

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.

Referenz-Plugin (Python)