EmploymentContractChangeRequest
Diese Methode liefert alle EmploymentContractChangeRequest-Objekte. Ohne Leseberechtigung der Personalabteilung erhält eine Führungskraft die Anträge der Verträge, die sie leitet; mit dem Parameter contract muss der Aufrufer diesen Vertrag leiten (oder besitzen).
GET/api/time/employment_contract_change_request
Query-Parameter
idinteger | |
contractstring | |
statusstring | |
startstring | Erster Tag, an dem die neue Verteilung gilt; immer ein Monatsanfang nach der Änderungsfrist. | Benötigt Zugriffsrecht: SCOPE |
requestedByUserstring | |
requestedByPersonstring | |
decidedByUserstring | |
autoAppliedboolean | Wahr, wenn die Bestätigung ohne HR-Entscheidung erfolgte (unveränderte Wochensumme, Installationseinstellung). | Benötigt 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 EmploymentContractChangeRequest-Objekte.array<EmploymentContractChangeRequest>
Felder anzeigen (25)
requested_by_namestringidintegerPrimärschlüssel der Vertragsänderungsanfrage. Interne ID.
contractEmploymentContract3Vertrag, für den die Änderung gilt.
Felder anzeigen (43)
staged_absence_approvalbooleannull übernimmt zuerst die Gruppen- und dann die Organisationsrichtlinie; bestehende Installationen bleiben aus.
idintegerPrimärschlüssel des Arbeitsvertrags. Interne ID.
tokenstringÖffentlicher Token des Vertrags. Anstelle der ID verwendet.
userUser14Benutzer des Mitarbeiters.
week_total_hoursnumber (float)Gesamte Arbeitsstunden pro Woche.
week_total_daysnumber (float)Gesamte Arbeitstage pro Woche.
reserved_hours_preparationnumber (float)L03: wöchentliche Stunden, die für Vorbereitung reserviert sind - Teil der Vertragsstunden, aber nicht planbar im Schichtplan. null = keine.
reserved_hours_follow_upnumber (float)L03: wöchentliche Stunden, die für Nachbereitung reserviert sind - Teil der Vertragsstunden, aber nicht planbar im Schichtplan. null = keine.
reserved_hours_travelnumber (float)L03: wöchentliche Stunden, die für Fahrt reserviert sind - Teil der Vertragsstunden, aber nicht planbar im Schichtplan. null = keine.
reserved_hours_flexiblenumber (float)L03: wöchentliche Stunden, die für freie Einteilung reserviert sind - Teil der Vertragsstunden, aber nicht planbar im Schichtplan. null = keine.
week_full_time_total_daysnumber (float)Gesamte Arbeitstage pro Woche bei einem Vollzeitvertrag.
year_vacation_daysnumber (float)Urlaubstage pro Jahr.
month_vacation_daysnumber (float)Urlaubstage pro Monat.
year_vacation_weeksnumber (float)Urlaubswochen pro Jahr.
monday_hoursnumber (float)Arbeitsstunden am Montag.
tuesday_hoursnumber (float)Arbeitsstunden am Dienstag.
wednesday_hoursnumber (float)Arbeitsstunden am Mittwoch.
thursday_hoursnumber (float)Arbeitsstunden am Donnerstag.
friday_hoursnumber (float)Arbeitsstunden am Freitag.
saturday_hoursnumber (float)Arbeitsstunden am Samstag.
sunday_hoursnumber (float)Arbeitsstunden am Sonntag.
netto_hour_costnumber (float)Nettokosten je Stunde.
brutto_hour_costnumber (float)Bruttokosten pro Stunde.
startstring (date-time)Startdatum des Vertrags.
endstring (date-time)Enddatum des Vertrags.
fixed_term_statusstringBefristung: PERMANENT (unbefristet, Standard), FIXED_TERM oder EXTENDED (FIXED_TERM_STATUS_*).
fixed_term_endstring (date-time)Befristet bis (erster Zeitraum).
fixed_term_extension_endstring (date-time)Befristet bis nach Verlängerung.
probation_endstring (date-time)Probezeit bis; wird aus den probationMonths der Vorlage gefüllt, wenn ein Vertrag ohne diese Angabe angelegt wird.
numberstringVertragsnummer.
descriptionstringBeschreibung des Vertrags.
archivedbooleanDer Vertrag ist archiviert.
allow_app_time_trackingbooleanDer Mitarbeitende darf Zeiten in der App erfassen.
allow_scanner_time_trackingbooleanDer Mitarbeitende darf Zeiten mit dem Scanner erfassen.
allow_app_non_work_time_managementbooleanDer Mitarbeitende darf Abwesenheiten in der App verwalten.
force_no_auto_breakbooleanFür diesen Vertrag werden keine automatischen Pausen hinzugefügt.
work_time_modestringWie die Sollarbeitszeit definiert ist - null verhält sich wie WEEKDAY_HOURS, damit bestehende Verträge ihr bisheriges Verhalten unverändert beibehalten.
holiday_credit_modestringFeiertagsguthaben für WEEK_TOTAL-Verträge - null verhält sich wie WEEKDAY_TARGET (bisheriges Verhalten, nur bei WEEKDAY_HOURS-Verträgen sinnvoll).
holiday_credit_fixed_secondsintegerFester Feiertagsguthaben in Sekunden.
planning_weekdays_bitmaskintegerISO-Wochentagsbitmaske (Mo=1 ... So=64) der Tage, an denen dieser WEEK_TOTAL-Vertrag eingeplant werden bzw. Urlaub nehmen kann - null verhält sich wie Mo-Fr.
request_lead_time_daysintegerTage, die ein Abwesenheitsantrag vor seinem ersten Tag eingereicht werden muss ("Bearbeitungs- frist"). null greift zunächst auf die Vertragsgruppe und von dort auf die Einstellung der Installation zurück, damit ein bestehender Vertrag genau wie bisher funktioniert.
shift_booking_syncbooleanL35: Schichten als Verfügbarkeiten / Termine im Buchungsbereich; null übernimmt die Gruppe (die wiederum die Organisation übernimmt).
search_stringstringText, unter dem die Entität gesucht werden kann.
requested_by_userUser14Benutzer, der die Änderung beantragt hat.
Felder anzeigen (10)
idintegerPrimärschlüssel des Benutzers. Interne ID des Anmeldebenutzers.
namestringAnzeigename des Benutzers. Wird in der Oberfläche und in Protokolleinträgen angezeigt.
usernamestringAnmeldename des Benutzers. Muss über alle Benutzer hinweg eindeutig sein.
emailstringE-Mail-Adresse des Benutzers. Wird für Anmeldebenachrichtigungen, Passwort-Zurücksetzen und als Anmeldealias verwendet.
positioningeneralstringFreitext zur Position oder Rolle des Benutzers.
crm_personCRMPerson10CRM-Person, die mit diesem Anmeldebenutzer verknüpft ist. Verbindet das Anmeldekonto mit dem Personendatensatz.
profile_picture_urlstringURL des Profilbilds des Benutzers.
archivedbooleanMarkiert den Benutzer als archiviert. Archivierte Benutzer bleiben zur Historie erhalten und sind nicht aktiv.
require2fabooleanFür diesen Benutzer ist die Zwei-Faktor-Authentifizierung Pflicht.
search_stringstringText, unter dem die Entität gesucht werden kann.
requested_by_personCRMPerson10Person, die die Änderung angefragt hat.
Felder anzeigen (81)
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.
positionstringPosition oder Rolle der Person.
languagestringBevorzugte Sprache der Person.
special_salutationstringBesonderer Anredetext für Briefe.
form_of_salutationstringForm der Anrede, zum Beispiel förmlich oder informell.
birthdaystring (date-time)Geburtstag der Person.
known_allergiesstringBekannte Allergien der Person.
confirmed_no_allergiesbooleanErziehungsberechtigte(r) bestätigt, dass keine bekannten Allergien vorliegen.
allow_photosbooleanFotos der Person dürfen aufgenommen und veröffentlicht werden.
allow_leaving_alonebooleanDie Person darf die Veranstaltung allein verlassen.
authorized_pickupstringPersonen, die die Person abholen dürfen.
needs_supportbooleanDie Person benötigt Unterstützung, zum Beispiel zur Inklusion.
support_descriptionstringBeschreibung der Unterstützung, die die Person benötigt.
financial_supportbooleanDie Person erhält finanzielle Unterstützung.
financial_support_numberstringNummer der finanziellen Förderung.
municipal_supportbooleanDie Person erhält kommunale Unterstützung.
municipal_support_numberstringNummer der kommunalen Förderung.
grade_levelintegerSchuljahrgang der Person.
school_classstringSchulklasse der Person.
start_timestring (date-time)Beginn der Mitgliedschaft oder Aktivität.
start_time_reasonstringGrund für den Beginn.
end_timestring (date-time)Ende der Mitgliedschaft oder Aktivität.
end_time_reasonstringGrund für das Ende.
confirmed_gtc_timestring (date-time)Zeitpunkt, zu dem die AGB bestätigt wurden.
chatbot_opt_inbooleanEinwilligung in die Nutzung des KI-Assistenten. Denormalisierter aktueller Stand - das prüfbare Protokoll steht in ChatbotConsent.
chatbot_opt_in_atstring (date-time)Zeitpunkt, zu dem die Person dem Chatbot zugestimmt hat.
chatbot_opt_in_text_versionstringVersion des Einwilligungstextes, dem zugestimmt wurde. Weicht sie von der aktuellen Version ab, ist das Opt-in abgelaufen.
app_usage_statistics_opt_outbooleanWiderspruch gegen die anonyme Nutzungsstatistik der Mitglieder-App. Die App liest ihn aus den StaticData und schickt dann nichts mehr; die gezählten Aufrufe selbst haben keinen Bezug zur Person.
crm_person_contact_dataarray<CRMPersonContactData>Kontaktdaten der Person, zum Beispiel Telefon und E-Mail.
archivedbooleanOb die Person archiviert ist.
subscribed_newsletterbooleanOb die Person den Newsletter abonniert hat.
subscribed_magazinebooleanOb die Person das Magazin abonniert hat.
printed_member_cardbooleanOb für die Person ein Mitgliedsausweis gedruckt wurde.
has_login_userbooleanOb die Person einen Anmelde-Benutzer hat.
profile_picture_urlstringURL des Profilbilds der Person.
log_book_staffbooleanLogbuch-Kennzeichen: Personal.
log_book_staff1booleanLogbuch-Kennzeichen: Personal, Stufe 1.
log_book_staff2booleanLogbuch-Kennzeichen: Personal, Stufe 2.
log_book_memberbooleanLogbuch-Kennzeichen: Mitglied.
log_book_trainerbooleanLogbuch-Kennzeichen: Trainer.
log_book_trainer1booleanLogbuch-Kennzeichen: Trainer, Stufe 1.
log_book_trainer2booleanLogbuch-Kennzeichen: Trainer, Stufe 2.
log_book_head_of_departmentbooleanLogbuch-Kennzeichen: Abteilungsleitung.
log_book_supervisory_boardbooleanLogbuch-Kennzeichen: Aufsichtsrat.
log_book_board_of_directorsbooleanLogbuch-Kennzeichen: Vorstand.
log_book_honorary_memberbooleanLogbuch-Kennzeichen: Ehrenmitglied.
log_book_club_card_onebooleanLogbuch-Kennzeichen: Vereinskarte.
log_book_health_recoveredbooleanLogbuch-Kennzeichen: von Krankheit genesen.
log_book_health_vaccinatedbooleanLogbuch-Kennzeichen: geimpft.
log_book_health_vaccinated_additionstringDetails der Impfung.
log_book_good_conductbooleanLogbuch-Kennzeichen: Führungszeugnis.
log_book_first_aidbooleanLogbuch-Kennzeichen: Erste-Hilfe-Schulung.
log_book_measles_vaccinationbooleanLogbuch-Kennzeichen: Masernimpfung.
sync_lanistabooleanOb die Person mit Lanista synchronisiert ist.
categoryCRMPersonCategoryPersonenkategorie.
nicknamestringSpitzname der Person.
preferred_color_hexstringBevorzugte Farbe der Person als Hexwert.
avatar_tokenstringToken des Avatarbildes.
search_stringstringText, unter dem die Entität gesucht werden kann.
addressstringAdresse als Text.
address_streetstringStraße der Adresse.
address_house_numberstringHausnummer der Adresse.
address_street_levelstringStraße und Hausnummer der Adresse.
address_costringCare-of-Zeile der Adresse.
address_citystringOrt der Adresse.
address_zipstringPostleitzahl der Adresse.
address_admin_level1stringErste Verwaltungsebene der Adresse, z. B. das Bundesland.
address_countrystringLändercode der Adresse.
address_full_countrystringVollständiger Name des Landes der Adresse.
address_geo_latstringBreitengrad der Adresse.
address_geo_lngstringLängengrad der Adresse.
address_external_provider_idstringFeld zur Speicherung der externen Anbieter-ID der Adresse, z. B. Google-Maps-PlaceID wie google:ChIJVcKw5r90sEcRhdjNq6NItqE
createdstring (date-time)Zeitpunkt, zu dem der Datensatz angelegt wurde.
- … 2 weitere Felder
startstring (date-time)Erster Tag, an dem die neue Verteilung gilt; immer ein Monatsanfang nach der Änderungsfrist.
monday_hoursnumber (float)Gewünschte Arbeitszeit am Montag.
tuesday_hoursnumber (float)Gewünschte Arbeitszeit am Dienstag.
wednesday_hoursnumber (float)Gewünschte Arbeitszeit am Mittwoch.
thursday_hoursnumber (float)Gewünschte Arbeitszeit am Donnerstag.
friday_hoursnumber (float)Gewünschte Arbeitszeit am Freitag.
saturday_hoursnumber (float)Gewünschte Arbeitszeit am Samstag.
sunday_hoursnumber (float)Gewünschte Arbeitszeit am Sonntag.
week_total_hoursnumber (float)Summe der angefragten Wochentagsstunden, gespeichert für Listen und die Regel zur automatischen Übernahme.
previous_week_total_hoursnumber (float)Wochensumme, die der Vertrag für den angefragten Monat zum Zeitpunkt der Anfrage hatte.
statusstringStatus der Anfrage, zum Beispiel offen, genehmigt oder abgelehnt.
reasonstringWarum der Lead die Änderung beantragt; wird der Personalabteilung angezeigt.
decided_by_userUser14Benutzer, der über den Antrag entschieden hat.
Felder anzeigen (10)
idintegerPrimärschlüssel des Benutzers. Interne ID des Anmeldebenutzers.
namestringAnzeigename des Benutzers. Wird in der Oberfläche und in Protokolleinträgen angezeigt.
usernamestringAnmeldename des Benutzers. Muss über alle Benutzer hinweg eindeutig sein.
emailstringE-Mail-Adresse des Benutzers. Wird für Anmeldebenachrichtigungen, Passwort-Zurücksetzen und als Anmeldealias verwendet.
positioningeneralstringFreitext zur Position oder Rolle des Benutzers.
crm_personCRMPerson10CRM-Person, die mit diesem Anmeldebenutzer verknüpft ist. Verbindet das Anmeldekonto mit dem Personendatensatz.
profile_picture_urlstringURL des Profilbilds des Benutzers.
archivedbooleanMarkiert den Benutzer als archiviert. Archivierte Benutzer bleiben zur Historie erhalten und sind nicht aktiv.
require2fabooleanFür diesen Benutzer ist die Zwei-Faktor-Authentifizierung Pflicht.
search_stringstringText, unter dem die Entität gesucht werden kann.
decided_atstring (date-time)Zeitpunkt, zu dem über den Antrag entschieden wurde.
decision_commentstringKommentar zur Entscheidung.
vacation_days_modestringEntscheidung der Personalabteilung über den Jahresurlaubsanspruch bei der Genehmigung: null lässt den Anspruch unverändert, PROPORTIONAL berechnet ihn aus den neuen Arbeitstagen neu, MANUAL setzt yearVacationDays. Verwendet die Werte EmploymentContractModifier::VACATION_DAYS_MODE_*.
year_vacation_daysnumber (float)Der neue jährliche Urlaubsanspruch, den die Personalabteilung mit vacationDaysMode MANUAL setzt.
auto_appliedbooleanWahr, wenn die Bestätigung ohne HR-Entscheidung erfolgte (unveränderte Wochensumme, Installationseinstellung).
createdstring (date-time)Zeitpunkt, zu dem der Datensatz angelegt wurde.
updatedstring (date-time)Zeitpunkt, zu dem der Datensatz zuletzt aktualisiert wurde.
curl --request GET \
--url https://eure-instanz.iw-erp.de/api/time/employment_contract_change_request \
--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/employment_contract_change_request', 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/employment_contract_change_request"
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/employment_contract_change_request', [
'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/employment_contract_change_request"),
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/employment_contract_change_request")
.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/employment_contract_change_request"
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/employment_contract_change_request_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 EmploymentContractChangeRequestController.getAll();
if (result.success) {
print(result.data);
}[
{
"requested_by_name": "Beispiel",
"id": 42,
"decision_comment": "Text",
"contract": {
"id": 42,
"description": "Text",
"staged_absence_approval": true,
"token": "string",
"week_total_hours": 1.5,
"week_total_days": 1.5,
"reserved_hours_preparation": 1.5,
"reserved_hours_follow_up": 1.5,
"reserved_hours_travel": 1.5,
"reserved_hours_flexible": 1.5
},
"requested_by_user": {
"id": 42,
"name": "Beispiel",
"username": "lena.hartmann@example.org",
"email": "lena.hartmann@example.org",
"profile_picture_url": "https://vynst.de",
"positioningeneral": "string",
"archived": true,
"require2fa": true,
"search_string": "string"
},
"requested_by_person": {
"id": 42,
"first_name": "Lena",
"last_name": "Hartmann",
"title": "Beispiel",
"language": "de",
"support_description": "Text",
"profile_picture_url": "https://vynst.de",
"address_street": "Jakobistr. 39",
"address_city": "Hannover",
"address_zip": "30163"
},
"start": "2026-10-15T09:30:00+02:00",
"monday_hours": 1.5,
"tuesday_hours": 1.5,
"wednesday_hours": 1.5
}
]Änderungsantrag für die wöchentlichen Arbeitstage eines Vertrags einreichen
POST/api/time/employment_contract_change_request
Request-Body application/json
dataEmploymentContractChangeRequest2Felder anzeigen (14)
contractEmploymentContract4Vertrag, für den die Änderung gilt.
startstring (date-time)Erster Tag, an dem die neue Verteilung gilt; immer ein Monatsanfang nach der Änderungsfrist.
monday_hoursnumber (float)Gewünschte Arbeitszeit am Montag.
tuesday_hoursnumber (float)Gewünschte Arbeitszeit am Dienstag.
wednesday_hoursnumber (float)Gewünschte Arbeitszeit am Mittwoch.
thursday_hoursnumber (float)Gewünschte Arbeitszeit am Donnerstag.
friday_hoursnumber (float)Gewünschte Arbeitszeit am Freitag.
saturday_hoursnumber (float)Gewünschte Arbeitszeit am Samstag.
sunday_hoursnumber (float)Gewünschte Arbeitszeit am Sonntag.
statusstringStatus der Anfrage, zum Beispiel offen, genehmigt oder abgelehnt.
reasonstringWarum der Lead die Änderung beantragt; wird der Personalabteilung angezeigt.
decision_commentstringKommentar zur Entscheidung.
vacation_days_modestringEntscheidung der Personalabteilung über den Jahresurlaubsanspruch bei der Genehmigung: null lässt den Anspruch unverändert, PROPORTIONAL berechnet ihn aus den neuen Arbeitstagen neu, MANUAL setzt yearVacationDays. Verwendet die Werte EmploymentContractModifier::VACATION_DAYS_MODE_*.
year_vacation_daysnumber (float)Der neue jährliche Urlaubsanspruch, den die Personalabteilung mit vacationDaysMode MANUAL setzt.
Antworten
200EmploymentContractChangeRequest neu anlegenEmploymentContractChangeRequest3
Felder anzeigen (25)
requested_by_namestringidintegerPrimärschlüssel der Vertragsänderungsanfrage. Interne ID.
contractEmploymentContract5Vertrag, für den die Änderung gilt.
Felder anzeigen (43)
staged_absence_approvalbooleannull übernimmt zuerst die Gruppen- und dann die Organisationsrichtlinie; bestehende Installationen bleiben aus.
idintegerPrimärschlüssel des Arbeitsvertrags. Interne ID.
tokenstringÖffentlicher Token des Vertrags. Anstelle der ID verwendet.
userUser14Benutzer des Mitarbeiters.
week_total_hoursnumber (float)Gesamte Arbeitsstunden pro Woche.
week_total_daysnumber (float)Gesamte Arbeitstage pro Woche.
reserved_hours_preparationnumber (float)L03: wöchentliche Stunden, die für Vorbereitung reserviert sind - Teil der Vertragsstunden, aber nicht planbar im Schichtplan. null = keine.
reserved_hours_follow_upnumber (float)L03: wöchentliche Stunden, die für Nachbereitung reserviert sind - Teil der Vertragsstunden, aber nicht planbar im Schichtplan. null = keine.
reserved_hours_travelnumber (float)L03: wöchentliche Stunden, die für Fahrt reserviert sind - Teil der Vertragsstunden, aber nicht planbar im Schichtplan. null = keine.
reserved_hours_flexiblenumber (float)L03: wöchentliche Stunden, die für freie Einteilung reserviert sind - Teil der Vertragsstunden, aber nicht planbar im Schichtplan. null = keine.
week_full_time_total_daysnumber (float)Gesamte Arbeitstage pro Woche bei einem Vollzeitvertrag.
year_vacation_daysnumber (float)Urlaubstage pro Jahr.
month_vacation_daysnumber (float)Urlaubstage pro Monat.
year_vacation_weeksnumber (float)Urlaubswochen pro Jahr.
monday_hoursnumber (float)Arbeitsstunden am Montag.
tuesday_hoursnumber (float)Arbeitsstunden am Dienstag.
wednesday_hoursnumber (float)Arbeitsstunden am Mittwoch.
thursday_hoursnumber (float)Arbeitsstunden am Donnerstag.
friday_hoursnumber (float)Arbeitsstunden am Freitag.
saturday_hoursnumber (float)Arbeitsstunden am Samstag.
sunday_hoursnumber (float)Arbeitsstunden am Sonntag.
netto_hour_costnumber (float)Nettokosten je Stunde.
brutto_hour_costnumber (float)Bruttokosten pro Stunde.
startstring (date-time)Startdatum des Vertrags.
endstring (date-time)Enddatum des Vertrags.
fixed_term_statusstringBefristung: PERMANENT (unbefristet, Standard), FIXED_TERM oder EXTENDED (FIXED_TERM_STATUS_*).
fixed_term_endstring (date-time)Befristet bis (erster Zeitraum).
fixed_term_extension_endstring (date-time)Befristet bis nach Verlängerung.
probation_endstring (date-time)Probezeit bis; wird aus den probationMonths der Vorlage gefüllt, wenn ein Vertrag ohne diese Angabe angelegt wird.
numberstringVertragsnummer.
descriptionstringBeschreibung des Vertrags.
archivedbooleanDer Vertrag ist archiviert.
allow_app_time_trackingbooleanDer Mitarbeitende darf Zeiten in der App erfassen.
allow_scanner_time_trackingbooleanDer Mitarbeitende darf Zeiten mit dem Scanner erfassen.
allow_app_non_work_time_managementbooleanDer Mitarbeitende darf Abwesenheiten in der App verwalten.
force_no_auto_breakbooleanFür diesen Vertrag werden keine automatischen Pausen hinzugefügt.
work_time_modestringWie die Sollarbeitszeit definiert ist - null verhält sich wie WEEKDAY_HOURS, damit bestehende Verträge ihr bisheriges Verhalten unverändert beibehalten.
holiday_credit_modestringFeiertagsguthaben für WEEK_TOTAL-Verträge - null verhält sich wie WEEKDAY_TARGET (bisheriges Verhalten, nur bei WEEKDAY_HOURS-Verträgen sinnvoll).
holiday_credit_fixed_secondsintegerFester Feiertagsguthaben in Sekunden.
planning_weekdays_bitmaskintegerISO-Wochentagsbitmaske (Mo=1 ... So=64) der Tage, an denen dieser WEEK_TOTAL-Vertrag eingeplant werden bzw. Urlaub nehmen kann - null verhält sich wie Mo-Fr.
request_lead_time_daysintegerTage, die ein Abwesenheitsantrag vor seinem ersten Tag eingereicht werden muss ("Bearbeitungs- frist"). null greift zunächst auf die Vertragsgruppe und von dort auf die Einstellung der Installation zurück, damit ein bestehender Vertrag genau wie bisher funktioniert.
shift_booking_syncbooleanL35: Schichten als Verfügbarkeiten / Termine im Buchungsbereich; null übernimmt die Gruppe (die wiederum die Organisation übernimmt).
search_stringstringText, unter dem die Entität gesucht werden kann.
requested_by_userUser14Benutzer, der die Änderung beantragt hat.
Felder anzeigen (10)
idintegerPrimärschlüssel des Benutzers. Interne ID des Anmeldebenutzers.
namestringAnzeigename des Benutzers. Wird in der Oberfläche und in Protokolleinträgen angezeigt.
usernamestringAnmeldename des Benutzers. Muss über alle Benutzer hinweg eindeutig sein.
emailstringE-Mail-Adresse des Benutzers. Wird für Anmeldebenachrichtigungen, Passwort-Zurücksetzen und als Anmeldealias verwendet.
positioningeneralstringFreitext zur Position oder Rolle des Benutzers.
crm_personCRMPerson10CRM-Person, die mit diesem Anmeldebenutzer verknüpft ist. Verbindet das Anmeldekonto mit dem Personendatensatz.
profile_picture_urlstringURL des Profilbilds des Benutzers.
archivedbooleanMarkiert den Benutzer als archiviert. Archivierte Benutzer bleiben zur Historie erhalten und sind nicht aktiv.
require2fabooleanFür diesen Benutzer ist die Zwei-Faktor-Authentifizierung Pflicht.
search_stringstringText, unter dem die Entität gesucht werden kann.
requested_by_personCRMPerson10Person, die die Änderung angefragt hat.
Felder anzeigen (81)
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.
positionstringPosition oder Rolle der Person.
languagestringBevorzugte Sprache der Person.
special_salutationstringBesonderer Anredetext für Briefe.
form_of_salutationstringForm der Anrede, zum Beispiel förmlich oder informell.
birthdaystring (date-time)Geburtstag der Person.
known_allergiesstringBekannte Allergien der Person.
confirmed_no_allergiesbooleanErziehungsberechtigte(r) bestätigt, dass keine bekannten Allergien vorliegen.
allow_photosbooleanFotos der Person dürfen aufgenommen und veröffentlicht werden.
allow_leaving_alonebooleanDie Person darf die Veranstaltung allein verlassen.
authorized_pickupstringPersonen, die die Person abholen dürfen.
needs_supportbooleanDie Person benötigt Unterstützung, zum Beispiel zur Inklusion.
support_descriptionstringBeschreibung der Unterstützung, die die Person benötigt.
financial_supportbooleanDie Person erhält finanzielle Unterstützung.
financial_support_numberstringNummer der finanziellen Förderung.
municipal_supportbooleanDie Person erhält kommunale Unterstützung.
municipal_support_numberstringNummer der kommunalen Förderung.
grade_levelintegerSchuljahrgang der Person.
school_classstringSchulklasse der Person.
start_timestring (date-time)Beginn der Mitgliedschaft oder Aktivität.
start_time_reasonstringGrund für den Beginn.
end_timestring (date-time)Ende der Mitgliedschaft oder Aktivität.
end_time_reasonstringGrund für das Ende.
confirmed_gtc_timestring (date-time)Zeitpunkt, zu dem die AGB bestätigt wurden.
chatbot_opt_inbooleanEinwilligung in die Nutzung des KI-Assistenten. Denormalisierter aktueller Stand - das prüfbare Protokoll steht in ChatbotConsent.
chatbot_opt_in_atstring (date-time)Zeitpunkt, zu dem die Person dem Chatbot zugestimmt hat.
chatbot_opt_in_text_versionstringVersion des Einwilligungstextes, dem zugestimmt wurde. Weicht sie von der aktuellen Version ab, ist das Opt-in abgelaufen.
app_usage_statistics_opt_outbooleanWiderspruch gegen die anonyme Nutzungsstatistik der Mitglieder-App. Die App liest ihn aus den StaticData und schickt dann nichts mehr; die gezählten Aufrufe selbst haben keinen Bezug zur Person.
crm_person_contact_dataarray<CRMPersonContactData>Kontaktdaten der Person, zum Beispiel Telefon und E-Mail.
archivedbooleanOb die Person archiviert ist.
subscribed_newsletterbooleanOb die Person den Newsletter abonniert hat.
subscribed_magazinebooleanOb die Person das Magazin abonniert hat.
printed_member_cardbooleanOb für die Person ein Mitgliedsausweis gedruckt wurde.
has_login_userbooleanOb die Person einen Anmelde-Benutzer hat.
profile_picture_urlstringURL des Profilbilds der Person.
log_book_staffbooleanLogbuch-Kennzeichen: Personal.
log_book_staff1booleanLogbuch-Kennzeichen: Personal, Stufe 1.
log_book_staff2booleanLogbuch-Kennzeichen: Personal, Stufe 2.
log_book_memberbooleanLogbuch-Kennzeichen: Mitglied.
log_book_trainerbooleanLogbuch-Kennzeichen: Trainer.
log_book_trainer1booleanLogbuch-Kennzeichen: Trainer, Stufe 1.
log_book_trainer2booleanLogbuch-Kennzeichen: Trainer, Stufe 2.
log_book_head_of_departmentbooleanLogbuch-Kennzeichen: Abteilungsleitung.
log_book_supervisory_boardbooleanLogbuch-Kennzeichen: Aufsichtsrat.
log_book_board_of_directorsbooleanLogbuch-Kennzeichen: Vorstand.
log_book_honorary_memberbooleanLogbuch-Kennzeichen: Ehrenmitglied.
log_book_club_card_onebooleanLogbuch-Kennzeichen: Vereinskarte.
log_book_health_recoveredbooleanLogbuch-Kennzeichen: von Krankheit genesen.
log_book_health_vaccinatedbooleanLogbuch-Kennzeichen: geimpft.
log_book_health_vaccinated_additionstringDetails der Impfung.
log_book_good_conductbooleanLogbuch-Kennzeichen: Führungszeugnis.
log_book_first_aidbooleanLogbuch-Kennzeichen: Erste-Hilfe-Schulung.
log_book_measles_vaccinationbooleanLogbuch-Kennzeichen: Masernimpfung.
sync_lanistabooleanOb die Person mit Lanista synchronisiert ist.
categoryCRMPersonCategoryPersonenkategorie.
nicknamestringSpitzname der Person.
preferred_color_hexstringBevorzugte Farbe der Person als Hexwert.
avatar_tokenstringToken des Avatarbildes.
search_stringstringText, unter dem die Entität gesucht werden kann.
addressstringAdresse als Text.
address_streetstringStraße der Adresse.
address_house_numberstringHausnummer der Adresse.
address_street_levelstringStraße und Hausnummer der Adresse.
address_costringCare-of-Zeile der Adresse.
address_citystringOrt der Adresse.
address_zipstringPostleitzahl der Adresse.
address_admin_level1stringErste Verwaltungsebene der Adresse, z. B. das Bundesland.
address_countrystringLändercode der Adresse.
address_full_countrystringVollständiger Name des Landes der Adresse.
address_geo_latstringBreitengrad der Adresse.
address_geo_lngstringLängengrad der Adresse.
address_external_provider_idstringFeld zur Speicherung der externen Anbieter-ID der Adresse, z. B. Google-Maps-PlaceID wie google:ChIJVcKw5r90sEcRhdjNq6NItqE
createdstring (date-time)Zeitpunkt, zu dem der Datensatz angelegt wurde.
- … 2 weitere Felder
startstring (date-time)Erster Tag, an dem die neue Verteilung gilt; immer ein Monatsanfang nach der Änderungsfrist.
monday_hoursnumber (float)Gewünschte Arbeitszeit am Montag.
tuesday_hoursnumber (float)Gewünschte Arbeitszeit am Dienstag.
wednesday_hoursnumber (float)Gewünschte Arbeitszeit am Mittwoch.
thursday_hoursnumber (float)Gewünschte Arbeitszeit am Donnerstag.
friday_hoursnumber (float)Gewünschte Arbeitszeit am Freitag.
saturday_hoursnumber (float)Gewünschte Arbeitszeit am Samstag.
sunday_hoursnumber (float)Gewünschte Arbeitszeit am Sonntag.
week_total_hoursnumber (float)Summe der angefragten Wochentagsstunden, gespeichert für Listen und die Regel zur automatischen Übernahme.
previous_week_total_hoursnumber (float)Wochensumme, die der Vertrag für den angefragten Monat zum Zeitpunkt der Anfrage hatte.
statusstringStatus der Anfrage, zum Beispiel offen, genehmigt oder abgelehnt.
reasonstringWarum der Lead die Änderung beantragt; wird der Personalabteilung angezeigt.
decided_by_userUser14Benutzer, der über den Antrag entschieden hat.
Felder anzeigen (10)
idintegerPrimärschlüssel des Benutzers. Interne ID des Anmeldebenutzers.
namestringAnzeigename des Benutzers. Wird in der Oberfläche und in Protokolleinträgen angezeigt.
usernamestringAnmeldename des Benutzers. Muss über alle Benutzer hinweg eindeutig sein.
emailstringE-Mail-Adresse des Benutzers. Wird für Anmeldebenachrichtigungen, Passwort-Zurücksetzen und als Anmeldealias verwendet.
positioningeneralstringFreitext zur Position oder Rolle des Benutzers.
crm_personCRMPerson10CRM-Person, die mit diesem Anmeldebenutzer verknüpft ist. Verbindet das Anmeldekonto mit dem Personendatensatz.
profile_picture_urlstringURL des Profilbilds des Benutzers.
archivedbooleanMarkiert den Benutzer als archiviert. Archivierte Benutzer bleiben zur Historie erhalten und sind nicht aktiv.
require2fabooleanFür diesen Benutzer ist die Zwei-Faktor-Authentifizierung Pflicht.
search_stringstringText, unter dem die Entität gesucht werden kann.
decided_atstring (date-time)Zeitpunkt, zu dem über den Antrag entschieden wurde.
decision_commentstringKommentar zur Entscheidung.
vacation_days_modestringEntscheidung der Personalabteilung über den Jahresurlaubsanspruch bei der Genehmigung: null lässt den Anspruch unverändert, PROPORTIONAL berechnet ihn aus den neuen Arbeitstagen neu, MANUAL setzt yearVacationDays. Verwendet die Werte EmploymentContractModifier::VACATION_DAYS_MODE_*.
year_vacation_daysnumber (float)Der neue jährliche Urlaubsanspruch, den die Personalabteilung mit vacationDaysMode MANUAL setzt.
auto_appliedbooleanWahr, wenn die Bestätigung ohne HR-Entscheidung erfolgte (unveränderte Wochensumme, Installationseinstellung).
createdstring (date-time)Zeitpunkt, zu dem der Datensatz angelegt wurde.
updatedstring (date-time)Zeitpunkt, zu dem der Datensatz zuletzt aktualisiert wurde.
curl --request POST \
--url https://eure-instanz.iw-erp.de/api/time/employment_contract_change_request \
--header 'content-type: application/json' \
--header 'x-iw-jwt-token: <TOKEN>' \
--data '
{
"data": {
"decision_comment": "Text",
"start": "2026-10-15T09:30:00+02:00",
"monday_hours": 1.5,
"tuesday_hours": 1.5,
"wednesday_hours": 1.5,
"thursday_hours": 1.5
}
}
'const options = {
method: 'POST',
headers: {'x-iw-jwt-token': '<TOKEN>', 'content-type': 'application/json'},
body: JSON.stringify({
data: {
decision_comment: 'Text',
start: '2026-10-15T09:30:00+02:00',
monday_hours: 1.5,
tuesday_hours: 1.5,
wednesday_hours: 1.5,
thursday_hours: 1.5
}
})
};
fetch('https://eure-instanz.iw-erp.de/api/time/employment_contract_change_request', 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/employment_contract_change_request"
payload = { "data": {
"decision_comment": "Text",
"start": "2026-10-15T09:30:00+02:00",
"monday_hours": 1.5,
"tuesday_hours": 1.5,
"wednesday_hours": 1.5,
"thursday_hours": 1.5
} }
headers = {
"x-iw-jwt-token": "<TOKEN>",
"content-type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)<?php
require_once('vendor/autoload.php');
$client = new \GuzzleHttp\Client();
$response = $client->request('POST', 'https://eure-instanz.iw-erp.de/api/time/employment_contract_change_request', [
'body' => '{"data":{"decision_comment":"Text","start":"2026-10-15T09:30:00+02:00","monday_hours":1.5,"tuesday_hours":1.5,"wednesday_hours":1.5,"thursday_hours":1.5}}',
'headers' => [
'content-type' => 'application/json',
'x-iw-jwt-token' => '<TOKEN>',
],
]);
echo $response->getBody();using System.Net.Http.Headers;
var client = new HttpClient();
var request = new HttpRequestMessage
{
Method = HttpMethod.Post,
RequestUri = new Uri("https://eure-instanz.iw-erp.de/api/time/employment_contract_change_request"),
Headers =
{
{ "x-iw-jwt-token", "<TOKEN>" },
},
Content = new StringContent("{\"data\":{\"decision_comment\":\"Text\",\"start\":\"2026-10-15T09:30:00+02:00\",\"monday_hours\":1.5,\"tuesday_hours\":1.5,\"wednesday_hours\":1.5,\"thursday_hours\":1.5}}")
{
Headers =
{
ContentType = new MediaTypeHeaderValue("application/json")
}
}
};
using (var response = await client.SendAsync(request))
{
response.EnsureSuccessStatusCode();
var body = await response.Content.ReadAsStringAsync();
Console.WriteLine(body);
}OkHttpClient client = new OkHttpClient();
MediaType mediaType = MediaType.parse("application/json");
RequestBody body = RequestBody.create(mediaType, "{\"data\":{\"decision_comment\":\"Text\",\"start\":\"2026-10-15T09:30:00+02:00\",\"monday_hours\":1.5,\"tuesday_hours\":1.5,\"wednesday_hours\":1.5,\"thursday_hours\":1.5}}");
Request request = new Request.Builder()
.url("https://eure-instanz.iw-erp.de/api/time/employment_contract_change_request")
.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/employment_contract_change_request"
payload := strings.NewReader("{\"data\":{\"decision_comment\":\"Text\",\"start\":\"2026-10-15T09:30:00+02:00\",\"monday_hours\":1.5,\"tuesday_hours\":1.5,\"wednesday_hours\":1.5,\"thursday_hours\":1.5}}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("x-iw-jwt-token", "<TOKEN>")
req.Header.Add("content-type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}Dart mit dem Package iw_erp_api
import 'package:iw_erp_api/clients/employment_contract_change_request_controller.dart';
import 'package:iw_erp_api/logic/iw_api_state.dart';
import 'package:iw_erp_api/model/employment_contract_change_request.dart';
IwApiState().host = 'eure-instanz.iw-erp.de';
IwApiState().currentJwtApiToken = '<TOKEN>';
final result = await EmploymentContractChangeRequestController.post(EmploymentContractChangeRequest.fromJson({
"decision_comment": "Text",
"start": "2026-10-15T09:30:00+02:00",
"monday_hours": 1.5,
"tuesday_hours": 1.5,
"wednesday_hours": 1.5,
"thursday_hours": 1.5
}));
if (result.success) {
print(result.data);
}{
"requested_by_name": "Beispiel",
"id": 42,
"decision_comment": "Text",
"contract": {
"id": 42,
"description": "Text",
"staged_absence_approval": true,
"token": "string",
"user": {
"id": 42,
"name": "Beispiel",
"username": "lena.hartmann@example.org",
"email": "lena.hartmann@example.org",
"profile_picture_url": "https://vynst.de",
"positioningeneral": "string",
"archived": true,
"require2fa": true,
"search_string": "string"
},
"week_total_hours": 1.5,
"week_total_days": 1.5,
"reserved_hours_preparation": 1.5,
"reserved_hours_follow_up": 1.5,
"reserved_hours_travel": 1.5
},
"requested_by_user": {
"id": 42,
"name": "Beispiel",
"username": "lena.hartmann@example.org",
"email": "lena.hartmann@example.org",
"profile_picture_url": "https://vynst.de",
"positioningeneral": "string",
"crm_person": {
"id": 42,
"first_name": "Lena",
"last_name": "Hartmann",
"title": "Beispiel",
"language": "de",
"support_description": "Text",
"profile_picture_url": "https://vynst.de",
"address_street": "Jakobistr. 39",
"address_city": "Hannover",
"address_zip": "30163"
},
"archived": true,
"require2fa": true,
"search_string": "string"
},
"requested_by_person": {
"id": 42,
"first_name": "Lena",
"last_name": "Hartmann",
"title": "Beispiel",
"language": "de",
"support_description": "Text",
"profile_picture_url": "https://vynst.de",
"address_street": "Jakobistr. 39",
"address_city": "Hannover",
"address_zip": "30163"
},
"start": "2026-10-15T09:30:00+02:00",
"monday_hours": 1.5,
"tuesday_hours": 1.5,
"wednesday_hours": 1.5
}Diese Methode liefert einen einzelnen EmploymentContractChangeRequest mit der angegebenen ID
GET/api/time/employment_contract_change_request/{id}
Pfad-Parameter
idPflichtstring |
Antworten
200Liefert ein einzelnes EmploymentContractChangeRequest-Objekt.EmploymentContractChangeRequest3
Felder anzeigen (25)
requested_by_namestringidintegerPrimärschlüssel der Vertragsänderungsanfrage. Interne ID.
contractEmploymentContract5Vertrag, für den die Änderung gilt.
Felder anzeigen (43)
staged_absence_approvalbooleannull übernimmt zuerst die Gruppen- und dann die Organisationsrichtlinie; bestehende Installationen bleiben aus.
idintegerPrimärschlüssel des Arbeitsvertrags. Interne ID.
tokenstringÖffentlicher Token des Vertrags. Anstelle der ID verwendet.
userUser14Benutzer des Mitarbeiters.
week_total_hoursnumber (float)Gesamte Arbeitsstunden pro Woche.
week_total_daysnumber (float)Gesamte Arbeitstage pro Woche.
reserved_hours_preparationnumber (float)L03: wöchentliche Stunden, die für Vorbereitung reserviert sind - Teil der Vertragsstunden, aber nicht planbar im Schichtplan. null = keine.
reserved_hours_follow_upnumber (float)L03: wöchentliche Stunden, die für Nachbereitung reserviert sind - Teil der Vertragsstunden, aber nicht planbar im Schichtplan. null = keine.
reserved_hours_travelnumber (float)L03: wöchentliche Stunden, die für Fahrt reserviert sind - Teil der Vertragsstunden, aber nicht planbar im Schichtplan. null = keine.
reserved_hours_flexiblenumber (float)L03: wöchentliche Stunden, die für freie Einteilung reserviert sind - Teil der Vertragsstunden, aber nicht planbar im Schichtplan. null = keine.
week_full_time_total_daysnumber (float)Gesamte Arbeitstage pro Woche bei einem Vollzeitvertrag.
year_vacation_daysnumber (float)Urlaubstage pro Jahr.
month_vacation_daysnumber (float)Urlaubstage pro Monat.
year_vacation_weeksnumber (float)Urlaubswochen pro Jahr.
monday_hoursnumber (float)Arbeitsstunden am Montag.
tuesday_hoursnumber (float)Arbeitsstunden am Dienstag.
wednesday_hoursnumber (float)Arbeitsstunden am Mittwoch.
thursday_hoursnumber (float)Arbeitsstunden am Donnerstag.
friday_hoursnumber (float)Arbeitsstunden am Freitag.
saturday_hoursnumber (float)Arbeitsstunden am Samstag.
sunday_hoursnumber (float)Arbeitsstunden am Sonntag.
netto_hour_costnumber (float)Nettokosten je Stunde.
brutto_hour_costnumber (float)Bruttokosten pro Stunde.
startstring (date-time)Startdatum des Vertrags.
endstring (date-time)Enddatum des Vertrags.
fixed_term_statusstringBefristung: PERMANENT (unbefristet, Standard), FIXED_TERM oder EXTENDED (FIXED_TERM_STATUS_*).
fixed_term_endstring (date-time)Befristet bis (erster Zeitraum).
fixed_term_extension_endstring (date-time)Befristet bis nach Verlängerung.
probation_endstring (date-time)Probezeit bis; wird aus den probationMonths der Vorlage gefüllt, wenn ein Vertrag ohne diese Angabe angelegt wird.
numberstringVertragsnummer.
descriptionstringBeschreibung des Vertrags.
archivedbooleanDer Vertrag ist archiviert.
allow_app_time_trackingbooleanDer Mitarbeitende darf Zeiten in der App erfassen.
allow_scanner_time_trackingbooleanDer Mitarbeitende darf Zeiten mit dem Scanner erfassen.
allow_app_non_work_time_managementbooleanDer Mitarbeitende darf Abwesenheiten in der App verwalten.
force_no_auto_breakbooleanFür diesen Vertrag werden keine automatischen Pausen hinzugefügt.
work_time_modestringWie die Sollarbeitszeit definiert ist - null verhält sich wie WEEKDAY_HOURS, damit bestehende Verträge ihr bisheriges Verhalten unverändert beibehalten.
holiday_credit_modestringFeiertagsguthaben für WEEK_TOTAL-Verträge - null verhält sich wie WEEKDAY_TARGET (bisheriges Verhalten, nur bei WEEKDAY_HOURS-Verträgen sinnvoll).
holiday_credit_fixed_secondsintegerFester Feiertagsguthaben in Sekunden.
planning_weekdays_bitmaskintegerISO-Wochentagsbitmaske (Mo=1 ... So=64) der Tage, an denen dieser WEEK_TOTAL-Vertrag eingeplant werden bzw. Urlaub nehmen kann - null verhält sich wie Mo-Fr.
request_lead_time_daysintegerTage, die ein Abwesenheitsantrag vor seinem ersten Tag eingereicht werden muss ("Bearbeitungs- frist"). null greift zunächst auf die Vertragsgruppe und von dort auf die Einstellung der Installation zurück, damit ein bestehender Vertrag genau wie bisher funktioniert.
shift_booking_syncbooleanL35: Schichten als Verfügbarkeiten / Termine im Buchungsbereich; null übernimmt die Gruppe (die wiederum die Organisation übernimmt).
search_stringstringText, unter dem die Entität gesucht werden kann.
requested_by_userUser14Benutzer, der die Änderung beantragt hat.
Felder anzeigen (10)
idintegerPrimärschlüssel des Benutzers. Interne ID des Anmeldebenutzers.
namestringAnzeigename des Benutzers. Wird in der Oberfläche und in Protokolleinträgen angezeigt.
usernamestringAnmeldename des Benutzers. Muss über alle Benutzer hinweg eindeutig sein.
emailstringE-Mail-Adresse des Benutzers. Wird für Anmeldebenachrichtigungen, Passwort-Zurücksetzen und als Anmeldealias verwendet.
positioningeneralstringFreitext zur Position oder Rolle des Benutzers.
crm_personCRMPerson10CRM-Person, die mit diesem Anmeldebenutzer verknüpft ist. Verbindet das Anmeldekonto mit dem Personendatensatz.
profile_picture_urlstringURL des Profilbilds des Benutzers.
archivedbooleanMarkiert den Benutzer als archiviert. Archivierte Benutzer bleiben zur Historie erhalten und sind nicht aktiv.
require2fabooleanFür diesen Benutzer ist die Zwei-Faktor-Authentifizierung Pflicht.
search_stringstringText, unter dem die Entität gesucht werden kann.
requested_by_personCRMPerson10Person, die die Änderung angefragt hat.
Felder anzeigen (81)
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.
positionstringPosition oder Rolle der Person.
languagestringBevorzugte Sprache der Person.
special_salutationstringBesonderer Anredetext für Briefe.
form_of_salutationstringForm der Anrede, zum Beispiel förmlich oder informell.
birthdaystring (date-time)Geburtstag der Person.
known_allergiesstringBekannte Allergien der Person.
confirmed_no_allergiesbooleanErziehungsberechtigte(r) bestätigt, dass keine bekannten Allergien vorliegen.
allow_photosbooleanFotos der Person dürfen aufgenommen und veröffentlicht werden.
allow_leaving_alonebooleanDie Person darf die Veranstaltung allein verlassen.
authorized_pickupstringPersonen, die die Person abholen dürfen.
needs_supportbooleanDie Person benötigt Unterstützung, zum Beispiel zur Inklusion.
support_descriptionstringBeschreibung der Unterstützung, die die Person benötigt.
financial_supportbooleanDie Person erhält finanzielle Unterstützung.
financial_support_numberstringNummer der finanziellen Förderung.
municipal_supportbooleanDie Person erhält kommunale Unterstützung.
municipal_support_numberstringNummer der kommunalen Förderung.
grade_levelintegerSchuljahrgang der Person.
school_classstringSchulklasse der Person.
start_timestring (date-time)Beginn der Mitgliedschaft oder Aktivität.
start_time_reasonstringGrund für den Beginn.
end_timestring (date-time)Ende der Mitgliedschaft oder Aktivität.
end_time_reasonstringGrund für das Ende.
confirmed_gtc_timestring (date-time)Zeitpunkt, zu dem die AGB bestätigt wurden.
chatbot_opt_inbooleanEinwilligung in die Nutzung des KI-Assistenten. Denormalisierter aktueller Stand - das prüfbare Protokoll steht in ChatbotConsent.
chatbot_opt_in_atstring (date-time)Zeitpunkt, zu dem die Person dem Chatbot zugestimmt hat.
chatbot_opt_in_text_versionstringVersion des Einwilligungstextes, dem zugestimmt wurde. Weicht sie von der aktuellen Version ab, ist das Opt-in abgelaufen.
app_usage_statistics_opt_outbooleanWiderspruch gegen die anonyme Nutzungsstatistik der Mitglieder-App. Die App liest ihn aus den StaticData und schickt dann nichts mehr; die gezählten Aufrufe selbst haben keinen Bezug zur Person.
crm_person_contact_dataarray<CRMPersonContactData>Kontaktdaten der Person, zum Beispiel Telefon und E-Mail.
archivedbooleanOb die Person archiviert ist.
subscribed_newsletterbooleanOb die Person den Newsletter abonniert hat.
subscribed_magazinebooleanOb die Person das Magazin abonniert hat.
printed_member_cardbooleanOb für die Person ein Mitgliedsausweis gedruckt wurde.
has_login_userbooleanOb die Person einen Anmelde-Benutzer hat.
profile_picture_urlstringURL des Profilbilds der Person.
log_book_staffbooleanLogbuch-Kennzeichen: Personal.
log_book_staff1booleanLogbuch-Kennzeichen: Personal, Stufe 1.
log_book_staff2booleanLogbuch-Kennzeichen: Personal, Stufe 2.
log_book_memberbooleanLogbuch-Kennzeichen: Mitglied.
log_book_trainerbooleanLogbuch-Kennzeichen: Trainer.
log_book_trainer1booleanLogbuch-Kennzeichen: Trainer, Stufe 1.
log_book_trainer2booleanLogbuch-Kennzeichen: Trainer, Stufe 2.
log_book_head_of_departmentbooleanLogbuch-Kennzeichen: Abteilungsleitung.
log_book_supervisory_boardbooleanLogbuch-Kennzeichen: Aufsichtsrat.
log_book_board_of_directorsbooleanLogbuch-Kennzeichen: Vorstand.
log_book_honorary_memberbooleanLogbuch-Kennzeichen: Ehrenmitglied.
log_book_club_card_onebooleanLogbuch-Kennzeichen: Vereinskarte.
log_book_health_recoveredbooleanLogbuch-Kennzeichen: von Krankheit genesen.
log_book_health_vaccinatedbooleanLogbuch-Kennzeichen: geimpft.
log_book_health_vaccinated_additionstringDetails der Impfung.
log_book_good_conductbooleanLogbuch-Kennzeichen: Führungszeugnis.
log_book_first_aidbooleanLogbuch-Kennzeichen: Erste-Hilfe-Schulung.
log_book_measles_vaccinationbooleanLogbuch-Kennzeichen: Masernimpfung.
sync_lanistabooleanOb die Person mit Lanista synchronisiert ist.
categoryCRMPersonCategoryPersonenkategorie.
nicknamestringSpitzname der Person.
preferred_color_hexstringBevorzugte Farbe der Person als Hexwert.
avatar_tokenstringToken des Avatarbildes.
search_stringstringText, unter dem die Entität gesucht werden kann.
addressstringAdresse als Text.
address_streetstringStraße der Adresse.
address_house_numberstringHausnummer der Adresse.
address_street_levelstringStraße und Hausnummer der Adresse.
address_costringCare-of-Zeile der Adresse.
address_citystringOrt der Adresse.
address_zipstringPostleitzahl der Adresse.
address_admin_level1stringErste Verwaltungsebene der Adresse, z. B. das Bundesland.
address_countrystringLändercode der Adresse.
address_full_countrystringVollständiger Name des Landes der Adresse.
address_geo_latstringBreitengrad der Adresse.
address_geo_lngstringLängengrad der Adresse.
address_external_provider_idstringFeld zur Speicherung der externen Anbieter-ID der Adresse, z. B. Google-Maps-PlaceID wie google:ChIJVcKw5r90sEcRhdjNq6NItqE
createdstring (date-time)Zeitpunkt, zu dem der Datensatz angelegt wurde.
- … 2 weitere Felder
startstring (date-time)Erster Tag, an dem die neue Verteilung gilt; immer ein Monatsanfang nach der Änderungsfrist.
monday_hoursnumber (float)Gewünschte Arbeitszeit am Montag.
tuesday_hoursnumber (float)Gewünschte Arbeitszeit am Dienstag.
wednesday_hoursnumber (float)Gewünschte Arbeitszeit am Mittwoch.
thursday_hoursnumber (float)Gewünschte Arbeitszeit am Donnerstag.
friday_hoursnumber (float)Gewünschte Arbeitszeit am Freitag.
saturday_hoursnumber (float)Gewünschte Arbeitszeit am Samstag.
sunday_hoursnumber (float)Gewünschte Arbeitszeit am Sonntag.
week_total_hoursnumber (float)Summe der angefragten Wochentagsstunden, gespeichert für Listen und die Regel zur automatischen Übernahme.
previous_week_total_hoursnumber (float)Wochensumme, die der Vertrag für den angefragten Monat zum Zeitpunkt der Anfrage hatte.
statusstringStatus der Anfrage, zum Beispiel offen, genehmigt oder abgelehnt.
reasonstringWarum der Lead die Änderung beantragt; wird der Personalabteilung angezeigt.
decided_by_userUser14Benutzer, der über den Antrag entschieden hat.
Felder anzeigen (10)
idintegerPrimärschlüssel des Benutzers. Interne ID des Anmeldebenutzers.
namestringAnzeigename des Benutzers. Wird in der Oberfläche und in Protokolleinträgen angezeigt.
usernamestringAnmeldename des Benutzers. Muss über alle Benutzer hinweg eindeutig sein.
emailstringE-Mail-Adresse des Benutzers. Wird für Anmeldebenachrichtigungen, Passwort-Zurücksetzen und als Anmeldealias verwendet.
positioningeneralstringFreitext zur Position oder Rolle des Benutzers.
crm_personCRMPerson10CRM-Person, die mit diesem Anmeldebenutzer verknüpft ist. Verbindet das Anmeldekonto mit dem Personendatensatz.
profile_picture_urlstringURL des Profilbilds des Benutzers.
archivedbooleanMarkiert den Benutzer als archiviert. Archivierte Benutzer bleiben zur Historie erhalten und sind nicht aktiv.
require2fabooleanFür diesen Benutzer ist die Zwei-Faktor-Authentifizierung Pflicht.
search_stringstringText, unter dem die Entität gesucht werden kann.
decided_atstring (date-time)Zeitpunkt, zu dem über den Antrag entschieden wurde.
decision_commentstringKommentar zur Entscheidung.
vacation_days_modestringEntscheidung der Personalabteilung über den Jahresurlaubsanspruch bei der Genehmigung: null lässt den Anspruch unverändert, PROPORTIONAL berechnet ihn aus den neuen Arbeitstagen neu, MANUAL setzt yearVacationDays. Verwendet die Werte EmploymentContractModifier::VACATION_DAYS_MODE_*.
year_vacation_daysnumber (float)Der neue jährliche Urlaubsanspruch, den die Personalabteilung mit vacationDaysMode MANUAL setzt.
auto_appliedbooleanWahr, wenn die Bestätigung ohne HR-Entscheidung erfolgte (unveränderte Wochensumme, Installationseinstellung).
createdstring (date-time)Zeitpunkt, zu dem der Datensatz angelegt wurde.
updatedstring (date-time)Zeitpunkt, zu dem der Datensatz zuletzt aktualisiert wurde.
curl --request GET \
--url https://eure-instanz.iw-erp.de/api/time/employment_contract_change_request/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/employment_contract_change_request/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/employment_contract_change_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://eure-instanz.iw-erp.de/api/time/employment_contract_change_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://eure-instanz.iw-erp.de/api/time/employment_contract_change_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://eure-instanz.iw-erp.de/api/time/employment_contract_change_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://eure-instanz.iw-erp.de/api/time/employment_contract_change_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 mit dem Package iw_erp_api
import 'package:iw_erp_api/clients/employment_contract_change_request_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 EmploymentContractChangeRequestController.get('42');
if (result.success) {
print(result.data);
}{
"requested_by_name": "Beispiel",
"id": 42,
"decision_comment": "Text",
"contract": {
"id": 42,
"description": "Text",
"staged_absence_approval": true,
"token": "string",
"user": {
"id": 42,
"name": "Beispiel",
"username": "lena.hartmann@example.org",
"email": "lena.hartmann@example.org",
"profile_picture_url": "https://vynst.de",
"positioningeneral": "string",
"archived": true,
"require2fa": true,
"search_string": "string"
},
"week_total_hours": 1.5,
"week_total_days": 1.5,
"reserved_hours_preparation": 1.5,
"reserved_hours_follow_up": 1.5,
"reserved_hours_travel": 1.5
},
"requested_by_user": {
"id": 42,
"name": "Beispiel",
"username": "lena.hartmann@example.org",
"email": "lena.hartmann@example.org",
"profile_picture_url": "https://vynst.de",
"positioningeneral": "string",
"crm_person": {
"id": 42,
"first_name": "Lena",
"last_name": "Hartmann",
"title": "Beispiel",
"language": "de",
"support_description": "Text",
"profile_picture_url": "https://vynst.de",
"address_street": "Jakobistr. 39",
"address_city": "Hannover",
"address_zip": "30163"
},
"archived": true,
"require2fa": true,
"search_string": "string"
},
"requested_by_person": {
"id": 42,
"first_name": "Lena",
"last_name": "Hartmann",
"title": "Beispiel",
"language": "de",
"support_description": "Text",
"profile_picture_url": "https://vynst.de",
"address_street": "Jakobistr. 39",
"address_city": "Hannover",
"address_zip": "30163"
},
"start": "2026-10-15T09:30:00+02:00",
"monday_hours": 1.5,
"tuesday_hours": 1.5,
"wednesday_hours": 1.5
}Änderungsantrag (HR) entscheiden: Status APPROVED übernimmt ihn als datierte Vertragsänderung, DECLINED schließt ihn ab
PUT/api/time/employment_contract_change_request/{id}
Pfad-Parameter
idPflichtstring |
Request-Body application/json
dataEmploymentContractChangeRequest2Felder anzeigen (14)
contractEmploymentContract4Vertrag, für den die Änderung gilt.
startstring (date-time)Erster Tag, an dem die neue Verteilung gilt; immer ein Monatsanfang nach der Änderungsfrist.
monday_hoursnumber (float)Gewünschte Arbeitszeit am Montag.
tuesday_hoursnumber (float)Gewünschte Arbeitszeit am Dienstag.
wednesday_hoursnumber (float)Gewünschte Arbeitszeit am Mittwoch.
thursday_hoursnumber (float)Gewünschte Arbeitszeit am Donnerstag.
friday_hoursnumber (float)Gewünschte Arbeitszeit am Freitag.
saturday_hoursnumber (float)Gewünschte Arbeitszeit am Samstag.
sunday_hoursnumber (float)Gewünschte Arbeitszeit am Sonntag.
statusstringStatus der Anfrage, zum Beispiel offen, genehmigt oder abgelehnt.
reasonstringWarum der Lead die Änderung beantragt; wird der Personalabteilung angezeigt.
decision_commentstringKommentar zur Entscheidung.
vacation_days_modestringEntscheidung der Personalabteilung über den Jahresurlaubsanspruch bei der Genehmigung: null lässt den Anspruch unverändert, PROPORTIONAL berechnet ihn aus den neuen Arbeitstagen neu, MANUAL setzt yearVacationDays. Verwendet die Werte EmploymentContractModifier::VACATION_DAYS_MODE_*.
year_vacation_daysnumber (float)Der neue jährliche Urlaubsanspruch, den die Personalabteilung mit vacationDaysMode MANUAL setzt.
Antworten
200EmploymentContractChangeRequest entscheidenEmploymentContractChangeRequest3
Felder anzeigen (25)
requested_by_namestringidintegerPrimärschlüssel der Vertragsänderungsanfrage. Interne ID.
contractEmploymentContract5Vertrag, für den die Änderung gilt.
Felder anzeigen (43)
staged_absence_approvalbooleannull übernimmt zuerst die Gruppen- und dann die Organisationsrichtlinie; bestehende Installationen bleiben aus.
idintegerPrimärschlüssel des Arbeitsvertrags. Interne ID.
tokenstringÖffentlicher Token des Vertrags. Anstelle der ID verwendet.
userUser14Benutzer des Mitarbeiters.
week_total_hoursnumber (float)Gesamte Arbeitsstunden pro Woche.
week_total_daysnumber (float)Gesamte Arbeitstage pro Woche.
reserved_hours_preparationnumber (float)L03: wöchentliche Stunden, die für Vorbereitung reserviert sind - Teil der Vertragsstunden, aber nicht planbar im Schichtplan. null = keine.
reserved_hours_follow_upnumber (float)L03: wöchentliche Stunden, die für Nachbereitung reserviert sind - Teil der Vertragsstunden, aber nicht planbar im Schichtplan. null = keine.
reserved_hours_travelnumber (float)L03: wöchentliche Stunden, die für Fahrt reserviert sind - Teil der Vertragsstunden, aber nicht planbar im Schichtplan. null = keine.
reserved_hours_flexiblenumber (float)L03: wöchentliche Stunden, die für freie Einteilung reserviert sind - Teil der Vertragsstunden, aber nicht planbar im Schichtplan. null = keine.
week_full_time_total_daysnumber (float)Gesamte Arbeitstage pro Woche bei einem Vollzeitvertrag.
year_vacation_daysnumber (float)Urlaubstage pro Jahr.
month_vacation_daysnumber (float)Urlaubstage pro Monat.
year_vacation_weeksnumber (float)Urlaubswochen pro Jahr.
monday_hoursnumber (float)Arbeitsstunden am Montag.
tuesday_hoursnumber (float)Arbeitsstunden am Dienstag.
wednesday_hoursnumber (float)Arbeitsstunden am Mittwoch.
thursday_hoursnumber (float)Arbeitsstunden am Donnerstag.
friday_hoursnumber (float)Arbeitsstunden am Freitag.
saturday_hoursnumber (float)Arbeitsstunden am Samstag.
sunday_hoursnumber (float)Arbeitsstunden am Sonntag.
netto_hour_costnumber (float)Nettokosten je Stunde.
brutto_hour_costnumber (float)Bruttokosten pro Stunde.
startstring (date-time)Startdatum des Vertrags.
endstring (date-time)Enddatum des Vertrags.
fixed_term_statusstringBefristung: PERMANENT (unbefristet, Standard), FIXED_TERM oder EXTENDED (FIXED_TERM_STATUS_*).
fixed_term_endstring (date-time)Befristet bis (erster Zeitraum).
fixed_term_extension_endstring (date-time)Befristet bis nach Verlängerung.
probation_endstring (date-time)Probezeit bis; wird aus den probationMonths der Vorlage gefüllt, wenn ein Vertrag ohne diese Angabe angelegt wird.
numberstringVertragsnummer.
descriptionstringBeschreibung des Vertrags.
archivedbooleanDer Vertrag ist archiviert.
allow_app_time_trackingbooleanDer Mitarbeitende darf Zeiten in der App erfassen.
allow_scanner_time_trackingbooleanDer Mitarbeitende darf Zeiten mit dem Scanner erfassen.
allow_app_non_work_time_managementbooleanDer Mitarbeitende darf Abwesenheiten in der App verwalten.
force_no_auto_breakbooleanFür diesen Vertrag werden keine automatischen Pausen hinzugefügt.
work_time_modestringWie die Sollarbeitszeit definiert ist - null verhält sich wie WEEKDAY_HOURS, damit bestehende Verträge ihr bisheriges Verhalten unverändert beibehalten.
holiday_credit_modestringFeiertagsguthaben für WEEK_TOTAL-Verträge - null verhält sich wie WEEKDAY_TARGET (bisheriges Verhalten, nur bei WEEKDAY_HOURS-Verträgen sinnvoll).
holiday_credit_fixed_secondsintegerFester Feiertagsguthaben in Sekunden.
planning_weekdays_bitmaskintegerISO-Wochentagsbitmaske (Mo=1 ... So=64) der Tage, an denen dieser WEEK_TOTAL-Vertrag eingeplant werden bzw. Urlaub nehmen kann - null verhält sich wie Mo-Fr.
request_lead_time_daysintegerTage, die ein Abwesenheitsantrag vor seinem ersten Tag eingereicht werden muss ("Bearbeitungs- frist"). null greift zunächst auf die Vertragsgruppe und von dort auf die Einstellung der Installation zurück, damit ein bestehender Vertrag genau wie bisher funktioniert.
shift_booking_syncbooleanL35: Schichten als Verfügbarkeiten / Termine im Buchungsbereich; null übernimmt die Gruppe (die wiederum die Organisation übernimmt).
search_stringstringText, unter dem die Entität gesucht werden kann.
requested_by_userUser14Benutzer, der die Änderung beantragt hat.
Felder anzeigen (10)
idintegerPrimärschlüssel des Benutzers. Interne ID des Anmeldebenutzers.
namestringAnzeigename des Benutzers. Wird in der Oberfläche und in Protokolleinträgen angezeigt.
usernamestringAnmeldename des Benutzers. Muss über alle Benutzer hinweg eindeutig sein.
emailstringE-Mail-Adresse des Benutzers. Wird für Anmeldebenachrichtigungen, Passwort-Zurücksetzen und als Anmeldealias verwendet.
positioningeneralstringFreitext zur Position oder Rolle des Benutzers.
crm_personCRMPerson10CRM-Person, die mit diesem Anmeldebenutzer verknüpft ist. Verbindet das Anmeldekonto mit dem Personendatensatz.
profile_picture_urlstringURL des Profilbilds des Benutzers.
archivedbooleanMarkiert den Benutzer als archiviert. Archivierte Benutzer bleiben zur Historie erhalten und sind nicht aktiv.
require2fabooleanFür diesen Benutzer ist die Zwei-Faktor-Authentifizierung Pflicht.
search_stringstringText, unter dem die Entität gesucht werden kann.
requested_by_personCRMPerson10Person, die die Änderung angefragt hat.
Felder anzeigen (81)
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.
positionstringPosition oder Rolle der Person.
languagestringBevorzugte Sprache der Person.
special_salutationstringBesonderer Anredetext für Briefe.
form_of_salutationstringForm der Anrede, zum Beispiel förmlich oder informell.
birthdaystring (date-time)Geburtstag der Person.
known_allergiesstringBekannte Allergien der Person.
confirmed_no_allergiesbooleanErziehungsberechtigte(r) bestätigt, dass keine bekannten Allergien vorliegen.
allow_photosbooleanFotos der Person dürfen aufgenommen und veröffentlicht werden.
allow_leaving_alonebooleanDie Person darf die Veranstaltung allein verlassen.
authorized_pickupstringPersonen, die die Person abholen dürfen.
needs_supportbooleanDie Person benötigt Unterstützung, zum Beispiel zur Inklusion.
support_descriptionstringBeschreibung der Unterstützung, die die Person benötigt.
financial_supportbooleanDie Person erhält finanzielle Unterstützung.
financial_support_numberstringNummer der finanziellen Förderung.
municipal_supportbooleanDie Person erhält kommunale Unterstützung.
municipal_support_numberstringNummer der kommunalen Förderung.
grade_levelintegerSchuljahrgang der Person.
school_classstringSchulklasse der Person.
start_timestring (date-time)Beginn der Mitgliedschaft oder Aktivität.
start_time_reasonstringGrund für den Beginn.
end_timestring (date-time)Ende der Mitgliedschaft oder Aktivität.
end_time_reasonstringGrund für das Ende.
confirmed_gtc_timestring (date-time)Zeitpunkt, zu dem die AGB bestätigt wurden.
chatbot_opt_inbooleanEinwilligung in die Nutzung des KI-Assistenten. Denormalisierter aktueller Stand - das prüfbare Protokoll steht in ChatbotConsent.
chatbot_opt_in_atstring (date-time)Zeitpunkt, zu dem die Person dem Chatbot zugestimmt hat.
chatbot_opt_in_text_versionstringVersion des Einwilligungstextes, dem zugestimmt wurde. Weicht sie von der aktuellen Version ab, ist das Opt-in abgelaufen.
app_usage_statistics_opt_outbooleanWiderspruch gegen die anonyme Nutzungsstatistik der Mitglieder-App. Die App liest ihn aus den StaticData und schickt dann nichts mehr; die gezählten Aufrufe selbst haben keinen Bezug zur Person.
crm_person_contact_dataarray<CRMPersonContactData>Kontaktdaten der Person, zum Beispiel Telefon und E-Mail.
archivedbooleanOb die Person archiviert ist.
subscribed_newsletterbooleanOb die Person den Newsletter abonniert hat.
subscribed_magazinebooleanOb die Person das Magazin abonniert hat.
printed_member_cardbooleanOb für die Person ein Mitgliedsausweis gedruckt wurde.
has_login_userbooleanOb die Person einen Anmelde-Benutzer hat.
profile_picture_urlstringURL des Profilbilds der Person.
log_book_staffbooleanLogbuch-Kennzeichen: Personal.
log_book_staff1booleanLogbuch-Kennzeichen: Personal, Stufe 1.
log_book_staff2booleanLogbuch-Kennzeichen: Personal, Stufe 2.
log_book_memberbooleanLogbuch-Kennzeichen: Mitglied.
log_book_trainerbooleanLogbuch-Kennzeichen: Trainer.
log_book_trainer1booleanLogbuch-Kennzeichen: Trainer, Stufe 1.
log_book_trainer2booleanLogbuch-Kennzeichen: Trainer, Stufe 2.
log_book_head_of_departmentbooleanLogbuch-Kennzeichen: Abteilungsleitung.
log_book_supervisory_boardbooleanLogbuch-Kennzeichen: Aufsichtsrat.
log_book_board_of_directorsbooleanLogbuch-Kennzeichen: Vorstand.
log_book_honorary_memberbooleanLogbuch-Kennzeichen: Ehrenmitglied.
log_book_club_card_onebooleanLogbuch-Kennzeichen: Vereinskarte.
log_book_health_recoveredbooleanLogbuch-Kennzeichen: von Krankheit genesen.
log_book_health_vaccinatedbooleanLogbuch-Kennzeichen: geimpft.
log_book_health_vaccinated_additionstringDetails der Impfung.
log_book_good_conductbooleanLogbuch-Kennzeichen: Führungszeugnis.
log_book_first_aidbooleanLogbuch-Kennzeichen: Erste-Hilfe-Schulung.
log_book_measles_vaccinationbooleanLogbuch-Kennzeichen: Masernimpfung.
sync_lanistabooleanOb die Person mit Lanista synchronisiert ist.
categoryCRMPersonCategoryPersonenkategorie.
nicknamestringSpitzname der Person.
preferred_color_hexstringBevorzugte Farbe der Person als Hexwert.
avatar_tokenstringToken des Avatarbildes.
search_stringstringText, unter dem die Entität gesucht werden kann.
addressstringAdresse als Text.
address_streetstringStraße der Adresse.
address_house_numberstringHausnummer der Adresse.
address_street_levelstringStraße und Hausnummer der Adresse.
address_costringCare-of-Zeile der Adresse.
address_citystringOrt der Adresse.
address_zipstringPostleitzahl der Adresse.
address_admin_level1stringErste Verwaltungsebene der Adresse, z. B. das Bundesland.
address_countrystringLändercode der Adresse.
address_full_countrystringVollständiger Name des Landes der Adresse.
address_geo_latstringBreitengrad der Adresse.
address_geo_lngstringLängengrad der Adresse.
address_external_provider_idstringFeld zur Speicherung der externen Anbieter-ID der Adresse, z. B. Google-Maps-PlaceID wie google:ChIJVcKw5r90sEcRhdjNq6NItqE
createdstring (date-time)Zeitpunkt, zu dem der Datensatz angelegt wurde.
- … 2 weitere Felder
startstring (date-time)Erster Tag, an dem die neue Verteilung gilt; immer ein Monatsanfang nach der Änderungsfrist.
monday_hoursnumber (float)Gewünschte Arbeitszeit am Montag.
tuesday_hoursnumber (float)Gewünschte Arbeitszeit am Dienstag.
wednesday_hoursnumber (float)Gewünschte Arbeitszeit am Mittwoch.
thursday_hoursnumber (float)Gewünschte Arbeitszeit am Donnerstag.
friday_hoursnumber (float)Gewünschte Arbeitszeit am Freitag.
saturday_hoursnumber (float)Gewünschte Arbeitszeit am Samstag.
sunday_hoursnumber (float)Gewünschte Arbeitszeit am Sonntag.
week_total_hoursnumber (float)Summe der angefragten Wochentagsstunden, gespeichert für Listen und die Regel zur automatischen Übernahme.
previous_week_total_hoursnumber (float)Wochensumme, die der Vertrag für den angefragten Monat zum Zeitpunkt der Anfrage hatte.
statusstringStatus der Anfrage, zum Beispiel offen, genehmigt oder abgelehnt.
reasonstringWarum der Lead die Änderung beantragt; wird der Personalabteilung angezeigt.
decided_by_userUser14Benutzer, der über den Antrag entschieden hat.
Felder anzeigen (10)
idintegerPrimärschlüssel des Benutzers. Interne ID des Anmeldebenutzers.
namestringAnzeigename des Benutzers. Wird in der Oberfläche und in Protokolleinträgen angezeigt.
usernamestringAnmeldename des Benutzers. Muss über alle Benutzer hinweg eindeutig sein.
emailstringE-Mail-Adresse des Benutzers. Wird für Anmeldebenachrichtigungen, Passwort-Zurücksetzen und als Anmeldealias verwendet.
positioningeneralstringFreitext zur Position oder Rolle des Benutzers.
crm_personCRMPerson10CRM-Person, die mit diesem Anmeldebenutzer verknüpft ist. Verbindet das Anmeldekonto mit dem Personendatensatz.
profile_picture_urlstringURL des Profilbilds des Benutzers.
archivedbooleanMarkiert den Benutzer als archiviert. Archivierte Benutzer bleiben zur Historie erhalten und sind nicht aktiv.
require2fabooleanFür diesen Benutzer ist die Zwei-Faktor-Authentifizierung Pflicht.
search_stringstringText, unter dem die Entität gesucht werden kann.
decided_atstring (date-time)Zeitpunkt, zu dem über den Antrag entschieden wurde.
decision_commentstringKommentar zur Entscheidung.
vacation_days_modestringEntscheidung der Personalabteilung über den Jahresurlaubsanspruch bei der Genehmigung: null lässt den Anspruch unverändert, PROPORTIONAL berechnet ihn aus den neuen Arbeitstagen neu, MANUAL setzt yearVacationDays. Verwendet die Werte EmploymentContractModifier::VACATION_DAYS_MODE_*.
year_vacation_daysnumber (float)Der neue jährliche Urlaubsanspruch, den die Personalabteilung mit vacationDaysMode MANUAL setzt.
auto_appliedbooleanWahr, wenn die Bestätigung ohne HR-Entscheidung erfolgte (unveränderte Wochensumme, Installationseinstellung).
createdstring (date-time)Zeitpunkt, zu dem der Datensatz angelegt wurde.
updatedstring (date-time)Zeitpunkt, zu dem der Datensatz zuletzt aktualisiert wurde.
curl --request PUT \
--url https://eure-instanz.iw-erp.de/api/time/employment_contract_change_request/42 \
--header 'content-type: application/json' \
--header 'x-iw-jwt-token: <TOKEN>' \
--data '
{
"data": {
"decision_comment": "Text",
"start": "2026-10-15T09:30:00+02:00",
"monday_hours": 1.5,
"tuesday_hours": 1.5,
"wednesday_hours": 1.5,
"thursday_hours": 1.5
}
}
'const options = {
method: 'PUT',
headers: {'x-iw-jwt-token': '<TOKEN>', 'content-type': 'application/json'},
body: JSON.stringify({
data: {
decision_comment: 'Text',
start: '2026-10-15T09:30:00+02:00',
monday_hours: 1.5,
tuesday_hours: 1.5,
wednesday_hours: 1.5,
thursday_hours: 1.5
}
})
};
fetch('https://eure-instanz.iw-erp.de/api/time/employment_contract_change_request/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/employment_contract_change_request/42"
payload = { "data": {
"decision_comment": "Text",
"start": "2026-10-15T09:30:00+02:00",
"monday_hours": 1.5,
"tuesday_hours": 1.5,
"wednesday_hours": 1.5,
"thursday_hours": 1.5
} }
headers = {
"x-iw-jwt-token": "<TOKEN>",
"content-type": "application/json"
}
response = requests.put(url, json=payload, headers=headers)
print(response.text)<?php
require_once('vendor/autoload.php');
$client = new \GuzzleHttp\Client();
$response = $client->request('PUT', 'https://eure-instanz.iw-erp.de/api/time/employment_contract_change_request/42', [
'body' => '{"data":{"decision_comment":"Text","start":"2026-10-15T09:30:00+02:00","monday_hours":1.5,"tuesday_hours":1.5,"wednesday_hours":1.5,"thursday_hours":1.5}}',
'headers' => [
'content-type' => 'application/json',
'x-iw-jwt-token' => '<TOKEN>',
],
]);
echo $response->getBody();using System.Net.Http.Headers;
var client = new HttpClient();
var request = new HttpRequestMessage
{
Method = HttpMethod.Put,
RequestUri = new Uri("https://eure-instanz.iw-erp.de/api/time/employment_contract_change_request/42"),
Headers =
{
{ "x-iw-jwt-token", "<TOKEN>" },
},
Content = new StringContent("{\"data\":{\"decision_comment\":\"Text\",\"start\":\"2026-10-15T09:30:00+02:00\",\"monday_hours\":1.5,\"tuesday_hours\":1.5,\"wednesday_hours\":1.5,\"thursday_hours\":1.5}}")
{
Headers =
{
ContentType = new MediaTypeHeaderValue("application/json")
}
}
};
using (var response = await client.SendAsync(request))
{
response.EnsureSuccessStatusCode();
var body = await response.Content.ReadAsStringAsync();
Console.WriteLine(body);
}OkHttpClient client = new OkHttpClient();
MediaType mediaType = MediaType.parse("application/json");
RequestBody body = RequestBody.create(mediaType, "{\"data\":{\"decision_comment\":\"Text\",\"start\":\"2026-10-15T09:30:00+02:00\",\"monday_hours\":1.5,\"tuesday_hours\":1.5,\"wednesday_hours\":1.5,\"thursday_hours\":1.5}}");
Request request = new Request.Builder()
.url("https://eure-instanz.iw-erp.de/api/time/employment_contract_change_request/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/employment_contract_change_request/42"
payload := strings.NewReader("{\"data\":{\"decision_comment\":\"Text\",\"start\":\"2026-10-15T09:30:00+02:00\",\"monday_hours\":1.5,\"tuesday_hours\":1.5,\"wednesday_hours\":1.5,\"thursday_hours\":1.5}}")
req, _ := http.NewRequest("PUT", url, payload)
req.Header.Add("x-iw-jwt-token", "<TOKEN>")
req.Header.Add("content-type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}Dart mit dem Package iw_erp_api
import 'package:iw_erp_api/clients/employment_contract_change_request_controller.dart';
import 'package:iw_erp_api/logic/iw_api_state.dart';
import 'package:iw_erp_api/model/employment_contract_change_request.dart';
IwApiState().host = 'eure-instanz.iw-erp.de';
IwApiState().currentJwtApiToken = '<TOKEN>';
final result = await EmploymentContractChangeRequestController.put(EmploymentContractChangeRequest.fromJson({
"decision_comment": "Text",
"start": "2026-10-15T09:30:00+02:00",
"monday_hours": 1.5,
"tuesday_hours": 1.5,
"wednesday_hours": 1.5,
"thursday_hours": 1.5
}));
if (result.success) {
print(result.data);
}{
"requested_by_name": "Beispiel",
"id": 42,
"decision_comment": "Text",
"contract": {
"id": 42,
"description": "Text",
"staged_absence_approval": true,
"token": "string",
"user": {
"id": 42,
"name": "Beispiel",
"username": "lena.hartmann@example.org",
"email": "lena.hartmann@example.org",
"profile_picture_url": "https://vynst.de",
"positioningeneral": "string",
"archived": true,
"require2fa": true,
"search_string": "string"
},
"week_total_hours": 1.5,
"week_total_days": 1.5,
"reserved_hours_preparation": 1.5,
"reserved_hours_follow_up": 1.5,
"reserved_hours_travel": 1.5
},
"requested_by_user": {
"id": 42,
"name": "Beispiel",
"username": "lena.hartmann@example.org",
"email": "lena.hartmann@example.org",
"profile_picture_url": "https://vynst.de",
"positioningeneral": "string",
"crm_person": {
"id": 42,
"first_name": "Lena",
"last_name": "Hartmann",
"title": "Beispiel",
"language": "de",
"support_description": "Text",
"profile_picture_url": "https://vynst.de",
"address_street": "Jakobistr. 39",
"address_city": "Hannover",
"address_zip": "30163"
},
"archived": true,
"require2fa": true,
"search_string": "string"
},
"requested_by_person": {
"id": 42,
"first_name": "Lena",
"last_name": "Hartmann",
"title": "Beispiel",
"language": "de",
"support_description": "Text",
"profile_picture_url": "https://vynst.de",
"address_street": "Jakobistr. 39",
"address_city": "Hannover",
"address_zip": "30163"
},
"start": "2026-10-15T09:30:00+02:00",
"monday_hours": 1.5,
"tuesday_hours": 1.5,
"wednesday_hours": 1.5
}Änderungsantrag (HR) entscheiden: Status APPROVED übernimmt ihn als datierte Vertragsänderung, DECLINED schließt ihn ab
PATCH/api/time/employment_contract_change_request/{id}
Pfad-Parameter
idPflichtstring |
Request-Body application/json
dataEmploymentContractChangeRequest2Felder anzeigen (14)
contractEmploymentContract4Vertrag, für den die Änderung gilt.
startstring (date-time)Erster Tag, an dem die neue Verteilung gilt; immer ein Monatsanfang nach der Änderungsfrist.
monday_hoursnumber (float)Gewünschte Arbeitszeit am Montag.
tuesday_hoursnumber (float)Gewünschte Arbeitszeit am Dienstag.
wednesday_hoursnumber (float)Gewünschte Arbeitszeit am Mittwoch.
thursday_hoursnumber (float)Gewünschte Arbeitszeit am Donnerstag.
friday_hoursnumber (float)Gewünschte Arbeitszeit am Freitag.
saturday_hoursnumber (float)Gewünschte Arbeitszeit am Samstag.
sunday_hoursnumber (float)Gewünschte Arbeitszeit am Sonntag.
statusstringStatus der Anfrage, zum Beispiel offen, genehmigt oder abgelehnt.
reasonstringWarum der Lead die Änderung beantragt; wird der Personalabteilung angezeigt.
decision_commentstringKommentar zur Entscheidung.
vacation_days_modestringEntscheidung der Personalabteilung über den Jahresurlaubsanspruch bei der Genehmigung: null lässt den Anspruch unverändert, PROPORTIONAL berechnet ihn aus den neuen Arbeitstagen neu, MANUAL setzt yearVacationDays. Verwendet die Werte EmploymentContractModifier::VACATION_DAYS_MODE_*.
year_vacation_daysnumber (float)Der neue jährliche Urlaubsanspruch, den die Personalabteilung mit vacationDaysMode MANUAL setzt.
Antworten
200EmploymentContractChangeRequest entscheidenEmploymentContractChangeRequest3
Felder anzeigen (25)
requested_by_namestringidintegerPrimärschlüssel der Vertragsänderungsanfrage. Interne ID.
contractEmploymentContract5Vertrag, für den die Änderung gilt.
Felder anzeigen (43)
staged_absence_approvalbooleannull übernimmt zuerst die Gruppen- und dann die Organisationsrichtlinie; bestehende Installationen bleiben aus.
idintegerPrimärschlüssel des Arbeitsvertrags. Interne ID.
tokenstringÖffentlicher Token des Vertrags. Anstelle der ID verwendet.
userUser14Benutzer des Mitarbeiters.
week_total_hoursnumber (float)Gesamte Arbeitsstunden pro Woche.
week_total_daysnumber (float)Gesamte Arbeitstage pro Woche.
reserved_hours_preparationnumber (float)L03: wöchentliche Stunden, die für Vorbereitung reserviert sind - Teil der Vertragsstunden, aber nicht planbar im Schichtplan. null = keine.
reserved_hours_follow_upnumber (float)L03: wöchentliche Stunden, die für Nachbereitung reserviert sind - Teil der Vertragsstunden, aber nicht planbar im Schichtplan. null = keine.
reserved_hours_travelnumber (float)L03: wöchentliche Stunden, die für Fahrt reserviert sind - Teil der Vertragsstunden, aber nicht planbar im Schichtplan. null = keine.
reserved_hours_flexiblenumber (float)L03: wöchentliche Stunden, die für freie Einteilung reserviert sind - Teil der Vertragsstunden, aber nicht planbar im Schichtplan. null = keine.
week_full_time_total_daysnumber (float)Gesamte Arbeitstage pro Woche bei einem Vollzeitvertrag.
year_vacation_daysnumber (float)Urlaubstage pro Jahr.
month_vacation_daysnumber (float)Urlaubstage pro Monat.
year_vacation_weeksnumber (float)Urlaubswochen pro Jahr.
monday_hoursnumber (float)Arbeitsstunden am Montag.
tuesday_hoursnumber (float)Arbeitsstunden am Dienstag.
wednesday_hoursnumber (float)Arbeitsstunden am Mittwoch.
thursday_hoursnumber (float)Arbeitsstunden am Donnerstag.
friday_hoursnumber (float)Arbeitsstunden am Freitag.
saturday_hoursnumber (float)Arbeitsstunden am Samstag.
sunday_hoursnumber (float)Arbeitsstunden am Sonntag.
netto_hour_costnumber (float)Nettokosten je Stunde.
brutto_hour_costnumber (float)Bruttokosten pro Stunde.
startstring (date-time)Startdatum des Vertrags.
endstring (date-time)Enddatum des Vertrags.
fixed_term_statusstringBefristung: PERMANENT (unbefristet, Standard), FIXED_TERM oder EXTENDED (FIXED_TERM_STATUS_*).
fixed_term_endstring (date-time)Befristet bis (erster Zeitraum).
fixed_term_extension_endstring (date-time)Befristet bis nach Verlängerung.
probation_endstring (date-time)Probezeit bis; wird aus den probationMonths der Vorlage gefüllt, wenn ein Vertrag ohne diese Angabe angelegt wird.
numberstringVertragsnummer.
descriptionstringBeschreibung des Vertrags.
archivedbooleanDer Vertrag ist archiviert.
allow_app_time_trackingbooleanDer Mitarbeitende darf Zeiten in der App erfassen.
allow_scanner_time_trackingbooleanDer Mitarbeitende darf Zeiten mit dem Scanner erfassen.
allow_app_non_work_time_managementbooleanDer Mitarbeitende darf Abwesenheiten in der App verwalten.
force_no_auto_breakbooleanFür diesen Vertrag werden keine automatischen Pausen hinzugefügt.
work_time_modestringWie die Sollarbeitszeit definiert ist - null verhält sich wie WEEKDAY_HOURS, damit bestehende Verträge ihr bisheriges Verhalten unverändert beibehalten.
holiday_credit_modestringFeiertagsguthaben für WEEK_TOTAL-Verträge - null verhält sich wie WEEKDAY_TARGET (bisheriges Verhalten, nur bei WEEKDAY_HOURS-Verträgen sinnvoll).
holiday_credit_fixed_secondsintegerFester Feiertagsguthaben in Sekunden.
planning_weekdays_bitmaskintegerISO-Wochentagsbitmaske (Mo=1 ... So=64) der Tage, an denen dieser WEEK_TOTAL-Vertrag eingeplant werden bzw. Urlaub nehmen kann - null verhält sich wie Mo-Fr.
request_lead_time_daysintegerTage, die ein Abwesenheitsantrag vor seinem ersten Tag eingereicht werden muss ("Bearbeitungs- frist"). null greift zunächst auf die Vertragsgruppe und von dort auf die Einstellung der Installation zurück, damit ein bestehender Vertrag genau wie bisher funktioniert.
shift_booking_syncbooleanL35: Schichten als Verfügbarkeiten / Termine im Buchungsbereich; null übernimmt die Gruppe (die wiederum die Organisation übernimmt).
search_stringstringText, unter dem die Entität gesucht werden kann.
requested_by_userUser14Benutzer, der die Änderung beantragt hat.
Felder anzeigen (10)
idintegerPrimärschlüssel des Benutzers. Interne ID des Anmeldebenutzers.
namestringAnzeigename des Benutzers. Wird in der Oberfläche und in Protokolleinträgen angezeigt.
usernamestringAnmeldename des Benutzers. Muss über alle Benutzer hinweg eindeutig sein.
emailstringE-Mail-Adresse des Benutzers. Wird für Anmeldebenachrichtigungen, Passwort-Zurücksetzen und als Anmeldealias verwendet.
positioningeneralstringFreitext zur Position oder Rolle des Benutzers.
crm_personCRMPerson10CRM-Person, die mit diesem Anmeldebenutzer verknüpft ist. Verbindet das Anmeldekonto mit dem Personendatensatz.
profile_picture_urlstringURL des Profilbilds des Benutzers.
archivedbooleanMarkiert den Benutzer als archiviert. Archivierte Benutzer bleiben zur Historie erhalten und sind nicht aktiv.
require2fabooleanFür diesen Benutzer ist die Zwei-Faktor-Authentifizierung Pflicht.
search_stringstringText, unter dem die Entität gesucht werden kann.
requested_by_personCRMPerson10Person, die die Änderung angefragt hat.
Felder anzeigen (81)
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.
positionstringPosition oder Rolle der Person.
languagestringBevorzugte Sprache der Person.
special_salutationstringBesonderer Anredetext für Briefe.
form_of_salutationstringForm der Anrede, zum Beispiel förmlich oder informell.
birthdaystring (date-time)Geburtstag der Person.
known_allergiesstringBekannte Allergien der Person.
confirmed_no_allergiesbooleanErziehungsberechtigte(r) bestätigt, dass keine bekannten Allergien vorliegen.
allow_photosbooleanFotos der Person dürfen aufgenommen und veröffentlicht werden.
allow_leaving_alonebooleanDie Person darf die Veranstaltung allein verlassen.
authorized_pickupstringPersonen, die die Person abholen dürfen.
needs_supportbooleanDie Person benötigt Unterstützung, zum Beispiel zur Inklusion.
support_descriptionstringBeschreibung der Unterstützung, die die Person benötigt.
financial_supportbooleanDie Person erhält finanzielle Unterstützung.
financial_support_numberstringNummer der finanziellen Förderung.
municipal_supportbooleanDie Person erhält kommunale Unterstützung.
municipal_support_numberstringNummer der kommunalen Förderung.
grade_levelintegerSchuljahrgang der Person.
school_classstringSchulklasse der Person.
start_timestring (date-time)Beginn der Mitgliedschaft oder Aktivität.
start_time_reasonstringGrund für den Beginn.
end_timestring (date-time)Ende der Mitgliedschaft oder Aktivität.
end_time_reasonstringGrund für das Ende.
confirmed_gtc_timestring (date-time)Zeitpunkt, zu dem die AGB bestätigt wurden.
chatbot_opt_inbooleanEinwilligung in die Nutzung des KI-Assistenten. Denormalisierter aktueller Stand - das prüfbare Protokoll steht in ChatbotConsent.
chatbot_opt_in_atstring (date-time)Zeitpunkt, zu dem die Person dem Chatbot zugestimmt hat.
chatbot_opt_in_text_versionstringVersion des Einwilligungstextes, dem zugestimmt wurde. Weicht sie von der aktuellen Version ab, ist das Opt-in abgelaufen.
app_usage_statistics_opt_outbooleanWiderspruch gegen die anonyme Nutzungsstatistik der Mitglieder-App. Die App liest ihn aus den StaticData und schickt dann nichts mehr; die gezählten Aufrufe selbst haben keinen Bezug zur Person.
crm_person_contact_dataarray<CRMPersonContactData>Kontaktdaten der Person, zum Beispiel Telefon und E-Mail.
archivedbooleanOb die Person archiviert ist.
subscribed_newsletterbooleanOb die Person den Newsletter abonniert hat.
subscribed_magazinebooleanOb die Person das Magazin abonniert hat.
printed_member_cardbooleanOb für die Person ein Mitgliedsausweis gedruckt wurde.
has_login_userbooleanOb die Person einen Anmelde-Benutzer hat.
profile_picture_urlstringURL des Profilbilds der Person.
log_book_staffbooleanLogbuch-Kennzeichen: Personal.
log_book_staff1booleanLogbuch-Kennzeichen: Personal, Stufe 1.
log_book_staff2booleanLogbuch-Kennzeichen: Personal, Stufe 2.
log_book_memberbooleanLogbuch-Kennzeichen: Mitglied.
log_book_trainerbooleanLogbuch-Kennzeichen: Trainer.
log_book_trainer1booleanLogbuch-Kennzeichen: Trainer, Stufe 1.
log_book_trainer2booleanLogbuch-Kennzeichen: Trainer, Stufe 2.
log_book_head_of_departmentbooleanLogbuch-Kennzeichen: Abteilungsleitung.
log_book_supervisory_boardbooleanLogbuch-Kennzeichen: Aufsichtsrat.
log_book_board_of_directorsbooleanLogbuch-Kennzeichen: Vorstand.
log_book_honorary_memberbooleanLogbuch-Kennzeichen: Ehrenmitglied.
log_book_club_card_onebooleanLogbuch-Kennzeichen: Vereinskarte.
log_book_health_recoveredbooleanLogbuch-Kennzeichen: von Krankheit genesen.
log_book_health_vaccinatedbooleanLogbuch-Kennzeichen: geimpft.
log_book_health_vaccinated_additionstringDetails der Impfung.
log_book_good_conductbooleanLogbuch-Kennzeichen: Führungszeugnis.
log_book_first_aidbooleanLogbuch-Kennzeichen: Erste-Hilfe-Schulung.
log_book_measles_vaccinationbooleanLogbuch-Kennzeichen: Masernimpfung.
sync_lanistabooleanOb die Person mit Lanista synchronisiert ist.
categoryCRMPersonCategoryPersonenkategorie.
nicknamestringSpitzname der Person.
preferred_color_hexstringBevorzugte Farbe der Person als Hexwert.
avatar_tokenstringToken des Avatarbildes.
search_stringstringText, unter dem die Entität gesucht werden kann.
addressstringAdresse als Text.
address_streetstringStraße der Adresse.
address_house_numberstringHausnummer der Adresse.
address_street_levelstringStraße und Hausnummer der Adresse.
address_costringCare-of-Zeile der Adresse.
address_citystringOrt der Adresse.
address_zipstringPostleitzahl der Adresse.
address_admin_level1stringErste Verwaltungsebene der Adresse, z. B. das Bundesland.
address_countrystringLändercode der Adresse.
address_full_countrystringVollständiger Name des Landes der Adresse.
address_geo_latstringBreitengrad der Adresse.
address_geo_lngstringLängengrad der Adresse.
address_external_provider_idstringFeld zur Speicherung der externen Anbieter-ID der Adresse, z. B. Google-Maps-PlaceID wie google:ChIJVcKw5r90sEcRhdjNq6NItqE
createdstring (date-time)Zeitpunkt, zu dem der Datensatz angelegt wurde.
- … 2 weitere Felder
startstring (date-time)Erster Tag, an dem die neue Verteilung gilt; immer ein Monatsanfang nach der Änderungsfrist.
monday_hoursnumber (float)Gewünschte Arbeitszeit am Montag.
tuesday_hoursnumber (float)Gewünschte Arbeitszeit am Dienstag.
wednesday_hoursnumber (float)Gewünschte Arbeitszeit am Mittwoch.
thursday_hoursnumber (float)Gewünschte Arbeitszeit am Donnerstag.
friday_hoursnumber (float)Gewünschte Arbeitszeit am Freitag.
saturday_hoursnumber (float)Gewünschte Arbeitszeit am Samstag.
sunday_hoursnumber (float)Gewünschte Arbeitszeit am Sonntag.
week_total_hoursnumber (float)Summe der angefragten Wochentagsstunden, gespeichert für Listen und die Regel zur automatischen Übernahme.
previous_week_total_hoursnumber (float)Wochensumme, die der Vertrag für den angefragten Monat zum Zeitpunkt der Anfrage hatte.
statusstringStatus der Anfrage, zum Beispiel offen, genehmigt oder abgelehnt.
reasonstringWarum der Lead die Änderung beantragt; wird der Personalabteilung angezeigt.
decided_by_userUser14Benutzer, der über den Antrag entschieden hat.
Felder anzeigen (10)
idintegerPrimärschlüssel des Benutzers. Interne ID des Anmeldebenutzers.
namestringAnzeigename des Benutzers. Wird in der Oberfläche und in Protokolleinträgen angezeigt.
usernamestringAnmeldename des Benutzers. Muss über alle Benutzer hinweg eindeutig sein.
emailstringE-Mail-Adresse des Benutzers. Wird für Anmeldebenachrichtigungen, Passwort-Zurücksetzen und als Anmeldealias verwendet.
positioningeneralstringFreitext zur Position oder Rolle des Benutzers.
crm_personCRMPerson10CRM-Person, die mit diesem Anmeldebenutzer verknüpft ist. Verbindet das Anmeldekonto mit dem Personendatensatz.
profile_picture_urlstringURL des Profilbilds des Benutzers.
archivedbooleanMarkiert den Benutzer als archiviert. Archivierte Benutzer bleiben zur Historie erhalten und sind nicht aktiv.
require2fabooleanFür diesen Benutzer ist die Zwei-Faktor-Authentifizierung Pflicht.
search_stringstringText, unter dem die Entität gesucht werden kann.
decided_atstring (date-time)Zeitpunkt, zu dem über den Antrag entschieden wurde.
decision_commentstringKommentar zur Entscheidung.
vacation_days_modestringEntscheidung der Personalabteilung über den Jahresurlaubsanspruch bei der Genehmigung: null lässt den Anspruch unverändert, PROPORTIONAL berechnet ihn aus den neuen Arbeitstagen neu, MANUAL setzt yearVacationDays. Verwendet die Werte EmploymentContractModifier::VACATION_DAYS_MODE_*.
year_vacation_daysnumber (float)Der neue jährliche Urlaubsanspruch, den die Personalabteilung mit vacationDaysMode MANUAL setzt.
auto_appliedbooleanWahr, wenn die Bestätigung ohne HR-Entscheidung erfolgte (unveränderte Wochensumme, Installationseinstellung).
createdstring (date-time)Zeitpunkt, zu dem der Datensatz angelegt wurde.
updatedstring (date-time)Zeitpunkt, zu dem der Datensatz zuletzt aktualisiert wurde.
curl --request PATCH \
--url https://eure-instanz.iw-erp.de/api/time/employment_contract_change_request/42 \
--header 'content-type: application/json' \
--header 'x-iw-jwt-token: <TOKEN>' \
--data '
{
"data": {
"decision_comment": "Text",
"start": "2026-10-15T09:30:00+02:00",
"monday_hours": 1.5,
"tuesday_hours": 1.5,
"wednesday_hours": 1.5,
"thursday_hours": 1.5
}
}
'const options = {
method: 'PATCH',
headers: {'x-iw-jwt-token': '<TOKEN>', 'content-type': 'application/json'},
body: JSON.stringify({
data: {
decision_comment: 'Text',
start: '2026-10-15T09:30:00+02:00',
monday_hours: 1.5,
tuesday_hours: 1.5,
wednesday_hours: 1.5,
thursday_hours: 1.5
}
})
};
fetch('https://eure-instanz.iw-erp.de/api/time/employment_contract_change_request/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/employment_contract_change_request/42"
payload = { "data": {
"decision_comment": "Text",
"start": "2026-10-15T09:30:00+02:00",
"monday_hours": 1.5,
"tuesday_hours": 1.5,
"wednesday_hours": 1.5,
"thursday_hours": 1.5
} }
headers = {
"x-iw-jwt-token": "<TOKEN>",
"content-type": "application/json"
}
response = requests.patch(url, json=payload, headers=headers)
print(response.text)<?php
require_once('vendor/autoload.php');
$client = new \GuzzleHttp\Client();
$response = $client->request('PATCH', 'https://eure-instanz.iw-erp.de/api/time/employment_contract_change_request/42', [
'body' => '{"data":{"decision_comment":"Text","start":"2026-10-15T09:30:00+02:00","monday_hours":1.5,"tuesday_hours":1.5,"wednesday_hours":1.5,"thursday_hours":1.5}}',
'headers' => [
'content-type' => 'application/json',
'x-iw-jwt-token' => '<TOKEN>',
],
]);
echo $response->getBody();using System.Net.Http.Headers;
var client = new HttpClient();
var request = new HttpRequestMessage
{
Method = HttpMethod.Patch,
RequestUri = new Uri("https://eure-instanz.iw-erp.de/api/time/employment_contract_change_request/42"),
Headers =
{
{ "x-iw-jwt-token", "<TOKEN>" },
},
Content = new StringContent("{\"data\":{\"decision_comment\":\"Text\",\"start\":\"2026-10-15T09:30:00+02:00\",\"monday_hours\":1.5,\"tuesday_hours\":1.5,\"wednesday_hours\":1.5,\"thursday_hours\":1.5}}")
{
Headers =
{
ContentType = new MediaTypeHeaderValue("application/json")
}
}
};
using (var response = await client.SendAsync(request))
{
response.EnsureSuccessStatusCode();
var body = await response.Content.ReadAsStringAsync();
Console.WriteLine(body);
}OkHttpClient client = new OkHttpClient();
MediaType mediaType = MediaType.parse("application/json");
RequestBody body = RequestBody.create(mediaType, "{\"data\":{\"decision_comment\":\"Text\",\"start\":\"2026-10-15T09:30:00+02:00\",\"monday_hours\":1.5,\"tuesday_hours\":1.5,\"wednesday_hours\":1.5,\"thursday_hours\":1.5}}");
Request request = new Request.Builder()
.url("https://eure-instanz.iw-erp.de/api/time/employment_contract_change_request/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/employment_contract_change_request/42"
payload := strings.NewReader("{\"data\":{\"decision_comment\":\"Text\",\"start\":\"2026-10-15T09:30:00+02:00\",\"monday_hours\":1.5,\"tuesday_hours\":1.5,\"wednesday_hours\":1.5,\"thursday_hours\":1.5}}")
req, _ := http.NewRequest("PATCH", url, payload)
req.Header.Add("x-iw-jwt-token", "<TOKEN>")
req.Header.Add("content-type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}Dart 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/employment_contract_change_request/42'),
headers: {'x-iw-jwt-token': '<TOKEN>', 'content-type': 'application/json'},
body: jsonEncode({
"data": {
"decision_comment": "Text",
"start": "2026-10-15T09:30:00+02:00",
"monday_hours": 1.5,
"tuesday_hours": 1.5,
"wednesday_hours": 1.5,
"thursday_hours": 1.5
}
}),
);
print(response.body);{
"requested_by_name": "Beispiel",
"id": 42,
"decision_comment": "Text",
"contract": {
"id": 42,
"description": "Text",
"staged_absence_approval": true,
"token": "string",
"user": {
"id": 42,
"name": "Beispiel",
"username": "lena.hartmann@example.org",
"email": "lena.hartmann@example.org",
"profile_picture_url": "https://vynst.de",
"positioningeneral": "string",
"archived": true,
"require2fa": true,
"search_string": "string"
},
"week_total_hours": 1.5,
"week_total_days": 1.5,
"reserved_hours_preparation": 1.5,
"reserved_hours_follow_up": 1.5,
"reserved_hours_travel": 1.5
},
"requested_by_user": {
"id": 42,
"name": "Beispiel",
"username": "lena.hartmann@example.org",
"email": "lena.hartmann@example.org",
"profile_picture_url": "https://vynst.de",
"positioningeneral": "string",
"crm_person": {
"id": 42,
"first_name": "Lena",
"last_name": "Hartmann",
"title": "Beispiel",
"language": "de",
"support_description": "Text",
"profile_picture_url": "https://vynst.de",
"address_street": "Jakobistr. 39",
"address_city": "Hannover",
"address_zip": "30163"
},
"archived": true,
"require2fa": true,
"search_string": "string"
},
"requested_by_person": {
"id": 42,
"first_name": "Lena",
"last_name": "Hartmann",
"title": "Beispiel",
"language": "de",
"support_description": "Text",
"profile_picture_url": "https://vynst.de",
"address_street": "Jakobistr. 39",
"address_city": "Hannover",
"address_zip": "30163"
},
"start": "2026-10-15T09:30:00+02:00",
"monday_hours": 1.5,
"tuesday_hours": 1.5,
"wednesday_hours": 1.5
}