VolunteerHourEntry
Einträge der Ehrenamtsstunden auflisten
GET/api/time/volunteer_hour_entry
Query-Parameter
idinteger | |
personstring | |
statusstring | |
workDatestring | Tag, an dem die Arbeit erledigt wurde. | Erfordert Zugriffs-Tag: SCOPE |
eventstring | |
settlementstring | Die Abrechnung, die diesen Eintrag verbraucht hat. Ein abgerechneter Eintrag kann nicht mehr geändert werden. | Benötigtes Zugriffsrecht: SCOPE |
createdstring | |
searchStringstring | Text, nach dem in der Liste gesucht wird |
orderFieldNamestring | Name des Bestellfelds |
orderFieldSortstring | SortiermodusErlaubt: DESCASC |
pageinteger | Seite der Liste |
pageSizeinteger | Anzahl der Einträge je Seite |
withMaxPageNumberstring | gibt die Anzahl verfügbarer Seiten als Header zurück, wenn dies gesetzt ist |
Antworten
200Liefert eine Liste der VolunteerHourEntry-Objekte.array<VolunteerHourEntry>
Felder anzeigen (15)
shift_assignment_idintegersettlement_idintegeris_settledbooleanapproved_by_namestringidintegerPrimärschlüssel des Ehrenamtsstunden-Eintrags. Interne ID.
personCRMPerson27Ehrenamtliche Person, die die Stunden geleistet hat.
Felder anzeigen (11)
idintegerPrimärschlüssel der Person. Interne ID.
first_namestringVorname der Person.
last_namestringNachname der Person.
numberintegerMitglieds- oder Kundennummer der Person.
manual_numberintegerManuell gesetzte Nummer statt der automatischen Nummer.
number_stringstringMitglieds- oder Kundennummer als Text, einschließlich Präfix.
genderstringGeschlecht der Person.
titlestringAkademischer oder sonstiger Titel der Person.
nicknamestringSpitzname der Person.
preferred_color_hexstringBevorzugte Farbe der Person als Hexwert.
avatar_tokenstringToken des Avatarbildes.
work_datestring (date-time)Tag, an dem die Arbeit erledigt wurde.
duration_minutesintegerDauer der Arbeit in Minuten.
descriptionstringBeschreibung der Arbeit.
statusstringStatus des Eintrags, zum Beispiel ausstehend, genehmigt oder abgelehnt.
rejection_reasonstringGrund für die Ablehnung des Eintrags.
eventBaseEvent10Event, für das die Stunden geleistet wurden.
Felder anzeigen (45)
ticketSeatingPlanIdintegerID des Sitzplans, auch für die öffentliche Serialisierung und die Kunden-Serialisierung.
bib_numbers_enabledbooleantiming_enabledbooleanidintegerPrimärschlüssel der Veranstaltung. Interne ID.
public_subtitlestringUntertitel, der in der öffentlichen Veranstaltungsliste angezeigt wird.
event_typestringArt des Events, zum Beispiel Kurs, Fahrt oder Turnier.
event_people_limitintegermaximale Anzahl Personen, die an der Veranstaltung teilnehmen können
event_people_min_limitintegerminimale Anzahl Personen, die an der Veranstaltung teilnehmen müssen
hide_event_people_limitbooleaneine Einstellung, um die Teilnehmerbegrenzung der Veranstaltung in der Frontend-Oberfläche auszublenden
has_wait_listbooleanDie Veranstaltung hat eine Warteliste, sobald sie voll ist.
wait_list_confirmation_requiredbooleanTeilnehmende von der Warteliste müssen ihren Platz bestätigen.
trial_enabledbooleanSchnuppertermine (Schnuppern) werden für dieses Event angeboten. Standardmäßig deaktiviert: Das Event muss sich dafür aktiv entscheiden, die Regel stammt aus trialPolicy, der Kategorie des Events oder der Standardregel.
can_sign_up_for_main_eventbooleanTeilnehmende dürfen sich für die Hauptveranstaltung anmelden.
only_sign_up_for_main_eventbooleanTeilnehmende dürfen sich nur für die Hauptveranstaltung anmelden, nicht für Unterveranstaltungen.
start_timestring (date-time)Beginn der Veranstaltung.
end_timestring (date-time)Ende der Veranstaltung.
require_addressbooleanTeilnehmende müssen bei der Anmeldung eine Adresse angeben.
require_contactbooleanTeilnehmende müssen bei der Anmeldung Kontaktdaten angeben.
require_billingbooleanTeilnehmende müssen bei der Anmeldung Rechnungsdaten angeben.
allow_direct_billingbooleanrequire_direct_billingbooleanallow_budget_sign_upbooleanrequire_agebooleanTeilnehmende müssen bei der Anmeldung ihr Alter angeben.
require_grade_levelbooleanTeilnehmende müssen bei der Anmeldung ihre Schulstufe angeben.
require_free_note_field_idsstringIDs der Freitext-Notizfelder, die Teilnehmer ausfüllen müssen.
generate_new_bookingsbooleanBuchungen werden für den Veranstaltungsplan automatisch erzeugt.
generate_new_bookings_v2booleanBuchungen werden mit der zweiten Version des Plan-Generators erzeugt.
generate_ignore_sys_calendarbooleanErzeugte Buchungen ignorieren die Feiertage des Systemkalenders.
generate_hour_startstring (date-time)Startzeit des Tages für erzeugte Buchungen.
generate_hour_endstring (date-time)Endzeit des Tages für generierte Buchungen.
generate_day_of_weekintegerWochentag für erzeugte Buchungen.
bitmask_days_of_weekintegerBitmask-Wert der Wochentage, an denen die Veranstaltung stattfindet
bitmask_hours_startintegerBitmask-Wert der Stunden, zu denen eine Veranstaltung beginnt
summarized_date_timesstringZeichenkette mit den Wochentagen und Stunden, zu denen eine Veranstaltung beginnt
customer_detail_ctastringIn der Kunden-App auf der Veranstaltungsdetailseite angezeigter Call-to-Action-Text.
customer_badgestringBadge-Text, der in der Kunden-App bei der Veranstaltung angezeigt wird.
bib_number_modestringVergabeart der Startnummern: OFF, MANUAL, AUTOMATIC oder BATCH. Greift nur, wenn der Event-Typ Startnummern hat (enableBibNumbers).
timing_gun_startstring (date-time)Startschuss; ohne Wert gilt startTime.
timing_public_livebooleanLive-Zeitnahme-Ergebnisse sind öffentlich.
timing_gps_trackingbooleanGPS-Tracking der Teilnehmer ist für die Zeitmessung aktiviert.
timing_self_check_inbooleanTeilnehmende können sich für die Zeitmessung selbst einchecken.
ticket_sales_enabledbooleanTicketverkauf statt Anmeldung: Teilnehmer kaufen Tickets (Ticketarten = Event-Preise mit Kontingent und Verkaufszeitraum), jedes Ticket bekommt einen Code für den Check-in. Greift nur mit der Einstellung event_ticket_sales_enabled.
ticket_max_per_orderintegerHöchstzahl Tickets je Bestellung; ohne Wert gilt event_ticket_max_per_order_default.
ticket_personalizedbooleanPersonalisierte Tickets: jedes Ticket braucht den Namen des Teilnehmers. Sonst laufen alle Tickets einer Bestellung auf den Namen des Käufers.
ticket_seatingbooleanPlatzwahl beim Ticketverkauf: jedes Ticket bekommt einen freien Platz aus dem Saalplan des Raums (BaseBookable::ticketSeatingPlan); die Ticketart kann auf eine Zone (ticketSeatZone) beschränkt sein. Greift nur mit der Einstellung event_ticket_seating_enabled.
approved_atstring (date-time)Zeitpunkt, zu dem der Eintrag genehmigt wurde.
createdstring (date-time)Zeitpunkt, zu dem der Eintrag angelegt wurde.
updatedstring (date-time)Zeitpunkt, zu dem der Eintrag zuletzt geändert wurde.
curl --request GET \
--url https://eure-instanz.iw-erp.de/api/time/volunteer_hour_entry \
--header 'x-iw-jwt-token: <TOKEN>'const options = {method: 'GET', headers: {'x-iw-jwt-token': '<TOKEN>'}};
fetch('https://eure-instanz.iw-erp.de/api/time/volunteer_hour_entry', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://eure-instanz.iw-erp.de/api/time/volunteer_hour_entry"
headers = {"x-iw-jwt-token": "<TOKEN>"}
response = requests.get(url, headers=headers)
print(response.text)<?php
require_once('vendor/autoload.php');
$client = new \GuzzleHttp\Client();
$response = $client->request('GET', 'https://eure-instanz.iw-erp.de/api/time/volunteer_hour_entry', [
'headers' => [
'x-iw-jwt-token' => '<TOKEN>',
],
]);
echo $response->getBody();using System.Net.Http.Headers;
var client = new HttpClient();
var request = new HttpRequestMessage
{
Method = HttpMethod.Get,
RequestUri = new Uri("https://eure-instanz.iw-erp.de/api/time/volunteer_hour_entry"),
Headers =
{
{ "x-iw-jwt-token", "<TOKEN>" },
},
};
using (var response = await client.SendAsync(request))
{
response.EnsureSuccessStatusCode();
var body = await response.Content.ReadAsStringAsync();
Console.WriteLine(body);
}OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder()
.url("https://eure-instanz.iw-erp.de/api/time/volunteer_hour_entry")
.get()
.addHeader("x-iw-jwt-token", "<TOKEN>")
.build();
Response response = client.newCall(request).execute();package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://eure-instanz.iw-erp.de/api/time/volunteer_hour_entry"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("x-iw-jwt-token", "<TOKEN>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}Dart mit dem Package iw_erp_api
import 'package:iw_erp_api/clients/volunteer_hour_entry_controller.dart';
import 'package:iw_erp_api/logic/iw_api_state.dart';
IwApiState().host = 'eure-instanz.iw-erp.de';
IwApiState().currentJwtApiToken = '<TOKEN>';
final result = await VolunteerHourEntryController.getAll();
if (result.success) {
print(result.data);
}[
{
"approved_by_name": "Beispiel",
"id": 42,
"description": "Text",
"shift_assignment_id": 42,
"settlement_id": 42,
"is_settled": true,
"person": {
"id": 42,
"first_name": "Lena",
"last_name": "Hartmann",
"title": "Beispiel",
"number": 1,
"manual_number": 1,
"number_string": "string",
"gender": "string",
"nickname": "string",
"preferred_color_hex": "string"
},
"work_date": "2026-10-15T09:30:00+02:00",
"duration_minutes": 1,
"status": "string"
}
]Ehrenamtsstunden für ein Mitglied erfassen. Einträge der Verwaltung werden sofort genehmigt.
POST/api/time/volunteer_hour_entry
Request-Body application/json
dataVolunteerHourEntry2Felder anzeigen (5)
personCRMPerson33Ehrenamtliche Person, die die Stunden geleistet hat.
work_datestring (date-time)Tag, an dem die Arbeit erledigt wurde.
duration_minutesintegerDauer der Arbeit in Minuten.
descriptionstringBeschreibung der Arbeit.
eventBaseEvent11Event, für das die Stunden geleistet wurden.
Antworten
200VolunteerHourEntry neu anlegenVolunteerHourEntry
Felder anzeigen (15)
shift_assignment_idintegersettlement_idintegeris_settledbooleanapproved_by_namestringidintegerPrimärschlüssel des Ehrenamtsstunden-Eintrags. Interne ID.
personCRMPerson27Ehrenamtliche Person, die die Stunden geleistet hat.
Felder anzeigen (11)
idintegerPrimärschlüssel der Person. Interne ID.
first_namestringVorname der Person.
last_namestringNachname der Person.
numberintegerMitglieds- oder Kundennummer der Person.
manual_numberintegerManuell gesetzte Nummer statt der automatischen Nummer.
number_stringstringMitglieds- oder Kundennummer als Text, einschließlich Präfix.
genderstringGeschlecht der Person.
titlestringAkademischer oder sonstiger Titel der Person.
nicknamestringSpitzname der Person.
preferred_color_hexstringBevorzugte Farbe der Person als Hexwert.
avatar_tokenstringToken des Avatarbildes.
work_datestring (date-time)Tag, an dem die Arbeit erledigt wurde.
duration_minutesintegerDauer der Arbeit in Minuten.
descriptionstringBeschreibung der Arbeit.
statusstringStatus des Eintrags, zum Beispiel ausstehend, genehmigt oder abgelehnt.
rejection_reasonstringGrund für die Ablehnung des Eintrags.
eventBaseEvent10Event, für das die Stunden geleistet wurden.
Felder anzeigen (45)
ticketSeatingPlanIdintegerID des Sitzplans, auch für die öffentliche Serialisierung und die Kunden-Serialisierung.
bib_numbers_enabledbooleantiming_enabledbooleanidintegerPrimärschlüssel der Veranstaltung. Interne ID.
public_subtitlestringUntertitel, der in der öffentlichen Veranstaltungsliste angezeigt wird.
event_typestringArt des Events, zum Beispiel Kurs, Fahrt oder Turnier.
event_people_limitintegermaximale Anzahl Personen, die an der Veranstaltung teilnehmen können
event_people_min_limitintegerminimale Anzahl Personen, die an der Veranstaltung teilnehmen müssen
hide_event_people_limitbooleaneine Einstellung, um die Teilnehmerbegrenzung der Veranstaltung in der Frontend-Oberfläche auszublenden
has_wait_listbooleanDie Veranstaltung hat eine Warteliste, sobald sie voll ist.
wait_list_confirmation_requiredbooleanTeilnehmende von der Warteliste müssen ihren Platz bestätigen.
trial_enabledbooleanSchnuppertermine (Schnuppern) werden für dieses Event angeboten. Standardmäßig deaktiviert: Das Event muss sich dafür aktiv entscheiden, die Regel stammt aus trialPolicy, der Kategorie des Events oder der Standardregel.
can_sign_up_for_main_eventbooleanTeilnehmende dürfen sich für die Hauptveranstaltung anmelden.
only_sign_up_for_main_eventbooleanTeilnehmende dürfen sich nur für die Hauptveranstaltung anmelden, nicht für Unterveranstaltungen.
start_timestring (date-time)Beginn der Veranstaltung.
end_timestring (date-time)Ende der Veranstaltung.
require_addressbooleanTeilnehmende müssen bei der Anmeldung eine Adresse angeben.
require_contactbooleanTeilnehmende müssen bei der Anmeldung Kontaktdaten angeben.
require_billingbooleanTeilnehmende müssen bei der Anmeldung Rechnungsdaten angeben.
allow_direct_billingbooleanrequire_direct_billingbooleanallow_budget_sign_upbooleanrequire_agebooleanTeilnehmende müssen bei der Anmeldung ihr Alter angeben.
require_grade_levelbooleanTeilnehmende müssen bei der Anmeldung ihre Schulstufe angeben.
require_free_note_field_idsstringIDs der Freitext-Notizfelder, die Teilnehmer ausfüllen müssen.
generate_new_bookingsbooleanBuchungen werden für den Veranstaltungsplan automatisch erzeugt.
generate_new_bookings_v2booleanBuchungen werden mit der zweiten Version des Plan-Generators erzeugt.
generate_ignore_sys_calendarbooleanErzeugte Buchungen ignorieren die Feiertage des Systemkalenders.
generate_hour_startstring (date-time)Startzeit des Tages für erzeugte Buchungen.
generate_hour_endstring (date-time)Endzeit des Tages für generierte Buchungen.
generate_day_of_weekintegerWochentag für erzeugte Buchungen.
bitmask_days_of_weekintegerBitmask-Wert der Wochentage, an denen die Veranstaltung stattfindet
bitmask_hours_startintegerBitmask-Wert der Stunden, zu denen eine Veranstaltung beginnt
summarized_date_timesstringZeichenkette mit den Wochentagen und Stunden, zu denen eine Veranstaltung beginnt
customer_detail_ctastringIn der Kunden-App auf der Veranstaltungsdetailseite angezeigter Call-to-Action-Text.
customer_badgestringBadge-Text, der in der Kunden-App bei der Veranstaltung angezeigt wird.
bib_number_modestringVergabeart der Startnummern: OFF, MANUAL, AUTOMATIC oder BATCH. Greift nur, wenn der Event-Typ Startnummern hat (enableBibNumbers).
timing_gun_startstring (date-time)Startschuss; ohne Wert gilt startTime.
timing_public_livebooleanLive-Zeitnahme-Ergebnisse sind öffentlich.
timing_gps_trackingbooleanGPS-Tracking der Teilnehmer ist für die Zeitmessung aktiviert.
timing_self_check_inbooleanTeilnehmende können sich für die Zeitmessung selbst einchecken.
ticket_sales_enabledbooleanTicketverkauf statt Anmeldung: Teilnehmer kaufen Tickets (Ticketarten = Event-Preise mit Kontingent und Verkaufszeitraum), jedes Ticket bekommt einen Code für den Check-in. Greift nur mit der Einstellung event_ticket_sales_enabled.
ticket_max_per_orderintegerHöchstzahl Tickets je Bestellung; ohne Wert gilt event_ticket_max_per_order_default.
ticket_personalizedbooleanPersonalisierte Tickets: jedes Ticket braucht den Namen des Teilnehmers. Sonst laufen alle Tickets einer Bestellung auf den Namen des Käufers.
ticket_seatingbooleanPlatzwahl beim Ticketverkauf: jedes Ticket bekommt einen freien Platz aus dem Saalplan des Raums (BaseBookable::ticketSeatingPlan); die Ticketart kann auf eine Zone (ticketSeatZone) beschränkt sein. Greift nur mit der Einstellung event_ticket_seating_enabled.
approved_atstring (date-time)Zeitpunkt, zu dem der Eintrag genehmigt wurde.
createdstring (date-time)Zeitpunkt, zu dem der Eintrag angelegt wurde.
updatedstring (date-time)Zeitpunkt, zu dem der Eintrag zuletzt geändert wurde.
curl --request POST \
--url https://eure-instanz.iw-erp.de/api/time/volunteer_hour_entry \
--header 'content-type: application/json' \
--header 'x-iw-jwt-token: <TOKEN>' \
--data '
{
"data": {
"description": "Text",
"work_date": "2026-10-15T09:30:00+02:00",
"duration_minutes": 1
}
}
'const options = {
method: 'POST',
headers: {'x-iw-jwt-token': '<TOKEN>', 'content-type': 'application/json'},
body: JSON.stringify({
data: {
description: 'Text',
work_date: '2026-10-15T09:30:00+02:00',
duration_minutes: 1
}
})
};
fetch('https://eure-instanz.iw-erp.de/api/time/volunteer_hour_entry', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://eure-instanz.iw-erp.de/api/time/volunteer_hour_entry"
payload = { "data": {
"description": "Text",
"work_date": "2026-10-15T09:30:00+02:00",
"duration_minutes": 1
} }
headers = {
"x-iw-jwt-token": "<TOKEN>",
"content-type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)<?php
require_once('vendor/autoload.php');
$client = new \GuzzleHttp\Client();
$response = $client->request('POST', 'https://eure-instanz.iw-erp.de/api/time/volunteer_hour_entry', [
'body' => '{"data":{"description":"Text","work_date":"2026-10-15T09:30:00+02:00","duration_minutes":1}}',
'headers' => [
'content-type' => 'application/json',
'x-iw-jwt-token' => '<TOKEN>',
],
]);
echo $response->getBody();using System.Net.Http.Headers;
var client = new HttpClient();
var request = new HttpRequestMessage
{
Method = HttpMethod.Post,
RequestUri = new Uri("https://eure-instanz.iw-erp.de/api/time/volunteer_hour_entry"),
Headers =
{
{ "x-iw-jwt-token", "<TOKEN>" },
},
Content = new StringContent("{\"data\":{\"description\":\"Text\",\"work_date\":\"2026-10-15T09:30:00+02:00\",\"duration_minutes\":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\":{\"description\":\"Text\",\"work_date\":\"2026-10-15T09:30:00+02:00\",\"duration_minutes\":1}}");
Request request = new Request.Builder()
.url("https://eure-instanz.iw-erp.de/api/time/volunteer_hour_entry")
.post(body)
.addHeader("x-iw-jwt-token", "<TOKEN>")
.addHeader("content-type", "application/json")
.build();
Response response = client.newCall(request).execute();package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://eure-instanz.iw-erp.de/api/time/volunteer_hour_entry"
payload := strings.NewReader("{\"data\":{\"description\":\"Text\",\"work_date\":\"2026-10-15T09:30:00+02:00\",\"duration_minutes\":1}}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("x-iw-jwt-token", "<TOKEN>")
req.Header.Add("content-type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}Dart mit dem Package iw_erp_api
import 'package:iw_erp_api/clients/volunteer_hour_entry_controller.dart';
import 'package:iw_erp_api/logic/iw_api_state.dart';
import 'package:iw_erp_api/model/volunteer_hour_entry.dart';
IwApiState().host = 'eure-instanz.iw-erp.de';
IwApiState().currentJwtApiToken = '<TOKEN>';
final result = await VolunteerHourEntryController.post(VolunteerHourEntry.fromJson({
"description": "Text",
"work_date": "2026-10-15T09:30:00+02:00",
"duration_minutes": 1
}));
if (result.success) {
print(result.data);
}{
"approved_by_name": "Beispiel",
"id": 42,
"description": "Text",
"shift_assignment_id": 42,
"settlement_id": 42,
"is_settled": true,
"person": {
"id": 42,
"first_name": "Lena",
"last_name": "Hartmann",
"title": "Beispiel",
"number": 1,
"manual_number": 1,
"number_string": "string",
"gender": "string",
"nickname": "string",
"preferred_color_hex": "string"
},
"work_date": "2026-10-15T09:30:00+02:00",
"duration_minutes": 1,
"status": "string"
}Einzelnen Ehrenamtsstundeneintrag abrufen
GET/api/time/volunteer_hour_entry/{id}
Pfad-Parameter
idPflichtstring |
Antworten
200Liefert ein einzelnes VolunteerHourEntry-Objekt.VolunteerHourEntry
Felder anzeigen (15)
shift_assignment_idintegersettlement_idintegeris_settledbooleanapproved_by_namestringidintegerPrimärschlüssel des Ehrenamtsstunden-Eintrags. Interne ID.
personCRMPerson27Ehrenamtliche Person, die die Stunden geleistet hat.
Felder anzeigen (11)
idintegerPrimärschlüssel der Person. Interne ID.
first_namestringVorname der Person.
last_namestringNachname der Person.
numberintegerMitglieds- oder Kundennummer der Person.
manual_numberintegerManuell gesetzte Nummer statt der automatischen Nummer.
number_stringstringMitglieds- oder Kundennummer als Text, einschließlich Präfix.
genderstringGeschlecht der Person.
titlestringAkademischer oder sonstiger Titel der Person.
nicknamestringSpitzname der Person.
preferred_color_hexstringBevorzugte Farbe der Person als Hexwert.
avatar_tokenstringToken des Avatarbildes.
work_datestring (date-time)Tag, an dem die Arbeit erledigt wurde.
duration_minutesintegerDauer der Arbeit in Minuten.
descriptionstringBeschreibung der Arbeit.
statusstringStatus des Eintrags, zum Beispiel ausstehend, genehmigt oder abgelehnt.
rejection_reasonstringGrund für die Ablehnung des Eintrags.
eventBaseEvent10Event, für das die Stunden geleistet wurden.
Felder anzeigen (45)
ticketSeatingPlanIdintegerID des Sitzplans, auch für die öffentliche Serialisierung und die Kunden-Serialisierung.
bib_numbers_enabledbooleantiming_enabledbooleanidintegerPrimärschlüssel der Veranstaltung. Interne ID.
public_subtitlestringUntertitel, der in der öffentlichen Veranstaltungsliste angezeigt wird.
event_typestringArt des Events, zum Beispiel Kurs, Fahrt oder Turnier.
event_people_limitintegermaximale Anzahl Personen, die an der Veranstaltung teilnehmen können
event_people_min_limitintegerminimale Anzahl Personen, die an der Veranstaltung teilnehmen müssen
hide_event_people_limitbooleaneine Einstellung, um die Teilnehmerbegrenzung der Veranstaltung in der Frontend-Oberfläche auszublenden
has_wait_listbooleanDie Veranstaltung hat eine Warteliste, sobald sie voll ist.
wait_list_confirmation_requiredbooleanTeilnehmende von der Warteliste müssen ihren Platz bestätigen.
trial_enabledbooleanSchnuppertermine (Schnuppern) werden für dieses Event angeboten. Standardmäßig deaktiviert: Das Event muss sich dafür aktiv entscheiden, die Regel stammt aus trialPolicy, der Kategorie des Events oder der Standardregel.
can_sign_up_for_main_eventbooleanTeilnehmende dürfen sich für die Hauptveranstaltung anmelden.
only_sign_up_for_main_eventbooleanTeilnehmende dürfen sich nur für die Hauptveranstaltung anmelden, nicht für Unterveranstaltungen.
start_timestring (date-time)Beginn der Veranstaltung.
end_timestring (date-time)Ende der Veranstaltung.
require_addressbooleanTeilnehmende müssen bei der Anmeldung eine Adresse angeben.
require_contactbooleanTeilnehmende müssen bei der Anmeldung Kontaktdaten angeben.
require_billingbooleanTeilnehmende müssen bei der Anmeldung Rechnungsdaten angeben.
allow_direct_billingbooleanrequire_direct_billingbooleanallow_budget_sign_upbooleanrequire_agebooleanTeilnehmende müssen bei der Anmeldung ihr Alter angeben.
require_grade_levelbooleanTeilnehmende müssen bei der Anmeldung ihre Schulstufe angeben.
require_free_note_field_idsstringIDs der Freitext-Notizfelder, die Teilnehmer ausfüllen müssen.
generate_new_bookingsbooleanBuchungen werden für den Veranstaltungsplan automatisch erzeugt.
generate_new_bookings_v2booleanBuchungen werden mit der zweiten Version des Plan-Generators erzeugt.
generate_ignore_sys_calendarbooleanErzeugte Buchungen ignorieren die Feiertage des Systemkalenders.
generate_hour_startstring (date-time)Startzeit des Tages für erzeugte Buchungen.
generate_hour_endstring (date-time)Endzeit des Tages für generierte Buchungen.
generate_day_of_weekintegerWochentag für erzeugte Buchungen.
bitmask_days_of_weekintegerBitmask-Wert der Wochentage, an denen die Veranstaltung stattfindet
bitmask_hours_startintegerBitmask-Wert der Stunden, zu denen eine Veranstaltung beginnt
summarized_date_timesstringZeichenkette mit den Wochentagen und Stunden, zu denen eine Veranstaltung beginnt
customer_detail_ctastringIn der Kunden-App auf der Veranstaltungsdetailseite angezeigter Call-to-Action-Text.
customer_badgestringBadge-Text, der in der Kunden-App bei der Veranstaltung angezeigt wird.
bib_number_modestringVergabeart der Startnummern: OFF, MANUAL, AUTOMATIC oder BATCH. Greift nur, wenn der Event-Typ Startnummern hat (enableBibNumbers).
timing_gun_startstring (date-time)Startschuss; ohne Wert gilt startTime.
timing_public_livebooleanLive-Zeitnahme-Ergebnisse sind öffentlich.
timing_gps_trackingbooleanGPS-Tracking der Teilnehmer ist für die Zeitmessung aktiviert.
timing_self_check_inbooleanTeilnehmende können sich für die Zeitmessung selbst einchecken.
ticket_sales_enabledbooleanTicketverkauf statt Anmeldung: Teilnehmer kaufen Tickets (Ticketarten = Event-Preise mit Kontingent und Verkaufszeitraum), jedes Ticket bekommt einen Code für den Check-in. Greift nur mit der Einstellung event_ticket_sales_enabled.
ticket_max_per_orderintegerHöchstzahl Tickets je Bestellung; ohne Wert gilt event_ticket_max_per_order_default.
ticket_personalizedbooleanPersonalisierte Tickets: jedes Ticket braucht den Namen des Teilnehmers. Sonst laufen alle Tickets einer Bestellung auf den Namen des Käufers.
ticket_seatingbooleanPlatzwahl beim Ticketverkauf: jedes Ticket bekommt einen freien Platz aus dem Saalplan des Raums (BaseBookable::ticketSeatingPlan); die Ticketart kann auf eine Zone (ticketSeatZone) beschränkt sein. Greift nur mit der Einstellung event_ticket_seating_enabled.
approved_atstring (date-time)Zeitpunkt, zu dem der Eintrag genehmigt wurde.
createdstring (date-time)Zeitpunkt, zu dem der Eintrag angelegt wurde.
updatedstring (date-time)Zeitpunkt, zu dem der Eintrag zuletzt geändert wurde.
curl --request GET \
--url https://eure-instanz.iw-erp.de/api/time/volunteer_hour_entry/42 \
--header 'x-iw-jwt-token: <TOKEN>'const options = {method: 'GET', headers: {'x-iw-jwt-token': '<TOKEN>'}};
fetch('https://eure-instanz.iw-erp.de/api/time/volunteer_hour_entry/42', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://eure-instanz.iw-erp.de/api/time/volunteer_hour_entry/42"
headers = {"x-iw-jwt-token": "<TOKEN>"}
response = requests.get(url, headers=headers)
print(response.text)<?php
require_once('vendor/autoload.php');
$client = new \GuzzleHttp\Client();
$response = $client->request('GET', 'https://eure-instanz.iw-erp.de/api/time/volunteer_hour_entry/42', [
'headers' => [
'x-iw-jwt-token' => '<TOKEN>',
],
]);
echo $response->getBody();using System.Net.Http.Headers;
var client = new HttpClient();
var request = new HttpRequestMessage
{
Method = HttpMethod.Get,
RequestUri = new Uri("https://eure-instanz.iw-erp.de/api/time/volunteer_hour_entry/42"),
Headers =
{
{ "x-iw-jwt-token", "<TOKEN>" },
},
};
using (var response = await client.SendAsync(request))
{
response.EnsureSuccessStatusCode();
var body = await response.Content.ReadAsStringAsync();
Console.WriteLine(body);
}OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder()
.url("https://eure-instanz.iw-erp.de/api/time/volunteer_hour_entry/42")
.get()
.addHeader("x-iw-jwt-token", "<TOKEN>")
.build();
Response response = client.newCall(request).execute();package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://eure-instanz.iw-erp.de/api/time/volunteer_hour_entry/42"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("x-iw-jwt-token", "<TOKEN>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}Dart mit dem Package iw_erp_api
import 'package:iw_erp_api/clients/volunteer_hour_entry_controller.dart';
import 'package:iw_erp_api/logic/iw_api_state.dart';
IwApiState().host = 'eure-instanz.iw-erp.de';
IwApiState().currentJwtApiToken = '<TOKEN>';
final result = await VolunteerHourEntryController.get('42');
if (result.success) {
print(result.data);
}{
"approved_by_name": "Beispiel",
"id": 42,
"description": "Text",
"shift_assignment_id": 42,
"settlement_id": 42,
"is_settled": true,
"person": {
"id": 42,
"first_name": "Lena",
"last_name": "Hartmann",
"title": "Beispiel",
"number": 1,
"manual_number": 1,
"number_string": "string",
"gender": "string",
"nickname": "string",
"preferred_color_hex": "string"
},
"work_date": "2026-10-15T09:30:00+02:00",
"duration_minutes": 1,
"status": "string"
}Ehrenamtsstunden-Eintrag aktualisieren, der noch nicht abgerechnet ist
PUT/api/time/volunteer_hour_entry/{id}
Pfad-Parameter
idPflichtstring |
Request-Body application/json
dataVolunteerHourEntry2Felder anzeigen (5)
personCRMPerson33Ehrenamtliche Person, die die Stunden geleistet hat.
work_datestring (date-time)Tag, an dem die Arbeit erledigt wurde.
duration_minutesintegerDauer der Arbeit in Minuten.
descriptionstringBeschreibung der Arbeit.
eventBaseEvent11Event, für das die Stunden geleistet wurden.
Antworten
200VolunteerHourEntry aktualisierenVolunteerHourEntry
Felder anzeigen (15)
shift_assignment_idintegersettlement_idintegeris_settledbooleanapproved_by_namestringidintegerPrimärschlüssel des Ehrenamtsstunden-Eintrags. Interne ID.
personCRMPerson27Ehrenamtliche Person, die die Stunden geleistet hat.
Felder anzeigen (11)
idintegerPrimärschlüssel der Person. Interne ID.
first_namestringVorname der Person.
last_namestringNachname der Person.
numberintegerMitglieds- oder Kundennummer der Person.
manual_numberintegerManuell gesetzte Nummer statt der automatischen Nummer.
number_stringstringMitglieds- oder Kundennummer als Text, einschließlich Präfix.
genderstringGeschlecht der Person.
titlestringAkademischer oder sonstiger Titel der Person.
nicknamestringSpitzname der Person.
preferred_color_hexstringBevorzugte Farbe der Person als Hexwert.
avatar_tokenstringToken des Avatarbildes.
work_datestring (date-time)Tag, an dem die Arbeit erledigt wurde.
duration_minutesintegerDauer der Arbeit in Minuten.
descriptionstringBeschreibung der Arbeit.
statusstringStatus des Eintrags, zum Beispiel ausstehend, genehmigt oder abgelehnt.
rejection_reasonstringGrund für die Ablehnung des Eintrags.
eventBaseEvent10Event, für das die Stunden geleistet wurden.
Felder anzeigen (45)
ticketSeatingPlanIdintegerID des Sitzplans, auch für die öffentliche Serialisierung und die Kunden-Serialisierung.
bib_numbers_enabledbooleantiming_enabledbooleanidintegerPrimärschlüssel der Veranstaltung. Interne ID.
public_subtitlestringUntertitel, der in der öffentlichen Veranstaltungsliste angezeigt wird.
event_typestringArt des Events, zum Beispiel Kurs, Fahrt oder Turnier.
event_people_limitintegermaximale Anzahl Personen, die an der Veranstaltung teilnehmen können
event_people_min_limitintegerminimale Anzahl Personen, die an der Veranstaltung teilnehmen müssen
hide_event_people_limitbooleaneine Einstellung, um die Teilnehmerbegrenzung der Veranstaltung in der Frontend-Oberfläche auszublenden
has_wait_listbooleanDie Veranstaltung hat eine Warteliste, sobald sie voll ist.
wait_list_confirmation_requiredbooleanTeilnehmende von der Warteliste müssen ihren Platz bestätigen.
trial_enabledbooleanSchnuppertermine (Schnuppern) werden für dieses Event angeboten. Standardmäßig deaktiviert: Das Event muss sich dafür aktiv entscheiden, die Regel stammt aus trialPolicy, der Kategorie des Events oder der Standardregel.
can_sign_up_for_main_eventbooleanTeilnehmende dürfen sich für die Hauptveranstaltung anmelden.
only_sign_up_for_main_eventbooleanTeilnehmende dürfen sich nur für die Hauptveranstaltung anmelden, nicht für Unterveranstaltungen.
start_timestring (date-time)Beginn der Veranstaltung.
end_timestring (date-time)Ende der Veranstaltung.
require_addressbooleanTeilnehmende müssen bei der Anmeldung eine Adresse angeben.
require_contactbooleanTeilnehmende müssen bei der Anmeldung Kontaktdaten angeben.
require_billingbooleanTeilnehmende müssen bei der Anmeldung Rechnungsdaten angeben.
allow_direct_billingbooleanrequire_direct_billingbooleanallow_budget_sign_upbooleanrequire_agebooleanTeilnehmende müssen bei der Anmeldung ihr Alter angeben.
require_grade_levelbooleanTeilnehmende müssen bei der Anmeldung ihre Schulstufe angeben.
require_free_note_field_idsstringIDs der Freitext-Notizfelder, die Teilnehmer ausfüllen müssen.
generate_new_bookingsbooleanBuchungen werden für den Veranstaltungsplan automatisch erzeugt.
generate_new_bookings_v2booleanBuchungen werden mit der zweiten Version des Plan-Generators erzeugt.
generate_ignore_sys_calendarbooleanErzeugte Buchungen ignorieren die Feiertage des Systemkalenders.
generate_hour_startstring (date-time)Startzeit des Tages für erzeugte Buchungen.
generate_hour_endstring (date-time)Endzeit des Tages für generierte Buchungen.
generate_day_of_weekintegerWochentag für erzeugte Buchungen.
bitmask_days_of_weekintegerBitmask-Wert der Wochentage, an denen die Veranstaltung stattfindet
bitmask_hours_startintegerBitmask-Wert der Stunden, zu denen eine Veranstaltung beginnt
summarized_date_timesstringZeichenkette mit den Wochentagen und Stunden, zu denen eine Veranstaltung beginnt
customer_detail_ctastringIn der Kunden-App auf der Veranstaltungsdetailseite angezeigter Call-to-Action-Text.
customer_badgestringBadge-Text, der in der Kunden-App bei der Veranstaltung angezeigt wird.
bib_number_modestringVergabeart der Startnummern: OFF, MANUAL, AUTOMATIC oder BATCH. Greift nur, wenn der Event-Typ Startnummern hat (enableBibNumbers).
timing_gun_startstring (date-time)Startschuss; ohne Wert gilt startTime.
timing_public_livebooleanLive-Zeitnahme-Ergebnisse sind öffentlich.
timing_gps_trackingbooleanGPS-Tracking der Teilnehmer ist für die Zeitmessung aktiviert.
timing_self_check_inbooleanTeilnehmende können sich für die Zeitmessung selbst einchecken.
ticket_sales_enabledbooleanTicketverkauf statt Anmeldung: Teilnehmer kaufen Tickets (Ticketarten = Event-Preise mit Kontingent und Verkaufszeitraum), jedes Ticket bekommt einen Code für den Check-in. Greift nur mit der Einstellung event_ticket_sales_enabled.
ticket_max_per_orderintegerHöchstzahl Tickets je Bestellung; ohne Wert gilt event_ticket_max_per_order_default.
ticket_personalizedbooleanPersonalisierte Tickets: jedes Ticket braucht den Namen des Teilnehmers. Sonst laufen alle Tickets einer Bestellung auf den Namen des Käufers.
ticket_seatingbooleanPlatzwahl beim Ticketverkauf: jedes Ticket bekommt einen freien Platz aus dem Saalplan des Raums (BaseBookable::ticketSeatingPlan); die Ticketart kann auf eine Zone (ticketSeatZone) beschränkt sein. Greift nur mit der Einstellung event_ticket_seating_enabled.
approved_atstring (date-time)Zeitpunkt, zu dem der Eintrag genehmigt wurde.
createdstring (date-time)Zeitpunkt, zu dem der Eintrag angelegt wurde.
updatedstring (date-time)Zeitpunkt, zu dem der Eintrag zuletzt geändert wurde.
curl --request PUT \
--url https://eure-instanz.iw-erp.de/api/time/volunteer_hour_entry/42 \
--header 'content-type: application/json' \
--header 'x-iw-jwt-token: <TOKEN>' \
--data '
{
"data": {
"description": "Text",
"work_date": "2026-10-15T09:30:00+02:00",
"duration_minutes": 1
}
}
'const options = {
method: 'PUT',
headers: {'x-iw-jwt-token': '<TOKEN>', 'content-type': 'application/json'},
body: JSON.stringify({
data: {
description: 'Text',
work_date: '2026-10-15T09:30:00+02:00',
duration_minutes: 1
}
})
};
fetch('https://eure-instanz.iw-erp.de/api/time/volunteer_hour_entry/42', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://eure-instanz.iw-erp.de/api/time/volunteer_hour_entry/42"
payload = { "data": {
"description": "Text",
"work_date": "2026-10-15T09:30:00+02:00",
"duration_minutes": 1
} }
headers = {
"x-iw-jwt-token": "<TOKEN>",
"content-type": "application/json"
}
response = requests.put(url, json=payload, headers=headers)
print(response.text)<?php
require_once('vendor/autoload.php');
$client = new \GuzzleHttp\Client();
$response = $client->request('PUT', 'https://eure-instanz.iw-erp.de/api/time/volunteer_hour_entry/42', [
'body' => '{"data":{"description":"Text","work_date":"2026-10-15T09:30:00+02:00","duration_minutes":1}}',
'headers' => [
'content-type' => 'application/json',
'x-iw-jwt-token' => '<TOKEN>',
],
]);
echo $response->getBody();using System.Net.Http.Headers;
var client = new HttpClient();
var request = new HttpRequestMessage
{
Method = HttpMethod.Put,
RequestUri = new Uri("https://eure-instanz.iw-erp.de/api/time/volunteer_hour_entry/42"),
Headers =
{
{ "x-iw-jwt-token", "<TOKEN>" },
},
Content = new StringContent("{\"data\":{\"description\":\"Text\",\"work_date\":\"2026-10-15T09:30:00+02:00\",\"duration_minutes\":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\":{\"description\":\"Text\",\"work_date\":\"2026-10-15T09:30:00+02:00\",\"duration_minutes\":1}}");
Request request = new Request.Builder()
.url("https://eure-instanz.iw-erp.de/api/time/volunteer_hour_entry/42")
.put(body)
.addHeader("x-iw-jwt-token", "<TOKEN>")
.addHeader("content-type", "application/json")
.build();
Response response = client.newCall(request).execute();package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://eure-instanz.iw-erp.de/api/time/volunteer_hour_entry/42"
payload := strings.NewReader("{\"data\":{\"description\":\"Text\",\"work_date\":\"2026-10-15T09:30:00+02:00\",\"duration_minutes\":1}}")
req, _ := http.NewRequest("PUT", url, payload)
req.Header.Add("x-iw-jwt-token", "<TOKEN>")
req.Header.Add("content-type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}Dart mit dem Package iw_erp_api
import 'package:iw_erp_api/clients/volunteer_hour_entry_controller.dart';
import 'package:iw_erp_api/logic/iw_api_state.dart';
import 'package:iw_erp_api/model/volunteer_hour_entry.dart';
IwApiState().host = 'eure-instanz.iw-erp.de';
IwApiState().currentJwtApiToken = '<TOKEN>';
final result = await VolunteerHourEntryController.put(VolunteerHourEntry.fromJson({
"description": "Text",
"work_date": "2026-10-15T09:30:00+02:00",
"duration_minutes": 1
}));
if (result.success) {
print(result.data);
}{
"approved_by_name": "Beispiel",
"id": 42,
"description": "Text",
"shift_assignment_id": 42,
"settlement_id": 42,
"is_settled": true,
"person": {
"id": 42,
"first_name": "Lena",
"last_name": "Hartmann",
"title": "Beispiel",
"number": 1,
"manual_number": 1,
"number_string": "string",
"gender": "string",
"nickname": "string",
"preferred_color_hex": "string"
},
"work_date": "2026-10-15T09:30:00+02:00",
"duration_minutes": 1,
"status": "string"
}Ehrenamtsstunden-Eintrag aktualisieren, der noch nicht abgerechnet ist
PATCH/api/time/volunteer_hour_entry/{id}
Pfad-Parameter
idPflichtstring |
Request-Body application/json
dataVolunteerHourEntry2Felder anzeigen (5)
personCRMPerson33Ehrenamtliche Person, die die Stunden geleistet hat.
work_datestring (date-time)Tag, an dem die Arbeit erledigt wurde.
duration_minutesintegerDauer der Arbeit in Minuten.
descriptionstringBeschreibung der Arbeit.
eventBaseEvent11Event, für das die Stunden geleistet wurden.
Antworten
200VolunteerHourEntry aktualisierenVolunteerHourEntry
Felder anzeigen (15)
shift_assignment_idintegersettlement_idintegeris_settledbooleanapproved_by_namestringidintegerPrimärschlüssel des Ehrenamtsstunden-Eintrags. Interne ID.
personCRMPerson27Ehrenamtliche Person, die die Stunden geleistet hat.
Felder anzeigen (11)
idintegerPrimärschlüssel der Person. Interne ID.
first_namestringVorname der Person.
last_namestringNachname der Person.
numberintegerMitglieds- oder Kundennummer der Person.
manual_numberintegerManuell gesetzte Nummer statt der automatischen Nummer.
number_stringstringMitglieds- oder Kundennummer als Text, einschließlich Präfix.
genderstringGeschlecht der Person.
titlestringAkademischer oder sonstiger Titel der Person.
nicknamestringSpitzname der Person.
preferred_color_hexstringBevorzugte Farbe der Person als Hexwert.
avatar_tokenstringToken des Avatarbildes.
work_datestring (date-time)Tag, an dem die Arbeit erledigt wurde.
duration_minutesintegerDauer der Arbeit in Minuten.
descriptionstringBeschreibung der Arbeit.
statusstringStatus des Eintrags, zum Beispiel ausstehend, genehmigt oder abgelehnt.
rejection_reasonstringGrund für die Ablehnung des Eintrags.
eventBaseEvent10Event, für das die Stunden geleistet wurden.
Felder anzeigen (45)
ticketSeatingPlanIdintegerID des Sitzplans, auch für die öffentliche Serialisierung und die Kunden-Serialisierung.
bib_numbers_enabledbooleantiming_enabledbooleanidintegerPrimärschlüssel der Veranstaltung. Interne ID.
public_subtitlestringUntertitel, der in der öffentlichen Veranstaltungsliste angezeigt wird.
event_typestringArt des Events, zum Beispiel Kurs, Fahrt oder Turnier.
event_people_limitintegermaximale Anzahl Personen, die an der Veranstaltung teilnehmen können
event_people_min_limitintegerminimale Anzahl Personen, die an der Veranstaltung teilnehmen müssen
hide_event_people_limitbooleaneine Einstellung, um die Teilnehmerbegrenzung der Veranstaltung in der Frontend-Oberfläche auszublenden
has_wait_listbooleanDie Veranstaltung hat eine Warteliste, sobald sie voll ist.
wait_list_confirmation_requiredbooleanTeilnehmende von der Warteliste müssen ihren Platz bestätigen.
trial_enabledbooleanSchnuppertermine (Schnuppern) werden für dieses Event angeboten. Standardmäßig deaktiviert: Das Event muss sich dafür aktiv entscheiden, die Regel stammt aus trialPolicy, der Kategorie des Events oder der Standardregel.
can_sign_up_for_main_eventbooleanTeilnehmende dürfen sich für die Hauptveranstaltung anmelden.
only_sign_up_for_main_eventbooleanTeilnehmende dürfen sich nur für die Hauptveranstaltung anmelden, nicht für Unterveranstaltungen.
start_timestring (date-time)Beginn der Veranstaltung.
end_timestring (date-time)Ende der Veranstaltung.
require_addressbooleanTeilnehmende müssen bei der Anmeldung eine Adresse angeben.
require_contactbooleanTeilnehmende müssen bei der Anmeldung Kontaktdaten angeben.
require_billingbooleanTeilnehmende müssen bei der Anmeldung Rechnungsdaten angeben.
allow_direct_billingbooleanrequire_direct_billingbooleanallow_budget_sign_upbooleanrequire_agebooleanTeilnehmende müssen bei der Anmeldung ihr Alter angeben.
require_grade_levelbooleanTeilnehmende müssen bei der Anmeldung ihre Schulstufe angeben.
require_free_note_field_idsstringIDs der Freitext-Notizfelder, die Teilnehmer ausfüllen müssen.
generate_new_bookingsbooleanBuchungen werden für den Veranstaltungsplan automatisch erzeugt.
generate_new_bookings_v2booleanBuchungen werden mit der zweiten Version des Plan-Generators erzeugt.
generate_ignore_sys_calendarbooleanErzeugte Buchungen ignorieren die Feiertage des Systemkalenders.
generate_hour_startstring (date-time)Startzeit des Tages für erzeugte Buchungen.
generate_hour_endstring (date-time)Endzeit des Tages für generierte Buchungen.
generate_day_of_weekintegerWochentag für erzeugte Buchungen.
bitmask_days_of_weekintegerBitmask-Wert der Wochentage, an denen die Veranstaltung stattfindet
bitmask_hours_startintegerBitmask-Wert der Stunden, zu denen eine Veranstaltung beginnt
summarized_date_timesstringZeichenkette mit den Wochentagen und Stunden, zu denen eine Veranstaltung beginnt
customer_detail_ctastringIn der Kunden-App auf der Veranstaltungsdetailseite angezeigter Call-to-Action-Text.
customer_badgestringBadge-Text, der in der Kunden-App bei der Veranstaltung angezeigt wird.
bib_number_modestringVergabeart der Startnummern: OFF, MANUAL, AUTOMATIC oder BATCH. Greift nur, wenn der Event-Typ Startnummern hat (enableBibNumbers).
timing_gun_startstring (date-time)Startschuss; ohne Wert gilt startTime.
timing_public_livebooleanLive-Zeitnahme-Ergebnisse sind öffentlich.
timing_gps_trackingbooleanGPS-Tracking der Teilnehmer ist für die Zeitmessung aktiviert.
timing_self_check_inbooleanTeilnehmende können sich für die Zeitmessung selbst einchecken.
ticket_sales_enabledbooleanTicketverkauf statt Anmeldung: Teilnehmer kaufen Tickets (Ticketarten = Event-Preise mit Kontingent und Verkaufszeitraum), jedes Ticket bekommt einen Code für den Check-in. Greift nur mit der Einstellung event_ticket_sales_enabled.
ticket_max_per_orderintegerHöchstzahl Tickets je Bestellung; ohne Wert gilt event_ticket_max_per_order_default.
ticket_personalizedbooleanPersonalisierte Tickets: jedes Ticket braucht den Namen des Teilnehmers. Sonst laufen alle Tickets einer Bestellung auf den Namen des Käufers.
ticket_seatingbooleanPlatzwahl beim Ticketverkauf: jedes Ticket bekommt einen freien Platz aus dem Saalplan des Raums (BaseBookable::ticketSeatingPlan); die Ticketart kann auf eine Zone (ticketSeatZone) beschränkt sein. Greift nur mit der Einstellung event_ticket_seating_enabled.
approved_atstring (date-time)Zeitpunkt, zu dem der Eintrag genehmigt wurde.
createdstring (date-time)Zeitpunkt, zu dem der Eintrag angelegt wurde.
updatedstring (date-time)Zeitpunkt, zu dem der Eintrag zuletzt geändert wurde.
curl --request PATCH \
--url https://eure-instanz.iw-erp.de/api/time/volunteer_hour_entry/42 \
--header 'content-type: application/json' \
--header 'x-iw-jwt-token: <TOKEN>' \
--data '
{
"data": {
"description": "Text",
"work_date": "2026-10-15T09:30:00+02:00",
"duration_minutes": 1
}
}
'const options = {
method: 'PATCH',
headers: {'x-iw-jwt-token': '<TOKEN>', 'content-type': 'application/json'},
body: JSON.stringify({
data: {
description: 'Text',
work_date: '2026-10-15T09:30:00+02:00',
duration_minutes: 1
}
})
};
fetch('https://eure-instanz.iw-erp.de/api/time/volunteer_hour_entry/42', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://eure-instanz.iw-erp.de/api/time/volunteer_hour_entry/42"
payload = { "data": {
"description": "Text",
"work_date": "2026-10-15T09:30:00+02:00",
"duration_minutes": 1
} }
headers = {
"x-iw-jwt-token": "<TOKEN>",
"content-type": "application/json"
}
response = requests.patch(url, json=payload, headers=headers)
print(response.text)<?php
require_once('vendor/autoload.php');
$client = new \GuzzleHttp\Client();
$response = $client->request('PATCH', 'https://eure-instanz.iw-erp.de/api/time/volunteer_hour_entry/42', [
'body' => '{"data":{"description":"Text","work_date":"2026-10-15T09:30:00+02:00","duration_minutes":1}}',
'headers' => [
'content-type' => 'application/json',
'x-iw-jwt-token' => '<TOKEN>',
],
]);
echo $response->getBody();using System.Net.Http.Headers;
var client = new HttpClient();
var request = new HttpRequestMessage
{
Method = HttpMethod.Patch,
RequestUri = new Uri("https://eure-instanz.iw-erp.de/api/time/volunteer_hour_entry/42"),
Headers =
{
{ "x-iw-jwt-token", "<TOKEN>" },
},
Content = new StringContent("{\"data\":{\"description\":\"Text\",\"work_date\":\"2026-10-15T09:30:00+02:00\",\"duration_minutes\":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\":{\"description\":\"Text\",\"work_date\":\"2026-10-15T09:30:00+02:00\",\"duration_minutes\":1}}");
Request request = new Request.Builder()
.url("https://eure-instanz.iw-erp.de/api/time/volunteer_hour_entry/42")
.patch(body)
.addHeader("x-iw-jwt-token", "<TOKEN>")
.addHeader("content-type", "application/json")
.build();
Response response = client.newCall(request).execute();package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://eure-instanz.iw-erp.de/api/time/volunteer_hour_entry/42"
payload := strings.NewReader("{\"data\":{\"description\":\"Text\",\"work_date\":\"2026-10-15T09:30:00+02:00\",\"duration_minutes\":1}}")
req, _ := http.NewRequest("PATCH", url, payload)
req.Header.Add("x-iw-jwt-token", "<TOKEN>")
req.Header.Add("content-type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}Dart mit package:http (kein Controller im Package iw_erp_api)
import 'dart:convert';
import 'package:http/http.dart' as http;
final response = await http.patch(
Uri.parse('https://eure-instanz.iw-erp.de/api/time/volunteer_hour_entry/42'),
headers: {'x-iw-jwt-token': '<TOKEN>', 'content-type': 'application/json'},
body: jsonEncode({
"data": {
"description": "Text",
"work_date": "2026-10-15T09:30:00+02:00",
"duration_minutes": 1
}
}),
);
print(response.body);{
"approved_by_name": "Beispiel",
"id": 42,
"description": "Text",
"shift_assignment_id": 42,
"settlement_id": 42,
"is_settled": true,
"person": {
"id": 42,
"first_name": "Lena",
"last_name": "Hartmann",
"title": "Beispiel",
"number": 1,
"manual_number": 1,
"number_string": "string",
"gender": "string",
"nickname": "string",
"preferred_color_hex": "string"
},
"work_date": "2026-10-15T09:30:00+02:00",
"duration_minutes": 1,
"status": "string"
}Einen Ehrenamtsstunden-Eintrag löschen, der noch nicht abgerechnet ist
DELETE/api/time/volunteer_hour_entry/{id}
Pfad-Parameter
idPflichtstring |
Antworten
default
curl --request DELETE \
--url https://eure-instanz.iw-erp.de/api/time/volunteer_hour_entry/42 \
--header 'x-iw-jwt-token: <TOKEN>'const options = {method: 'DELETE', headers: {'x-iw-jwt-token': '<TOKEN>'}};
fetch('https://eure-instanz.iw-erp.de/api/time/volunteer_hour_entry/42', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://eure-instanz.iw-erp.de/api/time/volunteer_hour_entry/42"
headers = {"x-iw-jwt-token": "<TOKEN>"}
response = requests.delete(url, headers=headers)
print(response.text)<?php
require_once('vendor/autoload.php');
$client = new \GuzzleHttp\Client();
$response = $client->request('DELETE', 'https://eure-instanz.iw-erp.de/api/time/volunteer_hour_entry/42', [
'headers' => [
'x-iw-jwt-token' => '<TOKEN>',
],
]);
echo $response->getBody();using System.Net.Http.Headers;
var client = new HttpClient();
var request = new HttpRequestMessage
{
Method = HttpMethod.Delete,
RequestUri = new Uri("https://eure-instanz.iw-erp.de/api/time/volunteer_hour_entry/42"),
Headers =
{
{ "x-iw-jwt-token", "<TOKEN>" },
},
};
using (var response = await client.SendAsync(request))
{
response.EnsureSuccessStatusCode();
var body = await response.Content.ReadAsStringAsync();
Console.WriteLine(body);
}OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder()
.url("https://eure-instanz.iw-erp.de/api/time/volunteer_hour_entry/42")
.delete(null)
.addHeader("x-iw-jwt-token", "<TOKEN>")
.build();
Response response = client.newCall(request).execute();package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://eure-instanz.iw-erp.de/api/time/volunteer_hour_entry/42"
req, _ := http.NewRequest("DELETE", url, nil)
req.Header.Add("x-iw-jwt-token", "<TOKEN>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}Dart mit dem Package iw_erp_api
import 'package:iw_erp_api/clients/volunteer_hour_entry_controller.dart';
import 'package:iw_erp_api/logic/iw_api_state.dart';
IwApiState().host = 'eure-instanz.iw-erp.de';
IwApiState().currentJwtApiToken = '<TOKEN>';
final result = await VolunteerHourEntryController.delete('42');
if (result.success) {
print(result.data);
}Einen Ehrenamtsstunden-Eintrag genehmigen – nur genehmigte Einträge zählen zu den erforderlichen Stunden
POST/api/time/volunteer_hour_entry/{id}/approve
Pfad-Parameter
idPflichtstring |
Antworten
200VolunteerHourEntry genehmigenVolunteerHourEntry
Felder anzeigen (15)
shift_assignment_idintegersettlement_idintegeris_settledbooleanapproved_by_namestringidintegerPrimärschlüssel des Ehrenamtsstunden-Eintrags. Interne ID.
personCRMPerson27Ehrenamtliche Person, die die Stunden geleistet hat.
Felder anzeigen (11)
idintegerPrimärschlüssel der Person. Interne ID.
first_namestringVorname der Person.
last_namestringNachname der Person.
numberintegerMitglieds- oder Kundennummer der Person.
manual_numberintegerManuell gesetzte Nummer statt der automatischen Nummer.
number_stringstringMitglieds- oder Kundennummer als Text, einschließlich Präfix.
genderstringGeschlecht der Person.
titlestringAkademischer oder sonstiger Titel der Person.
nicknamestringSpitzname der Person.
preferred_color_hexstringBevorzugte Farbe der Person als Hexwert.
avatar_tokenstringToken des Avatarbildes.
work_datestring (date-time)Tag, an dem die Arbeit erledigt wurde.
duration_minutesintegerDauer der Arbeit in Minuten.
descriptionstringBeschreibung der Arbeit.
statusstringStatus des Eintrags, zum Beispiel ausstehend, genehmigt oder abgelehnt.
rejection_reasonstringGrund für die Ablehnung des Eintrags.
eventBaseEvent10Event, für das die Stunden geleistet wurden.
Felder anzeigen (45)
ticketSeatingPlanIdintegerID des Sitzplans, auch für die öffentliche Serialisierung und die Kunden-Serialisierung.
bib_numbers_enabledbooleantiming_enabledbooleanidintegerPrimärschlüssel der Veranstaltung. Interne ID.
public_subtitlestringUntertitel, der in der öffentlichen Veranstaltungsliste angezeigt wird.
event_typestringArt des Events, zum Beispiel Kurs, Fahrt oder Turnier.
event_people_limitintegermaximale Anzahl Personen, die an der Veranstaltung teilnehmen können
event_people_min_limitintegerminimale Anzahl Personen, die an der Veranstaltung teilnehmen müssen
hide_event_people_limitbooleaneine Einstellung, um die Teilnehmerbegrenzung der Veranstaltung in der Frontend-Oberfläche auszublenden
has_wait_listbooleanDie Veranstaltung hat eine Warteliste, sobald sie voll ist.
wait_list_confirmation_requiredbooleanTeilnehmende von der Warteliste müssen ihren Platz bestätigen.
trial_enabledbooleanSchnuppertermine (Schnuppern) werden für dieses Event angeboten. Standardmäßig deaktiviert: Das Event muss sich dafür aktiv entscheiden, die Regel stammt aus trialPolicy, der Kategorie des Events oder der Standardregel.
can_sign_up_for_main_eventbooleanTeilnehmende dürfen sich für die Hauptveranstaltung anmelden.
only_sign_up_for_main_eventbooleanTeilnehmende dürfen sich nur für die Hauptveranstaltung anmelden, nicht für Unterveranstaltungen.
start_timestring (date-time)Beginn der Veranstaltung.
end_timestring (date-time)Ende der Veranstaltung.
require_addressbooleanTeilnehmende müssen bei der Anmeldung eine Adresse angeben.
require_contactbooleanTeilnehmende müssen bei der Anmeldung Kontaktdaten angeben.
require_billingbooleanTeilnehmende müssen bei der Anmeldung Rechnungsdaten angeben.
allow_direct_billingbooleanrequire_direct_billingbooleanallow_budget_sign_upbooleanrequire_agebooleanTeilnehmende müssen bei der Anmeldung ihr Alter angeben.
require_grade_levelbooleanTeilnehmende müssen bei der Anmeldung ihre Schulstufe angeben.
require_free_note_field_idsstringIDs der Freitext-Notizfelder, die Teilnehmer ausfüllen müssen.
generate_new_bookingsbooleanBuchungen werden für den Veranstaltungsplan automatisch erzeugt.
generate_new_bookings_v2booleanBuchungen werden mit der zweiten Version des Plan-Generators erzeugt.
generate_ignore_sys_calendarbooleanErzeugte Buchungen ignorieren die Feiertage des Systemkalenders.
generate_hour_startstring (date-time)Startzeit des Tages für erzeugte Buchungen.
generate_hour_endstring (date-time)Endzeit des Tages für generierte Buchungen.
generate_day_of_weekintegerWochentag für erzeugte Buchungen.
bitmask_days_of_weekintegerBitmask-Wert der Wochentage, an denen die Veranstaltung stattfindet
bitmask_hours_startintegerBitmask-Wert der Stunden, zu denen eine Veranstaltung beginnt
summarized_date_timesstringZeichenkette mit den Wochentagen und Stunden, zu denen eine Veranstaltung beginnt
customer_detail_ctastringIn der Kunden-App auf der Veranstaltungsdetailseite angezeigter Call-to-Action-Text.
customer_badgestringBadge-Text, der in der Kunden-App bei der Veranstaltung angezeigt wird.
bib_number_modestringVergabeart der Startnummern: OFF, MANUAL, AUTOMATIC oder BATCH. Greift nur, wenn der Event-Typ Startnummern hat (enableBibNumbers).
timing_gun_startstring (date-time)Startschuss; ohne Wert gilt startTime.
timing_public_livebooleanLive-Zeitnahme-Ergebnisse sind öffentlich.
timing_gps_trackingbooleanGPS-Tracking der Teilnehmer ist für die Zeitmessung aktiviert.
timing_self_check_inbooleanTeilnehmende können sich für die Zeitmessung selbst einchecken.
ticket_sales_enabledbooleanTicketverkauf statt Anmeldung: Teilnehmer kaufen Tickets (Ticketarten = Event-Preise mit Kontingent und Verkaufszeitraum), jedes Ticket bekommt einen Code für den Check-in. Greift nur mit der Einstellung event_ticket_sales_enabled.
ticket_max_per_orderintegerHöchstzahl Tickets je Bestellung; ohne Wert gilt event_ticket_max_per_order_default.
ticket_personalizedbooleanPersonalisierte Tickets: jedes Ticket braucht den Namen des Teilnehmers. Sonst laufen alle Tickets einer Bestellung auf den Namen des Käufers.
ticket_seatingbooleanPlatzwahl beim Ticketverkauf: jedes Ticket bekommt einen freien Platz aus dem Saalplan des Raums (BaseBookable::ticketSeatingPlan); die Ticketart kann auf eine Zone (ticketSeatZone) beschränkt sein. Greift nur mit der Einstellung event_ticket_seating_enabled.
approved_atstring (date-time)Zeitpunkt, zu dem der Eintrag genehmigt wurde.
createdstring (date-time)Zeitpunkt, zu dem der Eintrag angelegt wurde.
updatedstring (date-time)Zeitpunkt, zu dem der Eintrag zuletzt geändert wurde.
curl --request POST \
--url https://eure-instanz.iw-erp.de/api/time/volunteer_hour_entry/42/approve \
--header 'x-iw-jwt-token: <TOKEN>'const options = {method: 'POST', headers: {'x-iw-jwt-token': '<TOKEN>'}};
fetch('https://eure-instanz.iw-erp.de/api/time/volunteer_hour_entry/42/approve', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://eure-instanz.iw-erp.de/api/time/volunteer_hour_entry/42/approve"
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://eure-instanz.iw-erp.de/api/time/volunteer_hour_entry/42/approve', [
'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://eure-instanz.iw-erp.de/api/time/volunteer_hour_entry/42/approve"),
Headers =
{
{ "x-iw-jwt-token", "<TOKEN>" },
},
};
using (var response = await client.SendAsync(request))
{
response.EnsureSuccessStatusCode();
var body = await response.Content.ReadAsStringAsync();
Console.WriteLine(body);
}OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder()
.url("https://eure-instanz.iw-erp.de/api/time/volunteer_hour_entry/42/approve")
.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://eure-instanz.iw-erp.de/api/time/volunteer_hour_entry/42/approve"
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 mit dem Package iw_erp_api
import 'package:iw_erp_api/clients/volunteer_hour_entry_controller.dart';
import 'package:iw_erp_api/logic/iw_api_state.dart';
IwApiState().host = 'eure-instanz.iw-erp.de';
IwApiState().currentJwtApiToken = '<TOKEN>';
final result = await VolunteerHourEntryController.postApprove('42');
if (result.success) {
print(result.data);
}{
"approved_by_name": "Beispiel",
"id": 42,
"description": "Text",
"shift_assignment_id": 42,
"settlement_id": 42,
"is_settled": true,
"person": {
"id": 42,
"first_name": "Lena",
"last_name": "Hartmann",
"title": "Beispiel",
"number": 1,
"manual_number": 1,
"number_string": "string",
"gender": "string",
"nickname": "string",
"preferred_color_hex": "string"
},
"work_date": "2026-10-15T09:30:00+02:00",
"duration_minutes": 1,
"status": "string"
}Einen Ehrenamtsstunden-Eintrag ablehnen, optional mit einem Grund (`reason`), der dem Mitglied angezeigt wird
POST/api/time/volunteer_hour_entry/{id}/reject
Pfad-Parameter
idPflichtstring |
Antworten
200Einen VolunteerHourEntry ablehnenVolunteerHourEntry
Felder anzeigen (15)
shift_assignment_idintegersettlement_idintegeris_settledbooleanapproved_by_namestringidintegerPrimärschlüssel des Ehrenamtsstunden-Eintrags. Interne ID.
personCRMPerson27Ehrenamtliche Person, die die Stunden geleistet hat.
Felder anzeigen (11)
idintegerPrimärschlüssel der Person. Interne ID.
first_namestringVorname der Person.
last_namestringNachname der Person.
numberintegerMitglieds- oder Kundennummer der Person.
manual_numberintegerManuell gesetzte Nummer statt der automatischen Nummer.
number_stringstringMitglieds- oder Kundennummer als Text, einschließlich Präfix.
genderstringGeschlecht der Person.
titlestringAkademischer oder sonstiger Titel der Person.
nicknamestringSpitzname der Person.
preferred_color_hexstringBevorzugte Farbe der Person als Hexwert.
avatar_tokenstringToken des Avatarbildes.
work_datestring (date-time)Tag, an dem die Arbeit erledigt wurde.
duration_minutesintegerDauer der Arbeit in Minuten.
descriptionstringBeschreibung der Arbeit.
statusstringStatus des Eintrags, zum Beispiel ausstehend, genehmigt oder abgelehnt.
rejection_reasonstringGrund für die Ablehnung des Eintrags.
eventBaseEvent10Event, für das die Stunden geleistet wurden.
Felder anzeigen (45)
ticketSeatingPlanIdintegerID des Sitzplans, auch für die öffentliche Serialisierung und die Kunden-Serialisierung.
bib_numbers_enabledbooleantiming_enabledbooleanidintegerPrimärschlüssel der Veranstaltung. Interne ID.
public_subtitlestringUntertitel, der in der öffentlichen Veranstaltungsliste angezeigt wird.
event_typestringArt des Events, zum Beispiel Kurs, Fahrt oder Turnier.
event_people_limitintegermaximale Anzahl Personen, die an der Veranstaltung teilnehmen können
event_people_min_limitintegerminimale Anzahl Personen, die an der Veranstaltung teilnehmen müssen
hide_event_people_limitbooleaneine Einstellung, um die Teilnehmerbegrenzung der Veranstaltung in der Frontend-Oberfläche auszublenden
has_wait_listbooleanDie Veranstaltung hat eine Warteliste, sobald sie voll ist.
wait_list_confirmation_requiredbooleanTeilnehmende von der Warteliste müssen ihren Platz bestätigen.
trial_enabledbooleanSchnuppertermine (Schnuppern) werden für dieses Event angeboten. Standardmäßig deaktiviert: Das Event muss sich dafür aktiv entscheiden, die Regel stammt aus trialPolicy, der Kategorie des Events oder der Standardregel.
can_sign_up_for_main_eventbooleanTeilnehmende dürfen sich für die Hauptveranstaltung anmelden.
only_sign_up_for_main_eventbooleanTeilnehmende dürfen sich nur für die Hauptveranstaltung anmelden, nicht für Unterveranstaltungen.
start_timestring (date-time)Beginn der Veranstaltung.
end_timestring (date-time)Ende der Veranstaltung.
require_addressbooleanTeilnehmende müssen bei der Anmeldung eine Adresse angeben.
require_contactbooleanTeilnehmende müssen bei der Anmeldung Kontaktdaten angeben.
require_billingbooleanTeilnehmende müssen bei der Anmeldung Rechnungsdaten angeben.
allow_direct_billingbooleanrequire_direct_billingbooleanallow_budget_sign_upbooleanrequire_agebooleanTeilnehmende müssen bei der Anmeldung ihr Alter angeben.
require_grade_levelbooleanTeilnehmende müssen bei der Anmeldung ihre Schulstufe angeben.
require_free_note_field_idsstringIDs der Freitext-Notizfelder, die Teilnehmer ausfüllen müssen.
generate_new_bookingsbooleanBuchungen werden für den Veranstaltungsplan automatisch erzeugt.
generate_new_bookings_v2booleanBuchungen werden mit der zweiten Version des Plan-Generators erzeugt.
generate_ignore_sys_calendarbooleanErzeugte Buchungen ignorieren die Feiertage des Systemkalenders.
generate_hour_startstring (date-time)Startzeit des Tages für erzeugte Buchungen.
generate_hour_endstring (date-time)Endzeit des Tages für generierte Buchungen.
generate_day_of_weekintegerWochentag für erzeugte Buchungen.
bitmask_days_of_weekintegerBitmask-Wert der Wochentage, an denen die Veranstaltung stattfindet
bitmask_hours_startintegerBitmask-Wert der Stunden, zu denen eine Veranstaltung beginnt
summarized_date_timesstringZeichenkette mit den Wochentagen und Stunden, zu denen eine Veranstaltung beginnt
customer_detail_ctastringIn der Kunden-App auf der Veranstaltungsdetailseite angezeigter Call-to-Action-Text.
customer_badgestringBadge-Text, der in der Kunden-App bei der Veranstaltung angezeigt wird.
bib_number_modestringVergabeart der Startnummern: OFF, MANUAL, AUTOMATIC oder BATCH. Greift nur, wenn der Event-Typ Startnummern hat (enableBibNumbers).
timing_gun_startstring (date-time)Startschuss; ohne Wert gilt startTime.
timing_public_livebooleanLive-Zeitnahme-Ergebnisse sind öffentlich.
timing_gps_trackingbooleanGPS-Tracking der Teilnehmer ist für die Zeitmessung aktiviert.
timing_self_check_inbooleanTeilnehmende können sich für die Zeitmessung selbst einchecken.
ticket_sales_enabledbooleanTicketverkauf statt Anmeldung: Teilnehmer kaufen Tickets (Ticketarten = Event-Preise mit Kontingent und Verkaufszeitraum), jedes Ticket bekommt einen Code für den Check-in. Greift nur mit der Einstellung event_ticket_sales_enabled.
ticket_max_per_orderintegerHöchstzahl Tickets je Bestellung; ohne Wert gilt event_ticket_max_per_order_default.
ticket_personalizedbooleanPersonalisierte Tickets: jedes Ticket braucht den Namen des Teilnehmers. Sonst laufen alle Tickets einer Bestellung auf den Namen des Käufers.
ticket_seatingbooleanPlatzwahl beim Ticketverkauf: jedes Ticket bekommt einen freien Platz aus dem Saalplan des Raums (BaseBookable::ticketSeatingPlan); die Ticketart kann auf eine Zone (ticketSeatZone) beschränkt sein. Greift nur mit der Einstellung event_ticket_seating_enabled.
approved_atstring (date-time)Zeitpunkt, zu dem der Eintrag genehmigt wurde.
createdstring (date-time)Zeitpunkt, zu dem der Eintrag angelegt wurde.
updatedstring (date-time)Zeitpunkt, zu dem der Eintrag zuletzt geändert wurde.
curl --request POST \
--url https://eure-instanz.iw-erp.de/api/time/volunteer_hour_entry/42/reject \
--header 'x-iw-jwt-token: <TOKEN>'const options = {method: 'POST', headers: {'x-iw-jwt-token': '<TOKEN>'}};
fetch('https://eure-instanz.iw-erp.de/api/time/volunteer_hour_entry/42/reject', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://eure-instanz.iw-erp.de/api/time/volunteer_hour_entry/42/reject"
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://eure-instanz.iw-erp.de/api/time/volunteer_hour_entry/42/reject', [
'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://eure-instanz.iw-erp.de/api/time/volunteer_hour_entry/42/reject"),
Headers =
{
{ "x-iw-jwt-token", "<TOKEN>" },
},
};
using (var response = await client.SendAsync(request))
{
response.EnsureSuccessStatusCode();
var body = await response.Content.ReadAsStringAsync();
Console.WriteLine(body);
}OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder()
.url("https://eure-instanz.iw-erp.de/api/time/volunteer_hour_entry/42/reject")
.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://eure-instanz.iw-erp.de/api/time/volunteer_hour_entry/42/reject"
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 mit dem Package iw_erp_api
import 'package:iw_erp_api/clients/volunteer_hour_entry_controller.dart';
import 'package:iw_erp_api/logic/iw_api_state.dart';
IwApiState().host = 'eure-instanz.iw-erp.de';
IwApiState().currentJwtApiToken = '<TOKEN>';
final result = await VolunteerHourEntryController.postReject('42');
if (result.success) {
print(result.data);
}{
"approved_by_name": "Beispiel",
"id": 42,
"description": "Text",
"shift_assignment_id": 42,
"settlement_id": 42,
"is_settled": true,
"person": {
"id": 42,
"first_name": "Lena",
"last_name": "Hartmann",
"title": "Beispiel",
"number": 1,
"manual_number": 1,
"number_string": "string",
"gender": "string",
"nickname": "string",
"preferred_color_hex": "string"
},
"work_date": "2026-10-15T09:30:00+02:00",
"duration_minutes": 1,
"status": "string"
}