ShiftPlanEntry
Druckbarer Wochenplan als PDF - die drei Scopes der Anforderung werden durch den optionalen Personen-/Gruppenfilter abgedeckt, alles Übrige bleibt dasselbe Dokument
GET/api/time/shift_plan_entry/pdf
Query-Parameter
fromPflichtstring | Erstes Datum (Y-m-d) |
untilPflichtstring | Letztes Datum (Y-m-d), höchstens 62 Tage nach from |
employment_contract_groupinteger | Gruppen-Scope |
employment_organizationinteger | Organisationsbereich (ohne Gruppe): die Schichten jeder Gruppe der Organisation |
personinteger | Personenbereich |
include_bookingsboolean | Standard 1 - die Termine der gedruckten Personen werden ebenfalls gedruckt (L23) |
Antworten
200PDF des veröffentlichten Plans
curl --request GET \
--url 'https://eure-instanz.iw-erp.de/api/time/shift_plan_entry/pdf?from=string&until=string' \
--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/shift_plan_entry/pdf?from=string&until=string', 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/shift_plan_entry/pdf?from=string&until=string"
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/shift_plan_entry/pdf?from=string&until=string', [
'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/shift_plan_entry/pdf?from=string&until=string"),
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/shift_plan_entry/pdf?from=string&until=string")
.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/shift_plan_entry/pdf?from=string&until=string"
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/shift_plan_entry_controller.dart';
import 'package:iw_erp_api/logic/iw_api_state.dart';
IwApiState().host = 'eure-instanz.iw-erp.de';
IwApiState().currentJwtApiToken = '<TOKEN>';
final result = await ShiftPlanEntryController.getDownloadLinkPdf(from: 'string', until: 'string');
print(result);R06: der kombinierte Plan einer Gruppe, einer Organisation oder einer Person - Schichten, die Termine, für die die Personen verantwortlich sind, Abwesenheiten und die Konflikte zwischen diesen, je Person und Zeitfenster (L25/L28/L29/L32/L33).
GET/api/time/shift_plan_entry/timeline
Query-Parameter
fromPflichtstring | Erstes Datum (Y-m-d) |
untilPflichtstring | Letztes Datum (Y-m-d), höchstens 62 Tage nach from |
employment_contract_groupinteger | Gruppen-Scope |
employment_organizationinteger | Organisationsbereich |
personinteger | Scope für eine einzelne Person (eigener Plan oder eine Person, die man leitet) |
personsstring | Kommagetrennte Personen-IDs zur Einschränkung der Zeilen (L29) |
include_bookingsboolean | Standard 1 |
include_availabilityboolean | Standard 1 - Verfügbarkeitsbuchungen werden schattiert (L32) |
include_other_contextsboolean | Standard 0 - auch die Dienste der Personen anderer Gruppen (L29) |
Antworten
default
curl --request GET \
--url 'https://eure-instanz.iw-erp.de/api/time/shift_plan_entry/timeline?from=string&until=string' \
--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/shift_plan_entry/timeline?from=string&until=string', 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/shift_plan_entry/timeline?from=string&until=string"
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/shift_plan_entry/timeline?from=string&until=string', [
'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/shift_plan_entry/timeline?from=string&until=string"),
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/shift_plan_entry/timeline?from=string&until=string")
.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/shift_plan_entry/timeline?from=string&until=string"
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/shift_plan_entry_controller.dart';
import 'package:iw_erp_api/logic/iw_api_state.dart';
IwApiState().host = 'eure-instanz.iw-erp.de';
IwApiState().currentJwtApiToken = '<TOKEN>';
final result = await ShiftPlanEntryController.getTimeline(from: 'string', until: 'string');
if (result.success) {
print(result.data);
}Die Gruppen, die die aktuelle Sitzung planen darf – die Gruppenauswahl der Wochenansicht. Ein globaler Planer erhält jede aktive Gruppe, ein Teamleiter die Gruppen, die er leitet. Nur ID und Name: Die allgemeine Gruppenliste (mit Kosten und Stunden) bleibt für Teamleiter gesperrt.
GET/api/time/shift_plan_entry/plannable_groups
Antworten
200Planbare Gruppen, nach Name sortiertarray<object>
Felder anzeigen (2)
idintegernamestring
curl --request GET \
--url https://eure-instanz.iw-erp.de/api/time/shift_plan_entry/plannable_groups \
--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/shift_plan_entry/plannable_groups', 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/shift_plan_entry/plannable_groups"
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/shift_plan_entry/plannable_groups', [
'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/shift_plan_entry/plannable_groups"),
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/shift_plan_entry/plannable_groups")
.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/shift_plan_entry/plannable_groups"
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/shift_plan_entry_controller.dart';
import 'package:iw_erp_api/logic/iw_api_state.dart';
IwApiState().host = 'eure-instanz.iw-erp.de';
IwApiState().currentJwtApiToken = '<TOKEN>';
final result = await ShiftPlanEntryController.getPlannableGroups();
if (result.success) {
print(result.data);
}[
{
"id": 42,
"name": "Beispiel"
}
]Personalabdeckung eines Datumsbereichs - die Datenquelle des Planungsrasters und des Sitzungs-Urlaubsplaners
GET/api/time/shift_plan_entry/coverage
Query-Parameter
fromPflichtstring | Erstes Datum (Y-m-d) |
untilPflichtstring | Letztes Datum (Y-m-d), höchstens 62 Tage nach from |
employment_contract_groupinteger | Beschränkt die Prüfung auf eine Planungsgruppe - erforderlich für eine Teamleitung ohne globale Zeitrechte |
employment_organizationinteger | Ohne Gruppe: die Regeln der Organisation, ihrer Gruppen und der installationsweiten Regeln (eine Teamleitung sieht die Regeln der eigenen Gruppen) |
Antworten
200Abdeckung je Anforderung und Datum
curl --request GET \
--url 'https://eure-instanz.iw-erp.de/api/time/shift_plan_entry/coverage?from=string&until=string' \
--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/shift_plan_entry/coverage?from=string&until=string', 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/shift_plan_entry/coverage?from=string&until=string"
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/shift_plan_entry/coverage?from=string&until=string', [
'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/shift_plan_entry/coverage?from=string&until=string"),
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/shift_plan_entry/coverage?from=string&until=string")
.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/shift_plan_entry/coverage?from=string&until=string"
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/shift_plan_entry_controller.dart';
import 'package:iw_erp_api/logic/iw_api_state.dart';
IwApiState().host = 'eure-instanz.iw-erp.de';
IwApiState().currentJwtApiToken = '<TOKEN>';
final result = await ShiftPlanEntryController.getCoverage(from: 'string', until: 'string');
if (result.success) {
print(result.data);
}Diese Methode liefert die veröffentlichten Schichten des aktuellen Benutzers
GET/api/time/shift_plan_entry/own
Query-Parameter
idinteger | |
startDatestring | |
startMonthstring | |
startYearstring | |
employmentContractGroupstring | Planungscontainer - Pflichtangabe, auch wenn eine Person einer anderen Gruppe aushilft. | Benötigt Zugriffsrecht: SCOPE |
personstring | |
userstring | |
shiftTypestring | Ursprungstyp - Zeiten wurden kopiert, der Verweis dient nur der Information. |
statusstring | |
contractstring | |
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 die eigenen veröffentlichten ShiftPlanEntry-Objektearray<ShiftPlanEntry>
Felder anzeigen (23)
idintegerPrimärschlüssel des Schichtplan-Eintrags. Interne ID.
userUser14Der Schicht zugewiesener Benutzer.
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.
personCRMPerson10Person, die der Schicht zugewiesen ist.
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
employment_contract_groupEmploymentContractGroupPlanungscontainer - Pflichtangabe, auch wenn eine Person einer anderen Gruppe aushilft.
Felder anzeigen (25)
staged_absence_approvalbooleannull übernimmt die Organisation; false deaktiviert die gestufte Freigabe ausdrücklich.
shift_booking_syncbooleanL35: Schichten als Verfügbarkeiten / Termine im Buchungsbereich; null übernimmt die Organisation, false schaltet es für diese Gruppe aus.
idintegerPrimärschlüssel der Vertragsgruppe. Interne ID.
week_total_hoursnumber (float)Gesamte Arbeitsstunden pro Woche.
week_total_daysnumber (float)Arbeitstage pro Woche.
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.
allow_app_time_trackingbooleanOb die Zeiterfassung in der App erlaubt ist.
allow_scanner_time_trackingbooleanOb die Zeiterfassung per Scanner erlaubt ist.
allow_app_non_work_time_managementbooleanOb arbeitsfreie Zeit in der App verwaltet werden kann.
request_lead_time_daysintegerTage, die ein Abwesenheitsantrag dieser Gruppe vor seinem ersten Tag eingereicht werden muss. null greift auf die installationsweite Einstellung zurück – eine bestehende Gruppe verhält sich daher weiterhin genauso wie bisher.
school_holiday_regionSchoolHolidayRegionU09: der Schulkalender dieser Gruppe, wenn er vom Kalender der Organisation abweicht (Auszubildende, die in einem anderen Bundesland zur Schule gehen). null = der der Organisation.
search_stringstringText, unter dem die Entität gesucht werden kann.
deletedbooleanDiese Eigenschaft markiert eine Entität als gelöscht / archiviert
namestringName der Einheit.
shift_typeShiftType4Ursprungstyp - Zeiten wurden kopiert, der Verweis dient nur der Information.
Felder anzeigen (17)
idintegerPrimärschlüssel des Schichttyps. Interne ID.
employment_contract_groupEmploymentContractGroupGruppe, zu der dieser Typ gehört (null = für die gesamte Organisation / Installation verfügbar).
employment_organizationEmploymentOrganization5Organisation, zu der der Schichttyp gehört.
short_namestringKurzcode für Raster und Druck („F“, „S“, „N“).
start_timestringStandardstartzeit als HH:MM.
end_timestringStandardendzeit als HH:MM - eine Endzeit vor der Startzeit bedeutet, dass die Schicht am folgenden Tag endet (Nachtschicht).
break_duration_secondsintegerPausendauer der Schicht in Sekunden.
colorstringFarbe des Schichttyps im Schichtplan als Hex-Code.
required_qualificationEmploymentQualification3Standard-Qualifikationsanforderung für Schichten dieses Typs.
qualification_match_modestringL18: EXACT verlangt die geforderte Qualifikation selbst; EQUIVALENT (Standard, bisheriges Verhalten) akzeptiert auch verknüpfte oder gleichgruppierte Qualifikationen mit ausreichendem Rang.
default_staff_countintegerStandardanzahl der benötigten Mitarbeitenden für die Schicht.
sort_orderintegerSortierreihenfolge des Diensttyps in Listen.
search_stringstringText, unter dem die Entität gesucht werden kann.
deletedbooleanDiese Eigenschaft markiert eine Entität als gelöscht / archiviert
namestringName der Einheit.
createdstring (date-time)Zeitpunkt, zu dem der Datensatz angelegt wurde.
updatedstring (date-time)Zeitpunkt, zu dem der Datensatz zuletzt aktualisiert wurde.
startstring (date-time)Beginn des Dienstes.
endstring (date-time)Ende der Schicht.
start_datestringStartdatum des Dienstes als Text.
start_monthintegerMonat der Schicht.
start_yearintegerJahr der Schicht.
break_duration_secondsintegerPausendauer der Schicht in Sekunden.
durationintegerZielsekunden: (Ende - Start) - Pause, wird von recalculate() gepflegt.
required_qualificationEmploymentQualification3Für die Schicht erforderliche Qualifikation.
Felder anzeigen (7)
idintegerPrimärschlüssel der Beschäftigungsqualifikation. Interne ID.
rankingintegerRangfolge innerhalb eines Äquivalenznetzwerks - eine verknüpfte Qualifikation mit gleichem oder höherem Rang erfüllt auch Anforderungen an diese Qualifikation.
equivalent_qualificationsarray<EmploymentQualification3>Verknüpfte ("gleichwertige") Qualifikationen. Vom Controller symmetrisch gehalten: jede Verknüpfung A->B wird als B->A gespiegelt; der Rang entscheidet, welche Richtung tatsächlich welche abdeckt.
qualification_groupEmploymentQualificationGroupL17/A06: die "Schublade", zu der diese Qualifikation gehört. Mitglieder einer Gruppe decken sich gegenseitig die Anforderungen innerhalb ihres Rangs ab, wie es eine direkte Verknüpfung täte.
search_stringstringText, unter dem die Entität gesucht werden kann.
deletedbooleanDiese Eigenschaft markiert eine Entität als gelöscht / archiviert
namestringName der Einheit.
qualification_match_modestringL18: EXACT verlangt die geforderte Qualifikation selbst; EQUIVALENT (Standard, bisheriges Verhalten) akzeptiert auch verknüpfte oder gleichgruppierte Qualifikationen mit ausreichendem Rang.
statusstringStatus des Dienstes, zum Beispiel geplant oder veröffentlicht.
published_atstring (date-time)Zeitpunkt, zu dem die Schicht veröffentlicht wurde.
descriptionstringBeschreibung der Schicht.
has_warningbooleanGespeichertes Konfliktkennzeichen für Listen-Badges - die konkreten Warnungen werden bei Bedarf berechnet (ShiftPlanHelper) und nur vorübergehend zurückgegeben.
availability_bookingBaseBooking13L35: die Verfügbarkeit, für die die veröffentlichte Schicht im Buchungsbereich steht (wird vom ShiftBookingSyncHelper synchron gehalten, solange die Synchronisation für den Vertrag aktiviert ist).
Felder anzeigen (17)
idintegerPrimärschlüssel der Buchung. Interne ID.
start_timestring (date-time)Beginn der Buchung.
end_timestring (date-time)Ende der Buchung.
booking_typestringArt der Buchung, zum Beispiel normal oder Vertretung.
booking_statusstringStatus der Buchung, zum Beispiel geplant, erledigt oder storniert.
externalbooleanDie Buchung wurde von einer externen Stelle vorgenommen.
modified_timebooleanDer Zeitpunkt der Buchung wurde nach der Erstellung geändert.
modified_locationbooleanDer Standort der Buchung wurde nach der Erstellung geändert.
modified_bookablebooleanDer Buchungsgegenstand der Buchung wurde nach der Erstellung geändert.
modified_performing_personbooleanDer Leiter der Buchung wurde nach der Erstellung geändert.
searching_for_performing_personbooleanFür die Buchung wird noch eine Leitung gesucht.
createdstring (date-time)Zeitpunkt, zu dem der Datensatz angelegt wurde.
updatedstring (date-time)Zeitpunkt, zu dem der Datensatz zuletzt aktualisiert wurde.
namestringName der Einheit.
deletedbooleanDiese Eigenschaft markiert eine Entität als gelöscht / archiviert
colorstringHintergrundfarbe als Hexwert.
fg_colorstringVordergrundfarbe als Hex-Wert.
bookingBaseBooking13L35: der aus dieser Schicht erstellte Termin, falls vorhanden.
Felder anzeigen (17)
idintegerPrimärschlüssel der Buchung. Interne ID.
start_timestring (date-time)Beginn der Buchung.
end_timestring (date-time)Ende der Buchung.
booking_typestringArt der Buchung, zum Beispiel normal oder Vertretung.
booking_statusstringStatus der Buchung, zum Beispiel geplant, erledigt oder storniert.
externalbooleanDie Buchung wurde von einer externen Stelle vorgenommen.
modified_timebooleanDer Zeitpunkt der Buchung wurde nach der Erstellung geändert.
modified_locationbooleanDer Standort der Buchung wurde nach der Erstellung geändert.
modified_bookablebooleanDer Buchungsgegenstand der Buchung wurde nach der Erstellung geändert.
modified_performing_personbooleanDer Leiter der Buchung wurde nach der Erstellung geändert.
searching_for_performing_personbooleanFür die Buchung wird noch eine Leitung gesucht.
createdstring (date-time)Zeitpunkt, zu dem der Datensatz angelegt wurde.
updatedstring (date-time)Zeitpunkt, zu dem der Datensatz zuletzt aktualisiert wurde.
namestringName der Einheit.
deletedbooleanDiese Eigenschaft markiert eine Entität als gelöscht / archiviert
colorstringHintergrundfarbe als Hexwert.
fg_colorstringVordergrundfarbe als Hex-Wert.
lock_versionintegerOptimistische Sperre. Zwei Planer, die dieselbe Schicht bearbeiten, oder eine Wochenveröffentlichung, während jemand eine Schicht darin verschiebt, würden sonst stillschweigend einander überschreiben - der Unterlegene erhält jetzt einen 409. Nur lesend: Doctrine verwaltet den Wert, der Client sendet den zuletzt gesehenen Wert als Query-Parameter lock_version zurück.
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/shift_plan_entry/own \
--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/shift_plan_entry/own', 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/shift_plan_entry/own"
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/shift_plan_entry/own', [
'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/shift_plan_entry/own"),
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/shift_plan_entry/own")
.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/shift_plan_entry/own"
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/shift_plan_entry_controller.dart';
import 'package:iw_erp_api/logic/iw_api_state.dart';
IwApiState().host = 'eure-instanz.iw-erp.de';
IwApiState().currentJwtApiToken = '<TOKEN>';
final result = await ShiftPlanEntryController.getOwn();
if (result.success) {
print(result.data);
}[
{
"id": 42,
"description": "Text",
"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"
},
"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"
},
"employment_contract_group": {
"id": 42,
"name": "Beispiel",
"staged_absence_approval": true,
"shift_booking_sync": true,
"week_total_hours": 1.5,
"week_total_days": 1.5,
"year_vacation_days": 1.5,
"month_vacation_days": 1.5,
"year_vacation_weeks": 1.5,
"monday_hours": 1.5
},
"shift_type": {
"id": 42,
"short_name": "Beispiel",
"color": "#3f5efb",
"name": "Beispiel",
"start_time": "string",
"end_time": "string",
"break_duration_seconds": 1,
"qualification_match_mode": "string",
"default_staff_count": 1,
"sort_order": 1
},
"start": "2026-10-15T09:30:00+02:00",
"end": "2026-10-15T09:30:00+02:00",
"start_date": "2026-10-15T09:30:00+02:00",
"start_month": 1
}
]L35: Termin aus einer Schicht anlegen - Zeit und Person aus der Schicht, Raum, Standort und Typ aus dem Body. Nur dort, wo die Schichtbuchungs-Synchronisation für den Vertrag, die Gruppe oder die Organisation aktiviert ist.
POST/api/time/shift_plan_entry/{id}/booking
Pfad-Parameter
idPflichtstring |
Request-Body application/json
dataobjectFelder anzeigen (4)
namestringbase_bookableintegerbase_locationintegercontent_typeinteger
Antworten
200Der erstellte TerminBaseBooking
Felder anzeigen (16)
idintegerPrimärschlüssel der Buchung. Interne ID.
start_timestring (date-time)Beginn der Buchung.
end_timestring (date-time)Ende der Buchung.
booking_typestringArt der Buchung, zum Beispiel normal oder Vertretung.
booking_statusstringStatus der Buchung, zum Beispiel geplant, erledigt oder storniert.
auto_invoicebooleanRechnungen für diese Buchung werden automatisch erstellt.
waitingbooleanDie Buchung steht auf der Warteliste.
confirmedbooleanDie Buchung ist bestätigt.
externalbooleanDie Buchung wurde von einer externen Stelle vorgenommen.
deletion_reasonstringGrund für die Stornierung der Buchung.
deletion_datestring (date-time)Wann die Buchung storniert wurde, gesetzt durch setDeleted() – null, solange sie aktiv ist, und für Buchungen, die vor Einführung dieses Feldes storniert wurden
billedbooleanDie Buchung wurde abgerechnet.
invoiceInvoice22Rechnung, auf der die Buchung abgerechnet wurde.
Felder anzeigen (38)
idintegerPrimärschlüssel des Rechnungsdokuments. Interne ID.
tokenstringToken, das das Dokument für den öffentlichen Zugriff identifiziert.
numberintegerLaufende Belegnummer.
manual_number_prefixstringPräfix einer manuell eingegebenen Dokumentnummer.
manual_numberintegerManuell eingegebene Dokumentnummer.
number_stringstringBelegnummer, wie sie den Benutzern angezeigt wird.
generation_datestring (date-time)Datum, an dem das Dokument erstellt wurde.
number_datestring (date-time)Datum, das für die Belegnummer verwendet wird.
messagestringAuf dem Dokument gedruckte Nachricht.
currencystringWährung des Dokuments.
namestringName des Dokuments.
due_datestring (date-time)Fälligkeitsdatum des Dokuments.
netto_valuenumber (float)Nettosumme des Dokuments.
brutto_valuenumber (float)Bruttogesamtbetrag des Dokuments.
tax_valuenumber (float)Gesamter Steuerbetrag des Dokuments.
taxTaxPflichtAuf das Dokument angewendeter Steuersatz.
linked_number_titlestringTitel der verknüpften Dokumentnummer.
linked_numberstringNummer des verknüpften Belegs.
statusstringStatus des Dokuments.
previous_statusstringStatus vor der letzten Änderung.
status_updatedstring (date-time)Zeitpunkt, zu dem der Status zuletzt geändert wurde.
archivedbooleanOb das Dokument archiviert ist.
last_pdf_exportstring (date-time)Zeitpunkt, zu dem das PDF zuletzt exportiert wurde.
last_status_exportstringStatus beim letzten Export.
search_stringstringText, unter dem die Entität gesucht werden kann.
accounting_typeAccountingTypePflichtBuchungsart der Rechnung.
payment_typePaymentTypeZahlungsart der Rechnung.
payment_goalPaymentGoalZahlungsbedingung der Rechnung.
expense_categoryExpenseCategory10EÜR-Kategorie für diese Rechnung (Einnahmen-Zuordnung) Wenn nicht gesetzt, wird die Default-Kategorie des AccountingTypes verwendet
buyerInvoiceBuyer21Käufer der Rechnung.
payment_datestring (date-time)Datum, an dem die Rechnung bezahlt wurde.
vat_categorystringDer umsatzsteuerliche Sachverhalt. Der Steuersatz sagt nicht, in welche Zeile der Voranmeldung ein Umsatz gehört. Null Prozent stehen an einer innergemeinschaftlichen Lieferung (Kennzahl 41), an einer Ausfuhr (43), an einer Leistung nach § 13b UStG (60) und an einem steuerfreien Umsatz nach § 4 UStG (48) - vier verschiedene Zeilen, derselbe Steuersatz. Hier ist die einzige Stelle, an der jemand das weiß: beim Schreiben der Rechnung ist bekannt, ob der Kunde eine USt-IdNr. hat und wohin die Ware geht. Später ist es nicht mehr rekonstruierbar. Ohne Angabe der Regelfall - alles andere war bisher nicht erfassbar.
is_payment_date_from_ext_servicebooleanDas Zahlungsdatum stammt von einem externen Dienst.
direct_debit_exportedbooleanDie Rechnung wurde für das Lastschriftverfahren exportiert.
cancel_datestring (date-time)Datum, an dem die Rechnung storniert wurde.
cancel_textstringText der Stornierung.
start_datestring (date-time)Beginn des abgerechneten Zeitraums.
end_datestring (date-time)Ende des abgerechneten Zeitraums.
performing_personCRMPerson10CRM-Person, die die Buchung leitet.
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
secondary_performing_personCRMPerson10Zweite CRM-Person, die die Buchung leitet.
Felder anzeigen (68)
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.
- … 15 weitere Felder
- … 36 weitere Felder
curl --request POST \
--url https://eure-instanz.iw-erp.de/api/time/shift_plan_entry/42/booking \
--header 'content-type: application/json' \
--header 'x-iw-jwt-token: <TOKEN>' \
--data '
{
"data": {
"name": "Beispiel",
"base_bookable": 1,
"base_location": 1,
"content_type": 1
}
}
'const options = {
method: 'POST',
headers: {'x-iw-jwt-token': '<TOKEN>', 'content-type': 'application/json'},
body: JSON.stringify({data: {name: 'Beispiel', base_bookable: 1, base_location: 1, content_type: 1}})
};
fetch('https://eure-instanz.iw-erp.de/api/time/shift_plan_entry/42/booking', 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/shift_plan_entry/42/booking"
payload = { "data": {
"name": "Beispiel",
"base_bookable": 1,
"base_location": 1,
"content_type": 1
} }
headers = {
"x-iw-jwt-token": "<TOKEN>",
"content-type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)<?php
require_once('vendor/autoload.php');
$client = new \GuzzleHttp\Client();
$response = $client->request('POST', 'https://eure-instanz.iw-erp.de/api/time/shift_plan_entry/42/booking', [
'body' => '{"data":{"name":"Beispiel","base_bookable":1,"base_location":1,"content_type":1}}',
'headers' => [
'content-type' => 'application/json',
'x-iw-jwt-token' => '<TOKEN>',
],
]);
echo $response->getBody();using System.Net.Http.Headers;
var client = new HttpClient();
var request = new HttpRequestMessage
{
Method = HttpMethod.Post,
RequestUri = new Uri("https://eure-instanz.iw-erp.de/api/time/shift_plan_entry/42/booking"),
Headers =
{
{ "x-iw-jwt-token", "<TOKEN>" },
},
Content = new StringContent("{\"data\":{\"name\":\"Beispiel\",\"base_bookable\":1,\"base_location\":1,\"content_type\":1}}")
{
Headers =
{
ContentType = new MediaTypeHeaderValue("application/json")
}
}
};
using (var response = await client.SendAsync(request))
{
response.EnsureSuccessStatusCode();
var body = await response.Content.ReadAsStringAsync();
Console.WriteLine(body);
}OkHttpClient client = new OkHttpClient();
MediaType mediaType = MediaType.parse("application/json");
RequestBody body = RequestBody.create(mediaType, "{\"data\":{\"name\":\"Beispiel\",\"base_bookable\":1,\"base_location\":1,\"content_type\":1}}");
Request request = new Request.Builder()
.url("https://eure-instanz.iw-erp.de/api/time/shift_plan_entry/42/booking")
.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/shift_plan_entry/42/booking"
payload := strings.NewReader("{\"data\":{\"name\":\"Beispiel\",\"base_bookable\":1,\"base_location\":1,\"content_type\":1}}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("x-iw-jwt-token", "<TOKEN>")
req.Header.Add("content-type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}Dart mit dem Package iw_erp_api
import 'package:iw_erp_api/clients/shift_plan_entry_controller.dart';
import 'package:iw_erp_api/logic/iw_api_state.dart';
IwApiState().host = 'eure-instanz.iw-erp.de';
IwApiState().currentJwtApiToken = '<TOKEN>';
final result = await ShiftPlanEntryController.createBooking(42);
if (result.success) {
print(result.data);
}{
"id": 42,
"participant_company_name": "Beispiel",
"participant_name": "Beispiel",
"participant_first_name": "Beispiel",
"participant_last_name": "Beispiel",
"participant_address_zip": "30163",
"participant_address_city": "Hannover",
"participant_address_country": "DE",
"participant_email": "lena.hartmann@example.org",
"name": "Beispiel"
}L38: die Arbeitszeit bei dieser Schicht mit der realen Uhrzeit beginnen
POST/api/time/shift_plan_entry/{id}/clock_in
Pfad-Parameter
idPflichtstring |
Antworten
200Einen Arbeitszeiteintrag für den eigenen Dienst startenWorkTimeEntry
Felder anzeigen (27)
idintegerPrimärschlüssel des Arbeitszeiteintrags. Interne ID.
userUser14Benutzer, der gearbeitet 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.
descriptionstringBeschreibung der Arbeit.
startstring (date-time)Beginn der Arbeitszeit.
start_datestringStartdatum der Arbeitszeit als Text.
start_monthintegerMonat des Beginns.
start_yearintegerJahr des Beginns.
endstring (date-time)Ende der Arbeitszeit.
break_startstring (date-time)Beginn der Pause.
break_endstring (date-time)Ende der Pause.
break_durationintegerPausendauer in Sekunden
manual_break_durationintegerZ17.2: Pausendauer in Sekunden ohne Lage, z. B. aus einer genehmigten Korrektur, die nur die Dauer der Pause ändert. Zählt wie eine erfasste Pause, solange keine Pause mit Beginn und Ende erfasst ist; null = keine.
auto_breakbooleanEine Pause wurde automatisch hinzugefügt.
force_no_breakbooleanFür diesen Eintrag wird keine Pause hinzugefügt.
durationintegerDauer in Sekunden
auto_closedbooleanDer Eintrag wurde automatisch abgeschlossen.
has_warningbooleanDer Eintrag hat eine Warnung, zum Beispiel ein fehlendes Ende.
has_scanner_startbooleanDer Beginn wurde mit dem Scanner erfasst.
has_scanner_endbooleanDas Ende wurde mit dem Scanner erfasst.
closed_editingbooleanDie Bearbeitung des Eintrags ist gesperrt.
closed_editing_hrbooleanDie Bearbeitung des Eintrags ist für HR gesperrt.
confirmedbooleanDer Eintrag ist bestätigt.
shift_plan_entryShiftPlanEntry3L38: die Schicht, für die dieser Eintrag eingestempelt wurde. Der Eintrag behält die realen Uhrzeiten; die Verknüpfung gibt nur an, zu welcher geplanten Schicht sie gehören.
Felder anzeigen (29)
opened_absence_typestringDie Abwesenheitsart als einfache Bezeichnung, damit die Planung „Krank“ anzeigen kann, ohne die ganze Anfrage in jede Schicht zu übernehmen.
idintegerPrimärschlüssel des Schichtplan-Eintrags. Interne ID.
userUser14Der Schicht zugewiesener Benutzer.
personCRMPerson10Person, die der Schicht zugewiesen ist.
contractEmploymentContract5Vertrag, auf dem die Schicht geplant ist.
employment_contract_groupEmploymentContractGroupPlanungscontainer - Pflichtangabe, auch wenn eine Person einer anderen Gruppe aushilft.
shift_typeShiftType5Ursprungstyp - Zeiten wurden kopiert, der Verweis dient nur der Information.
startstring (date-time)Beginn des Dienstes.
endstring (date-time)Ende der Schicht.
start_datestringStartdatum des Dienstes als Text.
start_monthintegerMonat der Schicht.
start_yearintegerJahr der Schicht.
break_duration_secondsintegerPausendauer der Schicht in Sekunden.
durationintegerZielsekunden: (Ende - Start) - Pause, wird von recalculate() gepflegt.
required_qualificationEmploymentQualification5Für die Schicht erforderliche Qualifikation.
qualification_match_modestringL18: EXACT verlangt die geforderte Qualifikation selbst; EQUIVALENT (Standard, bisheriges Verhalten) akzeptiert auch verknüpfte oder gleichgruppierte Qualifikationen mit ausreichendem Rang.
statusstringStatus des Dienstes, zum Beispiel geplant oder veröffentlicht.
published_atstring (date-time)Zeitpunkt, zu dem die Schicht veröffentlicht wurde.
descriptionstringBeschreibung der Schicht.
has_warningbooleanGespeichertes Konfliktkennzeichen für Listen-Badges - die konkreten Warnungen werden bei Bedarf berechnet (ShiftPlanHelper) und nur vorübergehend zurückgegeben.
availability_bookingBaseBooking13L35: die Verfügbarkeit, für die die veröffentlichte Schicht im Buchungsbereich steht (wird vom ShiftBookingSyncHelper synchron gehalten, solange die Synchronisation für den Vertrag aktiviert ist).
bookingBaseBooking13L35: der aus dieser Schicht erstellte Termin, falls vorhanden.
opened_reasonstringGrund, warum die Schicht für andere Mitarbeitende freigegeben wurde.
opened_atstring (date-time)Zeitpunkt, zu dem die Schicht geöffnet wurde.
opened_from_personCRMPerson10Wer die Schicht vor der Freigabe bearbeitet hat – die Zuweisung selbst ist entfallen, und die Planung muss wissen, wen sie fragen kann.
opened_absence_requestNonWorkTimeRequest5Die Abwesenheit, die ihn freigegeben hat, für OPENED_REASON_ABSENCE. Enthält Art und Tage, sodass die Planung „krank“ statt nur „jemand ist abwesend“ anzeigen kann.
lock_versionintegerOptimistische Sperre. Zwei Planer, die dieselbe Schicht bearbeiten, oder eine Wochenveröffentlichung, während jemand eine Schicht darin verschiebt, würden sonst stillschweigend einander überschreiben - der Unterlegene erhält jetzt einen 409. Nur lesend: Doctrine verwaltet den Wert, der Client sendet den zuletzt gesehenen Wert als Query-Parameter lock_version zurück.
createdstring (date-time)Zeitpunkt, zu dem der Datensatz angelegt wurde.
updatedstring (date-time)Zeitpunkt, zu dem der Datensatz zuletzt aktualisiert wurde.
shift_start_deviation_minutesintegerL38: Minuten, um die der reale Beginn vor (negativ) oder nach (positiv) dem geplanten Schichtbeginn liegt; null ohne Schicht.
shift_end_deviation_minutesintegerL38: Minuten, um die das reale Ende vor (negativ) oder nach (positiv) dem geplanten Schichtende liegt.
content_typestringArt der Tätigkeit, zum Beispiel Arbeit oder Training.
search_stringstringText, unter dem die Entität gesucht werden kann.
curl --request POST \
--url https://eure-instanz.iw-erp.de/api/time/shift_plan_entry/42/clock_in \
--header 'x-iw-jwt-token: <TOKEN>'const options = {method: 'POST', headers: {'x-iw-jwt-token': '<TOKEN>'}};
fetch('https://eure-instanz.iw-erp.de/api/time/shift_plan_entry/42/clock_in', 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/shift_plan_entry/42/clock_in"
headers = {"x-iw-jwt-token": "<TOKEN>"}
response = requests.post(url, headers=headers)
print(response.text)<?php
require_once('vendor/autoload.php');
$client = new \GuzzleHttp\Client();
$response = $client->request('POST', 'https://eure-instanz.iw-erp.de/api/time/shift_plan_entry/42/clock_in', [
'headers' => [
'x-iw-jwt-token' => '<TOKEN>',
],
]);
echo $response->getBody();using System.Net.Http.Headers;
var client = new HttpClient();
var request = new HttpRequestMessage
{
Method = HttpMethod.Post,
RequestUri = new Uri("https://eure-instanz.iw-erp.de/api/time/shift_plan_entry/42/clock_in"),
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/shift_plan_entry/42/clock_in")
.post(null)
.addHeader("x-iw-jwt-token", "<TOKEN>")
.build();
Response response = client.newCall(request).execute();package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://eure-instanz.iw-erp.de/api/time/shift_plan_entry/42/clock_in"
req, _ := http.NewRequest("POST", url, nil)
req.Header.Add("x-iw-jwt-token", "<TOKEN>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}Dart mit package:http (kein Controller im Package iw_erp_api)
import 'package:http/http.dart' as http;
final response = await http.post(
Uri.parse('https://eure-instanz.iw-erp.de/api/time/shift_plan_entry/42/clock_in'),
headers: {'x-iw-jwt-token': '<TOKEN>'},
);
print(response.body);{
"id": 42,
"description": "Text",
"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"
},
"start": "2026-10-15T09:30:00+02:00",
"start_date": "2026-10-15T09:30:00+02:00",
"start_month": 1,
"start_year": 1,
"end": "2026-10-15T09:30:00+02:00",
"break_start": "2026-10-15T09:30:00+02:00",
"break_end": "2026-10-15T09:30:00+02:00"
}L38: die laufende Arbeitszeit bei dieser Schicht mit der realen Uhrzeit beenden
POST/api/time/shift_plan_entry/{id}/clock_out
Pfad-Parameter
idPflichtstring |
Antworten
200Die laufende Arbeitszeit der eigenen Schicht beendenWorkTimeEntry
Felder anzeigen (27)
idintegerPrimärschlüssel des Arbeitszeiteintrags. Interne ID.
userUser14Benutzer, der gearbeitet 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.
descriptionstringBeschreibung der Arbeit.
startstring (date-time)Beginn der Arbeitszeit.
start_datestringStartdatum der Arbeitszeit als Text.
start_monthintegerMonat des Beginns.
start_yearintegerJahr des Beginns.
endstring (date-time)Ende der Arbeitszeit.
break_startstring (date-time)Beginn der Pause.
break_endstring (date-time)Ende der Pause.
break_durationintegerPausendauer in Sekunden
manual_break_durationintegerZ17.2: Pausendauer in Sekunden ohne Lage, z. B. aus einer genehmigten Korrektur, die nur die Dauer der Pause ändert. Zählt wie eine erfasste Pause, solange keine Pause mit Beginn und Ende erfasst ist; null = keine.
auto_breakbooleanEine Pause wurde automatisch hinzugefügt.
force_no_breakbooleanFür diesen Eintrag wird keine Pause hinzugefügt.
durationintegerDauer in Sekunden
auto_closedbooleanDer Eintrag wurde automatisch abgeschlossen.
has_warningbooleanDer Eintrag hat eine Warnung, zum Beispiel ein fehlendes Ende.
has_scanner_startbooleanDer Beginn wurde mit dem Scanner erfasst.
has_scanner_endbooleanDas Ende wurde mit dem Scanner erfasst.
closed_editingbooleanDie Bearbeitung des Eintrags ist gesperrt.
closed_editing_hrbooleanDie Bearbeitung des Eintrags ist für HR gesperrt.
confirmedbooleanDer Eintrag ist bestätigt.
shift_plan_entryShiftPlanEntry3L38: die Schicht, für die dieser Eintrag eingestempelt wurde. Der Eintrag behält die realen Uhrzeiten; die Verknüpfung gibt nur an, zu welcher geplanten Schicht sie gehören.
Felder anzeigen (29)
opened_absence_typestringDie Abwesenheitsart als einfache Bezeichnung, damit die Planung „Krank“ anzeigen kann, ohne die ganze Anfrage in jede Schicht zu übernehmen.
idintegerPrimärschlüssel des Schichtplan-Eintrags. Interne ID.
userUser14Der Schicht zugewiesener Benutzer.
personCRMPerson10Person, die der Schicht zugewiesen ist.
contractEmploymentContract5Vertrag, auf dem die Schicht geplant ist.
employment_contract_groupEmploymentContractGroupPlanungscontainer - Pflichtangabe, auch wenn eine Person einer anderen Gruppe aushilft.
shift_typeShiftType5Ursprungstyp - Zeiten wurden kopiert, der Verweis dient nur der Information.
startstring (date-time)Beginn des Dienstes.
endstring (date-time)Ende der Schicht.
start_datestringStartdatum des Dienstes als Text.
start_monthintegerMonat der Schicht.
start_yearintegerJahr der Schicht.
break_duration_secondsintegerPausendauer der Schicht in Sekunden.
durationintegerZielsekunden: (Ende - Start) - Pause, wird von recalculate() gepflegt.
required_qualificationEmploymentQualification5Für die Schicht erforderliche Qualifikation.
qualification_match_modestringL18: EXACT verlangt die geforderte Qualifikation selbst; EQUIVALENT (Standard, bisheriges Verhalten) akzeptiert auch verknüpfte oder gleichgruppierte Qualifikationen mit ausreichendem Rang.
statusstringStatus des Dienstes, zum Beispiel geplant oder veröffentlicht.
published_atstring (date-time)Zeitpunkt, zu dem die Schicht veröffentlicht wurde.
descriptionstringBeschreibung der Schicht.
has_warningbooleanGespeichertes Konfliktkennzeichen für Listen-Badges - die konkreten Warnungen werden bei Bedarf berechnet (ShiftPlanHelper) und nur vorübergehend zurückgegeben.
availability_bookingBaseBooking13L35: die Verfügbarkeit, für die die veröffentlichte Schicht im Buchungsbereich steht (wird vom ShiftBookingSyncHelper synchron gehalten, solange die Synchronisation für den Vertrag aktiviert ist).
bookingBaseBooking13L35: der aus dieser Schicht erstellte Termin, falls vorhanden.
opened_reasonstringGrund, warum die Schicht für andere Mitarbeitende freigegeben wurde.
opened_atstring (date-time)Zeitpunkt, zu dem die Schicht geöffnet wurde.
opened_from_personCRMPerson10Wer die Schicht vor der Freigabe bearbeitet hat – die Zuweisung selbst ist entfallen, und die Planung muss wissen, wen sie fragen kann.
opened_absence_requestNonWorkTimeRequest5Die Abwesenheit, die ihn freigegeben hat, für OPENED_REASON_ABSENCE. Enthält Art und Tage, sodass die Planung „krank“ statt nur „jemand ist abwesend“ anzeigen kann.
lock_versionintegerOptimistische Sperre. Zwei Planer, die dieselbe Schicht bearbeiten, oder eine Wochenveröffentlichung, während jemand eine Schicht darin verschiebt, würden sonst stillschweigend einander überschreiben - der Unterlegene erhält jetzt einen 409. Nur lesend: Doctrine verwaltet den Wert, der Client sendet den zuletzt gesehenen Wert als Query-Parameter lock_version zurück.
createdstring (date-time)Zeitpunkt, zu dem der Datensatz angelegt wurde.
updatedstring (date-time)Zeitpunkt, zu dem der Datensatz zuletzt aktualisiert wurde.
shift_start_deviation_minutesintegerL38: Minuten, um die der reale Beginn vor (negativ) oder nach (positiv) dem geplanten Schichtbeginn liegt; null ohne Schicht.
shift_end_deviation_minutesintegerL38: Minuten, um die das reale Ende vor (negativ) oder nach (positiv) dem geplanten Schichtende liegt.
content_typestringArt der Tätigkeit, zum Beispiel Arbeit oder Training.
search_stringstringText, unter dem die Entität gesucht werden kann.
curl --request POST \
--url https://eure-instanz.iw-erp.de/api/time/shift_plan_entry/42/clock_out \
--header 'x-iw-jwt-token: <TOKEN>'const options = {method: 'POST', headers: {'x-iw-jwt-token': '<TOKEN>'}};
fetch('https://eure-instanz.iw-erp.de/api/time/shift_plan_entry/42/clock_out', 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/shift_plan_entry/42/clock_out"
headers = {"x-iw-jwt-token": "<TOKEN>"}
response = requests.post(url, headers=headers)
print(response.text)<?php
require_once('vendor/autoload.php');
$client = new \GuzzleHttp\Client();
$response = $client->request('POST', 'https://eure-instanz.iw-erp.de/api/time/shift_plan_entry/42/clock_out', [
'headers' => [
'x-iw-jwt-token' => '<TOKEN>',
],
]);
echo $response->getBody();using System.Net.Http.Headers;
var client = new HttpClient();
var request = new HttpRequestMessage
{
Method = HttpMethod.Post,
RequestUri = new Uri("https://eure-instanz.iw-erp.de/api/time/shift_plan_entry/42/clock_out"),
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/shift_plan_entry/42/clock_out")
.post(null)
.addHeader("x-iw-jwt-token", "<TOKEN>")
.build();
Response response = client.newCall(request).execute();package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://eure-instanz.iw-erp.de/api/time/shift_plan_entry/42/clock_out"
req, _ := http.NewRequest("POST", url, nil)
req.Header.Add("x-iw-jwt-token", "<TOKEN>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}Dart mit package:http (kein Controller im Package iw_erp_api)
import 'package:http/http.dart' as http;
final response = await http.post(
Uri.parse('https://eure-instanz.iw-erp.de/api/time/shift_plan_entry/42/clock_out'),
headers: {'x-iw-jwt-token': '<TOKEN>'},
);
print(response.body);{
"id": 42,
"description": "Text",
"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"
},
"start": "2026-10-15T09:30:00+02:00",
"start_date": "2026-10-15T09:30:00+02:00",
"start_month": 1,
"start_year": 1,
"end": "2026-10-15T09:30:00+02:00",
"break_start": "2026-10-15T09:30:00+02:00",
"break_end": "2026-10-15T09:30:00+02:00"
}Diese Methode liefert alle ShiftPlanEntry-Objekte, die der aktuelle Benutzer planen darf
GET/api/time/shift_plan_entry
Query-Parameter
idinteger | |
startDatestring | |
startMonthstring | |
startYearstring | |
employmentContractGroupstring | Planungscontainer - Pflichtangabe, auch wenn eine Person einer anderen Gruppe aushilft. | Benötigt Zugriffsrecht: SCOPE |
personstring | |
userstring | |
shiftTypestring | Ursprungstyp - Zeiten wurden kopiert, der Verweis dient nur der Information. |
statusstring | |
contractstring | |
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 ShiftPlanEntry-Objekte.array<ShiftPlanEntry>
Felder anzeigen (23)
idintegerPrimärschlüssel des Schichtplan-Eintrags. Interne ID.
userUser14Der Schicht zugewiesener Benutzer.
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.
personCRMPerson10Person, die der Schicht zugewiesen ist.
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
employment_contract_groupEmploymentContractGroupPlanungscontainer - Pflichtangabe, auch wenn eine Person einer anderen Gruppe aushilft.
Felder anzeigen (25)
staged_absence_approvalbooleannull übernimmt die Organisation; false deaktiviert die gestufte Freigabe ausdrücklich.
shift_booking_syncbooleanL35: Schichten als Verfügbarkeiten / Termine im Buchungsbereich; null übernimmt die Organisation, false schaltet es für diese Gruppe aus.
idintegerPrimärschlüssel der Vertragsgruppe. Interne ID.
week_total_hoursnumber (float)Gesamte Arbeitsstunden pro Woche.
week_total_daysnumber (float)Arbeitstage pro Woche.
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.
allow_app_time_trackingbooleanOb die Zeiterfassung in der App erlaubt ist.
allow_scanner_time_trackingbooleanOb die Zeiterfassung per Scanner erlaubt ist.
allow_app_non_work_time_managementbooleanOb arbeitsfreie Zeit in der App verwaltet werden kann.
request_lead_time_daysintegerTage, die ein Abwesenheitsantrag dieser Gruppe vor seinem ersten Tag eingereicht werden muss. null greift auf die installationsweite Einstellung zurück – eine bestehende Gruppe verhält sich daher weiterhin genauso wie bisher.
school_holiday_regionSchoolHolidayRegionU09: der Schulkalender dieser Gruppe, wenn er vom Kalender der Organisation abweicht (Auszubildende, die in einem anderen Bundesland zur Schule gehen). null = der der Organisation.
search_stringstringText, unter dem die Entität gesucht werden kann.
deletedbooleanDiese Eigenschaft markiert eine Entität als gelöscht / archiviert
namestringName der Einheit.
shift_typeShiftType4Ursprungstyp - Zeiten wurden kopiert, der Verweis dient nur der Information.
Felder anzeigen (17)
idintegerPrimärschlüssel des Schichttyps. Interne ID.
employment_contract_groupEmploymentContractGroupGruppe, zu der dieser Typ gehört (null = für die gesamte Organisation / Installation verfügbar).
employment_organizationEmploymentOrganization5Organisation, zu der der Schichttyp gehört.
short_namestringKurzcode für Raster und Druck („F“, „S“, „N“).
start_timestringStandardstartzeit als HH:MM.
end_timestringStandardendzeit als HH:MM - eine Endzeit vor der Startzeit bedeutet, dass die Schicht am folgenden Tag endet (Nachtschicht).
break_duration_secondsintegerPausendauer der Schicht in Sekunden.
colorstringFarbe des Schichttyps im Schichtplan als Hex-Code.
required_qualificationEmploymentQualification3Standard-Qualifikationsanforderung für Schichten dieses Typs.
qualification_match_modestringL18: EXACT verlangt die geforderte Qualifikation selbst; EQUIVALENT (Standard, bisheriges Verhalten) akzeptiert auch verknüpfte oder gleichgruppierte Qualifikationen mit ausreichendem Rang.
default_staff_countintegerStandardanzahl der benötigten Mitarbeitenden für die Schicht.
sort_orderintegerSortierreihenfolge des Diensttyps in Listen.
search_stringstringText, unter dem die Entität gesucht werden kann.
deletedbooleanDiese Eigenschaft markiert eine Entität als gelöscht / archiviert
namestringName der Einheit.
createdstring (date-time)Zeitpunkt, zu dem der Datensatz angelegt wurde.
updatedstring (date-time)Zeitpunkt, zu dem der Datensatz zuletzt aktualisiert wurde.
startstring (date-time)Beginn des Dienstes.
endstring (date-time)Ende der Schicht.
start_datestringStartdatum des Dienstes als Text.
start_monthintegerMonat der Schicht.
start_yearintegerJahr der Schicht.
break_duration_secondsintegerPausendauer der Schicht in Sekunden.
durationintegerZielsekunden: (Ende - Start) - Pause, wird von recalculate() gepflegt.
required_qualificationEmploymentQualification3Für die Schicht erforderliche Qualifikation.
Felder anzeigen (7)
idintegerPrimärschlüssel der Beschäftigungsqualifikation. Interne ID.
rankingintegerRangfolge innerhalb eines Äquivalenznetzwerks - eine verknüpfte Qualifikation mit gleichem oder höherem Rang erfüllt auch Anforderungen an diese Qualifikation.
equivalent_qualificationsarray<EmploymentQualification3>Verknüpfte ("gleichwertige") Qualifikationen. Vom Controller symmetrisch gehalten: jede Verknüpfung A->B wird als B->A gespiegelt; der Rang entscheidet, welche Richtung tatsächlich welche abdeckt.
qualification_groupEmploymentQualificationGroupL17/A06: die "Schublade", zu der diese Qualifikation gehört. Mitglieder einer Gruppe decken sich gegenseitig die Anforderungen innerhalb ihres Rangs ab, wie es eine direkte Verknüpfung täte.
search_stringstringText, unter dem die Entität gesucht werden kann.
deletedbooleanDiese Eigenschaft markiert eine Entität als gelöscht / archiviert
namestringName der Einheit.
qualification_match_modestringL18: EXACT verlangt die geforderte Qualifikation selbst; EQUIVALENT (Standard, bisheriges Verhalten) akzeptiert auch verknüpfte oder gleichgruppierte Qualifikationen mit ausreichendem Rang.
statusstringStatus des Dienstes, zum Beispiel geplant oder veröffentlicht.
published_atstring (date-time)Zeitpunkt, zu dem die Schicht veröffentlicht wurde.
descriptionstringBeschreibung der Schicht.
has_warningbooleanGespeichertes Konfliktkennzeichen für Listen-Badges - die konkreten Warnungen werden bei Bedarf berechnet (ShiftPlanHelper) und nur vorübergehend zurückgegeben.
availability_bookingBaseBooking13L35: die Verfügbarkeit, für die die veröffentlichte Schicht im Buchungsbereich steht (wird vom ShiftBookingSyncHelper synchron gehalten, solange die Synchronisation für den Vertrag aktiviert ist).
Felder anzeigen (17)
idintegerPrimärschlüssel der Buchung. Interne ID.
start_timestring (date-time)Beginn der Buchung.
end_timestring (date-time)Ende der Buchung.
booking_typestringArt der Buchung, zum Beispiel normal oder Vertretung.
booking_statusstringStatus der Buchung, zum Beispiel geplant, erledigt oder storniert.
externalbooleanDie Buchung wurde von einer externen Stelle vorgenommen.
modified_timebooleanDer Zeitpunkt der Buchung wurde nach der Erstellung geändert.
modified_locationbooleanDer Standort der Buchung wurde nach der Erstellung geändert.
modified_bookablebooleanDer Buchungsgegenstand der Buchung wurde nach der Erstellung geändert.
modified_performing_personbooleanDer Leiter der Buchung wurde nach der Erstellung geändert.
searching_for_performing_personbooleanFür die Buchung wird noch eine Leitung gesucht.
createdstring (date-time)Zeitpunkt, zu dem der Datensatz angelegt wurde.
updatedstring (date-time)Zeitpunkt, zu dem der Datensatz zuletzt aktualisiert wurde.
namestringName der Einheit.
deletedbooleanDiese Eigenschaft markiert eine Entität als gelöscht / archiviert
colorstringHintergrundfarbe als Hexwert.
fg_colorstringVordergrundfarbe als Hex-Wert.
bookingBaseBooking13L35: der aus dieser Schicht erstellte Termin, falls vorhanden.
Felder anzeigen (17)
idintegerPrimärschlüssel der Buchung. Interne ID.
start_timestring (date-time)Beginn der Buchung.
end_timestring (date-time)Ende der Buchung.
booking_typestringArt der Buchung, zum Beispiel normal oder Vertretung.
booking_statusstringStatus der Buchung, zum Beispiel geplant, erledigt oder storniert.
externalbooleanDie Buchung wurde von einer externen Stelle vorgenommen.
modified_timebooleanDer Zeitpunkt der Buchung wurde nach der Erstellung geändert.
modified_locationbooleanDer Standort der Buchung wurde nach der Erstellung geändert.
modified_bookablebooleanDer Buchungsgegenstand der Buchung wurde nach der Erstellung geändert.
modified_performing_personbooleanDer Leiter der Buchung wurde nach der Erstellung geändert.
searching_for_performing_personbooleanFür die Buchung wird noch eine Leitung gesucht.
createdstring (date-time)Zeitpunkt, zu dem der Datensatz angelegt wurde.
updatedstring (date-time)Zeitpunkt, zu dem der Datensatz zuletzt aktualisiert wurde.
namestringName der Einheit.
deletedbooleanDiese Eigenschaft markiert eine Entität als gelöscht / archiviert
colorstringHintergrundfarbe als Hexwert.
fg_colorstringVordergrundfarbe als Hex-Wert.
lock_versionintegerOptimistische Sperre. Zwei Planer, die dieselbe Schicht bearbeiten, oder eine Wochenveröffentlichung, während jemand eine Schicht darin verschiebt, würden sonst stillschweigend einander überschreiben - der Unterlegene erhält jetzt einen 409. Nur lesend: Doctrine verwaltet den Wert, der Client sendet den zuletzt gesehenen Wert als Query-Parameter lock_version zurück.
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/shift_plan_entry \
--header 'x-iw-jwt-token: <TOKEN>'const options = {method: 'GET', headers: {'x-iw-jwt-token': '<TOKEN>'}};
fetch('https://eure-instanz.iw-erp.de/api/time/shift_plan_entry', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://eure-instanz.iw-erp.de/api/time/shift_plan_entry"
headers = {"x-iw-jwt-token": "<TOKEN>"}
response = requests.get(url, headers=headers)
print(response.text)<?php
require_once('vendor/autoload.php');
$client = new \GuzzleHttp\Client();
$response = $client->request('GET', 'https://eure-instanz.iw-erp.de/api/time/shift_plan_entry', [
'headers' => [
'x-iw-jwt-token' => '<TOKEN>',
],
]);
echo $response->getBody();using System.Net.Http.Headers;
var client = new HttpClient();
var request = new HttpRequestMessage
{
Method = HttpMethod.Get,
RequestUri = new Uri("https://eure-instanz.iw-erp.de/api/time/shift_plan_entry"),
Headers =
{
{ "x-iw-jwt-token", "<TOKEN>" },
},
};
using (var response = await client.SendAsync(request))
{
response.EnsureSuccessStatusCode();
var body = await response.Content.ReadAsStringAsync();
Console.WriteLine(body);
}OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder()
.url("https://eure-instanz.iw-erp.de/api/time/shift_plan_entry")
.get()
.addHeader("x-iw-jwt-token", "<TOKEN>")
.build();
Response response = client.newCall(request).execute();package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://eure-instanz.iw-erp.de/api/time/shift_plan_entry"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("x-iw-jwt-token", "<TOKEN>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}Dart mit dem Package iw_erp_api
import 'package:iw_erp_api/clients/shift_plan_entry_controller.dart';
import 'package:iw_erp_api/logic/iw_api_state.dart';
IwApiState().host = 'eure-instanz.iw-erp.de';
IwApiState().currentJwtApiToken = '<TOKEN>';
final result = await ShiftPlanEntryController.getAll();
if (result.success) {
print(result.data);
}[
{
"id": 42,
"description": "Text",
"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"
},
"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"
},
"employment_contract_group": {
"id": 42,
"name": "Beispiel",
"staged_absence_approval": true,
"shift_booking_sync": true,
"week_total_hours": 1.5,
"week_total_days": 1.5,
"year_vacation_days": 1.5,
"month_vacation_days": 1.5,
"year_vacation_weeks": 1.5,
"monday_hours": 1.5
},
"shift_type": {
"id": 42,
"short_name": "Beispiel",
"color": "#3f5efb",
"name": "Beispiel",
"start_time": "string",
"end_time": "string",
"break_duration_seconds": 1,
"qualification_match_mode": "string",
"default_staff_count": 1,
"sort_order": 1
},
"start": "2026-10-15T09:30:00+02:00",
"end": "2026-10-15T09:30:00+02:00",
"start_date": "2026-10-15T09:30:00+02:00",
"start_month": 1
}
]ShiftPlanEntry neu anlegen
POST/api/time/shift_plan_entry
Request-Body application/json
dataShiftPlanEntry2Felder anzeigen (5)
startstring (date-time)Beginn des Dienstes.
endstring (date-time)Ende der Schicht.
break_duration_secondsintegerPausendauer der Schicht in Sekunden.
qualification_match_modestringL18: EXACT verlangt die geforderte Qualifikation selbst; EQUIVALENT (Standard, bisheriges Verhalten) akzeptiert auch verknüpfte oder gleichgruppierte Qualifikationen mit ausreichendem Rang.
descriptionstringBeschreibung der Schicht.
Antworten
200ShiftPlanEntry neu anlegenShiftPlanEntry3
Felder anzeigen (19)
opened_absence_typestringDie Abwesenheitsart als einfache Bezeichnung, damit die Planung „Krank“ anzeigen kann, ohne die ganze Anfrage in jede Schicht zu übernehmen.
idintegerPrimärschlüssel des Schichtplan-Eintrags. Interne ID.
userUser14Der Schicht zugewiesener Benutzer.
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.
personCRMPerson10Person, die der Schicht zugewiesen ist.
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
contractEmploymentContract5Vertrag, auf dem die Schicht geplant ist.
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.
employment_contract_groupEmploymentContractGroupPlanungscontainer - Pflichtangabe, auch wenn eine Person einer anderen Gruppe aushilft.
Felder anzeigen (25)
staged_absence_approvalbooleannull übernimmt die Organisation; false deaktiviert die gestufte Freigabe ausdrücklich.
shift_booking_syncbooleanL35: Schichten als Verfügbarkeiten / Termine im Buchungsbereich; null übernimmt die Organisation, false schaltet es für diese Gruppe aus.
idintegerPrimärschlüssel der Vertragsgruppe. Interne ID.
week_total_hoursnumber (float)Gesamte Arbeitsstunden pro Woche.
week_total_daysnumber (float)Arbeitstage pro Woche.
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.
allow_app_time_trackingbooleanOb die Zeiterfassung in der App erlaubt ist.
allow_scanner_time_trackingbooleanOb die Zeiterfassung per Scanner erlaubt ist.
allow_app_non_work_time_managementbooleanOb arbeitsfreie Zeit in der App verwaltet werden kann.
request_lead_time_daysintegerTage, die ein Abwesenheitsantrag dieser Gruppe vor seinem ersten Tag eingereicht werden muss. null greift auf die installationsweite Einstellung zurück – eine bestehende Gruppe verhält sich daher weiterhin genauso wie bisher.
school_holiday_regionSchoolHolidayRegionU09: der Schulkalender dieser Gruppe, wenn er vom Kalender der Organisation abweicht (Auszubildende, die in einem anderen Bundesland zur Schule gehen). null = der der Organisation.
search_stringstringText, unter dem die Entität gesucht werden kann.
deletedbooleanDiese Eigenschaft markiert eine Entität als gelöscht / archiviert
namestringName der Einheit.
shift_typeShiftType5Ursprungstyp - Zeiten wurden kopiert, der Verweis dient nur der Information.
Felder anzeigen (17)
idintegerPrimärschlüssel des Schichttyps. Interne ID.
employment_contract_groupEmploymentContractGroupGruppe, zu der dieser Typ gehört (null = für die gesamte Organisation / Installation verfügbar).
employment_organizationEmploymentOrganization8Organisation, zu der der Schichttyp gehört.
short_namestringKurzcode für Raster und Druck („F“, „S“, „N“).
start_timestringStandardstartzeit als HH:MM.
end_timestringStandardendzeit als HH:MM - eine Endzeit vor der Startzeit bedeutet, dass die Schicht am folgenden Tag endet (Nachtschicht).
break_duration_secondsintegerPausendauer der Schicht in Sekunden.
colorstringFarbe des Schichttyps im Schichtplan als Hex-Code.
required_qualificationEmploymentQualification5Standard-Qualifikationsanforderung für Schichten dieses Typs.
qualification_match_modestringL18: EXACT verlangt die geforderte Qualifikation selbst; EQUIVALENT (Standard, bisheriges Verhalten) akzeptiert auch verknüpfte oder gleichgruppierte Qualifikationen mit ausreichendem Rang.
default_staff_countintegerStandardanzahl der benötigten Mitarbeitenden für die Schicht.
sort_orderintegerSortierreihenfolge des Diensttyps in Listen.
search_stringstringText, unter dem die Entität gesucht werden kann.
deletedbooleanDiese Eigenschaft markiert eine Entität als gelöscht / archiviert
namestringName der Einheit.
createdstring (date-time)Zeitpunkt, zu dem der Datensatz angelegt wurde.
updatedstring (date-time)Zeitpunkt, zu dem der Datensatz zuletzt aktualisiert wurde.
startstring (date-time)Beginn des Dienstes.
endstring (date-time)Ende der Schicht.
start_datestringStartdatum des Dienstes als Text.
start_monthintegerMonat der Schicht.
start_yearintegerJahr der Schicht.
break_duration_secondsintegerPausendauer der Schicht in Sekunden.
durationintegerZielsekunden: (Ende - Start) - Pause, wird von recalculate() gepflegt.
required_qualificationEmploymentQualification5Für die Schicht erforderliche Qualifikation.
Felder anzeigen (7)
idintegerPrimärschlüssel der Beschäftigungsqualifikation. Interne ID.
rankingintegerRangfolge innerhalb eines Äquivalenznetzwerks - eine verknüpfte Qualifikation mit gleichem oder höherem Rang erfüllt auch Anforderungen an diese Qualifikation.
equivalent_qualificationsarray<EmploymentQualification5>Verknüpfte ("gleichwertige") Qualifikationen. Vom Controller symmetrisch gehalten: jede Verknüpfung A->B wird als B->A gespiegelt; der Rang entscheidet, welche Richtung tatsächlich welche abdeckt.
qualification_groupEmploymentQualificationGroupL17/A06: die "Schublade", zu der diese Qualifikation gehört. Mitglieder einer Gruppe decken sich gegenseitig die Anforderungen innerhalb ihres Rangs ab, wie es eine direkte Verknüpfung täte.
search_stringstringText, unter dem die Entität gesucht werden kann.
deletedbooleanDiese Eigenschaft markiert eine Entität als gelöscht / archiviert
namestringName der Einheit.
qualification_match_modestringL18: EXACT verlangt die geforderte Qualifikation selbst; EQUIVALENT (Standard, bisheriges Verhalten) akzeptiert auch verknüpfte oder gleichgruppierte Qualifikationen mit ausreichendem Rang.
statusstringStatus des Dienstes, zum Beispiel geplant oder veröffentlicht.
published_atstring (date-time)Zeitpunkt, zu dem die Schicht veröffentlicht wurde.
- … 11 weitere Felder
curl --request POST \
--url https://eure-instanz.iw-erp.de/api/time/shift_plan_entry \
--header 'content-type: application/json' \
--header 'x-iw-jwt-token: <TOKEN>' \
--data '
{
"data": {
"description": "Text",
"start": "2026-10-15T09:30:00+02:00",
"end": "2026-10-15T09:30:00+02:00",
"break_duration_seconds": 1,
"qualification_match_mode": "string"
}
}
'const options = {
method: 'POST',
headers: {'x-iw-jwt-token': '<TOKEN>', 'content-type': 'application/json'},
body: JSON.stringify({
data: {
description: 'Text',
start: '2026-10-15T09:30:00+02:00',
end: '2026-10-15T09:30:00+02:00',
break_duration_seconds: 1,
qualification_match_mode: 'string'
}
})
};
fetch('https://eure-instanz.iw-erp.de/api/time/shift_plan_entry', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://eure-instanz.iw-erp.de/api/time/shift_plan_entry"
payload = { "data": {
"description": "Text",
"start": "2026-10-15T09:30:00+02:00",
"end": "2026-10-15T09:30:00+02:00",
"break_duration_seconds": 1,
"qualification_match_mode": "string"
} }
headers = {
"x-iw-jwt-token": "<TOKEN>",
"content-type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)<?php
require_once('vendor/autoload.php');
$client = new \GuzzleHttp\Client();
$response = $client->request('POST', 'https://eure-instanz.iw-erp.de/api/time/shift_plan_entry', [
'body' => '{"data":{"description":"Text","start":"2026-10-15T09:30:00+02:00","end":"2026-10-15T09:30:00+02:00","break_duration_seconds":1,"qualification_match_mode":"string"}}',
'headers' => [
'content-type' => 'application/json',
'x-iw-jwt-token' => '<TOKEN>',
],
]);
echo $response->getBody();using System.Net.Http.Headers;
var client = new HttpClient();
var request = new HttpRequestMessage
{
Method = HttpMethod.Post,
RequestUri = new Uri("https://eure-instanz.iw-erp.de/api/time/shift_plan_entry"),
Headers =
{
{ "x-iw-jwt-token", "<TOKEN>" },
},
Content = new StringContent("{\"data\":{\"description\":\"Text\",\"start\":\"2026-10-15T09:30:00+02:00\",\"end\":\"2026-10-15T09:30:00+02:00\",\"break_duration_seconds\":1,\"qualification_match_mode\":\"string\"}}")
{
Headers =
{
ContentType = new MediaTypeHeaderValue("application/json")
}
}
};
using (var response = await client.SendAsync(request))
{
response.EnsureSuccessStatusCode();
var body = await response.Content.ReadAsStringAsync();
Console.WriteLine(body);
}OkHttpClient client = new OkHttpClient();
MediaType mediaType = MediaType.parse("application/json");
RequestBody body = RequestBody.create(mediaType, "{\"data\":{\"description\":\"Text\",\"start\":\"2026-10-15T09:30:00+02:00\",\"end\":\"2026-10-15T09:30:00+02:00\",\"break_duration_seconds\":1,\"qualification_match_mode\":\"string\"}}");
Request request = new Request.Builder()
.url("https://eure-instanz.iw-erp.de/api/time/shift_plan_entry")
.post(body)
.addHeader("x-iw-jwt-token", "<TOKEN>")
.addHeader("content-type", "application/json")
.build();
Response response = client.newCall(request).execute();package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://eure-instanz.iw-erp.de/api/time/shift_plan_entry"
payload := strings.NewReader("{\"data\":{\"description\":\"Text\",\"start\":\"2026-10-15T09:30:00+02:00\",\"end\":\"2026-10-15T09:30:00+02:00\",\"break_duration_seconds\":1,\"qualification_match_mode\":\"string\"}}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("x-iw-jwt-token", "<TOKEN>")
req.Header.Add("content-type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}Dart mit dem Package iw_erp_api
import 'package:iw_erp_api/clients/shift_plan_entry_controller.dart';
import 'package:iw_erp_api/logic/iw_api_state.dart';
import 'package:iw_erp_api/model/shift_plan_entry.dart';
IwApiState().host = 'eure-instanz.iw-erp.de';
IwApiState().currentJwtApiToken = '<TOKEN>';
final result = await ShiftPlanEntryController.post(ShiftPlanEntry.fromJson({
"description": "Text",
"start": "2026-10-15T09:30:00+02:00",
"end": "2026-10-15T09:30:00+02:00",
"break_duration_seconds": 1,
"qualification_match_mode": "string"
}));
if (result.success) {
print(result.data);
}{
"id": 42,
"description": "Text",
"opened_absence_type": "string",
"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"
},
"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"
},
"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
},
"employment_contract_group": {
"id": 42,
"name": "Beispiel",
"staged_absence_approval": true,
"shift_booking_sync": true,
"week_total_hours": 1.5,
"week_total_days": 1.5,
"year_vacation_days": 1.5,
"month_vacation_days": 1.5,
"year_vacation_weeks": 1.5,
"monday_hours": 1.5
},
"shift_type": {
"id": 42,
"short_name": "Beispiel",
"color": "#3f5efb",
"name": "Beispiel",
"employment_contract_group": {
"id": 42,
"name": "Beispiel",
"staged_absence_approval": true,
"shift_booking_sync": true,
"week_total_hours": 1.5,
"week_total_days": 1.5,
"year_vacation_days": 1.5,
"month_vacation_days": 1.5,
"year_vacation_weeks": 1.5,
"monday_hours": 1.5
},
"employment_organization": {
"id": 42,
"name": "Beispiel",
"staged_absence_approval": true,
"allow_app_time_tracking": true,
"shift_booking_sync": true,
"allow_scanner_time_tracking": true,
"allow_app_non_work_time_management": true,
"include_in_auto_export": true,
"search_string": "string",
"deleted": true
},
"start_time": "string",
"end_time": "string",
"break_duration_seconds": 1,
"required_qualification": {
"id": 42,
"name": "Beispiel",
"ranking": 1,
"search_string": "string",
"deleted": true
}
},
"start": "2026-10-15T09:30:00+02:00",
"end": "2026-10-15T09:30:00+02:00"
}Diese Methode liefert einen einzelnen ShiftPlanEntry mit der angegebenen ID
GET/api/time/shift_plan_entry/{id}
Pfad-Parameter
idPflichtstring |
Antworten
200Liefert ein einzelnes ShiftPlanEntry-Objekt.ShiftPlanEntry3
Felder anzeigen (19)
opened_absence_typestringDie Abwesenheitsart als einfache Bezeichnung, damit die Planung „Krank“ anzeigen kann, ohne die ganze Anfrage in jede Schicht zu übernehmen.
idintegerPrimärschlüssel des Schichtplan-Eintrags. Interne ID.
userUser14Der Schicht zugewiesener Benutzer.
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.
personCRMPerson10Person, die der Schicht zugewiesen ist.
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
contractEmploymentContract5Vertrag, auf dem die Schicht geplant ist.
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.
employment_contract_groupEmploymentContractGroupPlanungscontainer - Pflichtangabe, auch wenn eine Person einer anderen Gruppe aushilft.
Felder anzeigen (25)
staged_absence_approvalbooleannull übernimmt die Organisation; false deaktiviert die gestufte Freigabe ausdrücklich.
shift_booking_syncbooleanL35: Schichten als Verfügbarkeiten / Termine im Buchungsbereich; null übernimmt die Organisation, false schaltet es für diese Gruppe aus.
idintegerPrimärschlüssel der Vertragsgruppe. Interne ID.
week_total_hoursnumber (float)Gesamte Arbeitsstunden pro Woche.
week_total_daysnumber (float)Arbeitstage pro Woche.
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.
allow_app_time_trackingbooleanOb die Zeiterfassung in der App erlaubt ist.
allow_scanner_time_trackingbooleanOb die Zeiterfassung per Scanner erlaubt ist.
allow_app_non_work_time_managementbooleanOb arbeitsfreie Zeit in der App verwaltet werden kann.
request_lead_time_daysintegerTage, die ein Abwesenheitsantrag dieser Gruppe vor seinem ersten Tag eingereicht werden muss. null greift auf die installationsweite Einstellung zurück – eine bestehende Gruppe verhält sich daher weiterhin genauso wie bisher.
school_holiday_regionSchoolHolidayRegionU09: der Schulkalender dieser Gruppe, wenn er vom Kalender der Organisation abweicht (Auszubildende, die in einem anderen Bundesland zur Schule gehen). null = der der Organisation.
search_stringstringText, unter dem die Entität gesucht werden kann.
deletedbooleanDiese Eigenschaft markiert eine Entität als gelöscht / archiviert
namestringName der Einheit.
shift_typeShiftType5Ursprungstyp - Zeiten wurden kopiert, der Verweis dient nur der Information.
Felder anzeigen (17)
idintegerPrimärschlüssel des Schichttyps. Interne ID.
employment_contract_groupEmploymentContractGroupGruppe, zu der dieser Typ gehört (null = für die gesamte Organisation / Installation verfügbar).
employment_organizationEmploymentOrganization8Organisation, zu der der Schichttyp gehört.
short_namestringKurzcode für Raster und Druck („F“, „S“, „N“).
start_timestringStandardstartzeit als HH:MM.
end_timestringStandardendzeit als HH:MM - eine Endzeit vor der Startzeit bedeutet, dass die Schicht am folgenden Tag endet (Nachtschicht).
break_duration_secondsintegerPausendauer der Schicht in Sekunden.
colorstringFarbe des Schichttyps im Schichtplan als Hex-Code.
required_qualificationEmploymentQualification5Standard-Qualifikationsanforderung für Schichten dieses Typs.
qualification_match_modestringL18: EXACT verlangt die geforderte Qualifikation selbst; EQUIVALENT (Standard, bisheriges Verhalten) akzeptiert auch verknüpfte oder gleichgruppierte Qualifikationen mit ausreichendem Rang.
default_staff_countintegerStandardanzahl der benötigten Mitarbeitenden für die Schicht.
sort_orderintegerSortierreihenfolge des Diensttyps in Listen.
search_stringstringText, unter dem die Entität gesucht werden kann.
deletedbooleanDiese Eigenschaft markiert eine Entität als gelöscht / archiviert
namestringName der Einheit.
createdstring (date-time)Zeitpunkt, zu dem der Datensatz angelegt wurde.
updatedstring (date-time)Zeitpunkt, zu dem der Datensatz zuletzt aktualisiert wurde.
startstring (date-time)Beginn des Dienstes.
endstring (date-time)Ende der Schicht.
start_datestringStartdatum des Dienstes als Text.
start_monthintegerMonat der Schicht.
start_yearintegerJahr der Schicht.
break_duration_secondsintegerPausendauer der Schicht in Sekunden.
durationintegerZielsekunden: (Ende - Start) - Pause, wird von recalculate() gepflegt.
required_qualificationEmploymentQualification5Für die Schicht erforderliche Qualifikation.
Felder anzeigen (7)
idintegerPrimärschlüssel der Beschäftigungsqualifikation. Interne ID.
rankingintegerRangfolge innerhalb eines Äquivalenznetzwerks - eine verknüpfte Qualifikation mit gleichem oder höherem Rang erfüllt auch Anforderungen an diese Qualifikation.
equivalent_qualificationsarray<EmploymentQualification5>Verknüpfte ("gleichwertige") Qualifikationen. Vom Controller symmetrisch gehalten: jede Verknüpfung A->B wird als B->A gespiegelt; der Rang entscheidet, welche Richtung tatsächlich welche abdeckt.
qualification_groupEmploymentQualificationGroupL17/A06: die "Schublade", zu der diese Qualifikation gehört. Mitglieder einer Gruppe decken sich gegenseitig die Anforderungen innerhalb ihres Rangs ab, wie es eine direkte Verknüpfung täte.
search_stringstringText, unter dem die Entität gesucht werden kann.
deletedbooleanDiese Eigenschaft markiert eine Entität als gelöscht / archiviert
namestringName der Einheit.
qualification_match_modestringL18: EXACT verlangt die geforderte Qualifikation selbst; EQUIVALENT (Standard, bisheriges Verhalten) akzeptiert auch verknüpfte oder gleichgruppierte Qualifikationen mit ausreichendem Rang.
statusstringStatus des Dienstes, zum Beispiel geplant oder veröffentlicht.
published_atstring (date-time)Zeitpunkt, zu dem die Schicht veröffentlicht wurde.
- … 11 weitere Felder
curl --request GET \
--url https://eure-instanz.iw-erp.de/api/time/shift_plan_entry/42 \
--header 'x-iw-jwt-token: <TOKEN>'const options = {method: 'GET', headers: {'x-iw-jwt-token': '<TOKEN>'}};
fetch('https://eure-instanz.iw-erp.de/api/time/shift_plan_entry/42', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://eure-instanz.iw-erp.de/api/time/shift_plan_entry/42"
headers = {"x-iw-jwt-token": "<TOKEN>"}
response = requests.get(url, headers=headers)
print(response.text)<?php
require_once('vendor/autoload.php');
$client = new \GuzzleHttp\Client();
$response = $client->request('GET', 'https://eure-instanz.iw-erp.de/api/time/shift_plan_entry/42', [
'headers' => [
'x-iw-jwt-token' => '<TOKEN>',
],
]);
echo $response->getBody();using System.Net.Http.Headers;
var client = new HttpClient();
var request = new HttpRequestMessage
{
Method = HttpMethod.Get,
RequestUri = new Uri("https://eure-instanz.iw-erp.de/api/time/shift_plan_entry/42"),
Headers =
{
{ "x-iw-jwt-token", "<TOKEN>" },
},
};
using (var response = await client.SendAsync(request))
{
response.EnsureSuccessStatusCode();
var body = await response.Content.ReadAsStringAsync();
Console.WriteLine(body);
}OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder()
.url("https://eure-instanz.iw-erp.de/api/time/shift_plan_entry/42")
.get()
.addHeader("x-iw-jwt-token", "<TOKEN>")
.build();
Response response = client.newCall(request).execute();package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://eure-instanz.iw-erp.de/api/time/shift_plan_entry/42"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("x-iw-jwt-token", "<TOKEN>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}Dart mit dem Package iw_erp_api
import 'package:iw_erp_api/clients/shift_plan_entry_controller.dart';
import 'package:iw_erp_api/logic/iw_api_state.dart';
IwApiState().host = 'eure-instanz.iw-erp.de';
IwApiState().currentJwtApiToken = '<TOKEN>';
final result = await ShiftPlanEntryController.get('42');
if (result.success) {
print(result.data);
}{
"id": 42,
"description": "Text",
"opened_absence_type": "string",
"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"
},
"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"
},
"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
},
"employment_contract_group": {
"id": 42,
"name": "Beispiel",
"staged_absence_approval": true,
"shift_booking_sync": true,
"week_total_hours": 1.5,
"week_total_days": 1.5,
"year_vacation_days": 1.5,
"month_vacation_days": 1.5,
"year_vacation_weeks": 1.5,
"monday_hours": 1.5
},
"shift_type": {
"id": 42,
"short_name": "Beispiel",
"color": "#3f5efb",
"name": "Beispiel",
"employment_contract_group": {
"id": 42,
"name": "Beispiel",
"staged_absence_approval": true,
"shift_booking_sync": true,
"week_total_hours": 1.5,
"week_total_days": 1.5,
"year_vacation_days": 1.5,
"month_vacation_days": 1.5,
"year_vacation_weeks": 1.5,
"monday_hours": 1.5
},
"employment_organization": {
"id": 42,
"name": "Beispiel",
"staged_absence_approval": true,
"allow_app_time_tracking": true,
"shift_booking_sync": true,
"allow_scanner_time_tracking": true,
"allow_app_non_work_time_management": true,
"include_in_auto_export": true,
"search_string": "string",
"deleted": true
},
"start_time": "string",
"end_time": "string",
"break_duration_seconds": 1,
"required_qualification": {
"id": 42,
"name": "Beispiel",
"ranking": 1,
"search_string": "string",
"deleted": true
}
},
"start": "2026-10-15T09:30:00+02:00",
"end": "2026-10-15T09:30:00+02:00"
}ShiftPlanEntry aktualisieren
PUT/api/time/shift_plan_entry/{id}
Pfad-Parameter
idPflichtstring |
Query-Parameter
statusstring | Neuer Lebenszyklusstatus (DRAFT, PUBLISHED, CANCELLED) |
lock_versioninteger | Zuletzt vom Client gesehene Version – bei Abweichung wird mit 409 geantwortet statt zu überschreiben |
Request-Body application/json
dataShiftPlanEntry2Felder anzeigen (5)
startstring (date-time)Beginn des Dienstes.
endstring (date-time)Ende der Schicht.
break_duration_secondsintegerPausendauer der Schicht in Sekunden.
qualification_match_modestringL18: EXACT verlangt die geforderte Qualifikation selbst; EQUIVALENT (Standard, bisheriges Verhalten) akzeptiert auch verknüpfte oder gleichgruppierte Qualifikationen mit ausreichendem Rang.
descriptionstringBeschreibung der Schicht.
Antworten
200ShiftPlanEntry aktualisierenShiftPlanEntry3
Felder anzeigen (19)
opened_absence_typestringDie Abwesenheitsart als einfache Bezeichnung, damit die Planung „Krank“ anzeigen kann, ohne die ganze Anfrage in jede Schicht zu übernehmen.
idintegerPrimärschlüssel des Schichtplan-Eintrags. Interne ID.
userUser14Der Schicht zugewiesener Benutzer.
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.
personCRMPerson10Person, die der Schicht zugewiesen ist.
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
contractEmploymentContract5Vertrag, auf dem die Schicht geplant ist.
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.
employment_contract_groupEmploymentContractGroupPlanungscontainer - Pflichtangabe, auch wenn eine Person einer anderen Gruppe aushilft.
Felder anzeigen (25)
staged_absence_approvalbooleannull übernimmt die Organisation; false deaktiviert die gestufte Freigabe ausdrücklich.
shift_booking_syncbooleanL35: Schichten als Verfügbarkeiten / Termine im Buchungsbereich; null übernimmt die Organisation, false schaltet es für diese Gruppe aus.
idintegerPrimärschlüssel der Vertragsgruppe. Interne ID.
week_total_hoursnumber (float)Gesamte Arbeitsstunden pro Woche.
week_total_daysnumber (float)Arbeitstage pro Woche.
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.
allow_app_time_trackingbooleanOb die Zeiterfassung in der App erlaubt ist.
allow_scanner_time_trackingbooleanOb die Zeiterfassung per Scanner erlaubt ist.
allow_app_non_work_time_managementbooleanOb arbeitsfreie Zeit in der App verwaltet werden kann.
request_lead_time_daysintegerTage, die ein Abwesenheitsantrag dieser Gruppe vor seinem ersten Tag eingereicht werden muss. null greift auf die installationsweite Einstellung zurück – eine bestehende Gruppe verhält sich daher weiterhin genauso wie bisher.
school_holiday_regionSchoolHolidayRegionU09: der Schulkalender dieser Gruppe, wenn er vom Kalender der Organisation abweicht (Auszubildende, die in einem anderen Bundesland zur Schule gehen). null = der der Organisation.
search_stringstringText, unter dem die Entität gesucht werden kann.
deletedbooleanDiese Eigenschaft markiert eine Entität als gelöscht / archiviert
namestringName der Einheit.
shift_typeShiftType5Ursprungstyp - Zeiten wurden kopiert, der Verweis dient nur der Information.
Felder anzeigen (17)
idintegerPrimärschlüssel des Schichttyps. Interne ID.
employment_contract_groupEmploymentContractGroupGruppe, zu der dieser Typ gehört (null = für die gesamte Organisation / Installation verfügbar).
employment_organizationEmploymentOrganization8Organisation, zu der der Schichttyp gehört.
short_namestringKurzcode für Raster und Druck („F“, „S“, „N“).
start_timestringStandardstartzeit als HH:MM.
end_timestringStandardendzeit als HH:MM - eine Endzeit vor der Startzeit bedeutet, dass die Schicht am folgenden Tag endet (Nachtschicht).
break_duration_secondsintegerPausendauer der Schicht in Sekunden.
colorstringFarbe des Schichttyps im Schichtplan als Hex-Code.
required_qualificationEmploymentQualification5Standard-Qualifikationsanforderung für Schichten dieses Typs.
qualification_match_modestringL18: EXACT verlangt die geforderte Qualifikation selbst; EQUIVALENT (Standard, bisheriges Verhalten) akzeptiert auch verknüpfte oder gleichgruppierte Qualifikationen mit ausreichendem Rang.
default_staff_countintegerStandardanzahl der benötigten Mitarbeitenden für die Schicht.
sort_orderintegerSortierreihenfolge des Diensttyps in Listen.
search_stringstringText, unter dem die Entität gesucht werden kann.
deletedbooleanDiese Eigenschaft markiert eine Entität als gelöscht / archiviert
namestringName der Einheit.
createdstring (date-time)Zeitpunkt, zu dem der Datensatz angelegt wurde.
updatedstring (date-time)Zeitpunkt, zu dem der Datensatz zuletzt aktualisiert wurde.
startstring (date-time)Beginn des Dienstes.
endstring (date-time)Ende der Schicht.
start_datestringStartdatum des Dienstes als Text.
start_monthintegerMonat der Schicht.
start_yearintegerJahr der Schicht.
break_duration_secondsintegerPausendauer der Schicht in Sekunden.
durationintegerZielsekunden: (Ende - Start) - Pause, wird von recalculate() gepflegt.
required_qualificationEmploymentQualification5Für die Schicht erforderliche Qualifikation.
Felder anzeigen (7)
idintegerPrimärschlüssel der Beschäftigungsqualifikation. Interne ID.
rankingintegerRangfolge innerhalb eines Äquivalenznetzwerks - eine verknüpfte Qualifikation mit gleichem oder höherem Rang erfüllt auch Anforderungen an diese Qualifikation.
equivalent_qualificationsarray<EmploymentQualification5>Verknüpfte ("gleichwertige") Qualifikationen. Vom Controller symmetrisch gehalten: jede Verknüpfung A->B wird als B->A gespiegelt; der Rang entscheidet, welche Richtung tatsächlich welche abdeckt.
qualification_groupEmploymentQualificationGroupL17/A06: die "Schublade", zu der diese Qualifikation gehört. Mitglieder einer Gruppe decken sich gegenseitig die Anforderungen innerhalb ihres Rangs ab, wie es eine direkte Verknüpfung täte.
search_stringstringText, unter dem die Entität gesucht werden kann.
deletedbooleanDiese Eigenschaft markiert eine Entität als gelöscht / archiviert
namestringName der Einheit.
qualification_match_modestringL18: EXACT verlangt die geforderte Qualifikation selbst; EQUIVALENT (Standard, bisheriges Verhalten) akzeptiert auch verknüpfte oder gleichgruppierte Qualifikationen mit ausreichendem Rang.
statusstringStatus des Dienstes, zum Beispiel geplant oder veröffentlicht.
published_atstring (date-time)Zeitpunkt, zu dem die Schicht veröffentlicht wurde.
- … 11 weitere Felder
curl --request PUT \
--url https://eure-instanz.iw-erp.de/api/time/shift_plan_entry/42 \
--header 'content-type: application/json' \
--header 'x-iw-jwt-token: <TOKEN>' \
--data '
{
"data": {
"description": "Text",
"start": "2026-10-15T09:30:00+02:00",
"end": "2026-10-15T09:30:00+02:00",
"break_duration_seconds": 1,
"qualification_match_mode": "string"
}
}
'const options = {
method: 'PUT',
headers: {'x-iw-jwt-token': '<TOKEN>', 'content-type': 'application/json'},
body: JSON.stringify({
data: {
description: 'Text',
start: '2026-10-15T09:30:00+02:00',
end: '2026-10-15T09:30:00+02:00',
break_duration_seconds: 1,
qualification_match_mode: 'string'
}
})
};
fetch('https://eure-instanz.iw-erp.de/api/time/shift_plan_entry/42', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://eure-instanz.iw-erp.de/api/time/shift_plan_entry/42"
payload = { "data": {
"description": "Text",
"start": "2026-10-15T09:30:00+02:00",
"end": "2026-10-15T09:30:00+02:00",
"break_duration_seconds": 1,
"qualification_match_mode": "string"
} }
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/shift_plan_entry/42', [
'body' => '{"data":{"description":"Text","start":"2026-10-15T09:30:00+02:00","end":"2026-10-15T09:30:00+02:00","break_duration_seconds":1,"qualification_match_mode":"string"}}',
'headers' => [
'content-type' => 'application/json',
'x-iw-jwt-token' => '<TOKEN>',
],
]);
echo $response->getBody();using System.Net.Http.Headers;
var client = new HttpClient();
var request = new HttpRequestMessage
{
Method = HttpMethod.Put,
RequestUri = new Uri("https://eure-instanz.iw-erp.de/api/time/shift_plan_entry/42"),
Headers =
{
{ "x-iw-jwt-token", "<TOKEN>" },
},
Content = new StringContent("{\"data\":{\"description\":\"Text\",\"start\":\"2026-10-15T09:30:00+02:00\",\"end\":\"2026-10-15T09:30:00+02:00\",\"break_duration_seconds\":1,\"qualification_match_mode\":\"string\"}}")
{
Headers =
{
ContentType = new MediaTypeHeaderValue("application/json")
}
}
};
using (var response = await client.SendAsync(request))
{
response.EnsureSuccessStatusCode();
var body = await response.Content.ReadAsStringAsync();
Console.WriteLine(body);
}OkHttpClient client = new OkHttpClient();
MediaType mediaType = MediaType.parse("application/json");
RequestBody body = RequestBody.create(mediaType, "{\"data\":{\"description\":\"Text\",\"start\":\"2026-10-15T09:30:00+02:00\",\"end\":\"2026-10-15T09:30:00+02:00\",\"break_duration_seconds\":1,\"qualification_match_mode\":\"string\"}}");
Request request = new Request.Builder()
.url("https://eure-instanz.iw-erp.de/api/time/shift_plan_entry/42")
.put(body)
.addHeader("x-iw-jwt-token", "<TOKEN>")
.addHeader("content-type", "application/json")
.build();
Response response = client.newCall(request).execute();package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://eure-instanz.iw-erp.de/api/time/shift_plan_entry/42"
payload := strings.NewReader("{\"data\":{\"description\":\"Text\",\"start\":\"2026-10-15T09:30:00+02:00\",\"end\":\"2026-10-15T09:30:00+02:00\",\"break_duration_seconds\":1,\"qualification_match_mode\":\"string\"}}")
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/shift_plan_entry_controller.dart';
import 'package:iw_erp_api/logic/iw_api_state.dart';
import 'package:iw_erp_api/model/shift_plan_entry.dart';
IwApiState().host = 'eure-instanz.iw-erp.de';
IwApiState().currentJwtApiToken = '<TOKEN>';
final result = await ShiftPlanEntryController.put(ShiftPlanEntry.fromJson({
"description": "Text",
"start": "2026-10-15T09:30:00+02:00",
"end": "2026-10-15T09:30:00+02:00",
"break_duration_seconds": 1,
"qualification_match_mode": "string"
}));
if (result.success) {
print(result.data);
}{
"id": 42,
"description": "Text",
"opened_absence_type": "string",
"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"
},
"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"
},
"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
},
"employment_contract_group": {
"id": 42,
"name": "Beispiel",
"staged_absence_approval": true,
"shift_booking_sync": true,
"week_total_hours": 1.5,
"week_total_days": 1.5,
"year_vacation_days": 1.5,
"month_vacation_days": 1.5,
"year_vacation_weeks": 1.5,
"monday_hours": 1.5
},
"shift_type": {
"id": 42,
"short_name": "Beispiel",
"color": "#3f5efb",
"name": "Beispiel",
"employment_contract_group": {
"id": 42,
"name": "Beispiel",
"staged_absence_approval": true,
"shift_booking_sync": true,
"week_total_hours": 1.5,
"week_total_days": 1.5,
"year_vacation_days": 1.5,
"month_vacation_days": 1.5,
"year_vacation_weeks": 1.5,
"monday_hours": 1.5
},
"employment_organization": {
"id": 42,
"name": "Beispiel",
"staged_absence_approval": true,
"allow_app_time_tracking": true,
"shift_booking_sync": true,
"allow_scanner_time_tracking": true,
"allow_app_non_work_time_management": true,
"include_in_auto_export": true,
"search_string": "string",
"deleted": true
},
"start_time": "string",
"end_time": "string",
"break_duration_seconds": 1,
"required_qualification": {
"id": 42,
"name": "Beispiel",
"ranking": 1,
"search_string": "string",
"deleted": true
}
},
"start": "2026-10-15T09:30:00+02:00",
"end": "2026-10-15T09:30:00+02:00"
}ShiftPlanEntry aktualisieren
PATCH/api/time/shift_plan_entry/{id}
Pfad-Parameter
idPflichtstring |
Query-Parameter
statusstring | Neuer Lebenszyklusstatus (DRAFT, PUBLISHED, CANCELLED) |
lock_versioninteger | Zuletzt vom Client gesehene Version – bei Abweichung wird mit 409 geantwortet statt zu überschreiben |
Request-Body application/json
dataShiftPlanEntry2Felder anzeigen (5)
startstring (date-time)Beginn des Dienstes.
endstring (date-time)Ende der Schicht.
break_duration_secondsintegerPausendauer der Schicht in Sekunden.
qualification_match_modestringL18: EXACT verlangt die geforderte Qualifikation selbst; EQUIVALENT (Standard, bisheriges Verhalten) akzeptiert auch verknüpfte oder gleichgruppierte Qualifikationen mit ausreichendem Rang.
descriptionstringBeschreibung der Schicht.
Antworten
200ShiftPlanEntry aktualisierenShiftPlanEntry3
Felder anzeigen (19)
opened_absence_typestringDie Abwesenheitsart als einfache Bezeichnung, damit die Planung „Krank“ anzeigen kann, ohne die ganze Anfrage in jede Schicht zu übernehmen.
idintegerPrimärschlüssel des Schichtplan-Eintrags. Interne ID.
userUser14Der Schicht zugewiesener Benutzer.
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.
personCRMPerson10Person, die der Schicht zugewiesen ist.
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
contractEmploymentContract5Vertrag, auf dem die Schicht geplant ist.
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.
employment_contract_groupEmploymentContractGroupPlanungscontainer - Pflichtangabe, auch wenn eine Person einer anderen Gruppe aushilft.
Felder anzeigen (25)
staged_absence_approvalbooleannull übernimmt die Organisation; false deaktiviert die gestufte Freigabe ausdrücklich.
shift_booking_syncbooleanL35: Schichten als Verfügbarkeiten / Termine im Buchungsbereich; null übernimmt die Organisation, false schaltet es für diese Gruppe aus.
idintegerPrimärschlüssel der Vertragsgruppe. Interne ID.
week_total_hoursnumber (float)Gesamte Arbeitsstunden pro Woche.
week_total_daysnumber (float)Arbeitstage pro Woche.
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.
allow_app_time_trackingbooleanOb die Zeiterfassung in der App erlaubt ist.
allow_scanner_time_trackingbooleanOb die Zeiterfassung per Scanner erlaubt ist.
allow_app_non_work_time_managementbooleanOb arbeitsfreie Zeit in der App verwaltet werden kann.
request_lead_time_daysintegerTage, die ein Abwesenheitsantrag dieser Gruppe vor seinem ersten Tag eingereicht werden muss. null greift auf die installationsweite Einstellung zurück – eine bestehende Gruppe verhält sich daher weiterhin genauso wie bisher.
school_holiday_regionSchoolHolidayRegionU09: der Schulkalender dieser Gruppe, wenn er vom Kalender der Organisation abweicht (Auszubildende, die in einem anderen Bundesland zur Schule gehen). null = der der Organisation.
search_stringstringText, unter dem die Entität gesucht werden kann.
deletedbooleanDiese Eigenschaft markiert eine Entität als gelöscht / archiviert
namestringName der Einheit.
shift_typeShiftType5Ursprungstyp - Zeiten wurden kopiert, der Verweis dient nur der Information.
Felder anzeigen (17)
idintegerPrimärschlüssel des Schichttyps. Interne ID.
employment_contract_groupEmploymentContractGroupGruppe, zu der dieser Typ gehört (null = für die gesamte Organisation / Installation verfügbar).
employment_organizationEmploymentOrganization8Organisation, zu der der Schichttyp gehört.
short_namestringKurzcode für Raster und Druck („F“, „S“, „N“).
start_timestringStandardstartzeit als HH:MM.
end_timestringStandardendzeit als HH:MM - eine Endzeit vor der Startzeit bedeutet, dass die Schicht am folgenden Tag endet (Nachtschicht).
break_duration_secondsintegerPausendauer der Schicht in Sekunden.
colorstringFarbe des Schichttyps im Schichtplan als Hex-Code.
required_qualificationEmploymentQualification5Standard-Qualifikationsanforderung für Schichten dieses Typs.
qualification_match_modestringL18: EXACT verlangt die geforderte Qualifikation selbst; EQUIVALENT (Standard, bisheriges Verhalten) akzeptiert auch verknüpfte oder gleichgruppierte Qualifikationen mit ausreichendem Rang.
default_staff_countintegerStandardanzahl der benötigten Mitarbeitenden für die Schicht.
sort_orderintegerSortierreihenfolge des Diensttyps in Listen.
search_stringstringText, unter dem die Entität gesucht werden kann.
deletedbooleanDiese Eigenschaft markiert eine Entität als gelöscht / archiviert
namestringName der Einheit.
createdstring (date-time)Zeitpunkt, zu dem der Datensatz angelegt wurde.
updatedstring (date-time)Zeitpunkt, zu dem der Datensatz zuletzt aktualisiert wurde.
startstring (date-time)Beginn des Dienstes.
endstring (date-time)Ende der Schicht.
start_datestringStartdatum des Dienstes als Text.
start_monthintegerMonat der Schicht.
start_yearintegerJahr der Schicht.
break_duration_secondsintegerPausendauer der Schicht in Sekunden.
durationintegerZielsekunden: (Ende - Start) - Pause, wird von recalculate() gepflegt.
required_qualificationEmploymentQualification5Für die Schicht erforderliche Qualifikation.
Felder anzeigen (7)
idintegerPrimärschlüssel der Beschäftigungsqualifikation. Interne ID.
rankingintegerRangfolge innerhalb eines Äquivalenznetzwerks - eine verknüpfte Qualifikation mit gleichem oder höherem Rang erfüllt auch Anforderungen an diese Qualifikation.
equivalent_qualificationsarray<EmploymentQualification5>Verknüpfte ("gleichwertige") Qualifikationen. Vom Controller symmetrisch gehalten: jede Verknüpfung A->B wird als B->A gespiegelt; der Rang entscheidet, welche Richtung tatsächlich welche abdeckt.
qualification_groupEmploymentQualificationGroupL17/A06: die "Schublade", zu der diese Qualifikation gehört. Mitglieder einer Gruppe decken sich gegenseitig die Anforderungen innerhalb ihres Rangs ab, wie es eine direkte Verknüpfung täte.
search_stringstringText, unter dem die Entität gesucht werden kann.
deletedbooleanDiese Eigenschaft markiert eine Entität als gelöscht / archiviert
namestringName der Einheit.
qualification_match_modestringL18: EXACT verlangt die geforderte Qualifikation selbst; EQUIVALENT (Standard, bisheriges Verhalten) akzeptiert auch verknüpfte oder gleichgruppierte Qualifikationen mit ausreichendem Rang.
statusstringStatus des Dienstes, zum Beispiel geplant oder veröffentlicht.
published_atstring (date-time)Zeitpunkt, zu dem die Schicht veröffentlicht wurde.
- … 11 weitere Felder
curl --request PATCH \
--url https://eure-instanz.iw-erp.de/api/time/shift_plan_entry/42 \
--header 'content-type: application/json' \
--header 'x-iw-jwt-token: <TOKEN>' \
--data '
{
"data": {
"description": "Text",
"start": "2026-10-15T09:30:00+02:00",
"end": "2026-10-15T09:30:00+02:00",
"break_duration_seconds": 1,
"qualification_match_mode": "string"
}
}
'const options = {
method: 'PATCH',
headers: {'x-iw-jwt-token': '<TOKEN>', 'content-type': 'application/json'},
body: JSON.stringify({
data: {
description: 'Text',
start: '2026-10-15T09:30:00+02:00',
end: '2026-10-15T09:30:00+02:00',
break_duration_seconds: 1,
qualification_match_mode: 'string'
}
})
};
fetch('https://eure-instanz.iw-erp.de/api/time/shift_plan_entry/42', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://eure-instanz.iw-erp.de/api/time/shift_plan_entry/42"
payload = { "data": {
"description": "Text",
"start": "2026-10-15T09:30:00+02:00",
"end": "2026-10-15T09:30:00+02:00",
"break_duration_seconds": 1,
"qualification_match_mode": "string"
} }
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/shift_plan_entry/42', [
'body' => '{"data":{"description":"Text","start":"2026-10-15T09:30:00+02:00","end":"2026-10-15T09:30:00+02:00","break_duration_seconds":1,"qualification_match_mode":"string"}}',
'headers' => [
'content-type' => 'application/json',
'x-iw-jwt-token' => '<TOKEN>',
],
]);
echo $response->getBody();using System.Net.Http.Headers;
var client = new HttpClient();
var request = new HttpRequestMessage
{
Method = HttpMethod.Patch,
RequestUri = new Uri("https://eure-instanz.iw-erp.de/api/time/shift_plan_entry/42"),
Headers =
{
{ "x-iw-jwt-token", "<TOKEN>" },
},
Content = new StringContent("{\"data\":{\"description\":\"Text\",\"start\":\"2026-10-15T09:30:00+02:00\",\"end\":\"2026-10-15T09:30:00+02:00\",\"break_duration_seconds\":1,\"qualification_match_mode\":\"string\"}}")
{
Headers =
{
ContentType = new MediaTypeHeaderValue("application/json")
}
}
};
using (var response = await client.SendAsync(request))
{
response.EnsureSuccessStatusCode();
var body = await response.Content.ReadAsStringAsync();
Console.WriteLine(body);
}OkHttpClient client = new OkHttpClient();
MediaType mediaType = MediaType.parse("application/json");
RequestBody body = RequestBody.create(mediaType, "{\"data\":{\"description\":\"Text\",\"start\":\"2026-10-15T09:30:00+02:00\",\"end\":\"2026-10-15T09:30:00+02:00\",\"break_duration_seconds\":1,\"qualification_match_mode\":\"string\"}}");
Request request = new Request.Builder()
.url("https://eure-instanz.iw-erp.de/api/time/shift_plan_entry/42")
.patch(body)
.addHeader("x-iw-jwt-token", "<TOKEN>")
.addHeader("content-type", "application/json")
.build();
Response response = client.newCall(request).execute();package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://eure-instanz.iw-erp.de/api/time/shift_plan_entry/42"
payload := strings.NewReader("{\"data\":{\"description\":\"Text\",\"start\":\"2026-10-15T09:30:00+02:00\",\"end\":\"2026-10-15T09:30:00+02:00\",\"break_duration_seconds\":1,\"qualification_match_mode\":\"string\"}}")
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/shift_plan_entry/42'),
headers: {'x-iw-jwt-token': '<TOKEN>', 'content-type': 'application/json'},
body: jsonEncode({
"data": {
"description": "Text",
"start": "2026-10-15T09:30:00+02:00",
"end": "2026-10-15T09:30:00+02:00",
"break_duration_seconds": 1,
"qualification_match_mode": "string"
}
}),
);
print(response.body);{
"id": 42,
"description": "Text",
"opened_absence_type": "string",
"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"
},
"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"
},
"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
},
"employment_contract_group": {
"id": 42,
"name": "Beispiel",
"staged_absence_approval": true,
"shift_booking_sync": true,
"week_total_hours": 1.5,
"week_total_days": 1.5,
"year_vacation_days": 1.5,
"month_vacation_days": 1.5,
"year_vacation_weeks": 1.5,
"monday_hours": 1.5
},
"shift_type": {
"id": 42,
"short_name": "Beispiel",
"color": "#3f5efb",
"name": "Beispiel",
"employment_contract_group": {
"id": 42,
"name": "Beispiel",
"staged_absence_approval": true,
"shift_booking_sync": true,
"week_total_hours": 1.5,
"week_total_days": 1.5,
"year_vacation_days": 1.5,
"month_vacation_days": 1.5,
"year_vacation_weeks": 1.5,
"monday_hours": 1.5
},
"employment_organization": {
"id": 42,
"name": "Beispiel",
"staged_absence_approval": true,
"allow_app_time_tracking": true,
"shift_booking_sync": true,
"allow_scanner_time_tracking": true,
"allow_app_non_work_time_management": true,
"include_in_auto_export": true,
"search_string": "string",
"deleted": true
},
"start_time": "string",
"end_time": "string",
"break_duration_seconds": 1,
"required_qualification": {
"id": 42,
"name": "Beispiel",
"ranking": 1,
"search_string": "string",
"deleted": true
}
},
"start": "2026-10-15T09:30:00+02:00",
"end": "2026-10-15T09:30:00+02:00"
}Eine ShiftPlanEntry löschen - ein Entwurf verschwindet, eine veröffentlichte Schicht wird abgesagt (CANCELLED, das Team wird informiert), damit der Plan seine Historie behält
DELETE/api/time/shift_plan_entry/{id}
Pfad-Parameter
idPflichtstring |
Antworten
200Einen Entwurf löschen oder eine veröffentlichte ShiftPlanEntry stornierenShiftPlanEntry3
Felder anzeigen (19)
opened_absence_typestringDie Abwesenheitsart als einfache Bezeichnung, damit die Planung „Krank“ anzeigen kann, ohne die ganze Anfrage in jede Schicht zu übernehmen.
idintegerPrimärschlüssel des Schichtplan-Eintrags. Interne ID.
userUser14Der Schicht zugewiesener Benutzer.
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.
personCRMPerson10Person, die der Schicht zugewiesen ist.
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
contractEmploymentContract5Vertrag, auf dem die Schicht geplant ist.
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.
employment_contract_groupEmploymentContractGroupPlanungscontainer - Pflichtangabe, auch wenn eine Person einer anderen Gruppe aushilft.
Felder anzeigen (25)
staged_absence_approvalbooleannull übernimmt die Organisation; false deaktiviert die gestufte Freigabe ausdrücklich.
shift_booking_syncbooleanL35: Schichten als Verfügbarkeiten / Termine im Buchungsbereich; null übernimmt die Organisation, false schaltet es für diese Gruppe aus.
idintegerPrimärschlüssel der Vertragsgruppe. Interne ID.
week_total_hoursnumber (float)Gesamte Arbeitsstunden pro Woche.
week_total_daysnumber (float)Arbeitstage pro Woche.
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.
allow_app_time_trackingbooleanOb die Zeiterfassung in der App erlaubt ist.
allow_scanner_time_trackingbooleanOb die Zeiterfassung per Scanner erlaubt ist.
allow_app_non_work_time_managementbooleanOb arbeitsfreie Zeit in der App verwaltet werden kann.
request_lead_time_daysintegerTage, die ein Abwesenheitsantrag dieser Gruppe vor seinem ersten Tag eingereicht werden muss. null greift auf die installationsweite Einstellung zurück – eine bestehende Gruppe verhält sich daher weiterhin genauso wie bisher.
school_holiday_regionSchoolHolidayRegionU09: der Schulkalender dieser Gruppe, wenn er vom Kalender der Organisation abweicht (Auszubildende, die in einem anderen Bundesland zur Schule gehen). null = der der Organisation.
search_stringstringText, unter dem die Entität gesucht werden kann.
deletedbooleanDiese Eigenschaft markiert eine Entität als gelöscht / archiviert
namestringName der Einheit.
shift_typeShiftType5Ursprungstyp - Zeiten wurden kopiert, der Verweis dient nur der Information.
Felder anzeigen (17)
idintegerPrimärschlüssel des Schichttyps. Interne ID.
employment_contract_groupEmploymentContractGroupGruppe, zu der dieser Typ gehört (null = für die gesamte Organisation / Installation verfügbar).
employment_organizationEmploymentOrganization8Organisation, zu der der Schichttyp gehört.
short_namestringKurzcode für Raster und Druck („F“, „S“, „N“).
start_timestringStandardstartzeit als HH:MM.
end_timestringStandardendzeit als HH:MM - eine Endzeit vor der Startzeit bedeutet, dass die Schicht am folgenden Tag endet (Nachtschicht).
break_duration_secondsintegerPausendauer der Schicht in Sekunden.
colorstringFarbe des Schichttyps im Schichtplan als Hex-Code.
required_qualificationEmploymentQualification5Standard-Qualifikationsanforderung für Schichten dieses Typs.
qualification_match_modestringL18: EXACT verlangt die geforderte Qualifikation selbst; EQUIVALENT (Standard, bisheriges Verhalten) akzeptiert auch verknüpfte oder gleichgruppierte Qualifikationen mit ausreichendem Rang.
default_staff_countintegerStandardanzahl der benötigten Mitarbeitenden für die Schicht.
sort_orderintegerSortierreihenfolge des Diensttyps in Listen.
search_stringstringText, unter dem die Entität gesucht werden kann.
deletedbooleanDiese Eigenschaft markiert eine Entität als gelöscht / archiviert
namestringName der Einheit.
createdstring (date-time)Zeitpunkt, zu dem der Datensatz angelegt wurde.
updatedstring (date-time)Zeitpunkt, zu dem der Datensatz zuletzt aktualisiert wurde.
startstring (date-time)Beginn des Dienstes.
endstring (date-time)Ende der Schicht.
start_datestringStartdatum des Dienstes als Text.
start_monthintegerMonat der Schicht.
start_yearintegerJahr der Schicht.
break_duration_secondsintegerPausendauer der Schicht in Sekunden.
durationintegerZielsekunden: (Ende - Start) - Pause, wird von recalculate() gepflegt.
required_qualificationEmploymentQualification5Für die Schicht erforderliche Qualifikation.
Felder anzeigen (7)
idintegerPrimärschlüssel der Beschäftigungsqualifikation. Interne ID.
rankingintegerRangfolge innerhalb eines Äquivalenznetzwerks - eine verknüpfte Qualifikation mit gleichem oder höherem Rang erfüllt auch Anforderungen an diese Qualifikation.
equivalent_qualificationsarray<EmploymentQualification5>Verknüpfte ("gleichwertige") Qualifikationen. Vom Controller symmetrisch gehalten: jede Verknüpfung A->B wird als B->A gespiegelt; der Rang entscheidet, welche Richtung tatsächlich welche abdeckt.
qualification_groupEmploymentQualificationGroupL17/A06: die "Schublade", zu der diese Qualifikation gehört. Mitglieder einer Gruppe decken sich gegenseitig die Anforderungen innerhalb ihres Rangs ab, wie es eine direkte Verknüpfung täte.
search_stringstringText, unter dem die Entität gesucht werden kann.
deletedbooleanDiese Eigenschaft markiert eine Entität als gelöscht / archiviert
namestringName der Einheit.
qualification_match_modestringL18: EXACT verlangt die geforderte Qualifikation selbst; EQUIVALENT (Standard, bisheriges Verhalten) akzeptiert auch verknüpfte oder gleichgruppierte Qualifikationen mit ausreichendem Rang.
statusstringStatus des Dienstes, zum Beispiel geplant oder veröffentlicht.
published_atstring (date-time)Zeitpunkt, zu dem die Schicht veröffentlicht wurde.
- … 11 weitere Felder
curl --request DELETE \
--url https://eure-instanz.iw-erp.de/api/time/shift_plan_entry/42 \
--header 'x-iw-jwt-token: <TOKEN>'const options = {method: 'DELETE', headers: {'x-iw-jwt-token': '<TOKEN>'}};
fetch('https://eure-instanz.iw-erp.de/api/time/shift_plan_entry/42', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://eure-instanz.iw-erp.de/api/time/shift_plan_entry/42"
headers = {"x-iw-jwt-token": "<TOKEN>"}
response = requests.delete(url, headers=headers)
print(response.text)<?php
require_once('vendor/autoload.php');
$client = new \GuzzleHttp\Client();
$response = $client->request('DELETE', 'https://eure-instanz.iw-erp.de/api/time/shift_plan_entry/42', [
'headers' => [
'x-iw-jwt-token' => '<TOKEN>',
],
]);
echo $response->getBody();using System.Net.Http.Headers;
var client = new HttpClient();
var request = new HttpRequestMessage
{
Method = HttpMethod.Delete,
RequestUri = new Uri("https://eure-instanz.iw-erp.de/api/time/shift_plan_entry/42"),
Headers =
{
{ "x-iw-jwt-token", "<TOKEN>" },
},
};
using (var response = await client.SendAsync(request))
{
response.EnsureSuccessStatusCode();
var body = await response.Content.ReadAsStringAsync();
Console.WriteLine(body);
}OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder()
.url("https://eure-instanz.iw-erp.de/api/time/shift_plan_entry/42")
.delete(null)
.addHeader("x-iw-jwt-token", "<TOKEN>")
.build();
Response response = client.newCall(request).execute();package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://eure-instanz.iw-erp.de/api/time/shift_plan_entry/42"
req, _ := http.NewRequest("DELETE", url, nil)
req.Header.Add("x-iw-jwt-token", "<TOKEN>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}Dart mit dem Package iw_erp_api
import 'package:iw_erp_api/clients/shift_plan_entry_controller.dart';
import 'package:iw_erp_api/logic/iw_api_state.dart';
IwApiState().host = 'eure-instanz.iw-erp.de';
IwApiState().currentJwtApiToken = '<TOKEN>';
final result = await ShiftPlanEntryController.delete('42');
if (result.success) {
print(result.data);
}{
"id": 42,
"description": "Text",
"opened_absence_type": "string",
"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"
},
"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"
},
"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
},
"employment_contract_group": {
"id": 42,
"name": "Beispiel",
"staged_absence_approval": true,
"shift_booking_sync": true,
"week_total_hours": 1.5,
"week_total_days": 1.5,
"year_vacation_days": 1.5,
"month_vacation_days": 1.5,
"year_vacation_weeks": 1.5,
"monday_hours": 1.5
},
"shift_type": {
"id": 42,
"short_name": "Beispiel",
"color": "#3f5efb",
"name": "Beispiel",
"employment_contract_group": {
"id": 42,
"name": "Beispiel",
"staged_absence_approval": true,
"shift_booking_sync": true,
"week_total_hours": 1.5,
"week_total_days": 1.5,
"year_vacation_days": 1.5,
"month_vacation_days": 1.5,
"year_vacation_weeks": 1.5,
"monday_hours": 1.5
},
"employment_organization": {
"id": 42,
"name": "Beispiel",
"staged_absence_approval": true,
"allow_app_time_tracking": true,
"shift_booking_sync": true,
"allow_scanner_time_tracking": true,
"allow_app_non_work_time_management": true,
"include_in_auto_export": true,
"search_string": "string",
"deleted": true
},
"start_time": "string",
"end_time": "string",
"break_duration_seconds": 1,
"required_qualification": {
"id": 42,
"name": "Beispiel",
"ranking": 1,
"search_string": "string",
"deleted": true
}
},
"start": "2026-10-15T09:30:00+02:00",
"end": "2026-10-15T09:30:00+02:00"
}