diff --git a/README.md b/README.md index 602365a..1272103 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,852 @@ -# IMSAPI_Modul_REST +# IMSAPI Workbench / IMSAPI 工作台 -REST Modul for IMSAPI \ No newline at end of file +A browser-based IMSAPI REST workbench for building, testing, combining, and executing API calls with payload generation, key/value handling, login context support, and a JSON script editor. + +--- + +## Languages / Sprachen / Langues / 语言 + +- [Deutsch](#deutsch) +- [English](#english) +- [Français](#français) +- [中文](#中文) + +--- + +# Deutsch + +## Überblick + +**IMSAPI Workbench** ist eine HTML/JavaScript-basierte Oberfläche zum Testen und Kombinieren von IMSAPI-REST-Aufrufen. Die Anwendung lädt API-Templates und Parameterdefinitionen aus JSON-Dateien, erzeugt daraus dynamische Eingabeformulare und ermöglicht das Ausführen einzelner APIs oder kompletter API-Ketten über einen JSON-Scripteditor. + +## Hauptfunktionen + +- Login gegen die IMSAPI-REST-Schnittstelle +- Automatische Übernahme von `sessionContext` aus dem Login +- Automatische Übernahme von `stationNumber` aus dem Login +- Dynamische API-Liste mit Filter-/Suchfunktion +- Automatische Formularerzeugung aus `rest_api_templates.json` und `api_params.json` +- Auswahl von `Keys`, `Filters`, `ResultKeys` und `UploadValues` +- Unterstützung mehrerer `UploadValues`-Datensätze über ein `+` im Modal +- Korrekte Key/Value-Ausgabe für flache REST-Payloads +- JSON-Scripteditor zum Kombinieren mehrerer API-Aufrufe +- Serielle Ausführung mehrerer API-Steps +- Automatischer Export von `ResultKeys`/`ResultValues` als Variablen +- Wiederverwendung von Ergebniswerten in späteren API-Aufrufen +- Mehrsprachige Oberfläche für Scripteditor-Hilfetexte und Beispiele +- Sprach-Dropdown für Deutsch, Englisch, Französisch und Chinesisch + +## Projektstruktur + +```text +. +├── index.html +├── api_params.json +├── rest_api_templates.json +└── README.md +``` + +## Voraussetzungen + +- Moderner Browser, z. B. Chrome, Edge oder Firefox +- Zugriff auf einen IMSAPI-REST-Server +- Webserver oder lokale Entwicklungsumgebung zum Ausliefern der HTML- und JSON-Dateien + +> Hinweis: Wegen Browser-Sicherheitsregeln sollten die Dateien nicht direkt per `file://` geöffnet werden. Verwende besser einen lokalen Webserver. + +## Lokaler Start + +Beispiel mit Python: + +```bash +python -m http.server 8080 +``` + +Danach im Browser öffnen: + +```text +http://localhost:8080/index.html +``` + +## Login + +Im linken Bereich werden Server, Port, Station, Client und Registrierungstyp eingetragen. Nach erfolgreichem Login wird der `sessionContext` gespeichert und automatisch in Payloads eingesetzt. + +Beispiel sichtbarer Payload: + +```json +{ + "sessionContext": { + "sessionId": 17314583823726, + "persId": 0, + "locale": "en_EN" + }, + "stationNumber": "J816352", + "stationSettingResultKeys": [ + "WORKORDER_NUMBER", + "WORKSTEP_NUMBER" + ] +} +``` + +## Einzelne API ausführen + +1. API in der linken Liste auswählen. +2. Parameter, Keys, Filter oder Values eingeben. +3. `JSON erzeugen` klicken, um den Payload zu prüfen. +4. `API ausführen` klicken, um den REST-Aufruf abzusetzen. + +## Scripteditor + +Der Scripteditor erlaubt das Kombinieren mehrerer APIs zu einem zusammenhängenden Ablauf. Jeder Step enthält eine eindeutige `id`, den API-Namen und einen Payload. + +Beispiel: + +```json +[ + { + "id": "getStationSetting", + "api": "stationGetStationSetting", + "payload": { + "stationSettingResultKeys": [ + "WORKORDER_NUMBER", + "WORKSTEP_NUMBER" + ] + } + }, + { + "id": "nextApi", + "api": "deineNaechsteApi", + "payload": { + "workOrderNumber": "{{vars.workorderNumber}}", + "workStepNumber": "{{vars.workstepNumber}}" + } + } +] +``` + +## Automatische Variablen aus ResultValues + +Wenn ein API-Step z. B. folgende Keys anfordert: + +```json +"stationSettingResultKeys": [ + "WORKORDER_NUMBER", + "WORKSTEP_NUMBER" +] +``` + +und folgendes Ergebnis liefert: + +```json +{ + "result": { + "return_value": 0, + "stationSettingResultValues": [ + "Demo1", + "6" + ] + } +} +``` + +werden automatisch Variablen erzeugt: + +```text +{{vars.WORKORDER_NUMBER}} +{{vars.workorderNumber}} +{{vars.WORKSTEP_NUMBER}} +{{vars.workstepNumber}} +{{vars.getStationSetting.WORKORDER_NUMBER}} +{{vars.getStationSetting.workorderNumber}} +``` + +## Manuelle Platzhalter + +Folgende Platzhalter werden weiterhin unterstützt: + +```text +{{vars.name}} +{{login.stationNumber}} +{{row:stepId:resultValues:0:KEY}} +{{col:stepId:resultValues:KEY}} +``` + +Beispiel: + +```json +{ + "workOrderNumber": "{{vars.getStationSetting.workorderNumber}}" +} +``` + +## Kombination von ResultValues zu UploadValues + +Mit `$rows` können Ergebniszeilen aus einem vorherigen Step in UploadValues übernommen werden. + +```json +{ + "uploadValues": { + "$rows": { + "from": "getValues", + "values": "resultValues", + "columns": [ + "PARAMETER_NAME", + "CONFIG_VALUE" + ] + } + } +} +``` + +## Mehrsprachigkeit + +Die Sprache des Scripteditors kann über das Dropdown oben rechts umgestellt werden. Unterstützt werden: + +- Deutsch +- English +- Français +- 中文 + +API-Namen, Payload-Felder und Keys werden nicht übersetzt, damit die REST-Aufrufe technisch korrekt bleiben. + +## Hinweise zur Entwicklung + +- `rest_api_templates.json` enthält URL, HTTP-Methode und Body-Templates. +- `api_params.json` enthält Parameterinformationen, Optionen, Filter und Key-Definitionen. +- Die Oberfläche erzeugt Payloads dynamisch aus beiden Dateien. +- Pflichtfelder werden automatisch vorausgewählt, sofern sie in den Parametern entsprechend markiert sind. + +## Lizenz + +Bitte ergänzen, falls benötigt. + +--- + +# English + +## Overview + +**IMSAPI Workbench** is an HTML/JavaScript-based interface for testing and combining IMSAPI REST calls. The application loads API templates and parameter definitions from JSON files, generates dynamic input forms, and allows users to execute single APIs or complete API chains through a JSON script editor. + +## Main Features + +- Login against the IMSAPI REST interface +- Automatic use of `sessionContext` from the login +- Automatic use of `stationNumber` from the login +- Dynamic API list with filter/search function +- Automatic form generation from `rest_api_templates.json` and `api_params.json` +- Selection of `Keys`, `Filters`, `ResultKeys`, and `UploadValues` +- Support for multiple `UploadValues` records via a `+` button in the modal +- Correct key/value output for flat REST payloads +- JSON script editor for combining multiple API calls +- Sequential execution of multiple API steps +- Automatic export of `ResultKeys`/`ResultValues` as variables +- Reuse of result values in later API calls +- Multilingual script editor help texts and examples +- Language dropdown for German, English, French, and Chinese + +## Project Structure + +```text +. +├── index.html +├── api_params.json +├── rest_api_templates.json +└── README.md +``` + +## Requirements + +- Modern browser, such as Chrome, Edge, or Firefox +- Access to an IMSAPI REST server +- Web server or local development environment to serve the HTML and JSON files + +> Note: Due to browser security rules, the files should not be opened directly via `file://`. Use a local web server instead. + +## Local Start + +Example with Python: + +```bash +python -m http.server 8080 +``` + +Then open in the browser: + +```text +http://localhost:8080/index.html +``` + +## Login + +Server, port, station, client, and registration type are entered in the left panel. After a successful login, the `sessionContext` is stored and automatically inserted into payloads. + +Example visible payload: + +```json +{ + "sessionContext": { + "sessionId": 17314583823726, + "persId": 0, + "locale": "en_EN" + }, + "stationNumber": "J816352", + "stationSettingResultKeys": [ + "WORKORDER_NUMBER", + "WORKSTEP_NUMBER" + ] +} +``` + +## Executing a Single API + +1. Select an API from the list on the left. +2. Enter parameters, keys, filters, or values. +3. Click `Generate JSON` to check the payload. +4. Click `Execute API` to send the REST call. + +## Script Editor + +The script editor allows multiple APIs to be combined into one connected workflow. Each step contains a unique `id`, the API name, and a payload. + +Example: + +```json +[ + { + "id": "getStationSetting", + "api": "stationGetStationSetting", + "payload": { + "stationSettingResultKeys": [ + "WORKORDER_NUMBER", + "WORKSTEP_NUMBER" + ] + } + }, + { + "id": "nextApi", + "api": "yourNextApi", + "payload": { + "workOrderNumber": "{{vars.workorderNumber}}", + "workStepNumber": "{{vars.workstepNumber}}" + } + } +] +``` + +## Automatic Variables from ResultValues + +If an API step requests the following keys: + +```json +"stationSettingResultKeys": [ + "WORKORDER_NUMBER", + "WORKSTEP_NUMBER" +] +``` + +and returns this result: + +```json +{ + "result": { + "return_value": 0, + "stationSettingResultValues": [ + "Demo1", + "6" + ] + } +} +``` + +variables are created automatically: + +```text +{{vars.WORKORDER_NUMBER}} +{{vars.workorderNumber}} +{{vars.WORKSTEP_NUMBER}} +{{vars.workstepNumber}} +{{vars.getStationSetting.WORKORDER_NUMBER}} +{{vars.getStationSetting.workorderNumber}} +``` + +## Manual Placeholders + +The following placeholders are still supported: + +```text +{{vars.name}} +{{login.stationNumber}} +{{row:stepId:resultValues:0:KEY}} +{{col:stepId:resultValues:KEY}} +``` + +Example: + +```json +{ + "workOrderNumber": "{{vars.getStationSetting.workorderNumber}}" +} +``` + +## Combining ResultValues into UploadValues + +Using `$rows`, result rows from a previous step can be transferred into UploadValues. + +```json +{ + "uploadValues": { + "$rows": { + "from": "getValues", + "values": "resultValues", + "columns": [ + "PARAMETER_NAME", + "CONFIG_VALUE" + ] + } + } +} +``` + +## Multilingual Support + +The script editor language can be changed using the dropdown in the top-right corner. Supported languages are: + +- Deutsch +- English +- Français +- 中文 + +API names, payload fields, and keys are not translated to keep REST calls technically correct. + +## Development Notes + +- `rest_api_templates.json` contains URLs, HTTP methods, and body templates. +- `api_params.json` contains parameter information, options, filters, and key definitions. +- The interface dynamically generates payloads from both files. +- Required fields are automatically preselected if marked accordingly in the parameter definitions. + +## License + +Please add one if required. + +--- + +# Français + +## Aperçu + +**IMSAPI Workbench** est une interface HTML/JavaScript permettant de tester et de combiner des appels REST IMSAPI. L'application charge les modèles d'API et les définitions de paramètres depuis des fichiers JSON, génère des formulaires dynamiques et permet d'exécuter des API individuelles ou des chaînes complètes d'API via un éditeur de script JSON. + +## Fonctionnalités principales + +- Connexion à l'interface REST IMSAPI +- Utilisation automatique de `sessionContext` depuis la connexion +- Utilisation automatique de `stationNumber` depuis la connexion +- Liste dynamique des API avec fonction de filtre/recherche +- Génération automatique des formulaires à partir de `rest_api_templates.json` et `api_params.json` +- Sélection de `Keys`, `Filters`, `ResultKeys` et `UploadValues` +- Prise en charge de plusieurs enregistrements `UploadValues` via un bouton `+` dans la fenêtre modale +- Sortie key/value correcte pour les payloads REST plats +- Éditeur de script JSON pour combiner plusieurs appels API +- Exécution séquentielle de plusieurs étapes API +- Export automatique de `ResultKeys`/`ResultValues` sous forme de variables +- Réutilisation des valeurs de résultat dans les appels API suivants +- Textes d'aide et exemples multilingues dans l'éditeur de script +- Menu déroulant de langue pour l'allemand, l'anglais, le français et le chinois + +## Structure du projet + +```text +. +├── index.html +├── api_params.json +├── rest_api_templates.json +└── README.md +``` + +## Prérequis + +- Navigateur moderne, par exemple Chrome, Edge ou Firefox +- Accès à un serveur REST IMSAPI +- Serveur web ou environnement de développement local pour servir les fichiers HTML et JSON + +> Remarque : en raison des règles de sécurité des navigateurs, les fichiers ne doivent pas être ouverts directement avec `file://`. Utilisez plutôt un serveur web local. + +## Démarrage local + +Exemple avec Python : + +```bash +python -m http.server 8080 +``` + +Puis ouvrir dans le navigateur : + +```text +http://localhost:8080/index.html +``` + +## Connexion + +Le serveur, le port, la station, le client et le type d'enregistrement sont saisis dans le panneau de gauche. Après une connexion réussie, le `sessionContext` est enregistré et automatiquement inséré dans les payloads. + +Exemple de payload visible : + +```json +{ + "sessionContext": { + "sessionId": 17314583823726, + "persId": 0, + "locale": "en_EN" + }, + "stationNumber": "J816352", + "stationSettingResultKeys": [ + "WORKORDER_NUMBER", + "WORKSTEP_NUMBER" + ] +} +``` + +## Exécuter une API individuelle + +1. Sélectionner une API dans la liste à gauche. +2. Saisir les paramètres, keys, filtres ou valeurs. +3. Cliquer sur `Générer JSON` pour vérifier le payload. +4. Cliquer sur `Exécuter API` pour envoyer l'appel REST. + +## Éditeur de script + +L'éditeur de script permet de combiner plusieurs API dans un flux cohérent. Chaque étape contient un `id` unique, le nom de l'API et un payload. + +Exemple : + +```json +[ + { + "id": "getStationSetting", + "api": "stationGetStationSetting", + "payload": { + "stationSettingResultKeys": [ + "WORKORDER_NUMBER", + "WORKSTEP_NUMBER" + ] + } + }, + { + "id": "nextApi", + "api": "votreApiSuivante", + "payload": { + "workOrderNumber": "{{vars.workorderNumber}}", + "workStepNumber": "{{vars.workstepNumber}}" + } + } +] +``` + +## Variables automatiques depuis ResultValues + +Si une étape API demande les clés suivantes : + +```json +"stationSettingResultKeys": [ + "WORKORDER_NUMBER", + "WORKSTEP_NUMBER" +] +``` + +et renvoie ce résultat : + +```json +{ + "result": { + "return_value": 0, + "stationSettingResultValues": [ + "Demo1", + "6" + ] + } +} +``` + +les variables suivantes sont créées automatiquement : + +```text +{{vars.WORKORDER_NUMBER}} +{{vars.workorderNumber}} +{{vars.WORKSTEP_NUMBER}} +{{vars.workstepNumber}} +{{vars.getStationSetting.WORKORDER_NUMBER}} +{{vars.getStationSetting.workorderNumber}} +``` + +## Placeholders manuels + +Les placeholders suivants restent pris en charge : + +```text +{{vars.name}} +{{login.stationNumber}} +{{row:stepId:resultValues:0:KEY}} +{{col:stepId:resultValues:KEY}} +``` + +Exemple : + +```json +{ + "workOrderNumber": "{{vars.getStationSetting.workorderNumber}}" +} +``` + +## Combiner ResultValues vers UploadValues + +Avec `$rows`, les lignes de résultat d'une étape précédente peuvent être transférées dans UploadValues. + +```json +{ + "uploadValues": { + "$rows": { + "from": "getValues", + "values": "resultValues", + "columns": [ + "PARAMETER_NAME", + "CONFIG_VALUE" + ] + } + } +} +``` + +## Multilingue + +La langue de l'éditeur de script peut être modifiée via le menu déroulant en haut à droite. Les langues prises en charge sont : + +- Deutsch +- English +- Français +- 中文 + +Les noms d'API, les champs de payload et les keys ne sont pas traduits afin de conserver la validité technique des appels REST. + +## Notes de développement + +- `rest_api_templates.json` contient les URL, méthodes HTTP et modèles de body. +- `api_params.json` contient les informations de paramètres, options, filtres et définitions de keys. +- L'interface génère dynamiquement les payloads à partir des deux fichiers. +- Les champs obligatoires sont automatiquement présélectionnés s'ils sont marqués comme tels dans les définitions de paramètres. + +## Licence + +À compléter si nécessaire. + +--- + +# 中文 + +## 概述 + +**IMSAPI Workbench** 是一个基于 HTML/JavaScript 的界面,用于测试和组合 IMSAPI REST 调用。应用程序从 JSON 文件加载 API 模板和参数定义,动态生成输入表单,并允许用户通过 JSON 脚本编辑器执行单个 API 或完整的 API 调用链。 + +## 主要功能 + +- 登录 IMSAPI REST 接口 +- 自动从登录信息中使用 `sessionContext` +- 自动从登录信息中使用 `stationNumber` +- 带过滤/搜索功能的动态 API 列表 +- 根据 `rest_api_templates.json` 和 `api_params.json` 自动生成表单 +- 支持选择 `Keys`、`Filters`、`ResultKeys` 和 `UploadValues` +- 在弹窗中通过 `+` 按钮支持多个 `UploadValues` 数据集 +- 为扁平 REST payload 生成正确的 key/value 输出 +- JSON 脚本编辑器,用于组合多个 API 调用 +- 按顺序执行多个 API 步骤 +- 自动将 `ResultKeys`/`ResultValues` 导出为变量 +- 在后续 API 调用中复用结果值 +- 脚本编辑器支持多语言帮助文本和示例 +- 支持德语、英语、法语和中文的语言下拉菜单 + +## 项目结构 + +```text +. +├── index.html +├── api_params.json +├── rest_api_templates.json +└── README.md +``` + +## 运行要求 + +- 现代浏览器,例如 Chrome、Edge 或 Firefox +- 可访问 IMSAPI REST 服务器 +- 用于提供 HTML 和 JSON 文件的 Web 服务器或本地开发环境 + +> 注意:由于浏览器安全限制,不建议直接通过 `file://` 打开文件。请使用本地 Web 服务器。 + +## 本地启动 + +使用 Python 示例: + +```bash +python -m http.server 8080 +``` + +然后在浏览器中打开: + +```text +http://localhost:8080/index.html +``` + +## 登录 + +在左侧区域输入服务器、端口、工位、客户端和注册类型。登录成功后,`sessionContext` 会被保存,并自动插入到 payload 中。 + +可见 payload 示例: + +```json +{ + "sessionContext": { + "sessionId": 17314583823726, + "persId": 0, + "locale": "en_EN" + }, + "stationNumber": "J816352", + "stationSettingResultKeys": [ + "WORKORDER_NUMBER", + "WORKSTEP_NUMBER" + ] +} +``` + +## 执行单个 API + +1. 从左侧列表选择一个 API。 +2. 输入参数、keys、过滤器或 values。 +3. 点击 `生成 JSON` 检查 payload。 +4. 点击 `执行 API` 发送 REST 调用。 + +## 脚本编辑器 + +脚本编辑器允许将多个 API 组合成一个连续流程。每个步骤包含唯一的 `id`、API 名称和 payload。 + +示例: + +```json +[ + { + "id": "getStationSetting", + "api": "stationGetStationSetting", + "payload": { + "stationSettingResultKeys": [ + "WORKORDER_NUMBER", + "WORKSTEP_NUMBER" + ] + } + }, + { + "id": "nextApi", + "api": "yourNextApi", + "payload": { + "workOrderNumber": "{{vars.workorderNumber}}", + "workStepNumber": "{{vars.workstepNumber}}" + } + } +] +``` + +## 从 ResultValues 自动生成变量 + +如果某个 API 步骤请求以下 keys: + +```json +"stationSettingResultKeys": [ + "WORKORDER_NUMBER", + "WORKSTEP_NUMBER" +] +``` + +并返回以下结果: + +```json +{ + "result": { + "return_value": 0, + "stationSettingResultValues": [ + "Demo1", + "6" + ] + } +} +``` + +系统会自动创建以下变量: + +```text +{{vars.WORKORDER_NUMBER}} +{{vars.workorderNumber}} +{{vars.WORKSTEP_NUMBER}} +{{vars.workstepNumber}} +{{vars.getStationSetting.WORKORDER_NUMBER}} +{{vars.getStationSetting.workorderNumber}} +``` + +## 手动占位符 + +以下占位符仍然受支持: + +```text +{{vars.name}} +{{login.stationNumber}} +{{row:stepId:resultValues:0:KEY}} +{{col:stepId:resultValues:KEY}} +``` + +示例: + +```json +{ + "workOrderNumber": "{{vars.getStationSetting.workorderNumber}}" +} +``` + +## 将 ResultValues 组合为 UploadValues + +使用 `$rows` 可以把前一个步骤的结果行转换为 UploadValues。 + +```json +{ + "uploadValues": { + "$rows": { + "from": "getValues", + "values": "resultValues", + "columns": [ + "PARAMETER_NAME", + "CONFIG_VALUE" + ] + } + } +} +``` + +## 多语言支持 + +脚本编辑器的语言可以通过右上角下拉菜单切换。支持语言包括: + +- Deutsch +- English +- Français +- 中文 + +API 名称、payload 字段和 keys 不会被翻译,以确保 REST 调用在技术上保持正确。 + +## 开发说明 + +- `rest_api_templates.json` 包含 URL、HTTP 方法和 body 模板。 +- `api_params.json` 包含参数信息、选项、过滤器和 key 定义。 +- 界面会根据这两个文件动态生成 payload。 +- 如果参数定义中标记了必填字段,界面会自动预选这些字段。 + +## 许可证 + +如有需要,请在此补充。