StudioTraining / StudioTrainingMeasurement
Returns a list of StudioTrainingMeasurement objects
GET/api/crm/studio_training/measurement
Query parameters
idstring | |
deletedboolean | This property is used to mark an entity as deleted / archived | Default value: false |
trainingPersonDatastring | |
presetstring | Preset the measurement belongs to, used for strength test values |
measuredAtstring | |
measurementTypestring | One of the TYPE_* constants |
sourcestring | One of the SOURCE_* constants |
searchStringstring | text to search for in the list |
orderFieldNamestring | name of the order field |
orderFieldSortstring | sorting modeAllowed: DESCASC |
pageinteger | page of the list |
pageSizeinteger | number of entries for each page |
withMaxPageNumberstring | returns the number of pages available as a header if this is set |
Responses
200Returns a list of StudioTrainingMeasurement objectsarray<StudioTrainingMeasurement>
Show fields (14)
idintegerPrimary key of the training measurement. Internal ID.
training_person_dataStudioTrainingPersonData2Training data of the person measured.
Show fields (7)
idintegerPrimary key of the training person data. Internal ID.
personCRMPerson10Person the training data belongs to.
personal_trainerCRMPerson10Personal trainer of the person.
weightnumber (float)Body weight of the person.
createdstring (date-time)Point in time the entity was created.
updatedstring (date-time)Point in time the entity was last updated.
deletedbooleanThis property is used to mark an entity as deleted / archived
presetStudioTrainingPresetPreset the measurement belongs to, used for strength test values
Show fields (25)
idintegerPrimary key of the training preset. Internal ID.
namestringName of the exercise.
descriptionstringDescription of the exercise.
imageAttachment10Image of the exercise.
videoAttachment10Video of the exercise.
durationintegerTypical duration of the exercise in seconds.
muscle_groupsarray<StudioTrainingMuscleGroup>Primarily trained muscle groups
secondary_muscle_groupsarray<StudioTrainingMuscleGroup>Secondarily trained muscle groups
exercise_typestringCategory of the exercise, e.g. strength, cardio, mobility, rehab
equipmentstringRequired equipment as free text, e.g. barbell, cable machine, bodyweight
execution_notesstringExecution cues and safety notes for the member
default_setsintegerDefault prescription proposed when the preset is added to a plan
default_repetitionsintegerDefault number of repetitions.
default_rest_secondsintegerDefault rest time in seconds.
content_sourcestringOne of the CONTENT_SOURCE_* constants
content_source_namestringName of the catalogue the entry was seeded from, e.g. wger
licensestringLicence of the imported content, e.g. CC-BY-SA 4.0
license_authorstringAuthor that has to be named to fulfil the licence attribution
license_author_urlstringLink to the author of the image or video license.
review_statusstringOne of the REVIEW_STATUS_* constants, used to keep generated or imported exercise instructions under human control before they are published
reviewed_atstring (date-time)Time the exercise was reviewed.
reviewed_bystringName of the reviewer.
createdstring (date-time)Point in time the entity was created.
updatedstring (date-time)Point in time the entity was last updated.
deletedbooleanThis property is used to mark an entity as deleted / archived
measured_atstring (date-time)Time of the measurement.
measurement_typestringOne of the TYPE_* constants
valuenumber (float)Measured value.
unitstringUnit of the measured value.
body_sitestringBody site for girth measurements, e.g. waist, hip, chest
sourcestringOne of the SOURCE_* constants
source_devicestringName of the measuring device or provider, e.g. InBody 970, seca mBCA
notesstringNotes on the measurement.
createdstring (date-time)Point in time the entity was created.
updatedstring (date-time)Point in time the entity was last updated.
deletedbooleanThis property is used to mark an entity as deleted / archived
curl --request GET \
--url https://your-instance.iw-erp.de/api/crm/studio_training/measurement \
--header 'x-iw-jwt-token: <TOKEN>'const options = {method: 'GET', headers: {'x-iw-jwt-token': '<TOKEN>'}};
fetch('https://your-instance.iw-erp.de/api/crm/studio_training/measurement', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://your-instance.iw-erp.de/api/crm/studio_training/measurement"
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://your-instance.iw-erp.de/api/crm/studio_training/measurement', [
'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://your-instance.iw-erp.de/api/crm/studio_training/measurement"),
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://your-instance.iw-erp.de/api/crm/studio_training/measurement")
.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://your-instance.iw-erp.de/api/crm/studio_training/measurement"
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 with the iw_erp_api package
import 'package:iw_erp_api/clients/studio_training_measurement_controller.dart';
import 'package:iw_erp_api/logic/iw_api_state.dart';
IwApiState().host = 'your-instance.iw-erp.de';
IwApiState().currentJwtApiToken = '<TOKEN>';
final result = await StudioTrainingMeasurementController.getAll();
if (result.success) {
print(result.data);
}[
{
"id": 42,
"training_person_data": {
"id": 42,
"weight": 1.5,
"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",
"duration": 1,
"exercise_type": "string",
"equipment": "string",
"execution_notes": "string",
"default_sets": 1
},
"measured_at": "2026-10-15T09:30:00+02:00",
"measurement_type": "string",
"value": 1.5,
"unit": "string",
"body_site": "string",
"source": "string",
"source_device": "string"
}
]Create a single StudioTrainingMeasurement
POST/api/crm/studio_training/measurement
Request body application/json
dataStudioTrainingMeasurementShow fields (14)
idintegerPrimary key of the training measurement. Internal ID.
training_person_dataStudioTrainingPersonData2Training data of the person measured.
presetStudioTrainingPresetPreset the measurement belongs to, used for strength test values
measured_atstring (date-time)Time of the measurement.
measurement_typestringOne of the TYPE_* constants
valuenumber (float)Measured value.
unitstringUnit of the measured value.
body_sitestringBody site for girth measurements, e.g. waist, hip, chest
sourcestringOne of the SOURCE_* constants
source_devicestringName of the measuring device or provider, e.g. InBody 970, seca mBCA
notesstringNotes on the measurement.
createdstring (date-time)Point in time the entity was created.
updatedstring (date-time)Point in time the entity was last updated.
deletedbooleanThis property is used to mark an entity as deleted / archived
Responses
200Create a single StudioTrainingMeasurementStudioTrainingMeasurement
Show fields (14)
idintegerPrimary key of the training measurement. Internal ID.
training_person_dataStudioTrainingPersonData2Training data of the person measured.
Show fields (7)
idintegerPrimary key of the training person data. Internal ID.
personCRMPerson10Person the training data belongs to.
personal_trainerCRMPerson10Personal trainer of the person.
weightnumber (float)Body weight of the person.
createdstring (date-time)Point in time the entity was created.
updatedstring (date-time)Point in time the entity was last updated.
deletedbooleanThis property is used to mark an entity as deleted / archived
presetStudioTrainingPresetPreset the measurement belongs to, used for strength test values
Show fields (25)
idintegerPrimary key of the training preset. Internal ID.
namestringName of the exercise.
descriptionstringDescription of the exercise.
imageAttachment10Image of the exercise.
videoAttachment10Video of the exercise.
durationintegerTypical duration of the exercise in seconds.
muscle_groupsarray<StudioTrainingMuscleGroup>Primarily trained muscle groups
secondary_muscle_groupsarray<StudioTrainingMuscleGroup>Secondarily trained muscle groups
exercise_typestringCategory of the exercise, e.g. strength, cardio, mobility, rehab
equipmentstringRequired equipment as free text, e.g. barbell, cable machine, bodyweight
execution_notesstringExecution cues and safety notes for the member
default_setsintegerDefault prescription proposed when the preset is added to a plan
default_repetitionsintegerDefault number of repetitions.
default_rest_secondsintegerDefault rest time in seconds.
content_sourcestringOne of the CONTENT_SOURCE_* constants
content_source_namestringName of the catalogue the entry was seeded from, e.g. wger
licensestringLicence of the imported content, e.g. CC-BY-SA 4.0
license_authorstringAuthor that has to be named to fulfil the licence attribution
license_author_urlstringLink to the author of the image or video license.
review_statusstringOne of the REVIEW_STATUS_* constants, used to keep generated or imported exercise instructions under human control before they are published
reviewed_atstring (date-time)Time the exercise was reviewed.
reviewed_bystringName of the reviewer.
createdstring (date-time)Point in time the entity was created.
updatedstring (date-time)Point in time the entity was last updated.
deletedbooleanThis property is used to mark an entity as deleted / archived
measured_atstring (date-time)Time of the measurement.
measurement_typestringOne of the TYPE_* constants
valuenumber (float)Measured value.
unitstringUnit of the measured value.
body_sitestringBody site for girth measurements, e.g. waist, hip, chest
sourcestringOne of the SOURCE_* constants
source_devicestringName of the measuring device or provider, e.g. InBody 970, seca mBCA
notesstringNotes on the measurement.
createdstring (date-time)Point in time the entity was created.
updatedstring (date-time)Point in time the entity was last updated.
deletedbooleanThis property is used to mark an entity as deleted / archived
curl --request POST \
--url https://your-instance.iw-erp.de/api/crm/studio_training/measurement \
--header 'content-type: application/json' \
--header 'x-iw-jwt-token: <TOKEN>' \
--data '
{
"data": {
"id": 42,
"training_person_data": {
"id": 42,
"weight": 1.5,
"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",
"duration": 1
},
"measured_at": "2026-10-15T09:30:00+02:00",
"measurement_type": "string",
"value": 1.5
}
}
'const options = {
method: 'POST',
headers: {'x-iw-jwt-token': '<TOKEN>', 'content-type': 'application/json'},
body: JSON.stringify({
data: {
id: 42,
training_person_data: {
id: 42,
weight: 1.5,
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',
duration: 1
},
measured_at: '2026-10-15T09:30:00+02:00',
measurement_type: 'string',
value: 1.5
}
})
};
fetch('https://your-instance.iw-erp.de/api/crm/studio_training/measurement', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://your-instance.iw-erp.de/api/crm/studio_training/measurement"
payload = { "data": {
"id": 42,
"training_person_data": {
"id": 42,
"weight": 1.5,
"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",
"duration": 1
},
"measured_at": "2026-10-15T09:30:00+02:00",
"measurement_type": "string",
"value": 1.5
} }
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://your-instance.iw-erp.de/api/crm/studio_training/measurement', [
'body' => '{"data":{"id":42,"training_person_data":{"id":42,"weight":1.5,"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","duration":1},"measured_at":"2026-10-15T09:30:00+02:00","measurement_type":"string","value":1.5}}',
'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://your-instance.iw-erp.de/api/crm/studio_training/measurement"),
Headers =
{
{ "x-iw-jwt-token", "<TOKEN>" },
},
Content = new StringContent("{\"data\":{\"id\":42,\"training_person_data\":{\"id\":42,\"weight\":1.5,\"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\",\"duration\":1},\"measured_at\":\"2026-10-15T09:30:00+02:00\",\"measurement_type\":\"string\",\"value\":1.5}}")
{
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,\"training_person_data\":{\"id\":42,\"weight\":1.5,\"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\",\"duration\":1},\"measured_at\":\"2026-10-15T09:30:00+02:00\",\"measurement_type\":\"string\",\"value\":1.5}}");
Request request = new Request.Builder()
.url("https://your-instance.iw-erp.de/api/crm/studio_training/measurement")
.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://your-instance.iw-erp.de/api/crm/studio_training/measurement"
payload := strings.NewReader("{\"data\":{\"id\":42,\"training_person_data\":{\"id\":42,\"weight\":1.5,\"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\",\"duration\":1},\"measured_at\":\"2026-10-15T09:30:00+02:00\",\"measurement_type\":\"string\",\"value\":1.5}}")
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 with the iw_erp_api package
import 'package:iw_erp_api/clients/studio_training_measurement_controller.dart';
import 'package:iw_erp_api/logic/iw_api_state.dart';
import 'package:iw_erp_api/model/studio_training_measurement.dart';
IwApiState().host = 'your-instance.iw-erp.de';
IwApiState().currentJwtApiToken = '<TOKEN>';
final result = await StudioTrainingMeasurementController.post(StudioTrainingMeasurement.fromJson({
"id": 42,
"training_person_data": {
"id": 42,
"weight": 1.5,
"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",
"duration": 1
},
"measured_at": "2026-10-15T09:30:00+02:00",
"measurement_type": "string",
"value": 1.5
}));
if (result.success) {
print(result.data);
}{
"id": 42,
"training_person_data": {
"id": 42,
"person": {
"id": 42,
"first_name": "Lena",
"last_name": "Hartmann",
"title": "Beispiel",
"language": "de",
"support_description": "Text",
"profile_picture_url": "https://vynst.de",
"address_street": "Jakobistr. 39",
"address_city": "Hannover",
"address_zip": "30163"
},
"personal_trainer": {
"id": 42,
"first_name": "Lena",
"last_name": "Hartmann",
"title": "Beispiel",
"language": "de",
"support_description": "Text",
"profile_picture_url": "https://vynst.de",
"address_street": "Jakobistr. 39",
"address_city": "Hannover",
"address_zip": "30163"
},
"weight": 1.5,
"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"
},
"measured_at": "2026-10-15T09:30:00+02:00",
"measurement_type": "string",
"value": 1.5,
"unit": "string",
"body_site": "string",
"source": "string",
"source_device": "string"
}Returns a single StudioTrainingMeasurement
GET/api/crm/studio_training/measurement/{identifier}
Path parameters
identifierrequiredstring |
Responses
200Returns a single StudioTrainingMeasurementStudioTrainingMeasurement
Show fields (14)
idintegerPrimary key of the training measurement. Internal ID.
training_person_dataStudioTrainingPersonData2Training data of the person measured.
Show fields (7)
idintegerPrimary key of the training person data. Internal ID.
personCRMPerson10Person the training data belongs to.
personal_trainerCRMPerson10Personal trainer of the person.
weightnumber (float)Body weight of the person.
createdstring (date-time)Point in time the entity was created.
updatedstring (date-time)Point in time the entity was last updated.
deletedbooleanThis property is used to mark an entity as deleted / archived
presetStudioTrainingPresetPreset the measurement belongs to, used for strength test values
Show fields (25)
idintegerPrimary key of the training preset. Internal ID.
namestringName of the exercise.
descriptionstringDescription of the exercise.
imageAttachment10Image of the exercise.
videoAttachment10Video of the exercise.
durationintegerTypical duration of the exercise in seconds.
muscle_groupsarray<StudioTrainingMuscleGroup>Primarily trained muscle groups
secondary_muscle_groupsarray<StudioTrainingMuscleGroup>Secondarily trained muscle groups
exercise_typestringCategory of the exercise, e.g. strength, cardio, mobility, rehab
equipmentstringRequired equipment as free text, e.g. barbell, cable machine, bodyweight
execution_notesstringExecution cues and safety notes for the member
default_setsintegerDefault prescription proposed when the preset is added to a plan
default_repetitionsintegerDefault number of repetitions.
default_rest_secondsintegerDefault rest time in seconds.
content_sourcestringOne of the CONTENT_SOURCE_* constants
content_source_namestringName of the catalogue the entry was seeded from, e.g. wger
licensestringLicence of the imported content, e.g. CC-BY-SA 4.0
license_authorstringAuthor that has to be named to fulfil the licence attribution
license_author_urlstringLink to the author of the image or video license.
review_statusstringOne of the REVIEW_STATUS_* constants, used to keep generated or imported exercise instructions under human control before they are published
reviewed_atstring (date-time)Time the exercise was reviewed.
reviewed_bystringName of the reviewer.
createdstring (date-time)Point in time the entity was created.
updatedstring (date-time)Point in time the entity was last updated.
deletedbooleanThis property is used to mark an entity as deleted / archived
measured_atstring (date-time)Time of the measurement.
measurement_typestringOne of the TYPE_* constants
valuenumber (float)Measured value.
unitstringUnit of the measured value.
body_sitestringBody site for girth measurements, e.g. waist, hip, chest
sourcestringOne of the SOURCE_* constants
source_devicestringName of the measuring device or provider, e.g. InBody 970, seca mBCA
notesstringNotes on the measurement.
createdstring (date-time)Point in time the entity was created.
updatedstring (date-time)Point in time the entity was last updated.
deletedbooleanThis property is used to mark an entity as deleted / archived
curl --request GET \
--url https://your-instance.iw-erp.de/api/crm/studio_training/measurement/42 \
--header 'x-iw-jwt-token: <TOKEN>'const options = {method: 'GET', headers: {'x-iw-jwt-token': '<TOKEN>'}};
fetch('https://your-instance.iw-erp.de/api/crm/studio_training/measurement/42', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://your-instance.iw-erp.de/api/crm/studio_training/measurement/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://your-instance.iw-erp.de/api/crm/studio_training/measurement/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://your-instance.iw-erp.de/api/crm/studio_training/measurement/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://your-instance.iw-erp.de/api/crm/studio_training/measurement/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://your-instance.iw-erp.de/api/crm/studio_training/measurement/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 with the iw_erp_api package
import 'package:iw_erp_api/clients/studio_training_measurement_controller.dart';
import 'package:iw_erp_api/logic/iw_api_state.dart';
IwApiState().host = 'your-instance.iw-erp.de';
IwApiState().currentJwtApiToken = '<TOKEN>';
final result = await StudioTrainingMeasurementController.get('42');
if (result.success) {
print(result.data);
}{
"id": 42,
"training_person_data": {
"id": 42,
"person": {
"id": 42,
"first_name": "Lena",
"last_name": "Hartmann",
"title": "Beispiel",
"language": "de",
"support_description": "Text",
"profile_picture_url": "https://vynst.de",
"address_street": "Jakobistr. 39",
"address_city": "Hannover",
"address_zip": "30163"
},
"personal_trainer": {
"id": 42,
"first_name": "Lena",
"last_name": "Hartmann",
"title": "Beispiel",
"language": "de",
"support_description": "Text",
"profile_picture_url": "https://vynst.de",
"address_street": "Jakobistr. 39",
"address_city": "Hannover",
"address_zip": "30163"
},
"weight": 1.5,
"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"
},
"measured_at": "2026-10-15T09:30:00+02:00",
"measurement_type": "string",
"value": 1.5,
"unit": "string",
"body_site": "string",
"source": "string",
"source_device": "string"
}Update a single StudioTrainingMeasurement
PUT/api/crm/studio_training/measurement/{identifier}
Path parameters
identifierrequiredstring |
Request body application/json
dataStudioTrainingMeasurementShow fields (14)
idintegerPrimary key of the training measurement. Internal ID.
training_person_dataStudioTrainingPersonData2Training data of the person measured.
presetStudioTrainingPresetPreset the measurement belongs to, used for strength test values
measured_atstring (date-time)Time of the measurement.
measurement_typestringOne of the TYPE_* constants
valuenumber (float)Measured value.
unitstringUnit of the measured value.
body_sitestringBody site for girth measurements, e.g. waist, hip, chest
sourcestringOne of the SOURCE_* constants
source_devicestringName of the measuring device or provider, e.g. InBody 970, seca mBCA
notesstringNotes on the measurement.
createdstring (date-time)Point in time the entity was created.
updatedstring (date-time)Point in time the entity was last updated.
deletedbooleanThis property is used to mark an entity as deleted / archived
Responses
200Update a single StudioTrainingMeasurementStudioTrainingMeasurement
Show fields (14)
idintegerPrimary key of the training measurement. Internal ID.
training_person_dataStudioTrainingPersonData2Training data of the person measured.
Show fields (7)
idintegerPrimary key of the training person data. Internal ID.
personCRMPerson10Person the training data belongs to.
personal_trainerCRMPerson10Personal trainer of the person.
weightnumber (float)Body weight of the person.
createdstring (date-time)Point in time the entity was created.
updatedstring (date-time)Point in time the entity was last updated.
deletedbooleanThis property is used to mark an entity as deleted / archived
presetStudioTrainingPresetPreset the measurement belongs to, used for strength test values
Show fields (25)
idintegerPrimary key of the training preset. Internal ID.
namestringName of the exercise.
descriptionstringDescription of the exercise.
imageAttachment10Image of the exercise.
videoAttachment10Video of the exercise.
durationintegerTypical duration of the exercise in seconds.
muscle_groupsarray<StudioTrainingMuscleGroup>Primarily trained muscle groups
secondary_muscle_groupsarray<StudioTrainingMuscleGroup>Secondarily trained muscle groups
exercise_typestringCategory of the exercise, e.g. strength, cardio, mobility, rehab
equipmentstringRequired equipment as free text, e.g. barbell, cable machine, bodyweight
execution_notesstringExecution cues and safety notes for the member
default_setsintegerDefault prescription proposed when the preset is added to a plan
default_repetitionsintegerDefault number of repetitions.
default_rest_secondsintegerDefault rest time in seconds.
content_sourcestringOne of the CONTENT_SOURCE_* constants
content_source_namestringName of the catalogue the entry was seeded from, e.g. wger
licensestringLicence of the imported content, e.g. CC-BY-SA 4.0
license_authorstringAuthor that has to be named to fulfil the licence attribution
license_author_urlstringLink to the author of the image or video license.
review_statusstringOne of the REVIEW_STATUS_* constants, used to keep generated or imported exercise instructions under human control before they are published
reviewed_atstring (date-time)Time the exercise was reviewed.
reviewed_bystringName of the reviewer.
createdstring (date-time)Point in time the entity was created.
updatedstring (date-time)Point in time the entity was last updated.
deletedbooleanThis property is used to mark an entity as deleted / archived
measured_atstring (date-time)Time of the measurement.
measurement_typestringOne of the TYPE_* constants
valuenumber (float)Measured value.
unitstringUnit of the measured value.
body_sitestringBody site for girth measurements, e.g. waist, hip, chest
sourcestringOne of the SOURCE_* constants
source_devicestringName of the measuring device or provider, e.g. InBody 970, seca mBCA
notesstringNotes on the measurement.
createdstring (date-time)Point in time the entity was created.
updatedstring (date-time)Point in time the entity was last updated.
deletedbooleanThis property is used to mark an entity as deleted / archived
curl --request PUT \
--url https://your-instance.iw-erp.de/api/crm/studio_training/measurement/42 \
--header 'content-type: application/json' \
--header 'x-iw-jwt-token: <TOKEN>' \
--data '
{
"data": {
"id": 42,
"training_person_data": {
"id": 42,
"weight": 1.5,
"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",
"duration": 1
},
"measured_at": "2026-10-15T09:30:00+02:00",
"measurement_type": "string",
"value": 1.5
}
}
'const options = {
method: 'PUT',
headers: {'x-iw-jwt-token': '<TOKEN>', 'content-type': 'application/json'},
body: JSON.stringify({
data: {
id: 42,
training_person_data: {
id: 42,
weight: 1.5,
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',
duration: 1
},
measured_at: '2026-10-15T09:30:00+02:00',
measurement_type: 'string',
value: 1.5
}
})
};
fetch('https://your-instance.iw-erp.de/api/crm/studio_training/measurement/42', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://your-instance.iw-erp.de/api/crm/studio_training/measurement/42"
payload = { "data": {
"id": 42,
"training_person_data": {
"id": 42,
"weight": 1.5,
"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",
"duration": 1
},
"measured_at": "2026-10-15T09:30:00+02:00",
"measurement_type": "string",
"value": 1.5
} }
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://your-instance.iw-erp.de/api/crm/studio_training/measurement/42', [
'body' => '{"data":{"id":42,"training_person_data":{"id":42,"weight":1.5,"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","duration":1},"measured_at":"2026-10-15T09:30:00+02:00","measurement_type":"string","value":1.5}}',
'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://your-instance.iw-erp.de/api/crm/studio_training/measurement/42"),
Headers =
{
{ "x-iw-jwt-token", "<TOKEN>" },
},
Content = new StringContent("{\"data\":{\"id\":42,\"training_person_data\":{\"id\":42,\"weight\":1.5,\"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\",\"duration\":1},\"measured_at\":\"2026-10-15T09:30:00+02:00\",\"measurement_type\":\"string\",\"value\":1.5}}")
{
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,\"training_person_data\":{\"id\":42,\"weight\":1.5,\"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\",\"duration\":1},\"measured_at\":\"2026-10-15T09:30:00+02:00\",\"measurement_type\":\"string\",\"value\":1.5}}");
Request request = new Request.Builder()
.url("https://your-instance.iw-erp.de/api/crm/studio_training/measurement/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://your-instance.iw-erp.de/api/crm/studio_training/measurement/42"
payload := strings.NewReader("{\"data\":{\"id\":42,\"training_person_data\":{\"id\":42,\"weight\":1.5,\"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\",\"duration\":1},\"measured_at\":\"2026-10-15T09:30:00+02:00\",\"measurement_type\":\"string\",\"value\":1.5}}")
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 with package:http (no controller in the iw_erp_api package)
import 'dart:convert';
import 'package:http/http.dart' as http;
final response = await http.put(
Uri.parse('https://your-instance.iw-erp.de/api/crm/studio_training/measurement/42'),
headers: {'x-iw-jwt-token': '<TOKEN>', 'content-type': 'application/json'},
body: jsonEncode({
"data": {
"id": 42,
"training_person_data": {
"id": 42,
"weight": 1.5,
"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",
"duration": 1
},
"measured_at": "2026-10-15T09:30:00+02:00",
"measurement_type": "string",
"value": 1.5
}
}),
);
print(response.body);{
"id": 42,
"training_person_data": {
"id": 42,
"person": {
"id": 42,
"first_name": "Lena",
"last_name": "Hartmann",
"title": "Beispiel",
"language": "de",
"support_description": "Text",
"profile_picture_url": "https://vynst.de",
"address_street": "Jakobistr. 39",
"address_city": "Hannover",
"address_zip": "30163"
},
"personal_trainer": {
"id": 42,
"first_name": "Lena",
"last_name": "Hartmann",
"title": "Beispiel",
"language": "de",
"support_description": "Text",
"profile_picture_url": "https://vynst.de",
"address_street": "Jakobistr. 39",
"address_city": "Hannover",
"address_zip": "30163"
},
"weight": 1.5,
"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"
},
"measured_at": "2026-10-15T09:30:00+02:00",
"measurement_type": "string",
"value": 1.5,
"unit": "string",
"body_site": "string",
"source": "string",
"source_device": "string"
}Update a single StudioTrainingMeasurement
PATCH/api/crm/studio_training/measurement/{identifier}
Path parameters
identifierrequiredstring |
Request body application/json
dataStudioTrainingMeasurementShow fields (14)
idintegerPrimary key of the training measurement. Internal ID.
training_person_dataStudioTrainingPersonData2Training data of the person measured.
presetStudioTrainingPresetPreset the measurement belongs to, used for strength test values
measured_atstring (date-time)Time of the measurement.
measurement_typestringOne of the TYPE_* constants
valuenumber (float)Measured value.
unitstringUnit of the measured value.
body_sitestringBody site for girth measurements, e.g. waist, hip, chest
sourcestringOne of the SOURCE_* constants
source_devicestringName of the measuring device or provider, e.g. InBody 970, seca mBCA
notesstringNotes on the measurement.
createdstring (date-time)Point in time the entity was created.
updatedstring (date-time)Point in time the entity was last updated.
deletedbooleanThis property is used to mark an entity as deleted / archived
Responses
200Update a single StudioTrainingMeasurementStudioTrainingMeasurement
Show fields (14)
idintegerPrimary key of the training measurement. Internal ID.
training_person_dataStudioTrainingPersonData2Training data of the person measured.
Show fields (7)
idintegerPrimary key of the training person data. Internal ID.
personCRMPerson10Person the training data belongs to.
personal_trainerCRMPerson10Personal trainer of the person.
weightnumber (float)Body weight of the person.
createdstring (date-time)Point in time the entity was created.
updatedstring (date-time)Point in time the entity was last updated.
deletedbooleanThis property is used to mark an entity as deleted / archived
presetStudioTrainingPresetPreset the measurement belongs to, used for strength test values
Show fields (25)
idintegerPrimary key of the training preset. Internal ID.
namestringName of the exercise.
descriptionstringDescription of the exercise.
imageAttachment10Image of the exercise.
videoAttachment10Video of the exercise.
durationintegerTypical duration of the exercise in seconds.
muscle_groupsarray<StudioTrainingMuscleGroup>Primarily trained muscle groups
secondary_muscle_groupsarray<StudioTrainingMuscleGroup>Secondarily trained muscle groups
exercise_typestringCategory of the exercise, e.g. strength, cardio, mobility, rehab
equipmentstringRequired equipment as free text, e.g. barbell, cable machine, bodyweight
execution_notesstringExecution cues and safety notes for the member
default_setsintegerDefault prescription proposed when the preset is added to a plan
default_repetitionsintegerDefault number of repetitions.
default_rest_secondsintegerDefault rest time in seconds.
content_sourcestringOne of the CONTENT_SOURCE_* constants
content_source_namestringName of the catalogue the entry was seeded from, e.g. wger
licensestringLicence of the imported content, e.g. CC-BY-SA 4.0
license_authorstringAuthor that has to be named to fulfil the licence attribution
license_author_urlstringLink to the author of the image or video license.
review_statusstringOne of the REVIEW_STATUS_* constants, used to keep generated or imported exercise instructions under human control before they are published
reviewed_atstring (date-time)Time the exercise was reviewed.
reviewed_bystringName of the reviewer.
createdstring (date-time)Point in time the entity was created.
updatedstring (date-time)Point in time the entity was last updated.
deletedbooleanThis property is used to mark an entity as deleted / archived
measured_atstring (date-time)Time of the measurement.
measurement_typestringOne of the TYPE_* constants
valuenumber (float)Measured value.
unitstringUnit of the measured value.
body_sitestringBody site for girth measurements, e.g. waist, hip, chest
sourcestringOne of the SOURCE_* constants
source_devicestringName of the measuring device or provider, e.g. InBody 970, seca mBCA
notesstringNotes on the measurement.
createdstring (date-time)Point in time the entity was created.
updatedstring (date-time)Point in time the entity was last updated.
deletedbooleanThis property is used to mark an entity as deleted / archived
curl --request PATCH \
--url https://your-instance.iw-erp.de/api/crm/studio_training/measurement/42 \
--header 'content-type: application/json' \
--header 'x-iw-jwt-token: <TOKEN>' \
--data '
{
"data": {
"id": 42,
"training_person_data": {
"id": 42,
"weight": 1.5,
"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",
"duration": 1
},
"measured_at": "2026-10-15T09:30:00+02:00",
"measurement_type": "string",
"value": 1.5
}
}
'const options = {
method: 'PATCH',
headers: {'x-iw-jwt-token': '<TOKEN>', 'content-type': 'application/json'},
body: JSON.stringify({
data: {
id: 42,
training_person_data: {
id: 42,
weight: 1.5,
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',
duration: 1
},
measured_at: '2026-10-15T09:30:00+02:00',
measurement_type: 'string',
value: 1.5
}
})
};
fetch('https://your-instance.iw-erp.de/api/crm/studio_training/measurement/42', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://your-instance.iw-erp.de/api/crm/studio_training/measurement/42"
payload = { "data": {
"id": 42,
"training_person_data": {
"id": 42,
"weight": 1.5,
"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",
"duration": 1
},
"measured_at": "2026-10-15T09:30:00+02:00",
"measurement_type": "string",
"value": 1.5
} }
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://your-instance.iw-erp.de/api/crm/studio_training/measurement/42', [
'body' => '{"data":{"id":42,"training_person_data":{"id":42,"weight":1.5,"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","duration":1},"measured_at":"2026-10-15T09:30:00+02:00","measurement_type":"string","value":1.5}}',
'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://your-instance.iw-erp.de/api/crm/studio_training/measurement/42"),
Headers =
{
{ "x-iw-jwt-token", "<TOKEN>" },
},
Content = new StringContent("{\"data\":{\"id\":42,\"training_person_data\":{\"id\":42,\"weight\":1.5,\"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\",\"duration\":1},\"measured_at\":\"2026-10-15T09:30:00+02:00\",\"measurement_type\":\"string\",\"value\":1.5}}")
{
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,\"training_person_data\":{\"id\":42,\"weight\":1.5,\"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\",\"duration\":1},\"measured_at\":\"2026-10-15T09:30:00+02:00\",\"measurement_type\":\"string\",\"value\":1.5}}");
Request request = new Request.Builder()
.url("https://your-instance.iw-erp.de/api/crm/studio_training/measurement/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://your-instance.iw-erp.de/api/crm/studio_training/measurement/42"
payload := strings.NewReader("{\"data\":{\"id\":42,\"training_person_data\":{\"id\":42,\"weight\":1.5,\"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\",\"duration\":1},\"measured_at\":\"2026-10-15T09:30:00+02:00\",\"measurement_type\":\"string\",\"value\":1.5}}")
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 with package:http (no controller in the iw_erp_api package)
import 'dart:convert';
import 'package:http/http.dart' as http;
final response = await http.patch(
Uri.parse('https://your-instance.iw-erp.de/api/crm/studio_training/measurement/42'),
headers: {'x-iw-jwt-token': '<TOKEN>', 'content-type': 'application/json'},
body: jsonEncode({
"data": {
"id": 42,
"training_person_data": {
"id": 42,
"weight": 1.5,
"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",
"duration": 1
},
"measured_at": "2026-10-15T09:30:00+02:00",
"measurement_type": "string",
"value": 1.5
}
}),
);
print(response.body);{
"id": 42,
"training_person_data": {
"id": 42,
"person": {
"id": 42,
"first_name": "Lena",
"last_name": "Hartmann",
"title": "Beispiel",
"language": "de",
"support_description": "Text",
"profile_picture_url": "https://vynst.de",
"address_street": "Jakobistr. 39",
"address_city": "Hannover",
"address_zip": "30163"
},
"personal_trainer": {
"id": 42,
"first_name": "Lena",
"last_name": "Hartmann",
"title": "Beispiel",
"language": "de",
"support_description": "Text",
"profile_picture_url": "https://vynst.de",
"address_street": "Jakobistr. 39",
"address_city": "Hannover",
"address_zip": "30163"
},
"weight": 1.5,
"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"
},
"measured_at": "2026-10-15T09:30:00+02:00",
"measurement_type": "string",
"value": 1.5,
"unit": "string",
"body_site": "string",
"source": "string",
"source_device": "string"
}Delete a single StudioTrainingMeasurement (soft delete)
DELETE/api/crm/studio_training/measurement/{identifier}
Path parameters
identifierrequiredstring |
Responses
200Delete a single StudioTrainingMeasurementStudioTrainingMeasurement
Show fields (14)
idintegerPrimary key of the training measurement. Internal ID.
training_person_dataStudioTrainingPersonData2Training data of the person measured.
Show fields (7)
idintegerPrimary key of the training person data. Internal ID.
personCRMPerson10Person the training data belongs to.
personal_trainerCRMPerson10Personal trainer of the person.
weightnumber (float)Body weight of the person.
createdstring (date-time)Point in time the entity was created.
updatedstring (date-time)Point in time the entity was last updated.
deletedbooleanThis property is used to mark an entity as deleted / archived
presetStudioTrainingPresetPreset the measurement belongs to, used for strength test values
Show fields (25)
idintegerPrimary key of the training preset. Internal ID.
namestringName of the exercise.
descriptionstringDescription of the exercise.
imageAttachment10Image of the exercise.
videoAttachment10Video of the exercise.
durationintegerTypical duration of the exercise in seconds.
muscle_groupsarray<StudioTrainingMuscleGroup>Primarily trained muscle groups
secondary_muscle_groupsarray<StudioTrainingMuscleGroup>Secondarily trained muscle groups
exercise_typestringCategory of the exercise, e.g. strength, cardio, mobility, rehab
equipmentstringRequired equipment as free text, e.g. barbell, cable machine, bodyweight
execution_notesstringExecution cues and safety notes for the member
default_setsintegerDefault prescription proposed when the preset is added to a plan
default_repetitionsintegerDefault number of repetitions.
default_rest_secondsintegerDefault rest time in seconds.
content_sourcestringOne of the CONTENT_SOURCE_* constants
content_source_namestringName of the catalogue the entry was seeded from, e.g. wger
licensestringLicence of the imported content, e.g. CC-BY-SA 4.0
license_authorstringAuthor that has to be named to fulfil the licence attribution
license_author_urlstringLink to the author of the image or video license.
review_statusstringOne of the REVIEW_STATUS_* constants, used to keep generated or imported exercise instructions under human control before they are published
reviewed_atstring (date-time)Time the exercise was reviewed.
reviewed_bystringName of the reviewer.
createdstring (date-time)Point in time the entity was created.
updatedstring (date-time)Point in time the entity was last updated.
deletedbooleanThis property is used to mark an entity as deleted / archived
measured_atstring (date-time)Time of the measurement.
measurement_typestringOne of the TYPE_* constants
valuenumber (float)Measured value.
unitstringUnit of the measured value.
body_sitestringBody site for girth measurements, e.g. waist, hip, chest
sourcestringOne of the SOURCE_* constants
source_devicestringName of the measuring device or provider, e.g. InBody 970, seca mBCA
notesstringNotes on the measurement.
createdstring (date-time)Point in time the entity was created.
updatedstring (date-time)Point in time the entity was last updated.
deletedbooleanThis property is used to mark an entity as deleted / archived
curl --request DELETE \
--url https://your-instance.iw-erp.de/api/crm/studio_training/measurement/42 \
--header 'x-iw-jwt-token: <TOKEN>'const options = {method: 'DELETE', headers: {'x-iw-jwt-token': '<TOKEN>'}};
fetch('https://your-instance.iw-erp.de/api/crm/studio_training/measurement/42', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://your-instance.iw-erp.de/api/crm/studio_training/measurement/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://your-instance.iw-erp.de/api/crm/studio_training/measurement/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://your-instance.iw-erp.de/api/crm/studio_training/measurement/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://your-instance.iw-erp.de/api/crm/studio_training/measurement/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://your-instance.iw-erp.de/api/crm/studio_training/measurement/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 with the iw_erp_api package
import 'package:iw_erp_api/clients/studio_training_measurement_controller.dart';
import 'package:iw_erp_api/logic/iw_api_state.dart';
IwApiState().host = 'your-instance.iw-erp.de';
IwApiState().currentJwtApiToken = '<TOKEN>';
final result = await StudioTrainingMeasurementController.delete('42');
if (result.success) {
print(result.data);
}{
"id": 42,
"training_person_data": {
"id": 42,
"person": {
"id": 42,
"first_name": "Lena",
"last_name": "Hartmann",
"title": "Beispiel",
"language": "de",
"support_description": "Text",
"profile_picture_url": "https://vynst.de",
"address_street": "Jakobistr. 39",
"address_city": "Hannover",
"address_zip": "30163"
},
"personal_trainer": {
"id": 42,
"first_name": "Lena",
"last_name": "Hartmann",
"title": "Beispiel",
"language": "de",
"support_description": "Text",
"profile_picture_url": "https://vynst.de",
"address_street": "Jakobistr. 39",
"address_city": "Hannover",
"address_zip": "30163"
},
"weight": 1.5,
"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"
},
"measured_at": "2026-10-15T09:30:00+02:00",
"measurement_type": "string",
"value": 1.5,
"unit": "string",
"body_site": "string",
"source": "string",
"source_device": "string"
}