From 63e8b3975dc9065c994a3b224c1d701beb5920f0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mathias=20M=C3=BCller?= Date: Sun, 15 Mar 2026 19:49:00 +0100 Subject: [PATCH 1/3] Create rest-api.md --- tools/ReFlex.TrackingServer/rest-api.md | 164 ++++++++++++++++++++++++ 1 file changed, 164 insertions(+) create mode 100644 tools/ReFlex.TrackingServer/rest-api.md diff --git a/tools/ReFlex.TrackingServer/rest-api.md b/tools/ReFlex.TrackingServer/rest-api.md new file mode 100644 index 00000000..06f505c1 --- /dev/null +++ b/tools/ReFlex.TrackingServer/rest-api.md @@ -0,0 +1,164 @@ +# ReFlex TrackingServer REST API + +## Hinweise + +- Basisroute fuer die REST-Endpunkte ist in der Regel `/api/{Controller}`. +- Einige Endpunkte erwarten primitive JSON-Werte im Body, also z. B. `true`, `3` oder `"recording-01"`. +- Viele Schreib-Endpunkte verwenden `JsonSimpleValue` im Format `{"name":"Port","value":9000}`. Bei den in der Tabelle markierten Endpunkten muss `name` exakt dem angegebenen Wert entsprechen, sonst antwortet der Controller mit `400 Bad Request`. +- `PUT /api/Tracking/{id}` und `PUT /api/Tracking/Configuration/{id}` haben zwar einen Body-Parameter, werten ihn im Controller aber nicht aus. +- Der WebSocket-Endpunkt `GET /ReFlex` ist kein REST-Endpunkt und daher hier nicht Teil der Tabelle. + +## Calibration + +| Methode | Route | Request | Response | Beschreibung | +|---|---|---|---|---| +| `GET` | `/api/Calibration/FrameSize` | - | `FrameSizeDefinition` | Liefert die aktuelle Fenster-/Frame-Groesse der Kalibrierung. | +| `GET` | `/api/Calibration/SourceValues` | - | `CalibrationPoint[]` | Liefert die Quellpunkte der Kalibrierung. | +| `GET` | `/api/Calibration/TargetValues` | - | `CalibrationPoint[]` | Liefert die Zielpunkte der Kalibrierung. | +| `GET` | `/api/Calibration/GetCalibrationMatrix` | - | `CalibrationTransform` | Berechnet die Transformationsmatrix neu und gibt sie zurueck. | +| `GET` | `/api/Calibration/ApplyCalibration` | - | `CalibrationTransform` | Berechnet die Transformationsmatrix und gibt sie zurueck. | +| `GET` | `/api/Calibration/Restart` | - | `CalibrationTransform` | Setzt den Kalibrierungsprozess zurueck und liefert die aktuelle Matrix. | +| `GET` | `/api/Calibration/SaveCalibration` | - | `CalibrationTransform` | Schliesst die Kalibrierung ab und liefert die gespeicherte Matrix. | +| `POST` | `/api/Calibration/UpdateFrameSize` | Body: `FrameSizeDefinition` | `FrameSizeDefinition` oder `400` | Setzt die Fenster-/Frame-Groesse fuer die Kalibrierung. | +| `POST` | `/api/Calibration/UpdateCalibrationPoint/{index}` | Pfad: `index` (`0..2`), Body: `CalibrationPoint` | `CalibrationTransform` oder `400` | Aktualisiert einen bestehenden Zielpunkt und liefert die resultierende Matrix. | +| `POST` | `/api/Calibration/AddCalibrationPoint` | Body: `CalibrationPoint` | `CalibrationTransform` oder `400` | Fuegt einen weiteren Kalibrierungspunkt hinzu. | +| `POST` | `/api/Calibration/CalibratedInteractions` | Body: `Interaction[]` | `Interaction[]` oder `400` | Kalibriert ein Interaktions-Array und gibt die kalibrierten Werte zurueck. | + +## Tracking + +| Methode | Route | Request | Response | Beschreibung | +|---|---|---|---|---| +| `GET` | `/api/Tracking` | - | `IDepthCamera[]` | Liefert alle verfuegbaren Kameras. | +| `GET` | `/api/Tracking/SelectedCamera` | - | `IDepthCamera` | Liefert die aktuell ausgewaehlte Kamera. | +| `GET` | `/api/Tracking/SelectedCameraConfig` | - | `StreamParameter` | Liefert die aktuell ausgewaehlte Kamerakonfiguration. | +| `GET` | `/api/Tracking/Configurations/{id}` | Pfad: Kamera-ID | `StreamParameter[]` | Liefert die verfuegbaren Konfigurationen fuer eine Kamera. | +| `GET` | `/api/Tracking/{id}` | Pfad: Kamera-ID | `IDepthCamera` oder `null` | Liefert eine einzelne Kamera anhand ihrer ID. | +| `GET` | `/api/Tracking/Status` | - | `TrackingConfigState` oder `null` | Liefert den aktuellen Tracking-Status. | +| `PUT` | `/api/Tracking/{id}` | Pfad: Kamera-ID, Body: JSON-String (ungenutzt) | leer | Waehlt eine Kamera per ID aus. | +| `PUT` | `/api/Tracking/Configuration/{id}` | Pfad: Konfigurations-ID, Body: JSON-String (ungenutzt) | leer | Waehlt eine Kamerakonfiguration per ID aus. | +| `PUT` | `/api/Tracking/ToggleTracking/{id}` | Pfad: Kamera-ID, Body: JSON-Integer `configIdx` | `202 Accepted` | Startet oder stoppt das Tracking fuer Kamera und Konfiguration. | +| `PUT` | `/api/Tracking/SetDepthImagePreview` | Body: JSON-Boolean | `202 Accepted` | Aktiviert oder deaktiviert den Raw-Depth-Preview-Stream. | +| `PUT` | `/api/Tracking/SetDepthImagePointCloudPreview` | Body: JSON-Boolean | `202 Accepted` | Aktiviert oder deaktiviert den Point-Cloud-Preview-Stream. | +| `GET` | `/api/Tracking/Recordings` | - | `StreamParameter[]` | Liefert die vorhandenen Recording-Konfigurationen. | +| `PUT` | `/api/Tracking/StartRecording` | Body: JSON-String `name` | `string` oder `403` | Startet eine Aufnahme der aktuell streamenden Kamera. | +| `GET` | `/api/Tracking/StopRecording` | - | `string` | Stoppt die laufende Aufnahme und liefert das Recorder-Ergebnis. | +| `PUT` | `/api/Tracking/DeleteRecording` | Body: JSON-String `name` | `bool` | Loescht eine benannte Aufnahme. | +| `GET` | `/api/Tracking/ClearRecordings` | - | `string` | Loescht alle Aufnahmen und liefert die Anzahl geloeschter Eintraege als String. | +| `GET` | `/api/Tracking/RecordingState` | - | `bool` | Gibt an, ob aktuell aufgenommen wird. | +| `GET` | `/api/Tracking/RecordingFrameCount/{name}` | Pfad: Aufnahme-Name | `int` | Liefert die Anzahl gespeicherter Frames einer Aufnahme. | +| `GET` | `/api/Tracking/GetAutostartEnabled` | - | `bool` | Liefert den aktuellen Auto-Start-Status. | +| `PUT` | `/api/Tracking/SetAutostart` | Body: JSON-Boolean | `bool` | Setzt den Auto-Start-Status. | + +## Settings + +| Methode | Route | Request | Response | Beschreibung | +|---|---|---|---|---| +| `GET` | `/api/Settings` | - | `TrackingServerAppSettings` | Liefert die komplette aktuelle Server-Konfiguration. | +| `POST` | `/api/Settings` | Body: `TrackingServerAppSettings` | leer | Uebernimmt und speichert die komplette Konfiguration. | +| `GET` | `/api/Settings/CanRestore` | - | `JsonSimpleValue` | Liefert, ob ein Backup fuer Restore verfuegbar ist. Name: `CanRestoreBackup`. | +| `GET` | `/api/Settings/Restore` | - | `TrackingServerAppSettings` | Stellt die letzte Sicherung wieder her. | +| `GET` | `/api/Settings/Reset` | - | `TrackingServerAppSettings` | Setzt die Konfiguration auf Defaults zurueck. | +| `POST` | `/api/Settings/Border` | Body: `Border` | `Border` | Aktualisiert die Border-Einstellungen. | +| `POST` | `/api/Settings/MinDistanceFromSensor` | Body: JSON-Float | `float` | Setzt den minimalen Sensorabstand. | +| `POST` | `/api/Settings/Threshold` | Body: JSON-Float | `JsonSimpleValue` | Setzt den Threshold. Rueckgabe-Name: `Threshold`. | +| `POST` | `/api/Settings/MinAngle` | Body: JSON-Float | `JsonSimpleValue` | Setzt den Minimalwinkel. Rueckgabe-Name: `MinAngle`. | +| `GET` | `/api/Settings/ComputeZeroPlaneDistance` | - | `Distance` | Berechnet die Zero-Plane-Distanz neu und speichert sie als Default. | +| `GET` | `/api/Settings/ResetAdvancedLimitationFilter` | - | `JsonSimpleValue` | Setzt den Limitation Filter zurueck. Rueckgabe-Name: `Success`. | +| `GET` | `/api/Settings/InitializeAdvancedLimitationFilter` | - | `JsonSimpleValue` | Initialisiert den erweiterten Limitation Filter. Rueckgabe-Name: `Success`. | +| `GET` | `/api/Settings/LimitationFilterInitializing` | - | `JsonSimpleValue` | Liefert den Initialisierungsstatus des Limitation Filters. Name: `IsInitializing`. | +| `GET` | `/api/Settings/LimitationFilterInitState` | - | `JsonSimpleValue` | Liefert, ob der Limitation Filter initialisiert ist. Name: `IsInitialized`. | +| `POST` | `/api/Settings/LimitationFilterType` | Body: `FilterSettings` | `JsonSimpleValue` | Aktualisiert mehrere Limitation-/Filter-Einstellungen gesammelt. Rueckgabe: `{name:"success", value:true}`. | +| `GET` | `/api/Settings/MeasurePerformance` | - | `JsonSimpleValue` | Liefert, ob Performance-Messung aktiv ist. Name: `MeasurePerformance`. | +| `POST` | `/api/Settings/MeasurePerformance` | Body: `JsonSimpleValue` | `JsonSimpleValue` | Setzt die Performance-Messung. Nur `value` wird verwendet; Rueckgabe: `{name:"success", value:true}`. | +| `POST` | `/api/Settings/Distance` | Body: `Distance` | `Distance` | Aktualisiert die Distanz-Einstellungen. | +| `POST` | `/api/Settings/Confidence` | Body: `ConfidenceParameter` | `ConfidenceParameter` | Aktualisiert die Confidence-Einstellungen. | +| `PUT` | `/api/Settings/FilterRadius/{radius}` | Pfad: `radius` | `JsonSimpleValue` | Setzt den Box-Filter-Radius. Name: `BoxFilterRadius`. | +| `PUT` | `/api/Settings/FilterPasses/{numPasses}` | Pfad: `numPasses` | `JsonSimpleValue` | Setzt die Anzahl der Box-Filter-Durchlaeufe. Name: `BoxFilterNumPasses`. | +| `PUT` | `/api/Settings/FilterThreads/{numThreads}` | Pfad: `numThreads` | `JsonSimpleValue` | Setzt die Anzahl der Box-Filter-Threads. Name: `BoxFilterNumThreads`. | +| `POST` | `/api/Settings/UseOptimizedBoxFilter` | Body: `JsonSimpleValue` | `JsonSimpleValue` | Aktiviert oder deaktiviert den optimierten Box-Filter. Nur `value` wird verwendet. | +| `POST` | `/api/Settings/Smoothing` | Body: `SmoothingParameter` | `SmoothingParameter` | Aktualisiert die Smoothing-Einstellungen. | +| `POST` | `/api/Settings/ExtremumsCheck` | Body: `ExtremumDescriptionSettings` | `ExtremumDescriptionSettings` | Aktualisiert die Extremum-Erkennung. | +| `POST` | `/api/Settings/PointCloudSettings` | Body: `PointCloudSettings` | `PointCloudSettings` | Aktualisiert die Point-Cloud-Einstellungen. | +| `POST` | `/api/Settings/LoadSettings` | Body: `TrackingServerAppSettings` | `TrackingServerAppSettings` | Laedt Client-seitige Settings in den Serverzustand. | + +## Processing + +| Methode | Route | Request | Response | Beschreibung | +|---|---|---|---|---| +| `GET` | `/api/Processing/IsLoopRunning` | - | `JsonSimpleValue` | Liefert, ob die Verarbeitungs-Schleife laeuft. Name: `IsLoopRunning`. | +| `GET` | `/api/Processing/GetInterval` | - | `int` | Liefert das aktuelle Update-Intervall in Millisekunden. | +| `GET` | `/api/Processing/GetRemoteProcessorSettings` | - | `RemoteProcessingServiceSettings` | Liefert die Remote-Processing-Konfiguration. | +| `GET` | `/api/Processing/GetObserverType` | - | `uint` | Liefert den aktuell gesetzten `ObserverType` als numerischen Enum-Wert. | +| `GET` | `/api/Processing/GetObserverTypes` | - | `string[]` | Liefert alle verfuegbaren `ObserverType`-Namen. | +| `POST` | `/api/Processing/SetUpdateInterval` | Body: `JsonSimpleValue` mit `name = "UpdateInterval"` | `JsonSimpleValue` oder `400` | Setzt das Update-Intervall. | +| `POST` | `/api/Processing/SetRemoteProcessorSettings` | Body: `RemoteProcessingServiceSettings` | `RemoteProcessingServiceSettings` oder `400` | Aktualisiert die Remote-Processing-Konfiguration. | +| `POST` | `/api/Processing/SelectObserverType` | Body: `JsonSimpleValue` mit `name = "ObserverType"` | `JsonSimpleValue`, `400` oder `500` | Waehlt einen neuen Observer-Typ. | +| `PUT` | `/api/Processing/ToggleInteractionProcessing` | - | `JsonSimpleValue` | Startet oder stoppt die Interaktionsverarbeitung. Name: `IsProcessing`. | + +## Network + +| Methode | Route | Request | Response | Beschreibung | +|---|---|---|---|---| +| `GET` | `/api/Network/Status` | - | `NetworkAttributes` | Liefert einen zusammengefassten Networking-Status inklusive Adresse, Port, Endpoint und Interfaces. | +| `GET` | `/api/Network/IsActive` | - | `bool` | Liefert, ob das Server-Broadcasting aktiv ist. | +| `GET` | `/api/Network/GetAddress` | - | `string` | Liefert die konfigurierte Netzwerkadresse. | +| `GET` | `/api/Network/GetPort` | - | `int` | Liefert den konfigurierten Netzwerkport. | +| `GET` | `/api/Network/GetEndpoint` | - | `string` | Liefert den konfigurierten Endpoint. | +| `GET` | `/api/Network/GetNetworkType` | - | `uint` | Liefert das aktuell gewaehlte Interface als numerischen Enum-Wert. | +| `GET` | `/api/Network/GetNetworkTypes` | - | `string[]` | Liefert alle verfuegbaren `NetworkInterface`-Namen. | +| `POST` | `/api/Network/SetPort` | Body: `JsonSimpleValue` mit `name = "Port"` | `JsonSimpleValue` oder `400` | Setzt den Netzwerkport. | +| `POST` | `/api/Network/SetAddress` | Body: `JsonSimpleValue` mit `name = "Address"` | `JsonSimpleValue` oder `400` | Setzt die Netzwerkadresse. | +| `POST` | `/api/Network/SetEndpoint` | Body: `JsonSimpleValue` mit `name = "Endpoint"` | `JsonSimpleValue` oder `400` | Setzt den Endpoint. | +| `POST` | `/api/Network/SelectNetworkType` | Body: `JsonSimpleValue` mit `name = "NetworkType"` | `JsonSimpleValue`, `400` oder `500` | Waehlt das zu nutzende Netzwerk-Interface. | +| `POST` | `/api/Network/StartBroadcast` | Body: `NetworkSettings` | `NetworkSettings` | Aktualisiert bei Bedarf die Settings, speichert sie und startet anschliessend das Broadcasting. | +| `PUT` | `/api/Network/ToggleNetworking` | - | `JsonSimpleValue` | Startet oder stoppt das Networking. Name: `IsBroadcasting`. | +| `PUT` | `/api/Network/Save` | - | `JsonSimpleValue` | Persistiert die aktuellen Networking-Einstellungen. Name: `SaveSuccessful`. | + +## Tuio + +| Methode | Route | Request | Response | Beschreibung | +|---|---|---|---|---| +| `GET` | `/api/Tuio/IsBroadcasting` | - | `JsonSimpleValue` | Liefert, ob TUIO-Broadcasting aktiv ist. Name: `IsBroadcasting`. | +| `GET` | `/api/Tuio/GetTuioConfiguration` | - | `TuioConfiguration` | Liefert die aktuelle TUIO-Konfiguration. | +| `GET` | `/api/Tuio/GetTransportProtocols` | - | `string[]` | Liefert alle verfuegbaren `TransportProtocol`-Namen. | +| `GET` | `/api/Tuio/GetTuioProtocolVersions` | - | `string[]` | Liefert alle verfuegbaren `ProtocolVersion`-Namen. | +| `GET` | `/api/Tuio/GetTuioInterpretations` | - | `string[]` | Liefert alle verfuegbaren `TuioInterpretation`-Namen. | +| `POST` | `/api/Tuio/SetPort` | Body: `JsonSimpleValue` mit `name = "Port"` | `JsonSimpleValue` oder `400` | Setzt den TUIO-Port. | +| `POST` | `/api/Tuio/SetAddress` | Body: `JsonSimpleValue` mit `name = "Address"` | `JsonSimpleValue` oder `400` | Setzt die TUIO-Adresse. | +| `POST` | `/api/Tuio/SelectTransportProtocol` | Body: `JsonSimpleValue` mit `name = "TransportProtocol"` | `JsonSimpleValue`, `400` oder `500` | Waehlt das Transportprotokoll. | +| `POST` | `/api/Tuio/SelectTuioProtocol` | Body: `JsonSimpleValue` mit `name = "ProtocolVersion"` | `JsonSimpleValue`, `400` oder `500` | Waehlt die TUIO-Protokollversion. | +| `POST` | `/api/Tuio/SelectTuioInterpretation` | Body: `JsonSimpleValue` mit `name = "TuioInterpretation"` | `JsonSimpleValue`, `400` oder `500` | Waehlt die TUIO-Interpretation. | +| `PUT` | `/api/Tuio/ToggleBroadcast` | - | `JsonSimpleValue` | Startet oder stoppt das TUIO-Broadcasting. Name: `IsBroadcasting`. | +| `PUT` | `/api/Tuio/Save` | - | `JsonSimpleValue` | Persistiert die aktuellen TUIO-Einstellungen. Name: `SaveSuccessful`. | + +## DepthImage + +| Methode | Route | Request | Response | Beschreibung | +|---|---|---|---|---| +| `GET` | `/api/DepthImage/PointCloud` | - | `Point3[]` | Liefert die aktuelle Point Cloud oder ein leeres Array. | +| `GET` | `/api/DepthImage/VectorField` | - | `Vector2[][]` | Liefert das aktuelle Vector Field als Jagged Array oder ein leeres Array. | + +## Log + +| Methode | Route | Request | Response | Beschreibung | +|---|---|---|---|---| +| `GET` | `/api/Log` | - | `LogMessageDetail[]` | Liefert die aktuell gepufferten Log-Meldungen. | +| `GET*` | `/api/Log/Messages/{startIndex}` | Pfad: Startindex | `LogMessageDetail[]` | Liefert Log-Meldungen ab einem Startindex. | +| `POST` | `/api/Log/Add` | Body: `JsonSimpleValue` | leer | Schreibt `value` als Error-Logeintrag. | + +`GET*`: Im Code ist fuer `/api/Log/Messages/{startIndex}` kein `[HttpGet]` gesetzt, sondern nur `[Route]`. Der Endpunkt ist damit nicht explizit auf GET eingeschraenkt, wird aber als Lese-Endpunkt verwendet. + +## VersionInfo + +| Methode | Route | Request | Response | Beschreibung | +|---|---|---|---|---| +| `GET` | `/api/VersionInfo` | - | `AppVersionInfo[]` | Liefert die bekannten Versionsinformationen der Anwendung. | + +## RecordRawDepth + +| Methode | Route | Request | Response | Beschreibung | +|---|---|---|---|---| +| `GET` | `/api/RecordRawDepth/IsCapturing` | - | `bool` | Liefert, ob gerade Rohdaten aufgenommen werden. | +| `GET` | `/api/RecordRawDepth/CurrentRecordId` | - | `int` | Liefert die ID der aktuellen oder letzten Aufnahme. | +| `GET` | `/api/RecordRawDepth/CurrentSampleIdx` | - | `int` | Liefert den aktuellen Sample-Index innerhalb der laufenden Aufnahme. | +| `PUT` | `/api/RecordRawDepth/RecordSamples` | Body: `JsonSimpleValue` | `JsonSimpleValue` | Startet eine Rohdatenaufnahme mit fester Laenge von 10 Samples nach `wwwroot/measurements/{id}`. Rueckgabe-Name: `RecordId`. | From 360d73ba9bb5192259c86cff12d79a23b50c1397 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mathias=20M=C3=BCller?= Date: Sun, 15 Mar 2026 21:05:20 +0100 Subject: [PATCH 2/3] Update rest-api.md --- tools/ReFlex.TrackingServer/rest-api.md | 112 ++++++++++++++++++++++++ 1 file changed, 112 insertions(+) diff --git a/tools/ReFlex.TrackingServer/rest-api.md b/tools/ReFlex.TrackingServer/rest-api.md index 06f505c1..52a7c9a3 100644 --- a/tools/ReFlex.TrackingServer/rest-api.md +++ b/tools/ReFlex.TrackingServer/rest-api.md @@ -8,6 +8,118 @@ - `PUT /api/Tracking/{id}` und `PUT /api/Tracking/Configuration/{id}` haben zwar einen Body-Parameter, werten ihn im Controller aber nicht aus. - Der WebSocket-Endpunkt `GET /ReFlex` ist kein REST-Endpunkt und daher hier nicht Teil der Tabelle. +## Beispiel-Requests + +Die lokalen Launch-Profile verwenden standardmaessig `http://localhost:5000` oder `https://localhost:5001`. + +```bash +BASE_URL=http://localhost:5000 +JSON_HEADER='Content-Type: application/json' +``` + +Falls du lokal ueber HTTPS testest, ist wegen des Dev-Zertifikats oft `curl -k` praktischer: + +```bash +BASE_URL=https://localhost:5001 +curl -k "$BASE_URL/api/VersionInfo" +``` + +### Einfache GET-Requests + +```bash +curl "$BASE_URL/api/Tracking" +curl "$BASE_URL/api/Tracking/Status" +curl "$BASE_URL/api/Settings" +curl "$BASE_URL/api/DepthImage/PointCloud" +curl "$BASE_URL/api/VersionInfo" +``` + +### Primitive JSON-Bodies + +JSON-Strings muessen in `curl` als JSON-String serialisiert werden, also z. B. `-d '"recording-01"'`. + +```bash +curl -X PUT "$BASE_URL/api/Tracking/StartRecording" \ + -H "$JSON_HEADER" \ + -d '"recording-01"' + +curl -X PUT "$BASE_URL/api/Tracking/SetAutostart" \ + -H "$JSON_HEADER" \ + -d 'true' + +curl -X POST "$BASE_URL/api/Settings/Threshold" \ + -H "$JSON_HEADER" \ + -d '0.12' + +curl -X PUT "$BASE_URL/api/Tracking/SetDepthImagePreview" \ + -H "$JSON_HEADER" \ + -d 'false' +``` + +### `JsonSimpleValue`-Bodies + +```bash +curl -X POST "$BASE_URL/api/Network/SetPort" \ + -H "$JSON_HEADER" \ + -d '{"name":"Port","value":5500}' + +curl -X POST "$BASE_URL/api/Processing/SetUpdateInterval" \ + -H "$JSON_HEADER" \ + -d '{"name":"UpdateInterval","value":50}' + +curl -X POST "$BASE_URL/api/Processing/SelectObserverType" \ + -H "$JSON_HEADER" \ + -d '{"name":"ObserverType","value":"Remote"}' + +curl -X POST "$BASE_URL/api/Tuio/SelectTransportProtocol" \ + -H "$JSON_HEADER" \ + -d '{"name":"TransportProtocol","value":"Udp"}' + +curl -X POST "$BASE_URL/api/Log/Add" \ + -H "$JSON_HEADER" \ + -d '{"name":"Message","value":"API smoke test"}' +``` + +### Objekt-Payloads + +```bash +curl -X POST "$BASE_URL/api/Calibration/UpdateFrameSize" \ + -H "$JSON_HEADER" \ + -d '{"width":1920,"height":1080,"left":0,"top":0}' + +curl -X POST "$BASE_URL/api/Calibration/UpdateCalibrationPoint/0" \ + -H "$JSON_HEADER" \ + -d '{"positionX":120,"positionY":250,"touchId":1}' + +curl -X POST "$BASE_URL/api/Processing/SetRemoteProcessorSettings" \ + -H "$JSON_HEADER" \ + -d '{"address":"http://localhost:50051/","numSkipValues":0,"completeDataSet":true,"cutOff":0.1,"factor":1200,"algorithm":"Default"}' + +curl -X POST "$BASE_URL/api/Network/StartBroadcast" \ + -H "$JSON_HEADER" \ + -d '{"networkInterfaceType":"Tcp","interval":33,"address":"127.0.0.1","port":7777,"endpoint":"reflex"}' + +curl -X POST "$BASE_URL/api/Settings/PointCloudSettings" \ + -H "$JSON_HEADER" \ + -d '{"fullResolution":false,"updateInterval":100,"pointCloudSize":40000}' +``` + +### Endpunkte mit Pfadparametern + +```bash +curl "$BASE_URL/api/Tracking/Configurations/0" +curl "$BASE_URL/api/Tracking/RecordingFrameCount/recording-01" +curl "$BASE_URL/api/Log/Messages/25" + +curl -X PUT "$BASE_URL/api/Tracking/ToggleTracking/0" \ + -H "$JSON_HEADER" \ + -d '0' + +curl -X PUT "$BASE_URL/api/RecordRawDepth/RecordSamples" \ + -H "$JSON_HEADER" \ + -d '{"name":"RecordId","value":42}' +``` + ## Calibration | Methode | Route | Request | Response | Beschreibung | From bad2f3c4954b4717d734d27120cf5fdb1d6dec65 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mathias=20M=C3=BCller?= Date: Thu, 2 Apr 2026 13:37:17 +0200 Subject: [PATCH 3/3] updated api documentation --- tools/ReFlex.TrackingServer/rest-api.md | 33 ++++++++++--------- tools/emulator/src/app/data/gesture-track.ts | 3 +- .../data/sampleForMemoryEvaluation.json | 1 + .../src/assets/data/sampleGesture.json | 1 + 4 files changed, 21 insertions(+), 17 deletions(-) diff --git a/tools/ReFlex.TrackingServer/rest-api.md b/tools/ReFlex.TrackingServer/rest-api.md index 52a7c9a3..f6375f9c 100644 --- a/tools/ReFlex.TrackingServer/rest-api.md +++ b/tools/ReFlex.TrackingServer/rest-api.md @@ -141,16 +141,16 @@ curl -X PUT "$BASE_URL/api/RecordRawDepth/RecordSamples" \ | Methode | Route | Request | Response | Beschreibung | |---|---|---|---|---| | `GET` | `/api/Tracking` | - | `IDepthCamera[]` | Liefert alle verfuegbaren Kameras. | -| `GET` | `/api/Tracking/SelectedCamera` | - | `IDepthCamera` | Liefert die aktuell ausgewaehlte Kamera. | -| `GET` | `/api/Tracking/SelectedCameraConfig` | - | `StreamParameter` | Liefert die aktuell ausgewaehlte Kamerakonfiguration. | -| `GET` | `/api/Tracking/Configurations/{id}` | Pfad: Kamera-ID | `StreamParameter[]` | Liefert die verfuegbaren Konfigurationen fuer eine Kamera. | | `GET` | `/api/Tracking/{id}` | Pfad: Kamera-ID | `IDepthCamera` oder `null` | Liefert eine einzelne Kamera anhand ihrer ID. | -| `GET` | `/api/Tracking/Status` | - | `TrackingConfigState` oder `null` | Liefert den aktuellen Tracking-Status. | | `PUT` | `/api/Tracking/{id}` | Pfad: Kamera-ID, Body: JSON-String (ungenutzt) | leer | Waehlt eine Kamera per ID aus. | +| `GET` | `/api/Tracking/Configurations/{id}` | Pfad: Kamera-ID | `StreamParameter[]` | Liefert die verfuegbaren Konfigurationen fuer eine Kamera. | | `PUT` | `/api/Tracking/Configuration/{id}` | Pfad: Konfigurations-ID, Body: JSON-String (ungenutzt) | leer | Waehlt eine Kamerakonfiguration per ID aus. | -| `PUT` | `/api/Tracking/ToggleTracking/{id}` | Pfad: Kamera-ID, Body: JSON-Integer `configIdx` | `202 Accepted` | Startet oder stoppt das Tracking fuer Kamera und Konfiguration. | +| `GET` | `/api/Tracking/SelectedCamera` | - | `IDepthCamera` | Liefert die aktuell ausgewaehlte Kamera. | +| `GET` | `/api/Tracking/SelectedCameraConfig` | - | `StreamParameter` | Liefert die aktuell ausgewaehlte Kamerakonfiguration. | | `PUT` | `/api/Tracking/SetDepthImagePreview` | Body: JSON-Boolean | `202 Accepted` | Aktiviert oder deaktiviert den Raw-Depth-Preview-Stream. | | `PUT` | `/api/Tracking/SetDepthImagePointCloudPreview` | Body: JSON-Boolean | `202 Accepted` | Aktiviert oder deaktiviert den Point-Cloud-Preview-Stream. | +| `GET` | `/api/Tracking/Status` | - | `TrackingConfigState` oder `null` | Liefert den aktuellen Tracking-Status. | +| `PUT` | `/api/Tracking/ToggleTracking/{id}` | Pfad: Kamera-ID, Body: JSON-Integer `configIdx` | `202 Accepted` | Startet oder stoppt das Tracking fuer Kamera und Konfiguration. | | `GET` | `/api/Tracking/Recordings` | - | `StreamParameter[]` | Liefert die vorhandenen Recording-Konfigurationen. | | `PUT` | `/api/Tracking/StartRecording` | Body: JSON-String `name` | `string` oder `403` | Startet eine Aufnahme der aktuell streamenden Kamera. | | `GET` | `/api/Tracking/StopRecording` | - | `string` | Stoppt die laufende Aufnahme und liefert das Recorder-Ergebnis. | @@ -170,41 +170,42 @@ curl -X PUT "$BASE_URL/api/RecordRawDepth/RecordSamples" \ | `GET` | `/api/Settings/CanRestore` | - | `JsonSimpleValue` | Liefert, ob ein Backup fuer Restore verfuegbar ist. Name: `CanRestoreBackup`. | | `GET` | `/api/Settings/Restore` | - | `TrackingServerAppSettings` | Stellt die letzte Sicherung wieder her. | | `GET` | `/api/Settings/Reset` | - | `TrackingServerAppSettings` | Setzt die Konfiguration auf Defaults zurueck. | +| `POST` | `/api/Settings/LoadSettings` | Body: `TrackingServerAppSettings` | `TrackingServerAppSettings` | Laedt Client-seitige Settings in den Serverzustand. | | `POST` | `/api/Settings/Border` | Body: `Border` | `Border` | Aktualisiert die Border-Einstellungen. | | `POST` | `/api/Settings/MinDistanceFromSensor` | Body: JSON-Float | `float` | Setzt den minimalen Sensorabstand. | -| `POST` | `/api/Settings/Threshold` | Body: JSON-Float | `JsonSimpleValue` | Setzt den Threshold. Rueckgabe-Name: `Threshold`. | -| `POST` | `/api/Settings/MinAngle` | Body: JSON-Float | `JsonSimpleValue` | Setzt den Minimalwinkel. Rueckgabe-Name: `MinAngle`. | -| `GET` | `/api/Settings/ComputeZeroPlaneDistance` | - | `Distance` | Berechnet die Zero-Plane-Distanz neu und speichert sie als Default. | -| `GET` | `/api/Settings/ResetAdvancedLimitationFilter` | - | `JsonSimpleValue` | Setzt den Limitation Filter zurueck. Rueckgabe-Name: `Success`. | +| `POST` | `/api/Settings/LimitationFilterType` | Body: `FilterSettings` | `JsonSimpleValue` | Aktualisiert mehrere Limitation-/Filter-Einstellungen gesammelt. Rueckgabe: `{name:"success", value:true}`. | | `GET` | `/api/Settings/InitializeAdvancedLimitationFilter` | - | `JsonSimpleValue` | Initialisiert den erweiterten Limitation Filter. Rueckgabe-Name: `Success`. | | `GET` | `/api/Settings/LimitationFilterInitializing` | - | `JsonSimpleValue` | Liefert den Initialisierungsstatus des Limitation Filters. Name: `IsInitializing`. | | `GET` | `/api/Settings/LimitationFilterInitState` | - | `JsonSimpleValue` | Liefert, ob der Limitation Filter initialisiert ist. Name: `IsInitialized`. | -| `POST` | `/api/Settings/LimitationFilterType` | Body: `FilterSettings` | `JsonSimpleValue` | Aktualisiert mehrere Limitation-/Filter-Einstellungen gesammelt. Rueckgabe: `{name:"success", value:true}`. | -| `GET` | `/api/Settings/MeasurePerformance` | - | `JsonSimpleValue` | Liefert, ob Performance-Messung aktiv ist. Name: `MeasurePerformance`. | -| `POST` | `/api/Settings/MeasurePerformance` | Body: `JsonSimpleValue` | `JsonSimpleValue` | Setzt die Performance-Messung. Nur `value` wird verwendet; Rueckgabe: `{name:"success", value:true}`. | +| `GET` | `/api/Settings/ResetAdvancedLimitationFilter` | - | `JsonSimpleValue` | Setzt den Limitation Filter zurueck. Rueckgabe-Name: `Success`. | +| `GET` | `/api/Settings/ComputeZeroPlaneDistance` | - | `Distance` | Berechnet die Zero-Plane-Distanz neu und speichert sie als Default. | | `POST` | `/api/Settings/Distance` | Body: `Distance` | `Distance` | Aktualisiert die Distanz-Einstellungen. | | `POST` | `/api/Settings/Confidence` | Body: `ConfidenceParameter` | `ConfidenceParameter` | Aktualisiert die Confidence-Einstellungen. | +| `POST` | `/api/Settings/Threshold` | Body: JSON-Float | `JsonSimpleValue` | Setzt den Threshold. Rueckgabe-Name: `Threshold`. | +| `POST` | `/api/Settings/MinAngle` | Body: JSON-Float | `JsonSimpleValue` | Setzt den Minimalwinkel. Rueckgabe-Name: `MinAngle`. | | `PUT` | `/api/Settings/FilterRadius/{radius}` | Pfad: `radius` | `JsonSimpleValue` | Setzt den Box-Filter-Radius. Name: `BoxFilterRadius`. | | `PUT` | `/api/Settings/FilterPasses/{numPasses}` | Pfad: `numPasses` | `JsonSimpleValue` | Setzt die Anzahl der Box-Filter-Durchlaeufe. Name: `BoxFilterNumPasses`. | | `PUT` | `/api/Settings/FilterThreads/{numThreads}` | Pfad: `numThreads` | `JsonSimpleValue` | Setzt die Anzahl der Box-Filter-Threads. Name: `BoxFilterNumThreads`. | | `POST` | `/api/Settings/UseOptimizedBoxFilter` | Body: `JsonSimpleValue` | `JsonSimpleValue` | Aktiviert oder deaktiviert den optimierten Box-Filter. Nur `value` wird verwendet. | | `POST` | `/api/Settings/Smoothing` | Body: `SmoothingParameter` | `SmoothingParameter` | Aktualisiert die Smoothing-Einstellungen. | | `POST` | `/api/Settings/ExtremumsCheck` | Body: `ExtremumDescriptionSettings` | `ExtremumDescriptionSettings` | Aktualisiert die Extremum-Erkennung. | +| `GET` | `/api/Settings/MeasurePerformance` | - | `JsonSimpleValue` | Liefert, ob Performance-Messung aktiv ist. Name: `MeasurePerformance`. | +| `POST` | `/api/Settings/MeasurePerformance` | Body: `JsonSimpleValue` | `JsonSimpleValue` | Setzt die Performance-Messung. Nur `value` wird verwendet; Rueckgabe: `{name:"success", value:true}`. | | `POST` | `/api/Settings/PointCloudSettings` | Body: `PointCloudSettings` | `PointCloudSettings` | Aktualisiert die Point-Cloud-Einstellungen. | -| `POST` | `/api/Settings/LoadSettings` | Body: `TrackingServerAppSettings` | `TrackingServerAppSettings` | Laedt Client-seitige Settings in den Serverzustand. | + ## Processing | Methode | Route | Request | Response | Beschreibung | |---|---|---|---|---| -| `GET` | `/api/Processing/IsLoopRunning` | - | `JsonSimpleValue` | Liefert, ob die Verarbeitungs-Schleife laeuft. Name: `IsLoopRunning`. | | `GET` | `/api/Processing/GetInterval` | - | `int` | Liefert das aktuelle Update-Intervall in Millisekunden. | -| `GET` | `/api/Processing/GetRemoteProcessorSettings` | - | `RemoteProcessingServiceSettings` | Liefert die Remote-Processing-Konfiguration. | | `GET` | `/api/Processing/GetObserverType` | - | `uint` | Liefert den aktuell gesetzten `ObserverType` als numerischen Enum-Wert. | | `GET` | `/api/Processing/GetObserverTypes` | - | `string[]` | Liefert alle verfuegbaren `ObserverType`-Namen. | +| `GET` | `/api/Processing/GetRemoteProcessorSettings` | - | `RemoteProcessingServiceSettings` | Liefert die Remote-Processing-Konfiguration. | +| `GET` | `/api/Processing/IsLoopRunning` | - | `JsonSimpleValue` | Liefert, ob die Verarbeitungs-Schleife laeuft. Name: `IsLoopRunning`. | | `POST` | `/api/Processing/SetUpdateInterval` | Body: `JsonSimpleValue` mit `name = "UpdateInterval"` | `JsonSimpleValue` oder `400` | Setzt das Update-Intervall. | -| `POST` | `/api/Processing/SetRemoteProcessorSettings` | Body: `RemoteProcessingServiceSettings` | `RemoteProcessingServiceSettings` oder `400` | Aktualisiert die Remote-Processing-Konfiguration. | | `POST` | `/api/Processing/SelectObserverType` | Body: `JsonSimpleValue` mit `name = "ObserverType"` | `JsonSimpleValue`, `400` oder `500` | Waehlt einen neuen Observer-Typ. | +| `POST` | `/api/Processing/SetRemoteProcessorSettings` | Body: `RemoteProcessingServiceSettings` | `RemoteProcessingServiceSettings` oder `400` | Aktualisiert die Remote-Processing-Konfiguration. | | `PUT` | `/api/Processing/ToggleInteractionProcessing` | - | `JsonSimpleValue` | Startet oder stoppt die Interaktionsverarbeitung. Name: `IsProcessing`. | ## Network diff --git a/tools/emulator/src/app/data/gesture-track.ts b/tools/emulator/src/app/data/gesture-track.ts index 44d3718f..cc237d20 100644 --- a/tools/emulator/src/app/data/gesture-track.ts +++ b/tools/emulator/src/app/data/gesture-track.ts @@ -2,5 +2,6 @@ import { GestureTrackFrame } from "./gesture-track-frame"; export interface GestureTrack { touchId: number, - frames: Array + frames: Array, + startFrame: number } diff --git a/tools/emulator/src/assets/data/sampleForMemoryEvaluation.json b/tools/emulator/src/assets/data/sampleForMemoryEvaluation.json index 3d8ec342..b609d414 100644 --- a/tools/emulator/src/assets/data/sampleForMemoryEvaluation.json +++ b/tools/emulator/src/assets/data/sampleForMemoryEvaluation.json @@ -6,6 +6,7 @@ "tracks": [ { "touchId": 1, + "startFrame": 0, "frames": [ { "x": 0.0, diff --git a/tools/emulator/src/assets/data/sampleGesture.json b/tools/emulator/src/assets/data/sampleGesture.json index 5f99b7e1..e75034b1 100644 --- a/tools/emulator/src/assets/data/sampleGesture.json +++ b/tools/emulator/src/assets/data/sampleGesture.json @@ -6,6 +6,7 @@ "tracks": [ { "touchId": 1, + "startFrame": 0, "frames" : [ { "x": 50, "y": 70, "z": -0.1 }, { "x": 50, "y": 70, "z": -0.2 },