Trial (Schnuppern)
Events the selected person can try out, each with the trial check (remaining dates, reason when it is not bookable right now). Query: person (a person of the selected company, default the user).
GET/api/event/customer/trial/base_event
Query parameters
personinteger | Person of the selected company |
Responses
200List of {event, allowed, reason, error_code, trial_max, trial_used, trial_remaining, trial_status}
curl --request GET \
--url https://your-instance.iw-erp.de/api/event/customer/trial/base_event \
--header 'x-iw-jwt-token: <TOKEN>'const options = {method: 'GET', headers: {'x-iw-jwt-token': '<TOKEN>'}};
fetch('https://your-instance.iw-erp.de/api/event/customer/trial/base_event', 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/event/customer/trial/base_event"
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/event/customer/trial/base_event', [
'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/event/customer/trial/base_event"),
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/event/customer/trial/base_event")
.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/event/customer/trial/base_event"
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/event_trial_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 EventTrialController.getCustomerEvents();
if (result.success) {
print(result.data);
}Trial check for one event and the dates the selected person can book as trial dates.
GET/api/event/customer/trial/base_event/{eventIdentifier}
Path parameters
eventIdentifierrequiredstring |
Query parameters
personinteger | Person of the selected company |
Responses
200{allowed, reason, error_code, trial_max, trial_used, trial_remaining, trial_status, dates: [{id, name, start_time, end_time}]}
curl --request GET \
--url https://your-instance.iw-erp.de/api/event/customer/trial/base_event/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/event/customer/trial/base_event/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/event/customer/trial/base_event/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/event/customer/trial/base_event/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/event/customer/trial/base_event/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/event/customer/trial/base_event/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/event/customer/trial/base_event/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/event_trial_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 EventTrialController.getCustomerEventCheck('42');
if (result.success) {
print(result.data);
}Book a trial date for a person of the selected company. Body: data.baseBooking; query or data.person (default the user).
POST/api/event/customer/trial/base_event_signup
Request body application/json
dataobjectShow fields (2)
baseBookingintegerpersoninteger
Responses
200The trial date sign-upBaseEventSignUp
Show fields (42)
idintegerPrimary key of the sign-up. Internal ID.
first_namestringFirst name of the participant.
last_namestringLast name of the participant.
genderstringGender of the participant.
waitingbooleanThe sign-up is on the waiting list.
confirmedbooleanThe sign-up is confirmed.
deletion_reasonstringReason the sign-up was cancelled.
direct_billingbooleandirect_billing_check_datestring (date-time)direct_billing_tokenstringwait_list_confirmation_sent_atstring (date-time)wait_list_confirmation_deadlinestring (date-time)wait_list_confirmed_atstring (date-time)wait_list_pending_confirmationbooleanwait_list_sort_orderintegerbirthdaystring (date-time)Birthday of the participant.
known_allergiesstringKnown allergies of the participant.
confirmed_no_allergiesbooleanGuardian confirmed that there are no known allergies.
allow_photosbooleanGuardian allows photos of the participant.
allow_child_alonebooleanParticipant may leave alone after the event.
authorized_pickupstringPersons who are allowed to pick up the participant.
needs_supportbooleanParticipant needs support, for example for inclusion.
support_descriptionstringDescription of the support the participant needs.
financial_supportbooleanParticipant receives financial support.
financial_support_numberstringNumber of the financial support, for example a voucher.
municipal_supportbooleanParticipant receives municipal support.
municipal_support_numberstringNumber of the municipal support.
grade_levelintegerSchool grade level of the participant.
school_classstringSchool class of the participant.
self_check_inbooleanParticipant checked in with the self-service check-in.
self_check_outbooleanParticipant checked out with the self-service check-out.
self_check_in_datestring (date-time)Time of the self-service check-in.
self_check_out_datestring (date-time)Time of the self-service check-out.
reminded_of_absencestring (date-time)Time the guardian was reminded of an absence.
trialbooleanTrial date sign-up (Schnuppern): a date sign-up without a course place that uses up one unit of the person's trial pass (eventAccessBudget with sourceType trial)
trial_channelstringWho booked the trial date: app, trainer, office
trial_session_numberintegerNumber of this trial date within the pass (1 = first), for "Schnuppern 2/3"
trial_session_maxintegerTrial dates of the pass, for "Schnuppern 2/3"
confirmed_datestring (date-time)Time the sign-up was confirmed.
bib_numberintegerStartnummer (Zaehler). Bei PER_PREFIX nur zusammen mit dem Praefix eindeutig. Wird nur ueber BibNumberAssigner gesetzt, stornierte Anmeldungen behalten sie.
bib_labelstringAngezeigte Startnummer inkl. Praefix, z. B. W0123. Pro Event eindeutig.
namestringName of the entity.
curl --request POST \
--url https://your-instance.iw-erp.de/api/event/customer/trial/base_event_signup \
--header 'content-type: application/json' \
--header 'x-iw-jwt-token: <TOKEN>' \
--data '
{
"data": {
"baseBooking": 1,
"person": 1
}
}
'const options = {
method: 'POST',
headers: {'x-iw-jwt-token': '<TOKEN>', 'content-type': 'application/json'},
body: JSON.stringify({data: {baseBooking: 1, person: 1}})
};
fetch('https://your-instance.iw-erp.de/api/event/customer/trial/base_event_signup', 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/event/customer/trial/base_event_signup"
payload = { "data": {
"baseBooking": 1,
"person": 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://your-instance.iw-erp.de/api/event/customer/trial/base_event_signup', [
'body' => '{"data":{"baseBooking":1,"person":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://your-instance.iw-erp.de/api/event/customer/trial/base_event_signup"),
Headers =
{
{ "x-iw-jwt-token", "<TOKEN>" },
},
Content = new StringContent("{\"data\":{\"baseBooking\":1,\"person\":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\":{\"baseBooking\":1,\"person\":1}}");
Request request = new Request.Builder()
.url("https://your-instance.iw-erp.de/api/event/customer/trial/base_event_signup")
.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/event/customer/trial/base_event_signup"
payload := strings.NewReader("{\"data\":{\"baseBooking\":1,\"person\":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 with the iw_erp_api package
import 'package:iw_erp_api/clients/event_trial_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 EventTrialController.postCustomer(42);
if (result.success) {
print(result.data);
}{
"id": 42,
"first_name": "Lena",
"last_name": "Hartmann",
"support_description": "Text",
"name": "Beispiel",
"gender": "string",
"waiting": true,
"confirmed": true,
"deletion_reason": "string",
"direct_billing": true
}Trial passes of the persons of the selected company with their trial dates - for "noch 2 von 3" and the card "Weiter dabei sein?" after the last trial date.
GET/api/event/customer/trial_pass
Query parameters
personinteger | Only this person of the selected company |
Responses
200List of {pass, event, sign_ups, hold}
curl --request GET \
--url https://your-instance.iw-erp.de/api/event/customer/trial_pass \
--header 'x-iw-jwt-token: <TOKEN>'const options = {method: 'GET', headers: {'x-iw-jwt-token': '<TOKEN>'}};
fetch('https://your-instance.iw-erp.de/api/event/customer/trial_pass', 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/event/customer/trial_pass"
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/event/customer/trial_pass', [
'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/event/customer/trial_pass"),
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/event/customer/trial_pass")
.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/event/customer/trial_pass"
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/event_trial_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 EventTrialController.getCustomerPasses();
if (result.success) {
print(result.data);
}Public trial page of an event: the event (by its token, or by id when it is public), whether it can be tried out through the public link and the dates with room for a trial person.
GET/api/event/public/trial/base_event/{eventIdentifier}
Path parameters
eventIdentifierrequiredstring |
Responses
200{event, allowed, reason, error_code, trial_max, dates: [{id, name, start_time, end_time}]}
curl --request GET \
--url https://your-instance.iw-erp.de/api/event/public/trial/base_event/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/event/public/trial/base_event/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/event/public/trial/base_event/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/event/public/trial/base_event/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/event/public/trial/base_event/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/event/public/trial/base_event/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/event/public/trial/base_event/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/event_trial_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 EventTrialController.getPublicEvent('42');
if (result.success) {
print(result.data);
}Request a trial date through the public link. Body: data.baseBooking, firstName, lastName, birthday (YYYY-MM-DD), mainEmail (the parents'), mainPhone (optional), confirmedPrivacy (must be true).
POST/api/event/public/trial/base_event_signup/{eventIdentifier}
Nothing is booked yet: the parents get a confirmation link by mail (and, when the child is already known, the household's app users by push); the date is booked when they confirm. The answer does not tell whether the person is known.
Path parameters
eventIdentifierrequiredstring |
Request body application/json
dataobjectShow fields (7)
baseBookingintegerfirstNamestringlastNamestringbirthdaystringmainEmailstringmainPhonestringconfirmedPrivacyboolean
Responses
200{status: 'pending', main_email, expires_at}
curl --request POST \
--url https://your-instance.iw-erp.de/api/event/public/trial/base_event_signup/42 \
--header 'content-type: application/json' \
--header 'x-iw-jwt-token: <TOKEN>' \
--data '
{
"data": {
"firstName": "Lena",
"lastName": "Hartmann",
"baseBooking": 1,
"birthday": "string",
"mainEmail": "lena.hartmann@example.org",
"mainPhone": "string"
}
}
'const options = {
method: 'POST',
headers: {'x-iw-jwt-token': '<TOKEN>', 'content-type': 'application/json'},
body: JSON.stringify({
data: {
firstName: 'Lena',
lastName: 'Hartmann',
baseBooking: 1,
birthday: 'string',
mainEmail: 'lena.hartmann@example.org',
mainPhone: 'string'
}
})
};
fetch('https://your-instance.iw-erp.de/api/event/public/trial/base_event_signup/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/event/public/trial/base_event_signup/42"
payload = { "data": {
"firstName": "Lena",
"lastName": "Hartmann",
"baseBooking": 1,
"birthday": "string",
"mainEmail": "lena.hartmann@example.org",
"mainPhone": "string"
} }
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/event/public/trial/base_event_signup/42', [
'body' => '{"data":{"firstName":"Lena","lastName":"Hartmann","baseBooking":1,"birthday":"string","mainEmail":"lena.hartmann@example.org","mainPhone":"string"}}',
'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/event/public/trial/base_event_signup/42"),
Headers =
{
{ "x-iw-jwt-token", "<TOKEN>" },
},
Content = new StringContent("{\"data\":{\"firstName\":\"Lena\",\"lastName\":\"Hartmann\",\"baseBooking\":1,\"birthday\":\"string\",\"mainEmail\":\"lena.hartmann@example.org\",\"mainPhone\":\"string\"}}")
{
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\":{\"firstName\":\"Lena\",\"lastName\":\"Hartmann\",\"baseBooking\":1,\"birthday\":\"string\",\"mainEmail\":\"lena.hartmann@example.org\",\"mainPhone\":\"string\"}}");
Request request = new Request.Builder()
.url("https://your-instance.iw-erp.de/api/event/public/trial/base_event_signup/42")
.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/event/public/trial/base_event_signup/42"
payload := strings.NewReader("{\"data\":{\"firstName\":\"Lena\",\"lastName\":\"Hartmann\",\"baseBooking\":1,\"birthday\":\"string\",\"mainEmail\":\"lena.hartmann@example.org\",\"mainPhone\":\"string\"}}")
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/event_trial_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 EventTrialController.postPublic('42', 42, firstName: '…', lastName: '…', birthday: DateTime.fromJson({
"firstName": "Lena",
"lastName": "Hartmann",
"baseBooking": 1,
"birthday": "string",
"mainEmail": "lena.hartmann@example.org",
"mainPhone": "string"
}), mainEmail: '…', confirmedPrivacy: true);
if (result.success) {
print(result.data);
}A public trial request by the token of its confirmation link: course, date, the child's name and whether it is still open, confirmed or expired.
GET/api/event/public/trial/request/{token}
Path parameters
tokenrequiredstring |
Responses
200{status, expired, expires_at, first_name, last_name, course_name, start_time, end_time}
curl --request GET \
--url https://your-instance.iw-erp.de/api/event/public/trial/request/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/event/public/trial/request/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/event/public/trial/request/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/event/public/trial/request/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/event/public/trial/request/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/event/public/trial/request/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/event/public/trial/request/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/event_trial_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 EventTrialController.getPublicRequest('42');
if (result.success) {
print(result.data);
}Confirm a public trial request: the date is booked now (all checks run again) and the booking mail is sent. Confirming twice returns the same sign-up; an expired link is refused with 1581.
POST/api/event/public/trial/request/{token}/confirm
Path parameters
tokenrequiredstring |
Responses
200The trial date sign-upBaseEventSignUp
Show fields (42)
idintegerPrimary key of the sign-up. Internal ID.
first_namestringFirst name of the participant.
last_namestringLast name of the participant.
genderstringGender of the participant.
waitingbooleanThe sign-up is on the waiting list.
confirmedbooleanThe sign-up is confirmed.
deletion_reasonstringReason the sign-up was cancelled.
direct_billingbooleandirect_billing_check_datestring (date-time)direct_billing_tokenstringwait_list_confirmation_sent_atstring (date-time)wait_list_confirmation_deadlinestring (date-time)wait_list_confirmed_atstring (date-time)wait_list_pending_confirmationbooleanwait_list_sort_orderintegerbirthdaystring (date-time)Birthday of the participant.
known_allergiesstringKnown allergies of the participant.
confirmed_no_allergiesbooleanGuardian confirmed that there are no known allergies.
allow_photosbooleanGuardian allows photos of the participant.
allow_child_alonebooleanParticipant may leave alone after the event.
authorized_pickupstringPersons who are allowed to pick up the participant.
needs_supportbooleanParticipant needs support, for example for inclusion.
support_descriptionstringDescription of the support the participant needs.
financial_supportbooleanParticipant receives financial support.
financial_support_numberstringNumber of the financial support, for example a voucher.
municipal_supportbooleanParticipant receives municipal support.
municipal_support_numberstringNumber of the municipal support.
grade_levelintegerSchool grade level of the participant.
school_classstringSchool class of the participant.
self_check_inbooleanParticipant checked in with the self-service check-in.
self_check_outbooleanParticipant checked out with the self-service check-out.
self_check_in_datestring (date-time)Time of the self-service check-in.
self_check_out_datestring (date-time)Time of the self-service check-out.
reminded_of_absencestring (date-time)Time the guardian was reminded of an absence.
trialbooleanTrial date sign-up (Schnuppern): a date sign-up without a course place that uses up one unit of the person's trial pass (eventAccessBudget with sourceType trial)
trial_channelstringWho booked the trial date: app, trainer, office
trial_session_numberintegerNumber of this trial date within the pass (1 = first), for "Schnuppern 2/3"
trial_session_maxintegerTrial dates of the pass, for "Schnuppern 2/3"
confirmed_datestring (date-time)Time the sign-up was confirmed.
bib_numberintegerStartnummer (Zaehler). Bei PER_PREFIX nur zusammen mit dem Praefix eindeutig. Wird nur ueber BibNumberAssigner gesetzt, stornierte Anmeldungen behalten sie.
bib_labelstringAngezeigte Startnummer inkl. Praefix, z. B. W0123. Pro Event eindeutig.
namestringName of the entity.
curl --request POST \
--url https://your-instance.iw-erp.de/api/event/public/trial/request/42/confirm \
--header 'x-iw-jwt-token: <TOKEN>'const options = {method: 'POST', headers: {'x-iw-jwt-token': '<TOKEN>'}};
fetch('https://your-instance.iw-erp.de/api/event/public/trial/request/42/confirm', 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/event/public/trial/request/42/confirm"
headers = {"x-iw-jwt-token": "<TOKEN>"}
response = requests.post(url, 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/event/public/trial/request/42/confirm', [
'headers' => [
'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/event/public/trial/request/42/confirm"),
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/event/public/trial/request/42/confirm")
.post(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/event/public/trial/request/42/confirm"
req, _ := http.NewRequest("POST", 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/event_trial_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 EventTrialController.confirmPublicRequest('42');
if (result.success) {
print(result.data);
}{
"id": 42,
"first_name": "Lena",
"last_name": "Hartmann",
"support_description": "Text",
"name": "Beispiel",
"gender": "string",
"waiting": true,
"confirmed": true,
"deletion_reason": "string",
"direct_billing": true
}Link of the public trial page of an event, and whether its rule allows the public channel.
GET/api/event/trial/base_event/{eventIdentifier}/public_link
Path parameters
eventIdentifierrequiredstring |
Responses
200{link, allowed, reason}
curl --request GET \
--url https://your-instance.iw-erp.de/api/event/trial/base_event/42/public_link \
--header 'x-iw-jwt-token: <TOKEN>'const options = {method: 'GET', headers: {'x-iw-jwt-token': '<TOKEN>'}};
fetch('https://your-instance.iw-erp.de/api/event/trial/base_event/42/public_link', 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/event/trial/base_event/42/public_link"
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/event/trial/base_event/42/public_link', [
'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/event/trial/base_event/42/public_link"),
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/event/trial/base_event/42/public_link")
.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/event/trial/base_event/42/public_link"
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/event_trial_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 EventTrialController.getPublicLink('42');
if (result.success) {
print(result.data);
}Trainer of a date adds a trial person: data.baseBooking plus either data.person (a known person) or firstName, lastName, birthday, mainEmail, mainPhone (found by name and birthday, else created in a new household).
POST/api/event/trainer/trial/base_event_signup
Request body application/json
dataobjectShow fields (7)
baseBookingintegerpersonintegerfirstNamestringlastNamestringbirthdaystringmainEmailstringmainPhonestring
Responses
200The trial date sign-upBaseEventSignUp
Show fields (42)
idintegerPrimary key of the sign-up. Internal ID.
first_namestringFirst name of the participant.
last_namestringLast name of the participant.
genderstringGender of the participant.
waitingbooleanThe sign-up is on the waiting list.
confirmedbooleanThe sign-up is confirmed.
deletion_reasonstringReason the sign-up was cancelled.
direct_billingbooleandirect_billing_check_datestring (date-time)direct_billing_tokenstringwait_list_confirmation_sent_atstring (date-time)wait_list_confirmation_deadlinestring (date-time)wait_list_confirmed_atstring (date-time)wait_list_pending_confirmationbooleanwait_list_sort_orderintegerbirthdaystring (date-time)Birthday of the participant.
known_allergiesstringKnown allergies of the participant.
confirmed_no_allergiesbooleanGuardian confirmed that there are no known allergies.
allow_photosbooleanGuardian allows photos of the participant.
allow_child_alonebooleanParticipant may leave alone after the event.
authorized_pickupstringPersons who are allowed to pick up the participant.
needs_supportbooleanParticipant needs support, for example for inclusion.
support_descriptionstringDescription of the support the participant needs.
financial_supportbooleanParticipant receives financial support.
financial_support_numberstringNumber of the financial support, for example a voucher.
municipal_supportbooleanParticipant receives municipal support.
municipal_support_numberstringNumber of the municipal support.
grade_levelintegerSchool grade level of the participant.
school_classstringSchool class of the participant.
self_check_inbooleanParticipant checked in with the self-service check-in.
self_check_outbooleanParticipant checked out with the self-service check-out.
self_check_in_datestring (date-time)Time of the self-service check-in.
self_check_out_datestring (date-time)Time of the self-service check-out.
reminded_of_absencestring (date-time)Time the guardian was reminded of an absence.
trialbooleanTrial date sign-up (Schnuppern): a date sign-up without a course place that uses up one unit of the person's trial pass (eventAccessBudget with sourceType trial)
trial_channelstringWho booked the trial date: app, trainer, office
trial_session_numberintegerNumber of this trial date within the pass (1 = first), for "Schnuppern 2/3"
trial_session_maxintegerTrial dates of the pass, for "Schnuppern 2/3"
confirmed_datestring (date-time)Time the sign-up was confirmed.
bib_numberintegerStartnummer (Zaehler). Bei PER_PREFIX nur zusammen mit dem Praefix eindeutig. Wird nur ueber BibNumberAssigner gesetzt, stornierte Anmeldungen behalten sie.
bib_labelstringAngezeigte Startnummer inkl. Praefix, z. B. W0123. Pro Event eindeutig.
namestringName of the entity.
curl --request POST \
--url https://your-instance.iw-erp.de/api/event/trainer/trial/base_event_signup \
--header 'content-type: application/json' \
--header 'x-iw-jwt-token: <TOKEN>' \
--data '
{
"data": {
"firstName": "Lena",
"lastName": "Hartmann",
"baseBooking": 1,
"person": 1,
"birthday": "string",
"mainEmail": "lena.hartmann@example.org"
}
}
'const options = {
method: 'POST',
headers: {'x-iw-jwt-token': '<TOKEN>', 'content-type': 'application/json'},
body: JSON.stringify({
data: {
firstName: 'Lena',
lastName: 'Hartmann',
baseBooking: 1,
person: 1,
birthday: 'string',
mainEmail: 'lena.hartmann@example.org'
}
})
};
fetch('https://your-instance.iw-erp.de/api/event/trainer/trial/base_event_signup', 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/event/trainer/trial/base_event_signup"
payload = { "data": {
"firstName": "Lena",
"lastName": "Hartmann",
"baseBooking": 1,
"person": 1,
"birthday": "string",
"mainEmail": "lena.hartmann@example.org"
} }
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/event/trainer/trial/base_event_signup', [
'body' => '{"data":{"firstName":"Lena","lastName":"Hartmann","baseBooking":1,"person":1,"birthday":"string","mainEmail":"lena.hartmann@example.org"}}',
'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/event/trainer/trial/base_event_signup"),
Headers =
{
{ "x-iw-jwt-token", "<TOKEN>" },
},
Content = new StringContent("{\"data\":{\"firstName\":\"Lena\",\"lastName\":\"Hartmann\",\"baseBooking\":1,\"person\":1,\"birthday\":\"string\",\"mainEmail\":\"lena.hartmann@example.org\"}}")
{
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\":{\"firstName\":\"Lena\",\"lastName\":\"Hartmann\",\"baseBooking\":1,\"person\":1,\"birthday\":\"string\",\"mainEmail\":\"lena.hartmann@example.org\"}}");
Request request = new Request.Builder()
.url("https://your-instance.iw-erp.de/api/event/trainer/trial/base_event_signup")
.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/event/trainer/trial/base_event_signup"
payload := strings.NewReader("{\"data\":{\"firstName\":\"Lena\",\"lastName\":\"Hartmann\",\"baseBooking\":1,\"person\":1,\"birthday\":\"string\",\"mainEmail\":\"lena.hartmann@example.org\"}}")
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/event_trial_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 EventTrialController.postTrainer(42);
if (result.success) {
print(result.data);
}{
"id": 42,
"first_name": "Lena",
"last_name": "Hartmann",
"support_description": "Text",
"name": "Beispiel",
"gender": "string",
"waiting": true,
"confirmed": true,
"deletion_reason": "string",
"direct_billing": true
}Trial check for one event and a person, with the dates the person can book as trial dates.
GET/api/event/trial/base_event/{eventIdentifier}/check
Path parameters
eventIdentifierrequiredstring |
Query parameters
personrequiredinteger | CRMPerson |
Responses
200{allowed, reason, error_code, trial_max, trial_used, trial_remaining, trial_status, dates}
curl --request GET \
--url 'https://your-instance.iw-erp.de/api/event/trial/base_event/42/check?person=1' \
--header 'x-iw-jwt-token: <TOKEN>'const options = {method: 'GET', headers: {'x-iw-jwt-token': '<TOKEN>'}};
fetch('https://your-instance.iw-erp.de/api/event/trial/base_event/42/check?person=1', 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/event/trial/base_event/42/check?person=1"
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/event/trial/base_event/42/check?person=1', [
'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/event/trial/base_event/42/check?person=1"),
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/event/trial/base_event/42/check?person=1")
.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/event/trial/base_event/42/check?person=1"
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/event_trial_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 EventTrialController.getCheck('42', '…');
if (result.success) {
print(result.data);
}The office books a trial date for a person. Body: data.baseBooking, data.person.
POST/api/event/trial/base_event_signup
Request body application/json
dataobjectShow fields (2)
baseBookingintegerpersoninteger
Responses
200The trial date sign-upBaseEventSignUp7
Show fields (56)
bib_range_idintegerticketSeatLabelstringLabel of the booked seat ("row-number"), for tickets, check-in and the ticket overview.
age_classstringAltersklasse nach DLV, z. B. M40 - berechnet aus Geburtstag, Geschlecht und Eventdatum.
idintegerPrimary key of the sign-up. Internal ID.
first_namestringFirst name of the participant.
last_namestringLast name of the participant.
genderstringGender of the participant.
tokenstringPublic token of the sign-up. Used in links instead of the ID.
moments_tokenstringParticipant-bound moments token: allows this participant to use the event moments (digital guestbook) page; uploads via this token are linked to the participant.
waitingbooleanThe sign-up is on the waiting list.
confirmedbooleanThe sign-up is confirmed.
age_statusstringAge status of a course sign-up against the age limits of the course (AgeLimits::STATUS_*), kept by AgeCheckService; null = not checked (date and trial sign-ups, courses without limits, feature off). Only for the office.
age_status_monthsintegerMonths beyond the nearer age limit at the last check (positive = older, negative = younger)
age_status_changed_atstring (date-time)Time the age status of the participant last changed.
age_notified_atstring (date-time)When the office was told about the current age status (digest)
externalbooleanThe sign-up was made by an external party.
deletion_reasonstringReason the sign-up was cancelled.
billedbooleanThe sign-up was billed.
direct_billingbooleandirect_billing_check_datestring (date-time)direct_billing_tokenstringwait_list_confirmation_tokenstringwait_list_confirmation_sent_atstring (date-time)wait_list_confirmation_deadlinestring (date-time)wait_list_confirmed_atstring (date-time)wait_list_pending_confirmationbooleanwait_list_sort_orderintegerbirthdaystring (date-time)Birthday of the participant.
known_allergiesstringKnown allergies of the participant.
confirmed_no_allergiesbooleanGuardian confirmed that there are no known allergies.
allow_photosbooleanGuardian allows photos of the participant.
allow_child_alonebooleanParticipant may leave alone after the event.
authorized_pickupstringPersons who are allowed to pick up the participant.
needs_supportbooleanParticipant needs support, for example for inclusion.
support_descriptionstringDescription of the support the participant needs.
financial_supportbooleanParticipant receives financial support.
financial_support_numberstringNumber of the financial support, for example a voucher.
municipal_supportbooleanParticipant receives municipal support.
municipal_support_numberstringNumber of the municipal support.
grade_levelintegerSchool grade level of the participant.
school_classstringSchool class of the participant.
confirmed_disclaimerbooleanParticipant confirmed the disclaimer.
confirmed_privacybooleanParticipant confirmed the privacy policy.
confirmed_cancellation_policybooleanParticipant confirmed the cancellation policy.
free_note_onestringFree note 1 entered on the sign-up.
free_note_twostringFree note 2 entered on the sign-up.
free_note_threestringFree note 3 entered on the sign-up.
free_note_fourstringFree note 4 entered on the sign-up.
productPredefinedBillingItem13Product the sign-up is billed with.
Show fields (81)
idintegerPrimary key of the mapped billing item. Internal ID.
namestringrequiredName of the billing item.
descriptionstringrequiredDescription of the billing item shown to the customer.
internal_descriptionstringInternal description of the billing item, not shown to the customer.
fixed_hoursnumber (float)Fixed number of hours billed.
fixed_pricenumber (float)Fixed price billed.
fixed_price_base_unitnumber (float)Base unit for the fixed price.
price_fixed_hoursnumber (float)Price for the fixed hours.
price_additional_hoursnumber (float)Price for each additional hour.
name_additional_hoursstringName of the additional hours item.
description_additional_hoursstringDescription of the additional hours item.
time_billed_on_ticket_closebooleanWhether the time is billed when the ticket is closed.
billing_typeBillingItemTypeBilling item type.
buying_pricenumber (float)Purchase price of the item.
recurrenceCRMRecurrenceRecurrence the billing item follows.
deletedbooleanWhether the billing item is deleted.
condition_date_afterstring (date-time)The item applies only to dates after this date.
condition_date_beforestring (date-time)The item applies only to dates before this date.
condition_country_codestringCountry code the item applies to.
condition_zip_code_fromstringStart of the postal code range the item applies to.
condition_zip_code_tostringEnd of the postal code range the item applies to.
condition_time_after_hourintegerThe item applies only after this hour of the day.
condition_max_lengthintegerMaximum length the item applies to.
condition_time_before_hourintegerThe item applies only before this hour of the day.
condition_sub_access_tagAccessTagAccess tag a subscription must have for the item to apply.
condition_show_despite_missing_access_tagbooleanWhether the item is shown even if the access tag is missing.
condition_sub_free_logicstringFree-form condition logic for the subscription.
fixed_price_logicstringFree-form logic that calculates the fixed price.
sub_self_service_addbooleanWhether members can add the subscription themselves.
sub_self_service_deletebooleanWhether members can cancel the subscription themselves.
sub_self_service_add_fixed_pricenumber (float)Fixed price charged when members add the subscription themselves.
sub_self_service_delete_fixed_pricenumber (float)Fixed price charged when members cancel the subscription themselves.
sub_pre_paidbooleanWhether the subscription is paid in advance.
sub_only_billed_after_startbooleanWhether the subscription is only billed after its start date.
sub_people_age_group_oneintegerUpper age limit of age group one.
sub_people_age_group_one_discountintegerDiscount in percent for age group one.
sub_people_age_group_one_freeintegerNumber of free places for age group one.
sub_people_age_group_twointegerUpper age limit of age group two.
sub_people_age_group_two_discountintegerDiscount in percent for age group two.
sub_people_age_group_two_freeintegerNumber of free places for age group two.
sub_people_age_group_threeintegerUpper age limit of age group three.
sub_people_age_group_three_discountintegerDiscount in percent for age group three.
sub_people_age_group_three_freeintegerNumber of free places for age group three.
sub_people_age_group_fourintegerUpper age limit of age group four.
sub_people_age_group_four_discountintegerDiscount in percent for age group four.
sub_people_age_group_four_freeintegerNumber of free places for age group four.
price_is_bruttobooleanWhether the prices are gross prices including tax.
skustringArtikelnummer (Stock Keeping Unit)
barcodestringBarcode (ISBN, UPC, GTIN usw.)
companyCRMCompanyCompany the billing item belongs to.
parentPredefinedBillingItem13Parent billing item, for example for variants.
is_preferredbooleanThe item is preferred and shown first.
is_defaultbooleanThe item is the default for its type.
is_discountbooleanThe item is a discount.
is_freebooleanThe item is free of charge.
is_passivebooleanThe item is passive and cannot be selected anymore.
is_globalbooleanThe item is available for all companies.
inventory_countintegerNumber of pieces in stock, if the item is a product.
stock_itembooleanThis is flag for items that can be ordered at any time
producer_guarantee_yearsnumber (float)Herstellergarantie in Jahren (ganze Jahre oder ,5-Schritte, siehe ProductGuaranteeYears). Grundlage fuer das EU GARAN Label (nur bei Garantie > 2 Jahre zulaessig). Producer guarantee of durability in years (whole or .5 steps), basis for the EU GARAN label.
producer_brandstringHersteller / Marke, die die Haltbarkeitsgarantie gibt - editierbares Feld "Brand/Trademark" des EU GARAN Labels. Producer / brand offering the commercial guarantee of durability.
energy_label_attachmentAttachment10Energielabel (EU Energieverbrauchskennzeichnung) als Bild/PDF fuer Shop, Warenkorb und Mail. EU energy label image/PDF of this product.
garan_label_attachmentAttachment10Grosses EU GARAN Label (DVO 2025/1960): kostenlose Haltbarkeitsgarantie des Herstellers von mehr als zwei Jahren, mit Jahren, Marke und Modell. Full EU GARAN label (commercial guarantee of durability > 2 years).
garan_label_pictogram_attachmentAttachment10"Nested label" / Piktogramm des EU GARAN Labels: zeigt nur die Jahre, beim Klick/Hover muss das grosse Label (garanLabelAttachment) erscheinen. EU GARAN "nested label" pictogram showing only the years; links to the full label online.
public_categorystringCategory of the item shown publicly.
condition_booking_content_typeBookingContentType18Item applies only to bookings with this content type (e.g. flight type). Null = all content types.
usage_time_baseintegerSection time pair used for usage billing: BaseBookingRealUsage::BILLING_TYPE_BLOCK_TIME or BILLING_TYPE_FLIGHT_TIME. Null = follow the usage record's billingType.
base_locationBaseLocation10Location this charge belongs to (e.g. airport landing/takeoff fee), category CATEGORY_LOCATION
condition_day_of_week_maskintegerDay-of-week bitmask (Mon=1 ... Sun=64, see DayOfWeekBitmaskHelper). Null = every day.
condition_first_usage_onlybooleanCharge applies only once per usage record (first matching section, quantity 1)
budget_grant_countintegerNumber of event sign-ups this product grants when purchased (null = no budget)
budget_create_oncebooleanIf true, budget is only created once per person+product combination. For recurring subscriptions: monthly payment but yearly budget.
ticket_quotaintegerTicketverkauf (BaseEvent::isTicketSalesEnabled): Kontingent dieser Ticketart (Event-Preis). Null = nur das Teilnehmerlimit des Events zählt.
ticket_sale_startstring (date-time)Ticketverkauf: Verkaufsstart dieser Ticketart (z. B. Frühbucher ab), null = sofort.
ticket_sale_endstring (date-time)Ticketverkauf: Verkaufsende dieser Ticketart (z. B. Frühbucher bis), null = bis zum Anmeldeschluss.
ticket_seat_zonestringTicketverkauf mit Sitzplan: Diese Ticketart gilt nur für Plätze dieser Preiszone (BaseLocationPlanItem::seatZone), null = für jeden Platz.
cancellation_term_unitstringAllowed cancellation terms for this subscription product. Null / empty = inherit the club default from settings. See CancellationTermCalculator::TERM_UNITS.
cancellation_term_datesstringComma separated list of fixed cancellation dates in DD.MM format, e.g. "31.03,30.06,30.09,31.12". Only used when cancellationTermUnit is CUSTOM.
cancellation_notice_valueintegerNumeric value of the notice period before the cancellation term. Null = inherit from settings.
cancellation_notice_unitstringUnit of the notice period: DAYS, WEEKS or MONTHS. Null = inherit from settings.
- … 6 more fields
invoice_productsarray<BaseEventSignUpProductItem3>Product items added to the invoice of the sign-up.
Show fields (5)
idintegerPrimary key of the product item. Internal ID.
event_sign_upBaseEventSignUp7Sign-up the product item belongs to.
productPredefinedBillingItem13Product that is billed.
quantitynumber (float)Quantity of the product.
billedbooleanThe product item was billed.
generate_date_endstring (date-time)End date of the generated bookings for the sign-up.
variantBaseEventVariantEvent variant the sign-up belongs to.
Show fields (4)
idintegerPrimary key of the event variant. Internal ID.
deletedbooleanThis property is used to mark an entity as deleted / archived
namestringName of the entity.
image_urlstringURL of the image of the entity.
invitationBaseEventInvitation5Invitation the sign-up was made with.
Show fields (9)
idintegerPrimary key of the invitation. Internal ID.
readbooleanThe invitation was read.
messagestringMessage sent with the invitation.
reply_messagestringReply message of the invited person.
main_phonestringMain phone number.
main_faxstringMain fax number.
main_emailstringMain e-mail address.
websitestringWebsite address.
orderintegerPosition of the entity in the order.
event_access_budgetEventAccessBudget4Access budget used for the sign-up.
Show fields (19)
idintegerPrimary key of the event access budget. Internal ID.
personCRMPerson10Person the budget belongs to.
total_budgetintegerTotal number of sign-ups granted (e.g. 10 for a 10er Karte)
used_budgetintegerNumber of sign-ups already consumed
valid_fromstring (date-time)Start of the budget period.
valid_untilstring (date-time)End of the budget period.
base_eventBaseEvent25Scope: limit budget to a specific event
unified_categoryUnifiedCategory41Scope: limit budget to events of this unified category
event_typestringScope: limit budget to events of this event type (WORKSHOP, CAMP, COURSE, etc.)
source_typestringHow this budget was created: 'purchase', 'bonus', 'manual'
trial_policyTrialPolicy6Rule of a trial pass (sourceType trial)
trial_statusstringactive, exhausted (all dates used and over), converted (course place or membership), expired (validity over), cancelled (ended by the office)
trial_exhausted_atstring (date-time)Time all trial places were used.
trial_follow_up_sent_atstring (date-time)Time the follow-up after the trial was sent.
trial_reminder_sent_atstring (date-time)Time the trial reminder was sent.
trial_converted_atstring (date-time)Time the trial was converted into a membership.
deletedbooleanThis property is used to mark an entity as deleted / archived
createdstring (date-time)Point in time the entity was created.
updatedstring (date-time)Point in time the entity was last updated.
media_questionnaire_answerMediaQuestionnaireAnswer11Answer to the questionnaire of the event.
Show fields (29)
idintegerPrimary key of the questionnaire answer. Internal ID.
genderstringGender of the participant.
confirmedbooleanThe answer is confirmed.
draftbooleanThe answer is a draft and not yet submitted.
processingbooleanThe answer is being processed.
externalbooleanThe answer was given by an external party.
birthdaystring (date-time)Birthday of the participant.
known_allergiesstringKnown allergies of the participant.
confirmed_no_allergiesbooleanGuardian confirmed that there are no known allergies.
grade_levelintegerSchool grade level of the participant.
school_classstringSchool class of the participant.
review_statusstringSecond loop after the AI comparison (MediaQuestionnaire::$clarificationEnabled), null without it: CLARIFICATION_PENDING while the comparison / the generation of the clarification points runs, CLARIFICATION_OPEN while points are open, COMPLETED once the review is finished and the result template may be created.
nace_sectionstringNACE section code (letter A-U)
nace_codestringNACE code (numeric like 01.11, 62.01)
role_in_companystringRole/position of the respondent in the company
start_in_companystringWhen the respondent started working at the company
company_namestringWhen the respondent started working at the company
answer_durationintegerDuration in seconds the respondent took to complete the questionnaire
billedbooleanThe answer was billed.
createdstring (date-time)Point in time the entity was created.
updatedstring (date-time)Point in time the entity was last updated.
addressstringAddress as text.
address_streetstringStreet of the address.
address_house_numberstringHouse number of the address.
address_street_levelstringStreet and house number of the address.
address_costringCare-of line of the address.
address_citystringCity of the address.
address_zipstringPostal code of the address.
- … 17 more fields
- … 44 more fields
curl --request POST \
--url https://your-instance.iw-erp.de/api/event/trial/base_event_signup \
--header 'content-type: application/json' \
--header 'x-iw-jwt-token: <TOKEN>' \
--data '
{
"data": {
"baseBooking": 1,
"person": 1
}
}
'const options = {
method: 'POST',
headers: {'x-iw-jwt-token': '<TOKEN>', 'content-type': 'application/json'},
body: JSON.stringify({data: {baseBooking: 1, person: 1}})
};
fetch('https://your-instance.iw-erp.de/api/event/trial/base_event_signup', 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/event/trial/base_event_signup"
payload = { "data": {
"baseBooking": 1,
"person": 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://your-instance.iw-erp.de/api/event/trial/base_event_signup', [
'body' => '{"data":{"baseBooking":1,"person":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://your-instance.iw-erp.de/api/event/trial/base_event_signup"),
Headers =
{
{ "x-iw-jwt-token", "<TOKEN>" },
},
Content = new StringContent("{\"data\":{\"baseBooking\":1,\"person\":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\":{\"baseBooking\":1,\"person\":1}}");
Request request = new Request.Builder()
.url("https://your-instance.iw-erp.de/api/event/trial/base_event_signup")
.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/event/trial/base_event_signup"
payload := strings.NewReader("{\"data\":{\"baseBooking\":1,\"person\":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 with the iw_erp_api package
import 'package:iw_erp_api/clients/event_trial_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 EventTrialController.post(42, 42);
if (result.success) {
print(result.data);
}{
"id": 42,
"first_name": "Lena",
"last_name": "Hartmann",
"support_description": "Text",
"address_street": "Jakobistr. 39",
"address_city": "Hannover",
"address_zip": "30163",
"address_country": "DE",
"address_full_country": "DE",
"name": "Beispiel"
}Trial passes (Schnupper-Kontingente) with their trial dates. Filters: person, baseEvent, unifiedCategory, trialPolicy, trialStatus.
GET/api/event/trial_pass
Query parameters
personinteger | |
baseEventinteger | |
unifiedCategoryinteger | |
trialPolicyinteger | |
trialStatusstring | |
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
200List of {pass, event, sign_ups}
curl --request GET \
--url https://your-instance.iw-erp.de/api/event/trial_pass \
--header 'x-iw-jwt-token: <TOKEN>'const options = {method: 'GET', headers: {'x-iw-jwt-token': '<TOKEN>'}};
fetch('https://your-instance.iw-erp.de/api/event/trial_pass', 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/event/trial_pass"
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/event/trial_pass', [
'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/event/trial_pass"),
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/event/trial_pass")
.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/event/trial_pass"
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/event_trial_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 EventTrialController.getPasses();
if (result.success) {
print(result.data);
}Office action on a trial pass: convert (course place / membership arranged elsewhere), cancel (end the trial, no further dates) or reset (a fresh pass: dates and follow-up start over).
POST/api/event/trial_pass/{identifier}/{passAction}
Path parameters
identifierrequiredstring | |
passActionrequiredstring | Allowed: convertcancelreset |
Responses
200{pass, event, sign_ups}
curl --request POST \
--url https://your-instance.iw-erp.de/api/event/trial_pass/42/convert \
--header 'x-iw-jwt-token: <TOKEN>'const options = {method: 'POST', headers: {'x-iw-jwt-token': '<TOKEN>'}};
fetch('https://your-instance.iw-erp.de/api/event/trial_pass/42/convert', 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/event/trial_pass/42/convert"
headers = {"x-iw-jwt-token": "<TOKEN>"}
response = requests.post(url, 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/event/trial_pass/42/convert', [
'headers' => [
'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/event/trial_pass/42/convert"),
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/event/trial_pass/42/convert")
.post(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/event/trial_pass/42/convert"
req, _ := http.NewRequest("POST", 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/event_trial_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 EventTrialController.postPassAction('42', 'convert');
if (result.success) {
print(result.data);
}Course places held for trial persons (Schnupper-Reservierungen) with the trial dates of their pass, for the participant list of a course and the office. Filters: status (default: open ones - held, pending, secured; "all" for every state), baseEvent, person, pass.
GET/api/event/trial_hold
Query parameters
statusstring | |
baseEventinteger | |
personinteger | |
passinteger |
Responses
200List of {hold, person, sign_ups, dates: [{sign_up_id, booking_id, start_time, end_time, deleted, present, trial_session_number, trial_session_max}]}
curl --request GET \
--url https://your-instance.iw-erp.de/api/event/trial_hold \
--header 'x-iw-jwt-token: <TOKEN>'const options = {method: 'GET', headers: {'x-iw-jwt-token': '<TOKEN>'}};
fetch('https://your-instance.iw-erp.de/api/event/trial_hold', 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/event/trial_hold"
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/event/trial_hold', [
'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/event/trial_hold"),
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/event/trial_hold")
.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/event/trial_hold"
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/event_trial_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 EventTrialController.getHolds();
if (result.success) {
print(result.data);
}Office action on a held course place: secure (no deadline), convert (regular sign-up with the normal confirmation mail), extend (data.days or query days, default 7) or release (the place is free again, the wait list moves up).
POST/api/event/trial_hold/{identifier}/{holdAction}
Path parameters
identifierrequiredstring | |
holdActionrequiredstring | Allowed: secureconvertextendrelease |
Query parameters
daysinteger |
Responses
200{hold, person, sign_ups}
curl --request POST \
--url https://your-instance.iw-erp.de/api/event/trial_hold/42/secure \
--header 'x-iw-jwt-token: <TOKEN>'const options = {method: 'POST', headers: {'x-iw-jwt-token': '<TOKEN>'}};
fetch('https://your-instance.iw-erp.de/api/event/trial_hold/42/secure', 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/event/trial_hold/42/secure"
headers = {"x-iw-jwt-token": "<TOKEN>"}
response = requests.post(url, 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/event/trial_hold/42/secure', [
'headers' => [
'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/event/trial_hold/42/secure"),
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/event/trial_hold/42/secure")
.post(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/event/trial_hold/42/secure"
req, _ := http.NewRequest("POST", 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/event_trial_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 EventTrialController.postHoldAction('42', 'secure');
if (result.success) {
print(result.data);
}