Signal-Upload (Binary)
POST /api/signals/upload
Lädt ein Signal als multipart/form-data hoch. Im Gegensatz zu POST /api/signals/send (JSON inline) wird hier der Dateiinhalt direkt übertragen – der Server benötigt keinen Host-Dateipfad und damit keinen Zugriff auf das Host-Dateisystem. Das ist der empfohlene Weg für große Signale und funktioniert auch im Flatpak.
Tip
Praktische Schritt-für-Schritt-Anleitung: Daten aus Python & MATLAB importieren
Request
POST /api/signals/upload HTTP/1.1Host: localhost:5678Content-Type: multipart/form-data; boundary=...Form-Felder
| Feld | Typ | Erforderlich | Beschreibung |
|---|---|---|---|
file | Datei | Ja | .npz oder .mat mit Arrays y (erforderlich), x, z (optional) |
meta | JSON-String | Nein | {name, y_unit, x_unit, z_unit, target_source_id, overwrite} |
Die Metadaten können wahlweise als meta-JSON-Feld oder einzeln als Form-Felder (name, y_unit, x_unit, z_unit, target_source_id) übergeben werden. name und target_source_id sind erforderlich. Mit overwrite: true wird ein gleichnamiges Signal in der Ziel-Source ersetzt.
Dateiformat
- NumPy (.npz): Muss ein Array
yenthalten. Optional:xundz. - MATLAB (.mat): Muss eine Variable
yenthalten. Optional:xundz.
Response
Status Code: 200 OK
{ "status": "ok", "result": { "signal_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7", "name": "Großes Signal", "sample_count": 1000000 }}Fehler
| Status | Bedeutung |
|---|---|
400 | Kein file-Feld oder ungültige Metadaten |
404 | target_source_id nicht gefunden |
415 | Nicht unterstützter Dateityp (nur .npz / .mat) |
500 | Serverfehler beim Speichern oder Laden der Datei |
POST /api/signals/upload_batch
Lädt mehrere Signale in einem einzigen Request hoch. Das spart die HTTP-Round-Trips vieler Einzel-Uploads – ideal um viele (große) Kanäle, z.B. eine ganze Messung, effizient auf einmal zu übertragen.
Request
POST /api/signals/upload_batch HTTP/1.1Host: localhost:5678Content-Type: multipart/form-data; boundary=...Form-Felder
| Feld | Typ | Erforderlich | Beschreibung |
|---|---|---|---|
file | Datei (mehrfach) | Ja | Ein .npz/.mat Upload pro Signal |
meta | JSON-Array oder -Objekt | Nein | Ein Objekt pro Datei (gleiche Reihenfolge), oder ein einzelnes Objekt für alle Dateien |
target_source_id | string | Nein | Default-Ziel für Signale ohne eigenes target_source_id |
Jedes meta-Objekt akzeptiert dieselben Felder wie bei /api/signals/upload, einschließlich overwrite. Die Zuordnung von file zu meta erfolgt über die Reihenfolge.
Response
Status Code: 200 OK
{ "status": "ok", "result": { "signals": [ {"signal_id": "...", "name": "Kanal A", "sample_count": 1000000}, {"signal_id": "...", "name": "Kanal B", "sample_count": 1000000} ], "errors": [] }}Ein fehlerhaftes Einzel-Signal bricht den Request nicht ab. Erfolgreiche Importe stehen in signals, fehlgeschlagene in errors (jeweils mit index und error).
Fehler
| Status | Bedeutung |
|---|---|
400 | Kein file-Feld oder meta ist kein JSON-Array |
500 | Serverfehler |