StudioTraining / StudioTrainingPlanExercise
Liefert eine Liste der StudioTrainingPlanExercise-Objekte.
GET/api/crm/studio_training/plan_exercise
Query-Parameter
idstring | |
deletedboolean | Diese Eigenschaft markiert eine Entität als gelöscht / archiviert | Benötigtes Zugriffsrecht: SCOPE | Standardwert: false |
planDaystring | |
presetstring | |
devicestring | Optionale konkrete Maschine für diese Übung |
circuitGroupstring | Übungen desselben Tages mit gleichem Schlüssel bilden einen Superset- / Zirkeltrainingsblock | Benötigt Zugriffsrecht: SCOPE |
searchStringstring | Text, nach dem in der Liste gesucht wird |
orderFieldNamestring | Name des Bestellfelds |
orderFieldSortstring | SortiermodusErlaubt: DESCASC |
pageinteger | Seite der Liste |
pageSizeinteger | Anzahl der Einträge je Seite |
withMaxPageNumberstring | gibt die Anzahl verfügbarer Seiten als Header zurück, wenn dies gesetzt ist |
Antworten
200Liefert eine Liste der StudioTrainingPlanExercise-Objekte.array<StudioTrainingPlanExercise>
Felder anzeigen (21)
idintegerPrimärschlüssel der Planübung. Interne ID.
plan_dayStudioTrainingPlanDayPlantag, zu dem die Übung gehört.
Felder anzeigen (11)
idintegerPrimärschlüssel des Plantags. Interne ID.
planStudioTrainingPlanPlan, zu dem der Tag gehört.
namestringName des Plantags.
descriptionstringBeschreibung des Plantags.
day_of_weekintegerOptionaler fester Wochentag (1 = Montag ... 7 = Sonntag), wenn der Plan an Wochentage gebunden ist
roundsintegerAnzahl der Runden, wenn der Tag als Zirkel (Zirkeltraining) ausgeführt wird
round_rest_secondsintegerPause zwischen den Zirkelrunden in Sekunden
createdstring (date-time)Zeitpunkt, zu dem der Datensatz angelegt wurde.
updatedstring (date-time)Zeitpunkt, zu dem der Datensatz zuletzt aktualisiert wurde.
deletedbooleanDiese Eigenschaft markiert eine Entität als gelöscht / archiviert
orderintegerPosition des Datensatzes in der Reihenfolge.
presetStudioTrainingPresetTrainingsvorlage der Übung.
Felder anzeigen (25)
idintegerPrimärschlüssel der Trainingsvorlage. Interne ID.
namestringName der Übung.
descriptionstringBeschreibung der Übung.
imageAttachment10Bild der Übung.
videoAttachment10Video der Übung.
durationintegerTypische Dauer der Übung in Sekunden.
muscle_groupsarray<StudioTrainingMuscleGroup>Hauptsächlich trainierte Muskelgruppen
secondary_muscle_groupsarray<StudioTrainingMuscleGroup>Zusätzlich trainierte Muskelgruppen
exercise_typestringKategorie der Übung, z. B. Kraft, Cardio, Mobilität, Reha
equipmentstringBenötigte Ausstattung als Freitext, z. B. Langhantel, Kabelzug, Körpergewicht
execution_notesstringAusführungshinweise und Sicherheitshinweise für das Mitglied
default_setsintegerStandardverordnung, die vorgeschlagen wird, wenn die Vorlage dem Plan hinzugefügt wird
default_repetitionsintegerStandardanzahl der Wiederholungen.
default_rest_secondsintegerStandard-Ruhezeit in Sekunden.
content_sourcestringEine der CONTENT_SOURCE_*-Konstanten
content_source_namestringName des Katalogs, aus dem der Eintrag übernommen wurde, z. B. wger
licensestringLizenz des importierten Inhalts, z. B. CC-BY-SA 4.0
license_authorstringAutor, der zur Erfüllung der Lizenzangabe genannt werden muss
license_author_urlstringLink zum Urheber der Bild- oder Videolizenz.
review_statusstringEine der REVIEW_STATUS_*-Konstanten, um generierte oder importierte Übungsanleitungen unter menschlicher Kontrolle zu halten, bevor sie veröffentlicht werden
reviewed_atstring (date-time)Zeitpunkt, zu dem die Übung geprüft wurde.
reviewed_bystringName des Prüfers.
createdstring (date-time)Zeitpunkt, zu dem der Datensatz angelegt wurde.
updatedstring (date-time)Zeitpunkt, zu dem der Datensatz zuletzt aktualisiert wurde.
deletedbooleanDiese Eigenschaft markiert eine Entität als gelöscht / archiviert
deviceStudioDeviceOptionale konkrete Maschine für diese Übung
Felder anzeigen (10)
idintegerPrimärschlüssel des Studiogeräts. Interne ID.
namestringName des Geräts.
descriptionstringBeschreibung des Geräts.
manufacturerstringHersteller des Geräts.
modelstringModell des Geräts.
device_typestringArt des Geräts, zum Beispiel Laufband oder Fahrrad.
identifierstringKennung des Geräts beim Hersteller.
createdstring (date-time)Zeitpunkt, zu dem der Datensatz angelegt wurde.
updatedstring (date-time)Zeitpunkt, zu dem der Datensatz zuletzt aktualisiert wurde.
deletedbooleanDiese Eigenschaft markiert eine Entität als gelöscht / archiviert
namestringÜberschreibt den Vorgabenamen, wenn der Trainer die Übung für diesen Plan umbenannt hat
setsintegerAnzahl der Sätze.
repetitionsintegerAnzahl der Wiederholungen pro Satz.
repetitions_tointegerObere Grenze, wenn die Verordnung ein Wiederholungsbereich ist (z. B. 8 - 12)
weightnumber (float)Gewicht je Wiederholung.
weight_unitstringEinheit des Gewichts, zum Beispiel kg.
duration_secondsintegerDauer eines Satzes in Sekunden bei zeitbasierten Übungen
rest_secondsintegerPause zwischen den Sätzen in Sekunden
tempostringBewegungstempo-Notation, z. B. "2-0-2-0"
intensity_percentnumber (float)Zielintensität in Prozent des One-Repetition-Maximums
rpenumber (float)Zielwert der empfundenen Anstrengung / Wiederholungen in Reserve
circuit_groupstringÜbungen desselben Tages mit gleichem Schlüssel bilden einen Superset- / Zirkeltrainingsblock
notesstringAnmerkungen zur Übung.
createdstring (date-time)Zeitpunkt, zu dem der Datensatz angelegt wurde.
updatedstring (date-time)Zeitpunkt, zu dem der Datensatz zuletzt aktualisiert wurde.
deletedbooleanDiese Eigenschaft markiert eine Entität als gelöscht / archiviert
orderintegerPosition des Datensatzes in der Reihenfolge.
curl --request GET \
--url https://eure-instanz.iw-erp.de/api/crm/studio_training/plan_exercise \
--header 'x-iw-jwt-token: <TOKEN>'const options = {method: 'GET', headers: {'x-iw-jwt-token': '<TOKEN>'}};
fetch('https://eure-instanz.iw-erp.de/api/crm/studio_training/plan_exercise', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://eure-instanz.iw-erp.de/api/crm/studio_training/plan_exercise"
headers = {"x-iw-jwt-token": "<TOKEN>"}
response = requests.get(url, headers=headers)
print(response.text)<?php
require_once('vendor/autoload.php');
$client = new \GuzzleHttp\Client();
$response = $client->request('GET', 'https://eure-instanz.iw-erp.de/api/crm/studio_training/plan_exercise', [
'headers' => [
'x-iw-jwt-token' => '<TOKEN>',
],
]);
echo $response->getBody();using System.Net.Http.Headers;
var client = new HttpClient();
var request = new HttpRequestMessage
{
Method = HttpMethod.Get,
RequestUri = new Uri("https://eure-instanz.iw-erp.de/api/crm/studio_training/plan_exercise"),
Headers =
{
{ "x-iw-jwt-token", "<TOKEN>" },
},
};
using (var response = await client.SendAsync(request))
{
response.EnsureSuccessStatusCode();
var body = await response.Content.ReadAsStringAsync();
Console.WriteLine(body);
}OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder()
.url("https://eure-instanz.iw-erp.de/api/crm/studio_training/plan_exercise")
.get()
.addHeader("x-iw-jwt-token", "<TOKEN>")
.build();
Response response = client.newCall(request).execute();package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://eure-instanz.iw-erp.de/api/crm/studio_training/plan_exercise"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("x-iw-jwt-token", "<TOKEN>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}Dart mit dem Package iw_erp_api
import 'package:iw_erp_api/clients/studio_training_plan_exercise_controller.dart';
import 'package:iw_erp_api/logic/iw_api_state.dart';
IwApiState().host = 'eure-instanz.iw-erp.de';
IwApiState().currentJwtApiToken = '<TOKEN>';
final result = await StudioTrainingPlanExerciseController.getAll();
if (result.success) {
print(result.data);
}[
{
"id": 42,
"name": "Beispiel",
"plan_day": {
"id": 42,
"name": "Beispiel",
"description": "Text",
"day_of_week": 1,
"rounds": 1,
"round_rest_seconds": 1,
"created": "2026-10-15T09:30:00+02:00",
"updated": "2026-10-15T09:30:00+02:00",
"deleted": true,
"order": 1
},
"preset": {
"id": 42,
"name": "Beispiel",
"description": "Text",
"content_source_name": "Beispiel",
"license_author_url": "https://vynst.de",
"duration": 1,
"exercise_type": "string",
"equipment": "string",
"execution_notes": "string",
"default_sets": 1
},
"device": {
"id": 42,
"name": "Beispiel",
"description": "Text",
"manufacturer": "string",
"model": "string",
"device_type": "string",
"identifier": "42",
"created": "2026-10-15T09:30:00+02:00",
"updated": "2026-10-15T09:30:00+02:00",
"deleted": true
},
"sets": 1,
"repetitions": 1,
"repetitions_to": 1,
"weight": 1.5,
"weight_unit": "string"
}
]Einzelnen StudioTrainingPlanExercise anlegen
POST/api/crm/studio_training/plan_exercise
Request-Body application/json
dataStudioTrainingPlanExerciseFelder anzeigen (21)
idintegerPrimärschlüssel der Planübung. Interne ID.
plan_dayStudioTrainingPlanDayPlantag, zu dem die Übung gehört.
presetStudioTrainingPresetTrainingsvorlage der Übung.
deviceStudioDeviceOptionale konkrete Maschine für diese Übung
namestringÜberschreibt den Vorgabenamen, wenn der Trainer die Übung für diesen Plan umbenannt hat
setsintegerAnzahl der Sätze.
repetitionsintegerAnzahl der Wiederholungen pro Satz.
repetitions_tointegerObere Grenze, wenn die Verordnung ein Wiederholungsbereich ist (z. B. 8 - 12)
weightnumber (float)Gewicht je Wiederholung.
weight_unitstringEinheit des Gewichts, zum Beispiel kg.
duration_secondsintegerDauer eines Satzes in Sekunden bei zeitbasierten Übungen
rest_secondsintegerPause zwischen den Sätzen in Sekunden
tempostringBewegungstempo-Notation, z. B. "2-0-2-0"
intensity_percentnumber (float)Zielintensität in Prozent des One-Repetition-Maximums
rpenumber (float)Zielwert der empfundenen Anstrengung / Wiederholungen in Reserve
circuit_groupstringÜbungen desselben Tages mit gleichem Schlüssel bilden einen Superset- / Zirkeltrainingsblock
notesstringAnmerkungen zur Übung.
createdstring (date-time)Zeitpunkt, zu dem der Datensatz angelegt wurde.
updatedstring (date-time)Zeitpunkt, zu dem der Datensatz zuletzt aktualisiert wurde.
deletedbooleanDiese Eigenschaft markiert eine Entität als gelöscht / archiviert
orderintegerPosition des Datensatzes in der Reihenfolge.
Antworten
200Einzelnen StudioTrainingPlanExercise anlegenStudioTrainingPlanExercise
Felder anzeigen (21)
idintegerPrimärschlüssel der Planübung. Interne ID.
plan_dayStudioTrainingPlanDayPlantag, zu dem die Übung gehört.
Felder anzeigen (11)
idintegerPrimärschlüssel des Plantags. Interne ID.
planStudioTrainingPlanPlan, zu dem der Tag gehört.
namestringName des Plantags.
descriptionstringBeschreibung des Plantags.
day_of_weekintegerOptionaler fester Wochentag (1 = Montag ... 7 = Sonntag), wenn der Plan an Wochentage gebunden ist
roundsintegerAnzahl der Runden, wenn der Tag als Zirkel (Zirkeltraining) ausgeführt wird
round_rest_secondsintegerPause zwischen den Zirkelrunden in Sekunden
createdstring (date-time)Zeitpunkt, zu dem der Datensatz angelegt wurde.
updatedstring (date-time)Zeitpunkt, zu dem der Datensatz zuletzt aktualisiert wurde.
deletedbooleanDiese Eigenschaft markiert eine Entität als gelöscht / archiviert
orderintegerPosition des Datensatzes in der Reihenfolge.
presetStudioTrainingPresetTrainingsvorlage der Übung.
Felder anzeigen (25)
idintegerPrimärschlüssel der Trainingsvorlage. Interne ID.
namestringName der Übung.
descriptionstringBeschreibung der Übung.
imageAttachment10Bild der Übung.
videoAttachment10Video der Übung.
durationintegerTypische Dauer der Übung in Sekunden.
muscle_groupsarray<StudioTrainingMuscleGroup>Hauptsächlich trainierte Muskelgruppen
secondary_muscle_groupsarray<StudioTrainingMuscleGroup>Zusätzlich trainierte Muskelgruppen
exercise_typestringKategorie der Übung, z. B. Kraft, Cardio, Mobilität, Reha
equipmentstringBenötigte Ausstattung als Freitext, z. B. Langhantel, Kabelzug, Körpergewicht
execution_notesstringAusführungshinweise und Sicherheitshinweise für das Mitglied
default_setsintegerStandardverordnung, die vorgeschlagen wird, wenn die Vorlage dem Plan hinzugefügt wird
default_repetitionsintegerStandardanzahl der Wiederholungen.
default_rest_secondsintegerStandard-Ruhezeit in Sekunden.
content_sourcestringEine der CONTENT_SOURCE_*-Konstanten
content_source_namestringName des Katalogs, aus dem der Eintrag übernommen wurde, z. B. wger
licensestringLizenz des importierten Inhalts, z. B. CC-BY-SA 4.0
license_authorstringAutor, der zur Erfüllung der Lizenzangabe genannt werden muss
license_author_urlstringLink zum Urheber der Bild- oder Videolizenz.
review_statusstringEine der REVIEW_STATUS_*-Konstanten, um generierte oder importierte Übungsanleitungen unter menschlicher Kontrolle zu halten, bevor sie veröffentlicht werden
reviewed_atstring (date-time)Zeitpunkt, zu dem die Übung geprüft wurde.
reviewed_bystringName des Prüfers.
createdstring (date-time)Zeitpunkt, zu dem der Datensatz angelegt wurde.
updatedstring (date-time)Zeitpunkt, zu dem der Datensatz zuletzt aktualisiert wurde.
deletedbooleanDiese Eigenschaft markiert eine Entität als gelöscht / archiviert
deviceStudioDeviceOptionale konkrete Maschine für diese Übung
Felder anzeigen (10)
idintegerPrimärschlüssel des Studiogeräts. Interne ID.
namestringName des Geräts.
descriptionstringBeschreibung des Geräts.
manufacturerstringHersteller des Geräts.
modelstringModell des Geräts.
device_typestringArt des Geräts, zum Beispiel Laufband oder Fahrrad.
identifierstringKennung des Geräts beim Hersteller.
createdstring (date-time)Zeitpunkt, zu dem der Datensatz angelegt wurde.
updatedstring (date-time)Zeitpunkt, zu dem der Datensatz zuletzt aktualisiert wurde.
deletedbooleanDiese Eigenschaft markiert eine Entität als gelöscht / archiviert
namestringÜberschreibt den Vorgabenamen, wenn der Trainer die Übung für diesen Plan umbenannt hat
setsintegerAnzahl der Sätze.
repetitionsintegerAnzahl der Wiederholungen pro Satz.
repetitions_tointegerObere Grenze, wenn die Verordnung ein Wiederholungsbereich ist (z. B. 8 - 12)
weightnumber (float)Gewicht je Wiederholung.
weight_unitstringEinheit des Gewichts, zum Beispiel kg.
duration_secondsintegerDauer eines Satzes in Sekunden bei zeitbasierten Übungen
rest_secondsintegerPause zwischen den Sätzen in Sekunden
tempostringBewegungstempo-Notation, z. B. "2-0-2-0"
intensity_percentnumber (float)Zielintensität in Prozent des One-Repetition-Maximums
rpenumber (float)Zielwert der empfundenen Anstrengung / Wiederholungen in Reserve
circuit_groupstringÜbungen desselben Tages mit gleichem Schlüssel bilden einen Superset- / Zirkeltrainingsblock
notesstringAnmerkungen zur Übung.
createdstring (date-time)Zeitpunkt, zu dem der Datensatz angelegt wurde.
updatedstring (date-time)Zeitpunkt, zu dem der Datensatz zuletzt aktualisiert wurde.
deletedbooleanDiese Eigenschaft markiert eine Entität als gelöscht / archiviert
orderintegerPosition des Datensatzes in der Reihenfolge.
curl --request POST \
--url https://eure-instanz.iw-erp.de/api/crm/studio_training/plan_exercise \
--header 'content-type: application/json' \
--header 'x-iw-jwt-token: <TOKEN>' \
--data '
{
"data": {
"id": 42,
"name": "Beispiel",
"plan_day": {
"id": 42,
"name": "Beispiel",
"description": "Text",
"day_of_week": 1,
"rounds": 1,
"round_rest_seconds": 1
},
"preset": {
"id": 42,
"name": "Beispiel",
"description": "Text",
"content_source_name": "Beispiel",
"license_author_url": "https://vynst.de",
"duration": 1
},
"device": {
"id": 42,
"name": "Beispiel",
"description": "Text",
"manufacturer": "string",
"model": "string",
"device_type": "string"
},
"sets": 1
}
}
'const options = {
method: 'POST',
headers: {'x-iw-jwt-token': '<TOKEN>', 'content-type': 'application/json'},
body: JSON.stringify({
data: {
id: 42,
name: 'Beispiel',
plan_day: {
id: 42,
name: 'Beispiel',
description: 'Text',
day_of_week: 1,
rounds: 1,
round_rest_seconds: 1
},
preset: {
id: 42,
name: 'Beispiel',
description: 'Text',
content_source_name: 'Beispiel',
license_author_url: 'https://vynst.de',
duration: 1
},
device: {
id: 42,
name: 'Beispiel',
description: 'Text',
manufacturer: 'string',
model: 'string',
device_type: 'string'
},
sets: 1
}
})
};
fetch('https://eure-instanz.iw-erp.de/api/crm/studio_training/plan_exercise', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://eure-instanz.iw-erp.de/api/crm/studio_training/plan_exercise"
payload = { "data": {
"id": 42,
"name": "Beispiel",
"plan_day": {
"id": 42,
"name": "Beispiel",
"description": "Text",
"day_of_week": 1,
"rounds": 1,
"round_rest_seconds": 1
},
"preset": {
"id": 42,
"name": "Beispiel",
"description": "Text",
"content_source_name": "Beispiel",
"license_author_url": "https://vynst.de",
"duration": 1
},
"device": {
"id": 42,
"name": "Beispiel",
"description": "Text",
"manufacturer": "string",
"model": "string",
"device_type": "string"
},
"sets": 1
} }
headers = {
"x-iw-jwt-token": "<TOKEN>",
"content-type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)<?php
require_once('vendor/autoload.php');
$client = new \GuzzleHttp\Client();
$response = $client->request('POST', 'https://eure-instanz.iw-erp.de/api/crm/studio_training/plan_exercise', [
'body' => '{"data":{"id":42,"name":"Beispiel","plan_day":{"id":42,"name":"Beispiel","description":"Text","day_of_week":1,"rounds":1,"round_rest_seconds":1},"preset":{"id":42,"name":"Beispiel","description":"Text","content_source_name":"Beispiel","license_author_url":"https://vynst.de","duration":1},"device":{"id":42,"name":"Beispiel","description":"Text","manufacturer":"string","model":"string","device_type":"string"},"sets":1}}',
'headers' => [
'content-type' => 'application/json',
'x-iw-jwt-token' => '<TOKEN>',
],
]);
echo $response->getBody();using System.Net.Http.Headers;
var client = new HttpClient();
var request = new HttpRequestMessage
{
Method = HttpMethod.Post,
RequestUri = new Uri("https://eure-instanz.iw-erp.de/api/crm/studio_training/plan_exercise"),
Headers =
{
{ "x-iw-jwt-token", "<TOKEN>" },
},
Content = new StringContent("{\"data\":{\"id\":42,\"name\":\"Beispiel\",\"plan_day\":{\"id\":42,\"name\":\"Beispiel\",\"description\":\"Text\",\"day_of_week\":1,\"rounds\":1,\"round_rest_seconds\":1},\"preset\":{\"id\":42,\"name\":\"Beispiel\",\"description\":\"Text\",\"content_source_name\":\"Beispiel\",\"license_author_url\":\"https://vynst.de\",\"duration\":1},\"device\":{\"id\":42,\"name\":\"Beispiel\",\"description\":\"Text\",\"manufacturer\":\"string\",\"model\":\"string\",\"device_type\":\"string\"},\"sets\":1}}")
{
Headers =
{
ContentType = new MediaTypeHeaderValue("application/json")
}
}
};
using (var response = await client.SendAsync(request))
{
response.EnsureSuccessStatusCode();
var body = await response.Content.ReadAsStringAsync();
Console.WriteLine(body);
}OkHttpClient client = new OkHttpClient();
MediaType mediaType = MediaType.parse("application/json");
RequestBody body = RequestBody.create(mediaType, "{\"data\":{\"id\":42,\"name\":\"Beispiel\",\"plan_day\":{\"id\":42,\"name\":\"Beispiel\",\"description\":\"Text\",\"day_of_week\":1,\"rounds\":1,\"round_rest_seconds\":1},\"preset\":{\"id\":42,\"name\":\"Beispiel\",\"description\":\"Text\",\"content_source_name\":\"Beispiel\",\"license_author_url\":\"https://vynst.de\",\"duration\":1},\"device\":{\"id\":42,\"name\":\"Beispiel\",\"description\":\"Text\",\"manufacturer\":\"string\",\"model\":\"string\",\"device_type\":\"string\"},\"sets\":1}}");
Request request = new Request.Builder()
.url("https://eure-instanz.iw-erp.de/api/crm/studio_training/plan_exercise")
.post(body)
.addHeader("x-iw-jwt-token", "<TOKEN>")
.addHeader("content-type", "application/json")
.build();
Response response = client.newCall(request).execute();package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://eure-instanz.iw-erp.de/api/crm/studio_training/plan_exercise"
payload := strings.NewReader("{\"data\":{\"id\":42,\"name\":\"Beispiel\",\"plan_day\":{\"id\":42,\"name\":\"Beispiel\",\"description\":\"Text\",\"day_of_week\":1,\"rounds\":1,\"round_rest_seconds\":1},\"preset\":{\"id\":42,\"name\":\"Beispiel\",\"description\":\"Text\",\"content_source_name\":\"Beispiel\",\"license_author_url\":\"https://vynst.de\",\"duration\":1},\"device\":{\"id\":42,\"name\":\"Beispiel\",\"description\":\"Text\",\"manufacturer\":\"string\",\"model\":\"string\",\"device_type\":\"string\"},\"sets\":1}}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("x-iw-jwt-token", "<TOKEN>")
req.Header.Add("content-type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}Dart mit dem Package iw_erp_api
import 'package:iw_erp_api/clients/studio_training_plan_exercise_controller.dart';
import 'package:iw_erp_api/logic/iw_api_state.dart';
import 'package:iw_erp_api/model/studio_training_plan_exercise.dart';
IwApiState().host = 'eure-instanz.iw-erp.de';
IwApiState().currentJwtApiToken = '<TOKEN>';
final result = await StudioTrainingPlanExerciseController.post(StudioTrainingPlanExercise.fromJson({
"id": 42,
"name": "Beispiel",
"plan_day": {
"id": 42,
"name": "Beispiel",
"description": "Text",
"day_of_week": 1,
"rounds": 1,
"round_rest_seconds": 1
},
"preset": {
"id": 42,
"name": "Beispiel",
"description": "Text",
"content_source_name": "Beispiel",
"license_author_url": "https://vynst.de",
"duration": 1
},
"device": {
"id": 42,
"name": "Beispiel",
"description": "Text",
"manufacturer": "string",
"model": "string",
"device_type": "string"
},
"sets": 1
}));
if (result.success) {
print(result.data);
}{
"id": 42,
"name": "Beispiel",
"plan_day": {
"id": 42,
"name": "Beispiel",
"description": "Text",
"plan": {
"id": 42,
"name": "Beispiel",
"description": "Text",
"times_per_week": 1,
"status": "string",
"is_template": true,
"valid_from": "2026-10-15T09:30:00+02:00",
"valid_until": "2026-10-15T09:30:00+02:00",
"review_date": "2026-10-15T09:30:00+02:00",
"training_goal": "string"
},
"day_of_week": 1,
"rounds": 1,
"round_rest_seconds": 1,
"created": "2026-10-15T09:30:00+02:00",
"updated": "2026-10-15T09:30:00+02:00",
"deleted": true
},
"preset": {
"id": 42,
"name": "Beispiel",
"description": "Text",
"content_source_name": "Beispiel",
"license_author_url": "https://vynst.de",
"image": {
"id": 42,
"ocr_from_name": "Beispiel",
"ocr_from_email": "lena.hartmann@example.org",
"ocr_from_phone": "+49 511 123456",
"ocr_to_name": "Beispiel",
"ocr_to_email": "lena.hartmann@example.org",
"ocr_to_phone": "+49 511 123456",
"filename": "string",
"filesize": "string",
"mimetype": "string"
},
"video": {
"id": 42,
"ocr_from_name": "Beispiel",
"ocr_from_email": "lena.hartmann@example.org",
"ocr_from_phone": "+49 511 123456",
"ocr_to_name": "Beispiel",
"ocr_to_email": "lena.hartmann@example.org",
"ocr_to_phone": "+49 511 123456",
"filename": "string",
"filesize": "string",
"mimetype": "string"
},
"duration": 1,
"exercise_type": "string",
"equipment": "string"
},
"device": {
"id": 42,
"name": "Beispiel",
"description": "Text",
"manufacturer": "string",
"model": "string",
"device_type": "string",
"identifier": "42",
"created": "2026-10-15T09:30:00+02:00",
"updated": "2026-10-15T09:30:00+02:00",
"deleted": true
},
"sets": 1,
"repetitions": 1,
"repetitions_to": 1,
"weight": 1.5,
"weight_unit": "string"
}Liefert ein einzelnes StudioTrainingPlanExercise-Objekt.
GET/api/crm/studio_training/plan_exercise/{identifier}
Pfad-Parameter
identifierPflichtstring |
Antworten
200Liefert ein einzelnes StudioTrainingPlanExercise-Objekt.StudioTrainingPlanExercise
Felder anzeigen (21)
idintegerPrimärschlüssel der Planübung. Interne ID.
plan_dayStudioTrainingPlanDayPlantag, zu dem die Übung gehört.
Felder anzeigen (11)
idintegerPrimärschlüssel des Plantags. Interne ID.
planStudioTrainingPlanPlan, zu dem der Tag gehört.
namestringName des Plantags.
descriptionstringBeschreibung des Plantags.
day_of_weekintegerOptionaler fester Wochentag (1 = Montag ... 7 = Sonntag), wenn der Plan an Wochentage gebunden ist
roundsintegerAnzahl der Runden, wenn der Tag als Zirkel (Zirkeltraining) ausgeführt wird
round_rest_secondsintegerPause zwischen den Zirkelrunden in Sekunden
createdstring (date-time)Zeitpunkt, zu dem der Datensatz angelegt wurde.
updatedstring (date-time)Zeitpunkt, zu dem der Datensatz zuletzt aktualisiert wurde.
deletedbooleanDiese Eigenschaft markiert eine Entität als gelöscht / archiviert
orderintegerPosition des Datensatzes in der Reihenfolge.
presetStudioTrainingPresetTrainingsvorlage der Übung.
Felder anzeigen (25)
idintegerPrimärschlüssel der Trainingsvorlage. Interne ID.
namestringName der Übung.
descriptionstringBeschreibung der Übung.
imageAttachment10Bild der Übung.
videoAttachment10Video der Übung.
durationintegerTypische Dauer der Übung in Sekunden.
muscle_groupsarray<StudioTrainingMuscleGroup>Hauptsächlich trainierte Muskelgruppen
secondary_muscle_groupsarray<StudioTrainingMuscleGroup>Zusätzlich trainierte Muskelgruppen
exercise_typestringKategorie der Übung, z. B. Kraft, Cardio, Mobilität, Reha
equipmentstringBenötigte Ausstattung als Freitext, z. B. Langhantel, Kabelzug, Körpergewicht
execution_notesstringAusführungshinweise und Sicherheitshinweise für das Mitglied
default_setsintegerStandardverordnung, die vorgeschlagen wird, wenn die Vorlage dem Plan hinzugefügt wird
default_repetitionsintegerStandardanzahl der Wiederholungen.
default_rest_secondsintegerStandard-Ruhezeit in Sekunden.
content_sourcestringEine der CONTENT_SOURCE_*-Konstanten
content_source_namestringName des Katalogs, aus dem der Eintrag übernommen wurde, z. B. wger
licensestringLizenz des importierten Inhalts, z. B. CC-BY-SA 4.0
license_authorstringAutor, der zur Erfüllung der Lizenzangabe genannt werden muss
license_author_urlstringLink zum Urheber der Bild- oder Videolizenz.
review_statusstringEine der REVIEW_STATUS_*-Konstanten, um generierte oder importierte Übungsanleitungen unter menschlicher Kontrolle zu halten, bevor sie veröffentlicht werden
reviewed_atstring (date-time)Zeitpunkt, zu dem die Übung geprüft wurde.
reviewed_bystringName des Prüfers.
createdstring (date-time)Zeitpunkt, zu dem der Datensatz angelegt wurde.
updatedstring (date-time)Zeitpunkt, zu dem der Datensatz zuletzt aktualisiert wurde.
deletedbooleanDiese Eigenschaft markiert eine Entität als gelöscht / archiviert
deviceStudioDeviceOptionale konkrete Maschine für diese Übung
Felder anzeigen (10)
idintegerPrimärschlüssel des Studiogeräts. Interne ID.
namestringName des Geräts.
descriptionstringBeschreibung des Geräts.
manufacturerstringHersteller des Geräts.
modelstringModell des Geräts.
device_typestringArt des Geräts, zum Beispiel Laufband oder Fahrrad.
identifierstringKennung des Geräts beim Hersteller.
createdstring (date-time)Zeitpunkt, zu dem der Datensatz angelegt wurde.
updatedstring (date-time)Zeitpunkt, zu dem der Datensatz zuletzt aktualisiert wurde.
deletedbooleanDiese Eigenschaft markiert eine Entität als gelöscht / archiviert
namestringÜberschreibt den Vorgabenamen, wenn der Trainer die Übung für diesen Plan umbenannt hat
setsintegerAnzahl der Sätze.
repetitionsintegerAnzahl der Wiederholungen pro Satz.
repetitions_tointegerObere Grenze, wenn die Verordnung ein Wiederholungsbereich ist (z. B. 8 - 12)
weightnumber (float)Gewicht je Wiederholung.
weight_unitstringEinheit des Gewichts, zum Beispiel kg.
duration_secondsintegerDauer eines Satzes in Sekunden bei zeitbasierten Übungen
rest_secondsintegerPause zwischen den Sätzen in Sekunden
tempostringBewegungstempo-Notation, z. B. "2-0-2-0"
intensity_percentnumber (float)Zielintensität in Prozent des One-Repetition-Maximums
rpenumber (float)Zielwert der empfundenen Anstrengung / Wiederholungen in Reserve
circuit_groupstringÜbungen desselben Tages mit gleichem Schlüssel bilden einen Superset- / Zirkeltrainingsblock
notesstringAnmerkungen zur Übung.
createdstring (date-time)Zeitpunkt, zu dem der Datensatz angelegt wurde.
updatedstring (date-time)Zeitpunkt, zu dem der Datensatz zuletzt aktualisiert wurde.
deletedbooleanDiese Eigenschaft markiert eine Entität als gelöscht / archiviert
orderintegerPosition des Datensatzes in der Reihenfolge.
curl --request GET \
--url https://eure-instanz.iw-erp.de/api/crm/studio_training/plan_exercise/42 \
--header 'x-iw-jwt-token: <TOKEN>'const options = {method: 'GET', headers: {'x-iw-jwt-token': '<TOKEN>'}};
fetch('https://eure-instanz.iw-erp.de/api/crm/studio_training/plan_exercise/42', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://eure-instanz.iw-erp.de/api/crm/studio_training/plan_exercise/42"
headers = {"x-iw-jwt-token": "<TOKEN>"}
response = requests.get(url, headers=headers)
print(response.text)<?php
require_once('vendor/autoload.php');
$client = new \GuzzleHttp\Client();
$response = $client->request('GET', 'https://eure-instanz.iw-erp.de/api/crm/studio_training/plan_exercise/42', [
'headers' => [
'x-iw-jwt-token' => '<TOKEN>',
],
]);
echo $response->getBody();using System.Net.Http.Headers;
var client = new HttpClient();
var request = new HttpRequestMessage
{
Method = HttpMethod.Get,
RequestUri = new Uri("https://eure-instanz.iw-erp.de/api/crm/studio_training/plan_exercise/42"),
Headers =
{
{ "x-iw-jwt-token", "<TOKEN>" },
},
};
using (var response = await client.SendAsync(request))
{
response.EnsureSuccessStatusCode();
var body = await response.Content.ReadAsStringAsync();
Console.WriteLine(body);
}OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder()
.url("https://eure-instanz.iw-erp.de/api/crm/studio_training/plan_exercise/42")
.get()
.addHeader("x-iw-jwt-token", "<TOKEN>")
.build();
Response response = client.newCall(request).execute();package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://eure-instanz.iw-erp.de/api/crm/studio_training/plan_exercise/42"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("x-iw-jwt-token", "<TOKEN>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}Dart mit dem Package iw_erp_api
import 'package:iw_erp_api/clients/studio_training_plan_exercise_controller.dart';
import 'package:iw_erp_api/logic/iw_api_state.dart';
IwApiState().host = 'eure-instanz.iw-erp.de';
IwApiState().currentJwtApiToken = '<TOKEN>';
final result = await StudioTrainingPlanExerciseController.get('42');
if (result.success) {
print(result.data);
}{
"id": 42,
"name": "Beispiel",
"plan_day": {
"id": 42,
"name": "Beispiel",
"description": "Text",
"plan": {
"id": 42,
"name": "Beispiel",
"description": "Text",
"times_per_week": 1,
"status": "string",
"is_template": true,
"valid_from": "2026-10-15T09:30:00+02:00",
"valid_until": "2026-10-15T09:30:00+02:00",
"review_date": "2026-10-15T09:30:00+02:00",
"training_goal": "string"
},
"day_of_week": 1,
"rounds": 1,
"round_rest_seconds": 1,
"created": "2026-10-15T09:30:00+02:00",
"updated": "2026-10-15T09:30:00+02:00",
"deleted": true
},
"preset": {
"id": 42,
"name": "Beispiel",
"description": "Text",
"content_source_name": "Beispiel",
"license_author_url": "https://vynst.de",
"image": {
"id": 42,
"ocr_from_name": "Beispiel",
"ocr_from_email": "lena.hartmann@example.org",
"ocr_from_phone": "+49 511 123456",
"ocr_to_name": "Beispiel",
"ocr_to_email": "lena.hartmann@example.org",
"ocr_to_phone": "+49 511 123456",
"filename": "string",
"filesize": "string",
"mimetype": "string"
},
"video": {
"id": 42,
"ocr_from_name": "Beispiel",
"ocr_from_email": "lena.hartmann@example.org",
"ocr_from_phone": "+49 511 123456",
"ocr_to_name": "Beispiel",
"ocr_to_email": "lena.hartmann@example.org",
"ocr_to_phone": "+49 511 123456",
"filename": "string",
"filesize": "string",
"mimetype": "string"
},
"duration": 1,
"exercise_type": "string",
"equipment": "string"
},
"device": {
"id": 42,
"name": "Beispiel",
"description": "Text",
"manufacturer": "string",
"model": "string",
"device_type": "string",
"identifier": "42",
"created": "2026-10-15T09:30:00+02:00",
"updated": "2026-10-15T09:30:00+02:00",
"deleted": true
},
"sets": 1,
"repetitions": 1,
"repetitions_to": 1,
"weight": 1.5,
"weight_unit": "string"
}StudioTrainingPlanExercise einzeln aktualisieren
PUT/api/crm/studio_training/plan_exercise/{identifier}
Pfad-Parameter
identifierPflichtstring |
Request-Body application/json
dataStudioTrainingPlanExerciseFelder anzeigen (21)
idintegerPrimärschlüssel der Planübung. Interne ID.
plan_dayStudioTrainingPlanDayPlantag, zu dem die Übung gehört.
presetStudioTrainingPresetTrainingsvorlage der Übung.
deviceStudioDeviceOptionale konkrete Maschine für diese Übung
namestringÜberschreibt den Vorgabenamen, wenn der Trainer die Übung für diesen Plan umbenannt hat
setsintegerAnzahl der Sätze.
repetitionsintegerAnzahl der Wiederholungen pro Satz.
repetitions_tointegerObere Grenze, wenn die Verordnung ein Wiederholungsbereich ist (z. B. 8 - 12)
weightnumber (float)Gewicht je Wiederholung.
weight_unitstringEinheit des Gewichts, zum Beispiel kg.
duration_secondsintegerDauer eines Satzes in Sekunden bei zeitbasierten Übungen
rest_secondsintegerPause zwischen den Sätzen in Sekunden
tempostringBewegungstempo-Notation, z. B. "2-0-2-0"
intensity_percentnumber (float)Zielintensität in Prozent des One-Repetition-Maximums
rpenumber (float)Zielwert der empfundenen Anstrengung / Wiederholungen in Reserve
circuit_groupstringÜbungen desselben Tages mit gleichem Schlüssel bilden einen Superset- / Zirkeltrainingsblock
notesstringAnmerkungen zur Übung.
createdstring (date-time)Zeitpunkt, zu dem der Datensatz angelegt wurde.
updatedstring (date-time)Zeitpunkt, zu dem der Datensatz zuletzt aktualisiert wurde.
deletedbooleanDiese Eigenschaft markiert eine Entität als gelöscht / archiviert
orderintegerPosition des Datensatzes in der Reihenfolge.
Antworten
200StudioTrainingPlanExercise einzeln aktualisierenStudioTrainingPlanExercise
Felder anzeigen (21)
idintegerPrimärschlüssel der Planübung. Interne ID.
plan_dayStudioTrainingPlanDayPlantag, zu dem die Übung gehört.
Felder anzeigen (11)
idintegerPrimärschlüssel des Plantags. Interne ID.
planStudioTrainingPlanPlan, zu dem der Tag gehört.
namestringName des Plantags.
descriptionstringBeschreibung des Plantags.
day_of_weekintegerOptionaler fester Wochentag (1 = Montag ... 7 = Sonntag), wenn der Plan an Wochentage gebunden ist
roundsintegerAnzahl der Runden, wenn der Tag als Zirkel (Zirkeltraining) ausgeführt wird
round_rest_secondsintegerPause zwischen den Zirkelrunden in Sekunden
createdstring (date-time)Zeitpunkt, zu dem der Datensatz angelegt wurde.
updatedstring (date-time)Zeitpunkt, zu dem der Datensatz zuletzt aktualisiert wurde.
deletedbooleanDiese Eigenschaft markiert eine Entität als gelöscht / archiviert
orderintegerPosition des Datensatzes in der Reihenfolge.
presetStudioTrainingPresetTrainingsvorlage der Übung.
Felder anzeigen (25)
idintegerPrimärschlüssel der Trainingsvorlage. Interne ID.
namestringName der Übung.
descriptionstringBeschreibung der Übung.
imageAttachment10Bild der Übung.
videoAttachment10Video der Übung.
durationintegerTypische Dauer der Übung in Sekunden.
muscle_groupsarray<StudioTrainingMuscleGroup>Hauptsächlich trainierte Muskelgruppen
secondary_muscle_groupsarray<StudioTrainingMuscleGroup>Zusätzlich trainierte Muskelgruppen
exercise_typestringKategorie der Übung, z. B. Kraft, Cardio, Mobilität, Reha
equipmentstringBenötigte Ausstattung als Freitext, z. B. Langhantel, Kabelzug, Körpergewicht
execution_notesstringAusführungshinweise und Sicherheitshinweise für das Mitglied
default_setsintegerStandardverordnung, die vorgeschlagen wird, wenn die Vorlage dem Plan hinzugefügt wird
default_repetitionsintegerStandardanzahl der Wiederholungen.
default_rest_secondsintegerStandard-Ruhezeit in Sekunden.
content_sourcestringEine der CONTENT_SOURCE_*-Konstanten
content_source_namestringName des Katalogs, aus dem der Eintrag übernommen wurde, z. B. wger
licensestringLizenz des importierten Inhalts, z. B. CC-BY-SA 4.0
license_authorstringAutor, der zur Erfüllung der Lizenzangabe genannt werden muss
license_author_urlstringLink zum Urheber der Bild- oder Videolizenz.
review_statusstringEine der REVIEW_STATUS_*-Konstanten, um generierte oder importierte Übungsanleitungen unter menschlicher Kontrolle zu halten, bevor sie veröffentlicht werden
reviewed_atstring (date-time)Zeitpunkt, zu dem die Übung geprüft wurde.
reviewed_bystringName des Prüfers.
createdstring (date-time)Zeitpunkt, zu dem der Datensatz angelegt wurde.
updatedstring (date-time)Zeitpunkt, zu dem der Datensatz zuletzt aktualisiert wurde.
deletedbooleanDiese Eigenschaft markiert eine Entität als gelöscht / archiviert
deviceStudioDeviceOptionale konkrete Maschine für diese Übung
Felder anzeigen (10)
idintegerPrimärschlüssel des Studiogeräts. Interne ID.
namestringName des Geräts.
descriptionstringBeschreibung des Geräts.
manufacturerstringHersteller des Geräts.
modelstringModell des Geräts.
device_typestringArt des Geräts, zum Beispiel Laufband oder Fahrrad.
identifierstringKennung des Geräts beim Hersteller.
createdstring (date-time)Zeitpunkt, zu dem der Datensatz angelegt wurde.
updatedstring (date-time)Zeitpunkt, zu dem der Datensatz zuletzt aktualisiert wurde.
deletedbooleanDiese Eigenschaft markiert eine Entität als gelöscht / archiviert
namestringÜberschreibt den Vorgabenamen, wenn der Trainer die Übung für diesen Plan umbenannt hat
setsintegerAnzahl der Sätze.
repetitionsintegerAnzahl der Wiederholungen pro Satz.
repetitions_tointegerObere Grenze, wenn die Verordnung ein Wiederholungsbereich ist (z. B. 8 - 12)
weightnumber (float)Gewicht je Wiederholung.
weight_unitstringEinheit des Gewichts, zum Beispiel kg.
duration_secondsintegerDauer eines Satzes in Sekunden bei zeitbasierten Übungen
rest_secondsintegerPause zwischen den Sätzen in Sekunden
tempostringBewegungstempo-Notation, z. B. "2-0-2-0"
intensity_percentnumber (float)Zielintensität in Prozent des One-Repetition-Maximums
rpenumber (float)Zielwert der empfundenen Anstrengung / Wiederholungen in Reserve
circuit_groupstringÜbungen desselben Tages mit gleichem Schlüssel bilden einen Superset- / Zirkeltrainingsblock
notesstringAnmerkungen zur Übung.
createdstring (date-time)Zeitpunkt, zu dem der Datensatz angelegt wurde.
updatedstring (date-time)Zeitpunkt, zu dem der Datensatz zuletzt aktualisiert wurde.
deletedbooleanDiese Eigenschaft markiert eine Entität als gelöscht / archiviert
orderintegerPosition des Datensatzes in der Reihenfolge.
curl --request PUT \
--url https://eure-instanz.iw-erp.de/api/crm/studio_training/plan_exercise/42 \
--header 'content-type: application/json' \
--header 'x-iw-jwt-token: <TOKEN>' \
--data '
{
"data": {
"id": 42,
"name": "Beispiel",
"plan_day": {
"id": 42,
"name": "Beispiel",
"description": "Text",
"day_of_week": 1,
"rounds": 1,
"round_rest_seconds": 1
},
"preset": {
"id": 42,
"name": "Beispiel",
"description": "Text",
"content_source_name": "Beispiel",
"license_author_url": "https://vynst.de",
"duration": 1
},
"device": {
"id": 42,
"name": "Beispiel",
"description": "Text",
"manufacturer": "string",
"model": "string",
"device_type": "string"
},
"sets": 1
}
}
'const options = {
method: 'PUT',
headers: {'x-iw-jwt-token': '<TOKEN>', 'content-type': 'application/json'},
body: JSON.stringify({
data: {
id: 42,
name: 'Beispiel',
plan_day: {
id: 42,
name: 'Beispiel',
description: 'Text',
day_of_week: 1,
rounds: 1,
round_rest_seconds: 1
},
preset: {
id: 42,
name: 'Beispiel',
description: 'Text',
content_source_name: 'Beispiel',
license_author_url: 'https://vynst.de',
duration: 1
},
device: {
id: 42,
name: 'Beispiel',
description: 'Text',
manufacturer: 'string',
model: 'string',
device_type: 'string'
},
sets: 1
}
})
};
fetch('https://eure-instanz.iw-erp.de/api/crm/studio_training/plan_exercise/42', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://eure-instanz.iw-erp.de/api/crm/studio_training/plan_exercise/42"
payload = { "data": {
"id": 42,
"name": "Beispiel",
"plan_day": {
"id": 42,
"name": "Beispiel",
"description": "Text",
"day_of_week": 1,
"rounds": 1,
"round_rest_seconds": 1
},
"preset": {
"id": 42,
"name": "Beispiel",
"description": "Text",
"content_source_name": "Beispiel",
"license_author_url": "https://vynst.de",
"duration": 1
},
"device": {
"id": 42,
"name": "Beispiel",
"description": "Text",
"manufacturer": "string",
"model": "string",
"device_type": "string"
},
"sets": 1
} }
headers = {
"x-iw-jwt-token": "<TOKEN>",
"content-type": "application/json"
}
response = requests.put(url, json=payload, headers=headers)
print(response.text)<?php
require_once('vendor/autoload.php');
$client = new \GuzzleHttp\Client();
$response = $client->request('PUT', 'https://eure-instanz.iw-erp.de/api/crm/studio_training/plan_exercise/42', [
'body' => '{"data":{"id":42,"name":"Beispiel","plan_day":{"id":42,"name":"Beispiel","description":"Text","day_of_week":1,"rounds":1,"round_rest_seconds":1},"preset":{"id":42,"name":"Beispiel","description":"Text","content_source_name":"Beispiel","license_author_url":"https://vynst.de","duration":1},"device":{"id":42,"name":"Beispiel","description":"Text","manufacturer":"string","model":"string","device_type":"string"},"sets":1}}',
'headers' => [
'content-type' => 'application/json',
'x-iw-jwt-token' => '<TOKEN>',
],
]);
echo $response->getBody();using System.Net.Http.Headers;
var client = new HttpClient();
var request = new HttpRequestMessage
{
Method = HttpMethod.Put,
RequestUri = new Uri("https://eure-instanz.iw-erp.de/api/crm/studio_training/plan_exercise/42"),
Headers =
{
{ "x-iw-jwt-token", "<TOKEN>" },
},
Content = new StringContent("{\"data\":{\"id\":42,\"name\":\"Beispiel\",\"plan_day\":{\"id\":42,\"name\":\"Beispiel\",\"description\":\"Text\",\"day_of_week\":1,\"rounds\":1,\"round_rest_seconds\":1},\"preset\":{\"id\":42,\"name\":\"Beispiel\",\"description\":\"Text\",\"content_source_name\":\"Beispiel\",\"license_author_url\":\"https://vynst.de\",\"duration\":1},\"device\":{\"id\":42,\"name\":\"Beispiel\",\"description\":\"Text\",\"manufacturer\":\"string\",\"model\":\"string\",\"device_type\":\"string\"},\"sets\":1}}")
{
Headers =
{
ContentType = new MediaTypeHeaderValue("application/json")
}
}
};
using (var response = await client.SendAsync(request))
{
response.EnsureSuccessStatusCode();
var body = await response.Content.ReadAsStringAsync();
Console.WriteLine(body);
}OkHttpClient client = new OkHttpClient();
MediaType mediaType = MediaType.parse("application/json");
RequestBody body = RequestBody.create(mediaType, "{\"data\":{\"id\":42,\"name\":\"Beispiel\",\"plan_day\":{\"id\":42,\"name\":\"Beispiel\",\"description\":\"Text\",\"day_of_week\":1,\"rounds\":1,\"round_rest_seconds\":1},\"preset\":{\"id\":42,\"name\":\"Beispiel\",\"description\":\"Text\",\"content_source_name\":\"Beispiel\",\"license_author_url\":\"https://vynst.de\",\"duration\":1},\"device\":{\"id\":42,\"name\":\"Beispiel\",\"description\":\"Text\",\"manufacturer\":\"string\",\"model\":\"string\",\"device_type\":\"string\"},\"sets\":1}}");
Request request = new Request.Builder()
.url("https://eure-instanz.iw-erp.de/api/crm/studio_training/plan_exercise/42")
.put(body)
.addHeader("x-iw-jwt-token", "<TOKEN>")
.addHeader("content-type", "application/json")
.build();
Response response = client.newCall(request).execute();package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://eure-instanz.iw-erp.de/api/crm/studio_training/plan_exercise/42"
payload := strings.NewReader("{\"data\":{\"id\":42,\"name\":\"Beispiel\",\"plan_day\":{\"id\":42,\"name\":\"Beispiel\",\"description\":\"Text\",\"day_of_week\":1,\"rounds\":1,\"round_rest_seconds\":1},\"preset\":{\"id\":42,\"name\":\"Beispiel\",\"description\":\"Text\",\"content_source_name\":\"Beispiel\",\"license_author_url\":\"https://vynst.de\",\"duration\":1},\"device\":{\"id\":42,\"name\":\"Beispiel\",\"description\":\"Text\",\"manufacturer\":\"string\",\"model\":\"string\",\"device_type\":\"string\"},\"sets\":1}}")
req, _ := http.NewRequest("PUT", url, payload)
req.Header.Add("x-iw-jwt-token", "<TOKEN>")
req.Header.Add("content-type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}Dart mit package:http (kein Controller im Package iw_erp_api)
import 'dart:convert';
import 'package:http/http.dart' as http;
final response = await http.put(
Uri.parse('https://eure-instanz.iw-erp.de/api/crm/studio_training/plan_exercise/42'),
headers: {'x-iw-jwt-token': '<TOKEN>', 'content-type': 'application/json'},
body: jsonEncode({
"data": {
"id": 42,
"name": "Beispiel",
"plan_day": {
"id": 42,
"name": "Beispiel",
"description": "Text",
"day_of_week": 1,
"rounds": 1,
"round_rest_seconds": 1
},
"preset": {
"id": 42,
"name": "Beispiel",
"description": "Text",
"content_source_name": "Beispiel",
"license_author_url": "https://vynst.de",
"duration": 1
},
"device": {
"id": 42,
"name": "Beispiel",
"description": "Text",
"manufacturer": "string",
"model": "string",
"device_type": "string"
},
"sets": 1
}
}),
);
print(response.body);{
"id": 42,
"name": "Beispiel",
"plan_day": {
"id": 42,
"name": "Beispiel",
"description": "Text",
"plan": {
"id": 42,
"name": "Beispiel",
"description": "Text",
"times_per_week": 1,
"status": "string",
"is_template": true,
"valid_from": "2026-10-15T09:30:00+02:00",
"valid_until": "2026-10-15T09:30:00+02:00",
"review_date": "2026-10-15T09:30:00+02:00",
"training_goal": "string"
},
"day_of_week": 1,
"rounds": 1,
"round_rest_seconds": 1,
"created": "2026-10-15T09:30:00+02:00",
"updated": "2026-10-15T09:30:00+02:00",
"deleted": true
},
"preset": {
"id": 42,
"name": "Beispiel",
"description": "Text",
"content_source_name": "Beispiel",
"license_author_url": "https://vynst.de",
"image": {
"id": 42,
"ocr_from_name": "Beispiel",
"ocr_from_email": "lena.hartmann@example.org",
"ocr_from_phone": "+49 511 123456",
"ocr_to_name": "Beispiel",
"ocr_to_email": "lena.hartmann@example.org",
"ocr_to_phone": "+49 511 123456",
"filename": "string",
"filesize": "string",
"mimetype": "string"
},
"video": {
"id": 42,
"ocr_from_name": "Beispiel",
"ocr_from_email": "lena.hartmann@example.org",
"ocr_from_phone": "+49 511 123456",
"ocr_to_name": "Beispiel",
"ocr_to_email": "lena.hartmann@example.org",
"ocr_to_phone": "+49 511 123456",
"filename": "string",
"filesize": "string",
"mimetype": "string"
},
"duration": 1,
"exercise_type": "string",
"equipment": "string"
},
"device": {
"id": 42,
"name": "Beispiel",
"description": "Text",
"manufacturer": "string",
"model": "string",
"device_type": "string",
"identifier": "42",
"created": "2026-10-15T09:30:00+02:00",
"updated": "2026-10-15T09:30:00+02:00",
"deleted": true
},
"sets": 1,
"repetitions": 1,
"repetitions_to": 1,
"weight": 1.5,
"weight_unit": "string"
}StudioTrainingPlanExercise einzeln aktualisieren
PATCH/api/crm/studio_training/plan_exercise/{identifier}
Pfad-Parameter
identifierPflichtstring |
Request-Body application/json
dataStudioTrainingPlanExerciseFelder anzeigen (21)
idintegerPrimärschlüssel der Planübung. Interne ID.
plan_dayStudioTrainingPlanDayPlantag, zu dem die Übung gehört.
presetStudioTrainingPresetTrainingsvorlage der Übung.
deviceStudioDeviceOptionale konkrete Maschine für diese Übung
namestringÜberschreibt den Vorgabenamen, wenn der Trainer die Übung für diesen Plan umbenannt hat
setsintegerAnzahl der Sätze.
repetitionsintegerAnzahl der Wiederholungen pro Satz.
repetitions_tointegerObere Grenze, wenn die Verordnung ein Wiederholungsbereich ist (z. B. 8 - 12)
weightnumber (float)Gewicht je Wiederholung.
weight_unitstringEinheit des Gewichts, zum Beispiel kg.
duration_secondsintegerDauer eines Satzes in Sekunden bei zeitbasierten Übungen
rest_secondsintegerPause zwischen den Sätzen in Sekunden
tempostringBewegungstempo-Notation, z. B. "2-0-2-0"
intensity_percentnumber (float)Zielintensität in Prozent des One-Repetition-Maximums
rpenumber (float)Zielwert der empfundenen Anstrengung / Wiederholungen in Reserve
circuit_groupstringÜbungen desselben Tages mit gleichem Schlüssel bilden einen Superset- / Zirkeltrainingsblock
notesstringAnmerkungen zur Übung.
createdstring (date-time)Zeitpunkt, zu dem der Datensatz angelegt wurde.
updatedstring (date-time)Zeitpunkt, zu dem der Datensatz zuletzt aktualisiert wurde.
deletedbooleanDiese Eigenschaft markiert eine Entität als gelöscht / archiviert
orderintegerPosition des Datensatzes in der Reihenfolge.
Antworten
200StudioTrainingPlanExercise einzeln aktualisierenStudioTrainingPlanExercise
Felder anzeigen (21)
idintegerPrimärschlüssel der Planübung. Interne ID.
plan_dayStudioTrainingPlanDayPlantag, zu dem die Übung gehört.
Felder anzeigen (11)
idintegerPrimärschlüssel des Plantags. Interne ID.
planStudioTrainingPlanPlan, zu dem der Tag gehört.
namestringName des Plantags.
descriptionstringBeschreibung des Plantags.
day_of_weekintegerOptionaler fester Wochentag (1 = Montag ... 7 = Sonntag), wenn der Plan an Wochentage gebunden ist
roundsintegerAnzahl der Runden, wenn der Tag als Zirkel (Zirkeltraining) ausgeführt wird
round_rest_secondsintegerPause zwischen den Zirkelrunden in Sekunden
createdstring (date-time)Zeitpunkt, zu dem der Datensatz angelegt wurde.
updatedstring (date-time)Zeitpunkt, zu dem der Datensatz zuletzt aktualisiert wurde.
deletedbooleanDiese Eigenschaft markiert eine Entität als gelöscht / archiviert
orderintegerPosition des Datensatzes in der Reihenfolge.
presetStudioTrainingPresetTrainingsvorlage der Übung.
Felder anzeigen (25)
idintegerPrimärschlüssel der Trainingsvorlage. Interne ID.
namestringName der Übung.
descriptionstringBeschreibung der Übung.
imageAttachment10Bild der Übung.
videoAttachment10Video der Übung.
durationintegerTypische Dauer der Übung in Sekunden.
muscle_groupsarray<StudioTrainingMuscleGroup>Hauptsächlich trainierte Muskelgruppen
secondary_muscle_groupsarray<StudioTrainingMuscleGroup>Zusätzlich trainierte Muskelgruppen
exercise_typestringKategorie der Übung, z. B. Kraft, Cardio, Mobilität, Reha
equipmentstringBenötigte Ausstattung als Freitext, z. B. Langhantel, Kabelzug, Körpergewicht
execution_notesstringAusführungshinweise und Sicherheitshinweise für das Mitglied
default_setsintegerStandardverordnung, die vorgeschlagen wird, wenn die Vorlage dem Plan hinzugefügt wird
default_repetitionsintegerStandardanzahl der Wiederholungen.
default_rest_secondsintegerStandard-Ruhezeit in Sekunden.
content_sourcestringEine der CONTENT_SOURCE_*-Konstanten
content_source_namestringName des Katalogs, aus dem der Eintrag übernommen wurde, z. B. wger
licensestringLizenz des importierten Inhalts, z. B. CC-BY-SA 4.0
license_authorstringAutor, der zur Erfüllung der Lizenzangabe genannt werden muss
license_author_urlstringLink zum Urheber der Bild- oder Videolizenz.
review_statusstringEine der REVIEW_STATUS_*-Konstanten, um generierte oder importierte Übungsanleitungen unter menschlicher Kontrolle zu halten, bevor sie veröffentlicht werden
reviewed_atstring (date-time)Zeitpunkt, zu dem die Übung geprüft wurde.
reviewed_bystringName des Prüfers.
createdstring (date-time)Zeitpunkt, zu dem der Datensatz angelegt wurde.
updatedstring (date-time)Zeitpunkt, zu dem der Datensatz zuletzt aktualisiert wurde.
deletedbooleanDiese Eigenschaft markiert eine Entität als gelöscht / archiviert
deviceStudioDeviceOptionale konkrete Maschine für diese Übung
Felder anzeigen (10)
idintegerPrimärschlüssel des Studiogeräts. Interne ID.
namestringName des Geräts.
descriptionstringBeschreibung des Geräts.
manufacturerstringHersteller des Geräts.
modelstringModell des Geräts.
device_typestringArt des Geräts, zum Beispiel Laufband oder Fahrrad.
identifierstringKennung des Geräts beim Hersteller.
createdstring (date-time)Zeitpunkt, zu dem der Datensatz angelegt wurde.
updatedstring (date-time)Zeitpunkt, zu dem der Datensatz zuletzt aktualisiert wurde.
deletedbooleanDiese Eigenschaft markiert eine Entität als gelöscht / archiviert
namestringÜberschreibt den Vorgabenamen, wenn der Trainer die Übung für diesen Plan umbenannt hat
setsintegerAnzahl der Sätze.
repetitionsintegerAnzahl der Wiederholungen pro Satz.
repetitions_tointegerObere Grenze, wenn die Verordnung ein Wiederholungsbereich ist (z. B. 8 - 12)
weightnumber (float)Gewicht je Wiederholung.
weight_unitstringEinheit des Gewichts, zum Beispiel kg.
duration_secondsintegerDauer eines Satzes in Sekunden bei zeitbasierten Übungen
rest_secondsintegerPause zwischen den Sätzen in Sekunden
tempostringBewegungstempo-Notation, z. B. "2-0-2-0"
intensity_percentnumber (float)Zielintensität in Prozent des One-Repetition-Maximums
rpenumber (float)Zielwert der empfundenen Anstrengung / Wiederholungen in Reserve
circuit_groupstringÜbungen desselben Tages mit gleichem Schlüssel bilden einen Superset- / Zirkeltrainingsblock
notesstringAnmerkungen zur Übung.
createdstring (date-time)Zeitpunkt, zu dem der Datensatz angelegt wurde.
updatedstring (date-time)Zeitpunkt, zu dem der Datensatz zuletzt aktualisiert wurde.
deletedbooleanDiese Eigenschaft markiert eine Entität als gelöscht / archiviert
orderintegerPosition des Datensatzes in der Reihenfolge.
curl --request PATCH \
--url https://eure-instanz.iw-erp.de/api/crm/studio_training/plan_exercise/42 \
--header 'content-type: application/json' \
--header 'x-iw-jwt-token: <TOKEN>' \
--data '
{
"data": {
"id": 42,
"name": "Beispiel",
"plan_day": {
"id": 42,
"name": "Beispiel",
"description": "Text",
"day_of_week": 1,
"rounds": 1,
"round_rest_seconds": 1
},
"preset": {
"id": 42,
"name": "Beispiel",
"description": "Text",
"content_source_name": "Beispiel",
"license_author_url": "https://vynst.de",
"duration": 1
},
"device": {
"id": 42,
"name": "Beispiel",
"description": "Text",
"manufacturer": "string",
"model": "string",
"device_type": "string"
},
"sets": 1
}
}
'const options = {
method: 'PATCH',
headers: {'x-iw-jwt-token': '<TOKEN>', 'content-type': 'application/json'},
body: JSON.stringify({
data: {
id: 42,
name: 'Beispiel',
plan_day: {
id: 42,
name: 'Beispiel',
description: 'Text',
day_of_week: 1,
rounds: 1,
round_rest_seconds: 1
},
preset: {
id: 42,
name: 'Beispiel',
description: 'Text',
content_source_name: 'Beispiel',
license_author_url: 'https://vynst.de',
duration: 1
},
device: {
id: 42,
name: 'Beispiel',
description: 'Text',
manufacturer: 'string',
model: 'string',
device_type: 'string'
},
sets: 1
}
})
};
fetch('https://eure-instanz.iw-erp.de/api/crm/studio_training/plan_exercise/42', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://eure-instanz.iw-erp.de/api/crm/studio_training/plan_exercise/42"
payload = { "data": {
"id": 42,
"name": "Beispiel",
"plan_day": {
"id": 42,
"name": "Beispiel",
"description": "Text",
"day_of_week": 1,
"rounds": 1,
"round_rest_seconds": 1
},
"preset": {
"id": 42,
"name": "Beispiel",
"description": "Text",
"content_source_name": "Beispiel",
"license_author_url": "https://vynst.de",
"duration": 1
},
"device": {
"id": 42,
"name": "Beispiel",
"description": "Text",
"manufacturer": "string",
"model": "string",
"device_type": "string"
},
"sets": 1
} }
headers = {
"x-iw-jwt-token": "<TOKEN>",
"content-type": "application/json"
}
response = requests.patch(url, json=payload, headers=headers)
print(response.text)<?php
require_once('vendor/autoload.php');
$client = new \GuzzleHttp\Client();
$response = $client->request('PATCH', 'https://eure-instanz.iw-erp.de/api/crm/studio_training/plan_exercise/42', [
'body' => '{"data":{"id":42,"name":"Beispiel","plan_day":{"id":42,"name":"Beispiel","description":"Text","day_of_week":1,"rounds":1,"round_rest_seconds":1},"preset":{"id":42,"name":"Beispiel","description":"Text","content_source_name":"Beispiel","license_author_url":"https://vynst.de","duration":1},"device":{"id":42,"name":"Beispiel","description":"Text","manufacturer":"string","model":"string","device_type":"string"},"sets":1}}',
'headers' => [
'content-type' => 'application/json',
'x-iw-jwt-token' => '<TOKEN>',
],
]);
echo $response->getBody();using System.Net.Http.Headers;
var client = new HttpClient();
var request = new HttpRequestMessage
{
Method = HttpMethod.Patch,
RequestUri = new Uri("https://eure-instanz.iw-erp.de/api/crm/studio_training/plan_exercise/42"),
Headers =
{
{ "x-iw-jwt-token", "<TOKEN>" },
},
Content = new StringContent("{\"data\":{\"id\":42,\"name\":\"Beispiel\",\"plan_day\":{\"id\":42,\"name\":\"Beispiel\",\"description\":\"Text\",\"day_of_week\":1,\"rounds\":1,\"round_rest_seconds\":1},\"preset\":{\"id\":42,\"name\":\"Beispiel\",\"description\":\"Text\",\"content_source_name\":\"Beispiel\",\"license_author_url\":\"https://vynst.de\",\"duration\":1},\"device\":{\"id\":42,\"name\":\"Beispiel\",\"description\":\"Text\",\"manufacturer\":\"string\",\"model\":\"string\",\"device_type\":\"string\"},\"sets\":1}}")
{
Headers =
{
ContentType = new MediaTypeHeaderValue("application/json")
}
}
};
using (var response = await client.SendAsync(request))
{
response.EnsureSuccessStatusCode();
var body = await response.Content.ReadAsStringAsync();
Console.WriteLine(body);
}OkHttpClient client = new OkHttpClient();
MediaType mediaType = MediaType.parse("application/json");
RequestBody body = RequestBody.create(mediaType, "{\"data\":{\"id\":42,\"name\":\"Beispiel\",\"plan_day\":{\"id\":42,\"name\":\"Beispiel\",\"description\":\"Text\",\"day_of_week\":1,\"rounds\":1,\"round_rest_seconds\":1},\"preset\":{\"id\":42,\"name\":\"Beispiel\",\"description\":\"Text\",\"content_source_name\":\"Beispiel\",\"license_author_url\":\"https://vynst.de\",\"duration\":1},\"device\":{\"id\":42,\"name\":\"Beispiel\",\"description\":\"Text\",\"manufacturer\":\"string\",\"model\":\"string\",\"device_type\":\"string\"},\"sets\":1}}");
Request request = new Request.Builder()
.url("https://eure-instanz.iw-erp.de/api/crm/studio_training/plan_exercise/42")
.patch(body)
.addHeader("x-iw-jwt-token", "<TOKEN>")
.addHeader("content-type", "application/json")
.build();
Response response = client.newCall(request).execute();package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://eure-instanz.iw-erp.de/api/crm/studio_training/plan_exercise/42"
payload := strings.NewReader("{\"data\":{\"id\":42,\"name\":\"Beispiel\",\"plan_day\":{\"id\":42,\"name\":\"Beispiel\",\"description\":\"Text\",\"day_of_week\":1,\"rounds\":1,\"round_rest_seconds\":1},\"preset\":{\"id\":42,\"name\":\"Beispiel\",\"description\":\"Text\",\"content_source_name\":\"Beispiel\",\"license_author_url\":\"https://vynst.de\",\"duration\":1},\"device\":{\"id\":42,\"name\":\"Beispiel\",\"description\":\"Text\",\"manufacturer\":\"string\",\"model\":\"string\",\"device_type\":\"string\"},\"sets\":1}}")
req, _ := http.NewRequest("PATCH", url, payload)
req.Header.Add("x-iw-jwt-token", "<TOKEN>")
req.Header.Add("content-type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}Dart mit package:http (kein Controller im Package iw_erp_api)
import 'dart:convert';
import 'package:http/http.dart' as http;
final response = await http.patch(
Uri.parse('https://eure-instanz.iw-erp.de/api/crm/studio_training/plan_exercise/42'),
headers: {'x-iw-jwt-token': '<TOKEN>', 'content-type': 'application/json'},
body: jsonEncode({
"data": {
"id": 42,
"name": "Beispiel",
"plan_day": {
"id": 42,
"name": "Beispiel",
"description": "Text",
"day_of_week": 1,
"rounds": 1,
"round_rest_seconds": 1
},
"preset": {
"id": 42,
"name": "Beispiel",
"description": "Text",
"content_source_name": "Beispiel",
"license_author_url": "https://vynst.de",
"duration": 1
},
"device": {
"id": 42,
"name": "Beispiel",
"description": "Text",
"manufacturer": "string",
"model": "string",
"device_type": "string"
},
"sets": 1
}
}),
);
print(response.body);{
"id": 42,
"name": "Beispiel",
"plan_day": {
"id": 42,
"name": "Beispiel",
"description": "Text",
"plan": {
"id": 42,
"name": "Beispiel",
"description": "Text",
"times_per_week": 1,
"status": "string",
"is_template": true,
"valid_from": "2026-10-15T09:30:00+02:00",
"valid_until": "2026-10-15T09:30:00+02:00",
"review_date": "2026-10-15T09:30:00+02:00",
"training_goal": "string"
},
"day_of_week": 1,
"rounds": 1,
"round_rest_seconds": 1,
"created": "2026-10-15T09:30:00+02:00",
"updated": "2026-10-15T09:30:00+02:00",
"deleted": true
},
"preset": {
"id": 42,
"name": "Beispiel",
"description": "Text",
"content_source_name": "Beispiel",
"license_author_url": "https://vynst.de",
"image": {
"id": 42,
"ocr_from_name": "Beispiel",
"ocr_from_email": "lena.hartmann@example.org",
"ocr_from_phone": "+49 511 123456",
"ocr_to_name": "Beispiel",
"ocr_to_email": "lena.hartmann@example.org",
"ocr_to_phone": "+49 511 123456",
"filename": "string",
"filesize": "string",
"mimetype": "string"
},
"video": {
"id": 42,
"ocr_from_name": "Beispiel",
"ocr_from_email": "lena.hartmann@example.org",
"ocr_from_phone": "+49 511 123456",
"ocr_to_name": "Beispiel",
"ocr_to_email": "lena.hartmann@example.org",
"ocr_to_phone": "+49 511 123456",
"filename": "string",
"filesize": "string",
"mimetype": "string"
},
"duration": 1,
"exercise_type": "string",
"equipment": "string"
},
"device": {
"id": 42,
"name": "Beispiel",
"description": "Text",
"manufacturer": "string",
"model": "string",
"device_type": "string",
"identifier": "42",
"created": "2026-10-15T09:30:00+02:00",
"updated": "2026-10-15T09:30:00+02:00",
"deleted": true
},
"sets": 1,
"repetitions": 1,
"repetitions_to": 1,
"weight": 1.5,
"weight_unit": "string"
}Eine einzelne StudioTrainingPlanExercise löschen (Soft Delete)
DELETE/api/crm/studio_training/plan_exercise/{identifier}
Pfad-Parameter
identifierPflichtstring |
Antworten
200Eine einzelne StudioTrainingPlanExercise löschenStudioTrainingPlanExercise
Felder anzeigen (21)
idintegerPrimärschlüssel der Planübung. Interne ID.
plan_dayStudioTrainingPlanDayPlantag, zu dem die Übung gehört.
Felder anzeigen (11)
idintegerPrimärschlüssel des Plantags. Interne ID.
planStudioTrainingPlanPlan, zu dem der Tag gehört.
namestringName des Plantags.
descriptionstringBeschreibung des Plantags.
day_of_weekintegerOptionaler fester Wochentag (1 = Montag ... 7 = Sonntag), wenn der Plan an Wochentage gebunden ist
roundsintegerAnzahl der Runden, wenn der Tag als Zirkel (Zirkeltraining) ausgeführt wird
round_rest_secondsintegerPause zwischen den Zirkelrunden in Sekunden
createdstring (date-time)Zeitpunkt, zu dem der Datensatz angelegt wurde.
updatedstring (date-time)Zeitpunkt, zu dem der Datensatz zuletzt aktualisiert wurde.
deletedbooleanDiese Eigenschaft markiert eine Entität als gelöscht / archiviert
orderintegerPosition des Datensatzes in der Reihenfolge.
presetStudioTrainingPresetTrainingsvorlage der Übung.
Felder anzeigen (25)
idintegerPrimärschlüssel der Trainingsvorlage. Interne ID.
namestringName der Übung.
descriptionstringBeschreibung der Übung.
imageAttachment10Bild der Übung.
videoAttachment10Video der Übung.
durationintegerTypische Dauer der Übung in Sekunden.
muscle_groupsarray<StudioTrainingMuscleGroup>Hauptsächlich trainierte Muskelgruppen
secondary_muscle_groupsarray<StudioTrainingMuscleGroup>Zusätzlich trainierte Muskelgruppen
exercise_typestringKategorie der Übung, z. B. Kraft, Cardio, Mobilität, Reha
equipmentstringBenötigte Ausstattung als Freitext, z. B. Langhantel, Kabelzug, Körpergewicht
execution_notesstringAusführungshinweise und Sicherheitshinweise für das Mitglied
default_setsintegerStandardverordnung, die vorgeschlagen wird, wenn die Vorlage dem Plan hinzugefügt wird
default_repetitionsintegerStandardanzahl der Wiederholungen.
default_rest_secondsintegerStandard-Ruhezeit in Sekunden.
content_sourcestringEine der CONTENT_SOURCE_*-Konstanten
content_source_namestringName des Katalogs, aus dem der Eintrag übernommen wurde, z. B. wger
licensestringLizenz des importierten Inhalts, z. B. CC-BY-SA 4.0
license_authorstringAutor, der zur Erfüllung der Lizenzangabe genannt werden muss
license_author_urlstringLink zum Urheber der Bild- oder Videolizenz.
review_statusstringEine der REVIEW_STATUS_*-Konstanten, um generierte oder importierte Übungsanleitungen unter menschlicher Kontrolle zu halten, bevor sie veröffentlicht werden
reviewed_atstring (date-time)Zeitpunkt, zu dem die Übung geprüft wurde.
reviewed_bystringName des Prüfers.
createdstring (date-time)Zeitpunkt, zu dem der Datensatz angelegt wurde.
updatedstring (date-time)Zeitpunkt, zu dem der Datensatz zuletzt aktualisiert wurde.
deletedbooleanDiese Eigenschaft markiert eine Entität als gelöscht / archiviert
deviceStudioDeviceOptionale konkrete Maschine für diese Übung
Felder anzeigen (10)
idintegerPrimärschlüssel des Studiogeräts. Interne ID.
namestringName des Geräts.
descriptionstringBeschreibung des Geräts.
manufacturerstringHersteller des Geräts.
modelstringModell des Geräts.
device_typestringArt des Geräts, zum Beispiel Laufband oder Fahrrad.
identifierstringKennung des Geräts beim Hersteller.
createdstring (date-time)Zeitpunkt, zu dem der Datensatz angelegt wurde.
updatedstring (date-time)Zeitpunkt, zu dem der Datensatz zuletzt aktualisiert wurde.
deletedbooleanDiese Eigenschaft markiert eine Entität als gelöscht / archiviert
namestringÜberschreibt den Vorgabenamen, wenn der Trainer die Übung für diesen Plan umbenannt hat
setsintegerAnzahl der Sätze.
repetitionsintegerAnzahl der Wiederholungen pro Satz.
repetitions_tointegerObere Grenze, wenn die Verordnung ein Wiederholungsbereich ist (z. B. 8 - 12)
weightnumber (float)Gewicht je Wiederholung.
weight_unitstringEinheit des Gewichts, zum Beispiel kg.
duration_secondsintegerDauer eines Satzes in Sekunden bei zeitbasierten Übungen
rest_secondsintegerPause zwischen den Sätzen in Sekunden
tempostringBewegungstempo-Notation, z. B. "2-0-2-0"
intensity_percentnumber (float)Zielintensität in Prozent des One-Repetition-Maximums
rpenumber (float)Zielwert der empfundenen Anstrengung / Wiederholungen in Reserve
circuit_groupstringÜbungen desselben Tages mit gleichem Schlüssel bilden einen Superset- / Zirkeltrainingsblock
notesstringAnmerkungen zur Übung.
createdstring (date-time)Zeitpunkt, zu dem der Datensatz angelegt wurde.
updatedstring (date-time)Zeitpunkt, zu dem der Datensatz zuletzt aktualisiert wurde.
deletedbooleanDiese Eigenschaft markiert eine Entität als gelöscht / archiviert
orderintegerPosition des Datensatzes in der Reihenfolge.
curl --request DELETE \
--url https://eure-instanz.iw-erp.de/api/crm/studio_training/plan_exercise/42 \
--header 'x-iw-jwt-token: <TOKEN>'const options = {method: 'DELETE', headers: {'x-iw-jwt-token': '<TOKEN>'}};
fetch('https://eure-instanz.iw-erp.de/api/crm/studio_training/plan_exercise/42', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://eure-instanz.iw-erp.de/api/crm/studio_training/plan_exercise/42"
headers = {"x-iw-jwt-token": "<TOKEN>"}
response = requests.delete(url, headers=headers)
print(response.text)<?php
require_once('vendor/autoload.php');
$client = new \GuzzleHttp\Client();
$response = $client->request('DELETE', 'https://eure-instanz.iw-erp.de/api/crm/studio_training/plan_exercise/42', [
'headers' => [
'x-iw-jwt-token' => '<TOKEN>',
],
]);
echo $response->getBody();using System.Net.Http.Headers;
var client = new HttpClient();
var request = new HttpRequestMessage
{
Method = HttpMethod.Delete,
RequestUri = new Uri("https://eure-instanz.iw-erp.de/api/crm/studio_training/plan_exercise/42"),
Headers =
{
{ "x-iw-jwt-token", "<TOKEN>" },
},
};
using (var response = await client.SendAsync(request))
{
response.EnsureSuccessStatusCode();
var body = await response.Content.ReadAsStringAsync();
Console.WriteLine(body);
}OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder()
.url("https://eure-instanz.iw-erp.de/api/crm/studio_training/plan_exercise/42")
.delete(null)
.addHeader("x-iw-jwt-token", "<TOKEN>")
.build();
Response response = client.newCall(request).execute();package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://eure-instanz.iw-erp.de/api/crm/studio_training/plan_exercise/42"
req, _ := http.NewRequest("DELETE", url, nil)
req.Header.Add("x-iw-jwt-token", "<TOKEN>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}Dart mit dem Package iw_erp_api
import 'package:iw_erp_api/clients/studio_training_plan_exercise_controller.dart';
import 'package:iw_erp_api/logic/iw_api_state.dart';
IwApiState().host = 'eure-instanz.iw-erp.de';
IwApiState().currentJwtApiToken = '<TOKEN>';
final result = await StudioTrainingPlanExerciseController.delete('42');
if (result.success) {
print(result.data);
}{
"id": 42,
"name": "Beispiel",
"plan_day": {
"id": 42,
"name": "Beispiel",
"description": "Text",
"plan": {
"id": 42,
"name": "Beispiel",
"description": "Text",
"times_per_week": 1,
"status": "string",
"is_template": true,
"valid_from": "2026-10-15T09:30:00+02:00",
"valid_until": "2026-10-15T09:30:00+02:00",
"review_date": "2026-10-15T09:30:00+02:00",
"training_goal": "string"
},
"day_of_week": 1,
"rounds": 1,
"round_rest_seconds": 1,
"created": "2026-10-15T09:30:00+02:00",
"updated": "2026-10-15T09:30:00+02:00",
"deleted": true
},
"preset": {
"id": 42,
"name": "Beispiel",
"description": "Text",
"content_source_name": "Beispiel",
"license_author_url": "https://vynst.de",
"image": {
"id": 42,
"ocr_from_name": "Beispiel",
"ocr_from_email": "lena.hartmann@example.org",
"ocr_from_phone": "+49 511 123456",
"ocr_to_name": "Beispiel",
"ocr_to_email": "lena.hartmann@example.org",
"ocr_to_phone": "+49 511 123456",
"filename": "string",
"filesize": "string",
"mimetype": "string"
},
"video": {
"id": 42,
"ocr_from_name": "Beispiel",
"ocr_from_email": "lena.hartmann@example.org",
"ocr_from_phone": "+49 511 123456",
"ocr_to_name": "Beispiel",
"ocr_to_email": "lena.hartmann@example.org",
"ocr_to_phone": "+49 511 123456",
"filename": "string",
"filesize": "string",
"mimetype": "string"
},
"duration": 1,
"exercise_type": "string",
"equipment": "string"
},
"device": {
"id": 42,
"name": "Beispiel",
"description": "Text",
"manufacturer": "string",
"model": "string",
"device_type": "string",
"identifier": "42",
"created": "2026-10-15T09:30:00+02:00",
"updated": "2026-10-15T09:30:00+02:00",
"deleted": true
},
"sets": 1,
"repetitions": 1,
"repetitions_to": 1,
"weight": 1.5,
"weight_unit": "string"
}